[Pkg-haskell-commits] [SCM] Packaging for Agda branch, upstream, updated. upstream/2.2.2-2-gfe6fa12

Iain Lane laney at ubuntu.com
Mon Jul 20 16:57:55 UTC 2009


The following commit has been merged in the upstream branch:
commit fe6fa12e5cb63847e1d67f8eceaa40a8af806de8
Author: Iain Lane <laney at ubuntu.com>
Date:   Mon Jul 20 17:30:29 2009 +0100

    Imported Upstream version 2.2.4+dfsg

diff --git a/Agda.cabal b/Agda.cabal
index 83b8bad..1511666 100644
--- a/Agda.cabal
+++ b/Agda.cabal
@@ -1,10 +1,10 @@
 name:            Agda
-version:         2.2.2
-cabal-version:   >= 1.6 && < 2
+version:         2.2.4
+cabal-version:   >= 1.6.0.3 && < 2
 build-type:      Simple
 license:         OtherLicense
 license-file:    LICENSE
-author:          Ulf Norell, Catarina Coquand, Makoto Takeyama, Nils Anders Danielsson, Andreas Abel, ...
+author:          Ulf Norell, Nils Anders Danielsson, Catarina Coquand, Makoto Takeyama, Andreas Abel, ...
 maintainer:      Ulf Norell <ulfn at chalmers.se>
 homepage:        http://wiki.portal.chalmers.se/agda/
 bug-reports:     http://code.google.com/p/agda/issues/list
@@ -12,11 +12,11 @@ category:        Dependent types
 synopsis:        A dependently typed functional programming language and proof assistant
 description:
   Agda is a dependently typed functional programming language: It has
-  inductive families, which are like Haskell's GADTs, but they can be
-  indexed by values and not just types. It also has parameterised
-  modules, mixfix operators, Unicode characters, and an interactive
-  Emacs interface (the type checker can assist in the development of
-  your code).
+  inductive families, which are similar to Haskell's GADTs, but they
+  can be indexed by values and not just types. It also has
+  parameterised modules, mixfix operators, Unicode characters, and an
+  interactive Emacs interface (the type checker can assist in the
+  development of your code).
   .
   Agda is also a proof assistant: It is an interactive system for
   writing and checking proofs. Agda is based on intuitionistic type
@@ -26,12 +26,18 @@ description:
   Epigram and NuPRL.
   .
   Note that if you want to use the command-line program (agda), then
-  you should also install the Agda-executable package. This package
-  includes an Emacs mode for Agda, but you need to set up the Emacs
-  mode yourself (see the README).
-tested-with:     GHC == 6.8.3 && == 6.10.2
+  you should also install the Agda-executable package. The Agda
+  package includes an Emacs mode for Agda, but you need to set up the
+  Emacs mode yourself (for instance by running @agda-mode setup@; see
+  the README).
+  .
+  Note also that this library does not follow the package versioning
+  policy, because the library is only intended to be used by the Emacs
+  mode and the Agda-executable package.
+tested-with:     GHC == 6.10.3
 extra-source-files: src/full/Agda/undefined.h
                     README
+                    doc/release-notes/*.txt
 data-dir:           src/data
 data-files:         Agda.css
                     emacs-mode/*.el
@@ -43,11 +49,11 @@ source-repository head
 source-repository this
   type:     darcs
   location: http://code.haskell.org/Agda/
-  tag:      2.2.2
+  tag:      2.2.4
 
 library
   hs-source-dirs:  src/full
-  build-depends:   base >= 3 && < 4,
+  build-depends:   base >= 4.1 && < 4.2,
                    mtl >= 1.1 && < 2,
                    QuickCheck == 2.1.0.1,
                    haskell98 >= 1.0.1 && < 2,
@@ -64,7 +70,8 @@ library
                    process >= 1.0.1.0 && < 2,
                    haskeline >= 0.3 && < 0.7,
                    utf8-string >= 0.3 && < 0.4,
-                   xhtml >= 3000.2 && < 3000.3
+                   xhtml >= 3000.2 && < 3000.3,
+                   syb >= 0.1 && < 0.2
   if impl(ghc >= 6.10)
     build-depends: ghc-prim >= 0.1 && < 1
   build-tools:     happy >= 1.15 && < 2,
@@ -247,7 +254,7 @@ executable agda-mode
   hs-source-dirs:  src/agda-mode
   main-is:         Main.hs
   other-modules:   Paths_Agda
-  build-depends:   base >= 3 && < 4,
+  build-depends:   base >= 4.1 && < 4.2,
                    filepath >= 1.1 && < 2,
                    process >= 1.0.1.0 && < 2,
                    utf8-string >= 0.3 && < 0.4
diff --git a/LICENSE b/LICENSE
index 3b45bc1..b66e8f6 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,5 +1,6 @@
-Copyright (c) 2005-2009 Ulf Norell, Catarina Coquand, Makoto Takeyama,
-Nils Anders Danielsson, Andreas Abel, Karl Mehltretter, Marcin Benke.
+Copyright (c) 2005-2009 Ulf Norell, Nils Anders Danielsson, Catarina
+Coquand, Makoto Takeyama, Andreas Abel, Karl Mehltretter, Marcin
+Benke.
 
 Permission is hereby granted, free of charge, to any person obtaining
 a copy of this software and associated documentation files (the
@@ -19,3 +20,35 @@ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
 CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
 TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+--------------------------------------------------------------------------------
+
+The file src/full/Agda/Utils/ReadP.hs is Copyright (c) The University of
+Glasgow 2002 and is licensed under a BSD-like license as follows:
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+- Redistributions of source code must retain the above copyright notice,
+this list of conditions and the following disclaimer.
+
+- Redistributions in binary form must reproduce the above copyright notice,
+this list of conditions and the following disclaimer in the documentation
+and/or other materials provided with the distribution.
+
+- Neither name of the University nor the names of its contributors may be
+used to endorse or promote products derived from this software without
+specific prior written permission. 
+
+THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
+GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
diff --git a/README b/README
index 89484c5..17413c2 100644
--- a/README
+++ b/README
@@ -14,7 +14,9 @@ Table of contents:
 Installing Agda
 ------------------------------------------------------------------------
 
-There are several ways to install Agda.
+There are several ways to install Agda. (Note that this README only
+discusses installation of Agda, not its standard library. See the Agda
+Wiki for information about the library.)
 
 * Using a binary package, prepared for your platform.
 
@@ -110,13 +112,14 @@ agda2-fontset-name variable.
 Prerequisites
 ------------------------------------------------------------------------
 
-For stable packages you need recent versions of the following
-programs/libraries:
+You need recent versions of the following programs/libraries:
 
    GHC:           http://www.haskell.org/ghc/
    cabal-install: http://www.haskell.org/cabal/
+   Alex:          http://www.haskell.org/alex/
+   Happy:         http://www.haskell.org/happy/
    GNU Emacs:     http://www.gnu.org/software/emacs/
-   haskell-mode:  http://haskell.org/haskell-mode/ (version 2.1 or later)
+   haskell-mode:  http://haskell.org/haskell-mode/
 
 You should also make sure that programs installed by cabal-install are
 on your shell's search path.
@@ -133,12 +136,6 @@ Ubuntu it should suffice to run
 
 as root to get the correct files installed.
 
-For the development version of Agda you also need recent versions of
-the following programs:
-
-   Alex:  http://www.haskell.org/alex/
-   Happy: http://www.haskell.org/happy/
-
 ------------------------------------------------------------------------
 Installing a suitable version of Emacs under Windows
 ------------------------------------------------------------------------
diff --git a/dist/build/Agda/Syntax/Parser/Lexer.hs b/dist/build/Agda/Syntax/Parser/Lexer.hs
new file mode 100644
index 0000000..c8bec14
--- /dev/null
+++ b/dist/build/Agda/Syntax/Parser/Lexer.hs
@@ -0,0 +1,410 @@
+{-# OPTIONS -fglasgow-exts -cpp #-}
+{-# LINE 1 "src/full/Agda/Syntax/Parser/Lexer.x" #-}
+
+{-| The lexer is generated by Alex (<http://www.haskell.org/alex>) and is an
+    adaptation of GHC's lexer. The main lexing function 'lexer' is called by
+    the "Agda.Syntax.Parser.Parser" to get the next token from the input.
+-}
+module Agda.Syntax.Parser.Lexer
+    ( -- * The main function
+      lexer
+      -- * Lex states
+    , normal, literate, code
+    , layout, empty_layout, bol, imp_dir
+      -- * Alex generated functions
+    , AlexReturn(..), alexScanUser
+    ) where
+
+import Data.List
+
+import Agda.Syntax.Parser.Alex
+import Agda.Syntax.Parser.Comments
+#ifndef __HADDOCK__
+import {-# SOURCE #-} Agda.Syntax.Parser.Layout
+import {-# SOURCE #-} Agda.Syntax.Parser.LexActions
+#endif
+import Agda.Syntax.Parser.Monad
+import Agda.Syntax.Parser.StringLiterals
+import Agda.Syntax.Parser.Tokens
+import Agda.Syntax.Literal
+
+
+#if __GLASGOW_HASKELL__ >= 603
+#include "ghcconfig.h"
+#elif defined(__GLASGOW_HASKELL__)
+#include "config.h"
+#endif
+#if __GLASGOW_HASKELL__ >= 503
+import Data.Array
+import Data.Char (ord)
+import Data.Array.Base (unsafeAt)
+#else
+import Array
+import Char (ord)
+#endif
+#if __GLASGOW_HASKELL__ >= 503
+import GHC.Exts
+#else
+import GlaExts
+#endif
+alex_base :: AlexAddr
+alex_base = AlexA# "\xf8\xff\xff\xff\x6e\x00\x00\x00\xca\x00\x00\x00\x40\x01\x00\x00\x45\x01\x00\x00\x4a\x01\x00\x00\x50\x01\x00\x00\x73\x00\x00\x00\x7c\x00\x00\x00\x84\x00\x00\x00\x8b\x00\x00\x00\x94\x00\x00\x00\x9c\x00\x00\x00\xa4\xff\xff\xff\x77\x00\x00\x00\x56\x01\x00\x00\x70\x01\x00\x00\xa2\xff\xff\xff\x78\x00\x00\x00\xa1\xff\xff\xff\x79\x00\x00\x00\xa0\xff\xff\xff\x7a\x00\x00\x00\x9c\xff\xff\xff\xdc\x00\x00\x00\x90\xff\xff\xff\x0b\x00\x00\x00\xa9\xff\xff\xff\x81\x00\x00\x00\x9e\xff\xff\xff\x4e\x01\x00\x00\xaa\xff\xff\xff\x54\x01\x00\x00\xab\xff\xff\xff\x80\x00\x00\x00\x92\xff\xff\xff\x5a\x01\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaf\xff\xff\xff\xa8\xff\xff\xff\xb3\xff\xff\xff\x11\x00\x00\x00\x2f\x00\x00\x00\x2a\x00\x00\x00\x36\x00\x00\x00\x39\x00\x00\x00\x25\x00\x00\x00\xa1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x00\x00\x00\x8d\x00\x00\x00\xac\x00\x00\x00\xba\x00\x00\x00\x75\x01\x00\x00\x7a\x01\x00\x00\x80\x01\x00\x00\x9e\x01\x00\x00\xaa\x01\x00\x00\xc4\x01\x00\x00\xc9\x01\x00\x00\xcf\x01\x00\x00\xd4\x01\x00\x00\xe1\x01\x00\x00\xec\x01\x00\x00\xf1\x01\x00\x00\xf9\x01\x00\x00\xfe\x01\x00\x00\x1b\x02\x00\x00\x20\x02\x00\x00\x28\x02\x00\x00\x2d\x02\x00\x00\x38\x02\x00\x00\x46\x02\x00\x00\x50\x02\x00\x00\x55\x02\x00\x00\x5f\x02\x00\x00\x6d\x02\x00\x00\x77\x02\x00\x00\x7c\x02\x00\x00\x86\x02\x00\x00\x95\x02\x00\x00\xa1\x02\x00\x00\xa6\x02\x00\x00\xbe\x02\x00\x00\xc3\x02\x00\x00\xc8\x02\x00\x00\xe1\x02\x00\x00\xe6\x02\x00\x00\xeb\x02\x00\x00\x03\x03\x00\x00\x08\x03\x00\x00\x0d\x03\x00\x00\x12\x03\x00\x00\x2a\x03\x00\x00\x2f\x03\x00\x00\x34\x03\x00\x00\x39\x03\x00\x00\x54\x03\x00\x00\x5c\x03\x00\x00\x00\x00\x00\x00\x85\x00\x00\x00\xa7\x00\x00\x00\x70\x03\x00\x00\xa9\x00\x00\x00\xe1\x03\x00\x00\x52\x04\x00\x00\xc3\x04\x00\x00\x34\x05\x00\x00\xa5\x05\x00\x00\x01\x06\x00\x00\x8e\x00\x00\x00\x5d\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb9\x06\x00\x00\x15\x07\x00\x00\x71\x07\x00\x00\xcd\x07\x00\x00\x29\x08\x00\x00\x85\x08\x00\x00\xe1\x08\x00\x00\x3d\x09\x00\x00\x99\x09\x00\x00\xf5\x09\x00\x00\x51\x0a\x00\x00\xad\x0a\x00\x00\x09\x0b\x00\x00\x65\x0b\x00\x00\xc1\x0b\x00\x00\x1d\x0c\x00\x00\x79\x0c\x00\x00\xd5\x0c\x00\x00\x31\x0d\x00\x00\x8d\x0d\x00\x00\xe9\x0d\x00\x00\x45\x0e\x00\x00\xa1\x0e\x00\x00\xfd\x0e\x00\x00\x59\x0f\x00\x00\xb5\x0f\x00\x00\x11\x10\x00\x00\x6d\x10\x00\x00\xc9\x10\x00\x00\x25\x11\x00\x00\x81\x11\x00\x00\xdd\x11\x00\x00\x39\x12\x00\x00\x95\x12\x00\x00\xf1\x12\x00\x00\x4d\x13\x00\x00\xa9\x13\x00\x00\x05\x14\x00\x00\x61\x14\x00\x00\xbd\x14\x00\x00\x19\x15\x00\x00\x75\x15\x00\x00\xd1\x15\x00\x00\x2d\x16\x00\x00\x89\x16\x00\x00\xe5\x16\x00\x00\x41\x17\x00\x00\x9d\x17\x00\x00\xf9\x17\x00\x00\x55\x18\x00\x00\xb1\x18\x00\x00\x0d\x19\x00\x00\x69\x19\x00\x00\xc5\x19\x00\x00\x21\x1a\x00\x00\x7d\x1a\x00\x00\xd9\x1a\x00\x00\x35\x1b\x00\x00\x91\x1b\x00\x00\xed\x1b\x00\x00\x49\x1c\x00\x00\xa5\x1c\x00\x00\x01\x1d\x00\x00\x5d\x1d\x00\x00\xb9\x1d\x00\x00\x15\x1e\x00\x00\x71\x1e\x00\x00\xcd\x1e\x00\x00\x29\x1f\x00\x00\x85\x1f\x00\x00\xe1\x1f\x00\x00\x3d\x20\x00\x00\x99\x20\x00\x00\xf5\x20\x00\x00\x51\x21\x00\x00\xad\x21\x00\x00\x09\x22\x00\x00\x65\x22\x00\x00\xc1\x22\x00\x00\x1d\x23\x00\x00\x79\x23\x00\x00\xd5\x23\x00\x00\x31\x24\x00\x00\x8d\x24\x00\x00\xe9\x24\x00\x00\x45\x25\x00\x00\xa1\x25\x00\x00\xfd\x25\x00\x00\x59\x26\x00\x00\xb5\x26\x00\x00\x11\x27\x00\x00\x6d\x27\x00\x00\xc9\x27\x00\x00\x25\x28\x00\x00\x81\x28\x00\x00\xdd\x28\x00\x00\x39\x29\x00\x00\x95\x29\x00\x00\xf1\x29\x00\x00\x4d\x2a\x00\x00\xa9\x2a\x00\x00\x05\x2b\x00\x00\x61\x2b\x00\x00\xbd\x2b\x00\x00\x19\x2c\x00\x00\x75\x2c\x00\x00\xd1\x2c\x00\x00\x2d\x2d\x00\x00\x89\x2d\x00\x00\xe5\x2d\x00\x00\x41\x2e\x00\x00\x9d\x2e\x00\x00\xf9\x2e\x00\x00\x55\x2f\x00\x00\xb1\x2f\x00\x00\x0d\x30\x00\x00\x69\x30\x00\x00\xc5\x30\x00\x00\x21\x31\x00\x00\x7d\x31\x00\x00\xd9\x31\x00\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x35\x32\x00\x00\x91\x32\x00\x00\xed\x32\x00\x00\x49\x33\x00\x00\xa5\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8f\x00\x00\x00\x90\x00\x00\x00\x00\x00\x00\x00\x01\x34\x00\x00\x5d\x34\x00\x00\xb9\x34\x00\x00\x15\x35\x00\x00\x71\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\x35\x00\x00\x29\x36\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x36\x00\x00\xe1\x36\x00\x00\x3d\x37\x00\x00\x99\x37\x00\x00\xf5\x37\x00\x00\x51\x38\x00\x00\xad\x38\x00\x00\x09\x39\x00\x00\x65\x39\x00\x00\xc1\x39\x00\x00\x1d\x3a\x00\x00\x79\x3a\x00\x00\xd5\x3a\x00\x00\x31\x3b\x00\x00\x8d\x3b\x00\x00\xe9\x3b\x00\x00\x45\x3c\x00\x00\xa1\x3c\x00\x00\xfd\x3c\x00\x00\x59\x3d\x00\x00\xb5\x3d\x00\x00\x11\x3e\x00\x00\x6d\x3e\x00\x00\xc9\x3e\x00\x00\x25\x3f\x00\x00\x81\x3f\x00\x00\xdd\x3f\x00\x00\x39\x40\x00\x00\x95\x40\x00\x00\xf1\x40\x00\x00\x4d\x41\x00\x00\xa9\x41\x00\x00\x05\x42\x00\x00\x61\x42\x00\x00\xbd\x42\x00\x00"#
+
+alex_table :: AlexAddr
+alex_table = AlexA# "\x00\x00\x35\x00\x77\x00\x35\x00\x35\x00\x35\x00\x11\x00\x13\x00\x15\x00\x17\x00\x19\x00\x1b\x00\x1d\x00\x1f\x00\x21\x00\x09\x00\x23\x00\x26\x00\xff\xff\x29\x00\x2d\x00\xff\xff\x2e\x00\x2f\x00\x35\x00\x29\x01\x0b\x01\x29\x01\x29\x01\x29\x01\x29\x01\x0a\x01\x04\x01\x05\x01\x29\x01\x29\x01\x29\x01\x76\x00\xfc\x00\x29\x01\x0c\x01\x0d\x01\x0d\x01\x0d\x01\x0d\x01\x0d\x01\x0d\x01\x0d\x01\x0d\x01\x0d\x01\xff\x00\xfe\x00\x29\x01\x00\x01\x29\x01\x02\x01\x08\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\xd8\x00\x29\x01\x29\x01\xd4\x00\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x07\x01\x29\x01\x29\x01\x01\x01\x29\x01\xcd\x00\x29\x01\xb5\x00\xaf\x00\x29\x01\x88\x00\x29\x01\xec\x00\x7e\x00\x29\x01\x29\x01\x7c\x00\xab\x00\x29\x01\xa0\x00\x94\x00\x29\x01\xbb\x00\x29\x01\x29\x01\xe6\x00\x29\x01\x83\x00\x29\x01\x29\x01\x29\x01\x38\x00\x03\x01\x09\x01\x29\x01\x35\x00\x78\x00\x35\x00\x35\x00\x35\x00\x10\x00\x2a\x00\x10\x00\x10\x00\x10\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x1c\x00\x0f\x00\x0f\x00\x0f\x00\xff\xff\xff\xff\x30\x00\x0b\x00\x35\x00\x0b\x00\x0b\x00\x0b\x00\x31\x00\x10\x00\x0c\x00\xff\xff\x0c\x00\x0c\x00\x0c\x00\x32\x00\x33\x00\x75\x00\x0f\x00\x0b\x00\x34\x00\x0b\x00\x0b\x00\x0b\x00\x2b\x00\xfa\x00\x0b\x00\x0c\x00\xff\xff\x0c\x00\x0c\x00\x0c\x00\x35\x00\x0c\x00\x35\x00\x35\x00\x35\x00\x39\x00\x37\x00\xff\xff\x6a\x00\xff\xff\x0b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\x6c\x00\x0c\x00\xfd\x00\xfb\x00\x00\x00\x00\x00\x35\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x2c\x00\x00\x00\xff\xff\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x35\x00\x77\x00\x35\x00\x35\x00\x35\x00\x0d\x00\x12\x00\xff\xff\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x16\x00\x00\x00\x00\x00\x18\x00\x1e\x00\x24\x00\xff\xff\x3c\x00\x00\x00\x6b\x00\x35\x00\x29\x01\x0b\x01\x29\x01\x29\x01\x29\x01\x29\x01\x0a\x01\x04\x01\x05\x01\x29\x01\x29\x01\x29\x01\x76\x00\xfc\x00\x29\x01\x0c\x01\x0d\x01\x0d\x01\x0d\x01\x0d\x01\x0d\x01\x0d\x01\x0d\x01\x0d\x01\x0d\x01\xff\x00\xfe\x00\x29\x01\x00\x01\x29\x01\x02\x01\x08\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\xd8\x00\x29\x01\x29\x01\xd4\x00\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x07\x01\x29\x01\x29\x01\x01\x01\x29\x01\xcd\x00\x29\x01\xb5\x00\xaf\x00\x29\x01\x88\x00\x29\x01\xec\x00\x7e\x00\x29\x01\x29\x01\x7c\x00\xab\x00\x29\x01\xa0\x00\x94\x00\x29\x01\xbb\x00\x29\x01\x29\x01\xe6\x00\x29\x01\x83\x00\x29\x01\x29\x01\x29\x01\x38\x00\x03\x01\x09\x01\x29\x01\x35\x00\x1a\x00\x35\x00\x35\x00\x35\x00\x35\x00\x77\x00\x35\x00\x35\x00\x35\x00\x35\x00\x79\x00\x35\x00\x35\x00\x35\x00\xff\xff\x36\x00\x36\x00\x36\x00\x36\x00\x36\x00\xff\xff\x0f\x00\x35\x00\x0f\x00\x0f\x00\x0f\x00\xff\xff\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x00\x00\x00\x00\x00\x75\x00\x00\x00\x00\x00\x36\x00\x00\x00\x75\x00\x3e\x00\x00\x00\x00\x00\x0f\x00\x75\x00\x00\x00\x10\x00\xff\xff\x10\x00\x10\x00\x10\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x10\x00\x00\x00\x48\x00\x4f\x00\x00\x00\xff\xff\x00\x00\x00\x00\x3a\x00\x60\x00\xff\xff\x00\x00\x66\x00\x00\x00\x00\x00\x41\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\xf4\x00\x00\x00\x6b\x00\x00\x00\x20\x00\xff\xff\x00\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x3b\x00\x0e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x42\x00\x00\x00\x00\x00\x00\x00\x44\x00\xff\xff\x00\x00\x3d\x00\x00\x00\x43\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x46\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x4a\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\xff\xff\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\xff\xff\x4d\x00\x00\x00\x00\x00\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x47\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x50\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x51\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x52\x00\xff\xff\x00\x00\x53\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x56\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x59\x00\xff\xff\x00\x00\x57\x00\x00\x00\x00\x00\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x5d\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x5b\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x61\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x62\x00\xff\xff\x00\x00\x00\x00\x63\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x64\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\x67\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x00\x00\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x00\x00\x65\x00\x70\x00\x70\x00\x70\x00\x70\x00\x72\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x00\x00\x70\x00\x70\x00\x70\x00\x70\x00\x00\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\xff\xff\x70\x00\x00\x00\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x00\x00\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x00\x00\x00\x00\x70\x00\x70\x00\x70\x00\x70\x00\x72\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x00\x00\x70\x00\x70\x00\x70\x00\x70\x00\x00\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\xff\xff\x70\x00\x00\x00\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x00\x00\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x00\x00\x00\x00\x70\x00\x70\x00\x70\x00\x70\x00\x72\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x00\x00\x70\x00\x70\x00\x70\x00\x70\x00\x00\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\xff\xff\x70\x00\x00\x00\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x00\x00\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x00\x00\x00\x00\x71\x00\x71\x00\x71\x00\x71\x00\x72\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x00\x00\x71\x00\x71\x00\x71\x00\x71\x00\x00\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\xff\xff\x71\x00\x00\x00\x71\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x00\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x00\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x00\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x00\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x73\x00\x6f\x00\x6f\x00\x74\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\xff\xff\x6f\x00\x00\x00\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x00\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x00\x00\x00\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x00\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x00\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x6f\x00\x6f\x00\x6f\x00\x00\x00\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x71\x00\x6f\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x00\x00\x00\x00\x71\x00\x71\x00\x71\x00\x71\x00\x00\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x00\x00\x71\x00\x71\x00\x71\x00\x71\x00\x00\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x00\x00\x71\x00\x2a\x01\x71\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x6d\x00\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x06\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x7a\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x7b\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xbe\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xa5\x00\x7d\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x7f\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x80\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x81\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x82\x00\x8b\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x84\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x85\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x86\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x87\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xdd\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x89\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x8a\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x8c\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x8d\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x8e\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x8f\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x90\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x91\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x92\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x93\x00\x2a\x01\x2a\x01\x9c\x00\x2a\x01\x2a\x01\xf9\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x95\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x96\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x97\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x98\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x99\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x9a\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xd1\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x9b\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x9d\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x9e\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x9f\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xa1\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xa2\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xa3\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xa4\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xa6\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xa7\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xa8\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xa9\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xaa\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xc5\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xac\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xad\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xae\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xb0\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xb1\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xb2\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xb3\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xb4\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xb6\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xb7\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xb8\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xb9\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xf2\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xba\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xbf\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xc0\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xbc\x00\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xbd\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xc1\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xc2\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xc3\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xc4\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xc6\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xc7\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xc8\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xc9\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xca\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xcb\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xcc\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xce\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xcf\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xd0\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\xde\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xd2\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xd3\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xd5\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xd6\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xd7\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xd9\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xda\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xdb\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xdc\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xe1\x00\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\xe0\x00\xe0\x00\xe0\x00\xe0\x00\xe0\x00\xe0\x00\xe0\x00\xe0\x00\xe0\x00\xe0\x00\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\xe0\x00\xe0\x00\xe0\x00\xe0\x00\xe0\x00\xe0\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xe0\x00\xe0\x00\xe0\x00\xe0\x00\xe0\x00\xe0\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\xe0\x00\xe0\x00\xe0\x00\xe0\x00\xe0\x00\xe0\x00\xe0\x00\xe0\x00\xe0\x00\xe0\x00\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\xe0\x00\xe0\x00\xe0\x00\xe0\x00\xe0\x00\xe0\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xe0\x00\xe0\x00\xe0\x00\xe0\x00\xe0\x00\xe0\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xe2\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xe3\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xe4\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xe5\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xe7\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xe8\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xe9\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xea\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xeb\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xed\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xee\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xef\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xf0\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xf1\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xf5\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xf6\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xf7\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\xf8\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2b\x01\x2a\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x00\x00\x00\x00\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x00\x00\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x00\x00\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x00\x00\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x00\x00\x2b\x01\x2a\x01\x2b\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x29\x01\x2a\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x00\x00\x00\x00\x29\x01\x29\x01\x29\x01\x29\x01\x00\x00\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x00\x00\x29\x01\x29\x01\x29\x01\x29\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x01\x29\x01\x29\x01\x29\x01\x00\x00\x29\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x01\x2a\x01\x29\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x21\x01\x2a\x01\x0e\x01\x0e\x01\x0e\x01\x0e\x01\x0e\x01\x0e\x01\x0e\x01\x0e\x01\x0e\x01\x0e\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x26\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x26\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x13\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x21\x01\x2a\x01\x0e\x01\x0e\x01\x0e\x01\x0e\x01\x0e\x01\x0e\x01\x0e\x01\x0e\x01\x0e\x01\x0e\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x26\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x26\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x21\x01\x2a\x01\x0e\x01\x0e\x01\x0e\x01\x0e\x01\x0e\x01\x0e\x01\x0e\x01\x0e\x01\x0e\x01\x0e\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x26\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x26\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x21\x01\x2a\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x12\x01\x12\x01\x12\x01\x12\x01\x11\x01\x12\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x12\x01\x12\x01\x12\x01\x12\x01\x11\x01\x12\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x28\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x21\x01\x2a\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x12\x01\x12\x01\x12\x01\x12\x01\x11\x01\x12\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x12\x01\x12\x01\x12\x01\x12\x01\x11\x01\x12\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x27\x01\x2a\x01\x27\x01\x21\x01\x2a\x01\x0f\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x12\x01\x12\x01\x12\x01\x12\x01\x11\x01\x12\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x12\x01\x12\x01\x12\x01\x12\x01\x11\x01\x12\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x21\x01\x2a\x01\x12\x01\x12\x01\x12\x01\x12\x01\x12\x01\x12\x01\x12\x01\x12\x01\x12\x01\x12\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x12\x01\x12\x01\x12\x01\x12\x01\x11\x01\x12\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x12\x01\x12\x01\x12\x01\x12\x01\x11\x01\x12\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x12\x01\x12\x01\x12\x01\x12\x01\x12\x01\x12\x01\x12\x01\x12\x01\x12\x01\x12\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x12\x01\x12\x01\x12\x01\x12\x01\x12\x01\x12\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x12\x01\x12\x01\x12\x01\x12\x01\x12\x01\x12\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x23\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x23\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x22\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x23\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x23\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x23\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x23\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x24\x01\x2a\x01\x24\x01\x2c\x01\x2a\x01\x18\x01\x19\x01\x19\x01\x19\x01\x19\x01\x19\x01\x19\x01\x19\x01\x19\x01\x19\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x17\x01\x1a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x17\x01\x1a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x19\x01\x19\x01\x19\x01\x19\x01\x19\x01\x19\x01\x19\x01\x19\x01\x19\x01\x19\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x17\x01\x1a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x17\x01\x1a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x25\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x19\x01\x19\x01\x19\x01\x19\x01\x19\x01\x19\x01\x19\x01\x19\x01\x19\x01\x19\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x17\x01\x1a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x17\x01\x1a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x17\x01\x1a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x17\x01\x1a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x25\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x1f\x01\x1f\x01\x1f\x01\x1f\x01\x1f\x01\x1f\x01\x1f\x01\x1f\x01\x1f\x01\x1f\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x28\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x1f\x01\x1f\x01\x1f\x01\x1f\x01\x1f\x01\x1f\x01\x1f\x01\x1f\x01\x1f\x01\x1f\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x20\x01\x20\x01\x20\x01\x20\x01\x20\x01\x20\x01\x20\x01\x20\x01\x20\x01\x20\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x20\x01\x20\x01\x20\x01\x20\x01\x20\x01\x20\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x20\x01\x20\x01\x20\x01\x20\x01\x20\x01\x20\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x29\x01\x2a\x01\x29\x01\x29\x01\x29\x01\x29\x01\x00\x00\x00\x00\x00\x00\x29\x01\x29\x01\x29\x01\x29\x01\x00\x00\x29\x01\x14\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x29\x01\x00\x00\x29\x01\x29\x01\x29\x01\x29\x01\x00\x00\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x2d\x01\x29\x01\x29\x01\x2e\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x00\x00\x29\x01\x2a\x01\x29\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x24\x01\x2a\x01\x24\x01\x2c\x01\x2a\x01\x1b\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x1b\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x27\x01\x2a\x01\x27\x01\x2c\x01\x2a\x01\x1e\x01\x1f\x01\x1f\x01\x1f\x01\x1f\x01\x1f\x01\x1f\x01\x1f\x01\x1f\x01\x1f\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x1e\x01\x1f\x01\x1f\x01\x1f\x01\x1f\x01\x1f\x01\x1f\x01\x1f\x01\x1f\x01\x1f\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x20\x01\x20\x01\x20\x01\x20\x01\x20\x01\x20\x01\x20\x01\x20\x01\x20\x01\x20\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x20\x01\x20\x01\x20\x01\x20\x01\x20\x01\x20\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x20\x01\x20\x01\x20\x01\x20\x01\x20\x01\x20\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2c\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x2a\x01\x00\x00\x2a\x01\x2b\x01\x2a\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x00\x00\x00\x00\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2c\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x00\x00\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x00\x00\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x00\x00\x2b\x01\x29\x01\x2b\x01\x29\x01\x29\x01\x29\x01\x29\x01\x00\x00\x00\x00\x00\x00\x29\x01\x29\x01\x29\x01\x29\x01\x00\x00\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x00\x00\x29\x01\x29\x01\x29\x01\x29\x01\x00\x00\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x2d\x01\x29\x01\x29\x01\x2e\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x00\x00\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x00\x00\x00\x00\x29\x01\x29\x01\x29\x01\x29\x01\x00\x00\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x29\x01\x00\x00\x29\x01\x29\x01\x29\x01\x29\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x01\x29\x01\x29\x01\x29\x01\x00\x00\x29\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x01\x2b\x01\x29\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x00\x00\x00\x00\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x00\x00\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x00\x00\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x00\x00\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x2b\x01\x00\x00\x2b\x01\x00\x00\x2b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
+
+alex_check :: AlexAddr
+alex_check = AlexA# "\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x62\x00\x65\x00\x67\x00\x69\x00\x6e\x00\x7b\x00\x63\x00\x6f\x00\x64\x00\x7d\x00\x65\x00\x0a\x00\x0a\x00\x0a\x00\x65\x00\x0a\x00\x6e\x00\x64\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x09\x00\x7b\x00\x0b\x00\x0c\x00\x0d\x00\x0a\x00\x0a\x00\x7b\x00\x09\x00\x20\x00\x0b\x00\x0c\x00\x0d\x00\x63\x00\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x6f\x00\x64\x00\x2d\x00\x20\x00\x09\x00\x65\x00\x0b\x00\x0c\x00\x0d\x00\x7d\x00\x21\x00\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x20\x00\x0b\x00\x0c\x00\x0d\x00\x2d\x00\x23\x00\x0a\x00\x2d\x00\x0a\x00\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x6f\x00\x2d\x00\x20\x00\x2e\x00\x2e\x00\xff\xff\xff\xff\x20\x00\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x5c\x00\xff\xff\x20\x00\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x5c\x00\x62\x00\x20\x00\xff\xff\xff\xff\x65\x00\xff\xff\xff\xff\x67\x00\xff\xff\xff\xff\x69\x00\x63\x00\x65\x00\x0a\x00\x2d\x00\xff\xff\x7b\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x09\x00\x6e\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0a\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0a\x00\x09\x00\x20\x00\x0b\x00\x0c\x00\x0d\x00\x0a\x00\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x2d\x00\xff\xff\xff\xff\x20\x00\xff\xff\x2d\x00\x23\x00\xff\xff\xff\xff\x20\x00\x2d\x00\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x20\x00\xff\xff\x42\x00\x43\x00\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\x49\x00\x20\x00\xff\xff\x4c\x00\xff\xff\xff\xff\x4f\x00\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x64\x00\x74\x00\xff\xff\x7b\x00\xff\xff\x6f\x00\x20\x00\xff\xff\x7b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x7b\x00\x5c\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x7d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x50\x00\xff\xff\xff\xff\xff\xff\x49\x00\x20\x00\xff\xff\x7d\x00\xff\xff\x54\x00\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\x4e\x00\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x20\x00\xff\xff\xff\xff\xff\xff\x53\x00\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\x49\x00\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x55\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\x20\x00\x4c\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\x20\x00\x49\x00\xff\xff\xff\xff\x54\x00\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x4e\x00\xff\xff\xff\xff\xff\xff\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\x4f\x00\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x4d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x50\x00\x20\x00\xff\xff\x49\x00\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\x45\x00\xff\xff\xff\xff\xff\xff\x44\x00\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\x44\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\x41\x00\x20\x00\xff\xff\x5f\x00\xff\xff\xff\xff\x20\x00\x54\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\x59\x00\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x45\x00\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\x50\x00\x20\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x4d\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\x50\x00\x20\x00\xff\xff\xff\xff\x4f\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x52\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0a\x00\xff\xff\x20\x00\x49\x00\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x45\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x0a\x00\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x0a\x00\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x0a\x00\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x0a\x00\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\xff\xff\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x0a\x00\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\x60\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\x60\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\xff\xff\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\xff\xff\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\x60\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#
+
+alex_deflt :: AlexAddr
+alex_deflt = AlexA# "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x27\x00\xff\xff\xff\xff\x27\x00\xff\xff\x27\x00\xff\xff\x27\x00\xff\xff\x27\x00\xff\xff\x27\x00\xff\xff\x27\x00\xff\xff\x27\x00\xff\xff\x27\x00\xff\xff\x27\x00\xff\xff\x27\x00\xff\xff\x27\x00\xff\xff\x27\x00\xff\xff\x27\x00\xff\xff\x27\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\xff\xff\xff\xff\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#
+
+alex_accept = listArray (0::Int,302) [[],[(AlexAccPred  (alex_action_23) ( not' eof ))],[],[(AlexAcc (alex_action_26))],[],[(AlexAcc (alex_action_25))],[],[(AlexAccPred  (alex_action_1) (alexRightContext 40))],[],[(AlexAccPred  (alex_action_0) (alexRightContext 37))],[(AlexAccPred  (alex_action_0) (alexRightContext 37)),(AlexAccPred  (alex_action_1) (alexRightContext 40)),(AlexAcc (alex_action_2))],[(AlexAccPred  (alex_action_0) (alexRightContext 37))],[(AlexAccPred  (alex_action_0) (alexRightContext 37)),(AlexAccPred  (alex_action_1) (alexRightContext 40)),(AlexAcc (alex_action_2))],[],[(AlexAccPred  (alex_action_1) (alexRightContext 40)),(AlexAcc (alex_action_2))],[],[(AlexAccPred  (alex_action_1) (alexRightContext 40)),(AlexAcc (alex_action_2))],[],[(AlexAccPred  (alex_action_1) (alexRightContext 40)),(AlexAcc (alex_action_2))],[],[(AlexAccPred  (alex_action_1) (alexRightContext 40)),(AlexAcc (alex_action_2))],[],[(AlexAccPred  (alex_action_1) (alexRightContext 40)),(AlexAcc (alex_action_2))],[],[(AlexAccPred  (alex_action_1) (alexRightContext 40)),(AlexAcc (alex_action_2))],[],[(AlexAccPred  (alex_action_1) (alexRightContext 40)),(AlexAcc (alex_action_2))],[],[(AlexAccPred  (alex_action_1) (alexRightContext 40)),(AlexAcc (alex_action_2))],[],[(AlexAccPred  (alex_action_1) (alexRightContext 40)),(AlexAcc (alex_action_2))],[],[(AlexAccPred  (alex_action_1) (alexRightContext 40)),(AlexAcc (alex_action_2))],[],[(AlexAccPred  (alex_action_1) (alexRightContext 40)),(AlexAcc (alex_action_2))],[],[(AlexAccPred  (alex_action_1) (alexRightContext 40)),(AlexAcc (alex_action_2))],[],[(AlexAccSkip)],[(AlexAccPred  (alex_action_1) (alexRightContext 40)),(AlexAcc (alex_action_2))],[],[(AlexAccSkip)],[(AlexAccSkip)],[(AlexAccPred  (alex_action_4) ( inState code ))],[],[],[],[],[],[],[],[],[],[(AlexAccSkip)],[(AlexAccSkip)],[(AlexAcc (alex_action_7))],[(AlexAcc (alex_action_69))],[(AlexAccPred  (alex_action_18) ( not' (followedBy '#') ))],[(AlexAcc (alex_action_8))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_9))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_10))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_11))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_12))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_14))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_13))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_15))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_16))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_17))],[(AlexAccPred  (alex_action_18) ( not' (followedBy '#') ))],[],[(AlexAccPred  (alex_action_19) ( keepComments .&&. (followedBy '\n' .||. eof) )),(AlexAccSkipPred  ( followedBy '\n' .||. eof ))],[(AlexAccPred  (alex_action_19) ( keepComments .&&. (followedBy '\n' .||. eof) )),(AlexAccSkipPred  ( followedBy '\n' .||. eof )),(AlexAcc (alex_action_75))],[(AlexAccPred  (alex_action_19) ( keepComments .&&. (followedBy '\n' .||. eof) )),(AlexAccSkipPred  ( followedBy '\n' .||. eof ))],[(AlexAccPred  (alex_action_19) ( keepComments .&&. (followedBy '\n' .||. eof) )),(AlexAccSkipPred  ( followedBy '\n' .||. eof )),(AlexAcc (alex_action_75))],[(AlexAccPred  (alex_action_19) ( keepComments .&&. (followedBy '\n' .||. eof) )),(AlexAccSkipPred  ( followedBy '\n' .||. eof )),(AlexAcc (alex_action_75))],[(AlexAccPred  (alex_action_19) ( keepComments .&&. (followedBy '\n' .||. eof) )),(AlexAccSkipPred  ( followedBy '\n' .||. eof )),(AlexAcc (alex_action_75))],[(AlexAccPred  (alex_action_19) ( keepComments .&&. (followedBy '\n' .||. eof) )),(AlexAccSkipPred  ( followedBy '\n' .||. eof ))],[(AlexAccPred  (alex_action_19) ( keepComments .&&. (followedBy '\n' .||. eof) )),(AlexAccSkipPred  ( followedBy '\n' .||. eof ))],[(AlexAccPred  (alex_action_19) ( keepComments .&&. (followedBy '\n' .||. eof) )),(AlexAccSkipPred  ( followedBy '\n' .||. eof ))],[],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_21))],[(AlexAccSkip)],[(AlexAccSkip)],[(AlexAcc (alex_action_27))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_28))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_29))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_30))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_31))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_32))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_33))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_34))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_35))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_36))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_37))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_38))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_39))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_40))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_41))],[(AlexAcc (alex_action_42))],[(AlexAcc (alex_action_43))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_44))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_45))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_46))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_47))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_48))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_49))],[(AlexAcc (alex_action_49))],[(AlexAcc (alex_action_49))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_50))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_51))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_52))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_53))],[],[(AlexAcc (alex_action_54))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_55))],[(AlexAcc (alex_action_56))],[(AlexAcc (alex_action_57))],[],[(AlexAcc (alex_action_58))],[(AlexAcc (alex_action_59))],[(AlexAcc (alex_action_60))],[(AlexAcc (alex_action_61))],[(AlexAcc (alex_action_62))],[(AlexAcc (alex_action_63))],[(AlexAcc (alex_action_64))],[(AlexAcc (alex_action_65))],[(AlexAcc (alex_action_66))],[(AlexAcc (alex_action_67))],[(AlexAcc (alex_action_68))],[(AlexAcc (alex_action_70))],[(AlexAcc (alex_action_71))],[(AlexAcc (alex_action_72))],[(AlexAcc (alex_action_73))],[(AlexAcc (alex_action_73))],[(AlexAcc (alex_action_73))],[(AlexAcc (alex_action_73))],[(AlexAcc (alex_action_73))],[(AlexAcc (alex_action_73))],[(AlexAcc (alex_action_73))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_74))],[(AlexAcc (alex_action_74))],[(AlexAcc (alex_action_74))],[(AlexAcc (alex_action_74))],[(AlexAcc (alex_action_74))],[(AlexAcc (alex_action_74))],[(AlexAcc (alex_action_74))],[(AlexAcc (alex_action_74))],[(AlexAcc (alex_action_74))],[(AlexAcc (alex_action_74))],[(AlexAcc (alex_action_74))],[(AlexAcc (alex_action_74))],[(AlexAcc (alex_action_74))],[],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_75))],[],[],[]]
+{-# LINE 184 "src/full/Agda/Syntax/Parser/Lexer.x" #-}
+
+
+-- | This is the initial state for parsing a literate file. Code blocks
+--   should be enclosed in @\\begin{code}@ @\\end{code}@ pairs.
+literate :: LexState
+literate = tex
+
+
+-- | This is the initial state for parsing a regular, non-literate file.
+normal :: LexState
+normal = 0
+
+
+{-| The layout state. Entered when we see a layout keyword ('withLayout') and
+    exited either when seeing an open brace ('openBrace') or at the next token
+    ('newLayoutContext').
+
+    Update: we don't use braces for layout anymore.
+-}
+layout :: LexState
+layout = layout_
+
+
+{-| The state inside a pragma.
+-}
+pragma :: LexState
+pragma = pragma_
+
+{-| We enter this state from 'newLayoutContext' when the token following a
+    layout keyword is to the left of (or at the same column as) the current
+    layout context. Example:
+
+    > data Empty : Set where
+    > foo : Empty -> Nat
+
+    Here the second line is not part of the @where@ clause since it is has the
+    same indentation as the @data@ definition. What we have to do is insert an
+    empty layout block @{}@ after the @where at . The only thing that can happen
+    in this state is that 'emptyLayout' is executed, generating the closing
+    brace. The open brace is generated when entering by 'newLayoutContext'.
+-}
+empty_layout :: LexState
+empty_layout = empty_layout_
+
+
+-- | This state is entered at the beginning of each line. You can't lex
+--   anything in this state, and to exit you have to check the layout rule.
+--   Done with 'offsideRule'.
+bol :: LexState
+bol = bol_
+
+
+-- | This state can only be entered by the parser. In this state you can only
+--   lex the keywords @using@, @hiding@, @renaming@ and @to at . Moreover they are
+--   only keywords in this particular state. The lexer will never enter this
+--   state by itself, that has to be done in the parser.
+imp_dir :: LexState
+imp_dir = imp_dir_
+
+
+-- | Return the next token. This is the function used by Happy in the parser.
+--
+--   @lexer k = 'lexToken' >>= k@
+lexer :: (Token -> Parser a) -> Parser a
+lexer k = lexToken >>= k
+
+-- | Do not use this function; it sets the 'ParseFlags' to
+-- 'undefined'.
+alexScan :: AlexInput -> Int -> AlexReturn (LexAction Token)
+
+-- | This is the main lexing function generated by Alex.
+alexScanUser :: ([LexState], ParseFlags) -> AlexInput -> Int -> AlexReturn (LexAction Token)
+
+
+
+bol_,code,empty_layout_,imp_dir_,layout_,pragma_,tex :: Int
+bol_ = 1
+code = 2
+empty_layout_ = 3
+imp_dir_ = 4
+layout_ = 5
+pragma_ = 6
+tex = 7
+alex_action_0 =  end_ 
+alex_action_1 =  withInterval TokTeX 
+alex_action_2 =  withInterval TokTeX 
+alex_action_4 =  begin_ tex 
+alex_action_7 =  begin pragma 
+alex_action_8 =  symbol SymOpenPragma 
+alex_action_9 =  endWith $ symbol SymClosePragma 
+alex_action_10 =  keyword KwOPTIONS 
+alex_action_11 =  keyword KwBUILTIN 
+alex_action_12 =  keyword KwCOMPILED_DATA 
+alex_action_13 =  keyword KwCOMPILED_TYPE 
+alex_action_14 =  keyword KwCOMPILED 
+alex_action_15 =  keyword KwIMPORT 
+alex_action_16 =  keyword KwLINE 
+alex_action_17 =  withInterval $ TokString 
+alex_action_18 =  nestedComment 
+alex_action_19 =  withInterval TokComment 
+alex_action_21 =  begin bol_ 
+alex_action_23 =  offsideRule 
+alex_action_25 =  endWith newLayoutContext 
+alex_action_26 =  emptyLayout 
+alex_action_27 =  keyword KwLet 
+alex_action_28 =  keyword KwIn 
+alex_action_29 =  keyword KwWhere 
+alex_action_30 =  keyword KwField 
+alex_action_31 =  keyword KwWith 
+alex_action_32 =  keyword KwPostulate 
+alex_action_33 =  keyword KwPrimitive 
+alex_action_34 =  keyword KwOpen 
+alex_action_35 =  keyword KwImport 
+alex_action_36 =  keyword KwModule 
+alex_action_37 =  keyword KwData 
+alex_action_38 =  keyword KwCoData 
+alex_action_39 =  keyword KwRecord 
+alex_action_40 =  keyword KwInfix 
+alex_action_41 =  keyword KwInfixL 
+alex_action_42 =  keyword KwInfixR 
+alex_action_43 =  keyword KwMutual 
+alex_action_44 =  keyword KwAbstract 
+alex_action_45 =  keyword KwPrivate 
+alex_action_46 =  keyword KwSet 
+alex_action_47 =  keyword KwProp 
+alex_action_48 =  keyword KwForall 
+alex_action_49 =  withInterval' (read . drop 3) TokSetN 
+alex_action_50 =  keyword KwUsing 
+alex_action_51 =  keyword KwHiding 
+alex_action_52 =  keyword KwRenaming 
+alex_action_53 =  endWith $ keyword KwTo 
+alex_action_54 =  keyword KwPublic 
+alex_action_55 =  hole 
+alex_action_56 =  symbol SymEllipsis 
+alex_action_57 =  symbol SymDot 
+alex_action_58 =  symbol SymSemi 
+alex_action_59 =  symbol SymColon 
+alex_action_60 =  symbol SymEqual 
+alex_action_61 =  symbol SymUnderscore 
+alex_action_62 =  symbol SymQuestionMark 
+alex_action_63 =  symbol SymBar 
+alex_action_64 =  symbol SymOpenParen 
+alex_action_65 =  symbol SymCloseParen 
+alex_action_66 =  symbol SymArrow 
+alex_action_67 =  symbol SymLambda 
+alex_action_68 =  symbol SymAs 
+alex_action_69 =  symbol SymOpenBrace 
+alex_action_70 =  symbol SymCloseBrace 
+alex_action_71 =  litChar 
+alex_action_72 =  litString 
+alex_action_73 =  literal LitInt 
+alex_action_74 =  literal LitFloat 
+alex_action_75 =  identifier 
+{-# LINE 1 "templates/GenericTemplate.hs" #-}
+{-# LINE 1 "templates/GenericTemplate.hs" #-}
+{-# LINE 1 "<built-in>" #-}
+{-# LINE 1 "<command-line>" #-}
+{-# LINE 1 "templates/GenericTemplate.hs" #-}
+-- -----------------------------------------------------------------------------
+-- ALEX TEMPLATE
+--
+-- This code is in the PUBLIC DOMAIN; you may copy it freely and use
+-- it for any purpose whatsoever.
+
+-- -----------------------------------------------------------------------------
+-- INTERNALS and main scanner engine
+
+{-# LINE 35 "templates/GenericTemplate.hs" #-}
+
+{-# LINE 45 "templates/GenericTemplate.hs" #-}
+
+
+data AlexAddr = AlexA# Addr#
+
+#if __GLASGOW_HASKELL__ < 503
+uncheckedShiftL# = shiftL#
+#endif
+
+{-# INLINE alexIndexInt16OffAddr #-}
+alexIndexInt16OffAddr (AlexA# arr) off =
+#ifdef WORDS_BIGENDIAN
+  narrow16Int# i
+  where
+	i    = word2Int# ((high `uncheckedShiftL#` 8#) `or#` low)
+	high = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))
+	low  = int2Word# (ord# (indexCharOffAddr# arr off'))
+	off' = off *# 2#
+#else
+  indexInt16OffAddr# arr off
+#endif
+
+
+
+
+
+{-# INLINE alexIndexInt32OffAddr #-}
+alexIndexInt32OffAddr (AlexA# arr) off = 
+#ifdef WORDS_BIGENDIAN
+  narrow32Int# i
+  where
+   i    = word2Int# ((b3 `uncheckedShiftL#` 24#) `or#`
+		     (b2 `uncheckedShiftL#` 16#) `or#`
+		     (b1 `uncheckedShiftL#` 8#) `or#` b0)
+   b3   = int2Word# (ord# (indexCharOffAddr# arr (off' +# 3#)))
+   b2   = int2Word# (ord# (indexCharOffAddr# arr (off' +# 2#)))
+   b1   = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))
+   b0   = int2Word# (ord# (indexCharOffAddr# arr off'))
+   off' = off *# 4#
+#else
+  indexInt32OffAddr# arr off
+#endif
+
+
+
+
+
+#if __GLASGOW_HASKELL__ < 503
+quickIndex arr i = arr ! i
+#else
+-- GHC >= 503, unsafeAt is available from Data.Array.Base.
+quickIndex = unsafeAt
+#endif
+
+
+
+
+-- -----------------------------------------------------------------------------
+-- Main lexing routines
+
+data AlexReturn a
+  = AlexEOF
+  | AlexError  !AlexInput
+  | AlexSkip   !AlexInput !Int
+  | AlexToken  !AlexInput !Int a
+
+-- alexScan :: AlexInput -> StartCode -> AlexReturn a
+alexScan input (I# (sc))
+  = alexScanUser undefined input (I# (sc))
+
+alexScanUser user input (I# (sc))
+  = case alex_scan_tkn user input 0# input sc AlexNone of
+	(AlexNone, input') ->
+		case alexGetChar input of
+			Nothing -> 
+
+
+
+				   AlexEOF
+			Just _ ->
+
+
+
+				   AlexError input'
+
+	(AlexLastSkip input len, _) ->
+
+
+
+		AlexSkip input len
+
+	(AlexLastAcc k input len, _) ->
+
+
+
+		AlexToken input len k
+
+
+-- Push the input through the DFA, remembering the most recent accepting
+-- state it encountered.
+
+alex_scan_tkn user orig_input len input s last_acc =
+  input `seq` -- strict in the input
+  let 
+	new_acc = check_accs (alex_accept `quickIndex` (I# (s)))
+  in
+  new_acc `seq`
+  case alexGetChar input of
+     Nothing -> (new_acc, input)
+     Just (c, new_input) -> 
+
+
+
+	let
+		base   = alexIndexInt32OffAddr alex_base s
+		(I# (ord_c)) = ord c
+		offset = (base +# ord_c)
+		check  = alexIndexInt16OffAddr alex_check offset
+		
+		new_s = if (offset >=# 0#) && (check ==# ord_c)
+			  then alexIndexInt16OffAddr alex_table offset
+			  else alexIndexInt16OffAddr alex_deflt s
+	in
+	case new_s of 
+	    -1# -> (new_acc, input)
+		-- on an error, we want to keep the input *before* the
+		-- character that failed, not after.
+    	    _ -> alex_scan_tkn user orig_input (len +# 1#) 
+			new_input new_s new_acc
+
+  where
+	check_accs [] = last_acc
+	check_accs (AlexAcc a : _) = AlexLastAcc a input (I# (len))
+	check_accs (AlexAccSkip : _)  = AlexLastSkip  input (I# (len))
+	check_accs (AlexAccPred a pred : rest)
+	   | pred user orig_input (I# (len)) input
+	   = AlexLastAcc a input (I# (len))
+	check_accs (AlexAccSkipPred pred : rest)
+	   | pred user orig_input (I# (len)) input
+	   = AlexLastSkip input (I# (len))
+	check_accs (_ : rest) = check_accs rest
+
+data AlexLastAcc a
+  = AlexNone
+  | AlexLastAcc a !AlexInput !Int
+  | AlexLastSkip  !AlexInput !Int
+
+data AlexAcc a user
+  = AlexAcc a
+  | AlexAccSkip
+  | AlexAccPred a (AlexAccPred user)
+  | AlexAccSkipPred (AlexAccPred user)
+
+type AlexAccPred user = user -> AlexInput -> Int -> AlexInput -> Bool
+
+-- -----------------------------------------------------------------------------
+-- Predicates on a rule
+
+alexAndPred p1 p2 user in1 len in2
+  = p1 user in1 len in2 && p2 user in1 len in2
+
+--alexPrevCharIsPred :: Char -> AlexAccPred _ 
+alexPrevCharIs c _ input _ _ = c == alexInputPrevChar input
+
+--alexPrevCharIsOneOfPred :: Array Char Bool -> AlexAccPred _ 
+alexPrevCharIsOneOf arr _ input _ _ = arr ! alexInputPrevChar input
+
+--alexRightContext :: Int -> AlexAccPred _
+alexRightContext (I# (sc)) user _ _ input = 
+     case alex_scan_tkn user input 0# input sc AlexNone of
+	  (AlexNone, _) -> False
+	  _ -> True
+	-- TODO: there's no need to find the longest
+	-- match when checking the right context, just
+	-- the first match will do.
+
+-- used by wrappers
+iUnbox (I# (i)) = i
diff --git a/dist/build/Agda/Syntax/Parser/Parser.hs b/dist/build/Agda/Syntax/Parser/Parser.hs
new file mode 100644
index 0000000..53c435e
--- /dev/null
+++ b/dist/build/Agda/Syntax/Parser/Parser.hs
@@ -0,0 +1,3497 @@
+{-# OPTIONS -fglasgow-exts -cpp #-}
+{-# OPTIONS -fno-warn-incomplete-patterns #-}
+{-| The parser is generated by Happy (<http://www.haskell.org/happy>).
+-}
+module Agda.Syntax.Parser.Parser (
+      moduleParser
+    , exprParser
+    , tokensParser
+    ) where
+
+import Control.Monad
+import Control.Monad.State
+import Data.Char  (isDigit)
+import Data.List
+import Data.Maybe
+import qualified Data.Traversable as T
+
+import Agda.Syntax.Position
+import Agda.Syntax.Parser.Monad
+import Agda.Syntax.Parser.Lexer
+import Agda.Syntax.Parser.Tokens
+import Agda.Syntax.Concrete
+import Agda.Syntax.Concrete.Name
+import Agda.Syntax.Concrete.Pretty
+import Agda.Syntax.Common
+import Agda.Syntax.Fixity
+import Agda.Syntax.Literal
+
+import Agda.Utils.Monad
+#if __GLASGOW_HASKELL__ >= 503
+import Data.Array
+#else
+import Array
+#endif
+#if __GLASGOW_HASKELL__ >= 503
+import GHC.Exts
+#else
+import GlaExts
+#endif
+
+-- parser produced by Happy Version 1.17
+
+newtype HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57 = HappyAbsSyn HappyAny
+#if __GLASGOW_HASKELL__ >= 607
+type HappyAny = GHC.Exts.Any
+#else
+type HappyAny = forall a . a
+#endif
+happyIn6 :: ([Token]) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn6 x = unsafeCoerce# x
+{-# INLINE happyIn6 #-}
+happyOut6 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> ([Token])
+happyOut6 x = unsafeCoerce# x
+{-# INLINE happyOut6 #-}
+happyIn7 :: ([Token]) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn7 x = unsafeCoerce# x
+{-# INLINE happyIn7 #-}
+happyOut7 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> ([Token])
+happyOut7 x = unsafeCoerce# x
+{-# INLINE happyOut7 #-}
+happyIn8 :: (Token) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn8 x = unsafeCoerce# x
+{-# INLINE happyIn8 #-}
+happyOut8 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (Token)
+happyOut8 x = unsafeCoerce# x
+{-# INLINE happyOut8 #-}
+happyIn9 :: (()) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn9 x = unsafeCoerce# x
+{-# INLINE happyIn9 #-}
+happyOut9 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (())
+happyOut9 x = unsafeCoerce# x
+{-# INLINE happyOut9 #-}
+happyIn10 :: (([Pragma], [Declaration])) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn10 x = unsafeCoerce# x
+{-# INLINE happyIn10 #-}
+happyOut10 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (([Pragma], [Declaration]))
+happyOut10 x = unsafeCoerce# x
+{-# INLINE happyOut10 #-}
+happyIn11 :: t11 -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn11 x = unsafeCoerce# x
+{-# INLINE happyIn11 #-}
+happyOut11 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> t11
+happyOut11 x = unsafeCoerce# x
+{-# INLINE happyOut11 #-}
+happyIn12 :: t12 -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn12 x = unsafeCoerce# x
+{-# INLINE happyIn12 #-}
+happyOut12 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> t12
+happyOut12 x = unsafeCoerce# x
+{-# INLINE happyOut12 #-}
+happyIn13 :: t13 -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn13 x = unsafeCoerce# x
+{-# INLINE happyIn13 #-}
+happyOut13 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> t13
+happyOut13 x = unsafeCoerce# x
+{-# INLINE happyOut13 #-}
+happyIn14 :: (()) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn14 x = unsafeCoerce# x
+{-# INLINE happyIn14 #-}
+happyOut14 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (())
+happyOut14 x = unsafeCoerce# x
+{-# INLINE happyOut14 #-}
+happyIn15 :: (Integer) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn15 x = unsafeCoerce# x
+{-# INLINE happyIn15 #-}
+happyOut15 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (Integer)
+happyOut15 x = unsafeCoerce# x
+{-# INLINE happyOut15 #-}
+happyIn16 :: (Name) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn16 x = unsafeCoerce# x
+{-# INLINE happyIn16 #-}
+happyOut16 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (Name)
+happyOut16 x = unsafeCoerce# x
+{-# INLINE happyOut16 #-}
+happyIn17 :: (QName) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn17 x = unsafeCoerce# x
+{-# INLINE happyIn17 #-}
+happyOut17 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (QName)
+happyOut17 x = unsafeCoerce# x
+{-# INLINE happyOut17 #-}
+happyIn18 :: (QName) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn18 x = unsafeCoerce# x
+{-# INLINE happyIn18 #-}
+happyOut18 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (QName)
+happyOut18 x = unsafeCoerce# x
+{-# INLINE happyOut18 #-}
+happyIn19 :: (Name) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn19 x = unsafeCoerce# x
+{-# INLINE happyIn19 #-}
+happyOut19 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (Name)
+happyOut19 x = unsafeCoerce# x
+{-# INLINE happyOut19 #-}
+happyIn20 :: ([Name]) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn20 x = unsafeCoerce# x
+{-# INLINE happyIn20 #-}
+happyOut20 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> ([Name])
+happyOut20 x = unsafeCoerce# x
+{-# INLINE happyOut20 #-}
+happyIn21 :: ([Name]) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn21 x = unsafeCoerce# x
+{-# INLINE happyIn21 #-}
+happyOut21 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> ([Name])
+happyOut21 x = unsafeCoerce# x
+{-# INLINE happyOut21 #-}
+happyIn22 :: ([String]) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn22 x = unsafeCoerce# x
+{-# INLINE happyIn22 #-}
+happyOut22 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> ([String])
+happyOut22 x = unsafeCoerce# x
+{-# INLINE happyOut22 #-}
+happyIn23 :: (QName) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn23 x = unsafeCoerce# x
+{-# INLINE happyIn23 #-}
+happyOut23 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (QName)
+happyOut23 x = unsafeCoerce# x
+{-# INLINE happyOut23 #-}
+happyIn24 :: (Expr) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn24 x = unsafeCoerce# x
+{-# INLINE happyIn24 #-}
+happyOut24 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (Expr)
+happyOut24 x = unsafeCoerce# x
+{-# INLINE happyOut24 #-}
+happyIn25 :: t25 -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn25 x = unsafeCoerce# x
+{-# INLINE happyIn25 #-}
+happyOut25 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> t25
+happyOut25 x = unsafeCoerce# x
+{-# INLINE happyOut25 #-}
+happyIn26 :: ([Expr]) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn26 x = unsafeCoerce# x
+{-# INLINE happyIn26 #-}
+happyOut26 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> ([Expr])
+happyOut26 x = unsafeCoerce# x
+{-# INLINE happyOut26 #-}
+happyIn27 :: ([Expr]) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn27 x = unsafeCoerce# x
+{-# INLINE happyIn27 #-}
+happyOut27 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> ([Expr])
+happyOut27 x = unsafeCoerce# x
+{-# INLINE happyOut27 #-}
+happyIn28 :: t28 -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn28 x = unsafeCoerce# x
+{-# INLINE happyIn28 #-}
+happyOut28 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> t28
+happyOut28 x = unsafeCoerce# x
+{-# INLINE happyOut28 #-}
+happyIn29 :: ([Expr]) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn29 x = unsafeCoerce# x
+{-# INLINE happyIn29 #-}
+happyOut29 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> ([Expr])
+happyOut29 x = unsafeCoerce# x
+{-# INLINE happyOut29 #-}
+happyIn30 :: t30 -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn30 x = unsafeCoerce# x
+{-# INLINE happyIn30 #-}
+happyOut30 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> t30
+happyOut30 x = unsafeCoerce# x
+{-# INLINE happyOut30 #-}
+happyIn31 :: ([(Name, Expr)]) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn31 x = unsafeCoerce# x
+{-# INLINE happyIn31 #-}
+happyOut31 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> ([(Name, Expr)])
+happyOut31 x = unsafeCoerce# x
+{-# INLINE happyOut31 #-}
+happyIn32 :: ([(Name, Expr)]) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn32 x = unsafeCoerce# x
+{-# INLINE happyIn32 #-}
+happyOut32 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> ([(Name, Expr)])
+happyOut32 x = unsafeCoerce# x
+{-# INLINE happyOut32 #-}
+happyIn33 :: ((Name, Expr)) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn33 x = unsafeCoerce# x
+{-# INLINE happyIn33 #-}
+happyOut33 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> ((Name, Expr))
+happyOut33 x = unsafeCoerce# x
+{-# INLINE happyOut33 #-}
+happyIn34 :: t34 -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn34 x = unsafeCoerce# x
+{-# INLINE happyIn34 #-}
+happyOut34 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> t34
+happyOut34 x = unsafeCoerce# x
+{-# INLINE happyOut34 #-}
+happyIn35 :: t35 -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn35 x = unsafeCoerce# x
+{-# INLINE happyIn35 #-}
+happyOut35 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> t35
+happyOut35 x = unsafeCoerce# x
+{-# INLINE happyOut35 #-}
+happyIn36 :: ([TypedBindings]) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn36 x = unsafeCoerce# x
+{-# INLINE happyIn36 #-}
+happyOut36 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> ([TypedBindings])
+happyOut36 x = unsafeCoerce# x
+{-# INLINE happyOut36 #-}
+happyIn37 :: (TypedBindings) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn37 x = unsafeCoerce# x
+{-# INLINE happyIn37 #-}
+happyOut37 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (TypedBindings)
+happyOut37 x = unsafeCoerce# x
+{-# INLINE happyOut37 #-}
+happyIn38 :: ([TypedBinding]) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn38 x = unsafeCoerce# x
+{-# INLINE happyIn38 #-}
+happyOut38 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> ([TypedBinding])
+happyOut38 x = unsafeCoerce# x
+{-# INLINE happyOut38 #-}
+happyIn39 :: ([TypedBinding]) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn39 x = unsafeCoerce# x
+{-# INLINE happyIn39 #-}
+happyOut39 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> ([TypedBinding])
+happyOut39 x = unsafeCoerce# x
+{-# INLINE happyOut39 #-}
+happyIn40 :: (TypedBinding) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn40 x = unsafeCoerce# x
+{-# INLINE happyIn40 #-}
+happyOut40 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (TypedBinding)
+happyOut40 x = unsafeCoerce# x
+{-# INLINE happyOut40 #-}
+happyIn41 :: ([LamBinding]) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn41 x = unsafeCoerce# x
+{-# INLINE happyIn41 #-}
+happyOut41 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> ([LamBinding])
+happyOut41 x = unsafeCoerce# x
+{-# INLINE happyOut41 #-}
+happyIn42 :: (([LamBinding], Hiding)) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn42 x = unsafeCoerce# x
+{-# INLINE happyIn42 #-}
+happyOut42 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (([LamBinding], Hiding))
+happyOut42 x = unsafeCoerce# x
+{-# INLINE happyOut42 #-}
+happyIn43 :: ([Either Hiding LamBinding]) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn43 x = unsafeCoerce# x
+{-# INLINE happyIn43 #-}
+happyOut43 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> ([Either Hiding LamBinding])
+happyOut43 x = unsafeCoerce# x
+{-# INLINE happyOut43 #-}
+happyIn44 :: ([LamBinding]) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn44 x = unsafeCoerce# x
+{-# INLINE happyIn44 #-}
+happyOut44 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> ([LamBinding])
+happyOut44 x = unsafeCoerce# x
+{-# INLINE happyOut44 #-}
+happyIn45 :: ([LamBinding]) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn45 x = unsafeCoerce# x
+{-# INLINE happyIn45 #-}
+happyOut45 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> ([LamBinding])
+happyOut45 x = unsafeCoerce# x
+{-# INLINE happyOut45 #-}
+happyIn46 :: ((Maybe AsName, ImportDirective)) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn46 x = unsafeCoerce# x
+{-# INLINE happyIn46 #-}
+happyOut46 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> ((Maybe AsName, ImportDirective))
+happyOut46 x = unsafeCoerce# x
+{-# INLINE happyOut46 #-}
+happyIn47 :: (ImportDirective) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn47 x = unsafeCoerce# x
+{-# INLINE happyIn47 #-}
+happyOut47 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (ImportDirective)
+happyOut47 x = unsafeCoerce# x
+{-# INLINE happyOut47 #-}
+happyIn48 :: (ImportDirective) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn48 x = unsafeCoerce# x
+{-# INLINE happyIn48 #-}
+happyOut48 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (ImportDirective)
+happyOut48 x = unsafeCoerce# x
+{-# INLINE happyOut48 #-}
+happyIn49 :: (ImportDirective) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn49 x = unsafeCoerce# x
+{-# INLINE happyIn49 #-}
+happyOut49 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (ImportDirective)
+happyOut49 x = unsafeCoerce# x
+{-# INLINE happyOut49 #-}
+happyIn50 :: (UsingOrHiding) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn50 x = unsafeCoerce# x
+{-# INLINE happyIn50 #-}
+happyOut50 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (UsingOrHiding)
+happyOut50 x = unsafeCoerce# x
+{-# INLINE happyOut50 #-}
+happyIn51 :: ([Renaming]) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn51 x = unsafeCoerce# x
+{-# INLINE happyIn51 #-}
+happyOut51 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> ([Renaming])
+happyOut51 x = unsafeCoerce# x
+{-# INLINE happyOut51 #-}
+happyIn52 :: ([Renaming]) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn52 x = unsafeCoerce# x
+{-# INLINE happyIn52 #-}
+happyOut52 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> ([Renaming])
+happyOut52 x = unsafeCoerce# x
+{-# INLINE happyOut52 #-}
+happyIn53 :: (Renaming) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn53 x = unsafeCoerce# x
+{-# INLINE happyIn53 #-}
+happyOut53 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (Renaming)
+happyOut53 x = unsafeCoerce# x
+{-# INLINE happyOut53 #-}
+happyIn54 :: (ImportedName) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn54 x = unsafeCoerce# x
+{-# INLINE happyIn54 #-}
+happyOut54 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (ImportedName)
+happyOut54 x = unsafeCoerce# x
+{-# INLINE happyOut54 #-}
+happyIn55 :: (ImportedName) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn55 x = unsafeCoerce# x
+{-# INLINE happyIn55 #-}
+happyOut55 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (ImportedName)
+happyOut55 x = unsafeCoerce# x
+{-# INLINE happyOut55 #-}
+happyIn56 :: ([ImportedName]) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn56 x = unsafeCoerce# x
+{-# INLINE happyIn56 #-}
+happyOut56 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> ([ImportedName])
+happyOut56 x = unsafeCoerce# x
+{-# INLINE happyOut56 #-}
+happyIn57 :: t57 -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn57 x = unsafeCoerce# x
+{-# INLINE happyIn57 #-}
+happyOut57 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> t57
+happyOut57 x = unsafeCoerce# x
+{-# INLINE happyOut57 #-}
+happyIn58 :: (LHS) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn58 x = unsafeCoerce# x
+{-# INLINE happyIn58 #-}
+happyOut58 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (LHS)
+happyOut58 x = unsafeCoerce# x
+{-# INLINE happyOut58 #-}
+happyIn59 :: ([Pattern]) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn59 x = unsafeCoerce# x
+{-# INLINE happyIn59 #-}
+happyOut59 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> ([Pattern])
+happyOut59 x = unsafeCoerce# x
+{-# INLINE happyOut59 #-}
+happyIn60 :: ([Expr]) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn60 x = unsafeCoerce# x
+{-# INLINE happyIn60 #-}
+happyOut60 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> ([Expr])
+happyOut60 x = unsafeCoerce# x
+{-# INLINE happyOut60 #-}
+happyIn61 :: (WhereClause) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn61 x = unsafeCoerce# x
+{-# INLINE happyIn61 #-}
+happyOut61 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (WhereClause)
+happyOut61 x = unsafeCoerce# x
+{-# INLINE happyOut61 #-}
+happyIn62 :: ([Declaration]) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn62 x = unsafeCoerce# x
+{-# INLINE happyIn62 #-}
+happyOut62 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> ([Declaration])
+happyOut62 x = unsafeCoerce# x
+{-# INLINE happyOut62 #-}
+happyIn63 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn63 x = unsafeCoerce# x
+{-# INLINE happyIn63 #-}
+happyOut63 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (Declaration)
+happyOut63 x = unsafeCoerce# x
+{-# INLINE happyOut63 #-}
+happyIn64 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn64 x = unsafeCoerce# x
+{-# INLINE happyIn64 #-}
+happyOut64 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (Declaration)
+happyOut64 x = unsafeCoerce# x
+{-# INLINE happyOut64 #-}
+happyIn65 :: (RHS) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn65 x = unsafeCoerce# x
+{-# INLINE happyIn65 #-}
+happyOut65 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (RHS)
+happyOut65 x = unsafeCoerce# x
+{-# INLINE happyOut65 #-}
+happyIn66 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn66 x = unsafeCoerce# x
+{-# INLINE happyIn66 #-}
+happyOut66 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (Declaration)
+happyOut66 x = unsafeCoerce# x
+{-# INLINE happyOut66 #-}
+happyIn67 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn67 x = unsafeCoerce# x
+{-# INLINE happyIn67 #-}
+happyOut67 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (Declaration)
+happyOut67 x = unsafeCoerce# x
+{-# INLINE happyOut67 #-}
+happyIn68 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn68 x = unsafeCoerce# x
+{-# INLINE happyIn68 #-}
+happyOut68 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (Declaration)
+happyOut68 x = unsafeCoerce# x
+{-# INLINE happyOut68 #-}
+happyIn69 :: ([Declaration]) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn69 x = unsafeCoerce# x
+{-# INLINE happyIn69 #-}
+happyOut69 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> ([Declaration])
+happyOut69 x = unsafeCoerce# x
+{-# INLINE happyOut69 #-}
+happyIn70 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn70 x = unsafeCoerce# x
+{-# INLINE happyIn70 #-}
+happyOut70 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (Declaration)
+happyOut70 x = unsafeCoerce# x
+{-# INLINE happyOut70 #-}
+happyIn71 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn71 x = unsafeCoerce# x
+{-# INLINE happyIn71 #-}
+happyOut71 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (Declaration)
+happyOut71 x = unsafeCoerce# x
+{-# INLINE happyOut71 #-}
+happyIn72 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn72 x = unsafeCoerce# x
+{-# INLINE happyIn72 #-}
+happyOut72 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (Declaration)
+happyOut72 x = unsafeCoerce# x
+{-# INLINE happyOut72 #-}
+happyIn73 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn73 x = unsafeCoerce# x
+{-# INLINE happyIn73 #-}
+happyOut73 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (Declaration)
+happyOut73 x = unsafeCoerce# x
+{-# INLINE happyOut73 #-}
+happyIn74 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn74 x = unsafeCoerce# x
+{-# INLINE happyIn74 #-}
+happyOut74 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (Declaration)
+happyOut74 x = unsafeCoerce# x
+{-# INLINE happyOut74 #-}
+happyIn75 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn75 x = unsafeCoerce# x
+{-# INLINE happyIn75 #-}
+happyOut75 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (Declaration)
+happyOut75 x = unsafeCoerce# x
+{-# INLINE happyOut75 #-}
+happyIn76 :: ([Expr]) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn76 x = unsafeCoerce# x
+{-# INLINE happyIn76 #-}
+happyOut76 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> ([Expr])
+happyOut76 x = unsafeCoerce# x
+{-# INLINE happyOut76 #-}
+happyIn77 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn77 x = unsafeCoerce# x
+{-# INLINE happyIn77 #-}
+happyOut77 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (Declaration)
+happyOut77 x = unsafeCoerce# x
+{-# INLINE happyOut77 #-}
+happyIn78 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn78 x = unsafeCoerce# x
+{-# INLINE happyIn78 #-}
+happyOut78 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (Declaration)
+happyOut78 x = unsafeCoerce# x
+{-# INLINE happyOut78 #-}
+happyIn79 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn79 x = unsafeCoerce# x
+{-# INLINE happyIn79 #-}
+happyOut79 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (Declaration)
+happyOut79 x = unsafeCoerce# x
+{-# INLINE happyOut79 #-}
+happyIn80 :: ([Declaration]) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn80 x = unsafeCoerce# x
+{-# INLINE happyIn80 #-}
+happyOut80 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> ([Declaration])
+happyOut80 x = unsafeCoerce# x
+{-# INLINE happyOut80 #-}
+happyIn81 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn81 x = unsafeCoerce# x
+{-# INLINE happyIn81 #-}
+happyOut81 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (Declaration)
+happyOut81 x = unsafeCoerce# x
+{-# INLINE happyOut81 #-}
+happyIn82 :: (Declaration) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn82 x = unsafeCoerce# x
+{-# INLINE happyIn82 #-}
+happyOut82 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (Declaration)
+happyOut82 x = unsafeCoerce# x
+{-# INLINE happyOut82 #-}
+happyIn83 :: (Pragma) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn83 x = unsafeCoerce# x
+{-# INLINE happyIn83 #-}
+happyOut83 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (Pragma)
+happyOut83 x = unsafeCoerce# x
+{-# INLINE happyOut83 #-}
+happyIn84 :: (Pragma) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn84 x = unsafeCoerce# x
+{-# INLINE happyIn84 #-}
+happyOut84 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (Pragma)
+happyOut84 x = unsafeCoerce# x
+{-# INLINE happyOut84 #-}
+happyIn85 :: (Pragma) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn85 x = unsafeCoerce# x
+{-# INLINE happyIn85 #-}
+happyOut85 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (Pragma)
+happyOut85 x = unsafeCoerce# x
+{-# INLINE happyOut85 #-}
+happyIn86 :: (Pragma) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn86 x = unsafeCoerce# x
+{-# INLINE happyIn86 #-}
+happyOut86 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (Pragma)
+happyOut86 x = unsafeCoerce# x
+{-# INLINE happyOut86 #-}
+happyIn87 :: (Pragma) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn87 x = unsafeCoerce# x
+{-# INLINE happyIn87 #-}
+happyOut87 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (Pragma)
+happyOut87 x = unsafeCoerce# x
+{-# INLINE happyOut87 #-}
+happyIn88 :: (Pragma) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn88 x = unsafeCoerce# x
+{-# INLINE happyIn88 #-}
+happyOut88 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (Pragma)
+happyOut88 x = unsafeCoerce# x
+{-# INLINE happyOut88 #-}
+happyIn89 :: (Pragma) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn89 x = unsafeCoerce# x
+{-# INLINE happyIn89 #-}
+happyOut89 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (Pragma)
+happyOut89 x = unsafeCoerce# x
+{-# INLINE happyOut89 #-}
+happyIn90 :: (Pragma) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn90 x = unsafeCoerce# x
+{-# INLINE happyIn90 #-}
+happyOut90 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (Pragma)
+happyOut90 x = unsafeCoerce# x
+{-# INLINE happyOut90 #-}
+happyIn91 :: (Pragma) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn91 x = unsafeCoerce# x
+{-# INLINE happyIn91 #-}
+happyOut91 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> (Pragma)
+happyOut91 x = unsafeCoerce# x
+{-# INLINE happyOut91 #-}
+happyIn92 :: ([TypeSignature]) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn92 x = unsafeCoerce# x
+{-# INLINE happyIn92 #-}
+happyOut92 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> ([TypeSignature])
+happyOut92 x = unsafeCoerce# x
+{-# INLINE happyOut92 #-}
+happyIn93 :: ([TypeSignature]) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn93 x = unsafeCoerce# x
+{-# INLINE happyIn93 #-}
+happyOut93 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> ([TypeSignature])
+happyOut93 x = unsafeCoerce# x
+{-# INLINE happyOut93 #-}
+happyIn94 :: ([Constructor]) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn94 x = unsafeCoerce# x
+{-# INLINE happyIn94 #-}
+happyOut94 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> ([Constructor])
+happyOut94 x = unsafeCoerce# x
+{-# INLINE happyOut94 #-}
+happyIn95 :: ([Declaration]) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn95 x = unsafeCoerce# x
+{-# INLINE happyIn95 #-}
+happyOut95 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> ([Declaration])
+happyOut95 x = unsafeCoerce# x
+{-# INLINE happyOut95 #-}
+happyIn96 :: ([Declaration]) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn96 x = unsafeCoerce# x
+{-# INLINE happyIn96 #-}
+happyOut96 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> ([Declaration])
+happyOut96 x = unsafeCoerce# x
+{-# INLINE happyOut96 #-}
+happyIn97 :: ([Declaration]) -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyIn97 x = unsafeCoerce# x
+{-# INLINE happyIn97 #-}
+happyOut97 :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> ([Declaration])
+happyOut97 x = unsafeCoerce# x
+{-# INLINE happyOut97 #-}
+happyInTok :: Token -> (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57)
+happyInTok x = unsafeCoerce# x
+{-# INLINE happyInTok #-}
+happyOutTok :: (HappyAbsSyn t11 t12 t13 t25 t28 t30 t34 t35 t57) -> Token
+happyOutTok x = unsafeCoerce# x
+{-# INLINE happyOutTok #-}
+
+
+happyActOffsets :: HappyAddr
+happyActOffsets = HappyA# "\x00\x00\xa8\x02\x3e\x03\x00\x00\x66\x01\xa9\x00\x1c\x03\x35\x03\x00\x00\x35\x03\x28\x03\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00\x00\x00\x67\x00\x2f\x02\xa8\x02\x21\x03\x00\x00\x76\x00\x31\x03\x1a\x03\x00\x00\x00\x00\xd0\x01\x00\x00\xe0\x02\x00\x00\x00\x00\xd0\x01\x13\x02\xf7\x01\x00\x00\x00\x00\x00\x00\x0e\x03\xc4\x00\x22\x03\x14\x03\x0d\x03\xfb\x02\x04\x03\x00\x00\xfc\x02\xf6\x02\x00\x00\x00\x00\x00\x00\xd0\x01\xa8\x02\x00\x00\xf9\x02\xd0\x01\x00\x00\x8c\x02\x70\x02\x00\x00\xdb\x01\xbf\x01\x54\x02\xf9\x02\xe8\x02\xec\x02\x1e\x03\x00\x00\xc4\x02\xc4\x02\x00\x00\x00\x00\x00\x00\x00\x00\x54\x02\xc4\x02\xe0\x02\x00\x00\x00\x00\xf8\x02\xf8\x02\x00\x00\xf8\x02\x00\x00\x00\x00\x7e\x00\x13\x01\x13\x01\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe2\x02\xdc\x02\x00\x00\x00\x00\x28\x01\x97\x00\xe0\x02\x13\x01\x00\x00\xf3\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe5\x02\x00\x00\x00\x00\xc4\x02\x54\x02\xea\x02\xdf\x02\xd4\x02\x00\x00\xde\x02\x00\x00\x00\x00\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x54\x02\x54\x02\xce\x02\x00\x00\xd8\x02\x00\x00\x00\x00\x00\x00\xc3\x02\x00\x00\x54\x02\xa3\x01\xe1\x00\x00\x00\x97\x00\xe0\x02\x12\x02\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x02\x00\x00\xca\x02\xc7\x02\xc5\x02\xa7\x02\xb4\x02\x28\x01\xe7\x02\x28\x01\xc4\x02\xb1\x02\xb0\x02\xac\x02\x00\x00\x00\x00\xab\x02\x00\x00\xc2\x02\x00\x00\x12\x02\x00\x00\xd3\x02\x05\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x00\xbc\x02\x00\x00\xf3\xff\xdb\x02\xb2\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xae\x02\xae\x02\xa5\x00\x9e\x02\x9e\x02\x9e\x02\xe5\xff\xad\x02\x93\x02\x93\x02\x93\x02\xa6\x02\xa6\x02\xa6\x02\x98\x02\x23\x03\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x92\x02\x91\x02\x90\x02\x90\x02\x90\x02\xc0\x02\xe0\x02\x00\x00\x00\x00\x00\x00\xf6\xff\x00\x00\xf6\xff\xf6\xff\x87\x02\x00\x00\x28\x01\x28\x01\x28\x01\x28\x01\x86\x02\x00\x00\x00\x00\x85\x00\x54\x02\x00\x00\x54\x02\x54\x02\xa3\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x02\x89\x02\x00\x00\x7b\x02\x82\x02\x74\x02\x7a\x02\x80\x02\x9b\x02\x00\x00\x00\x00\x6d\x02\x00\x00\x00\x00\x00\x00\x75\x02\x60\x02\x60\x02\x84\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x02\x52\x02\x28\x01\x0f\x00\x62\x02\x5f\x02\x5b\x02\x58\x02\xf6\xff\x00\x00\x00\x00\x00\x00\x3b\x02\xe0\x02\x00\x00\x34\x02\x00\x00\x2a\x02\x27\x02\x1b\x02\x22\x02\x1a\x02\x00\x00\x16\x02\x15\x02\x0e\x02\x00\x00\x00\x00\x03\x02\xe1\x00\x54\x02\x54\x02\x54\x02\x18\x02\x54\x02\x0d\x02\x30\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x01\x00\x00\x0b\x02\x54\x02\x12\x02\x00\x00\x24\x02\x1e\x02\x1d\x02\x1e\x00\xf5\x01\xee\x01\x00\x00\x00\x00\xda\x01\x00\x00\x00\x00\x00\x00\xcb\x01\x00\x00\xeb\x01\xeb\x01\xeb\x01\x00\x00\x12\x02\x00\x00\x00\x00\xd6\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x01\x72\x00\x00\x00\x00\x00"#
+
+happyGotoOffsets :: HappyAddr
+happyGotoOffsets = HappyA# "\x4b\x00\x08\x05\x26\x00\xff\x01\xfd\x01\xaa\x00\x00\x00\xfa\x01\x00\x00\xf4\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x02\xf9\x04\x00\x00\x00\x00\xff\x00\x0d\x00\x00\x00\x00\x00\x00\x00\xe3\x00\x00\x00\xd9\x00\x00\x00\x00\x00\x00\x03\x94\x03\x7b\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x03\xea\x04\x00\x00\x00\x00\x2a\x03\x00\x00\xe9\x03\xda\x03\x00\x00\xdb\x04\xcc\x04\xbd\x04\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\xcb\x03\xbc\x03\x00\x00\x00\x00\x00\x00\x00\x00\xae\x04\x17\x05\x1b\x00\x00\x00\x00\x00\x37\x00\x2c\x00\x00\x00\x03\x00\x00\x00\x00\x00\x8a\x02\x6e\x02\x4d\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe1\x01\x00\x00\x00\x00\x00\x00\x20\x03\x11\x03\x3f\x00\x40\x02\x00\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfa\x02\x9f\x04\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x03\x00\x00\x00\x00\x90\x04\x81\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x72\x04\xd3\x00\x31\x00\x00\x00\x1e\x01\x2b\x00\x07\x05\x00\x00\x00\x00\x00\x00\x00\x00\xbc\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x01\xde\x01\x0c\x03\x00\x00\x0a\x03\xad\x03\x00\x00\x00\x00\xd3\x01\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x98\x01\x00\x00\xce\x00\xc3\x00\x8b\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd9\x01\xd4\x01\x00\x00\x00\x00\x9d\x01\x92\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x17\x00\x21\x01\xbd\x01\xb5\x01\xb4\x01\x5b\x01\x16\x00\x57\x01\x55\x01\x54\x01\x0c\x00\x0b\x00\x0a\x00\x23\x01\x00\x00\x00\x00\x00\x00\x49\x03\x00\x00\x00\x00\x00\x00\x46\x01\x11\x01\x08\x01\xfd\x00\xea\x00\x3a\x01\x00\x00\x00\x00\x00\x00\x2b\x02\x00\x00\xd7\x01\xbe\x01\x00\x00\x00\x00\xcd\x02\x79\x02\x57\x02\x1c\x02\xee\x00\x00\x00\x00\x00\xb5\x00\x63\x04\x00\x00\x54\x04\x45\x04\x87\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x00\x00\x00\xd8\x00\x00\x00\x00\x00\x00\x00\xba\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\xff\xac\x00\xa0\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x8c\x00\xc8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\xf6\x00\x00\x00\x00\x00\x00\x00\x55\x00\x8e\x00\x00\x00\x34\x00\x00\x00\x00\x00\x32\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\xfa\xff\x00\x00\x00\x00\x00\x00\x07\x00\x21\x00\x36\x04\x27\x04\x18\x04\x04\x00\x09\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x08\x00\xfa\x03\x83\x01\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\xff\x00\x00\x02\x00\x12\x00\x11\x00\x00\x00\x09\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x1d\x00\x00\x00\x00\x00"#
+
+happyDefActions :: HappyAddr
+happyDefActions = HappyA# "\xfa\xff\x00\x00\xbc\xff\x00\x00\xfc\xff\x00\x00\x00\x00\xbc\xff\xb9\xff\xbc\xff\xaf\xff\x96\xff\x00\x00\xa2\xff\xa1\xff\x9f\xff\x9e\xff\x00\x00\x99\xff\x00\x00\x00\x00\x81\xff\x7f\xff\xbc\xff\x00\x00\x92\xff\x91\xff\x00\x00\x90\xff\x00\x00\x93\xff\x94\xff\x00\x00\x00\x00\x00\x00\xb1\xff\xb0\xff\x95\xff\x00\x00\xaf\xff\x00\x00\x00\x00\x9f\xff\x00\x00\x7c\xff\x8c\xff\x00\x00\x00\x00\x8b\xff\xad\xff\x6b\xff\x71\xff\x00\x00\x9b\xff\x75\xff\x72\xff\xac\xff\x00\x00\x00\x00\x89\xff\x00\x00\x00\x00\x00\x00\x00\x00\x87\xff\x00\x00\x00\x00\x80\xff\x00\x00\x00\x00\x82\xff\xa5\xff\x9d\xff\x97\xff\x00\x00\x00\x00\x00\x00\xbb\xff\xba\xff\xbc\xff\xbc\xff\x21\xff\xbc\xff\x1c\xff\x1b\xff\x00\x00\x00\x00\x00\x00\x00\x00\xfb\xff\xf9\xff\xf8\xff\xf7\xff\xf6\xff\xf5\xff\xf4\xff\xf3\xff\xf2\xff\xf1\xff\xf0\xff\xef\xff\xee\xff\xed\xff\xec\xff\xeb\xff\xea\xff\xe9\xff\xe8\xff\xe7\xff\xe6\xff\xe5\xff\xe4\xff\xe3\xff\xe2\xff\xe1\xff\xe0\xff\xdf\xff\xde\xff\xdd\xff\xdc\xff\xdb\xff\xda\xff\xd9\xff\xd8\xff\xd7\xff\xd6\xff\xd5\xff\xd4\xff\xd3\xff\xd2\xff\xd1\xff\xd0\xff\xcf\xff\xce\xff\xcd\xff\xcc\xff\xcb\xff\xca\xff\xc9\xff\xc8\xff\xc7\xff\xc6\xff\xc5\xff\xc4\xff\xc3\xff\xc2\xff\xc1\xff\xc0\xff\xbf\xff\xbe\xff\xbd\xff\xa8\xff\x00\x00\xaf\xff\xae\xff\x6c\xff\x61\xff\x28\xff\x00\x00\xb8\xff\x00\x00\x20\xff\x1f\xff\x8a\xff\xa0\xff\x00\x00\xa3\xff\xa9\xff\x99\xff\x00\x00\xbc\xff\x00\x00\x00\x00\x86\xff\x85\xff\x76\xff\xa4\xff\x00\x00\x6f\xff\x70\xff\x74\xff\x9c\xff\x73\xff\x7e\xff\x8d\xff\x00\x00\x7d\xff\x8f\xff\x00\x00\x00\x00\x00\x00\x77\xff\x78\xff\x7a\xff\x7b\xff\x6a\xff\x00\x00\x88\xff\x00\x00\x00\x00\xbc\xff\x9a\xff\x61\xff\x28\xff\x61\xff\x24\xff\x69\xff\x67\xff\x65\xff\x62\xff\x63\xff\x00\x00\x00\x00\x00\x00\x61\xff\x00\x00\x6c\xff\x00\x00\x6c\xff\x00\x00\x00\x00\x00\x00\xa8\xff\xa7\xff\x14\xff\x00\x00\x6e\xff\xbc\xff\x6d\xff\x61\xff\x66\xff\xb3\xff\x00\x00\x56\xff\x64\xff\x29\xff\x27\xff\x23\xff\x00\x00\xbc\xff\xb5\xff\xaf\xff\x4e\xff\x36\xff\x04\xff\x49\xff\x47\xff\x46\xff\x45\xff\x44\xff\x48\xff\x43\xff\x42\xff\x41\xff\x40\xff\x3f\xff\x3e\xff\x3c\xff\x3d\xff\x3b\xff\x3a\xff\x1d\xff\x1a\xff\x18\xff\x16\xff\x17\xff\x15\xff\x19\xff\xbc\xff\xbc\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xff\x00\x00\x00\x00\x00\x00\xbc\xff\xbc\xff\xbc\xff\x50\xff\x00\x00\x83\xff\x84\xff\x00\x00\x8e\xff\x79\xff\x00\x00\xa8\xff\x00\x00\x00\x00\x00\x00\x4e\xff\x00\x00\x2c\xff\x2d\xff\x2e\xff\x00\x00\xb2\xff\x00\x00\x00\x00\x00\x00\x2f\xff\x6c\xff\x6c\xff\x6c\xff\x6c\xff\x00\x00\x2a\xff\x2b\xff\x4c\xff\x00\x00\x52\xff\x00\x00\x00\x00\x00\x00\x08\xff\xb6\xff\xb7\xff\xb4\xff\x58\xff\x54\xff\x00\x00\x55\xff\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xff\x00\x00\xb3\xff\x68\xff\x00\x00\x06\xff\x1e\xff\x0e\xff\xbc\xff\x00\x00\x00\x00\xb3\xff\x5e\xff\x5a\xff\x5f\xff\x57\xff\x60\xff\x00\x00\x05\xff\x39\xff\x4d\xff\x37\xff\x38\xff\xbc\xff\x00\x00\x6c\xff\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xff\xaa\xff\x32\xff\x31\xff\x30\xff\x50\xff\x98\xff\x51\xff\xa8\xff\xa6\xff\x00\x00\xa8\xff\x00\x00\x00\x00\x00\x00\x0f\xff\x00\x00\xa8\xff\x00\x00\x4f\xff\xab\xff\x00\x00\xbc\xff\x00\x00\x00\x00\x00\x00\xbc\xff\x00\x00\x00\x00\x00\x00\x4b\xff\x53\xff\x5d\xff\x5b\xff\x59\xff\x00\x00\x07\xff\xbc\xff\x00\x00\x61\xff\x22\xff\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xff\x00\x00\x0b\xff\x11\xff\x00\x00\x12\xff\x13\xff\x10\xff\x00\x00\x0d\xff\xbc\xff\xbc\xff\xbc\xff\x26\xff\x61\xff\x4a\xff\x25\xff\x00\x00\x0a\xff\x35\xff\x34\xff\x33\xff\x0c\xff\xbc\xff\x00\x00\x09\xff"#
+
+happyCheck :: HappyAddr
+happyCheck = HappyA# "\xff\xff\x03\x00\x03\x00\x0a\x00\x03\x00\x03\x00\x03\x00\x03\x00\x05\x00\x03\x00\x10\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x0a\x00\x03\x00\x0e\x00\x03\x00\x03\x00\x08\x00\x03\x00\x33\x00\x03\x00\x03\x00\x03\x00\x29\x00\x0a\x00\x00\x00\x3a\x00\x06\x00\x2b\x00\x2f\x00\x06\x00\x03\x00\x0a\x00\x0b\x00\x0a\x00\x07\x00\x03\x00\x04\x00\x05\x00\x19\x00\x1a\x00\x1b\x00\x03\x00\x3a\x00\x03\x00\x39\x00\x18\x00\x03\x00\x0a\x00\x0b\x00\x0a\x00\x07\x00\x2a\x00\x03\x00\x11\x00\x2e\x00\x2f\x00\x30\x00\x3a\x00\x39\x00\x06\x00\x10\x00\x18\x00\x10\x00\x0a\x00\x0b\x00\x1a\x00\x1b\x00\x0a\x00\x0b\x00\x00\x00\x01\x00\x4a\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x36\x00\x37\x00\x39\x00\x18\x00\x57\x00\x5b\x00\x5b\x00\x59\x00\x5a\x00\x59\x00\x5a\x00\x59\x00\x5a\x00\x59\x00\x59\x00\x59\x00\x59\x00\x59\x00\x59\x00\x56\x00\x56\x00\x58\x00\x58\x00\x57\x00\x56\x00\x56\x00\x56\x00\x34\x00\x4a\x00\x46\x00\x00\x00\x38\x00\x39\x00\x3a\x00\x4a\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x4a\x00\x47\x00\x48\x00\x49\x00\x46\x00\x08\x00\x4c\x00\x03\x00\x4e\x00\x35\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x0a\x00\x0b\x00\x0e\x00\x2d\x00\x0a\x00\x0a\x00\x30\x00\x0a\x00\x0b\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x09\x00\x0a\x00\x0b\x00\x29\x00\x0d\x00\x17\x00\x18\x00\x31\x00\x36\x00\x33\x00\x0a\x00\x0a\x00\x3a\x00\x08\x00\x34\x00\x45\x00\x07\x00\x08\x00\x48\x00\x0e\x00\x1c\x00\x4b\x00\x0a\x00\x0e\x00\x3a\x00\x3b\x00\x22\x00\x34\x00\x31\x00\x32\x00\x33\x00\x38\x00\x39\x00\x3a\x00\x08\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x0a\x00\x47\x00\x48\x00\x49\x00\x3a\x00\x31\x00\x4c\x00\x33\x00\x4e\x00\x08\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x0a\x00\x0b\x00\x3a\x00\x3b\x00\x38\x00\x0a\x00\x0a\x00\x0b\x00\x0a\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x37\x00\x0a\x00\x2a\x00\x45\x00\x0d\x00\x18\x00\x48\x00\x2f\x00\x31\x00\x4b\x00\x33\x00\x4d\x00\x0a\x00\x4f\x00\x07\x00\x08\x00\x2e\x00\x2f\x00\x30\x00\x55\x00\x0a\x00\x0e\x00\x1f\x00\x0d\x00\x0e\x00\x24\x00\x23\x00\x34\x00\x25\x00\x28\x00\x27\x00\x38\x00\x39\x00\x3a\x00\x11\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x11\x00\x47\x00\x48\x00\x49\x00\x1e\x00\x1f\x00\x4c\x00\x36\x00\x4e\x00\x11\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x00\x00\x01\x00\x0a\x00\x0b\x00\x0c\x00\x05\x00\x06\x00\x07\x00\x08\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x0a\x00\x0b\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x23\x00\x3a\x00\x3b\x00\x26\x00\x27\x00\x17\x00\x18\x00\x2b\x00\x2b\x00\x2c\x00\x10\x00\x2e\x00\x35\x00\x31\x00\x31\x00\x33\x00\x33\x00\x09\x00\x09\x00\x36\x00\x09\x00\x38\x00\x3a\x00\x3a\x00\x3b\x00\x0a\x00\x3d\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x01\x00\x2b\x00\x2c\x00\x2d\x00\x05\x00\x06\x00\x07\x00\x08\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x0a\x00\x0a\x00\x01\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x23\x00\x0a\x00\x0a\x00\x26\x00\x27\x00\x0d\x00\x0e\x00\x3b\x00\x2b\x00\x2c\x00\x11\x00\x2e\x00\x0a\x00\x36\x00\x31\x00\x0d\x00\x33\x00\x03\x00\x19\x00\x1a\x00\x1b\x00\x38\x00\x01\x00\x3a\x00\x3b\x00\x06\x00\x3d\x00\x0a\x00\x23\x00\x10\x00\x0d\x00\x0e\x00\x27\x00\x1f\x00\x0a\x00\x2d\x00\x2b\x00\x2c\x00\x11\x00\x2e\x00\x26\x00\x27\x00\x31\x00\x10\x00\x33\x00\x34\x00\x19\x00\x1a\x00\x1b\x00\x03\x00\x01\x00\x3a\x00\x3b\x00\x2b\x00\x3d\x00\x03\x00\x23\x00\x02\x00\x01\x00\x31\x00\x27\x00\x33\x00\x24\x00\x3a\x00\x2b\x00\x2c\x00\x11\x00\x2e\x00\x3a\x00\x35\x00\x31\x00\x32\x00\x33\x00\x24\x00\x19\x00\x1a\x00\x1b\x00\x39\x00\x01\x00\x3a\x00\x3b\x00\x29\x00\x3d\x00\x24\x00\x23\x00\x09\x00\x0a\x00\x0b\x00\x27\x00\x0d\x00\x03\x00\x03\x00\x2b\x00\x2c\x00\x11\x00\x2e\x00\x0a\x00\x03\x00\x31\x00\x0d\x00\x33\x00\x34\x00\x19\x00\x1a\x00\x1b\x00\x24\x00\x01\x00\x3a\x00\x3b\x00\x03\x00\x3d\x00\x0a\x00\x23\x00\x2a\x00\x0d\x00\x0e\x00\x27\x00\x1f\x00\x24\x00\x3a\x00\x2b\x00\x2c\x00\x11\x00\x2e\x00\x26\x00\x27\x00\x31\x00\x32\x00\x33\x00\x39\x00\x19\x00\x1a\x00\x0a\x00\x0b\x00\x0c\x00\x3a\x00\x3b\x00\x39\x00\x3d\x00\x3c\x00\x23\x00\x39\x00\x39\x00\x01\x00\x27\x00\x0a\x00\x0b\x00\x0c\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x3c\x00\x30\x00\x31\x00\x0a\x00\x33\x00\x3c\x00\x0d\x00\x11\x00\x3c\x00\x0a\x00\x0b\x00\x3a\x00\x3b\x00\x30\x00\x3d\x00\x19\x00\x1a\x00\x1b\x00\x3c\x00\x01\x00\x15\x00\x16\x00\x17\x00\x18\x00\x1f\x00\x23\x00\x0a\x00\x0b\x00\x0c\x00\x27\x00\x24\x00\x26\x00\x27\x00\x2b\x00\x2c\x00\x11\x00\x2e\x00\x0a\x00\x29\x00\x31\x00\x0d\x00\x33\x00\x29\x00\x19\x00\x1a\x00\x29\x00\x3a\x00\x01\x00\x3a\x00\x3b\x00\x24\x00\x3d\x00\x0e\x00\x23\x00\x0a\x00\x0b\x00\x0c\x00\x27\x00\x1f\x00\x24\x00\x3a\x00\x2b\x00\x2c\x00\x11\x00\x2e\x00\x26\x00\x27\x00\x31\x00\x35\x00\x33\x00\x34\x00\x19\x00\x1a\x00\x0c\x00\x28\x00\x01\x00\x3a\x00\x3b\x00\x32\x00\x3d\x00\x3a\x00\x23\x00\x09\x00\x0a\x00\x0b\x00\x27\x00\x32\x00\x3a\x00\x28\x00\x2b\x00\x2c\x00\x11\x00\x2e\x00\x32\x00\x35\x00\x31\x00\x32\x00\x33\x00\x3a\x00\x19\x00\x1a\x00\x1b\x00\x04\x00\x01\x00\x3a\x00\x3b\x00\x30\x00\x3d\x00\x24\x00\x23\x00\x3c\x00\x3c\x00\x3c\x00\x27\x00\x3d\x00\x24\x00\x24\x00\x2b\x00\x2c\x00\x11\x00\x2e\x00\x0a\x00\x3a\x00\x31\x00\x0d\x00\x33\x00\x2a\x00\x19\x00\x1a\x00\x04\x00\x24\x00\x0e\x00\x3a\x00\x3b\x00\x39\x00\x3d\x00\x24\x00\x23\x00\x3c\x00\x39\x00\x03\x00\x27\x00\x1f\x00\x3c\x00\x3a\x00\x2b\x00\x2c\x00\x11\x00\x2e\x00\x26\x00\x27\x00\x31\x00\x31\x00\x33\x00\x31\x00\x19\x00\x1a\x00\x31\x00\x0b\x00\x3a\x00\x3a\x00\x3b\x00\x28\x00\x3d\x00\x34\x00\x23\x00\x0a\x00\x0b\x00\x28\x00\x27\x00\x34\x00\x2a\x00\x0a\x00\x2b\x00\x2c\x00\x0d\x00\x24\x00\x15\x00\x16\x00\x31\x00\x18\x00\x33\x00\x0a\x00\x30\x00\x0a\x00\x0d\x00\x3c\x00\x0d\x00\x3a\x00\x3b\x00\x24\x00\x3d\x00\x3c\x00\x1f\x00\x02\x00\x35\x00\x3a\x00\x23\x00\x24\x00\x25\x00\x2d\x00\x27\x00\x32\x00\x1f\x00\x0a\x00\x1f\x00\x28\x00\x0d\x00\x32\x00\x34\x00\x26\x00\x27\x00\x26\x00\x27\x00\x0a\x00\x0a\x00\x29\x00\x0d\x00\x0d\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x1f\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x26\x00\x27\x00\x34\x00\x1f\x00\x1f\x00\x29\x00\x3e\x00\x33\x00\x2d\x00\x25\x00\x25\x00\x27\x00\x27\x00\x0a\x00\x0b\x00\x24\x00\x3e\x00\x2f\x00\x0f\x00\x24\x00\x3e\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x24\x00\xff\xff\xff\xff\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x0a\x00\x0b\x00\xff\xff\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xff\xff\xff\xff\xff\xff\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x0a\x00\x0b\x00\xff\xff\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xff\xff\xff\xff\xff\xff\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\xff\xff\x22\x00\x0a\x00\x0b\x00\xff\xff\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xff\xff\xff\xff\xff\xff\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\xff\xff\x22\x00\x0a\x00\x0b\x00\xff\xff\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x15\x00\x16\x00\xff\xff\x18\x00\x0a\x00\x0b\x00\xff\xff\xff\xff\xff\xff\x0f\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x15\x00\x16\x00\xff\xff\x18\x00\x0a\x00\x0b\x00\xff\xff\xff\xff\xff\xff\x0f\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x15\x00\x16\x00\xff\xff\x18\x00\x0a\x00\x0b\x00\xff\xff\xff\xff\xff\xff\x0f\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x15\x00\x16\x00\xff\xff\x18\x00\x0a\x00\x0b\x00\xff\xff\xff\xff\xff\xff\x0f\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\x0a\x00\x0b\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x0b\x00\xff\xff\x1c\x00\x1d\x00\x1e\x00\x1f\x00\xff\xff\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x0b\x00\xff\xff\x1c\x00\x1d\x00\x1e\x00\x1f\x00\xff\xff\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x0b\x00\xff\xff\x1c\x00\x1d\x00\x1e\x00\x1f\x00\xff\xff\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x0b\x00\xff\xff\x1c\x00\x1d\x00\x1e\x00\x1f\x00\xff\xff\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x0b\x00\xff\xff\x1c\x00\x1d\x00\x1e\x00\x1f\x00\xff\xff\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x0b\x00\xff\xff\x1c\x00\x1d\x00\x1e\x00\x1f\x00\xff\xff\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x0b\x00\xff\xff\x1c\x00\x1d\x00\x1e\x00\x1f\x00\xff\xff\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x0b\x00\xff\xff\x1c\x00\x1d\x00\x1e\x00\x1f\x00\xff\xff\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x0b\x00\xff\xff\x1c\x00\x1d\x00\x1e\x00\x1f\x00\xff\xff\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x0b\x00\xff\xff\x1c\x00\x1d\x00\x1e\x00\x1f\x00\xff\xff\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x0b\x00\xff\xff\x1c\x00\x1d\x00\x1e\x00\x1f\x00\xff\xff\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x0b\x00\xff\xff\x1c\x00\x1d\x00\x1e\x00\x1f\x00\xff\xff\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x0b\x00\xff\xff\x1c\x00\x1d\x00\x1e\x00\x1f\x00\xff\xff\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x0b\x00\xff\xff\x1c\x00\x1d\x00\x1e\x00\x1f\x00\xff\xff\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x0b\x00\xff\xff\x1c\x00\x1d\x00\x1e\x00\x1f\x00\xff\xff\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x0b\x00\xff\xff\x1c\x00\x1d\x00\x1e\x00\x1f\x00\xff\xff\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x0b\x00\xff\xff\x1c\x00\x1d\x00\x1e\x00\x1f\x00\xff\xff\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x0b\x00\xff\xff\x1c\x00\x1d\x00\x1e\x00\x1f\x00\xff\xff\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x0b\x00\xff\xff\x1c\x00\x1d\x00\x1e\x00\x1f\x00\xff\xff\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#
+
+happyTable :: HappyAddr
+happyTable = HappyA# "\x00\x00\x8b\x01\xc7\x00\x96\x01\xad\x01\x4e\x01\x05\x00\x4e\x01\x9f\x00\x4e\x01\x99\x01\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x96\x01\x83\x01\x47\x01\xa6\x01\xa6\x01\x48\x01\x7d\x01\x41\x00\x2f\x01\x2f\x01\x2f\x01\x3d\x01\xab\x00\x40\x01\x24\x00\x9e\x01\x39\x00\x4d\x00\xae\x01\x94\x01\x0a\x00\x0b\x00\x96\x01\x95\x01\x05\x00\x06\x00\x07\x00\xac\x00\xad\x00\xae\x00\xa0\x00\x24\x00\x9d\x01\xab\x01\xa3\x00\xee\x00\x0a\x00\x0b\x00\xab\x00\xef\x00\x84\x01\xa0\x00\x76\x01\x88\x01\x4a\x01\x4b\x01\x24\x00\x97\x01\x8c\x01\x78\x01\xcb\x00\x7a\x01\xf1\x00\x0b\x00\x1d\x01\xae\x00\x0a\x00\x0b\x00\x26\x00\x04\x00\x08\x00\xf2\x00\x0e\x00\x0f\x00\x10\x00\xa5\x00\x12\x00\x41\x01\x42\x01\x97\x01\xcb\x00\x7e\x01\xc8\x00\xc8\x00\x4f\x01\xaa\x01\x4f\x01\x90\x01\x4f\x01\x50\x01\xa4\x01\x86\x01\x28\x01\x29\x01\x2a\x01\x42\x00\xa7\x01\xa7\x01\xa8\x01\xa9\x01\x7e\x01\x30\x01\x36\x01\x37\x01\xf3\x00\x08\x00\xec\x00\x40\x01\xf4\x00\xf5\x00\xf6\x00\xa1\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x01\xa2\x00\x01\x01\x02\x01\x03\x01\xcc\x00\x9f\x00\x04\x01\x62\x01\x05\x01\x7b\x01\x06\x01\x07\x01\x08\x01\x09\x01\x0a\x01\x0b\x01\xf1\x00\x0b\x00\x63\x01\x4b\x00\x42\x01\x85\x01\x4c\x00\x0a\x00\x0b\x00\xf2\x00\x0e\x00\x0f\x00\x10\x00\xa5\x00\x12\x00\xd4\x00\xd5\x00\xd6\x00\xbd\x00\xd7\x00\x49\x00\x6e\x01\x45\x00\x41\x01\x46\x00\x89\x01\x42\x01\x24\x00\x9f\x00\xc4\x00\x4f\x00\x56\x00\x57\x00\x50\x00\x36\x01\x98\x00\x51\x00\x8a\x01\x58\x00\x24\x00\x25\x00\x99\x00\xf3\x00\x43\x01\x44\x01\x45\x01\x5c\x01\xf5\x00\xf6\x00\x53\x01\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x01\x42\x01\x01\x01\x02\x01\x03\x01\xd8\x00\x43\x01\x04\x01\x87\x01\x05\x01\x48\x01\x06\x01\x07\x01\x08\x01\x09\x01\x0a\x01\x0b\x01\xf1\x00\x0b\x00\x24\x00\x25\x00\x59\x00\x57\x01\x0a\x00\x0b\x00\x59\x01\xf2\x00\x0e\x00\x0f\x00\x10\x00\xa5\x00\x12\x00\x60\x01\x31\x00\xbe\x00\x4f\x00\x32\x00\x3b\x00\x50\x00\x4d\x00\x43\x01\x51\x00\x47\x01\x52\x00\x63\x01\x53\x00\x56\x00\x57\x00\x49\x01\x4a\x01\x4b\x01\x54\x00\x31\x00\x58\x00\x33\x00\x69\x01\x7c\x01\x0a\x00\x3e\x00\xf3\x00\x3f\x00\xf1\x00\x37\x00\xf4\x00\xf5\x00\xf6\x00\x70\x01\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x01\x72\x01\x01\x01\x02\x01\x03\x01\x43\x00\x16\x00\x04\x01\x6f\x01\x05\x01\x73\x01\x06\x01\x07\x01\x08\x01\x09\x01\x0a\x01\x0b\x01\x40\x01\x18\x00\x99\x00\x9a\x00\x9d\x00\x0d\x01\x0e\x01\x0f\x01\x57\x00\xa5\x01\xcf\x00\xd0\x00\xd1\x00\xd2\x00\x10\x01\x11\x01\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1a\x00\x1b\x00\x0a\x00\x0b\x00\xed\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\x1d\x00\x24\x00\x25\x00\x1b\x01\x1e\x00\x6d\x01\x6e\x01\x39\x00\x1f\x00\x20\x00\x74\x01\x21\x00\x26\x01\x45\x00\x3d\x00\xdc\x00\x3e\x00\x2b\x01\x2d\x01\x41\x01\x2e\x01\x1c\x01\x24\x00\x24\x00\x25\x00\x31\x01\x26\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x18\x00\xe6\x00\xd1\x00\xd2\x00\x0d\x01\x0e\x01\x0f\x01\x57\x00\xa2\x01\xcf\x00\xd0\x00\xd1\x00\xd2\x00\x10\x01\x11\x01\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1a\x00\x1b\x00\x32\x01\x33\x01\x18\x00\x4d\x01\xcf\x00\xd0\x00\xd1\x00\xd2\x00\x1d\x00\x34\x01\x31\x00\x1b\x01\x1e\x00\x69\x01\x6a\x01\x38\x01\x1f\x00\x20\x00\x19\x00\x21\x00\x31\x00\x3a\x01\x3d\x00\x32\x00\x3e\x00\x3d\x01\x1a\x00\x1b\x00\x1c\x00\x1c\x01\x18\x00\x24\x00\x25\x00\x3e\x01\x26\x00\x31\x00\x1d\x00\xdf\x00\x69\x01\x6b\x01\x1e\x00\xd8\x00\xe5\x00\xea\x00\x1f\x00\x20\x00\x19\x00\x21\x00\x84\x01\xda\x00\x22\x00\xdd\x00\x23\x00\x2e\x00\x1a\x00\x1b\x00\x1c\x00\x4d\x00\x18\x00\x24\x00\x25\x00\x39\x00\x26\x00\x4e\x00\x1d\x00\x59\x00\x04\x00\x3a\x00\x1e\x00\x3b\x00\x0a\x00\x24\x00\x1f\x00\x20\x00\x19\x00\x21\x00\x24\x00\xad\x01\x22\x00\x31\x00\x23\x00\x0a\x00\x1a\x00\x1b\x00\x1c\x00\x9d\x01\x18\x00\x24\x00\x25\x00\x3d\x01\x26\x00\x0a\x00\x1d\x00\xd4\x00\xd5\x00\xd6\x00\x1e\x00\xd7\x00\xa0\x01\xa1\x01\x1f\x00\x20\x00\x19\x00\x21\x00\x31\x00\xa2\x01\x22\x00\x32\x00\x23\x00\x2e\x00\x1a\x00\x1b\x00\x1c\x00\x0a\x00\x18\x00\x24\x00\x25\x00\x8e\x01\x26\x00\x31\x00\x1d\x00\x8f\x01\x69\x01\x6c\x01\x1e\x00\xd8\x00\x0a\x00\x24\x00\x1f\x00\x20\x00\x19\x00\x21\x00\x64\x01\xda\x00\x22\x00\x31\x00\x23\x00\x99\x01\x1a\x00\x1b\x00\x99\x00\x9a\x00\xca\x00\x24\x00\x25\x00\x9b\x01\x26\x00\xdf\x00\x1d\x00\x9c\x01\x78\x01\x18\x00\x1e\x00\x99\x00\x9a\x00\x9b\x00\x1f\x00\x20\x00\x98\xff\x21\x00\x72\x01\x98\xff\x3d\x00\x31\x00\x3e\x00\xdf\x00\x32\x00\x19\x00\x7a\x01\x0a\x00\x0b\x00\x24\x00\x25\x00\x28\x01\x26\x00\x1a\x00\x1b\x00\x1c\x00\xdf\x00\x18\x00\x48\x00\x10\x00\x49\x00\x12\x00\xd8\x00\x1d\x00\x99\x00\x9a\x00\x9c\x00\x1e\x00\x0a\x00\x65\x01\xda\x00\x1f\x00\x20\x00\x19\x00\x21\x00\x31\x00\x80\x01\x22\x00\x32\x00\x23\x00\x81\x01\x1a\x00\x1b\x00\x82\x01\x24\x00\x18\x00\x24\x00\x25\x00\x0a\x00\x26\x00\x4d\x01\x1d\x00\x99\x00\x9a\x00\x9d\x00\x1e\x00\xd8\x00\x0a\x00\x24\x00\x1f\x00\x20\x00\x19\x00\x21\x00\x66\x01\xda\x00\x3d\x00\x53\x01\x3e\x00\xb3\x00\x1a\x00\x1b\x00\x55\x01\x56\x01\x18\x00\x24\x00\x25\x00\x57\x01\x26\x00\x24\x00\x1d\x00\xd4\x00\xd5\x00\xd6\x00\x1e\x00\x59\x01\x24\x00\x5c\x01\x1f\x00\x20\x00\x19\x00\x21\x00\x5b\x01\x69\x01\x3d\x00\xb4\x00\x3e\x00\x24\x00\x1a\x00\x1b\x00\x1c\x00\x3c\x01\x18\x00\x24\x00\x25\x00\x28\x01\x26\x00\x0a\x00\x1d\x00\x72\x01\xdf\x00\x76\x01\x1e\x00\x2d\x01\x0a\x00\x0a\x00\x1f\x00\x20\x00\x19\x00\x21\x00\x31\x00\x24\x00\x22\x00\x32\x00\x23\x00\x3a\x01\x1a\x00\x1b\x00\x3c\x01\x0a\x00\x4d\x01\x24\x00\x25\x00\x52\x01\x26\x00\x0a\x00\x1d\x00\xdf\x00\xe1\x00\xe4\x00\x1e\x00\xd8\x00\xe2\x00\x24\x00\x1f\x00\x20\x00\x19\x00\x21\x00\x67\x01\xda\x00\x3d\x00\xe8\x00\x3e\x00\xe9\x00\x1a\x00\x1b\x00\xea\x00\xd6\x00\x24\x00\x24\x00\x25\x00\x1f\x01\x26\x00\x20\x01\x1d\x00\x0a\x00\x0b\x00\xc5\x00\x1e\x00\xc6\x00\xc7\x00\x31\x00\x1f\x00\x20\x00\x32\x00\x0a\x00\x48\x00\x10\x00\x3d\x00\xa8\x00\x3e\x00\x31\x00\x4c\x00\x31\x00\x32\x00\xdd\x00\x32\x00\x24\x00\x25\x00\x0a\x00\x26\x00\xdf\x00\x33\x00\xaa\x00\xab\x00\x24\x00\x34\x00\x35\x00\x36\x00\xb0\x00\x37\x00\xb8\x00\xd8\x00\x31\x00\xd8\x00\xba\x00\x32\x00\xb9\x00\xbb\x00\xe2\x00\xda\x00\xe4\x00\xda\x00\x31\x00\x31\x00\xa9\xff\x32\x00\x32\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd8\x00\x22\x01\x23\x01\x24\x01\x25\x01\x26\x01\x99\x00\xd9\x00\xda\x00\xbc\x00\x33\x00\x33\x00\xbd\x00\xff\xff\x41\x00\x47\x00\xb4\x00\xb6\x00\x37\x00\x37\x00\x0a\x00\x0b\x00\x0a\x00\xff\xff\x4d\x00\x28\x00\x0a\x00\xff\xff\xc0\x00\x0d\x00\x0e\x00\x2a\x00\x10\x00\x11\x00\x12\x00\x0a\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\xc1\x00\x20\x01\x2c\x00\x0a\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\xc0\x00\x0d\x00\x0e\x00\x2a\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\xc1\x00\xc2\x00\x2c\x00\x27\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x29\x00\x0d\x00\x0e\x00\x2a\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x2b\x00\x00\x00\x2c\x00\x0a\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x2e\x00\x0d\x00\x0e\x00\x2a\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x2f\x00\x00\x00\x2c\x00\x0a\x00\x0b\x00\x00\x00\x00\x00\x00\x00\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa7\x00\x10\x00\x00\x00\xa8\x00\x0a\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xa7\x00\x10\x00\x00\x00\xa8\x00\x0a\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xa7\x00\x10\x00\x00\x00\xa8\x00\x0a\x00\x0b\x00\x00\x00\x00\x00\x00\x00\xb1\x00\x00\x00\x2f\x00\x00\x00\x2c\x00\x00\x00\xa7\x00\x10\x00\x00\x00\xa8\x00\x0a\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xa7\x00\x10\x00\x00\x00\xa8\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x2c\x00\xa3\x01\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x0a\x00\x0b\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\x8f\x01\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x0a\x00\x0b\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\x91\x01\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x0a\x00\x0b\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\x92\x01\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x0a\x00\x0b\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\x93\x01\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x0a\x00\x0b\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\x5d\x01\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x0a\x00\x0b\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\x5e\x01\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x0a\x00\x0b\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\x5f\x01\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x0a\x00\x0b\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\x1c\x01\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x0a\x00\x0b\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\xbe\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x0a\x00\x0b\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\xbf\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x0a\x00\x0b\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\xc9\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x0a\x00\x0b\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\xa6\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x0a\x00\x0b\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\xb0\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x27\x00\x0b\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\x29\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x0a\x00\x0b\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\x2e\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x0a\x00\x0b\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\xb5\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x0a\x00\x0b\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\x47\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x0a\x00\x0b\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x0a\x00\x0b\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\x00\x00\x00\x00\xa4\x00\x0f\x00\x10\x00\xa5\x00\x12\x00\xeb\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
+
+happyReduceArr = array (3, 251) [
+	(3 , happyReduce_3),
+	(4 , happyReduce_4),
+	(5 , happyReduce_5),
+	(6 , happyReduce_6),
+	(7 , happyReduce_7),
+	(8 , happyReduce_8),
+	(9 , happyReduce_9),
+	(10 , happyReduce_10),
+	(11 , happyReduce_11),
+	(12 , happyReduce_12),
+	(13 , happyReduce_13),
+	(14 , happyReduce_14),
+	(15 , happyReduce_15),
+	(16 , happyReduce_16),
+	(17 , happyReduce_17),
+	(18 , happyReduce_18),
+	(19 , happyReduce_19),
+	(20 , happyReduce_20),
+	(21 , happyReduce_21),
+	(22 , happyReduce_22),
+	(23 , happyReduce_23),
+	(24 , happyReduce_24),
+	(25 , happyReduce_25),
+	(26 , happyReduce_26),
+	(27 , happyReduce_27),
+	(28 , happyReduce_28),
+	(29 , happyReduce_29),
+	(30 , happyReduce_30),
+	(31 , happyReduce_31),
+	(32 , happyReduce_32),
+	(33 , happyReduce_33),
+	(34 , happyReduce_34),
+	(35 , happyReduce_35),
+	(36 , happyReduce_36),
+	(37 , happyReduce_37),
+	(38 , happyReduce_38),
+	(39 , happyReduce_39),
+	(40 , happyReduce_40),
+	(41 , happyReduce_41),
+	(42 , happyReduce_42),
+	(43 , happyReduce_43),
+	(44 , happyReduce_44),
+	(45 , happyReduce_45),
+	(46 , happyReduce_46),
+	(47 , happyReduce_47),
+	(48 , happyReduce_48),
+	(49 , happyReduce_49),
+	(50 , happyReduce_50),
+	(51 , happyReduce_51),
+	(52 , happyReduce_52),
+	(53 , happyReduce_53),
+	(54 , happyReduce_54),
+	(55 , happyReduce_55),
+	(56 , happyReduce_56),
+	(57 , happyReduce_57),
+	(58 , happyReduce_58),
+	(59 , happyReduce_59),
+	(60 , happyReduce_60),
+	(61 , happyReduce_61),
+	(62 , happyReduce_62),
+	(63 , happyReduce_63),
+	(64 , happyReduce_64),
+	(65 , happyReduce_65),
+	(66 , happyReduce_66),
+	(67 , happyReduce_67),
+	(68 , happyReduce_68),
+	(69 , happyReduce_69),
+	(70 , happyReduce_70),
+	(71 , happyReduce_71),
+	(72 , happyReduce_72),
+	(73 , happyReduce_73),
+	(74 , happyReduce_74),
+	(75 , happyReduce_75),
+	(76 , happyReduce_76),
+	(77 , happyReduce_77),
+	(78 , happyReduce_78),
+	(79 , happyReduce_79),
+	(80 , happyReduce_80),
+	(81 , happyReduce_81),
+	(82 , happyReduce_82),
+	(83 , happyReduce_83),
+	(84 , happyReduce_84),
+	(85 , happyReduce_85),
+	(86 , happyReduce_86),
+	(87 , happyReduce_87),
+	(88 , happyReduce_88),
+	(89 , happyReduce_89),
+	(90 , happyReduce_90),
+	(91 , happyReduce_91),
+	(92 , happyReduce_92),
+	(93 , happyReduce_93),
+	(94 , happyReduce_94),
+	(95 , happyReduce_95),
+	(96 , happyReduce_96),
+	(97 , happyReduce_97),
+	(98 , happyReduce_98),
+	(99 , happyReduce_99),
+	(100 , happyReduce_100),
+	(101 , happyReduce_101),
+	(102 , happyReduce_102),
+	(103 , happyReduce_103),
+	(104 , happyReduce_104),
+	(105 , happyReduce_105),
+	(106 , happyReduce_106),
+	(107 , happyReduce_107),
+	(108 , happyReduce_108),
+	(109 , happyReduce_109),
+	(110 , happyReduce_110),
+	(111 , happyReduce_111),
+	(112 , happyReduce_112),
+	(113 , happyReduce_113),
+	(114 , happyReduce_114),
+	(115 , happyReduce_115),
+	(116 , happyReduce_116),
+	(117 , happyReduce_117),
+	(118 , happyReduce_118),
+	(119 , happyReduce_119),
+	(120 , happyReduce_120),
+	(121 , happyReduce_121),
+	(122 , happyReduce_122),
+	(123 , happyReduce_123),
+	(124 , happyReduce_124),
+	(125 , happyReduce_125),
+	(126 , happyReduce_126),
+	(127 , happyReduce_127),
+	(128 , happyReduce_128),
+	(129 , happyReduce_129),
+	(130 , happyReduce_130),
+	(131 , happyReduce_131),
+	(132 , happyReduce_132),
+	(133 , happyReduce_133),
+	(134 , happyReduce_134),
+	(135 , happyReduce_135),
+	(136 , happyReduce_136),
+	(137 , happyReduce_137),
+	(138 , happyReduce_138),
+	(139 , happyReduce_139),
+	(140 , happyReduce_140),
+	(141 , happyReduce_141),
+	(142 , happyReduce_142),
+	(143 , happyReduce_143),
+	(144 , happyReduce_144),
+	(145 , happyReduce_145),
+	(146 , happyReduce_146),
+	(147 , happyReduce_147),
+	(148 , happyReduce_148),
+	(149 , happyReduce_149),
+	(150 , happyReduce_150),
+	(151 , happyReduce_151),
+	(152 , happyReduce_152),
+	(153 , happyReduce_153),
+	(154 , happyReduce_154),
+	(155 , happyReduce_155),
+	(156 , happyReduce_156),
+	(157 , happyReduce_157),
+	(158 , happyReduce_158),
+	(159 , happyReduce_159),
+	(160 , happyReduce_160),
+	(161 , happyReduce_161),
+	(162 , happyReduce_162),
+	(163 , happyReduce_163),
+	(164 , happyReduce_164),
+	(165 , happyReduce_165),
+	(166 , happyReduce_166),
+	(167 , happyReduce_167),
+	(168 , happyReduce_168),
+	(169 , happyReduce_169),
+	(170 , happyReduce_170),
+	(171 , happyReduce_171),
+	(172 , happyReduce_172),
+	(173 , happyReduce_173),
+	(174 , happyReduce_174),
+	(175 , happyReduce_175),
+	(176 , happyReduce_176),
+	(177 , happyReduce_177),
+	(178 , happyReduce_178),
+	(179 , happyReduce_179),
+	(180 , happyReduce_180),
+	(181 , happyReduce_181),
+	(182 , happyReduce_182),
+	(183 , happyReduce_183),
+	(184 , happyReduce_184),
+	(185 , happyReduce_185),
+	(186 , happyReduce_186),
+	(187 , happyReduce_187),
+	(188 , happyReduce_188),
+	(189 , happyReduce_189),
+	(190 , happyReduce_190),
+	(191 , happyReduce_191),
+	(192 , happyReduce_192),
+	(193 , happyReduce_193),
+	(194 , happyReduce_194),
+	(195 , happyReduce_195),
+	(196 , happyReduce_196),
+	(197 , happyReduce_197),
+	(198 , happyReduce_198),
+	(199 , happyReduce_199),
+	(200 , happyReduce_200),
+	(201 , happyReduce_201),
+	(202 , happyReduce_202),
+	(203 , happyReduce_203),
+	(204 , happyReduce_204),
+	(205 , happyReduce_205),
+	(206 , happyReduce_206),
+	(207 , happyReduce_207),
+	(208 , happyReduce_208),
+	(209 , happyReduce_209),
+	(210 , happyReduce_210),
+	(211 , happyReduce_211),
+	(212 , happyReduce_212),
+	(213 , happyReduce_213),
+	(214 , happyReduce_214),
+	(215 , happyReduce_215),
+	(216 , happyReduce_216),
+	(217 , happyReduce_217),
+	(218 , happyReduce_218),
+	(219 , happyReduce_219),
+	(220 , happyReduce_220),
+	(221 , happyReduce_221),
+	(222 , happyReduce_222),
+	(223 , happyReduce_223),
+	(224 , happyReduce_224),
+	(225 , happyReduce_225),
+	(226 , happyReduce_226),
+	(227 , happyReduce_227),
+	(228 , happyReduce_228),
+	(229 , happyReduce_229),
+	(230 , happyReduce_230),
+	(231 , happyReduce_231),
+	(232 , happyReduce_232),
+	(233 , happyReduce_233),
+	(234 , happyReduce_234),
+	(235 , happyReduce_235),
+	(236 , happyReduce_236),
+	(237 , happyReduce_237),
+	(238 , happyReduce_238),
+	(239 , happyReduce_239),
+	(240 , happyReduce_240),
+	(241 , happyReduce_241),
+	(242 , happyReduce_242),
+	(243 , happyReduce_243),
+	(244 , happyReduce_244),
+	(245 , happyReduce_245),
+	(246 , happyReduce_246),
+	(247 , happyReduce_247),
+	(248 , happyReduce_248),
+	(249 , happyReduce_249),
+	(250 , happyReduce_250),
+	(251 , happyReduce_251)
+	]
+
+happy_n_terms = 63 :: Int
+happy_n_nonterms = 92 :: Int
+
+happyReduce_3 = happySpecReduce_1  0# happyReduction_3
+happyReduction_3 happy_x_1
+	 =  case happyOut7 happy_x_1 of { happy_var_1 -> 
+	happyIn6
+		 (reverse happy_var_1
+	)}
+
+happyReduce_4 = happySpecReduce_2  1# happyReduction_4
+happyReduction_4 happy_x_2
+	happy_x_1
+	 =  case happyOut7 happy_x_1 of { happy_var_1 -> 
+	case happyOut8 happy_x_2 of { happy_var_2 -> 
+	happyIn7
+		 (happy_var_2 : happy_var_1
+	)}}
+
+happyReduce_5 = happySpecReduce_0  1# happyReduction_5
+happyReduction_5  =  happyIn7
+		 ([]
+	)
+
+happyReduce_6 = happySpecReduce_1  2# happyReduction_6
+happyReduction_6 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwLet happy_var_1) -> 
+	happyIn8
+		 (TokKeyword KwLet happy_var_1
+	)}
+
+happyReduce_7 = happySpecReduce_1  2# happyReduction_7
+happyReduction_7 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwIn happy_var_1) -> 
+	happyIn8
+		 (TokKeyword KwIn happy_var_1
+	)}
+
+happyReduce_8 = happySpecReduce_1  2# happyReduction_8
+happyReduction_8 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwWhere happy_var_1) -> 
+	happyIn8
+		 (TokKeyword KwWhere happy_var_1
+	)}
+
+happyReduce_9 = happySpecReduce_1  2# happyReduction_9
+happyReduction_9 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwWith happy_var_1) -> 
+	happyIn8
+		 (TokKeyword KwWith happy_var_1
+	)}
+
+happyReduce_10 = happySpecReduce_1  2# happyReduction_10
+happyReduction_10 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPostulate happy_var_1) -> 
+	happyIn8
+		 (TokKeyword KwPostulate happy_var_1
+	)}
+
+happyReduce_11 = happySpecReduce_1  2# happyReduction_11
+happyReduction_11 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPrimitive happy_var_1) -> 
+	happyIn8
+		 (TokKeyword KwPrimitive happy_var_1
+	)}
+
+happyReduce_12 = happySpecReduce_1  2# happyReduction_12
+happyReduction_12 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwOpen happy_var_1) -> 
+	happyIn8
+		 (TokKeyword KwOpen happy_var_1
+	)}
+
+happyReduce_13 = happySpecReduce_1  2# happyReduction_13
+happyReduction_13 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwImport happy_var_1) -> 
+	happyIn8
+		 (TokKeyword KwImport happy_var_1
+	)}
+
+happyReduce_14 = happySpecReduce_1  2# happyReduction_14
+happyReduction_14 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwUsing happy_var_1) -> 
+	happyIn8
+		 (TokKeyword KwUsing happy_var_1
+	)}
+
+happyReduce_15 = happySpecReduce_1  2# happyReduction_15
+happyReduction_15 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwHiding happy_var_1) -> 
+	happyIn8
+		 (TokKeyword KwHiding happy_var_1
+	)}
+
+happyReduce_16 = happySpecReduce_1  2# happyReduction_16
+happyReduction_16 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwRenaming happy_var_1) -> 
+	happyIn8
+		 (TokKeyword KwRenaming happy_var_1
+	)}
+
+happyReduce_17 = happySpecReduce_1  2# happyReduction_17
+happyReduction_17 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwTo happy_var_1) -> 
+	happyIn8
+		 (TokKeyword KwTo happy_var_1
+	)}
+
+happyReduce_18 = happySpecReduce_1  2# happyReduction_18
+happyReduction_18 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPublic happy_var_1) -> 
+	happyIn8
+		 (TokKeyword KwPublic happy_var_1
+	)}
+
+happyReduce_19 = happySpecReduce_1  2# happyReduction_19
+happyReduction_19 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwModule happy_var_1) -> 
+	happyIn8
+		 (TokKeyword KwModule happy_var_1
+	)}
+
+happyReduce_20 = happySpecReduce_1  2# happyReduction_20
+happyReduction_20 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwData happy_var_1) -> 
+	happyIn8
+		 (TokKeyword KwData happy_var_1
+	)}
+
+happyReduce_21 = happySpecReduce_1  2# happyReduction_21
+happyReduction_21 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCoData happy_var_1) -> 
+	happyIn8
+		 (TokKeyword KwCoData happy_var_1
+	)}
+
+happyReduce_22 = happySpecReduce_1  2# happyReduction_22
+happyReduction_22 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwRecord happy_var_1) -> 
+	happyIn8
+		 (TokKeyword KwRecord happy_var_1
+	)}
+
+happyReduce_23 = happySpecReduce_1  2# happyReduction_23
+happyReduction_23 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwField happy_var_1) -> 
+	happyIn8
+		 (TokKeyword KwField happy_var_1
+	)}
+
+happyReduce_24 = happySpecReduce_1  2# happyReduction_24
+happyReduction_24 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInfix happy_var_1) -> 
+	happyIn8
+		 (TokKeyword KwInfix happy_var_1
+	)}
+
+happyReduce_25 = happySpecReduce_1  2# happyReduction_25
+happyReduction_25 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInfixL happy_var_1) -> 
+	happyIn8
+		 (TokKeyword KwInfixL happy_var_1
+	)}
+
+happyReduce_26 = happySpecReduce_1  2# happyReduction_26
+happyReduction_26 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInfixR happy_var_1) -> 
+	happyIn8
+		 (TokKeyword KwInfixR happy_var_1
+	)}
+
+happyReduce_27 = happySpecReduce_1  2# happyReduction_27
+happyReduction_27 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwMutual happy_var_1) -> 
+	happyIn8
+		 (TokKeyword KwMutual happy_var_1
+	)}
+
+happyReduce_28 = happySpecReduce_1  2# happyReduction_28
+happyReduction_28 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwAbstract happy_var_1) -> 
+	happyIn8
+		 (TokKeyword KwAbstract happy_var_1
+	)}
+
+happyReduce_29 = happySpecReduce_1  2# happyReduction_29
+happyReduction_29 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPrivate happy_var_1) -> 
+	happyIn8
+		 (TokKeyword KwPrivate happy_var_1
+	)}
+
+happyReduce_30 = happySpecReduce_1  2# happyReduction_30
+happyReduction_30 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwProp happy_var_1) -> 
+	happyIn8
+		 (TokKeyword KwProp happy_var_1
+	)}
+
+happyReduce_31 = happySpecReduce_1  2# happyReduction_31
+happyReduction_31 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwSet happy_var_1) -> 
+	happyIn8
+		 (TokKeyword KwSet happy_var_1
+	)}
+
+happyReduce_32 = happySpecReduce_1  2# happyReduction_32
+happyReduction_32 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwForall happy_var_1) -> 
+	happyIn8
+		 (TokKeyword KwForall happy_var_1
+	)}
+
+happyReduce_33 = happySpecReduce_1  2# happyReduction_33
+happyReduction_33 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwOPTIONS happy_var_1) -> 
+	happyIn8
+		 (TokKeyword KwOPTIONS happy_var_1
+	)}
+
+happyReduce_34 = happySpecReduce_1  2# happyReduction_34
+happyReduction_34 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwBUILTIN happy_var_1) -> 
+	happyIn8
+		 (TokKeyword KwBUILTIN happy_var_1
+	)}
+
+happyReduce_35 = happySpecReduce_1  2# happyReduction_35
+happyReduction_35 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwIMPORT happy_var_1) -> 
+	happyIn8
+		 (TokKeyword KwIMPORT happy_var_1
+	)}
+
+happyReduce_36 = happySpecReduce_1  2# happyReduction_36
+happyReduction_36 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCOMPILED happy_var_1) -> 
+	happyIn8
+		 (TokKeyword KwCOMPILED happy_var_1
+	)}
+
+happyReduce_37 = happySpecReduce_1  2# happyReduction_37
+happyReduction_37 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCOMPILED_DATA happy_var_1) -> 
+	happyIn8
+		 (TokKeyword KwCOMPILED_DATA happy_var_1
+	)}
+
+happyReduce_38 = happySpecReduce_1  2# happyReduction_38
+happyReduction_38 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCOMPILED_TYPE happy_var_1) -> 
+	happyIn8
+		 (TokKeyword KwCOMPILED_TYPE happy_var_1
+	)}
+
+happyReduce_39 = happySpecReduce_1  2# happyReduction_39
+happyReduction_39 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwLINE happy_var_1) -> 
+	happyIn8
+		 (TokKeyword KwLINE happy_var_1
+	)}
+
+happyReduce_40 = happySpecReduce_1  2# happyReduction_40
+happyReduction_40 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSetN happy_var_1) -> 
+	happyIn8
+		 (TokSetN happy_var_1
+	)}
+
+happyReduce_41 = happySpecReduce_1  2# happyReduction_41
+happyReduction_41 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokTeX happy_var_1) -> 
+	happyIn8
+		 (TokTeX happy_var_1
+	)}
+
+happyReduce_42 = happySpecReduce_1  2# happyReduction_42
+happyReduction_42 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokComment happy_var_1) -> 
+	happyIn8
+		 (TokComment happy_var_1
+	)}
+
+happyReduce_43 = happySpecReduce_1  2# happyReduction_43
+happyReduction_43 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymEllipsis happy_var_1) -> 
+	happyIn8
+		 (TokSymbol SymEllipsis happy_var_1
+	)}
+
+happyReduce_44 = happySpecReduce_1  2# happyReduction_44
+happyReduction_44 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymDot happy_var_1) -> 
+	happyIn8
+		 (TokSymbol SymDot happy_var_1
+	)}
+
+happyReduce_45 = happySpecReduce_1  2# happyReduction_45
+happyReduction_45 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymSemi happy_var_1) -> 
+	happyIn8
+		 (TokSymbol SymSemi happy_var_1
+	)}
+
+happyReduce_46 = happySpecReduce_1  2# happyReduction_46
+happyReduction_46 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymColon happy_var_1) -> 
+	happyIn8
+		 (TokSymbol SymColon happy_var_1
+	)}
+
+happyReduce_47 = happySpecReduce_1  2# happyReduction_47
+happyReduction_47 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymEqual happy_var_1) -> 
+	happyIn8
+		 (TokSymbol SymEqual happy_var_1
+	)}
+
+happyReduce_48 = happySpecReduce_1  2# happyReduction_48
+happyReduction_48 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymUnderscore happy_var_1) -> 
+	happyIn8
+		 (TokSymbol SymUnderscore happy_var_1
+	)}
+
+happyReduce_49 = happySpecReduce_1  2# happyReduction_49
+happyReduction_49 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymQuestionMark happy_var_1) -> 
+	happyIn8
+		 (TokSymbol SymQuestionMark happy_var_1
+	)}
+
+happyReduce_50 = happySpecReduce_1  2# happyReduction_50
+happyReduction_50 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymArrow happy_var_1) -> 
+	happyIn8
+		 (TokSymbol SymArrow happy_var_1
+	)}
+
+happyReduce_51 = happySpecReduce_1  2# happyReduction_51
+happyReduction_51 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymLambda happy_var_1) -> 
+	happyIn8
+		 (TokSymbol SymLambda happy_var_1
+	)}
+
+happyReduce_52 = happySpecReduce_1  2# happyReduction_52
+happyReduction_52 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymAs happy_var_1) -> 
+	happyIn8
+		 (TokSymbol SymAs happy_var_1
+	)}
+
+happyReduce_53 = happySpecReduce_1  2# happyReduction_53
+happyReduction_53 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymBar happy_var_1) -> 
+	happyIn8
+		 (TokSymbol SymBar happy_var_1
+	)}
+
+happyReduce_54 = happySpecReduce_1  2# happyReduction_54
+happyReduction_54 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenParen happy_var_1) -> 
+	happyIn8
+		 (TokSymbol SymOpenParen happy_var_1
+	)}
+
+happyReduce_55 = happySpecReduce_1  2# happyReduction_55
+happyReduction_55 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymCloseParen happy_var_1) -> 
+	happyIn8
+		 (TokSymbol SymCloseParen happy_var_1
+	)}
+
+happyReduce_56 = happySpecReduce_1  2# happyReduction_56
+happyReduction_56 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenBrace happy_var_1) -> 
+	happyIn8
+		 (TokSymbol SymOpenBrace happy_var_1
+	)}
+
+happyReduce_57 = happySpecReduce_1  2# happyReduction_57
+happyReduction_57 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymCloseBrace happy_var_1) -> 
+	happyIn8
+		 (TokSymbol SymCloseBrace happy_var_1
+	)}
+
+happyReduce_58 = happySpecReduce_1  2# happyReduction_58
+happyReduction_58 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenVirtualBrace happy_var_1) -> 
+	happyIn8
+		 (TokSymbol SymOpenVirtualBrace happy_var_1
+	)}
+
+happyReduce_59 = happySpecReduce_1  2# happyReduction_59
+happyReduction_59 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymCloseVirtualBrace happy_var_1) -> 
+	happyIn8
+		 (TokSymbol SymCloseVirtualBrace happy_var_1
+	)}
+
+happyReduce_60 = happySpecReduce_1  2# happyReduction_60
+happyReduction_60 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymVirtualSemi happy_var_1) -> 
+	happyIn8
+		 (TokSymbol SymVirtualSemi happy_var_1
+	)}
+
+happyReduce_61 = happySpecReduce_1  2# happyReduction_61
+happyReduction_61 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> 
+	happyIn8
+		 (TokSymbol SymOpenPragma happy_var_1
+	)}
+
+happyReduce_62 = happySpecReduce_1  2# happyReduction_62
+happyReduction_62 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymClosePragma happy_var_1) -> 
+	happyIn8
+		 (TokSymbol SymClosePragma happy_var_1
+	)}
+
+happyReduce_63 = happySpecReduce_1  2# happyReduction_63
+happyReduction_63 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokId happy_var_1) -> 
+	happyIn8
+		 (TokId happy_var_1
+	)}
+
+happyReduce_64 = happySpecReduce_1  2# happyReduction_64
+happyReduction_64 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokQId happy_var_1) -> 
+	happyIn8
+		 (TokQId happy_var_1
+	)}
+
+happyReduce_65 = happySpecReduce_1  2# happyReduction_65
+happyReduction_65 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokString happy_var_1) -> 
+	happyIn8
+		 (TokString happy_var_1
+	)}
+
+happyReduce_66 = happySpecReduce_1  2# happyReduction_66
+happyReduction_66 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokLiteral happy_var_1) -> 
+	happyIn8
+		 (TokLiteral happy_var_1
+	)}
+
+happyReduce_67 = happySpecReduce_0  3# happyReduction_67
+happyReduction_67  =  happyIn9
+		 (()
+	)
+
+happyReduce_68 = happySpecReduce_2  3# happyReduction_68
+happyReduction_68 happy_x_2
+	happy_x_1
+	 =  happyIn9
+		 (()
+	)
+
+happyReduce_69 = happySpecReduce_2  4# happyReduction_69
+happyReduction_69 happy_x_2
+	happy_x_1
+	 =  case happyOut11 happy_x_1 of { happy_var_1 -> 
+	happyIn10
+		 (happy_var_1
+	)}
+
+happyReduce_70 = happySpecReduce_1  5# happyReduction_70
+happyReduction_70 happy_x_1
+	 =  case happyOut80 happy_x_1 of { happy_var_1 -> 
+	happyIn11
+		 (([], happy_var_1)
+	)}
+
+happyReduce_71 = happySpecReduce_3  5# happyReduction_71
+happyReduction_71 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut83 happy_x_2 of { happy_var_2 -> 
+	case happyOut11 happy_x_3 of { happy_var_3 -> 
+	happyIn11
+		 (let (ps,m) = happy_var_3 in (happy_var_2 : ps, m)
+	)}}
+
+happyReduce_72 = happySpecReduce_1  6# happyReduction_72
+happyReduction_72 happy_x_1
+	 =  happyIn12
+		 (()
+	)
+
+happyReduce_73 = happyMonadReduce 1# 6# happyReduction_73
+happyReduction_73 (happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (( popContext)
+	) (\r -> happyReturn (happyIn12 r))
+
+happyReduce_74 = happySpecReduce_1  7# happyReduction_74
+happyReduction_74 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymSemi happy_var_1) -> 
+	happyIn13
+		 (happy_var_1
+	)}
+
+happyReduce_75 = happySpecReduce_2  7# happyReduction_75
+happyReduction_75 happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_2 of { (TokSymbol SymVirtualSemi happy_var_2) -> 
+	happyIn13
+		 (happy_var_2
+	)}
+
+happyReduce_76 = happyMonadReduce 0# 8# happyReduction_76
+happyReduction_76 (happyRest) tk
+	 = happyThen (( pushLexState imp_dir)
+	) (\r -> happyReturn (happyIn14 r))
+
+happyReduce_77 = happyMonadReduce 1# 9# happyReduction_77
+happyReduction_77 (happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (case happyOutTok happy_x_1 of { (TokLiteral happy_var_1) -> 
+	( case happy_var_1 of {
+		     LitInt _ n	-> return $ fromIntegral n;
+		     _		-> fail $ "Expected integer"
+		   })}
+	) (\r -> happyReturn (happyIn15 r))
+
+happyReduce_78 = happyMonadReduce 1# 10# happyReduction_78
+happyReduction_78 (happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (case happyOutTok happy_x_1 of { (TokId happy_var_1) -> 
+	( mkName happy_var_1)}
+	) (\r -> happyReturn (happyIn16 r))
+
+happyReduce_79 = happyMonadReduce 1# 11# happyReduction_79
+happyReduction_79 (happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (case happyOutTok happy_x_1 of { (TokQId happy_var_1) -> 
+	( mkQName happy_var_1)}
+	) (\r -> happyReturn (happyIn17 r))
+
+happyReduce_80 = happySpecReduce_1  11# happyReduction_80
+happyReduction_80 happy_x_1
+	 =  case happyOut16 happy_x_1 of { happy_var_1 -> 
+	happyIn17
+		 (QName happy_var_1
+	)}
+
+happyReduce_81 = happySpecReduce_1  12# happyReduction_81
+happyReduction_81 happy_x_1
+	 =  case happyOut17 happy_x_1 of { happy_var_1 -> 
+	happyIn18
+		 (happy_var_1
+	)}
+
+happyReduce_82 = happySpecReduce_1  13# happyReduction_82
+happyReduction_82 happy_x_1
+	 =  case happyOut16 happy_x_1 of { happy_var_1 -> 
+	happyIn19
+		 (happy_var_1
+	)}
+
+happyReduce_83 = happySpecReduce_1  13# happyReduction_83
+happyReduction_83 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymUnderscore happy_var_1) -> 
+	happyIn19
+		 (Name (getRange happy_var_1) [Hole]
+	)}
+
+happyReduce_84 = happySpecReduce_2  14# happyReduction_84
+happyReduction_84 happy_x_2
+	happy_x_1
+	 =  case happyOut19 happy_x_1 of { happy_var_1 -> 
+	case happyOut20 happy_x_2 of { happy_var_2 -> 
+	happyIn20
+		 (happy_var_1 : happy_var_2
+	)}}
+
+happyReduce_85 = happySpecReduce_1  14# happyReduction_85
+happyReduction_85 happy_x_1
+	 =  case happyOut19 happy_x_1 of { happy_var_1 -> 
+	happyIn20
+		 ([happy_var_1]
+	)}
+
+happyReduce_86 = happyMonadReduce 1# 15# happyReduction_86
+happyReduction_86 (happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (case happyOut27 happy_x_1 of { happy_var_1 -> 
+	(
+    let getName (Ident (QName x)) = Just x
+	getName (Underscore r _)  = Just (Name r [Hole])
+	getName _		  = Nothing
+    in
+    case partition isJust $ map getName happy_var_1 of
+	(good, []) -> return $ map fromJust good
+	_	   -> fail $ "expected sequence of bound identifiers")}
+	) (\r -> happyReturn (happyIn21 r))
+
+happyReduce_87 = happySpecReduce_0  16# happyReduction_87
+happyReduction_87  =  happyIn22
+		 ([]
+	)
+
+happyReduce_88 = happySpecReduce_2  16# happyReduction_88
+happyReduction_88 happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokString happy_var_1) -> 
+	case happyOut22 happy_x_2 of { happy_var_2 -> 
+	happyIn22
+		 (snd happy_var_1 : happy_var_2
+	)}}
+
+happyReduce_89 = happyMonadReduce 1# 17# happyReduction_89
+happyReduction_89 (happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (case happyOutTok happy_x_1 of { (TokString happy_var_1) -> 
+	( fmap QName (mkName happy_var_1))}
+	) (\r -> happyReturn (happyIn23 r))
+
+happyReduce_90 = happySpecReduce_2  18# happyReduction_90
+happyReduction_90 happy_x_2
+	happy_x_1
+	 =  case happyOut34 happy_x_1 of { happy_var_1 -> 
+	case happyOut24 happy_x_2 of { happy_var_2 -> 
+	happyIn24
+		 (Pi happy_var_1 happy_var_2
+	)}}
+
+happyReduce_91 = happySpecReduce_3  18# happyReduction_91
+happyReduction_91 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut41 happy_x_2 of { happy_var_2 -> 
+	case happyOut24 happy_x_3 of { happy_var_3 -> 
+	happyIn24
+		 (forallPi happy_var_2 happy_var_3
+	)}}
+
+happyReduce_92 = happySpecReduce_3  18# happyReduction_92
+happyReduction_92 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut29 happy_x_1 of { happy_var_1 -> 
+	case happyOut24 happy_x_3 of { happy_var_3 -> 
+	happyIn24
+		 (Fun (fuseRange happy_var_1 happy_var_3) (RawApp (getRange happy_var_1) happy_var_1) happy_var_3
+	)}}
+
+happyReduce_93 = happySpecReduce_1  18# happyReduction_93
+happyReduction_93 happy_x_1
+	 =  case happyOut25 happy_x_1 of { happy_var_1 -> 
+	happyIn24
+		 (happy_var_1
+	)}
+
+happyReduce_94 = happyMonadReduce 1# 19# happyReduction_94
+happyReduction_94 (happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (case happyOut26 happy_x_1 of { happy_var_1 -> 
+	( case happy_var_1 of
+		      { [e]    -> return e
+		      ; e : es -> return $ WithApp (fuseRange e es) e es
+		      ; []     -> fail "impossible: empty with expressions"
+		      })}
+	) (\r -> happyReturn (happyIn25 r))
+
+happyReduce_95 = happySpecReduce_3  20# happyReduction_95
+happyReduction_95 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut29 happy_x_1 of { happy_var_1 -> 
+	case happyOut26 happy_x_3 of { happy_var_3 -> 
+	happyIn26
+		 (RawApp (getRange happy_var_1) happy_var_1 :  happy_var_3
+	)}}
+
+happyReduce_96 = happySpecReduce_1  20# happyReduction_96
+happyReduction_96 happy_x_1
+	 =  case happyOut27 happy_x_1 of { happy_var_1 -> 
+	happyIn26
+		 ([RawApp (getRange happy_var_1) happy_var_1]
+	)}
+
+happyReduce_97 = happySpecReduce_1  21# happyReduction_97
+happyReduction_97 happy_x_1
+	 =  case happyOut28 happy_x_1 of { happy_var_1 -> 
+	happyIn27
+		 ([happy_var_1]
+	)}
+
+happyReduce_98 = happySpecReduce_2  21# happyReduction_98
+happyReduction_98 happy_x_2
+	happy_x_1
+	 =  case happyOut30 happy_x_1 of { happy_var_1 -> 
+	case happyOut27 happy_x_2 of { happy_var_2 -> 
+	happyIn27
+		 (happy_var_1 : happy_var_2
+	)}}
+
+happyReduce_99 = happySpecReduce_3  22# happyReduction_99
+happyReduction_99 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymLambda happy_var_1) -> 
+	case happyOut41 happy_x_2 of { happy_var_2 -> 
+	case happyOut24 happy_x_3 of { happy_var_3 -> 
+	happyIn28
+		 (Lam (fuseRange happy_var_1 happy_var_3) happy_var_2 happy_var_3
+	)}}}
+
+happyReduce_100 = happySpecReduce_2  22# happyReduction_100
+happyReduction_100 happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymLambda happy_var_1) -> 
+	case happyOut42 happy_x_2 of { happy_var_2 -> 
+	happyIn28
+		 (let (bs, h) = happy_var_2; r = fuseRange happy_var_1 bs in
+                                     if null bs then AbsurdLam r h else
+                                     Lam r bs (AbsurdLam r h)
+	)}}
+
+happyReduce_101 = happyReduce 4# 22# happyReduction_101
+happyReduction_101 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOutTok happy_x_1 of { (TokKeyword KwLet happy_var_1) -> 
+	case happyOut95 happy_x_2 of { happy_var_2 -> 
+	case happyOut24 happy_x_4 of { happy_var_4 -> 
+	happyIn28
+		 (Let (fuseRange happy_var_1 happy_var_4) happy_var_2 happy_var_4
+	) `HappyStk` happyRest}}}
+
+happyReduce_102 = happySpecReduce_1  22# happyReduction_102
+happyReduction_102 happy_x_1
+	 =  case happyOut30 happy_x_1 of { happy_var_1 -> 
+	happyIn28
+		 (happy_var_1
+	)}
+
+happyReduce_103 = happySpecReduce_1  23# happyReduction_103
+happyReduction_103 happy_x_1
+	 =  case happyOut30 happy_x_1 of { happy_var_1 -> 
+	happyIn29
+		 ([happy_var_1]
+	)}
+
+happyReduce_104 = happySpecReduce_2  23# happyReduction_104
+happyReduction_104 happy_x_2
+	happy_x_1
+	 =  case happyOut30 happy_x_1 of { happy_var_1 -> 
+	case happyOut29 happy_x_2 of { happy_var_2 -> 
+	happyIn29
+		 (happy_var_1 : happy_var_2
+	)}}
+
+happyReduce_105 = happySpecReduce_1  24# happyReduction_105
+happyReduction_105 happy_x_1
+	 =  case happyOut17 happy_x_1 of { happy_var_1 -> 
+	happyIn30
+		 (Ident happy_var_1
+	)}
+
+happyReduce_106 = happySpecReduce_1  24# happyReduction_106
+happyReduction_106 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokLiteral happy_var_1) -> 
+	happyIn30
+		 (Lit happy_var_1
+	)}
+
+happyReduce_107 = happySpecReduce_1  24# happyReduction_107
+happyReduction_107 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymQuestionMark happy_var_1) -> 
+	happyIn30
+		 (QuestionMark (getRange happy_var_1) Nothing
+	)}
+
+happyReduce_108 = happySpecReduce_1  24# happyReduction_108
+happyReduction_108 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymUnderscore happy_var_1) -> 
+	happyIn30
+		 (Underscore (getRange happy_var_1) Nothing
+	)}
+
+happyReduce_109 = happySpecReduce_1  24# happyReduction_109
+happyReduction_109 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwProp happy_var_1) -> 
+	happyIn30
+		 (Prop (getRange happy_var_1)
+	)}
+
+happyReduce_110 = happySpecReduce_1  24# happyReduction_110
+happyReduction_110 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwSet happy_var_1) -> 
+	happyIn30
+		 (Set (getRange happy_var_1)
+	)}
+
+happyReduce_111 = happySpecReduce_1  24# happyReduction_111
+happyReduction_111 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSetN happy_var_1) -> 
+	happyIn30
+		 (SetN (getRange (fst happy_var_1)) (snd happy_var_1)
+	)}
+
+happyReduce_112 = happySpecReduce_3  24# happyReduction_112
+happyReduction_112 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenBrace happy_var_1) -> 
+	case happyOut24 happy_x_2 of { happy_var_2 -> 
+	case happyOutTok happy_x_3 of { (TokSymbol SymCloseBrace happy_var_3) -> 
+	happyIn30
+		 (HiddenArg (fuseRange happy_var_1 happy_var_3) (unnamed happy_var_2)
+	)}}}
+
+happyReduce_113 = happyReduce 5# 24# happyReduction_113
+happyReduction_113 (happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenBrace happy_var_1) -> 
+	case happyOut16 happy_x_2 of { happy_var_2 -> 
+	case happyOut24 happy_x_4 of { happy_var_4 -> 
+	case happyOutTok happy_x_5 of { (TokSymbol SymCloseBrace happy_var_5) -> 
+	happyIn30
+		 (HiddenArg (fuseRange happy_var_1 happy_var_5) (named (show happy_var_2) happy_var_4)
+	) `HappyStk` happyRest}}}}
+
+happyReduce_114 = happySpecReduce_3  24# happyReduction_114
+happyReduction_114 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenParen happy_var_1) -> 
+	case happyOut24 happy_x_2 of { happy_var_2 -> 
+	case happyOutTok happy_x_3 of { (TokSymbol SymCloseParen happy_var_3) -> 
+	happyIn30
+		 (Paren (fuseRange happy_var_1 happy_var_3) happy_var_2
+	)}}}
+
+happyReduce_115 = happySpecReduce_2  24# happyReduction_115
+happyReduction_115 happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenBrace happy_var_1) -> 
+	case happyOutTok happy_x_2 of { (TokSymbol SymCloseBrace happy_var_2) -> 
+	happyIn30
+		 (let r = fuseRange happy_var_1 happy_var_2 in HiddenArg r $ unnamed $ Absurd r
+	)}}
+
+happyReduce_116 = happySpecReduce_2  24# happyReduction_116
+happyReduction_116 happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenParen happy_var_1) -> 
+	case happyOutTok happy_x_2 of { (TokSymbol SymCloseParen happy_var_2) -> 
+	happyIn30
+		 (Absurd (fuseRange happy_var_1 happy_var_2)
+	)}}
+
+happyReduce_117 = happySpecReduce_3  24# happyReduction_117
+happyReduction_117 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut16 happy_x_1 of { happy_var_1 -> 
+	case happyOut30 happy_x_3 of { happy_var_3 -> 
+	happyIn30
+		 (As (fuseRange happy_var_1 happy_var_3) happy_var_1 happy_var_3
+	)}}
+
+happyReduce_118 = happySpecReduce_2  24# happyReduction_118
+happyReduction_118 happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymDot happy_var_1) -> 
+	case happyOut30 happy_x_2 of { happy_var_2 -> 
+	happyIn30
+		 (Dot (fuseRange happy_var_1 happy_var_2) happy_var_2
+	)}}
+
+happyReduce_119 = happyReduce 4# 24# happyReduction_119
+happyReduction_119 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOutTok happy_x_1 of { (TokKeyword KwRecord happy_var_1) -> 
+	case happyOut31 happy_x_3 of { happy_var_3 -> 
+	case happyOutTok happy_x_4 of { (TokSymbol SymCloseBrace happy_var_4) -> 
+	happyIn30
+		 (Rec (getRange (happy_var_1,happy_var_4)) happy_var_3
+	) `HappyStk` happyRest}}}
+
+happyReduce_120 = happySpecReduce_0  25# happyReduction_120
+happyReduction_120  =  happyIn31
+		 ([]
+	)
+
+happyReduce_121 = happySpecReduce_1  25# happyReduction_121
+happyReduction_121 happy_x_1
+	 =  case happyOut32 happy_x_1 of { happy_var_1 -> 
+	happyIn31
+		 (happy_var_1
+	)}
+
+happyReduce_122 = happySpecReduce_1  26# happyReduction_122
+happyReduction_122 happy_x_1
+	 =  case happyOut33 happy_x_1 of { happy_var_1 -> 
+	happyIn32
+		 ([happy_var_1]
+	)}
+
+happyReduce_123 = happySpecReduce_3  26# happyReduction_123
+happyReduction_123 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut33 happy_x_1 of { happy_var_1 -> 
+	case happyOut32 happy_x_3 of { happy_var_3 -> 
+	happyIn32
+		 (happy_var_1 : happy_var_3
+	)}}
+
+happyReduce_124 = happySpecReduce_3  27# happyReduction_124
+happyReduction_124 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut16 happy_x_1 of { happy_var_1 -> 
+	case happyOut24 happy_x_3 of { happy_var_3 -> 
+	happyIn33
+		 ((happy_var_1, happy_var_3)
+	)}}
+
+happyReduce_125 = happySpecReduce_2  28# happyReduction_125
+happyReduction_125 happy_x_2
+	happy_x_1
+	 =  case happyOut35 happy_x_1 of { happy_var_1 -> 
+	happyIn34
+		 (happy_var_1
+	)}
+
+happyReduce_126 = happySpecReduce_1  29# happyReduction_126
+happyReduction_126 happy_x_1
+	 =  case happyOut36 happy_x_1 of { happy_var_1 -> 
+	happyIn35
+		 ({-TeleBind-} happy_var_1
+	)}
+
+happyReduce_127 = happySpecReduce_2  30# happyReduction_127
+happyReduction_127 happy_x_2
+	happy_x_1
+	 =  case happyOut37 happy_x_1 of { happy_var_1 -> 
+	case happyOut36 happy_x_2 of { happy_var_2 -> 
+	happyIn36
+		 (happy_var_1 : happy_var_2
+	)}}
+
+happyReduce_128 = happySpecReduce_1  30# happyReduction_128
+happyReduction_128 happy_x_1
+	 =  case happyOut37 happy_x_1 of { happy_var_1 -> 
+	happyIn36
+		 ([happy_var_1]
+	)}
+
+happyReduce_129 = happySpecReduce_3  31# happyReduction_129
+happyReduction_129 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenParen happy_var_1) -> 
+	case happyOut38 happy_x_2 of { happy_var_2 -> 
+	case happyOutTok happy_x_3 of { (TokSymbol SymCloseParen happy_var_3) -> 
+	happyIn37
+		 (TypedBindings (fuseRange happy_var_1 happy_var_3) NotHidden happy_var_2
+	)}}}
+
+happyReduce_130 = happySpecReduce_3  31# happyReduction_130
+happyReduction_130 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenBrace happy_var_1) -> 
+	case happyOut38 happy_x_2 of { happy_var_2 -> 
+	case happyOutTok happy_x_3 of { (TokSymbol SymCloseBrace happy_var_3) -> 
+	happyIn37
+		 (TypedBindings (fuseRange happy_var_1 happy_var_3) Hidden    happy_var_2
+	)}}}
+
+happyReduce_131 = happySpecReduce_1  32# happyReduction_131
+happyReduction_131 happy_x_1
+	 =  case happyOut40 happy_x_1 of { happy_var_1 -> 
+	happyIn38
+		 ([happy_var_1]
+	)}
+
+happyReduce_132 = happySpecReduce_3  32# happyReduction_132
+happyReduction_132 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut40 happy_x_1 of { happy_var_1 -> 
+	case happyOut39 happy_x_3 of { happy_var_3 -> 
+	happyIn38
+		 (happy_var_1 : happy_var_3
+	)}}
+
+happyReduce_133 = happySpecReduce_1  33# happyReduction_133
+happyReduction_133 happy_x_1
+	 =  case happyOut38 happy_x_1 of { happy_var_1 -> 
+	happyIn39
+		 (happy_var_1
+	)}
+
+happyReduce_134 = happySpecReduce_3  33# happyReduction_134
+happyReduction_134 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut24 happy_x_1 of { happy_var_1 -> 
+	case happyOut39 happy_x_3 of { happy_var_3 -> 
+	happyIn39
+		 (TNoBind happy_var_1 : happy_var_3
+	)}}
+
+happyReduce_135 = happySpecReduce_1  33# happyReduction_135
+happyReduction_135 happy_x_1
+	 =  case happyOut24 happy_x_1 of { happy_var_1 -> 
+	happyIn39
+		 ([TNoBind happy_var_1]
+	)}
+
+happyReduce_136 = happySpecReduce_3  34# happyReduction_136
+happyReduction_136 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut21 happy_x_1 of { happy_var_1 -> 
+	case happyOut24 happy_x_3 of { happy_var_3 -> 
+	happyIn40
+		 (TBind (fuseRange happy_var_1 happy_var_3) (map mkBoundName_ happy_var_1) happy_var_3
+	)}}
+
+happyReduce_137 = happyMonadReduce 2# 35# happyReduction_137
+happyReduction_137 (happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (case happyOut43 happy_x_1 of { happy_var_1 -> 
+	(
+      case last happy_var_1 of
+        Left _  -> parseError "Absurd lambda cannot have a body."
+        _       -> return [ b | Right b <- happy_var_1 ])}
+	) (\r -> happyReturn (happyIn41 r))
+
+happyReduce_138 = happyMonadReduce 1# 36# happyReduction_138
+happyReduction_138 (happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (case happyOut43 happy_x_1 of { happy_var_1 -> 
+	(
+    case last happy_var_1 of
+      Right _ -> parseError "Missing body for lambda"
+      Left h  -> return ([ b | Right b <- init happy_var_1], h))}
+	) (\r -> happyReturn (happyIn42 r))
+
+happyReduce_139 = happySpecReduce_2  37# happyReduction_139
+happyReduction_139 happy_x_2
+	happy_x_1
+	 =  case happyOut45 happy_x_1 of { happy_var_1 -> 
+	case happyOut43 happy_x_2 of { happy_var_2 -> 
+	happyIn43
+		 (map Right happy_var_1 ++ happy_var_2
+	)}}
+
+happyReduce_140 = happySpecReduce_2  37# happyReduction_140
+happyReduction_140 happy_x_2
+	happy_x_1
+	 =  case happyOut37 happy_x_1 of { happy_var_1 -> 
+	case happyOut43 happy_x_2 of { happy_var_2 -> 
+	happyIn43
+		 (Right (DomainFull happy_var_1) : happy_var_2
+	)}}
+
+happyReduce_141 = happySpecReduce_1  37# happyReduction_141
+happyReduction_141 happy_x_1
+	 =  case happyOut45 happy_x_1 of { happy_var_1 -> 
+	happyIn43
+		 (map Right happy_var_1
+	)}
+
+happyReduce_142 = happySpecReduce_1  37# happyReduction_142
+happyReduction_142 happy_x_1
+	 =  case happyOut37 happy_x_1 of { happy_var_1 -> 
+	happyIn43
+		 ([Right $ DomainFull happy_var_1]
+	)}
+
+happyReduce_143 = happySpecReduce_2  37# happyReduction_143
+happyReduction_143 happy_x_2
+	happy_x_1
+	 =  happyIn43
+		 ([Left NotHidden]
+	)
+
+happyReduce_144 = happySpecReduce_2  37# happyReduction_144
+happyReduction_144 happy_x_2
+	happy_x_1
+	 =  happyIn43
+		 ([Left Hidden]
+	)
+
+happyReduce_145 = happySpecReduce_2  38# happyReduction_145
+happyReduction_145 happy_x_2
+	happy_x_1
+	 =  case happyOut45 happy_x_1 of { happy_var_1 -> 
+	case happyOut44 happy_x_2 of { happy_var_2 -> 
+	happyIn44
+		 (happy_var_1 ++ happy_var_2
+	)}}
+
+happyReduce_146 = happySpecReduce_2  38# happyReduction_146
+happyReduction_146 happy_x_2
+	happy_x_1
+	 =  case happyOut37 happy_x_1 of { happy_var_1 -> 
+	case happyOut44 happy_x_2 of { happy_var_2 -> 
+	happyIn44
+		 (DomainFull happy_var_1 : happy_var_2
+	)}}
+
+happyReduce_147 = happySpecReduce_0  38# happyReduction_147
+happyReduction_147  =  happyIn44
+		 ([]
+	)
+
+happyReduce_148 = happySpecReduce_1  39# happyReduction_148
+happyReduction_148 happy_x_1
+	 =  case happyOut19 happy_x_1 of { happy_var_1 -> 
+	happyIn45
+		 ([DomainFree NotHidden $ mkBoundName_ happy_var_1]
+	)}
+
+happyReduce_149 = happySpecReduce_3  39# happyReduction_149
+happyReduction_149 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut21 happy_x_2 of { happy_var_2 -> 
+	happyIn45
+		 (map (DomainFree Hidden . mkBoundName_) happy_var_2
+	)}
+
+happyReduce_150 = happySpecReduce_1  40# happyReduction_150
+happyReduction_150 happy_x_1
+	 =  case happyOut47 happy_x_1 of { happy_var_1 -> 
+	happyIn46
+		 ((Nothing, happy_var_1)
+	)}
+
+happyReduce_151 = happyMonadReduce 3# 40# happyReduction_151
+happyReduction_151 (happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (case happyOutTok happy_x_1 of { (TokId happy_var_1) -> 
+	case happyOut16 happy_x_2 of { happy_var_2 -> 
+	case happyOut47 happy_x_3 of { happy_var_3 -> 
+	( isName "as" happy_var_1 >>
+                               return (Just (AsName happy_var_2 (getRange (fst happy_var_1))), happy_var_3))}}}
+	) (\r -> happyReturn (happyIn46 r))
+
+happyReduce_152 = happyMonadReduce 1# 41# happyReduction_152
+happyReduction_152 (happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (case happyOut48 happy_x_1 of { happy_var_1 -> 
+	( verifyImportDirective happy_var_1)}
+	) (\r -> happyReturn (happyIn47 r))
+
+happyReduce_153 = happySpecReduce_2  42# happyReduction_153
+happyReduction_153 happy_x_2
+	happy_x_1
+	 =  case happyOut49 happy_x_2 of { happy_var_2 -> 
+	happyIn48
+		 (happy_var_2 { publicOpen = True }
+	)}
+
+happyReduce_154 = happySpecReduce_1  42# happyReduction_154
+happyReduction_154 happy_x_1
+	 =  case happyOut49 happy_x_1 of { happy_var_1 -> 
+	happyIn48
+		 (happy_var_1
+	)}
+
+happyReduce_155 = happySpecReduce_2  43# happyReduction_155
+happyReduction_155 happy_x_2
+	happy_x_1
+	 =  case happyOut50 happy_x_1 of { happy_var_1 -> 
+	case happyOut51 happy_x_2 of { happy_var_2 -> 
+	happyIn49
+		 (ImportDirective (fuseRange happy_var_1 happy_var_2) happy_var_1 happy_var_2 False
+	)}}
+
+happyReduce_156 = happySpecReduce_1  43# happyReduction_156
+happyReduction_156 happy_x_1
+	 =  case happyOut51 happy_x_1 of { happy_var_1 -> 
+	happyIn49
+		 (ImportDirective (getRange happy_var_1) (Hiding []) happy_var_1 False
+	)}
+
+happyReduce_157 = happySpecReduce_1  43# happyReduction_157
+happyReduction_157 happy_x_1
+	 =  case happyOut50 happy_x_1 of { happy_var_1 -> 
+	happyIn49
+		 (ImportDirective (getRange happy_var_1) happy_var_1 [] False
+	)}
+
+happyReduce_158 = happySpecReduce_0  43# happyReduction_158
+happyReduction_158  =  happyIn49
+		 (ImportDirective noRange (Hiding []) [] False
+	)
+
+happyReduce_159 = happyReduce 4# 44# happyReduction_159
+happyReduction_159 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut56 happy_x_3 of { happy_var_3 -> 
+	happyIn50
+		 (Using happy_var_3
+	) `HappyStk` happyRest}
+
+happyReduce_160 = happyReduce 4# 44# happyReduction_160
+happyReduction_160 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut57 happy_x_3 of { happy_var_3 -> 
+	happyIn50
+		 (Hiding happy_var_3
+	) `HappyStk` happyRest}
+
+happyReduce_161 = happyReduce 4# 45# happyReduction_161
+happyReduction_161 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut52 happy_x_3 of { happy_var_3 -> 
+	happyIn51
+		 (happy_var_3
+	) `HappyStk` happyRest}
+
+happyReduce_162 = happySpecReduce_3  46# happyReduction_162
+happyReduction_162 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut53 happy_x_1 of { happy_var_1 -> 
+	case happyOut52 happy_x_3 of { happy_var_3 -> 
+	happyIn52
+		 (happy_var_1 : happy_var_3
+	)}}
+
+happyReduce_163 = happySpecReduce_1  46# happyReduction_163
+happyReduction_163 happy_x_1
+	 =  case happyOut53 happy_x_1 of { happy_var_1 -> 
+	happyIn52
+		 ([happy_var_1]
+	)}
+
+happyReduce_164 = happySpecReduce_3  47# happyReduction_164
+happyReduction_164 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut54 happy_x_1 of { happy_var_1 -> 
+	case happyOutTok happy_x_2 of { (TokKeyword KwTo happy_var_2) -> 
+	case happyOut16 happy_x_3 of { happy_var_3 -> 
+	happyIn53
+		 (Renaming happy_var_1 happy_var_3 (getRange happy_var_2)
+	)}}}
+
+happyReduce_165 = happySpecReduce_2  48# happyReduction_165
+happyReduction_165 happy_x_2
+	happy_x_1
+	 =  case happyOut16 happy_x_2 of { happy_var_2 -> 
+	happyIn54
+		 (ImportedName happy_var_2
+	)}
+
+happyReduce_166 = happySpecReduce_3  48# happyReduction_166
+happyReduction_166 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut16 happy_x_3 of { happy_var_3 -> 
+	happyIn54
+		 (ImportedModule happy_var_3
+	)}
+
+happyReduce_167 = happySpecReduce_1  49# happyReduction_167
+happyReduction_167 happy_x_1
+	 =  case happyOut16 happy_x_1 of { happy_var_1 -> 
+	happyIn55
+		 (ImportedName happy_var_1
+	)}
+
+happyReduce_168 = happySpecReduce_2  49# happyReduction_168
+happyReduction_168 happy_x_2
+	happy_x_1
+	 =  case happyOut16 happy_x_2 of { happy_var_2 -> 
+	happyIn55
+		 (ImportedModule happy_var_2
+	)}
+
+happyReduce_169 = happySpecReduce_0  50# happyReduction_169
+happyReduction_169  =  happyIn56
+		 ([]
+	)
+
+happyReduce_170 = happySpecReduce_1  50# happyReduction_170
+happyReduction_170 happy_x_1
+	 =  case happyOut57 happy_x_1 of { happy_var_1 -> 
+	happyIn56
+		 (happy_var_1
+	)}
+
+happyReduce_171 = happySpecReduce_1  51# happyReduction_171
+happyReduction_171 happy_x_1
+	 =  case happyOut55 happy_x_1 of { happy_var_1 -> 
+	happyIn57
+		 ([happy_var_1]
+	)}
+
+happyReduce_172 = happySpecReduce_3  51# happyReduction_172
+happyReduction_172 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut55 happy_x_1 of { happy_var_1 -> 
+	case happyOut57 happy_x_3 of { happy_var_3 -> 
+	happyIn57
+		 (happy_var_1 : happy_var_3
+	)}}
+
+happyReduce_173 = happyMonadReduce 2# 52# happyReduction_173
+happyReduction_173 (happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (case happyOut25 happy_x_1 of { happy_var_1 -> 
+	case happyOut60 happy_x_2 of { happy_var_2 -> 
+	( exprToLHS happy_var_1 >>= \p -> return (p happy_var_2))}}
+	) (\r -> happyReturn (happyIn58 r))
+
+happyReduce_174 = happySpecReduce_3  52# happyReduction_174
+happyReduction_174 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymEllipsis happy_var_1) -> 
+	case happyOut59 happy_x_2 of { happy_var_2 -> 
+	case happyOut60 happy_x_3 of { happy_var_3 -> 
+	happyIn58
+		 (Ellipsis (fuseRange happy_var_1 happy_var_3) happy_var_2 happy_var_3
+	)}}}
+
+happyReduce_175 = happySpecReduce_0  53# happyReduction_175
+happyReduction_175  =  happyIn59
+		 ([]
+	)
+
+happyReduce_176 = happyMonadReduce 3# 53# happyReduction_176
+happyReduction_176 (happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (case happyOut29 happy_x_2 of { happy_var_2 -> 
+	case happyOut59 happy_x_3 of { happy_var_3 -> 
+	( exprToPattern (RawApp (getRange happy_var_2) happy_var_2) >>= \p ->
+		   return (p : happy_var_3))}}
+	) (\r -> happyReturn (happyIn59 r))
+
+happyReduce_177 = happySpecReduce_0  54# happyReduction_177
+happyReduction_177  =  happyIn60
+		 ([]
+	)
+
+happyReduce_178 = happySpecReduce_2  54# happyReduction_178
+happyReduction_178 happy_x_2
+	happy_x_1
+	 =  case happyOut24 happy_x_2 of { happy_var_2 -> 
+	happyIn60
+		 (case happy_var_2 of { WithApp _ e es -> e : es; e -> [e] }
+	)}
+
+happyReduce_179 = happySpecReduce_0  55# happyReduction_179
+happyReduction_179  =  happyIn61
+		 (NoWhere
+	)
+
+happyReduce_180 = happySpecReduce_2  55# happyReduction_180
+happyReduction_180 happy_x_2
+	happy_x_1
+	 =  case happyOut95 happy_x_2 of { happy_var_2 -> 
+	happyIn61
+		 (AnyWhere happy_var_2
+	)}
+
+happyReduce_181 = happyReduce 4# 55# happyReduction_181
+happyReduction_181 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut16 happy_x_2 of { happy_var_2 -> 
+	case happyOut95 happy_x_4 of { happy_var_4 -> 
+	happyIn61
+		 (SomeWhere happy_var_2 happy_var_4
+	) `HappyStk` happyRest}}
+
+happyReduce_182 = happySpecReduce_1  56# happyReduction_182
+happyReduction_182 happy_x_1
+	 =  case happyOut63 happy_x_1 of { happy_var_1 -> 
+	happyIn62
+		 ([happy_var_1]
+	)}
+
+happyReduce_183 = happySpecReduce_1  56# happyReduction_183
+happyReduction_183 happy_x_1
+	 =  case happyOut69 happy_x_1 of { happy_var_1 -> 
+	happyIn62
+		 (happy_var_1
+	)}
+
+happyReduce_184 = happySpecReduce_1  56# happyReduction_184
+happyReduction_184 happy_x_1
+	 =  case happyOut64 happy_x_1 of { happy_var_1 -> 
+	happyIn62
+		 ([happy_var_1]
+	)}
+
+happyReduce_185 = happySpecReduce_1  56# happyReduction_185
+happyReduction_185 happy_x_1
+	 =  case happyOut66 happy_x_1 of { happy_var_1 -> 
+	happyIn62
+		 ([happy_var_1]
+	)}
+
+happyReduce_186 = happySpecReduce_1  56# happyReduction_186
+happyReduction_186 happy_x_1
+	 =  case happyOut67 happy_x_1 of { happy_var_1 -> 
+	happyIn62
+		 ([happy_var_1]
+	)}
+
+happyReduce_187 = happySpecReduce_1  56# happyReduction_187
+happyReduction_187 happy_x_1
+	 =  case happyOut68 happy_x_1 of { happy_var_1 -> 
+	happyIn62
+		 ([happy_var_1]
+	)}
+
+happyReduce_188 = happySpecReduce_1  56# happyReduction_188
+happyReduction_188 happy_x_1
+	 =  case happyOut70 happy_x_1 of { happy_var_1 -> 
+	happyIn62
+		 ([happy_var_1]
+	)}
+
+happyReduce_189 = happySpecReduce_1  56# happyReduction_189
+happyReduction_189 happy_x_1
+	 =  case happyOut71 happy_x_1 of { happy_var_1 -> 
+	happyIn62
+		 ([happy_var_1]
+	)}
+
+happyReduce_190 = happySpecReduce_1  56# happyReduction_190
+happyReduction_190 happy_x_1
+	 =  case happyOut72 happy_x_1 of { happy_var_1 -> 
+	happyIn62
+		 ([happy_var_1]
+	)}
+
+happyReduce_191 = happySpecReduce_1  56# happyReduction_191
+happyReduction_191 happy_x_1
+	 =  case happyOut73 happy_x_1 of { happy_var_1 -> 
+	happyIn62
+		 ([happy_var_1]
+	)}
+
+happyReduce_192 = happySpecReduce_1  56# happyReduction_192
+happyReduction_192 happy_x_1
+	 =  case happyOut74 happy_x_1 of { happy_var_1 -> 
+	happyIn62
+		 ([happy_var_1]
+	)}
+
+happyReduce_193 = happySpecReduce_1  56# happyReduction_193
+happyReduction_193 happy_x_1
+	 =  case happyOut75 happy_x_1 of { happy_var_1 -> 
+	happyIn62
+		 ([happy_var_1]
+	)}
+
+happyReduce_194 = happySpecReduce_1  56# happyReduction_194
+happyReduction_194 happy_x_1
+	 =  case happyOut78 happy_x_1 of { happy_var_1 -> 
+	happyIn62
+		 ([happy_var_1]
+	)}
+
+happyReduce_195 = happySpecReduce_1  56# happyReduction_195
+happyReduction_195 happy_x_1
+	 =  case happyOut77 happy_x_1 of { happy_var_1 -> 
+	happyIn62
+		 ([happy_var_1]
+	)}
+
+happyReduce_196 = happySpecReduce_1  56# happyReduction_196
+happyReduction_196 happy_x_1
+	 =  case happyOut79 happy_x_1 of { happy_var_1 -> 
+	happyIn62
+		 ([happy_var_1]
+	)}
+
+happyReduce_197 = happySpecReduce_1  56# happyReduction_197
+happyReduction_197 happy_x_1
+	 =  case happyOut82 happy_x_1 of { happy_var_1 -> 
+	happyIn62
+		 ([happy_var_1]
+	)}
+
+happyReduce_198 = happySpecReduce_3  57# happyReduction_198
+happyReduction_198 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut16 happy_x_1 of { happy_var_1 -> 
+	case happyOut24 happy_x_3 of { happy_var_3 -> 
+	happyIn63
+		 (TypeSig happy_var_1 happy_var_3
+	)}}
+
+happyReduce_199 = happySpecReduce_3  58# happyReduction_199
+happyReduction_199 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut58 happy_x_1 of { happy_var_1 -> 
+	case happyOut65 happy_x_2 of { happy_var_2 -> 
+	case happyOut61 happy_x_3 of { happy_var_3 -> 
+	happyIn64
+		 (FunClause happy_var_1 happy_var_2 happy_var_3
+	)}}}
+
+happyReduce_200 = happySpecReduce_2  59# happyReduction_200
+happyReduction_200 happy_x_2
+	happy_x_1
+	 =  case happyOut24 happy_x_2 of { happy_var_2 -> 
+	happyIn65
+		 (RHS happy_var_2
+	)}
+
+happyReduce_201 = happySpecReduce_0  59# happyReduction_201
+happyReduction_201  =  happyIn65
+		 (AbsurdRHS
+	)
+
+happyReduce_202 = happyReduce 7# 60# happyReduction_202
+happyReduction_202 (happy_x_7 `HappyStk`
+	happy_x_6 `HappyStk`
+	happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOutTok happy_x_1 of { (TokKeyword KwData happy_var_1) -> 
+	case happyOut16 happy_x_2 of { happy_var_2 -> 
+	case happyOut44 happy_x_3 of { happy_var_3 -> 
+	case happyOut24 happy_x_5 of { happy_var_5 -> 
+	case happyOutTok happy_x_6 of { (TokKeyword KwWhere happy_var_6) -> 
+	case happyOut94 happy_x_7 of { happy_var_7 -> 
+	happyIn66
+		 (Data (getRange (happy_var_1, happy_var_6, happy_var_7)) Inductive happy_var_2 (map addType happy_var_3) happy_var_5 happy_var_7
+	) `HappyStk` happyRest}}}}}}
+
+happyReduce_203 = happyReduce 7# 60# happyReduction_203
+happyReduction_203 (happy_x_7 `HappyStk`
+	happy_x_6 `HappyStk`
+	happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOutTok happy_x_1 of { (TokKeyword KwCoData happy_var_1) -> 
+	case happyOut16 happy_x_2 of { happy_var_2 -> 
+	case happyOut44 happy_x_3 of { happy_var_3 -> 
+	case happyOut24 happy_x_5 of { happy_var_5 -> 
+	case happyOutTok happy_x_6 of { (TokKeyword KwWhere happy_var_6) -> 
+	case happyOut94 happy_x_7 of { happy_var_7 -> 
+	happyIn66
+		 (Data (getRange (happy_var_1, happy_var_6, happy_var_7)) CoInductive happy_var_2 (map addType happy_var_3) happy_var_5 happy_var_7
+	) `HappyStk` happyRest}}}}}}
+
+happyReduce_204 = happyReduce 7# 61# happyReduction_204
+happyReduction_204 (happy_x_7 `HappyStk`
+	happy_x_6 `HappyStk`
+	happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOutTok happy_x_1 of { (TokKeyword KwRecord happy_var_1) -> 
+	case happyOut16 happy_x_2 of { happy_var_2 -> 
+	case happyOut44 happy_x_3 of { happy_var_3 -> 
+	case happyOut24 happy_x_5 of { happy_var_5 -> 
+	case happyOutTok happy_x_6 of { (TokKeyword KwWhere happy_var_6) -> 
+	case happyOut96 happy_x_7 of { happy_var_7 -> 
+	happyIn67
+		 (Record (getRange (happy_var_1, happy_var_6, happy_var_7)) happy_var_2 (map addType happy_var_3) happy_var_5 happy_var_7
+	) `HappyStk` happyRest}}}}}}
+
+happyReduce_205 = happySpecReduce_3  62# happyReduction_205
+happyReduction_205 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInfix happy_var_1) -> 
+	case happyOut15 happy_x_2 of { happy_var_2 -> 
+	case happyOut20 happy_x_3 of { happy_var_3 -> 
+	happyIn68
+		 (Infix (NonAssoc (fuseRange happy_var_1 happy_var_3) happy_var_2) happy_var_3
+	)}}}
+
+happyReduce_206 = happySpecReduce_3  62# happyReduction_206
+happyReduction_206 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInfixL happy_var_1) -> 
+	case happyOut15 happy_x_2 of { happy_var_2 -> 
+	case happyOut20 happy_x_3 of { happy_var_3 -> 
+	happyIn68
+		 (Infix (LeftAssoc (fuseRange happy_var_1 happy_var_3) happy_var_2) happy_var_3
+	)}}}
+
+happyReduce_207 = happySpecReduce_3  62# happyReduction_207
+happyReduction_207 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInfixR happy_var_1) -> 
+	case happyOut15 happy_x_2 of { happy_var_2 -> 
+	case happyOut20 happy_x_3 of { happy_var_3 -> 
+	happyIn68
+		 (Infix (RightAssoc (fuseRange happy_var_1 happy_var_3) happy_var_2) happy_var_3
+	)}}}
+
+happyReduce_208 = happySpecReduce_2  63# happyReduction_208
+happyReduction_208 happy_x_2
+	happy_x_1
+	 =  case happyOut92 happy_x_2 of { happy_var_2 -> 
+	happyIn69
+		 (let toField (TypeSig x t) = Field x t in map toField happy_var_2
+	)}
+
+happyReduce_209 = happySpecReduce_2  64# happyReduction_209
+happyReduction_209 happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwMutual happy_var_1) -> 
+	case happyOut95 happy_x_2 of { happy_var_2 -> 
+	happyIn70
+		 (Mutual (fuseRange happy_var_1 happy_var_2) happy_var_2
+	)}}
+
+happyReduce_210 = happySpecReduce_2  65# happyReduction_210
+happyReduction_210 happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwAbstract happy_var_1) -> 
+	case happyOut95 happy_x_2 of { happy_var_2 -> 
+	happyIn71
+		 (Abstract (fuseRange happy_var_1 happy_var_2) happy_var_2
+	)}}
+
+happyReduce_211 = happySpecReduce_2  66# happyReduction_211
+happyReduction_211 happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPrivate happy_var_1) -> 
+	case happyOut95 happy_x_2 of { happy_var_2 -> 
+	happyIn72
+		 (Private (fuseRange happy_var_1 happy_var_2) happy_var_2
+	)}}
+
+happyReduce_212 = happySpecReduce_2  67# happyReduction_212
+happyReduction_212 happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPostulate happy_var_1) -> 
+	case happyOut92 happy_x_2 of { happy_var_2 -> 
+	happyIn73
+		 (Postulate (fuseRange happy_var_1 happy_var_2) happy_var_2
+	)}}
+
+happyReduce_213 = happySpecReduce_2  68# happyReduction_213
+happyReduction_213 happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPrimitive happy_var_1) -> 
+	case happyOut92 happy_x_2 of { happy_var_2 -> 
+	happyIn74
+		 (Primitive (fuseRange happy_var_1 happy_var_2) happy_var_2
+	)}}
+
+happyReduce_214 = happyReduce 4# 69# happyReduction_214
+happyReduction_214 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOutTok happy_x_1 of { (TokKeyword KwOpen happy_var_1) -> 
+	case happyOut18 happy_x_2 of { happy_var_2 -> 
+	case happyOut76 happy_x_3 of { happy_var_3 -> 
+	case happyOut47 happy_x_4 of { happy_var_4 -> 
+	happyIn75
+		 (let
+    { m   = happy_var_2
+    ; es  = happy_var_3
+    ; dir = happy_var_4
+    ; r   = getRange (happy_var_1, m, dir)
+    } in
+    case es of
+    { []  -> Open r m dir
+    ; _   -> Private r [ ModuleMacro r (noName $ beginningOf $ getRange happy_var_2) []
+                           (RawApp (fuseRange m es) (Ident m : es)) DoOpen dir
+                       ]
+    }
+	) `HappyStk` happyRest}}}}
+
+happyReduce_215 = happySpecReduce_0  70# happyReduction_215
+happyReduction_215  =  happyIn76
+		 ([]
+	)
+
+happyReduce_216 = happySpecReduce_2  70# happyReduction_216
+happyReduction_216 happy_x_2
+	happy_x_1
+	 =  case happyOut30 happy_x_1 of { happy_var_1 -> 
+	case happyOut76 happy_x_2 of { happy_var_2 -> 
+	happyIn76
+		 (happy_var_1 : happy_var_2
+	)}}
+
+happyReduce_217 = happyReduce 6# 71# happyReduction_217
+happyReduction_217 (happy_x_6 `HappyStk`
+	happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOutTok happy_x_1 of { (TokKeyword KwModule happy_var_1) -> 
+	case happyOut16 happy_x_2 of { happy_var_2 -> 
+	case happyOut44 happy_x_3 of { happy_var_3 -> 
+	case happyOut24 happy_x_5 of { happy_var_5 -> 
+	case happyOut47 happy_x_6 of { happy_var_6 -> 
+	happyIn77
+		 (ModuleMacro (getRange (happy_var_1, happy_var_5, happy_var_6)) happy_var_2 (map addType happy_var_3) happy_var_5 DontOpen happy_var_6
+	) `HappyStk` happyRest}}}}}
+
+happyReduce_218 = happyReduce 7# 71# happyReduction_218
+happyReduction_218 (happy_x_7 `HappyStk`
+	happy_x_6 `HappyStk`
+	happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOutTok happy_x_1 of { (TokKeyword KwOpen happy_var_1) -> 
+	case happyOut16 happy_x_3 of { happy_var_3 -> 
+	case happyOut44 happy_x_4 of { happy_var_4 -> 
+	case happyOut24 happy_x_6 of { happy_var_6 -> 
+	case happyOut47 happy_x_7 of { happy_var_7 -> 
+	happyIn77
+		 (ModuleMacro (getRange (happy_var_1, happy_var_6, happy_var_7)) happy_var_3 (map addType happy_var_4) happy_var_6 DoOpen happy_var_7
+	) `HappyStk` happyRest}}}}}
+
+happyReduce_219 = happySpecReduce_3  72# happyReduction_219
+happyReduction_219 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwImport happy_var_1) -> 
+	case happyOut18 happy_x_2 of { happy_var_2 -> 
+	case happyOut46 happy_x_3 of { happy_var_3 -> 
+	happyIn78
+		 (Import (getRange (happy_var_1,happy_var_2,snd happy_var_3)) happy_var_2 (fst happy_var_3) DontOpen (snd happy_var_3)
+	)}}}
+
+happyReduce_220 = happyReduce 4# 72# happyReduction_220
+happyReduction_220 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOutTok happy_x_1 of { (TokKeyword KwOpen happy_var_1) -> 
+	case happyOut18 happy_x_3 of { happy_var_3 -> 
+	case happyOut46 happy_x_4 of { happy_var_4 -> 
+	happyIn78
+		 (Import (getRange (happy_var_1,happy_var_3,snd happy_var_4)) happy_var_3 (fst happy_var_4) DoOpen (snd happy_var_4)
+	) `HappyStk` happyRest}}}
+
+happyReduce_221 = happyReduce 5# 73# happyReduction_221
+happyReduction_221 (happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOutTok happy_x_1 of { (TokKeyword KwModule happy_var_1) -> 
+	case happyOut16 happy_x_2 of { happy_var_2 -> 
+	case happyOut44 happy_x_3 of { happy_var_3 -> 
+	case happyOutTok happy_x_4 of { (TokKeyword KwWhere happy_var_4) -> 
+	case happyOut96 happy_x_5 of { happy_var_5 -> 
+	happyIn79
+		 (Module (getRange (happy_var_1,happy_var_4,happy_var_5)) (QName happy_var_2) (map addType happy_var_3) happy_var_5
+	) `HappyStk` happyRest}}}}}
+
+happyReduce_222 = happySpecReduce_2  74# happyReduction_222
+happyReduction_222 happy_x_2
+	happy_x_1
+	 =  case happyOut81 happy_x_2 of { happy_var_2 -> 
+	happyIn80
+		 ([happy_var_2]
+	)}
+
+happyReduce_223 = happySpecReduce_3  74# happyReduction_223
+happyReduction_223 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut78 happy_x_2 of { happy_var_2 -> 
+	case happyOut80 happy_x_3 of { happy_var_3 -> 
+	happyIn80
+		 (happy_var_2 : happy_var_3
+	)}}
+
+happyReduce_224 = happySpecReduce_3  74# happyReduction_224
+happyReduction_224 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut75 happy_x_2 of { happy_var_2 -> 
+	case happyOut80 happy_x_3 of { happy_var_3 -> 
+	happyIn80
+		 (happy_var_2 : happy_var_3
+	)}}
+
+happyReduce_225 = happyReduce 5# 75# happyReduction_225
+happyReduction_225 (happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOutTok happy_x_1 of { (TokKeyword KwModule happy_var_1) -> 
+	case happyOut18 happy_x_2 of { happy_var_2 -> 
+	case happyOut44 happy_x_3 of { happy_var_3 -> 
+	case happyOutTok happy_x_4 of { (TokKeyword KwWhere happy_var_4) -> 
+	case happyOut96 happy_x_5 of { happy_var_5 -> 
+	happyIn81
+		 (Module (getRange (happy_var_1,happy_var_4,happy_var_5)) happy_var_2 (map addType happy_var_3) happy_var_5
+	) `HappyStk` happyRest}}}}}
+
+happyReduce_226 = happySpecReduce_1  76# happyReduction_226
+happyReduction_226 happy_x_1
+	 =  case happyOut84 happy_x_1 of { happy_var_1 -> 
+	happyIn82
+		 (Pragma happy_var_1
+	)}
+
+happyReduce_227 = happySpecReduce_1  77# happyReduction_227
+happyReduction_227 happy_x_1
+	 =  case happyOut85 happy_x_1 of { happy_var_1 -> 
+	happyIn83
+		 (happy_var_1
+	)}
+
+happyReduce_228 = happySpecReduce_1  77# happyReduction_228
+happyReduction_228 happy_x_1
+	 =  case happyOut91 happy_x_1 of { happy_var_1 -> 
+	happyIn83
+		 (happy_var_1
+	)}
+
+happyReduce_229 = happySpecReduce_1  78# happyReduction_229
+happyReduction_229 happy_x_1
+	 =  case happyOut86 happy_x_1 of { happy_var_1 -> 
+	happyIn84
+		 (happy_var_1
+	)}
+
+happyReduce_230 = happySpecReduce_1  78# happyReduction_230
+happyReduction_230 happy_x_1
+	 =  case happyOut91 happy_x_1 of { happy_var_1 -> 
+	happyIn84
+		 (happy_var_1
+	)}
+
+happyReduce_231 = happySpecReduce_1  78# happyReduction_231
+happyReduction_231 happy_x_1
+	 =  case happyOut87 happy_x_1 of { happy_var_1 -> 
+	happyIn84
+		 (happy_var_1
+	)}
+
+happyReduce_232 = happySpecReduce_1  78# happyReduction_232
+happyReduction_232 happy_x_1
+	 =  case happyOut89 happy_x_1 of { happy_var_1 -> 
+	happyIn84
+		 (happy_var_1
+	)}
+
+happyReduce_233 = happySpecReduce_1  78# happyReduction_233
+happyReduction_233 happy_x_1
+	 =  case happyOut88 happy_x_1 of { happy_var_1 -> 
+	happyIn84
+		 (happy_var_1
+	)}
+
+happyReduce_234 = happySpecReduce_1  78# happyReduction_234
+happyReduction_234 happy_x_1
+	 =  case happyOut90 happy_x_1 of { happy_var_1 -> 
+	happyIn84
+		 (happy_var_1
+	)}
+
+happyReduce_235 = happyReduce 4# 79# happyReduction_235
+happyReduction_235 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> 
+	case happyOut22 happy_x_3 of { happy_var_3 -> 
+	case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> 
+	happyIn85
+		 (OptionsPragma (fuseRange happy_var_1 happy_var_4) happy_var_3
+	) `HappyStk` happyRest}}}
+
+happyReduce_236 = happyReduce 5# 80# happyReduction_236
+happyReduction_236 (happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> 
+	case happyOutTok happy_x_3 of { (TokString happy_var_3) -> 
+	case happyOut23 happy_x_4 of { happy_var_4 -> 
+	case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> 
+	happyIn86
+		 (BuiltinPragma (fuseRange happy_var_1 happy_var_5) (snd happy_var_3) (Ident happy_var_4)
+	) `HappyStk` happyRest}}}}
+
+happyReduce_237 = happyReduce 5# 81# happyReduction_237
+happyReduction_237 (happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> 
+	case happyOut23 happy_x_3 of { happy_var_3 -> 
+	case happyOut22 happy_x_4 of { happy_var_4 -> 
+	case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> 
+	happyIn87
+		 (CompiledPragma (fuseRange happy_var_1 happy_var_5) happy_var_3 (unwords happy_var_4)
+	) `HappyStk` happyRest}}}}
+
+happyReduce_238 = happyReduce 5# 82# happyReduction_238
+happyReduction_238 (happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> 
+	case happyOut23 happy_x_3 of { happy_var_3 -> 
+	case happyOut22 happy_x_4 of { happy_var_4 -> 
+	case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> 
+	happyIn88
+		 (CompiledTypePragma (fuseRange happy_var_1 happy_var_5) happy_var_3 (unwords happy_var_4)
+	) `HappyStk` happyRest}}}}
+
+happyReduce_239 = happyReduce 6# 83# happyReduction_239
+happyReduction_239 (happy_x_6 `HappyStk`
+	happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> 
+	case happyOut23 happy_x_3 of { happy_var_3 -> 
+	case happyOutTok happy_x_4 of { (TokString happy_var_4) -> 
+	case happyOut22 happy_x_5 of { happy_var_5 -> 
+	case happyOutTok happy_x_6 of { (TokSymbol SymClosePragma happy_var_6) -> 
+	happyIn89
+		 (CompiledDataPragma (fuseRange happy_var_1 happy_var_6) happy_var_3 (snd happy_var_4) happy_var_5
+	) `HappyStk` happyRest}}}}}
+
+happyReduce_240 = happyReduce 4# 84# happyReduction_240
+happyReduction_240 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> 
+	case happyOut22 happy_x_3 of { happy_var_3 -> 
+	case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> 
+	happyIn90
+		 (ImportPragma (fuseRange happy_var_1 happy_var_4) (unwords happy_var_3)
+	) `HappyStk` happyRest}}}
+
+happyReduce_241 = happyMonadReduce 5# 85# happyReduction_241
+happyReduction_241 (happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> 
+	case happyOutTok happy_x_3 of { (TokString happy_var_3) -> 
+	case happyOutTok happy_x_4 of { (TokString happy_var_4) -> 
+	case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> 
+	( do
+      let r = fuseRange happy_var_1 happy_var_5
+	  parseFile (i, f)
+	    | head f == '"' && last f == '"'  = return $ init (tail f)
+	    | otherwise	= parseErrorAt (iStart i) $ "Expected \"filename\", found " ++ f
+	  parseLine (i, l)
+	    | all isDigit l = return $ read l
+	    | otherwise	    = parseErrorAt (iStart i) $ "Expected line number, found " ++ l
+      line <- parseLine happy_var_3
+      file <- parseFile happy_var_4
+      currentPos <- fmap parsePos get
+      setParsePos $ Pn
+	{ srcFile = file
+	, posPos  = posPos currentPos
+	, posLine = line
+	, posCol  = 1
+	}
+      return $ LinePragma r line file)}}}}
+	) (\r -> happyReturn (happyIn91 r))
+
+happyReduce_242 = happyReduce 5# 86# happyReduction_242
+happyReduction_242 (happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut93 happy_x_3 of { happy_var_3 -> 
+	happyIn92
+		 (reverse happy_var_3
+	) `HappyStk` happyRest}
+
+happyReduce_243 = happyReduce 4# 87# happyReduction_243
+happyReduction_243 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut93 happy_x_1 of { happy_var_1 -> 
+	case happyOut63 happy_x_4 of { happy_var_4 -> 
+	happyIn93
+		 (happy_var_4 : happy_var_1
+	) `HappyStk` happyRest}}
+
+happyReduce_244 = happySpecReduce_2  87# happyReduction_244
+happyReduction_244 happy_x_2
+	happy_x_1
+	 =  case happyOut63 happy_x_2 of { happy_var_2 -> 
+	happyIn93
+		 ([happy_var_2]
+	)}
+
+happyReduce_245 = happySpecReduce_1  88# happyReduction_245
+happyReduction_245 happy_x_1
+	 =  case happyOut92 happy_x_1 of { happy_var_1 -> 
+	happyIn94
+		 (happy_var_1
+	)}
+
+happyReduce_246 = happyReduce 4# 88# happyReduction_246
+happyReduction_246 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = happyIn94
+		 ([]
+	) `HappyStk` happyRest
+
+happyReduce_247 = happyReduce 5# 89# happyReduction_247
+happyReduction_247 (happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut97 happy_x_3 of { happy_var_3 -> 
+	happyIn95
+		 (reverse happy_var_3
+	) `HappyStk` happyRest}
+
+happyReduce_248 = happyReduce 4# 90# happyReduction_248
+happyReduction_248 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = happyIn96
+		 ([]
+	) `HappyStk` happyRest
+
+happyReduce_249 = happySpecReduce_1  90# happyReduction_249
+happyReduction_249 happy_x_1
+	 =  case happyOut95 happy_x_1 of { happy_var_1 -> 
+	happyIn96
+		 (happy_var_1
+	)}
+
+happyReduce_250 = happyReduce 4# 91# happyReduction_250
+happyReduction_250 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut97 happy_x_1 of { happy_var_1 -> 
+	case happyOut62 happy_x_4 of { happy_var_4 -> 
+	happyIn97
+		 (reverse happy_var_4 ++ happy_var_1
+	) `HappyStk` happyRest}}
+
+happyReduce_251 = happySpecReduce_2  91# happyReduction_251
+happyReduction_251 happy_x_2
+	happy_x_1
+	 =  case happyOut62 happy_x_2 of { happy_var_2 -> 
+	happyIn97
+		 (reverse happy_var_2
+	)}
+
+happyNewToken action sts stk
+	= lexer(\tk -> 
+	let cont i = happyDoAction i tk action sts stk in
+	case tk of {
+	TokEOF -> happyDoAction 62# tk action sts stk;
+	TokKeyword KwLet happy_dollar_dollar -> cont 1#;
+	TokKeyword KwIn happy_dollar_dollar -> cont 2#;
+	TokKeyword KwWhere happy_dollar_dollar -> cont 3#;
+	TokKeyword KwWith happy_dollar_dollar -> cont 4#;
+	TokKeyword KwPostulate happy_dollar_dollar -> cont 5#;
+	TokKeyword KwPrimitive happy_dollar_dollar -> cont 6#;
+	TokKeyword KwOpen happy_dollar_dollar -> cont 7#;
+	TokKeyword KwImport happy_dollar_dollar -> cont 8#;
+	TokKeyword KwUsing happy_dollar_dollar -> cont 9#;
+	TokKeyword KwHiding happy_dollar_dollar -> cont 10#;
+	TokKeyword KwRenaming happy_dollar_dollar -> cont 11#;
+	TokKeyword KwTo happy_dollar_dollar -> cont 12#;
+	TokKeyword KwPublic happy_dollar_dollar -> cont 13#;
+	TokKeyword KwModule happy_dollar_dollar -> cont 14#;
+	TokKeyword KwData happy_dollar_dollar -> cont 15#;
+	TokKeyword KwCoData happy_dollar_dollar -> cont 16#;
+	TokKeyword KwRecord happy_dollar_dollar -> cont 17#;
+	TokKeyword KwField happy_dollar_dollar -> cont 18#;
+	TokKeyword KwInfix happy_dollar_dollar -> cont 19#;
+	TokKeyword KwInfixL happy_dollar_dollar -> cont 20#;
+	TokKeyword KwInfixR happy_dollar_dollar -> cont 21#;
+	TokKeyword KwMutual happy_dollar_dollar -> cont 22#;
+	TokKeyword KwAbstract happy_dollar_dollar -> cont 23#;
+	TokKeyword KwPrivate happy_dollar_dollar -> cont 24#;
+	TokKeyword KwProp happy_dollar_dollar -> cont 25#;
+	TokKeyword KwSet happy_dollar_dollar -> cont 26#;
+	TokKeyword KwForall happy_dollar_dollar -> cont 27#;
+	TokKeyword KwOPTIONS happy_dollar_dollar -> cont 28#;
+	TokKeyword KwBUILTIN happy_dollar_dollar -> cont 29#;
+	TokKeyword KwIMPORT happy_dollar_dollar -> cont 30#;
+	TokKeyword KwCOMPILED happy_dollar_dollar -> cont 31#;
+	TokKeyword KwCOMPILED_DATA happy_dollar_dollar -> cont 32#;
+	TokKeyword KwCOMPILED_TYPE happy_dollar_dollar -> cont 33#;
+	TokKeyword KwLINE happy_dollar_dollar -> cont 34#;
+	TokSetN happy_dollar_dollar -> cont 35#;
+	TokTeX happy_dollar_dollar -> cont 36#;
+	TokComment happy_dollar_dollar -> cont 37#;
+	TokSymbol SymEllipsis happy_dollar_dollar -> cont 38#;
+	TokSymbol SymDot happy_dollar_dollar -> cont 39#;
+	TokSymbol SymSemi happy_dollar_dollar -> cont 40#;
+	TokSymbol SymColon happy_dollar_dollar -> cont 41#;
+	TokSymbol SymEqual happy_dollar_dollar -> cont 42#;
+	TokSymbol SymUnderscore happy_dollar_dollar -> cont 43#;
+	TokSymbol SymQuestionMark happy_dollar_dollar -> cont 44#;
+	TokSymbol SymArrow happy_dollar_dollar -> cont 45#;
+	TokSymbol SymLambda happy_dollar_dollar -> cont 46#;
+	TokSymbol SymAs happy_dollar_dollar -> cont 47#;
+	TokSymbol SymBar happy_dollar_dollar -> cont 48#;
+	TokSymbol SymOpenParen happy_dollar_dollar -> cont 49#;
+	TokSymbol SymCloseParen happy_dollar_dollar -> cont 50#;
+	TokSymbol SymOpenBrace happy_dollar_dollar -> cont 51#;
+	TokSymbol SymCloseBrace happy_dollar_dollar -> cont 52#;
+	TokSymbol SymOpenVirtualBrace happy_dollar_dollar -> cont 53#;
+	TokSymbol SymCloseVirtualBrace happy_dollar_dollar -> cont 54#;
+	TokSymbol SymVirtualSemi happy_dollar_dollar -> cont 55#;
+	TokSymbol SymOpenPragma happy_dollar_dollar -> cont 56#;
+	TokSymbol SymClosePragma happy_dollar_dollar -> cont 57#;
+	TokId happy_dollar_dollar -> cont 58#;
+	TokQId happy_dollar_dollar -> cont 59#;
+	TokString happy_dollar_dollar -> cont 60#;
+	TokLiteral happy_dollar_dollar -> cont 61#;
+	_ -> happyError' tk
+	})
+
+happyError_ tk = happyError' tk
+
+happyThen :: () => Parser a -> (a -> Parser b) -> Parser b
+happyThen = (>>=)
+happyReturn :: () => a -> Parser a
+happyReturn = (return)
+happyThen1 = happyThen
+happyReturn1 :: () => a -> Parser a
+happyReturn1 = happyReturn
+happyError' :: () => Token -> Parser a
+happyError' tk = (\token -> happyError) tk
+
+tokensParser = happySomeParser where
+  happySomeParser = happyThen (happyParse 0#) (\x -> happyReturn (happyOut6 x))
+
+exprParser = happySomeParser where
+  happySomeParser = happyThen (happyParse 1#) (\x -> happyReturn (happyOut24 x))
+
+moduleParser = happySomeParser where
+  happySomeParser = happyThen (happyParse 2#) (\x -> happyReturn (happyOut10 x))
+
+happySeq = happyDontSeq
+
+
+{--------------------------------------------------------------------------
+    Parsers
+ --------------------------------------------------------------------------}
+
+-- | Parse the token stream. Used by the TeX compiler.
+tokensParser :: Parser [Token]
+
+-- | Parse an expression. Could be used in interactions.
+exprParser :: Parser Expr
+
+-- | Parse a module.
+moduleParser :: Parser ([Pragma], [Declaration])
+
+
+{--------------------------------------------------------------------------
+    Happy stuff
+ --------------------------------------------------------------------------}
+
+-- | Required by Happy.
+happyError :: Parser a
+happyError = parseError "Parse error"
+
+
+{--------------------------------------------------------------------------
+    Utility functions
+ --------------------------------------------------------------------------}
+
+-- | Create a name from a string.
+
+mkName :: (Interval, String) -> Parser Name
+mkName (i, s) = do
+    let xs = parts s
+    mapM_ isValidId xs
+    unless (alternating xs) $ fail $ "a name cannot contain two consecutive underscores"
+    return $ Name (getRange i) xs
+    where
+        parts :: String -> [NamePart]
+        parts ""        = []
+        parts ('_' : s) = Hole : parts s
+        parts s         = Id x : parts s'
+          where (x, s') = break (== '_') s
+
+	isValidId Hole   = return ()
+	isValidId (Id x) = case parse defaultParseFlags [0] (lexer return) x of
+	    ParseOk _ (TokId _) -> return ()
+	    _			-> fail $ "in the name " ++ s ++ ", the part " ++ x ++ " is not valid"
+
+	-- we know that there aren't two Ids in a row
+	alternating (Hole : Hole : _) = False
+	alternating (_ : xs)	      = alternating xs
+	alternating []		      = True
+
+-- | Create a qualified name from a list of strings
+mkQName :: [(Interval, String)] -> Parser QName
+mkQName ss = do
+    xs <- mapM mkName ss
+    return $ foldr Qual (QName $ last xs) (init xs)
+
+-- | Match a particular name.
+isName :: String -> (Interval, String) -> Parser ()
+isName s (_,s')
+    | s == s'	= return ()
+    | otherwise	= fail $ "expected " ++ s ++ ", found " ++ s'
+
+-- | Build a forall pi (forall x y z -> ...)
+forallPi :: [LamBinding] -> Expr -> Expr
+forallPi bs e = Pi (map addType bs) e
+
+-- | Converts lambda bindings to typed bindings.
+addType :: LamBinding -> TypedBindings
+addType (DomainFull b)	 = b
+addType (DomainFree h x) = TypedBindings r h [TBind r [x] $ Underscore r Nothing]
+  where r = getRange x
+
+-- | Check that an import directive doesn't contain repeated names
+verifyImportDirective :: ImportDirective -> Parser ImportDirective
+verifyImportDirective i =
+    case filter ((>1) . length)
+	 $ group
+	 $ sort xs
+    of
+	[]  -> return i
+	yss -> let Just pos = rStart $ getRange $ head $ concat yss in
+               parseErrorAt pos $
+		"repeated name" ++ s ++ " in import directive: " ++
+		concat (intersperse ", " $ map (show . head) yss)
+	    where
+		s = case yss of
+			[_] -> ""
+			_   -> "s"
+    where
+	xs = names (usingOrHiding i) ++ map renFrom (renaming i)
+	names (Using xs)    = xs
+	names (Hiding xs)   = xs
+
+{--------------------------------------------------------------------------
+    Patterns
+ --------------------------------------------------------------------------}
+
+-- | Turn an expression into a left hand side.
+exprToLHS :: Expr -> Parser ([Expr] -> LHS)
+exprToLHS e = case e of
+  WithApp r e es -> LHS <$> exprToPattern e <*> mapM exprToPattern es
+  _		 -> LHS <$> exprToPattern e <*> return []
+
+-- | Turn an expression into a pattern. Fails if the expression is not a
+--   valid pattern.
+exprToPattern :: Expr -> Parser Pattern
+exprToPattern e =
+    case e of
+	Ident x			-> return $ IdentP x
+	App _ e1 e2		-> AppP <$> exprToPattern e1
+					<*> T.mapM (T.mapM exprToPattern) e2
+	Paren r e		-> ParenP r
+					<$> exprToPattern e
+	Underscore r _		-> return $ WildP r
+	Absurd r		-> return $ AbsurdP r
+	As r x e		-> AsP r x <$> exprToPattern e
+	Dot r (HiddenArg _ e)	-> return $ HiddenP r $ fmap (DotP r) e
+	Dot r e			-> return $ DotP r e
+	Lit l			-> return $ LitP l
+	HiddenArg r e		-> HiddenP r <$> T.mapM exprToPattern e
+	RawApp r es		-> RawAppP r <$> mapM exprToPattern es
+	OpApp r x es		-> OpAppP r x <$> mapM exprToPattern es
+	_			->
+          let Just pos = rStart $ getRange e in
+          parseErrorAt pos $ "Not a valid pattern: " ++ show e
+{-# LINE 1 "templates/GenericTemplate.hs" #-}
+{-# LINE 1 "templates/GenericTemplate.hs" #-}
+{-# LINE 1 "<built-in>" #-}
+{-# LINE 1 "<command-line>" #-}
+{-# LINE 1 "templates/GenericTemplate.hs" #-}
+-- Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp 
+
+{-# LINE 28 "templates/GenericTemplate.hs" #-}
+
+
+data Happy_IntList = HappyCons Int# Happy_IntList
+
+
+
+
+
+{-# LINE 49 "templates/GenericTemplate.hs" #-}
+
+{-# LINE 59 "templates/GenericTemplate.hs" #-}
+
+{-# LINE 68 "templates/GenericTemplate.hs" #-}
+
+infixr 9 `HappyStk`
+data HappyStk a = HappyStk a (HappyStk a)
+
+-----------------------------------------------------------------------------
+-- starting the parse
+
+happyParse start_state = happyNewToken start_state notHappyAtAll notHappyAtAll
+
+-----------------------------------------------------------------------------
+-- Accepting the parse
+
+-- If the current token is 0#, it means we've just accepted a partial
+-- parse (a %partial parser).  We must ignore the saved token on the top of
+-- the stack in this case.
+happyAccept 0# tk st sts (_ `HappyStk` ans `HappyStk` _) =
+	happyReturn1 ans
+happyAccept j tk st sts (HappyStk ans _) = 
+	(happyTcHack j (happyTcHack st)) (happyReturn1 ans)
+
+-----------------------------------------------------------------------------
+-- Arrays only: do the next action
+
+
+
+happyDoAction i tk st
+	= {- nothing -}
+
+
+	  case action of
+		0#		  -> {- nothing -}
+				     happyFail i tk st
+		-1# 	  -> {- nothing -}
+				     happyAccept i tk st
+		n | (n <# (0# :: Int#)) -> {- nothing -}
+
+				     (happyReduceArr ! rule) i tk st
+				     where rule = (I# ((negateInt# ((n +# (1# :: Int#))))))
+		n		  -> {- nothing -}
+
+
+				     happyShift new_state i tk st
+				     where new_state = (n -# (1# :: Int#))
+   where off    = indexShortOffAddr happyActOffsets st
+	 off_i  = (off +# i)
+	 check  = if (off_i >=# (0# :: Int#))
+			then (indexShortOffAddr happyCheck off_i ==#  i)
+			else False
+ 	 action | check     = indexShortOffAddr happyTable off_i
+		| otherwise = indexShortOffAddr happyDefActions st
+
+{-# LINE 127 "templates/GenericTemplate.hs" #-}
+
+
+indexShortOffAddr (HappyA# arr) off =
+#if __GLASGOW_HASKELL__ > 500
+	narrow16Int# i
+#elif __GLASGOW_HASKELL__ == 500
+	intToInt16# i
+#else
+	(i `iShiftL#` 16#) `iShiftRA#` 16#
+#endif
+  where
+#if __GLASGOW_HASKELL__ >= 503
+	i = word2Int# ((high `uncheckedShiftL#` 8#) `or#` low)
+#else
+	i = word2Int# ((high `shiftL#` 8#) `or#` low)
+#endif
+	high = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))
+	low  = int2Word# (ord# (indexCharOffAddr# arr off'))
+	off' = off *# 2#
+
+
+
+
+
+data HappyAddr = HappyA# Addr#
+
+
+
+
+-----------------------------------------------------------------------------
+-- HappyState data type (not arrays)
+
+{-# LINE 170 "templates/GenericTemplate.hs" #-}
+
+-----------------------------------------------------------------------------
+-- Shifting a token
+
+happyShift new_state 0# tk st sts stk@(x `HappyStk` _) =
+     let i = (case unsafeCoerce# x of { (I# (i)) -> i }) in
+--     trace "shifting the error token" $
+     happyDoAction i tk new_state (HappyCons (st) (sts)) (stk)
+
+happyShift new_state i tk st sts stk =
+     happyNewToken new_state (HappyCons (st) (sts)) ((happyInTok (tk))`HappyStk`stk)
+
+-- happyReduce is specialised for the common cases.
+
+happySpecReduce_0 i fn 0# tk st sts stk
+     = happyFail 0# tk st sts stk
+happySpecReduce_0 nt fn j tk st@((action)) sts stk
+     = happyGoto nt j tk st (HappyCons (st) (sts)) (fn `HappyStk` stk)
+
+happySpecReduce_1 i fn 0# tk st sts stk
+     = happyFail 0# tk st sts stk
+happySpecReduce_1 nt fn j tk _ sts@((HappyCons (st@(action)) (_))) (v1`HappyStk`stk')
+     = let r = fn v1 in
+       happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))
+
+happySpecReduce_2 i fn 0# tk st sts stk
+     = happyFail 0# tk st sts stk
+happySpecReduce_2 nt fn j tk _ (HappyCons (_) (sts@((HappyCons (st@(action)) (_))))) (v1`HappyStk`v2`HappyStk`stk')
+     = let r = fn v1 v2 in
+       happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))
+
+happySpecReduce_3 i fn 0# tk st sts stk
+     = happyFail 0# tk st sts stk
+happySpecReduce_3 nt fn j tk _ (HappyCons (_) ((HappyCons (_) (sts@((HappyCons (st@(action)) (_))))))) (v1`HappyStk`v2`HappyStk`v3`HappyStk`stk')
+     = let r = fn v1 v2 v3 in
+       happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))
+
+happyReduce k i fn 0# tk st sts stk
+     = happyFail 0# tk st sts stk
+happyReduce k nt fn j tk st sts stk
+     = case happyDrop (k -# (1# :: Int#)) sts of
+	 sts1@((HappyCons (st1@(action)) (_))) ->
+        	let r = fn stk in  -- it doesn't hurt to always seq here...
+       		happyDoSeq r (happyGoto nt j tk st1 sts1 r)
+
+happyMonadReduce k nt fn 0# tk st sts stk
+     = happyFail 0# tk st sts stk
+happyMonadReduce k nt fn j tk st sts stk =
+        happyThen1 (fn stk tk) (\r -> happyGoto nt j tk st1 sts1 (r `HappyStk` drop_stk))
+       where sts1@((HappyCons (st1@(action)) (_))) = happyDrop k (HappyCons (st) (sts))
+             drop_stk = happyDropStk k stk
+
+happyMonad2Reduce k nt fn 0# tk st sts stk
+     = happyFail 0# tk st sts stk
+happyMonad2Reduce k nt fn j tk st sts stk =
+       happyThen1 (fn stk tk) (\r -> happyNewToken new_state sts1 (r `HappyStk` drop_stk))
+       where sts1@((HappyCons (st1@(action)) (_))) = happyDrop k (HappyCons (st) (sts))
+             drop_stk = happyDropStk k stk
+
+             off    = indexShortOffAddr happyGotoOffsets st1
+             off_i  = (off +# nt)
+             new_state = indexShortOffAddr happyTable off_i
+
+
+
+
+happyDrop 0# l = l
+happyDrop n (HappyCons (_) (t)) = happyDrop (n -# (1# :: Int#)) t
+
+happyDropStk 0# l = l
+happyDropStk n (x `HappyStk` xs) = happyDropStk (n -# (1#::Int#)) xs
+
+-----------------------------------------------------------------------------
+-- Moving to a new state after a reduction
+
+
+happyGoto nt j tk st = 
+   {- nothing -}
+   happyDoAction j tk new_state
+   where off    = indexShortOffAddr happyGotoOffsets st
+	 off_i  = (off +# nt)
+ 	 new_state = indexShortOffAddr happyTable off_i
+
+
+
+
+-----------------------------------------------------------------------------
+-- Error recovery (0# is the error token)
+
+-- parse error if we are in recovery and we fail again
+happyFail  0# tk old_st _ stk =
+--	trace "failing" $ 
+    	happyError_ tk
+
+{-  We don't need state discarding for our restricted implementation of
+    "error".  In fact, it can cause some bogus parses, so I've disabled it
+    for now --SDM
+
+-- discard a state
+happyFail  0# tk old_st (HappyCons ((action)) (sts)) 
+						(saved_tok `HappyStk` _ `HappyStk` stk) =
+--	trace ("discarding state, depth " ++ show (length stk))  $
+	happyDoAction 0# tk action sts ((saved_tok`HappyStk`stk))
+-}
+
+-- Enter error recovery: generate an error token,
+--                       save the old token and carry on.
+happyFail  i tk (action) sts stk =
+--      trace "entering error recovery" $
+	happyDoAction 0# tk action sts ( (unsafeCoerce# (I# (i))) `HappyStk` stk)
+
+-- Internal happy errors:
+
+notHappyAtAll = error "Internal Happy error\n"
+
+-----------------------------------------------------------------------------
+-- Hack to get the typechecker to accept our action functions
+
+
+happyTcHack :: Int# -> a -> a
+happyTcHack x y = y
+{-# INLINE happyTcHack #-}
+
+
+-----------------------------------------------------------------------------
+-- Seq-ing.  If the --strict flag is given, then Happy emits 
+--	happySeq = happyDoSeq
+-- otherwise it emits
+-- 	happySeq = happyDontSeq
+
+happyDoSeq, happyDontSeq :: a -> b -> b
+happyDoSeq   a b = a `seq` b
+happyDontSeq a b = b
+
+-----------------------------------------------------------------------------
+-- Don't inline any functions from the template.  GHC has a nasty habit
+-- of deciding to inline happyGoto everywhere, which increases the size of
+-- the generated parser quite a bit.
+
+
+{-# NOINLINE happyDoAction #-}
+{-# NOINLINE happyTable #-}
+{-# NOINLINE happyCheck #-}
+{-# NOINLINE happyActOffsets #-}
+{-# NOINLINE happyGotoOffsets #-}
+{-# NOINLINE happyDefActions #-}
+
+{-# NOINLINE happyShift #-}
+{-# NOINLINE happySpecReduce_0 #-}
+{-# NOINLINE happySpecReduce_1 #-}
+{-# NOINLINE happySpecReduce_2 #-}
+{-# NOINLINE happySpecReduce_3 #-}
+{-# NOINLINE happyReduce #-}
+{-# NOINLINE happyMonadReduce #-}
+{-# NOINLINE happyGoto #-}
+{-# NOINLINE happyFail #-}
+
+-- end of Happy Template.
diff --git a/doc/release-notes/2-2-0.txt b/doc/release-notes/2-2-0.txt
new file mode 100644
index 0000000..3de96d4
--- /dev/null
+++ b/doc/release-notes/2-2-0.txt
@@ -0,0 +1,102 @@
+------------------------------------------------------------------------
+-- Release notes for Agda 2 version 2.2.0
+------------------------------------------------------------------------
+
+Important changes since 2.1.2 (which was released 2007-08-16):
+
+Language
+--------
+
+* Exhaustive pattern checking. Agda complains if there are missing
+  clauses in a function definition.
+
+* Coinductive types are supported. This feature is under
+  development/evaluation, and may change.
+
+  http://wiki.portal.chalmers.se/agda/agda.php?n=ReferenceManual.Codatatypes
+
+* Another experimental feature: Sized types, which can make it easier
+  to explain why your code is terminating.
+
+* Improved constraint solving for functions with constructor headed
+  right hand sides.
+
+  http://wiki.portal.chalmers.se/agda/agda.php?n=ReferenceManual.FindingTheValuesOfImplicitArguments
+
+* A simple, well-typed foreign function interface, which allows use of
+  Haskell functions in Agda code.
+
+  http://wiki.portal.chalmers.se/agda/pmwiki.php?n=Docs.FFI
+
+* The tokens forall, -> and \ can be written as ∀, → and λ.
+
+* Absurd lambdas: λ () and λ {}.
+
+  http://thread.gmane.org/gmane.comp.lang.agda/440
+
+* Record fields whose values can be inferred can be omitted.
+
+* Agda complains if it spots an unreachable clause, or if a pattern
+  variable "shadows" a hidden constructor of matching type.
+
+  http://thread.gmane.org/gmane.comp.lang.agda/720
+
+Tools
+-----
+
+* Case-split: The user interface can replace a pattern variable with
+  the corresponding constructor patterns. You get one new left-hand
+  side for every possible constructor.
+
+  http://wiki.portal.chalmers.se/agda/pmwiki.php?n=Main.QuickGuideToEditingTypeCheckingAndCompilingAgdaCode
+
+* The MAlonzo compiler.
+
+  http://wiki.portal.chalmers.se/agda/pmwiki.php?n=Docs.MAlonzo
+
+* A new Emacs input method, which contains bindings for many Unicode
+  symbols, is by default activated in the Emacs mode.
+
+  http://wiki.portal.chalmers.se/agda/pmwiki.php?n=Docs.UnicodeInput
+
+* Highlighted, hyperlinked HTML can be generated from Agda source
+  code.
+
+  http://wiki.portal.chalmers.se/agda/pmwiki.php?n=Main.HowToGenerateWebPagesFromSourceCode
+
+* The command-line interactive mode (agda -I) is no longer supported,
+  but should still work.
+
+  http://thread.gmane.org/gmane.comp.lang.agda/245
+
+* Reload times when working on large projects are now considerably
+  better.
+
+  http://thread.gmane.org/gmane.comp.lang.agda/551
+
+Libraries
+---------
+
+* A standard library is under development.
+
+  http://wiki.portal.chalmers.se/agda/pmwiki.php?n=Libraries.StandardLibrary
+
+Documentation
+-------------
+
+* The Agda wiki is better organised. It should be easier for a
+  newcomer to find relevant information now.
+
+  http://wiki.portal.chalmers.se/agda/
+
+Infrastructure
+--------------
+
+* Easy-to-install packages for Windows and Debian/Ubuntu have been
+  prepared.
+
+  http://wiki.portal.chalmers.se/agda/pmwiki.php?n=Main.Download
+
+* Agda 2.2.0 is available from Hackage.
+
+  http://hackage.haskell.org/
diff --git a/doc/release-notes/2-2-2.txt b/doc/release-notes/2-2-2.txt
new file mode 100644
index 0000000..af41421
--- /dev/null
+++ b/doc/release-notes/2-2-2.txt
@@ -0,0 +1,23 @@
+------------------------------------------------------------------------
+-- Release notes for Agda 2 version 2.2.2
+------------------------------------------------------------------------
+
+Important changes since 2.2.0:
+
+Tools
+-----
+
+* The --malonzodir option has been renamed to --malonzo-dir.
+
+* The output of agda --html is by default placed in a directory called
+  "html".
+
+Infrastructure
+--------------
+
+* The Emacs mode is included in the Agda Cabal package, and installed
+  by cabal install. The recommended way to enable the Emacs mode is to
+  include the following code in .emacs:
+
+    (load-file (let ((coding-system-for-read 'utf-8))
+                    (shell-command-to-string "agda-mode locate")))
diff --git a/doc/release-notes/2-2-4.txt b/doc/release-notes/2-2-4.txt
new file mode 100644
index 0000000..ef1d01b
--- /dev/null
+++ b/doc/release-notes/2-2-4.txt
@@ -0,0 +1,47 @@
+------------------------------------------------------------------------
+-- Release notes for Agda 2 version 2.2.4
+------------------------------------------------------------------------
+
+Important changes since 2.2.2:
+
+* Change to the semantics of "open import" and "open module". The
+  declaration
+
+    open import M <using/hiding/renaming>
+
+  now translates to
+
+    import A
+    open A <using/hiding/renaming>
+
+  instead of
+
+    import A <using/hiding/renaming>
+    open A.
+
+  The same translation is used for "open module M = E …". Declarations
+  involving the keywords as or public are changed in a corresponding
+  way ("as" always goes with import, and "public" always with open).
+
+  This change means that import directives do not affect the qualified
+  names when open import/module is used. To get the old behaviour you
+  can use the expanded version above.
+
+* Names opened publicly in parameterised modules no longer inherit the
+  module parameters. Example:
+
+    module A where
+      postulate X : Set
+
+    module B (Y : Set) where
+      open A public
+
+  In Agda 2.2.2 B.X has type (Y : Set) → Set, whereas in Agda 2.2.4
+  B.X has type Set.
+
+* Previously it was not possible to export a given constructor name
+  through two different "open public" statements in the same module.
+  This is now possible.
+
+* Unicode subscript digits are now allowed for the hierarchy of
+  universes (Set₀, Set₁, …): Set₁ is equivalent to Set1.
diff --git a/src/data/emacs-mode/agda-input.el b/src/data/emacs-mode/agda-input.el
index ff2ff5b..832ef53 100644
--- a/src/data/emacs-mode/agda-input.el
+++ b/src/data/emacs-mode/agda-input.el
@@ -125,7 +125,7 @@ This suffix is dropped."
 ;; until agda-input-setup is called at the end of this file.
 
 (defgroup agda-input nil
-  "The Agda 2 input method.
+  "The Agda input method.
 After tweaking these settings you may want to inspect the resulting
 translations using `agda-input-show-translations'."
   :group 'agda2
@@ -170,6 +170,9 @@ a Quail package, and tweak is an expression of the same kind as
 `agda-input-tweak-all' which is used to tweak the translation
 pairs of the input method.
 
+The inherited translation pairs are added last, after
+`agda-input-user-translations' and `agda-input-translations'.
+
 If you change this setting manually (without using the
 customization buffer) you need to call `agda-input-setup' in
 order for the change to take effect."
@@ -256,9 +259,12 @@ order for the change to take effect."
 
   ("entails" . ,(agda-input-to-string-list "⊢⊣⊤⊥⊦⊧⊨⊩⊪⊫⊬⊭⊮⊯"))
 
-  ("|-" . ("⊢"))  ("|-n" . ("⊬"))
-  ("-|" . ("⊣"))
-  ("|=" . ("⊨"))  ("|=n" . ("⊭"))
+  ("|-"   . ("⊢"))  ("|-n"  . ("⊬"))
+  ("-|"   . ("⊣"))
+  ("|="   . ("⊨"))  ("|=n"  . ("⊭"))
+  ("||-"  . ("⊩"))  ("||-n" . ("⊮"))
+  ("||="  . ("⊫"))  ("||=n" . ("⊯"))
+  ("|||-" . ("⊪"))
 
   ;; Divisibility, parallelity.
 
@@ -286,13 +292,6 @@ order for the change to take effect."
 
   ;; Various operators/symbols.
 
-  ,@(if (>= emacs-major-version 23)
-        '(("pm"    . ("±"))
-          ("cdot"  . ("·"))
-          ("times" . ("×"))
-          ("div"   . ("÷"))
-          ("neg"   . ("¬"))))
-
   ("qed"       . ("∎"))
   ("x"         . ("×"))
   ("o"         . ("∘"))
@@ -559,93 +558,6 @@ order for the change to take effect."
   ("^a_"       . ("ª"))
   ("^o_"       . ("º"))
 
-  ,@(if (>= emacs-major-version 23)
-        '(("pounds"         . ("£"))
-          ("currency"       . ("¤"))
-          ("yen"            . ("¥"))
-          ("S"              . ("§"))
-          ("\"{}"           . ("¨"))
-          ("copyright"      . ("©"))
-          ("flqq"           . ("«"))
-          ("\"<"            . ("«"))
-          ("-"              . ("­"))
-          ("registered"     . ("®"))
-          ("={}"            . ("¯"))
-          ("^2"             . ("²"))
-          ("^3"             . ("³"))
-          ("'{}"            . ("´"))
-          ("micro"          . ("µ"))
-          ("P"              . ("¶"))
-          ("c{}"            . ("¸"))
-          ("^1"             . ("¹"))
-          ("frqq"           . ("»"))
-          ("\">"            . ("»"))
-          ("frac14"         . ("¼"))
-          ("frac12"         . ("½"))
-          ("frac34"         . ("¾"))
-          ("`A"             . ("À"))
-          ("'A"             . ("Á"))
-          ("^A"             . ("Â"))
-          ("~A"             . ("Ã"))
-          ("\"A"            . ("Ä"))
-          ("AA"             . ("Å"))
-          ("AE"             . ("Æ"))
-          ("cC"             . ("Ç"))
-          ("`E"             . ("È"))
-          ("'E"             . ("É"))
-          ("^E"             . ("Ê"))
-          ("\"E"            . ("Ë"))
-          ("`I"             . ("Ì"))
-          ("'I"             . ("Í"))
-          ("^I"             . ("Î"))
-          ("\"I"            . ("Ï"))
-          ("DH"             . ("Ð"))
-          ("~N"             . ("Ñ"))
-          ("`O"             . ("Ò"))
-          ("'O"             . ("Ó"))
-          ("^O"             . ("Ô"))
-          ("~O"             . ("Õ"))
-          ("\"O"            . ("Ö"))
-          ("O"              . ("Ø"))
-          ("`U"             . ("Ù"))
-          ("'U"             . ("Ú"))
-          ("^U"             . ("Û"))
-          ("\"U"            . ("Ü"))
-          ("'Y"             . ("Ý"))
-          ("TH"             . ("Þ"))
-          ("ss"             . ("ß"))
-          ("`a"             . ("à"))
-          ("'a"             . ("á"))
-          ("^a"             . ("â"))
-          ("~a"             . ("ã"))
-          ("\"a"            . ("ä"))
-          ("aa"             . ("å"))
-          ("ae"             . ("æ"))
-          ("cc"             . ("ç"))
-          ("`e"             . ("è"))
-          ("'e"             . ("é"))
-          ("^e"             . ("ê"))
-          ("\"e"            . ("ë"))
-          ("`i"             . ("ì"))
-          ("'i"             . ("í"))
-          ("^i"             . ("î"))
-          ("\"i"            . ("ï"))
-          ("dh"             . ("ð"))
-          ("~n"             . ("ñ"))
-          ("`o"             . ("ò"))
-          ("'o"             . ("ó"))
-          ("^o"             . ("ô"))
-          ("~o"             . ("õ"))
-          ("\"o"            . ("ö"))
-          ("o"              . ("ø"))
-          ("`u"             . ("ù"))
-          ("'u"             . ("ú"))
-          ("^u"             . ("û"))
-          ("\"u"            . ("ü"))
-          ("'y"             . ("ý"))
-          ("th"             . ("þ"))
-          ("\"y"            . ("ÿ"))))
-
   ;; Circled, parenthesised etc. numbers and letters.
 
   ( "(0)" . ,(agda-input-to-string-list " ⓪"))
@@ -710,6 +622,10 @@ default value when the library is updated.  If you just want to
 add some bindings it is probably a better idea to customize
 `agda-input-user-translations'.
 
+These translation pairs are included after those in
+`agda-input-user-translations', but before the ones inherited
+from other input methods (see `agda-input-inherit').
+
 If you change this setting manually (without using the
 customization buffer) you need to call `agda-input-setup' in
 order for the change to take effect."
@@ -719,10 +635,13 @@ order for the change to take effect."
   :type '(repeat (cons (string :tag "Key sequence")
                        (repeat :tag "Translations" string))))
 
-
 (defcustom agda-input-user-translations nil
   "Like `agda-input-translations', but more suitable for user
-customizations since by default it is empty."
+customizations since by default it is empty.
+
+These translation pairs are included first, before those in
+`agda-input-translations' and the ones inherited from other input
+methods."
   :group 'agda-input
   :set 'agda-input-incorporate-changed-setting
   :initialize 'custom-initialize-default
@@ -757,7 +676,8 @@ Each pair in the list has the form (KEY-SEQUENCE . TRANSLATION)."
 
 (defun agda-input-add-translations (trans)
   "Add the given translations TRANS to the Agda input method.
-TRANS is a list of pairs (KEY-SEQUENCE . TRANSLATION)."
+TRANS is a list of pairs (KEY-SEQUENCE . TRANSLATION). The
+translations are appended to the current translations."
   (with-temp-buffer
     (dolist (tr (agda-input-concat-map (eval agda-input-tweak-all) trans))
       (quail-defrule (car tr) (cdr tr) "Agda" t))))
diff --git a/src/data/emacs-mode/agda2-abbrevs.el b/src/data/emacs-mode/agda2-abbrevs.el
index e816277..47ae1c6 100644
--- a/src/data/emacs-mode/agda2-abbrevs.el
+++ b/src/data/emacs-mode/agda2-abbrevs.el
@@ -58,22 +58,22 @@
 ;; Abbrevs
 
 (defvar agda2-abbrevs-defaults '(
-  ("m"  "" agda2-abbrevs-module)
-  ("d"  "" agda2-abbrevs-data)
-  ("c"  "" agda2-abbrevs-codata)
-  ("re" "" agda2-abbrevs-record)
-  ("rv" "" agda2-abbrevs-record-value)
-  ("u"  "" agda2-abbrevs-using)
-  ("h"  "" agda2-abbrevs-hiding)
-  ("r"  "" agda2-abbrevs-renaming)
-  ("w"  "where\n")
-  ("po" "postulate")
-  ("a"  "abstract\n")
-  ("pr" "private\n")
-  ("pu" "public")
-  ("mu" "mutual\n")
-  ("f"  "" agda2-abbrevs-forall)
-  ("oi" "open import "))
+  ("m"   "" agda2-abbrevs-module)
+  ("d"   "" agda2-abbrevs-data)
+  ("c"   "" agda2-abbrevs-codata)
+  ("re"  "" agda2-abbrevs-record)
+  ("rec" "" agda2-abbrevs-record-value)
+  ("u"   "" agda2-abbrevs-using)
+  ("h"   "" agda2-abbrevs-hiding)
+  ("r"   "" agda2-abbrevs-renaming)
+  ("w"   "where\n")
+  ("po"  "postulate")
+  ("a"   "abstract\n")
+  ("pr"  "private\n")
+  ("pu"  "public")
+  ("mu"  "mutual\n")
+  ("f"   "" agda2-abbrevs-forall)
+  ("oi"  "open import "))
   "Abbreviations defined by default in the Agda mode.")
 
 (defcustom agda2-mode-abbrevs-use-defaults t
diff --git a/src/data/emacs-mode/agda2-highlight.el b/src/data/emacs-mode/agda2-highlight.el
index bbd4a11..80dac92 100644
--- a/src/data/emacs-mode/agda2-highlight.el
+++ b/src/data/emacs-mode/agda2-highlight.el
@@ -286,7 +286,8 @@ table). The face `font-lock-comment-face' is used for comments.")
      file
      ;; Do not remove the old annotations if all the new ones
      ;; correspond to errors, or if there are no new ones.
-     (lambda (anns) (not (member anns '((error) nil)))))))
+     (lambda (anns) (not (member anns '((error) nil))))
+     "Click mouse-2 to jump to definition")))
 
 (defun agda2-highlight-setup nil
   "Set up the `annotation' library for use with `agda2-mode'."
diff --git a/src/data/emacs-mode/agda2-mode.el b/src/data/emacs-mode/agda2-mode.el
index 7d5a5d4..e6a9f26 100644
--- a/src/data/emacs-mode/agda2-mode.el
+++ b/src/data/emacs-mode/agda2-mode.el
@@ -1,4 +1,4 @@
-;;; agda2-mode.el --- Major mode for Agda2
+;;; agda2-mode.el --- Major mode for Agda
 
 ;;; Commentary:
 
@@ -10,7 +10,7 @@
 
 ;;; Code:
 
-(defvar agda2-version "2.2.2"
+(defvar agda2-version "2.2.4"
   "The version of the Agda mode.
 Note that, by default, the same version of the underlying Haskell
 library is used (see `agda2-ghci-options').")
@@ -47,7 +47,7 @@ properties to add to the result."
   (fset 'run-mode-hooks 'run-hooks))  ; For Emacs versions < 21.
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;; Programming utilities
+;;;; Utilities
 
 (defmacro agda2-protect (form &optional default)
   "Expands to (condition-case nil FORM (error DEFAULT))."
@@ -59,6 +59,18 @@ properties to add to the result."
   `(let* ,varbind (labels ,funcbind , at body)))
 (put 'agda2-let 'lisp-indent-function 2)
 
+(defun agda2-chunkify (n xs)
+  "Returns a list containing chunks of XS of length at most N.
+All the elements of XS are included, in their original order."
+  (let ((i 0)
+        (len (length xs))
+        out)
+    (while (< i len)
+      (let ((new-i (+ i (min n (- len i)))))
+        (setq out (cons (subseq xs i new-i) out))
+        (setq i new-i)))
+    (nreverse out)))
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;; User options
 
@@ -81,7 +93,7 @@ Note that only dynamic options can be set using this variable."
   :group 'agda2)
 
 (defcustom agda2-toplevel-module "Agda.Interaction.GhciTop"
-  "The name of the Agda2 toplevel module."
+  "The name of the Agda toplevel module."
   :type 'string :group 'agda2)
 
 (defcustom agda2-mode-hook
@@ -105,11 +117,19 @@ A multiple of the frame height."
   :group 'agda2)
 
 (defcustom agda2-fontset-name
-  (unless (eq window-system 'mac) "fontset-agda2")
-  "Default font to use in the selected frame when activating the Agda2 mode.
-This is only used if it's non-nil and Emacs is not running in a terminal.
-It is also ignored in Emacs 23 and up, where the improved font handling makes
-it unnecessary.
+  (unless (or (eq window-system 'mac)
+              ;; Emacs-23 uses a revamped font engine which should
+              ;; make agda2-fontset-name unnecessary in most cases.
+              ;; And if it turns out to be necessary, we should
+              ;; probably use face-remapping-alist rather than
+              ;; set-frame-font so the special font only applies to
+              ;; Agda buffers, and so it applies in all frames where
+              ;; Agda buffers are displayed.
+              (boundp 'face-remapping-alist))
+    "fontset-agda2")
+  "Default font to use in the selected frame when activating the Agda mode.
+This is only used if it's non-nil and Emacs is not running in a
+terminal.
 
 Note that this setting (if non-nil) affects non-Agda buffers as
 well, and that you have to restart Emacs if you want settings to
@@ -142,9 +162,8 @@ this variable to take effect."
     chinese-big5-1:-ETen-Fixed-Medium-R-Normal--16-150-75-75-C-160-Big5.ETen-0,
     chinese-big5-2:-ETen-Fixed-Medium-R-Normal--16-150-75-75-C-160-Big5.ETen-0"
   "Specification of the \"fontset-agda2\" fontset.
-The \"fontset-agda2\" is the standard setting for `agda2-fontset-name'.
-If `agda2-fontset-name' is nil, or Emacs is
-run in a terminal, then \"fontset-agda2\" is not created.
+This fontset is only created if `agda2-fontset-name' is
+\"fontset-agda2\" and Emacs is not run in a terminal.
 
 Note that the text \"fontset-agda2\" has to be part of the
 string (in a certain way; see the default setting) in order for the
@@ -152,14 +171,14 @@ agda2 fontset to be created properly.
 
 Note also that the default setting may not work unless suitable
 fonts are installed on your system. Refer to the README file
-accompanying the Agda distribution for details.
+accompanying the Agda distribution for more details.
 
 Note finally that you have to restart Emacs if you want settings
 to this variable to take effect."
   :group 'agda2
   :type 'string)
 
-(if (and agda2-fontset-name window-system)
+(if (and (equal agda2-fontset-name "fontset-agda2") window-system)
     (create-fontset-from-fontset-spec agda2-fontset-spec-of-fontset-agda2 t t))
 
 (defun agda2-fix-ghci-for-windows ()
@@ -190,7 +209,7 @@ to this variable to take effect."
                   (?. . ".") (?\; . ".") (?_ . ".") (?! . ".")))
       (modify-syntax-entry (car cs) (cdr cs) tbl))
     tbl)
-  "Syntax table used by the Agda 2 mode:
+  "Syntax table used by the Agda mode:
 
 {}   | Comment characters, matching parentheses.
 -    | Comment character, word constituent.
@@ -235,21 +254,24 @@ constituents.")
     (agda2-go-back                  "\M-*")
     )
   "Table of commands, used to build keymaps and menus.
-Each element has the form (CMD KEY &optional NAME GOAL-NAME)
-Where NAME is the name to use in the main Agda2 menu
-and GOAL-NAME is for the Agda goal menu.")
+Each element has the form (CMD &optional KEYS WHERE DESC) where
+CMD is a command; KEYS is its key binding (if any); WHERE is a
+list which should contain 'local if the command should exist in
+the goal menu and 'global if the command should exist in the main
+menu; and DESC is the description of the command used in the
+menus.")
 
 (defvar agda2-mode-map
   (let ((map (make-sparse-keymap "Agda mode")))
-    (define-key map [menu-bar Agda2]
-      (cons "Agda2" (make-sparse-keymap "Agda2")))
+    (define-key map [menu-bar Agda]
+      (cons "Agda" (make-sparse-keymap "Agda")))
     (define-key map [down-mouse-3]  'agda2-popup-menu-3)
     (dolist (d (reverse agda2-command-table))
       (destructuring-bind (f &optional keys kinds desc) d
         (if keys (define-key map keys f))
         (if (member 'global kinds)
             (define-key map
-              (vector 'menu-bar 'Agda2 (intern desc)) (cons desc f)))))
+              (vector 'menu-bar 'Agda (intern desc)) (cons desc f)))))
     map)
   "Keymap for `agda2-mode'.")
 
@@ -305,8 +327,8 @@ and GOAL-NAME is for the Agda goal menu.")
 ;;;###autoload
 (modify-coding-system-alist 'file "\\.l?agda\\'" 'utf-8)
 ;;;###autoload
-(define-derived-mode agda2-mode nil "Agda2"
- "Major mode for agda2 files.
+(define-derived-mode agda2-mode nil "Agda"
+ "Major mode for agda files.
 
 Note that when this mode is activated the default font of the
 current frame is changed to the fontset `agda2-fontset-name'.
@@ -326,22 +348,17 @@ Special commands:
  (let ((l '(max-specpdl-size    2600
             max-lisp-eval-depth 2800)))
    (while l (set (make-local-variable (pop l)) (pop l))))
- (if (and window-system agda2-fontset-name
-          ;; Emacs-23 uses a revamped font engine which should make
-          ;; agda2-fontset-name unnecessary in most cases.  And if it turns out
-          ;; to be necessary, we should probably use face-remapping-alist
-          ;; rather than set-frame-font so the special font only applies to
-          ;; Agda buffers, and so it applies in all frames where Agda
-          ;; buffers are displayed.
-          (not (boundp 'face-remapping-alist)))
+ (if (and window-system agda2-fontset-name)
      (condition-case nil
          (set-frame-font agda2-fontset-name)
-       (error (error "Unable to change the font; change agda2-fontset-name or tweak agda2-fontset-spec-fontset-agda2"))))
+       (error (error "Unable to change the font; change agda2-fontset-name or tweak agda2-fontset-spec-of-fontset-agda2"))))
  (agda2-indent-setup)
  (agda2-highlight-setup)
  (agda2-highlight-reload)
  (agda2-comments-and-paragraphs-setup)
  (force-mode-line-update)
+ ;; Protect global value of default-input-method from set-input-method.
+ (make-local-variable 'default-input-method)
  (set-input-method "Agda"))
 
 (defun agda2-restart ()
@@ -361,50 +378,70 @@ Special commands:
                     (haskell-ghci-start-process nil)
                     (setq agda2-process  haskell-ghci-process
                           agda2-buffer   haskell-ghci-process-buffer
-                          mode-name "Agda2 GHCi")
+                          mode-name "Agda GHCi")
+                    (set (make-local-variable 'comint-input-sender)
+                         'agda2-send)
                     (set-buffer-file-coding-system 'utf-8)
                     (set-buffer-process-coding-system 'utf-8 'utf-8)
                     (rename-buffer agda2-bufname)))
-  (apply 'agda2-go ":set" agda2-ghci-options)
-  (agda2-go ":mod +" agda2-toplevel-module)
+  (apply 'agda2-go nil ":set" agda2-ghci-options)
+  (agda2-go nil ":mod +" agda2-toplevel-module)
   (agda2-text-state))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;; Communicating with Agda2
-
-(defun agda2-go (&rest args)
-  "Send the list ARGS of strings to ghci, then
-wait for output and execute responses, if any"
+;;;; Communicating with Agda
+
+(defun agda2-raise-ghci-error ()
+  "Raises an error.
+The error message directs the user to the *ghci* buffer."
+  (error "Problem encountered. The *ghci* buffer can perhaps explain why."))
+
+(defun agda2-send (proc s)
+  "Sends the string S to PROC.
+Splits up S into small chunks and sends them one after the other,
+because when GHCi is used in shell buffers it chokes on overly
+long strings (some versions of GHCi, on some systems)."
+  (let* ((chunk-size 200))
+    (dolist (chunk (agda2-chunkify chunk-size s))
+      (comint-send-string proc chunk)))
+  (comint-send-string proc "\n"))
+
+(defun agda2-go (require-response &rest args)
+  "Executes commands in GHCi.
+Sends the list of strings ARGS to GHCi, waits for output and
+executes the responses, if any. If REQUIRE-RESPONSE is non-nil
+then an error is raised if no responses are received."
   (interactive)
   (unless (eq 'run (agda2-process-status))
     ;; Try restarting automatically, but only once, in case there is
     ;; some major problem.
     (agda2-restart)
     (unless (eq 'run (agda2-process-status))
-      (error "Problem encountered. The *ghci* buffer can perhaps explain why.")))
+      (agda2-raise-ghci-error)))
   (save-excursion
     (haskell-ghci-go (apply 'concat (agda2-intersperse " " args)) nil))
-  ;;(display-buffer agda2-buffer 'not-tihs-window)
   (let (response)
     (with-current-buffer haskell-ghci-process-buffer
       (haskell-ghci-wait-for-output)
-      ;; Note that the following code may be prone to race conditions
-      ;; (make-temp-file returns a filename, not an open file). This is
-      ;; not likely to be a problem, though.
       (let ((tempfile (make-temp-file "agda2-mode")))
         (unwind-protect
-            (progn
+            (let ((coding-system-for-read 'utf-8)
+                  (coding-system-for-write 'utf-8))
               (comint-write-output tempfile)
               (with-temp-buffer
                 (insert-file-contents tempfile)
                 (setq response (buffer-substring-no-properties
                                 (point-min) (point-max)))))
           (delete-file tempfile))))
-    (agda2-respond response)))
+    (when (and (>= 0 (agda2-respond response))
+               require-response)
+      (agda2-raise-ghci-error))))
 
-(defun agda2-goal-cmd (cmd &optional want ask &rest args)
+(defun agda2-goal-cmd (require-response cmd &optional want ask &rest args)
   "When in a goal, send CMD, goal num and range, and strings ARGS to agda2.
-WANT is an optional prompt.  When ASK is non-nil, use minibuffer."
+WANT is an optional prompt. When ASK is non-nil, use minibuffer.
+If REQUIRE-RESPONSE is non-nil then an error is raised if no
+responses are received."
   (multiple-value-bind (o g) (agda2-goal-at (point))
     (unless g (error "For this command, please place the cursor in a goal"))
     (let ((txt (buffer-substring-no-properties (+ (overlay-start o) 2)
@@ -412,7 +449,7 @@ WANT is an optional prompt.  When ASK is non-nil, use minibuffer."
       (if (not want) (setq txt "")
           (when (or ask (string-match "\\`\\s *\\'" txt))
             (setq txt (read-string (concat want ": ") txt))))
-      (apply 'agda2-go cmd
+      (apply 'agda2-go require-response cmd
              (format "%d" g)
              (agda2-goal-Range o)
              (agda2-string-quote txt) args))))
@@ -424,11 +461,16 @@ WANT is an optional prompt.  When ASK is non-nil, use minibuffer."
 ;; someone into type-checking compromised Agda code.
 
 (defun agda2-respond (response)
-  "Execute 'agda2_mode_code<sexp>' within RESPONSE string."
+  "Interprets response strings.
+For every occurrence of 'agda2_mode_code<sexp>' in RESPONSE the
+sexp is executed. The number of executed responses is returned."
+  (let ((no-responses 0))
     (while (string-match "agda2_mode_code" response)
+      (incf no-responses)
       (setq response (substring response (match-end 0)))
       (let ((inhibit-read-only t))
-        (eval (read response)))))
+        (eval (read response))))
+    no-responses))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;; User commands and response processing
@@ -436,7 +478,7 @@ WANT is an optional prompt.  When ASK is non-nil, use minibuffer."
 (defun agda2-load ()
   "Load current buffer."
   (interactive)
-  (agda2-go "cmd_load"
+  (agda2-go t "cmd_load"
             (agda2-string-quote (buffer-file-name))
             (agda2-list-quote agda2-include-dirs)
             ))
@@ -444,7 +486,7 @@ WANT is an optional prompt.  When ASK is non-nil, use minibuffer."
 (defun agda2-compile ()
   "Compile the current module."
   (interactive)
-  (agda2-go "cmd_compile"
+  (agda2-go t "cmd_compile"
             (agda2-string-quote (buffer-file-name))
             (agda2-list-quote agda2-include-dirs)
             ))
@@ -455,7 +497,7 @@ WANT is an optional prompt.  When ASK is non-nil, use minibuffer."
 
 (defun agda2-give()
   "Give to the goal at point the expression in it" (interactive)
-  (agda2-goal-cmd "cmd_give" "expression to give"))
+  (agda2-goal-cmd t "cmd_give" "expression to give"))
 
 (defun agda2-give-action (old-g paren)
   "Update the goal OLD-G with the expression in it."
@@ -463,13 +505,13 @@ WANT is an optional prompt.  When ASK is non-nil, use minibuffer."
 
 (defun agda2-refine ()
   "Refine the goal at point by the expression in it." (interactive)
-  (agda2-goal-cmd "cmd_refine" "expression to refine"))
+  (agda2-goal-cmd t "cmd_refine" "expression to refine"))
 
 (defun agda2-make-case ()
   "Refine the pattern var given in the goal.
 Assumes that <clause> = {!<var>!} is on one line."
   (interactive)
-  (agda2-goal-cmd "cmd_make_case" "partten var to case"))
+  (agda2-goal-cmd t "cmd_make_case" "partten var to case"))
 
 (defun agda2-make-case-action (newcls)
   "Replace the line at point with new clauses NEWCLS and reload."
@@ -498,7 +540,7 @@ major mode)."
   "Insert TEXT into the Agda info buffer, display it, and display NAME
 in the buffer's mode line."
   (interactive)
-  (with-current-buffer (get-buffer-create "*Agda2 information*")
+  (with-current-buffer (get-buffer-create "*Agda information*")
     (erase-buffer)
     (insert text)
     (set-syntax-table agda2-mode-syntax-table)
@@ -508,26 +550,23 @@ in the buffer's mode line."
     (setq mode-line-buffer-identification name)
     (save-selected-window
       (pop-to-buffer (current-buffer) 'not-this-window 'norecord)
-      (shrink-window
-       (- (window-height)
-          (min (truncate
-                (* (frame-height) agda2-information-window-max-height))
-               (max window-min-height
-                    (1+ (count-lines (point-min) (point-max))))))))))
+      (fit-window-to-buffer
+       nil (truncate
+            (* (frame-height) agda2-information-window-max-height))))))
 
 (defun agda2-show-goals()
   "Show all goals." (interactive)
-  (agda2-go "cmd_metas"))
+  (agda2-go t "cmd_metas"))
 
 (defun agda2-show-constraints()
   "Show constraints." (interactive)
-  (agda2-go "cmd_constraints"))
+  (agda2-go t "cmd_constraints"))
 
 (defun agda2-text-state ()
   "UNDER CONSTRUCTION" (interactive)
   (dolist (o (overlays-in (point-min) (point-max)))
     (delete-overlay o))
-  (agda2-go "cmd_reset")
+  (agda2-go nil "cmd_reset")
   (let ((inhibit-read-only t))
     (annotation-preserve-mod-p-and-undo
      (set-text-properties (point-min) (point-max) '()))
@@ -554,8 +593,8 @@ in the buffer's mode line."
 COMMENT is used to build the function's comment. The function
 NAME takes a prefix argument which tells whether it should
 normalise types or not when running CMD (through
-`agda2-goal-cmd'; PROMPT, if non-nil, is used as the goal command
-prompt)."
+`agda2-goal-cmd' t; PROMPT, if non-nil, is used as the goal
+command prompt)."
   (let ((eval (make-symbol "eval")))
   `(defun ,name (&optional not-normalise)
      ,(concat comment ".
@@ -563,14 +602,14 @@ prompt)."
 With a prefix argument the result is not explicitly normalised.")
      (interactive "P")
      (let ((,eval (if not-normalise "Instantiated" "Normalised")))
-       (agda2-goal-cmd (concat ,cmd " Agda.Interaction.BasicOps." ,eval)
-                       ,prompt)))))
+       (agda2-goal-cmd t (concat ,cmd " Agda.Interaction.BasicOps." ,eval)
+                         ,prompt)))))
 
 (defmacro agda2-maybe-normalised-toplevel (name comment cmd prompt)
   "This macro constructs a function NAME which runs CMD.
 COMMENT is used to build the function's comments. The function
 NAME takes a prefix argument which tells whether it should
-normalise types or not when running CMD (through `agda2-go'; the
+normalise types or not when running CMD (through `agda2-go' t; the
 string PROMPT is used as the goal command prompt)."
   (let ((eval (make-symbol "eval")))
     `(defun ,name (not-normalise expr)
@@ -579,8 +618,8 @@ string PROMPT is used as the goal command prompt)."
 With a prefix argument the result is not explicitly normalised.")
        (interactive ,(concat "P\nM" prompt ": "))
        (let ((,eval (if not-normalise "Instantiated" "Normalised")))
-         (agda2-go (concat ,cmd " Agda.Interaction.BasicOps." ,eval " "
-                           (agda2-string-quote expr)))))))
+         (agda2-go t (concat ,cmd " Agda.Interaction.BasicOps." ,eval " "
+                             (agda2-string-quote expr)))))))
 
 (agda2-maybe-normalised
  agda2-goal-type
@@ -630,8 +669,9 @@ top-level scope."
  nil)
 
 (defun agda2-solveAll ()
-  "Solve all goals that are internally already instantiated." (interactive)
-  (agda2-go "cmd_solveAll" ))
+  "Solves all goals that are already instantiated internally."
+  (interactive)
+  (agda2-go t "cmd_solveAll"))
 
 (defun agda2-solveAll-action (iss)
   (save-excursion
@@ -647,7 +687,7 @@ With a prefix argument \"abstract\" is ignored during the computation."
   (interactive "P")
   (let ((cmd (concat "cmd_compute"
                      (if arg " True" " False"))))
-    (agda2-goal-cmd cmd "expression to normalise")))
+    (agda2-goal-cmd t cmd "expression to normalise")))
 
 (defun agda2-compute-normalised-toplevel (expr &optional arg)
   "Computes the normal form of the given expression.
@@ -658,7 +698,7 @@ With a prefix argument \"abstract\" is ignored during the computation."
   (let ((cmd (concat "cmd_compute_toplevel"
                      (if arg " True" " False")
                      " ")))
-    (agda2-go (concat cmd (agda2-string-quote expr)))))
+    (agda2-go t (concat cmd (agda2-string-quote expr)))))
 
 (defun agda2-compute-normalised-maybe-toplevel ()
   "Computes the normal form of the given expression,
@@ -687,19 +727,20 @@ appear in the buffer)."
                 (looking-at
                  "\\(.[{(]\\|.\\s \\)[?]\\(\\s \\|[)};]\\|$\\)"))))
        (make(p)  (agda2-make-goal p (point) (pop goals)))
-       (err()    (error "Unbalanced \{- , -\} , \{\! , \!\}")))
+       (inside-comment() (and stk (null     (car stk))))
+       (inside-goal()    (and stk (integerp (car stk)))))
     (save-excursion
       (goto-char (point-min))
       (while (and goals (delims))
         (labels ((c (s) (equal s (match-string 0))))
           (cond
-           ((and (c "--") (not stk)) (end-of-line))
-           ((c "{-") (push  nil          stk))
-           ((c "{!") (push (- (point) 2) stk))
-           ((c "-}") (unless (and stk (not (pop stk))) (err)))
-           ((c "!}") (if (and stk (setq top (pop stk)))
-                         (or stk (make top))
-                       (err)))
+           ((c "--") (when (not stk)              (end-of-line)))
+           ((c "{-") (when (not (inside-goal))    (push nil           stk)))
+           ((c "{!") (when (not (inside-comment)) (push (- (point) 2) stk)))
+           ((c "-}") (when (inside-comment) (pop stk)))
+           ((c "!}") (when (inside-goal)
+                       (setq top (pop stk))
+                       (unless stk (make top))))
            ((c "?")  (progn
                        (when (and (not stk) (is-lone-questionmark))
                          (delete-char -1)
@@ -724,23 +765,23 @@ appear in the buffer)."
   "Ensures that the goal markers cannot be tampered with.
 Except if `inhibit-read-only' is non-nil or /all/ of the goal is
 modified."
-  (unless inhibit-read-only
-    (if action
-        ;; This is the after-change hook.
-        nil
-      ;; This is the before-change hook.
-      (cond
-       ((and (<= beg (overlay-start ol)) (>= end (overlay-end ol)))
-        ;; The user is trying to remove the whole goal:
-        ;; manually evaporate the overlay and add an undo-log entry so
-        ;; it gets re-added if needed.
-        (when (listp buffer-undo-list)
-          (push (list 'apply 0 (overlay-start ol) (overlay-end ol)
-                      'move-overlay ol (overlay-start ol) (overlay-end ol))
-                buffer-undo-list))
-        (delete-overlay ol))
-       ((or (< beg (+ (overlay-start ol) 2))
-            (> end (- (overlay-end ol) 2)))
+  (if action
+      ;; This is the after-change hook.
+      nil
+    ;; This is the before-change hook.
+    (cond
+     ((and (<= beg (overlay-start ol)) (>= end (overlay-end ol)))
+      ;; The user is trying to remove the whole goal:
+      ;; manually evaporate the overlay and add an undo-log entry so
+      ;; it gets re-added if needed.
+      (when (listp buffer-undo-list)
+        (push (list 'apply 0 (overlay-start ol) (overlay-end ol)
+                    'move-overlay ol (overlay-start ol) (overlay-end ol))
+              buffer-undo-list))
+      (delete-overlay ol))
+     ((or (< beg (+ (overlay-start ol) 2))
+          (> end (- (overlay-end ol) 2)))
+      (unless inhibit-read-only
         (signal 'text-read-only nil))))))
 
 (defun agda2-update (old-g new-txt)
@@ -769,17 +810,17 @@ text properties."
   "Status of `agda2-buffer', or \"no process\"."
   (agda2-protect (process-status agda2-process) "no process"))
 
-(defun agda2-intersperse (sep xs) (interactive)
+(defun agda2-intersperse (sep xs)
   (let(ys)(while xs (push (pop xs) ys)(push sep ys))(pop ys)(nreverse ys)))
 
 (defun agda2-goal-Range (o)
-  "Range of goal overlay O." (interactive)
+  "Range of goal overlay O."
   (format "(Range [Interval %s %s])"
           (agda2-mkPos (+ (overlay-start o) 2))
           (agda2-mkPos (- (overlay-end   o) 2))))
 
 (defun agda2-mkPos (&optional p)
-  "Position value of P or point." (interactive)
+  "Position value of P or point."
   (save-excursion
     (if p (goto-char p))
     (format "(Pn \"%s\" %d %d %d)" (buffer-file-name)
@@ -932,8 +973,7 @@ Depends on the setting of `agda2-indentation'."
   (set (make-local-variable 'paragraph-separate) paragraph-start)
 
   ;; Support for adding/removing comments.
-  (set (make-local-variable 'comment-padding) " ")
-  (set (make-local-variable 'comment-start) "--")
+  (set (make-local-variable 'comment-start) "-- ")
 
   ;; Support for proper filling of text in comments (requires that
   ;; Filladapt is activated).
@@ -982,10 +1022,10 @@ invoked."
 With prefix argument, turn on display of implicit arguments if
 the argument is a positive number, otherwise turn it off."
   (interactive "P")
-  (cond ((eq arg nil)       (agda2-go "toggleImplicitArgs"))
+  (cond ((eq arg nil)       (agda2-go t "toggleImplicitArgs"))
         ((and (numberp arg)
-              (> arg 0))    (agda2-go "showImplicitArgs" "True"))
-        (t                  (agda2-go "showImplicitArgs" "False"))))
+              (> arg 0))    (agda2-go t "showImplicitArgs" "True"))
+        (t                  (agda2-go t "showImplicitArgs" "False"))))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;;
diff --git a/src/data/emacs-mode/annotation.el b/src/data/emacs-mode/annotation.el
index eeddd0b..d33eae8 100644
--- a/src/data/emacs-mode/annotation.el
+++ b/src/data/emacs-mode/annotation.el
@@ -63,12 +63,12 @@ property for the given character range is set to the resulting
 list of faces. If the string INFO is non-nil, the mouse-face
 property is set to highlight, and INFO is used as the help-echo
 string. If GOTO has the form (FILENAME . POSITION), then the
-mouse-face property is set to highlight and, when the user clicks
-on the annotated text, then point is warped to the given position
-in the given file.
+mouse-face property is set to highlight, and the given
+filename/position will be used by `annotation-goto-indirect' when
+it is invoked with a position in the given range.
 
-Note that if two faces have the same attribute set, then the first one
-takes precedence.
+Note that if a given attribute is defined by several faces, then
+the first face's setting takes precedence.
 
 All characters whose text properties get set also have the
 annotation-annotated property set to t, and
@@ -92,15 +92,12 @@ bounds for the current (possibly narrowed) buffer, or END < START."
       (when faces
         (put-text-property start end 'font-lock-face faces)
         (add-to-list 'props 'font-lock-face))
-      ;; Do this before so `info' can override our default help-echo.
       (when (consp goto)
         (add-text-properties start end
                              `(annotation-goto ,goto
-                               mouse-face highlight
-                               help-echo "Click mouse-2 to jump to definition"))
+                               mouse-face highlight))
         (add-to-list 'props 'annotation-goto)
-        (add-to-list 'props 'mouse-face)
-        (add-to-list 'props 'help-echo))
+        (add-to-list 'props 'mouse-face))
       (when info
         (add-text-properties start end
                              `(mouse-face highlight help-echo ,info))
@@ -115,11 +112,13 @@ bounds for the current (possibly narrowed) buffer, or END < START."
   "Run CODE preserving both the undo data and the modification bit."
   (let ((modp (make-symbol "modp")))
   `(let ((,modp (buffer-modified-p))
+         ;; Don't check if the file is being modified by some other process.
+         (buffer-file-name nil)
+         ;; Don't record those changes on the undo-log.
          (buffer-undo-list t))
      (unwind-protect
          (progn , at code)
-       ;; FIXME: `restore-buffer-modified-p' would be more efficient.
-       (set-buffer-modified-p ,modp)))))
+       (restore-buffer-modified-p ,modp)))))
 
 (defun annotation-remove-annotations ()
   "Remove all text properties set by `annotation-annotate' in the current buffer.
@@ -143,7 +142,7 @@ Note: This function may fail if there is read-only text in the buffer."
                               props)))))
        (setq pos pos2)))))
 
-(defun annotation-load-file (file removep)
+(defun annotation-load-file (file removep &optional goto-help)
   "Apply the annotations in FILE.
 If (`funcall' REMOVEP anns) is non-nil, then all existing text
 properties set by `annotation-annotate' in the current buffer are
@@ -155,6 +154,11 @@ FILE should contain calls to `annotation-annotate'. The arguments
 to `annotation-annotate' should be in normal form, they are not
 evaluated.
 
+If INFO is nil in a call to `annotation-annotate', and the GOTO
+argument is a cons-cell, then the INFO argument is set to
+GOTO-HELP. The intention is that the default help text should
+inform the user about the \"goto\" facility.
+
 This function preserves the file modification stamp of the
 current buffer and does not modify the undo list.
 
@@ -176,7 +180,9 @@ Note: This function may fail if there is read-only text in the buffer."
            (assert (eq f 'annotation-annotate))
            (setq anns (cadr anns))      ;Strip the `quote'.
            (setq goto (cadr goto))      ;Strip the `quote'.
-           (annotation-annotate start end anns info goto)))))))
+           (if (and (not info) (consp goto))
+               (annotation-annotate start end anns goto-help goto)
+           (annotation-annotate start end anns info goto))))))))
 
 (provide 'annotation)
 ;;; annotation.el ends here
diff --git a/src/full/Agda/Interaction/BasicOps.hs b/src/full/Agda/Interaction/BasicOps.hs
index 4f5a6ef..ac15a75 100644
--- a/src/full/Agda/Interaction/BasicOps.hs
+++ b/src/full/Agda/Interaction/BasicOps.hs
@@ -19,7 +19,7 @@ import Agda.Interaction.Monad
 
 import qualified Agda.Syntax.Concrete as C -- ToDo: Remove with instance of ToConcrete
 import Agda.Syntax.Position
-import Agda.Syntax.Abstract
+import Agda.Syntax.Abstract hiding (Open)
 import Agda.Syntax.Common
 import Agda.Syntax.Info(ExprInfo(..),MetaInfo(..))
 import Agda.Syntax.Internal (MetaId(..),Type(..),Term(..),Sort(..))
@@ -36,6 +36,7 @@ import Agda.TypeChecking.Monad as M
 import Agda.TypeChecking.MetaVars
 import Agda.TypeChecking.Reduce
 import Agda.TypeChecking.Substitute
+import Agda.TypeChecking.EtaContract (etaContract)
 
 import Agda.Utils.Monad
 import Agda.Utils.Monad.Undo
@@ -163,7 +164,7 @@ evalInCurrent :: Expr -> TCM Expr
 evalInCurrent e =
     do  t <- newTypeMeta_
 	v <- checkExpr e t
-	v' <- normalise v
+	v' <- etaContract =<< normalise v
 	reify v'
 
 
@@ -180,13 +181,14 @@ data Rewrite =  AsIs | Instantiated | HeadNormal | Normalised
 --rewrite :: Rewrite -> Term -> TCM Term
 rewrite AsIs	     t = return t
 rewrite Instantiated t = return t   -- reify does instantiation
-rewrite HeadNormal   t = reduce t
-rewrite Normalised   t = normalise t
+rewrite HeadNormal   t = etaContract =<< reduce t
+rewrite Normalised   t = etaContract =<< normalise t
 
 
 data OutputForm a b
       = OfType b a | CmpInType Comparison a b b
       | JustType b | CmpTypes Comparison b b
+                   | CmpTeles Comparison b b
       | JustSort b | CmpSorts Comparison b b
       | Guard (OutputForm a b) [OutputForm a b]
       | Assign b a
@@ -204,6 +206,7 @@ outputFormId o = case o of
   CmpInType _ _ i _ -> i
   JustType i        -> i
   CmpTypes _ i _    -> i
+  CmpTeles _ i _    -> i
   JustSort i        -> i
   CmpSorts _ i _    -> i
   Guard o _         -> outputFormId o
@@ -216,6 +219,7 @@ instance Functor (OutputForm a) where
     fmap f (JustSort e)           = JustSort (f e)
     fmap f (CmpInType cmp t e e') = CmpInType cmp t (f e) (f e')
     fmap f (CmpTypes cmp e e')    = CmpTypes cmp (f e) (f e')
+    fmap f (CmpTeles cmp e e')    = CmpTeles cmp (f e) (f e')
     fmap f (CmpSorts cmp e e')    = CmpSorts cmp (f e) (f e')
     fmap f (Guard o os)           = Guard (fmap f o) (fmap (fmap f) os)
     fmap f (Assign m e)           = Assign (f m) e
@@ -224,6 +228,7 @@ instance Functor (OutputForm a) where
 instance Reify Constraint (OutputForm Expr Expr) where
     reify (ValueCmp cmp t u v) = CmpInType cmp <$> reify t <*> reify u <*> reify v
     reify (TypeCmp cmp t t')   = CmpTypes cmp <$> reify t <*> reify t'
+    reify (TelCmp  cmp t t')   = CmpTeles cmp <$> (ETel <$> reify t) <*> (ETel <$> reify t')
     reify (SortCmp cmp s s')   = CmpSorts cmp <$> reify s <*> reify s'
     reify (Guarded c cs) = do
 	o  <- reify c
@@ -254,6 +259,7 @@ instance (Show a,Show b) => Show (OutputForm a b) where
     show (JustSort e)           = "Sort " ++ show e
     show (CmpInType cmp t e e') = show e ++ showComparison cmp ++ show e' ++ " : " ++ show t
     show (CmpTypes  cmp t t')   = show t ++ showComparison cmp ++ show t'
+    show (CmpTeles  cmp t t')   = show t ++ showComparison cmp ++ show t'
     show (CmpSorts cmp s s')    = show s ++ showComparison cmp ++ show s'
     show (Guard o os)           = show o ++ "  |  " ++ show os
     show (Assign m e)           = show m ++ " := " ++ show e
@@ -267,6 +273,7 @@ instance (ToConcrete a c, ToConcrete b d) =>
     toConcrete (CmpInType cmp t e e') =
              CmpInType cmp <$> toConcrete t <*> toConcrete e <*> toConcrete e'
     toConcrete (CmpTypes cmp e e') = CmpTypes cmp <$> toConcrete e <*> toConcrete e'
+    toConcrete (CmpTeles cmp e e') = CmpTeles cmp <$> toConcrete e <*> toConcrete e'
     toConcrete (CmpSorts cmp e e') = CmpSorts cmp <$> toConcrete e <*> toConcrete e'
     toConcrete (Guard o os) = Guard <$> toConcrete o <*> toConcrete os
     toConcrete (Assign m e) = Assign <$> toConcrete m <*> toConcrete e
@@ -381,11 +388,11 @@ contextOfMeta ii norm = do
         visible (OfType x y) | show x /= "_" = Just (OfType' x y)
                              | otherwise     = Nothing
 	visible _	     = __IMPOSSIBLE__
-        reifyContext xs = escapeContext (length xs) $ foldr out (return []) $ reverse xs
-	out (Arg h (x,t)) rest = do
-	  t' <- reify =<< rewrite norm t
-	  ts <- addCtx x (Arg h t) rest
-	  return $ OfType x t' : ts
+        reifyContext xs = reverse <$> zipWithM out [1..] xs
+
+        out i (Arg h (x, t)) = escapeContext i $ do
+          t' <- reify =<< rewrite norm t
+          return $ OfType x t'
 
 
 {-| Returns the type of the expression in the current environment -}
diff --git a/src/full/Agda/Interaction/CommandLine/CommandLine.hs b/src/full/Agda/Interaction/CommandLine/CommandLine.hs
index 49ff737..73dcf4c 100644
--- a/src/full/Agda/Interaction/CommandLine/CommandLine.hs
+++ b/src/full/Agda/Interaction/CommandLine/CommandLine.hs
@@ -277,16 +277,16 @@ showContext (meta:args) = do
 	    liftIO $ UTF8.print $ text x <+> text ":" <+> d
 showContext _ = liftIO $ UTF8.putStrLn ":Context meta"
 
--- | The logo that prints when agdaLight is started in interactive mode.
+-- | The logo that prints when Agda is started in interactive mode.
 splashScreen :: String
 splashScreen = unlines
-    [ "                 _        ______"
-    , "   ____         | |      |_ __ _|"
-    , "  / __ \\        | |       | || |"
-    , " | |__| |___  __| | ___   | || |"
-    , " |  __  / _ \\/ _  |/ __\\  | || |   Agda 2 Interactive"
-    , " | |  |/ /_\\ \\/_| / /_| \\ | || |"
-    , " |_|  |\\___  /____\\_____/|______|  Type :? for help."
+    [ "                 _ "
+    , "   ____         | |"
+    , "  / __ \\        | |"
+    , " | |__| |___  __| | ___"
+    , " |  __  / _ \\/ _  |/ __\\     Agda Interactive"
+    , " | |  |/ /_\\ \\/_| / /_| \\"
+    , " |_|  |\\___  /____\\_____/    Type :? for help."
     , "        __/ /"
     , "        \\__/"
     , ""
diff --git a/src/full/Agda/Interaction/Exceptions.hs b/src/full/Agda/Interaction/Exceptions.hs
index ad65a47..ce53fbf 100644
--- a/src/full/Agda/Interaction/Exceptions.hs
+++ b/src/full/Agda/Interaction/Exceptions.hs
@@ -3,7 +3,7 @@
 -}
 module Agda.Interaction.Exceptions where
 
-import Control.Exception
+import Control.OldException
 import Control.Monad.Trans
 import System.Exit
 import qualified System.IO.UTF8 as UTF8
diff --git a/src/full/Agda/Interaction/GhciTop.hs b/src/full/Agda/Interaction/GhciTop.hs
index 6977bb1..87139cb 100644
--- a/src/full/Agda/Interaction/GhciTop.hs
+++ b/src/full/Agda/Interaction/GhciTop.hs
@@ -4,14 +4,12 @@
 module Agda.Interaction.GhciTop
   ( module Agda.Interaction.GhciTop
   , module Agda.TypeChecker
-  , module TM
   , module Agda.TypeChecking.MetaVars
   , module Agda.TypeChecking.Reduce
   , module Agda.TypeChecking.Errors
 
   , module Agda.Syntax.Position
   , module Agda.Syntax.Parser
-  , module SCo
 --  , module SC  -- trivial clash removal: remove all!
 --  , module SA
 --  , module SI
@@ -71,7 +69,7 @@ import Agda.Syntax.Abstract as SA
 import Agda.Syntax.Abstract.Pretty
 import Agda.Syntax.Internal as SI
 import Agda.Syntax.Scope.Base
-import Agda.Syntax.Scope.Monad hiding (bindName)
+import Agda.Syntax.Scope.Monad hiding (bindName, withCurrentModule)
 import qualified Agda.Syntax.Info as Info
 import Agda.Syntax.Translation.ConcreteToAbstract
 import Agda.Syntax.Translation.AbstractToConcrete hiding (withScope)
@@ -192,12 +190,7 @@ cmd_load' file includes unsolvedOK cmd cmd2 = infoOnException $ do
                 }
             cmd ok
 
-            -- tellEmacsToReloadSyntaxInfo should run before
-            -- tellEmacsToUpdateGoals, because the latter can change
-            -- the contents of the buffer, and this can invalidate the
-            -- ranges of the syntax-info.
             liftIO tellEmacsToReloadSyntaxInfo
-            liftIO tellEmacsToUpdateGoals
 
     cmd2
     System.performGC
@@ -468,6 +461,7 @@ instance LowerMeta SC.Expr where
       SC.Set _             -> e
       SC.Prop _            -> e
       SC.SetN _ _          -> e
+      SC.ETel tel          -> SC.ETel (lowerMeta tel)
       SC.Let r ds e1       -> SC.Let r (lowerMeta ds) (go e1)
       Paren r e1           -> case go e1 of
         q@(SC.QuestionMark _ Nothing) -> q
@@ -609,11 +603,16 @@ tellEmacsToUpdateGoals = do
   UTF8.putStrLn $ response $ L [A "agda2-annotate", format is]
   where format = Q . L . List.map showNumIId
 
--- | Tell the Emacs mode to reload the highlighting information.
+-- | Tell the Emacs mode to reload the highlighting information. This
+-- includes rescanning the buffer for goals.
 
 tellEmacsToReloadSyntaxInfo :: IO ()
-tellEmacsToReloadSyntaxInfo =
+tellEmacsToReloadSyntaxInfo = do
+  -- agda2-highlight-reload should run before agda2-annotate, because
+  -- the latter command can change the contents of the buffer, and
+  -- this can invalidate the ranges of the syntax-info.
   UTF8.putStrLn $ response $ L [A "agda2-highlight-reload"]
+  tellEmacsToUpdateGoals
 
 -- | Tells the Emacs mode to reload the highlighting information and
 -- go to the first error position (if any).
diff --git a/src/full/Agda/Interaction/Highlighting/Generate.hs b/src/full/Agda/Interaction/Highlighting/Generate.hs
index a7d0da9..d043eb4 100644
--- a/src/full/Agda/Interaction/Highlighting/Generate.hs
+++ b/src/full/Agda/Interaction/Highlighting/Generate.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE CPP, Rank2Types #-}
+{-# LANGUAGE CPP, Rank2Types, RelaxedPolyRec #-}
 
 -- | Generates data used for precise syntax highlighting.
 
@@ -19,6 +19,7 @@ import qualified Agda.TypeChecking.Monad as M
 import qualified Agda.TypeChecking.Reduce as R
 import qualified Agda.Syntax.Abstract as A
 import qualified Agda.Syntax.Concrete as C
+import qualified Agda.Syntax.Info as SI
 import qualified Agda.Syntax.Internal as I
 import qualified Agda.Syntax.Literal as L
 import qualified Agda.Syntax.Parser as Pa
@@ -109,10 +110,11 @@ generateSyntaxInfo file tcs top termErrs =
   where
     decls = CA.topLevelDecls top
 
+    -- Converts an aspect and a range to a file.
+    aToF a r = several (rToR r) (mempty { aspect = Just a })
+
     tokInfo = Fold.foldMap tokenToFile
       where
-      aToF a r = several (rToR r) (mempty { aspect = Just a })
-
       tokenToFile :: T.Token -> File
       tokenToFile (T.TokSetN (i, _))               = aToF PrimitiveType (P.getRange i)
       tokenToFile (T.TokKeyword T.KwSet  i)        = aToF PrimitiveType (P.getRange i)
@@ -151,8 +153,8 @@ generateSyntaxInfo file tcs top termErrs =
       getAmbiguous :: A.AmbiguousQName -> Seq A.AmbiguousQName
       getAmbiguous = Seq.singleton
 
-    -- Bound variables, dotted patterns, record fields and module
-    -- names.
+    -- Bound variables, dotted patterns, record fields, module names,
+    -- the "as" and "to" symbols.
     theRest modMap = everything' mappend query decls
       where
       query :: GenericQ File
@@ -163,7 +165,8 @@ generateSyntaxInfo file tcs top termErrs =
               getLam         `extQ`
               getTyped       `extQ`
               getPattern     `extQ`
-              getModuleName
+              getModuleName  `extQ`
+              getModuleInfo
 
       bound n = nameToFile modMap file []
                            (A.nameConcrete n)
@@ -176,6 +179,10 @@ generateSyntaxInfo file tcs top termErrs =
                          (A.nameConcrete n)
                          (\isOp -> mempty { aspect = Just $ Name (Just Module) isOp })
                          (Just $ A.nameBindingSite n)
+      asName n = nameToFile modMap file []
+                            n
+                            (\isOp -> mempty { aspect = Just $ Name (Just Module) isOp })
+                            Nothing
 
       getVarAndField :: A.Expr -> File
       getVarAndField (A.Var x)    = bound x
@@ -185,6 +192,7 @@ generateSyntaxInfo file tcs top termErrs =
       getLet :: A.LetBinding -> File
       getLet (A.LetBind _ x _ _) = bound x
       getLet A.LetApply{}        = mempty
+      getLet A.LetOpen{}         = mempty
 
       getLam :: A.LamBinding -> File
       getLam (A.DomainFree _ x) = bound x
@@ -215,6 +223,11 @@ generateSyntaxInfo file tcs top termErrs =
       getModuleName (A.MName { A.mnameToList = xs }) =
         mconcat $ map mod xs
 
+      getModuleInfo :: SI.ModuleInfo -> File
+      getModuleInfo (SI.ModuleInfo { SI.minfoAsTo   = asTo
+                                   , SI.minfoAsName = name }) =
+        aToF Symbol asTo `mappend` maybe mempty asName name
+
 -- | A function mapping names to the kind of name they stand for.
 
 type NameKinds = A.QName -> Maybe NameKind
@@ -278,6 +291,7 @@ nameKinds tcs decls = do
   getDecl (A.Import {})       = Map.empty
   getDecl (A.Pragma {})       = Map.empty
   getDecl (A.ScopedDecl {})   = Map.empty
+  getDecl (A.Open {})         = Map.empty
 
 -- | Generates syntax highlighting information for all constructors
 -- occurring in patterns and expressions in the given declarations.
@@ -306,25 +320,46 @@ generateConstructorInfo modMap file kinds decls = do
 
   -- Find all constructors occurring in type signatures or clauses
   -- within the given declarations.
-  let constrs = everything' (><) query (types, clauses)
+  constrs <- everything' (liftM2 (><)) query (types, clauses)
 
   -- Return suitable syntax highlighting information.
   return $ Fold.fold $ fmap (generate modMap file kinds . mkAmb) constrs
   where
   mkAmb q = A.AmbQ [q]
 
-  query :: GenericQ (Seq A.QName)
-  query = mempty          `mkQ`
+  query :: GenericQ (TCM (Seq A.QName))
+  query = return mempty   `mkQ`
           getConstructor  `extQ`
           getConstructorP
 
-  getConstructor :: I.Term -> Seq A.QName
-  getConstructor (I.Con q _) = Seq.singleton q
-  getConstructor _           = Seq.empty
-
-  getConstructorP :: I.Pattern -> Seq A.QName
-  getConstructorP (I.ConP q _) = Seq.singleton q
-  getConstructorP _            = Seq.empty
+  getConstructor :: I.Term -> TCM (Seq A.QName)
+  getConstructor (I.Con q _) = return $ Seq.singleton q
+  getConstructor (I.Def c _)
+    | fmap P.srcFile (P.rStart (P.getRange c)) == Just file
+                             = retrieveCoconstructor c
+  getConstructor _           = return Seq.empty
+
+  getConstructorP :: I.Pattern -> TCM (Seq A.QName)
+  getConstructorP (I.ConP q _) = return $ Seq.singleton q
+  getConstructorP _            = return Seq.empty
+
+  retrieveCoconstructor :: A.QName -> TCM (Seq A.QName)
+  retrieveCoconstructor c = do
+    def <- getConstInfo c
+    case defDelayed def of
+      NotDelayed -> return Seq.empty  -- not a coconstructor
+      Delayed -> case defClauses def of
+        [I.Clause{ I.clauseBody = body}] -> case getRHS body of
+          Just (I.Con c args) -> do
+            s <- everything' (liftM2 (><)) query args
+            return $ Seq.singleton c >< s
+          _                   -> return Seq.empty
+        _ -> return Seq.empty
+    where
+      getRHS (I.Body v)   = Just v
+      getRHS I.NoBody     = Nothing
+      getRHS (I.Bind b)   = getRHS (I.absBody b)
+      getRHS (I.NoBind b) = getRHS b
 
 -- | Generates syntax highlighting information for unsolved meta
 -- variables.
diff --git a/src/full/Agda/Interaction/Highlighting/Vim.hs b/src/full/Agda/Interaction/Highlighting/Vim.hs
index e3fd384..67bebad 100644
--- a/src/full/Agda/Interaction/Highlighting/Vim.hs
+++ b/src/full/Agda/Interaction/Highlighting/Vim.hs
@@ -75,14 +75,13 @@ toVim ns = unlines $ matches mcons micons mdefs midefs
 	micons = concatMap parts cons
 	midefs = concatMap parts defs
 
-	parts (Qual _ _)	   = []
-	parts (QName (NoName _ _)) = []
-	parts (QName (Name _ [_])) = []
-	parts (QName (Name _ ps))  = [ x | Id x <- ps ]
+	parts (NoName _ _) = []
+	parts (Name _ [_]) = []
+	parts (Name _ ps)  = [ x | Id x <- ps ]
 
 generateVimFile :: FilePath -> TCM ()
 generateVimFile file = do
     scope <- getScope
     liftIO $ UTF8.writeFile (vimFile file) $ toVim $ names scope
     where
-	names = allNamesInScope . mergeScopes . scopeStack
+	names = nsNames . everythingInScope
diff --git a/src/full/Agda/Interaction/Imports.hs b/src/full/Agda/Interaction/Imports.hs
index 6b259e4..6fc4a82 100644
--- a/src/full/Agda/Interaction/Imports.hs
+++ b/src/full/Agda/Interaction/Imports.hs
@@ -14,9 +14,10 @@ import qualified Data.Set as Set
 import qualified Data.ByteString.Lazy as BS
 import Data.Generics
 import Data.List
+import Data.Map (Map)
 import System.Directory
 import System.Time
-import Control.Exception
+import Control.OldException
 import qualified System.IO.UTF8 as UTF8
 import System.FilePath (isAbsolute)
 
@@ -118,7 +119,7 @@ findFile ft m = do
 -- | Scope checks the given module. A proper version of the module
 -- name (with correct definition sites) is returned.
 
-scopeCheckImport :: ModuleName -> TCM (ModuleName, Scope)
+scopeCheckImport :: ModuleName -> TCM (ModuleName, Map ModuleName Scope)
 scopeCheckImport x = do
     reportSLn "import.scope" 5 $ "Scope checking " ++ show x
     visited <- Map.keys <$> getVisitedModules
@@ -320,15 +321,14 @@ createInterface opts trace path visited decoded
                 isig ibuiltin mname file changeDir
   | not (isAbsolute file) = __IMPOSSIBLE__
   | otherwise             = withImportPath path $ do
-    reportSLn "" 1 $ "Checking " ++ (case mname of
-                        Nothing -> file
-                        Just m  -> show m ++ " (" ++ file ++ ")") ++ "."
-
     setDecodedModules decoded
     setTrace trace
     setCommandLineOptions opts
     setVisitedModules visited
 
+    reportSLn "" 1 $ "Checking " ++ (case mname of
+                        Nothing -> file
+                        Just m  -> show m ++ " (" ++ file ++ ")") ++ "."
     reportSLn "import.iface.create" 5  $ "Creating interface for " ++ show mname
     reportSLn "import.iface.create" 10 $ "  visited: " ++ show (Map.keys visited)
 
@@ -420,7 +420,8 @@ buildInterface :: ModuleName
                -> TCM Interface
 buildInterface m syntaxInfo = do
     reportSLn "import.iface" 5 "Building interface..."
-    scope   <- getScope
+    scope'  <- getScope
+    let scope = scope' { scopeCurrent = m }
     sig     <- getSignature
     builtin <- gets stLocalBuiltins
     ms      <- getImports
@@ -430,9 +431,7 @@ buildInterface m syntaxInfo = do
     i <- instantiateFull $ Interface
 			{ iImportedModules = Set.toList ms
                         , iModuleName      = m
-			, iScope	   = case scopeStack scope of  -- TODO!!
-                                               []    -> __IMPOSSIBLE__
-                                               s : _ -> s
+			, iScope	   = publicModules scope
 			, iSignature	   = sig
 			, iBuiltin	   = builtin'
                         , iHaskellImports  = hsImps
diff --git a/src/full/Agda/Interaction/Imports.hs-boot b/src/full/Agda/Interaction/Imports.hs-boot
index 053b240..f36bd56 100644
--- a/src/full/Agda/Interaction/Imports.hs-boot
+++ b/src/full/Agda/Interaction/Imports.hs-boot
@@ -4,6 +4,7 @@ module Agda.Interaction.Imports where
 import Agda.Syntax.Abstract.Name    ( ModuleName )
 import Agda.Syntax.Scope.Base       ( Scope )
 import Agda.TypeChecking.Monad.Base ( TCM )
+import Data.Map                     ( Map )
 
-scopeCheckImport :: ModuleName -> TCM (ModuleName, Scope)
+scopeCheckImport :: ModuleName -> TCM (ModuleName, Map ModuleName Scope)
 
diff --git a/src/full/Agda/Interaction/MakeCase.hs b/src/full/Agda/Interaction/MakeCase.hs
index 20c1a49..88390fe 100644
--- a/src/full/Agda/Interaction/MakeCase.hs
+++ b/src/full/Agda/Interaction/MakeCase.hs
@@ -45,7 +45,7 @@ findClause m = do
         unless (rhsIsm $ clauseBody c) []
         return (defName def, c)
   case res of
-    []  -> fail "Right hand side must be a single hole when making case."
+    []  -> typeError $ GenericError "Right hand side must be a single hole when making a case distinction."
     [r] -> return r
     _   -> __IMPOSSIBLE__
   where
@@ -57,7 +57,7 @@ findClause m = do
       _           -> False
 
 makeCase :: InteractionId -> Range -> String -> TCM [A.Clause]
-makeCase hole rng s = do
+makeCase hole rng s = withInteractionId hole $ do
   meta        <- lookupInteractionId hole
   (f, clause@(Clause{ clauseTel = tel, clausePerm = perm, clausePats = ps })) <- findClause meta
   reportSDoc "interaction.case" 10 $ vcat
@@ -69,13 +69,28 @@ makeCase hole rng s = do
       , text "ps      =" <+> text (show ps)
       ]
     ]
-  var         <- withInteractionId hole $ deBruijnIndex =<< parseExprIn hole rng s
+  var         <- deBruijnIndex =<< parseExprIn hole rng s
   z           <- splitClauseWithAbs clause var
   case z of
-    Left err        -> fail $ show err
+    Left err        -> typeError . GenericError . show =<< prettySplitError err
     Right (Left cl) -> (:[]) <$> makeAbsurdClause f cl
     Right (Right c) -> mapM (makeAbstractClause f) c
 
+prettySplitError :: SplitError -> TCM Doc
+prettySplitError err = case err of
+  NotADatatype t -> fsep $
+    pwords "Cannot pattern match on non-datatype" ++ [prettyTCM t]
+  CantSplit c tel cIxs gIxs flex -> addCtxTel tel $ vcat
+    [ fsep $ pwords "Cannot pattern match on constructor" ++ [prettyTCM c <> text ","] ++
+             pwords "since the inferred indices"
+    , nest 2 $ prettyTCM cIxs
+    , fsep $ pwords "cannot be unified with the expected indices"
+    , nest 2 $ prettyTCM gIxs
+    , fsep $ pwords "for some" ++ punctuate comma (map prettyTCM flex)
+    ]
+  GenericSplitError s -> fsep $
+    pwords "Split failed:" ++ pwords s
+
 makeAbsurdClause :: QName -> SplitClause -> TCM A.Clause
 makeAbsurdClause f (SClause tel perm ps _) = do
   reportSDoc "interaction.case" 10 $ vcat
@@ -90,7 +105,7 @@ makeAbsurdClause f (SClause tel perm ps _) = do
   withCurrentModule (qnameModule f) $ do
     -- Normalise the dot patterns
     ps <- addCtxTel tel $ normalise ps
-    reify $ NamedClause f $ Clause noRange tel perm ps NoBody
+    inContext [] $ reify $ NamedClause f $ Clause noRange tel perm ps NoBody
 
 makeAbstractClause :: QName -> SplitClause -> TCM A.Clause
 makeAbstractClause f cl = do
@@ -107,5 +122,7 @@ deBruijnIndex e = do
   (v, _) <- inferExpr e
   case v of
     Var n _ -> return n
-    _       -> fail $ "Should be a variable: " ++ show v
+    _       -> typeError . GenericError . show =<< (fsep $
+                pwords "The scrutinee of a case distinction must be a variable,"
+                ++ [ prettyTCM v ] ++ pwords "isn't.")
 
diff --git a/src/full/Agda/Interaction/Options.hs b/src/full/Agda/Interaction/Options.hs
index f4c6a07..b6190f5 100644
--- a/src/full/Agda/Interaction/Options.hs
+++ b/src/full/Agda/Interaction/Options.hs
@@ -209,8 +209,6 @@ standardOptions :: [OptDescr (Flag CommandLineOptions)]
 standardOptions =
     [ Option ['V']  ["version"]	(NoArg versionFlag) "show version number"
     , Option ['?']  ["help"]	(NoArg helpFlag)    "show this help"
-    , Option ['i']  ["include-path"] (ReqArg includeFlag "DIR")
-		    "look for imports in DIR"
     , Option ['I']  ["interactive"] (NoArg interactiveFlag)
 		    "start in interactive mode"
     , Option ['c']  ["compile"] (NoArg compileFlag)
@@ -245,7 +243,9 @@ standardOptions =
 
 pragmaOptions :: [OptDescr (Flag CommandLineOptions)]
 pragmaOptions =
-    [ Option ['v']  ["verbose"]	(ReqArg verboseFlag "N")
+    [ Option ['i']  ["include-path"] (ReqArg includeFlag "DIR")
+		    "look for imports in DIR"
+    , Option ['v']  ["verbose"]	(ReqArg verboseFlag "N")
 		    "set verbosity level to N"
     , Option []	    ["show-implicit"] (NoArg showImplicitFlag)
 		    "show implicit arguments when printing"
@@ -312,7 +312,7 @@ usage options pluginInfos progName =
         indent (concatMap pluginMsg pluginInfos)
 
     where
-	header progName = unlines [ "Agda 2"
+	header progName = unlines [ "Agda"
 				  , ""
 				  , "Usage: " ++ progName ++ " [OPTIONS...] FILE"
 				  ]
diff --git a/src/full/Agda/Main.hs b/src/full/Agda/Main.hs
index 923ea5f..2d70151 100644
--- a/src/full/Agda/Main.hs
+++ b/src/full/Agda/Main.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE CPP #-}
 
-{-| Agda 2 main module.
+{-| Agda main module.
 -}
 module Agda.Main where
 
@@ -98,6 +98,9 @@ runAgda =
                     failIfNoInt (_, Right Nothing)  = __IMPOSSIBLE__
                     failIfNoInt (_, Left err)       = typeError err
 
+                    interaction
+                      :: TCM (ScopeInfo, Either TypeError (Maybe Interface))
+                      -> TCM ()
                     interaction | i	  = runIM . interactionLoop
 				| compile = Agate.compilerMain   . (failIfError =<<)
 				| alonzo  = Alonzo.compilerMain  . (failIfError =<<)
@@ -150,8 +153,6 @@ runAgda =
 				return (insideScope topLevel, result)
 			  else return (emptyScopeInfo, Right Nothing)
 
-		return ()
-
 -- | Print usage information.
 printUsage :: IO ()
 printUsage =
@@ -161,7 +162,7 @@ printUsage =
 -- | Print version information.
 printVersion :: IO ()
 printVersion =
-    UTF8.putStrLn $ "Agda 2 version " ++ version
+    UTF8.putStrLn $ "Agda version " ++ version
 
 -- | What to do for bad options.
 optionError :: String -> IO ()
@@ -178,7 +179,7 @@ main = do
 	liftIO $ UTF8.putStrLn s
 	throwError err
     case r of
-	Right _	-> return ()
+	Right _	-> exitSuccess
 	Left _	-> exitFailure
   `catchImpossible` \e -> do
     UTF8.putStr $ show e
diff --git a/src/full/Agda/Syntax/Abstract.hs b/src/full/Agda/Syntax/Abstract.hs
index be7c7a6..ac1493f 100644
--- a/src/full/Agda/Syntax/Abstract.hs
+++ b/src/full/Agda/Syntax/Abstract.hs
@@ -43,6 +43,7 @@ data Expr
         | Set  ExprInfo Nat		     -- ^
         | Prop ExprInfo			     -- ^
         | Let  ExprInfo [LetBinding] Expr    -- ^
+        | ETel Telescope                     -- ^ only used when printing telescopes
 	| Rec  ExprInfo [(C.Name, Expr)]     -- ^ record construction
 	| ScopedExpr ScopeInfo Expr	     -- ^ scope annotation
   deriving (Typeable, Data)
@@ -56,6 +57,8 @@ data Declaration
 	| Apply	     ModuleInfo ModuleName [TypedBindings] ModuleName [NamedArg Expr] (Map QName QName) (Map ModuleName ModuleName)
 	| Import     ModuleInfo ModuleName
 	| Pragma     Range	Pragma
+        | Open       ModuleInfo ModuleName
+          -- ^ only retained for highlighting purposes
 	| ScopedDecl ScopeInfo [Declaration]  -- ^ scope annotation
   deriving (Typeable, Data)
 
@@ -68,6 +71,7 @@ data Pragma = OptionsPragma [String]
 
 data LetBinding = LetBind LetInfo Name Expr Expr    -- ^ LetBind info name type defn
                 | LetApply ModuleInfo ModuleName [TypedBindings] ModuleName [NamedArg Expr] (Map QName QName) (Map ModuleName ModuleName)
+                | LetOpen ModuleInfo ModuleName  -- ^ only for highlighting
   deriving (Typeable, Data)
 
 -- | A definition without its type signature.
@@ -205,6 +209,7 @@ instance HasRange Expr where
     getRange (Prop i)		= getRange i
     getRange (Let i _ _)	= getRange i
     getRange (Rec i _)		= getRange i
+    getRange (ETel tel)         = getRange tel
     getRange (ScopedExpr _ e)	= getRange e
 
 instance HasRange Declaration where
@@ -216,6 +221,7 @@ instance HasRange Declaration where
     getRange (Import     i _	       ) = getRange i
     getRange (Primitive  i _ _	       ) = getRange i
     getRange (Pragma	 i _	       ) = getRange i
+    getRange (Open       i _           ) = getRange i
     getRange (ScopedDecl _ d	       ) = getRange d
 
 instance HasRange Definition where
@@ -249,6 +255,7 @@ instance HasRange RHS where
 instance HasRange LetBinding where
     getRange (LetBind  i _ _ _       ) = getRange i
     getRange (LetApply i _ _ _ _ _ _ ) = getRange i
+    getRange (LetOpen  i _           ) = getRange i
 
 instance KillRange LamBinding where
   killRange (DomainFree h x) = killRange1 (DomainFree h) x
@@ -278,6 +285,7 @@ instance KillRange Expr where
   killRange (Prop i)         = killRange1 Prop i
   killRange (Let i ds e)     = killRange3 Let i ds e
   killRange (Rec i fs)       = Rec (killRange i) (map (id -*- killRange) fs)
+  killRange (ETel tel)       = killRange1 ETel tel
   killRange (ScopedExpr s e) = killRange1 (ScopedExpr s) e
 
 instance KillRange Declaration where
@@ -289,6 +297,7 @@ instance KillRange Declaration where
   killRange (Import     i a           ) = killRange2 Import     i a
   killRange (Primitive  i a b         ) = killRange3 Primitive  i a b
   killRange (Pragma     i a           ) = Pragma (killRange i) a
+  killRange (Open       i x           ) = killRange2 Open       i x
   killRange (ScopedDecl a d           ) = killRange1 (ScopedDecl a) d
 
 instance KillRange Definition where
@@ -322,6 +331,7 @@ instance KillRange RHS where
 instance KillRange LetBinding where
   killRange (LetBind  i a b c       ) = killRange4 LetBind  i a b c
   killRange (LetApply i a b c d e f ) = killRange5 LetApply i a b c d e f
+  killRange (LetOpen  i x           ) = killRange2 LetOpen  i x
 
 ------------------------------------------------------------------------
 -- Queries
@@ -348,11 +358,12 @@ allNames (Definition _ _ defs) = Fold.foldMap allNamesD defs
                                    Fold.foldMap allNames decls
 
   allNamesR :: RHS -> Seq QName
-  allNamesR (RHS {})          = Seq.empty
-  allNamesR (AbsurdRHS {})    = Seq.empty
+  allNamesR RHS {}            = Seq.empty
+  allNamesR AbsurdRHS {}      = Seq.empty
   allNamesR (WithRHS q _ cls) = q <| Fold.foldMap allNamesC cls
 allNames (Section _ _ _ decls) = Fold.foldMap allNames decls
-allNames (Apply {})            = Seq.empty
-allNames (Import {})           = Seq.empty
-allNames (Pragma {})           = Seq.empty
+allNames Apply {}              = Seq.empty
+allNames Import {}             = Seq.empty
+allNames Pragma {}             = Seq.empty
+allNames Open {}               = Seq.empty
 allNames (ScopedDecl _ decls)  = Fold.foldMap allNames decls
diff --git a/src/full/Agda/Syntax/Common.hs b/src/full/Agda/Syntax/Common.hs
index 436ad5b..6de0d15 100644
--- a/src/full/Agda/Syntax/Common.hs
+++ b/src/full/Agda/Syntax/Common.hs
@@ -116,6 +116,8 @@ instance Enum NameId where
   toEnum n		= __IMPOSSIBLE__  -- should not be used
   fromEnum (NameId n _) = fromIntegral n
 
+newtype Constr a = Constr a
+
 ------------------------------------------------------------------------
 -- Arbitrary and CoArbitrary instances
 
diff --git a/src/full/Agda/Syntax/Concrete.hs b/src/full/Agda/Syntax/Concrete.hs
index b7b4c1a..2ba4a11 100644
--- a/src/full/Agda/Syntax/Concrete.hs
+++ b/src/full/Agda/Syntax/Concrete.hs
@@ -20,7 +20,9 @@ module Agda.Syntax.Concrete
     , Declaration(..)
     , TypeSignature
     , Constructor
+    , Field
     , ImportDirective(..), UsingOrHiding(..), ImportedName(..)
+    , Renaming(..), AsName(..)
     , defaultImportDir
     , OpenShortHand(..)
     , LHS(..), Pattern(..)
@@ -62,6 +64,7 @@ data Expr
 	| Absurd !Range			       -- ^ ex: @()@ or @{}@, only in patterns
 	| As !Range Name Expr		       -- ^ ex: @x\@p@, only in patterns
 	| Dot !Range Expr		       -- ^ ex: @.p@, only in patterns
+        | ETel Telescope                       -- ^ only used for printing telescopes
     deriving (Typeable, Data, Eq)
 
 
@@ -145,7 +148,7 @@ data ImportDirective
 	= ImportDirective
 	    { importDirRange	:: !Range
 	    , usingOrHiding	:: UsingOrHiding
-	    , renaming		:: [(ImportedName, Name)]
+	    , renaming		:: [Renaming]
 	    , publicOpen	:: Bool	-- ^ Only for @open at . Exports the opened names from the current module.
 	    }
     deriving (Typeable, Data, Eq)
@@ -167,6 +170,24 @@ instance Show ImportedName where
     show (ImportedModule x) = "module " ++ show x
     show (ImportedName   x) = show x
 
+data Renaming = Renaming { renFrom    :: ImportedName
+                           -- ^ Rename from this name.
+                         , renTo      :: Name
+                           -- ^ To this one.
+                         , renToRange :: Range
+                           -- ^ The range of the \"to\" keyword. Retained
+                           --   for highlighting purposes.
+                         }
+    deriving (Eq, Typeable, Data)
+
+data AsName = AsName { asName  :: Name
+                       -- ^ The \"as\" name.
+                     , asRange :: Range
+                       -- ^ The range of the \"as\" keyword. Retained
+                       --   for highlighting purposes.
+                     }
+    deriving (Eq, Typeable, Data)
+
 {--------------------------------------------------------------------------
     Declarations
  --------------------------------------------------------------------------}
@@ -194,7 +215,7 @@ data Declaration
 	| Postulate   !Range [TypeSignature]
 	| Primitive   !Range [TypeSignature]
 	| Open        !Range QName ImportDirective
-	| Import      !Range QName (Maybe Name) OpenShortHand ImportDirective
+	| Import      !Range QName (Maybe AsName) OpenShortHand ImportDirective
 	| ModuleMacro !Range  Name [TypedBindings] Expr OpenShortHand ImportDirective
 	| Module      !Range QName [TypedBindings] [Declaration]
 	| Pragma      Pragma
@@ -260,6 +281,7 @@ instance HasRange Expr where
 	    Absurd r		-> r
 	    HiddenArg r _	-> r
 	    Rec r _		-> r
+            ETel tel            -> getRange tel
 
 -- instance HasRange Telescope where
 --     getRange (TeleBind bs) = getRange bs
@@ -330,6 +352,12 @@ instance HasRange ImportedName where
     getRange (ImportedName x)	= getRange x
     getRange (ImportedModule x)	= getRange x
 
+instance HasRange Renaming where
+  getRange r = getRange (renFrom r, renTo r)
+
+instance HasRange AsName where
+  getRange a = getRange (asRange a, asName a)
+
 instance HasRange Pattern where
     getRange (IdentP x)		= getRange x
     getRange (AppP p q)		= fuseRange p q
diff --git a/src/full/Agda/Syntax/Concrete/Definitions.hs b/src/full/Agda/Syntax/Concrete/Definitions.hs
index 11b2d11..b8c9f15 100644
--- a/src/full/Agda/Syntax/Concrete/Definitions.hs
+++ b/src/full/Agda/Syntax/Concrete/Definitions.hs
@@ -4,6 +4,7 @@ module Agda.Syntax.Concrete.Definitions
     ( NiceDeclaration(..)
     , NiceDefinition(..)
     , NiceConstructor, NiceTypeSignature
+    , NiceField
     , Clause(..)
     , DeclarationException(..)
     , Nice, runNice
@@ -49,7 +50,7 @@ data NiceDeclaration
 	| NiceModule Range Access IsAbstract QName Telescope [Declaration]
 	| NiceModuleMacro Range Access IsAbstract Name Telescope Expr OpenShortHand ImportDirective
 	| NiceOpen Range QName ImportDirective
-	| NiceImport Range QName (Maybe Name) OpenShortHand ImportDirective
+	| NiceImport Range QName (Maybe AsName) OpenShortHand ImportDirective
 	| NicePragma Range Pragma
     deriving (Typeable, Data)
 
diff --git a/src/full/Agda/Syntax/Concrete/Operators.hs b/src/full/Agda/Syntax/Concrete/Operators.hs
index 96549c7..41f1066 100644
--- a/src/full/Agda/Syntax/Concrete/Operators.hs
+++ b/src/full/Agda/Syntax/Concrete/Operators.hs
@@ -37,6 +37,7 @@ import Agda.Syntax.Scope.Monad
 
 import Agda.TypeChecking.Monad.Base (typeError, TypeError(..))
 import Agda.TypeChecking.Monad.State (getScope)
+import Agda.TypeChecking.Monad.Options
 
 import Agda.Utils.ReadP
 import Agda.Utils.Monad
@@ -54,19 +55,20 @@ partsInScope = do
     xs <- uncurry (++) . (id -*- map fst) <$> localNames
     return $ Set.fromList $ concatMap parts xs
     where
-	parts (NoName _ _)   = []
-	parts x@(Name _ [_]) = [x]
-	parts x@(Name _ xs)  = x : [ Name noRange [i] | i@(Id {}) <- xs ]
+        parts (NoName _ _)   = []
+        parts x@(Name _ [_]) = [x]
+        parts x@(Name _ xs)  = x : [ Name noRange [i] | i@(Id {}) <- xs ]
 
 -- | Compute all unqualified defined names in scope and their fixities.
 getDefinedNames :: [KindOfName] -> ScopeM [(Name, Fixity)]
 getDefinedNames kinds = do
-  names <- allNamesInScope . mergeScopes . scopeStack <$> getScope
+  names <- nsNames . everythingInScope <$> getScope
+  reportSLn "scope.operators" 20 $ "everythingInScope: " ++ show names
   return [ (x, A.nameFixity $ A.qnameName $ anameName d)
-	 | (QName x, ds) <- Map.assocs names
-	 , d		 <- take 1 ds
-	 , anameKind d `elem` kinds
-	 ]
+         | (x, ds) <- Map.assocs names
+         , d       <- take 1 ds
+         , anameKind d `elem` kinds
+         ]
 
 -- | Compute all names (first component) and operators (second component) in
 --   scope.
@@ -78,11 +80,11 @@ localNames = do
   where
     localOp (x, y) = (x, A.nameFixity y)
     split ops = ([ x | Left x <- zs], [ y | Right y <- zs ])
-	where
-	    zs = concatMap opOrNot ops
+        where
+            zs = concatMap opOrNot ops
 
     opOrNot (x@(Name _ [_]), fx) = [Left x]
-    opOrNot (x, fx)	         = [Left x, Right (x, fx)]
+    opOrNot (x, fx)              = [Left x, Right (x, fx)]
 
 data UseBoundNames = UseBoundNames | DontUseBoundNames
 
@@ -119,56 +121,56 @@ data UseBoundNames = UseBoundNames | DontUseBoundNames
 buildParser :: IsExpr e => Range -> UseBoundNames -> ScopeM (ReadP e e)
 buildParser r use = do
     (names, ops) <- localNames
-    cons	 <- getDefinedNames [ConName]
+    cons         <- getDefinedNames [ConName]
     let conparts   = Set.fromList $ concatMap (parts . fst) cons
-	connames   = Set.fromList $ map fst cons
-	(non, fix) = partition nonfix ops
-	set	   = Set.fromList names
-	isLocal    = case use of
-	    UseBoundNames     -> \x -> Set.member x set
-	    DontUseBoundNames -> \x -> Set.member x connames || not (Set.member x conparts)
+        connames   = Set.fromList $ map fst cons
+        (non, fix) = partition nonfix ops
+        set        = Set.fromList names
+        isLocal    = case use of
+            UseBoundNames     -> \x -> Set.member x set
+            DontUseBoundNames -> \x -> Set.member x connames || not (Set.member x conparts)
     return $ recursive $ \p ->
-	concatMap (mkP p) (order fix)
-	++ [ appP p ]
-	++ map (nonfixP . opP p . fst) non
-	++ [ const $ atomP isLocal ]
+        concatMap (mkP p) (order fix)
+        ++ [ appP p ]
+        ++ map (nonfixP . opP p . fst) non
+        ++ [ const $ atomP isLocal ]
     where
-	parts (NoName _ _) = []
-	parts (Name _ [_]) = []
-	parts (Name _ xs)  = [ Name noRange [i] | i@(Id {}) <- xs ]
+        parts (NoName _ _) = []
+        parts (Name _ [_]) = []
+        parts (Name _ xs)  = [ Name noRange [i] | i@(Id {}) <- xs ]
 
-	level = fixityLevel . snd
+        level = fixityLevel . snd
 
-	isinfixl (op, LeftAssoc _ _)  = isInfix op
-	isinfixl _		      = False
+        isinfixl (op, LeftAssoc _ _)  = isInfix op
+        isinfixl _                    = False
 
-	isinfixr (op, RightAssoc _ _) = isInfix op
-	isinfixr _		      = False
+        isinfixr (op, RightAssoc _ _) = isInfix op
+        isinfixr _                    = False
 
-	isinfix (op, NonAssoc _ _)    = isInfix op
-	isinfix _		      = False
+        isinfix (op, NonAssoc _ _)    = isInfix op
+        isinfix _                     = False
 
-	on f g x y = f (g x) (g y)
+        on f g x y = f (g x) (g y)
 
-	nonfix = isNonfix . fst
-	order = groupBy ((==) `on` level) . sortBy (compare `on` level)
+        nonfix = isNonfix . fst
+        order = groupBy ((==) `on` level) . sortBy (compare `on` level)
 
-	mkP p0 ops = case concat [infx, inlfx, inrfx, prefx, postfx] of
-	    []	    -> [id]
-	    fs	    -> fs
-	    where
-		choice' = foldr1 (++++)
-		f ++++ g = \p -> f p +++ g p
-		inlfx	= fixP infixlP  isinfixl
-		inrfx	= fixP infixrP  isinfixr
-		infx	= fixP infixP   isinfix
-		prefx	= fixP prefixP  (isPrefix . fst)
-		postfx	= fixP postfixP (isPostfix . fst)
+        mkP p0 ops = case concat [infx, inlfx, inrfx, prefx, postfx] of
+            []      -> [id]
+            fs      -> fs
+            where
+                choice' = foldr1 (++++)
+                f ++++ g = \p -> f p +++ g p
+                inlfx   = fixP infixlP  isinfixl
+                inrfx   = fixP infixrP  isinfixr
+                infx    = fixP infixP   isinfix
+                prefx   = fixP prefixP  (isPrefix . fst)
+                postfx  = fixP postfixP (isPostfix . fst)
 
-		fixP f g =
-		    case filter g ops of
-			[]  -> []
-			ops -> [ f $ choice $ map (opP p0 . fst) ops ]
+                fixP f g =
+                    case filter g ops of
+                        []  -> []
+                        ops -> [ f $ choice $ map (opP p0 . fst) ops ]
 
 ---------------------------------------------------------------------------
 -- * Expression instances
@@ -176,35 +178,35 @@ buildParser r use = do
 
 instance IsExpr Expr where
     exprView e = case e of
-	Ident (QName x)	-> LocalV x
-	App _ e1 e2	-> AppV e1 e2
-	OpApp r d es	-> OpAppV d es
-	HiddenArg _ e	-> HiddenArgV e
-	Paren _ e	-> ParenV e
-	_		-> OtherV e
+        Ident (QName x) -> LocalV x
+        App _ e1 e2     -> AppV e1 e2
+        OpApp r d es    -> OpAppV d es
+        HiddenArg _ e   -> HiddenArgV e
+        Paren _ e       -> ParenV e
+        _               -> OtherV e
     unExprView e = case e of
-	LocalV x      -> Ident (QName x)
-	AppV e1 e2    -> App (fuseRange e1 e2) e1 e2
-	OpAppV d es   -> OpApp (fuseRange d es) d es
-	HiddenArgV e  -> HiddenArg (getRange e) e
-	ParenV e      -> Paren (getRange e) e
-	OtherV e      -> e
+        LocalV x      -> Ident (QName x)
+        AppV e1 e2    -> App (fuseRange e1 e2) e1 e2
+        OpAppV d es   -> OpApp (fuseRange d es) d es
+        HiddenArgV e  -> HiddenArg (getRange e) e
+        ParenV e      -> Paren (getRange e) e
+        OtherV e      -> e
 
 instance IsExpr Pattern where
     exprView e = case e of
-	IdentP (QName x) -> LocalV x
-	AppP e1 e2	 -> AppV e1 e2
-	OpAppP r d es	 -> OpAppV d es
-	HiddenP _ e	 -> HiddenArgV e
-	ParenP _ e	 -> ParenV e
-	_		 -> OtherV e
+        IdentP (QName x) -> LocalV x
+        AppP e1 e2       -> AppV e1 e2
+        OpAppP r d es    -> OpAppV d es
+        HiddenP _ e      -> HiddenArgV e
+        ParenP _ e       -> ParenV e
+        _                -> OtherV e
     unExprView e = case e of
-	LocalV x	 -> IdentP (QName x)
-	AppV e1 e2	 -> AppP e1 e2
-	OpAppV d es	 -> OpAppP (fuseRange d es) d es
-	HiddenArgV e	 -> HiddenP (getRange e) e
-	ParenV e	 -> ParenP (getRange e) e
-	OtherV e	 -> e
+        LocalV x         -> IdentP (QName x)
+        AppV e1 e2       -> AppP e1 e2
+        OpAppV d es      -> OpAppP (fuseRange d es) d es
+        HiddenArgV e     -> HiddenP (getRange e) e
+        ParenV e         -> ParenP (getRange e) e
+        OtherV e         -> e
 
 ---------------------------------------------------------------------------
 -- * Parse functions
@@ -216,53 +218,53 @@ parsePattern prs p = case p of
     AppP p (Arg h q) -> fullParen' <$> (AppP <$> parsePattern prs p <*> (Arg h <$> traverse (parsePattern prs) q))
     RawAppP _ ps     -> fullParen' <$> (parsePattern prs =<< parse prs ps)
     OpAppP r d ps    -> fullParen' . OpAppP r d <$> mapM (parsePattern prs) ps
-    HiddenP _ _	     -> fail "bad hidden argument"
-    AsP r x p	     -> AsP r x <$> parsePattern prs p
-    DotP r e	     -> return $ DotP r e
-    ParenP r p	     -> fullParen' <$> parsePattern prs p
-    WildP _	     -> return p
-    AbsurdP _	     -> return p
-    LitP _	     -> return p
-    IdentP _	     -> return p
+    HiddenP _ _      -> fail "bad hidden argument"
+    AsP r x p        -> AsP r x <$> parsePattern prs p
+    DotP r e         -> return $ DotP r e
+    ParenP r p       -> fullParen' <$> parsePattern prs p
+    WildP _          -> return p
+    AbsurdP _        -> return p
+    LitP _           -> return p
+    IdentP _         -> return p
 
 
 -- | Parses a left-hand side, and makes sure that it defined the expected name.
 --   TODO: check the arities of constructors. There is a possible ambiguity with
 --   postfix constructors:
---	Assume _ * is a constructor. Then 'true *' can be parsed as either the
---	intended _* applied to true, or as true applied to a variable *. If we
---	check arities this problem won't appear.
+--      Assume _ * is a constructor. Then 'true *' can be parsed as either the
+--      intended _* applied to true, or as true applied to a variable *. If we
+--      check arities this problem won't appear.
 parseLHS :: Maybe Name -> Pattern -> ScopeM Pattern
 parseLHS top p = do
     patP <- buildParser (getRange p) DontUseBoundNames
     cons <- getNames [ConName]
     case filter (validPattern top cons) $ parsePattern patP p of
-	[p] -> return p
-	[]  -> typeError $ NoParseForLHS p
-	ps  -> typeError $ AmbiguousParseForLHS p $ map fullParen ps
+        [p] -> return p
+        []  -> typeError $ NoParseForLHS p
+        ps  -> typeError $ AmbiguousParseForLHS p $ map fullParen ps
     where
-	getNames kinds = map fst <$> getDefinedNames kinds
-
-	validPattern :: Maybe Name -> [Name] -> Pattern -> Bool
-	validPattern (Just top) cons p = case appView p of
-	    IdentP (QName x) : ps -> x == top && all (validPat cons) ps
-	    _			  -> False
-	validPattern Nothing cons p = validPat cons p
-
-	validPat :: [Name] -> Pattern -> Bool
-	validPat cons p = case appView p of
-	    [_]			  -> True
-	    IdentP (QName x) : ps -> elem x cons && all (validPat cons) ps
-	    ps			  -> all (validPat cons) ps
-
-	appView :: Pattern -> [Pattern]
-	appView p = case p of
-	    AppP p (Arg _ q) -> appView p ++ [namedThing q]
-	    OpAppP _ op ps   -> IdentP (QName op) : ps
-	    ParenP _ p	     -> appView p
-	    RawAppP _ _	     -> __IMPOSSIBLE__
-	    HiddenP _ _	     -> __IMPOSSIBLE__
-	    _		     -> [p]
+        getNames kinds = map fst <$> getDefinedNames kinds
+
+        validPattern :: Maybe Name -> [Name] -> Pattern -> Bool
+        validPattern (Just top) cons p = case appView p of
+            IdentP (QName x) : ps -> x == top && all (validPat cons) ps
+            _                     -> False
+        validPattern Nothing cons p = validPat cons p
+
+        validPat :: [Name] -> Pattern -> Bool
+        validPat cons p = case appView p of
+            [_]                   -> True
+            IdentP (QName x) : ps -> elem x cons && all (validPat cons) ps
+            ps                    -> all (validPat cons) ps
+
+        appView :: Pattern -> [Pattern]
+        appView p = case p of
+            AppP p (Arg _ q) -> appView p ++ [namedThing q]
+            OpAppP _ op ps   -> IdentP (QName op) : ps
+            ParenP _ p       -> appView p
+            RawAppP _ _      -> __IMPOSSIBLE__
+            HiddenP _ _      -> __IMPOSSIBLE__
+            _                -> [p]
 
 parseApplication :: [Expr] -> ScopeM Expr
 parseApplication [e] = return e
@@ -272,63 +274,64 @@ parseApplication es = do
     -- parse and we can just as well give a nice error).
     inScope <- partsInScope
     case [ QName x | Ident (QName x) <- es, not (Set.member x inScope) ] of
-	[]  -> return ()
-	xs  -> typeError $ NotInScope xs
+        []  -> return ()
+        xs  -> typeError $ NotInScope xs
 
     -- Build the parser
     p <- buildParser (getRange es) UseBoundNames
 
     -- Parse
     case parse p es of
-	[e] -> return e
-	[]  -> typeError $ NoParseForApplication es
-	es' -> typeError $ AmbiguousParseForApplication es $ map fullParen es'
+        [e] -> return e
+        []  -> typeError $ NoParseForApplication es
+        es' -> typeError $ AmbiguousParseForApplication es $ map fullParen es'
 
 -- Inserting parenthesis --------------------------------------------------
 
 fullParen :: IsExpr e => e -> e
 fullParen e = case exprView $ fullParen' e of
-    ParenV e	-> e
-    e'		-> unExprView e'
+    ParenV e    -> e
+    e'          -> unExprView e'
 
 fullParen' :: IsExpr e => e -> e
 fullParen' e = case exprView e of
-    LocalV _	 -> e
-    OtherV _	 -> e
+    LocalV _     -> e
+    OtherV _     -> e
     HiddenArgV _ -> e
-    ParenV _	 -> e
+    ParenV _     -> e
     AppV e1 (Arg h e2) -> par $ unExprView $ AppV (fullParen' e1) (Arg h e2')
-	where
-	    e2' = case h of
-		Hidden	  -> e2
-		NotHidden -> fullParen' <$> e2
+        where
+            e2' = case h of
+                Hidden    -> e2
+                NotHidden -> fullParen' <$> e2
     OpAppV x es -> par $ unExprView $ OpAppV x $ map fullParen' es
     where
-	par = unExprView . ParenV
+        par = unExprView . ParenV
 
 paren :: Monad m => (Name -> m Fixity) -> Expr -> m (Precedence -> Expr)
-paren _   e@(App _ _ _)	       = return $ \p -> mparen (appBrackets p) e
-paren f	  e@(OpApp _ op _)     = do fx <- f op; return $ \p -> mparen (opBrackets fx p) e
-paren _   e@(Lam _ _ _)	       = return $ \p -> mparen (lamBrackets p) e
+paren _   e@(App _ _ _)        = return $ \p -> mparen (appBrackets p) e
+paren f   e@(OpApp _ op _)     = do fx <- f op; return $ \p -> mparen (opBrackets fx p) e
+paren _   e@(Lam _ _ _)        = return $ \p -> mparen (lamBrackets p) e
 paren _   e@(AbsurdLam _ _)    = return $ \p -> mparen (lamBrackets p) e
-paren _   e@(Fun _ _ _)	       = return $ \p -> mparen (lamBrackets p) e
-paren _   e@(Pi _ _)	       = return $ \p -> mparen (lamBrackets p) e
-paren _   e@(Let _ _ _)	       = return $ \p -> mparen (lamBrackets p) e
-paren _	  e@(Rec _ _)	       = return $ \p -> mparen (appBrackets p) e
+paren _   e@(Fun _ _ _)        = return $ \p -> mparen (lamBrackets p) e
+paren _   e@(Pi _ _)           = return $ \p -> mparen (lamBrackets p) e
+paren _   e@(Let _ _ _)        = return $ \p -> mparen (lamBrackets p) e
+paren _   e@(Rec _ _)          = return $ \p -> mparen (appBrackets p) e
 paren _   e@(WithApp _ _ _)    = return $ \p -> mparen (withAppBrackets p) e
-paren _	  e@(Ident _)	       = return $ \p -> e
-paren _	  e@(Lit _)	       = return $ \p -> e
-paren _	  e@(QuestionMark _ _) = return $ \p -> e
-paren _	  e@(Underscore _ _)   = return $ \p -> e
-paren _	  e@(Set _)	       = return $ \p -> e
-paren _	  e@(SetN _ _)	       = return $ \p -> e
-paren _	  e@(Prop _)	       = return $ \p -> e
-paren _	  e@(Paren _ _)	       = return $ \p -> e
-paren _	  e@(As _ _ _)	       = return $ \p -> e
-paren _	  e@(Dot _ _)	       = return $ \p -> e
-paren _	  e@(Absurd _)	       = return $ \p -> e
-paren _	  e@(RawApp _ _)       = __IMPOSSIBLE__
-paren _	  e@(HiddenArg _ _)    = __IMPOSSIBLE__
+paren _   e@(Ident _)          = return $ \p -> e
+paren _   e@(Lit _)            = return $ \p -> e
+paren _   e@(QuestionMark _ _) = return $ \p -> e
+paren _   e@(Underscore _ _)   = return $ \p -> e
+paren _   e@(Set _)            = return $ \p -> e
+paren _   e@(SetN _ _)         = return $ \p -> e
+paren _   e@(Prop _)           = return $ \p -> e
+paren _   e@(Paren _ _)        = return $ \p -> e
+paren _   e@(As _ _ _)         = return $ \p -> e
+paren _   e@(Dot _ _)          = return $ \p -> e
+paren _   e@(Absurd _)         = return $ \p -> e
+paren _   e@(ETel _)           = return $ \p -> e
+paren _   e@(RawApp _ _)       = __IMPOSSIBLE__
+paren _   e@(HiddenArg _ _)    = __IMPOSSIBLE__
 
 mparen :: Bool -> Expr -> Expr
 mparen True  e = Paren (getRange e) e
diff --git a/src/full/Agda/Syntax/Concrete/Pretty.hs b/src/full/Agda/Syntax/Concrete/Pretty.hs
index 4829e25..17f8e88 100644
--- a/src/full/Agda/Syntax/Concrete/Pretty.hs
+++ b/src/full/Agda/Syntax/Concrete/Pretty.hs
@@ -121,6 +121,8 @@ instance Pretty Expr where
 		pr (x, e) = sep [ pretty x <+> text "="
 				, nest 2 $ pretty e
 				]
+            ETel []  -> text "()"
+            ETel tel -> fsep $ map pretty tel
 
 instance Pretty BoundName where
   pretty = pretty . boundName
@@ -229,7 +231,7 @@ instance Pretty Declaration where
 		hsep [ pretty open, text "import", pretty x, as rn, pretty i ]
 		where
 		    as Nothing	= empty
-		    as (Just x) = text "as" <+> pretty x
+		    as (Just x) = text "as" <+> pretty (asName x)
 	    Pragma pr	-> sep [ text "{-#" <+> pretty pr, text "#-}" ]
 	where
 	    namedBlock s ds =
@@ -293,7 +295,7 @@ instance Pretty Pattern where
 
 instance Pretty ImportDirective where
     pretty i =
-	cat [ public (publicOpen i)
+	sep [ public (publicOpen i)
 	    , pretty $ usingOrHiding i
 	    , rename $ renaming i
 	    ]
@@ -306,7 +308,7 @@ instance Pretty ImportDirective where
 			     , parens $ fsep $ punctuate (text ";") $ map pr xs
 			     ]
 
-	    pr (x,y) = hsep [ pretty x, text "to", pretty y ]
+	    pr r = hsep [ pretty (renFrom r), text "to", pretty (renTo r) ]
 
 instance Pretty UsingOrHiding where
     pretty (Hiding [])	= empty
diff --git a/src/full/Agda/Syntax/Info.hs b/src/full/Agda/Syntax/Info.hs
index 3f84ad4..22febb8 100644
--- a/src/full/Agda/Syntax/Info.hs
+++ b/src/full/Agda/Syntax/Info.hs
@@ -8,6 +8,7 @@
 module Agda.Syntax.Info where
 
 import Data.Generics(Data,Typeable)
+import qualified Agda.Syntax.Concrete.Name as C
 import Agda.Syntax.Common
 import Agda.Syntax.Position
 import Agda.Syntax.Concrete
@@ -63,9 +64,13 @@ instance KillRange ExprInfo where
  --------------------------------------------------------------------------}
 
 data ModuleInfo =
-	ModuleInfo { minfoAccess   :: Access
-		   , minfoAbstract :: IsAbstract
-		   , minfoRange    :: Range
+	ModuleInfo { minfoRange    :: Range
+                   , minfoAsTo     :: Range
+                     -- The range of the \"as\" and \"to\" keywords,
+                     -- if any. Retained for highlighting purposes.
+                   , minfoAsName   :: Maybe C.Name
+                     -- The \"as\" module name, if any. Retained for
+                     -- highlighting purposes.
 		   }
   deriving (Typeable, Data)
 
diff --git a/src/full/Agda/Syntax/Internal/Generic.hs b/src/full/Agda/Syntax/Internal/Generic.hs
index 3d88049..736532f 100644
--- a/src/full/Agda/Syntax/Internal/Generic.hs
+++ b/src/full/Agda/Syntax/Internal/Generic.hs
@@ -14,22 +14,27 @@ import Agda.Utils.Impossible
 
 class TermLike a where
   traverseTerm  :: (Term -> Term) -> a -> a
-  foldTerm :: Monoid m => (Term -> m) -> a -> m
+  traverseTermM :: (Monad m, Applicative m) => (Term -> m Term) -> a -> m a
+  foldTerm      :: Monoid m => (Term -> m) -> a -> m
 
 instance TermLike a => TermLike (Arg a) where
-  traverseTerm f = fmap (traverseTerm f)
+  traverseTerm  f = fmap (traverseTerm f)
+  traverseTermM f = traverse (traverseTermM f)
   foldTerm f = foldMap (foldTerm f)
 
 instance TermLike a => TermLike [a] where
   traverseTerm f = fmap (traverseTerm f)
+  traverseTermM f = traverse (traverseTermM f)
   foldTerm f = foldMap (foldTerm f)
 
 instance (TermLike a, TermLike b) => TermLike (a, b) where
   traverseTerm f (x, y) = (traverseTerm f x, traverseTerm f y)
+  traverseTermM f (x, y) = (,) <$> traverseTermM f x <*> traverseTermM f y
   foldTerm f (x, y) = foldTerm f x `mappend` foldTerm f y
 
 instance TermLike a => TermLike (Abs a) where
   traverseTerm f = fmap (traverseTerm f)
+  traverseTermM f = traverse (traverseTermM f)
   foldTerm f = foldMap (foldTerm f)
 
 instance TermLike Term where
@@ -44,6 +49,17 @@ instance TermLike Term where
     Lit _    -> f t
     Sort _   -> f t
 
+  traverseTermM f t = case t of
+    Var i xs -> f =<< Var i <$> traverseTermM f xs
+    Def c xs -> f =<< Def c <$> traverseTermM f xs
+    Con c xs -> f =<< Con c <$> traverseTermM f xs
+    Lam h b  -> f =<< Lam h <$> traverseTermM f b
+    Pi a b   -> f =<< uncurry Pi <$> traverseTermM f (a, b)
+    Fun a b  -> f =<< uncurry Fun <$> traverseTermM f (a, b)
+    MetaV m xs -> f =<< MetaV m <$> traverseTermM f xs
+    Lit _    -> f t
+    Sort _   -> f t
+
   foldTerm f t = f t `mappend` case t of
     Var i xs   -> foldTerm f xs
     Def c xs   -> foldTerm f xs
@@ -57,5 +73,6 @@ instance TermLike Term where
 
 instance TermLike Type where
   traverseTerm f (El s t) = El s $ traverseTerm f t
+  traverseTermM f (El s t) = El s <$> traverseTermM f t
   foldTerm f (El s t) = foldTerm f t
 
diff --git a/src/full/Agda/Syntax/Parser.hs b/src/full/Agda/Syntax/Parser.hs
index f279f17..2b6cc3c 100644
--- a/src/full/Agda/Syntax/Parser.hs
+++ b/src/full/Agda/Syntax/Parser.hs
@@ -15,7 +15,7 @@ module Agda.Syntax.Parser
     , ParseError(..)
     ) where
 
-import Control.Exception
+import Control.OldException
 import Data.List
 import System.Directory
 
diff --git a/src/full/Agda/Syntax/Parser/LexActions.hs b/src/full/Agda/Syntax/Parser/LexActions.hs
index d8d4bee..54cd6b5 100644
--- a/src/full/Agda/Syntax/Parser/LexActions.hs
+++ b/src/full/Agda/Syntax/Parser/LexActions.hs
@@ -72,6 +72,12 @@ postToken :: Token -> Token
 postToken (TokId (r, "\x03bb")) = TokSymbol SymLambda r
 postToken (TokId (r, "\x2192")) = TokSymbol SymArrow r
 postToken (TokId (r, "\x2200")) = TokKeyword KwForall r
+postToken (TokId (r, s))
+  | set == "Set" && all isSub n = TokSetN (r, readSubscript n)
+  where
+    (set, n)      = splitAt 3 s
+    isSub c       = c `elem` ['\x2080'..'\x2089']
+    readSubscript = read . map (\c -> toEnum (fromEnum c - 0x2080 + fromEnum '0'))
 postToken t = t
 
 -- | Use the input string from the previous input (with the appropriate
diff --git a/src/full/Agda/Syntax/Parser/Lexer.x b/src/full/Agda/Syntax/Parser/Lexer.x
index 130ed5f..0bf7024 100644
--- a/src/full/Agda/Syntax/Parser/Lexer.x
+++ b/src/full/Agda/Syntax/Parser/Lexer.x
@@ -64,9 +64,11 @@ tokens :-
   -- \end{code} should only be recognized if the bottom of the stack is <code>
 
 -- White space
-<0,code,bol_,layout_,empty_layout_,imp_dir_,pragma_>
+<0,code,bol_,layout_,empty_layout_,imp_dir_>
     $white_nonl+    ;
 
+<pragma_> $white ;
+
 -- Pragmas
 <0,code>    "{-#"		{ begin pragma }
 <pragma_>   "{-#"		{ symbol SymOpenPragma }
@@ -97,7 +99,7 @@ tokens :-
 -- We need to check the offside rule for the first token on each line.  We
 -- should not check the offside rule for the end of file token or an
 -- '\end{code}'
-<0,code,imp_dir_,pragma_> \n	{ begin bol_ }
+<0,code,imp_dir_> \n	{ begin bol_ }
 <bol_>
     {
 	\n		    ;
diff --git a/src/full/Agda/Syntax/Parser/Parser.y b/src/full/Agda/Syntax/Parser/Parser.y
index d474554..5252f71 100644
--- a/src/full/Agda/Syntax/Parser/Parser.y
+++ b/src/full/Agda/Syntax/Parser/Parser.y
@@ -496,10 +496,11 @@ DomainFreeBinding
  --------------------------------------------------------------------------}
 
 -- You can rename imports
-ImportImportDirective :: { (Maybe Name, ImportDirective) }
+ImportImportDirective :: { (Maybe AsName, ImportDirective) }
 ImportImportDirective
     : ImportDirective	    { (Nothing, $1) }
-    | id Id ImportDirective {% isName "as" $1 >> return (Just $2, $3) }
+    | id Id ImportDirective {% isName "as" $1 >>
+                               return (Just (AsName $2 (getRange (fst $1))), $3) }
 
 -- Import directives
 ImportDirective :: { ImportDirective }
@@ -524,19 +525,19 @@ UsingOrHiding
 	-- only using can have an empty list
     | 'hiding' '(' CommaImportNames1 ')' { Hiding $3 }
 
-RenamingDir :: { [(ImportedName, Name)] }
+RenamingDir :: { [Renaming] }
 RenamingDir
     : 'renaming' '(' Renamings ')'	{ $3 }
 
 -- Renamings of the form 'x to y'
-Renamings :: { [(ImportedName, Name)] }
+Renamings :: { [Renaming] }
 Renamings
     : Renaming ';' Renamings	{ $1 : $3 }
     | Renaming			{ [$1] }
 
-Renaming :: { (ImportedName, Name) }
+Renaming :: { Renaming }
 Renaming
-    : ImportName_ 'to' Id { ($1,$3) }
+    : ImportName_ 'to' Id { Renaming $1 $3 (getRange $2) }
 
 -- We need a special imported name here, since we have to trigger
 -- the imp_dir state exactly one token before the 'to'
@@ -934,7 +935,7 @@ verifyImportDirective i =
 			[_] -> ""
 			_   -> "s"
     where
-	xs = names (usingOrHiding i) ++ map fst (renaming i)
+	xs = names (usingOrHiding i) ++ map renFrom (renaming i)
 	names (Using xs)    = xs
 	names (Hiding xs)   = xs
 
diff --git a/src/full/Agda/Syntax/Position.hs b/src/full/Agda/Syntax/Position.hs
index 3af8df2..93f4753 100644
--- a/src/full/Agda/Syntax/Position.hs
+++ b/src/full/Agda/Syntax/Position.hs
@@ -75,6 +75,7 @@ data Position = Pn { srcFile :: FilePath
 		   }
     deriving (Typeable, Data)
 
+positionInvariant :: Position -> Bool
 positionInvariant p =
   posPos p > 0 && posLine p > 0 && posCol p > 0
 
@@ -407,6 +408,7 @@ instance Arbitrary Range where
     fixUp is = is
 
 -- | Test suite.
+tests :: IO Bool
 tests = runTests "Agda.Syntax.Position"
   [ quickCheck' positionInvariant
   , quickCheck' intervalInvariant
diff --git a/src/full/Agda/Syntax/Scope/Base.hs b/src/full/Agda/Syntax/Scope/Base.hs
index 2da4aba..84b348e 100644
--- a/src/full/Agda/Syntax/Scope/Base.hs
+++ b/src/full/Agda/Syntax/Scope/Base.hs
@@ -1,9 +1,10 @@
-{-# LANGUAGE CPP, DeriveDataTypeable #-}
+{-# LANGUAGE CPP, DeriveDataTypeable, GADTs, ScopedTypeVariables #-}
 
 {-| This module defines the notion of a scope and operations on scopes.
 -}
 module Agda.Syntax.Scope.Base where
 
+import Control.Applicative
 import Data.Generics (Typeable, Data)
 import Data.List
 import Data.Map (Map)
@@ -15,7 +16,8 @@ import Agda.Syntax.Common
 import Agda.Syntax.Fixity
 import Agda.Syntax.Abstract.Name as A
 import Agda.Syntax.Concrete.Name as C
-import Agda.Syntax.Concrete (ImportDirective(..), UsingOrHiding(..), ImportedName(..))
+import Agda.Syntax.Concrete
+  (ImportDirective(..), UsingOrHiding(..), ImportedName(..), Renaming(..))
 import qualified Agda.Utils.Map as Map
 import Agda.Utils.Tuple
 
@@ -27,20 +29,36 @@ import Agda.Utils.Impossible
 -- | A scope is a named collection of names partitioned into public and private
 --   names.
 data Scope = Scope
-      { scopeName    :: A.ModuleName
-      , scopePrivate :: NameSpace
-      , scopePublic  :: NameSpace
+      { scopeName     :: A.ModuleName
+      , scopeParents  :: [A.ModuleName]
+      , scopePrivate  :: NameSpace
+      , scopePublic   :: NameSpace 
+      , scopeImported :: NameSpace -- ^ public opened names
+      , scopeImports  :: Map C.QName A.ModuleName
       }
   deriving (Typeable, Data)
 
--- | The scope at a particular point in the program is determined by the stack
---   of all enclosing scopes.
-type ScopeStack = [Scope]
+data NameSpaceId = PrivateNS | PublicNS | ImportedNS
+  deriving (Typeable, Data, Eq)
+
+localNameSpace :: Access -> NameSpaceId
+localNameSpace PublicAccess  = PublicNS
+localNameSpace PrivateAccess = PrivateNS
+
+importedNameSpace :: Access -> NameSpaceId
+importedNameSpace PublicAccess  = ImportedNS
+importedNameSpace PrivateAccess = PrivateNS
+
+scopeNameSpace :: NameSpaceId -> Scope -> NameSpace
+scopeNameSpace PublicNS   = scopePublic
+scopeNameSpace PrivateNS  = scopePrivate
+scopeNameSpace ImportedNS = scopeImported
 
 -- | The complete information about the scope at a particular program point
 --   includes the scope stack, the local variables, and the context precedence.
 data ScopeInfo = ScopeInfo
-      { scopeStack	:: ScopeStack
+      { scopeCurrent    :: A.ModuleName
+      , scopeModules    :: Map A.ModuleName Scope
       , scopeLocals	:: LocalVars
       , scopePrecedence :: Precedence
       }
@@ -58,8 +76,27 @@ data NameSpace = NameSpace
       }
   deriving (Typeable, Data)
 
-type NamesInScope   = Map C.QName [AbstractName]
-type ModulesInScope = Map C.QName [AbstractModule]
+type ThingsInScope a = Map C.Name [a]
+type NamesInScope    = ThingsInScope AbstractName
+type ModulesInScope  = ThingsInScope AbstractModule
+
+data InScopeTag a where
+  NameTag   :: InScopeTag AbstractName
+  ModuleTag :: InScopeTag AbstractModule
+
+class Eq a => InScope a where
+  inScopeTag :: InScopeTag a
+
+inNameSpace :: forall a. InScope a => NameSpace -> ThingsInScope a
+inNameSpace = case inScopeTag :: InScopeTag a of
+  NameTag   -> nsNames
+  ModuleTag -> nsModules
+
+instance InScope AbstractName where
+  inScopeTag = NameTag
+
+instance InScope AbstractModule where
+  inScopeTag = ModuleTag
 
 -- | We distinguish constructor names from other names.
 data KindOfName = ConName | DefName
@@ -92,13 +129,15 @@ instance Ord AbstractModule where
   compare = compare `on` amodName
 
 instance Show ScopeInfo where
-  show (ScopeInfo stack locals ctx) =
+  show (ScopeInfo this mods locals ctx) =
     unlines $
-      [ "ScopeInfo" ] ++
+      [ "ScopeInfo"
+      , "  current = " ++ show this
+      ] ++
       (if null locals then [] else [ "  locals  = " ++ show locals ]) ++
       [ "  context = " ++ show ctx
-      , "  stack"
-      ] ++ map ("    "++) (relines . map show $ stack)
+      , "  modules"
+      ] ++ map ("    "++) (relines . map show $ Map.elems mods)
     where
       relines = filter (not . null) . lines . unlines
 
@@ -107,11 +146,19 @@ blockOfLines _  [] = []
 blockOfLines hd ss = hd : map ("  "++) ss
 
 instance Show Scope where
-  show (Scope { scopeName = name, scopePublic = pub, scopePrivate = pri }) =
+  show (Scope { scopeName = name, scopeParents = parents, scopeImports = imps
+              , scopePublic = pub, scopePrivate = pri, scopeImported = imp }) =
     unlines $
-      [ "scope " ++ show name ]
-      ++ blockOfLines "public"  (lines $ show pub)
-      ++ blockOfLines "private" (lines $ show pri)
+      [ "* scope " ++ show name ] ++ ind (
+         blockOfLines "public"   (lines $ show pub)
+      ++ blockOfLines "imported" (lines $ show imp)
+      ++ blockOfLines "private"  (lines $ show pri)
+      ++ blockOfLines "imports"  (case Map.keys imps of
+                                    [] -> []
+                                    ks -> [ show ks ]
+                                 )
+      )
+    where ind = map ("  " ++)
 
 instance Show NameSpace where
   show (NameSpace names mods) =
@@ -137,12 +184,9 @@ instance SetRange AbstractName where
 
 -- * Operations on name and module maps.
 
-mergeNames :: NamesInScope -> NamesInScope -> NamesInScope
+mergeNames :: InScope a => ThingsInScope a -> ThingsInScope a -> ThingsInScope a
 mergeNames = Map.unionWith union
 
-mergeModules :: ModulesInScope -> ModulesInScope -> ModulesInScope
-mergeModules = Map.unionWith union
-
 -- * Operations on name spaces
 
 -- | The empty name space.
@@ -182,32 +226,36 @@ mapNameSpaceM fd fm ns = do
 
 -- | The empty scope.
 emptyScope :: Scope
-emptyScope = Scope { scopeName	  = noModuleName
-		   , scopePublic  = emptyNameSpace
-		   , scopePrivate = emptyNameSpace
+emptyScope = Scope { scopeName	   = noModuleName
+                   , scopeParents  = []
+		   , scopePublic   = emptyNameSpace
+		   , scopePrivate  = emptyNameSpace
+                   , scopeImported = emptyNameSpace
+                   , scopeImports  = Map.empty
 		   }
 
 -- | The empty scope info.
 emptyScopeInfo :: ScopeInfo
 emptyScopeInfo = ScopeInfo
-		  { scopeStack	    = [emptyScope]
+		  { scopeCurrent    = noModuleName
+                  , scopeModules    = Map.singleton noModuleName emptyScope
 		  , scopeLocals	    = []
 		  , scopePrecedence = TopCtx
 		  }
 
 -- | Map functions over the names and modules in a scope.
-mapScope :: (Access -> NamesInScope   -> NamesInScope  ) ->
-	    (Access -> ModulesInScope -> ModulesInScope) ->
+mapScope :: (NameSpaceId -> NamesInScope   -> NamesInScope  ) ->
+	    (NameSpaceId -> ModulesInScope -> ModulesInScope) ->
 	    Scope -> Scope
 mapScope fd fm s =
-  s { scopePrivate = mapNS PrivateAccess $ scopePrivate s
-    , scopePublic  = mapNS PublicAccess  $ scopePublic  s
+  s { scopePrivate  = mapNS PrivateNS  $ scopePrivate  s
+    , scopePublic   = mapNS PublicNS   $ scopePublic   s
+    , scopeImported = mapNS ImportedNS $ scopeImported s
     }
   where
     mapNS acc = mapNameSpace (fd acc) (fm acc)
 
--- | Same as 'mapScope' but applies the same function to both the public and
---   private name spaces.
+-- | Same as 'mapScope' but applies the same function to all name spaces.
 mapScope_ :: (NamesInScope   -> NamesInScope  ) ->
 	     (ModulesInScope -> ModulesInScope) ->
 	     Scope -> Scope
@@ -215,13 +263,14 @@ mapScope_ fd fm = mapScope (const fd) (const fm)
 
 -- | Map monadic functions over the names and modules in a scope.
 mapScopeM :: Monad m =>
-  (Access -> NamesInScope   -> m NamesInScope  ) ->
-  (Access -> ModulesInScope -> m ModulesInScope) ->
+  (NameSpaceId -> NamesInScope   -> m NamesInScope  ) ->
+  (NameSpaceId -> ModulesInScope -> m ModulesInScope) ->
   Scope -> m Scope
 mapScopeM fd fm s = do
-  pri <- mapNS PrivateAccess $ scopePrivate s
-  pub <- mapNS PublicAccess  $ scopePublic  s
-  return $ s { scopePrivate = pri, scopePublic = pub }
+  pri <- mapNS PrivateNS  $ scopePrivate  s
+  pub <- mapNS PublicNS   $ scopePublic   s
+  imp <- mapNS ImportedNS $ scopeImported s
+  return $ s { scopePrivate = pri, scopePublic = pub, scopeImported = imp }
   where
     mapNS acc = mapNameSpaceM (fd acc) (fm acc)
 
@@ -235,12 +284,14 @@ mapScopeM_ fd fm = mapScopeM (const fd) (const fm)
 
 -- | Zip together two scopes. The resulting scope has the same name as the
 --   first scope.
-zipScope :: (Access -> NamesInScope   -> NamesInScope   -> NamesInScope  ) ->
-	    (Access -> ModulesInScope -> ModulesInScope -> ModulesInScope) ->
+zipScope :: (NameSpaceId -> NamesInScope   -> NamesInScope   -> NamesInScope  ) ->
+	    (NameSpaceId -> ModulesInScope -> ModulesInScope -> ModulesInScope) ->
 	    Scope -> Scope -> Scope
 zipScope fd fm s1 s2 =
-  s1 { scopePrivate = zipNS PrivateAccess (scopePrivate s1) (scopePrivate s2)
-     , scopePublic  = zipNS PublicAccess  (scopePublic  s1) (scopePublic  s2)
+  s1 { scopePrivate  = zipNS PrivateNS  (scopePrivate  s1) (scopePrivate  s2)
+     , scopePublic   = zipNS PublicNS   (scopePublic   s1) (scopePublic   s2)
+     , scopeImported = zipNS ImportedNS (scopeImported s1) (scopeImported s2)
+     , scopeImports  = Map.union (scopeImports s1) (scopeImports s2)
      }
   where
     zipNS acc = zipNameSpace (fd acc) (fm acc)
@@ -254,20 +305,29 @@ zipScope_ fd fm = zipScope (const fd) (const fm)
 
 -- | Filter a scope keeping only concrete names matching the predicates.
 --   The first predicate is applied to the names and the second to the modules.
-filterScope :: (C.QName -> Bool) -> (C.QName -> Bool) -> Scope -> Scope
+filterScope :: (C.Name -> Bool) -> (C.Name -> Bool) -> Scope -> Scope
 filterScope pd pm = mapScope_ (Map.filterKeys pd) (Map.filterKeys pm)
 
--- | Return all names in a scope, both public and private.
-allNamesInScope :: Scope -> NamesInScope
-allNamesInScope s = (mergeNames `on` nsNames) (scopePublic s) (scopePrivate s)
+-- | Return all names in a scope.
+allNamesInScope :: InScope a => Scope -> ThingsInScope a
+allNamesInScope = namesInScope [scopePublic, scopeImported, scopePrivate]
 
--- | Return all modules in a scope, both public and private.
-allModulesInScope :: Scope -> ModulesInScope
-allModulesInScope s = (mergeModules `on` nsModules) (scopePublic s) (scopePrivate s)
+namesInScope :: InScope a => [Scope -> NameSpace] -> Scope -> ThingsInScope a
+namesInScope fs s =
+  foldr1 mergeNames [ inNameSpace (f s) | f <- fs ]
+
+allThingsInScope :: Scope -> NameSpace
+allThingsInScope = thingsInScope [scopePublic, scopeImported, scopePrivate]
+
+thingsInScope :: [Scope -> NameSpace] -> Scope -> NameSpace
+thingsInScope fs s =
+  NameSpace { nsNames   = namesInScope fs s
+            , nsModules = namesInScope fs s
+            }
 
 -- | Merge two scopes. The result has the name of the first scope.
 mergeScope :: Scope -> Scope -> Scope
-mergeScope = zipScope_ mergeNames mergeModules
+mergeScope = zipScope_ mergeNames mergeNames
 
 -- | Merge a non-empty list of scopes. The result has the name of the first
 --   scope in the list.
@@ -277,49 +337,38 @@ mergeScopes ss = foldr1 mergeScope ss
 
 -- * Specific operations on scopes
 
--- | Given a scope where all concrete names start with @M@, remove all the
---   @M at s. Used when opening a module @M@, in which case only those names
---   starting with @M@ are considered.
-unqualifyScope :: C.QName -> Scope -> Scope
-unqualifyScope m = mapScope_ unqual unqual
-  where
-    unqual = Map.mapKeys (unq m)
-
-    unq _	     (C.QName _) = __IMPOSSIBLE__
-    unq (C.Qual m n) (C.Qual m' q)
-      | m == m'   = unq n q
-      | otherwise = __IMPOSSIBLE__
-    unq (C.QName m)  (C.Qual m' q)
-      | m == m'	  = q
-      | otherwise = __IMPOSSIBLE__
-
--- | Move all names in a scope to the public or private section, depending on
---   the first argument. Used when opening a module.
-setScopeAccess :: Access -> Scope -> Scope
-setScopeAccess a s = s { scopePublic  = pub
-		       , scopePrivate = pri
+-- | Move all names in a scope to the given name space (except never move from
+--   Imported to Public).
+setScopeAccess :: NameSpaceId -> Scope -> Scope
+setScopeAccess a s = s { scopeImported = ns ImportedNS
+		       , scopePrivate  = ns PrivateNS
+                       , scopePublic   = ns PublicNS
 		       }
   where
-    one  = zipNameSpace mergeNames mergeModules (scopePublic s) (scopePrivate s)
-    zero = emptyNameSpace
+    zero  = emptyNameSpace
+    one   = allThingsInScope s
+    imp   = thingsInScope [scopeImported] s
+    noimp = thingsInScope [scopePublic, scopePrivate] s
 
-    (pub, pri) = case a of
-      PublicAccess  -> (one, zero)
-      PrivateAccess -> (zero, one)
+    ns b = case (a, b) of
+      (PublicNS, PublicNS)   -> noimp
+      (PublicNS, ImportedNS) -> imp
+      _ | a == b             -> one
+        | otherwise          -> zero
 
 -- | Add names to a scope.
-addNamesToScope :: Access -> C.QName -> [AbstractName] -> Scope -> Scope
+addNamesToScope :: NameSpaceId -> C.Name -> [AbstractName] -> Scope -> Scope
 addNamesToScope acc x ys s = mergeScope s s1
   where
     s1 = setScopeAccess acc $ emptyScope
 	 { scopePublic = emptyNameSpace { nsNames = Map.singleton x ys } }
 
 -- | Add a name to a scope.
-addNameToScope :: Access -> C.QName -> AbstractName -> Scope -> Scope
+addNameToScope :: NameSpaceId -> C.Name -> AbstractName -> Scope -> Scope
 addNameToScope acc x y s = addNamesToScope acc x [y] s
 
 -- | Add a module to a scope.
-addModuleToScope :: Access -> C.QName -> AbstractModule -> Scope -> Scope
+addModuleToScope :: NameSpaceId -> C.Name -> AbstractModule -> Scope -> Scope
 addModuleToScope acc x m s = mergeScope s s1
   where
     s1 = setScopeAccess acc $ emptyScope
@@ -332,23 +381,16 @@ applyImportDirective dir s = mergeScope usedOrHidden renamed
     usedOrHidden = useOrHide (hideLHS (renaming dir) $ usingOrHiding dir) s
     renamed	 = rename (renaming dir) $ useOrHide useRenamedThings s
 
-    useRenamedThings = Using $ map fst $ renaming dir
+    useRenamedThings = Using $ map renFrom $ renaming dir
 
-    hideLHS :: [(ImportedName, C.Name)] -> UsingOrHiding -> UsingOrHiding
+    hideLHS :: [Renaming] -> UsingOrHiding -> UsingOrHiding
     hideLHS _	i@(Using _) = i
-    hideLHS ren (Hiding xs) = Hiding $ xs ++ map fst ren
+    hideLHS ren (Hiding xs) = Hiding $ xs ++ map renFrom ren
 
     useOrHide :: UsingOrHiding -> Scope -> Scope
     useOrHide (Hiding xs) s = filterNames notElem notElem xs s
     useOrHide (Using  xs) s = filterNames elem	  elem	  xs s
 
-    -- Qualified names are only ok if the top-most module is ok.
-    okName pd pm (C.QName  x) = pd x
-    okName pd pm (C.Qual m _) = pm m
-
-    okModule pm (C.QName  x) = pm x
-    okModule pm (C.Qual m _) = pm m
-
     filterNames :: (C.Name -> [C.Name] -> Bool) -> (C.Name -> [C.Name] -> Bool) ->
 		   [ImportedName] -> Scope -> Scope
     filterNames pd pm xs = filterScope' (flip pd ds) (flip pm ms)
@@ -356,25 +398,19 @@ applyImportDirective dir s = mergeScope usedOrHidden renamed
 	ds = [ x | ImportedName   x <- xs ]
 	ms = [ m | ImportedModule m <- xs ]
 
-    filterScope' pd pm = filterScope (okName pd pm) (okModule pm)
+    filterScope' pd pm = filterScope pd pm
 
     -- Renaming
-    rename :: [(ImportedName, C.Name)] -> Scope -> Scope
-    rename rho = mapScope_ (Map.mapKeys $ renName drho mrho)
-			   (Map.mapKeys $ renMod mrho)
+    rename :: [Renaming] -> Scope -> Scope
+    rename rho = mapScope_ (Map.mapKeys $ ren drho)
+			   (Map.mapKeys $ ren mrho)
       where
-	mrho = [ (x, y) | (ImportedModule x, y) <- rho ]
-	drho = [ (x, y) | (ImportedName	  x, y) <- rho ]
+	mrho = [ (x, y) | Renaming { renFrom = ImportedModule x, renTo = y } <- rho ]
+	drho = [ (x, y) | Renaming { renFrom = ImportedName   x, renTo = y } <- rho ]
 
 	ren r x = maybe x id $ lookup x r
 
-	renName dr mr (C.QName  x) = C.QName $ ren dr x
-	renName dr mr (C.Qual m x) = flip C.Qual x $ ren mr m
-
-	renMod mr (C.QName  x) = C.QName $ ren mr x
-	renMod mr (C.Qual m x) = flip C.Qual x $ ren mr m
-
--- | Rename the canical names in a scope.
+-- | Rename the abstract names in a scope.
 renameCanonicalNames :: Map A.QName A.QName -> Map A.ModuleName A.ModuleName ->
 			Scope -> Scope
 renameCanonicalNames renD renM = mapScope_ renameD renameM
@@ -388,35 +424,96 @@ renameCanonicalNames renD renM = mapScope_ renameD renameM
     rD x = maybe x id $ Map.lookup x renD
     rM x = maybe x id $ Map.lookup x renM
 
--- * Inverse look-up
+-- | Restrict the private name space of a scope
+restrictPrivate :: Scope -> Scope
+restrictPrivate s = s { scopePrivate = emptyNameSpace, scopeImports = Map.empty }
 
--- | Find the shortest concrete name that maps (uniquely) to a given abstract
---   name. Find defined names (first component of result) and module names
---   (second component) simultaneously.
+-- | Get the public parts of the public modules of a scope
+publicModules :: ScopeInfo -> Map A.ModuleName Scope
+publicModules scope = Map.filterWithKey (\m _ -> reachable m) allMods
+  where
+    allMods   = Map.map restrictPrivate $ scopeModules scope
+    root      = scopeCurrent scope
+    modules s = map amodName $ concat $ Map.elems $ allNamesInScope s
 
--- | Takes the first component of 'inverseScopeLookup'.
-inverseScopeLookupName :: A.QName -> ScopeInfo -> Maybe C.QName
-inverseScopeLookupName x s = best $ invert x $ mergeScopes $ scopeStack s
+    chase m = m : case Map.lookup m allMods of
+      Just s  -> concatMap chase $ modules s
+      Nothing -> __IMPOSSIBLE__
+
+    reachable = (`elem` chase root)
+
+everythingInScope :: ScopeInfo -> NameSpace
+everythingInScope scope =
+    allThingsInScope
+    $ mergeScopes
+    [ s | (m, s) <- Map.toList (scopeModules scope), m `elem` current ]
   where
-    len :: C.QName -> Int
-    len (C.QName _)  = 1
-    len (C.Qual _ x) = 1 + len x
+    this    = scopeCurrent scope
+    parents = case Map.lookup this (scopeModules scope) of
+      Just s  -> scopeParents s
+      Nothing -> __IMPOSSIBLE__
+    current = this : parents
+
+-- | Look up a name in the scope
+scopeLookup :: forall a. InScope a => C.QName -> ScopeInfo -> [a]
+scopeLookup q scope = findName q root ++ imports
+  where
+    this    = scopeCurrent scope
+    current = moduleScope this
+    root    = mergeScopes $ current : map moduleScope (scopeParents current)
 
-    best xs = case sortBy (compare `on` len) xs of
-      []    -> Nothing
-      x : _ -> Just x
+    tag = inScopeTag :: InScopeTag a
 
-    invert x s = ds
-      where
-	ds = [ y | (y, zs) <- Map.toList $ allNamesInScope s
-                 , x `elem` map anameName zs
-                 , length zs == 1 || all ((==ConName) . anameKind) zs
-             ]
+    splitName (C.QName x) = []
+    splitName (C.Qual x q) = (C.QName x, q) : do
+      (m, r) <- splitName q
+      return (C.Qual x m, r)
 
--- | Takes the second component of 'inverseScopeLookup'.
-inverseScopeLookupModule :: A.ModuleName -> ScopeInfo -> Maybe C.QName
-inverseScopeLookupModule x s = best $ invert x $ mergeScopes $ scopeStack s
+    imported q = maybe [] (:[]) $ Map.lookup q $ scopeImports root
+
+    topImports :: [a]
+    topImports = case tag of
+      NameTag   -> []
+      ModuleTag -> map AbsModule (imported q)
+
+    imports :: [a]
+    imports = topImports ++ do
+      (m, x) <- splitName q
+      m <- imported m
+      x <- findName x (restrictPrivate $ moduleScope m)
+      return x
+
+    moduleScope name = case Map.lookup name (scopeModules scope) of
+      Nothing -> __IMPOSSIBLE__
+      Just s  -> s
+
+    lookupName x s = maybe [] id $ Map.lookup x (allNamesInScope s)
+
+    findName (C.QName x)  s = lookupName x s
+    findName (C.Qual x q) s = do
+      m <- amodName <$> lookupName x s
+      findName q (restrictPrivate $ moduleScope m)
+
+-- * Inverse look-up
+
+-- | Find the shortest concrete name that maps (uniquely) to a given abstract
+--   name.
+inverseScopeLookup :: Either A.ModuleName A.QName -> ScopeInfo -> Maybe C.QName
+inverseScopeLookup name scope = case name of
+  Left  m -> best $ filter unambiguousModule $ findModule m
+  Right q -> best $ filter unambiguousName   $ findName nameMap q
   where
+    this = scopeCurrent scope
+    current = this : scopeParents (moduleScope this)
+    scopes  = [ (m, restrict m s) | (m, s) <- Map.toList (scopeModules scope) ]
+
+    moduleScope name = case Map.lookup name (scopeModules scope) of
+      Nothing -> __IMPOSSIBLE__
+      Just s  -> s
+
+    restrict m s | m `elem` current = s
+                 | otherwise = restrictPrivate s
+
     len :: C.QName -> Int
     len (C.QName _)  = 1
     len (C.Qual _ x) = 1 + len x
@@ -425,8 +522,49 @@ inverseScopeLookupModule x s = best $ invert x $ mergeScopes $ scopeStack s
       []    -> Nothing
       x : _ -> Just x
 
-    invert x s = ms
-      where
-	ms = [ y | (y, [m]) <- Map.toList $ allModulesInScope s, x == amodName m  ]
+    unique []      = __IMPOSSIBLE__
+    unique [_]     = True
+    unique (_:_:_) = False
+
+    unambiguousModule q = unique (scopeLookup q scope :: [AbstractModule])
+    unambiguousName   q = unique xs || all ((ConName ==) . anameKind) xs
+      where xs = scopeLookup q scope
+
+    findName :: Ord a => Map a [(A.ModuleName, C.Name)] -> a -> [C.QName]
+    findName table q = do
+      (m, x) <- maybe [] id $ Map.lookup q table
+      if m `elem` current
+        then return (C.QName x)
+        else do
+          y <- findModule m
+          return $ C.qualify y x
+
+    findModule :: A.ModuleName -> [C.QName]
+    findModule q = findName moduleMap q ++
+                   maybe [] id (Map.lookup q importMap)
+
+    importMap = Map.unionsWith (++) $ do
+      (m, s) <- scopes
+      (x, y) <- Map.toList $ scopeImports s
+      return $ Map.singleton y [x]
+
+    moduleMap = Map.unionsWith (++) $ do
+      (m, s)  <- scopes
+      (x, ms) <- Map.toList (allNamesInScope s)
+      q       <- amodName <$> ms
+      return $ Map.singleton q [(m, x)]
+
+    nameMap = Map.unionsWith (++) $ do
+      (m, s)  <- scopes
+      (x, ms) <- Map.toList (allNamesInScope s)
+      q       <- anameName <$> ms
+      return $ Map.singleton q [(m, x)]
+
+-- | Takes the first component of 'inverseScopeLookup'.
+inverseScopeLookupName :: A.QName -> ScopeInfo -> Maybe C.QName
+inverseScopeLookupName x = inverseScopeLookup (Right x)
 
+-- | Takes the second component of 'inverseScopeLookup'.
+inverseScopeLookupModule :: A.ModuleName -> ScopeInfo -> Maybe C.QName
+inverseScopeLookupModule x = inverseScopeLookup (Left x)
 
diff --git a/src/full/Agda/Syntax/Scope/Monad.hs b/src/full/Agda/Syntax/Scope/Monad.hs
index 1a2ea01..23fd5a9 100644
--- a/src/full/Agda/Syntax/Scope/Monad.hs
+++ b/src/full/Agda/Syntax/Scope/Monad.hs
@@ -8,6 +8,7 @@ module Agda.Syntax.Scope.Monad where
 import Prelude hiding (mapM)
 import Control.Applicative
 import Control.Monad hiding (mapM)
+import Control.Monad.Writer hiding (mapM)
 import Data.Map (Map)
 import Data.Traversable
 import Data.List
@@ -45,37 +46,86 @@ notInScope x = typeError $ NotInScope [x]
 
 -- * General operations
 
+getCurrentModule :: ScopeM A.ModuleName
+getCurrentModule = setRange noRange . scopeCurrent <$> getScope
+
+setCurrentModule :: A.ModuleName -> ScopeM ()
+setCurrentModule m = modifyScopeInfo $ \s -> s { scopeCurrent = m }
+
+withCurrentModule :: A.ModuleName -> ScopeM a -> ScopeM a
+withCurrentModule new action = do
+  old <- getCurrentModule
+  setCurrentModule new
+  x   <- action
+  setCurrentModule old
+  return x
+
+getNamedScope :: A.ModuleName -> ScopeM Scope
+getNamedScope m = do
+  scope <- getScope
+  case Map.lookup m (scopeModules scope) of
+    Just s  -> return s
+    Nothing -> do
+      reportSLn "" 0 $ "ERROR: In scope\n" ++ show scope ++ "\nNO SUCH SCOPE " ++ show m
+      __IMPOSSIBLE__
+
+getCurrentScope :: ScopeM Scope
+getCurrentScope = getNamedScope =<< getCurrentModule
+
+-- | Create a new module with an empty scope
+createModule :: A.ModuleName -> ScopeM ()
+createModule m = do
+  s <- getCurrentScope
+  let parents = scopeName s : scopeParents s
+  modifyScopes $ Map.insert m emptyScope { scopeName = m, scopeParents = parents }
+
 -- | Apply a function to the scope info.
 modifyScopeInfo :: (ScopeInfo -> ScopeInfo) -> ScopeM ()
 modifyScopeInfo f = do
   scope <- getScope
   setScope $ f scope
 
--- | Apply a function to the scope stack.
-modifyScopeStack :: (ScopeStack -> ScopeStack) -> ScopeM ()
-modifyScopeStack f = modifyScopeInfo $ \s -> s { scopeStack = f $ scopeStack s }
+-- | Apply a function to the scope map.
+modifyScopes :: (Map A.ModuleName Scope -> Map A.ModuleName Scope) -> ScopeM ()
+modifyScopes f = modifyScopeInfo $ \s -> s { scopeModules = f $ scopeModules s }
 
--- | Apply a function to the top scope.
-modifyTopScope :: (Scope -> Scope) -> ScopeM ()
-modifyTopScope f = modifyScopeStack $ \(s:ss) -> f s : ss
+-- | Apply a function to the given scope.
+modifyNamedScope :: A.ModuleName -> (Scope -> Scope) -> ScopeM ()
+modifyNamedScope m f = modifyScopes $ Map.mapWithKey f'
+  where
+    f' m' s | m' == m   = f s
+            | otherwise = s
+
+-- | Apply a function to the current scope.
+modifyCurrentScope :: (Scope -> Scope) -> ScopeM ()
+modifyCurrentScope f = do
+  m <- getCurrentModule
+  modifyNamedScope m f
 
 -- | Apply a monadic function to the top scope.
-modifyTopScopeM :: (Scope -> ScopeM Scope) -> ScopeM ()
-modifyTopScopeM f = do
-  s : _ <- scopeStack <$> getScope
-  s'	<- f s
-  modifyTopScope (const s')
+modifyNamedScopeM :: A.ModuleName -> (Scope -> ScopeM Scope) -> ScopeM ()
+modifyNamedScopeM m f = do
+  s  <- getNamedScope m
+  s' <- f s
+  modifyNamedScope m (const s')
+
+modifyCurrentScopeM :: (Scope -> ScopeM Scope) -> ScopeM ()
+modifyCurrentScopeM f = do
+  m <- getCurrentModule
+  modifyNamedScopeM m f
 
 -- | Apply a function to the public or private name space.
-modifyTopNameSpace :: Access -> (NameSpace -> NameSpace) -> ScopeM ()
-modifyTopNameSpace acc f = modifyTopScope action
+modifyCurrentNameSpace :: NameSpaceId -> (NameSpace -> NameSpace) -> ScopeM ()
+modifyCurrentNameSpace acc f = modifyCurrentScope action
   where
-    action s = s { scopePublic	= pub $ scopePublic  s
-		 , scopePrivate = pri $ scopePrivate s
-		 }
-    (pub, pri) = case acc of
-      PublicAccess  -> (f, id)
-      PrivateAccess -> (id, f)
+    action s = s { scopePublic   = pub $ scopePublic  s
+                 , scopePrivate  = pri $ scopePrivate s
+                 , scopeImported = imp $ scopeImported s
+                 }
+    (pub, pri, imp) = case acc of
+      PublicNS   -> (f, id, id)
+      PrivateNS  -> (id, f, id)
+      ImportedNS -> (id, id, f)
 
 -- | Set context precedence
 setContextPrecedence :: Precedence -> ScopeM ()
@@ -125,22 +175,12 @@ freshAbstractQName fx x = do
   m <- getCurrentModule
   return $ A.qualify m y
 
--- * Simple queries
-
--- | Returns the name of the current module, with the range set to
--- 'noRange'.
-getCurrentModule :: ScopeM ModuleName
-getCurrentModule =
-  setRange noRange .
-  A.mnameFromList . concatMap A.mnameToList .
-  reverse . map scopeName . scopeStack <$> getScope
-
 -- * Resolving names
 
 data ResolvedName = VarName A.Name
-		  | DefinedName AbstractName
+                  | DefinedName AbstractName
                   | ConstructorName [AbstractName]
-		  | UnknownName
+                  | UnknownName
   deriving (Show)
 
 -- | Look up the abstract name referred to by a given concrete name.
@@ -148,16 +188,15 @@ resolveName :: C.QName -> ScopeM ResolvedName
 resolveName x = do
   scope <- getScope
   let vars = map (C.QName -*- id) $ scopeLocals scope
-      defs = allNamesInScope . mergeScopes . scopeStack $ scope
   case lookup x vars of
     Just y  -> return $ VarName $ y { nameConcrete = unqualify x }
-    Nothing -> case Map.lookup x defs of
-      Just ds | all ((==ConName) . anameKind) ds ->
+    Nothing -> case scopeLookup x scope of
+      [] -> return UnknownName
+      ds | all ((==ConName) . anameKind) ds ->
         return $ ConstructorName
                $ map (\d -> updateConcreteName d $ unqualify x) ds
-      Just [d] -> return $ DefinedName $ updateConcreteName d (unqualify x)
-      Just ds  -> typeError $ AmbiguousName x (map anameName ds)
-      Nothing  -> return UnknownName
+      [d] -> return $ DefinedName $ updateConcreteName d (unqualify x)
+      ds  -> typeError $ AmbiguousName x (map anameName ds)
   where
   updateConcreteName :: AbstractName -> C.Name -> AbstractName
   updateConcreteName d@(AbsName { anameName = an@(A.QName { qnameName = qn }) }) x =
@@ -166,19 +205,12 @@ resolveName x = do
 -- | Look up a module in the scope.
 resolveModule :: C.QName -> ScopeM AbstractModule
 resolveModule x = do
-  ms <- resolveModule' x
+  ms <- scopeLookup x <$> getScope
   case ms of
     [AbsModule m] -> return $ AbsModule (m `withRangesOfQ` x)
     []            -> typeError $ NoSuchModule x
     ms            -> typeError $ AmbiguousModule x (map amodName ms)
 
-resolveModule' :: C.QName -> ScopeM [AbstractModule]
-resolveModule' x = do
-  ms <- allModulesInScope . mergeScopes . scopeStack <$> getScope
-  case Map.lookup x ms of
-    Just ms -> return ms
-    Nothing -> return []
-
 -- | Get the fixity of a name. The name is assumed to be in scope.
 getFixity :: C.QName -> ScopeM Fixity
 getFixity x = do
@@ -200,183 +232,208 @@ getFixity x = do
 bindVariable :: C.Name -> A.Name -> ScopeM ()
 bindVariable x y = do
   scope <- getScope
-  let scope' = scope { scopeLocals = (x, y) : scopeLocals scope }
-  setScope scope'
+  setScope scope { scopeLocals = (x, y) : scopeLocals scope }
 
 -- | Bind a defined name. Must not shadow anything.
 bindName :: Access -> KindOfName -> C.Name -> A.QName -> ScopeM ()
 bindName acc kind x y = do
   r  <- resolveName (C.QName x)
   ys <- case r of
-    DefinedName	d      -> typeError $ ClashingDefinition (C.QName x) $ anameName d
+    DefinedName d      -> typeError $ ClashingDefinition (C.QName x) $ anameName d
     VarName z          -> typeError $ ClashingDefinition (C.QName x) $ A.qualify (mnameFromList []) z
     ConstructorName [] -> __IMPOSSIBLE__
     ConstructorName ds
       | kind == ConName && all ((==ConName) . anameKind) ds -> return [ AbsName y kind ]
       | otherwise -> typeError $ ClashingDefinition (C.QName x) $ anameName (head ds) -- TODO: head
     UnknownName        -> return [AbsName y kind]
-  modifyTopScope $ addNamesToScope acc (C.QName x) ys
+  modifyCurrentScope $ addNamesToScope (localNameSpace acc) x ys
 
 -- | Bind a module name.
 bindModule :: Access -> C.Name -> A.ModuleName -> ScopeM ()
-bindModule acc x m = bindQModule acc (C.QName x) m
+bindModule acc x m = modifyCurrentScope $
+  addModuleToScope (localNameSpace acc) x (AbsModule m)
 
--- | Bind a qualified module name.
+-- | Bind a qualified module name. Adds it to the imports field of the scope.
 bindQModule :: Access -> C.QName -> A.ModuleName -> ScopeM ()
-bindQModule acc x m = modifyTopScope $ addModuleToScope acc x $ AbsModule m
+bindQModule acc q m = modifyCurrentScope $ \s ->
+  s { scopeImports = Map.insert q m (scopeImports s) }
 
 -- * Module manipulation operations
 
 -- | Clear the scope of any no names.
 stripNoNames :: ScopeM ()
-stripNoNames = modifyScopeStack $ map strip
+stripNoNames = modifyScopes $ Map.map strip
   where
     strip     = mapScope (\_ -> stripN) (\_ -> stripN)
     stripN m  = Map.filterWithKey (const . notNoName) m
-    notNoName = not . any isNoName . qnameParts
-
--- | Push a new scope onto the scope stack
-pushScope :: A.ModuleName -> ScopeM ()
-pushScope name = modifyScopeStack (s:)
-  where
-    s = emptyScope { scopeName = name }
-
-{-| Pop the top scope from the scope stack and incorporate its (public)
-    contents in the new top scope. Depending on the first argument the contents
-    is added to the public or private part of the top scope. Basically if the
-    stack looks like this:
-
-    @
-    scope A: x -> Q.B.A.x
-    scope B: y -> Q.B.y
-    scope Q: ..
-    @
-
-    then after popping it will look like
-
-    @
-    scope B: A.x -> Q.B.A.x
-             y   -> Q.B.y
-    scope Q: ..
-    @
--}
-popScope :: Access -> ScopeM ()
-popScope acc = do
-  modifyScopeStack $ \(s0:s1:ss) ->
-    mergeScope s1 (setScopeAccess acc $ mapScope_ (qual s0) (qual s0) $ noPrivate s0) : ss
-  where
-    qual s m	= Map.mapKeys (qual' (mnameToList $ scopeName s)) m
-      where
-	qual' xs x = foldr C.Qual x $ map nameConcrete xs
-    noPrivate s = s { scopePrivate = emptyNameSpace }
-
--- | Pop the top scope from the stack and discard its contents.
-popScope_ :: ScopeM ()
-popScope_ = modifyScopeStack tail
-
--- | Returns a scope containing everything starting with a particular module
---   name. Used to open a module.
-matchPrefix :: C.QName -> ScopeM Scope
-matchPrefix m = filterScope (isPrefix m) (isPrefix m)
-	      . mergeScopes . scopeStack <$> getScope
-  where
-    isPrefix _		   (C.QName _  ) = False
-    isPrefix (C.QName m)   (C.Qual m' x) = m == m'
-    isPrefix (C.Qual m m2) (C.Qual m' x) = m == m' && isPrefix m2 x
+    notNoName = not . isNoName
 
 -- | @renamedCanonicalNames old new s@ returns a renaming replacing all
 --   (abstract) names @old.m.x@ with @new.m.x at . Any other names are left
 --   untouched.
 renamedCanonicalNames :: ModuleName -> ModuleName -> Scope ->
-		       ScopeM (Map A.QName A.QName, Map A.ModuleName A.ModuleName)
+                       ScopeM (Map A.QName A.QName, Map A.ModuleName A.ModuleName)
 renamedCanonicalNames old new s = (,) <$> renamedNames names <*> renamedMods mods
   where
-    ns	  = scopePublic $ setScopeAccess PublicAccess s
+    ns    = allThingsInScope s
     names = nsNames ns
     mods  = nsModules ns
 
     renamedNames ds = Map.fromList <$> zip xs <$> mapM renName xs
       where
-	xs = filter (`isInModule` old) $ map anameName $ concat $ Map.elems ds
+        xs = filter (`isInModule` old) $ map anameName $ concat $ Map.elems ds
 
     renamedMods ms = Map.fromList <$> zip xs <$> mapM renMod xs
       where
-	xs = filter (`isSubModuleOf` old) $ map amodName $ concat $ Map.elems ms
+        xs = filter (`isSubModuleOf` old) $ map amodName $ concat $ Map.elems ms
 
     -- Change a binding M.x -> old.M'.y to M.x -> new.M'.y
     renName :: A.QName -> ScopeM A.QName
     renName y = do
       i <- fresh
       return . qualifyQ new . dequalify
-	     $ y { qnameName = (qnameName y) { nameId = i } }
+             $ y { qnameName = (qnameName y) { nameId = i } }
       where
-	dequalify = A.qnameFromList . drop (size old) . A.qnameToList
+        dequalify = A.qnameFromList . drop (size old) . A.qnameToList
 
     -- Change a binding M.x -> old.M'.y to M.x -> new.M'.y
     renMod :: A.ModuleName -> ScopeM A.ModuleName
     renMod = return . qualifyM new . dequalify
       where
-	dequalify = A.mnameFromList . drop (size old) . A.mnameToList
+        dequalify = A.mnameFromList . drop (size old) . A.mnameToList
+
+type Ren a = Map a a
+type Out = [Either (Ren A.ModuleName) (Ren A.QName)]
+type WSM = WriterT Out ScopeM
+
+-- | Create a new scope with the given name from an old scope. Renames
+--   public names in the old scope to match the new name and returns the
+--   renamings.
+copyScope :: A.ModuleName -> Scope -> ScopeM (Scope, Ren A.ModuleName, Ren A.QName)
+copyScope new s = do
+  s0 <- getNamedScope new
+  (s', rho) <- runWriterT $ mapScopeM copyD copyM s
+  let s'' = s' { scopeName    = scopeName s0
+               , scopeParents = scopeParents s0
+               }
+  return (s'', modRenaming rho, defRenaming rho)
+  where
+    new' = killRange new
+    old  = scopeName s
+    modRenaming rho = Map.unions [ m | Left m  <- rho ]
+    defRenaming rho = Map.unions [ m | Right m <- rho ]
+
+    copyM :: NameSpaceId -> ModulesInScope -> WSM ModulesInScope
+    copyM ImportedNS ms = return ms
+    copyM PrivateNS  _  = return Map.empty
+    copyM PublicNS   ms = traverse (mapM $ onMod renMod) ms
+
+    copyD :: NameSpaceId -> NamesInScope -> WSM NamesInScope
+    copyD ImportedNS ds = return ds
+    copyD PrivateNS  _  = return Map.empty
+    copyD PublicNS   ds = traverse (mapM $ onName renName) ds
+
+    onMod f m = do
+      x <- f $ amodName m
+      return m { amodName = x }
+
+    onName f d = do
+      x <- f $ anameName d
+      return d { anameName = x }
+
+    -- Change a binding M.x -> old.M'.y to M.x -> new.M'.y
+    renName :: A.QName -> WSM A.QName
+    renName x = do
+      i <- lift fresh
+      let y = qualifyQ new' . dequalify
+            $ x { qnameName = (qnameName x) { nameId = i } }
+      tell [Right $ Map.singleton x y]
+      return y
+      where
+        dequalify = A.qnameFromList . drop (size old) . A.qnameToList
+
+    -- Change a binding M.x -> old.M'.y to M.x -> new.M'.y
+    renMod :: A.ModuleName -> WSM A.ModuleName
+    renMod x = do
+
+      -- Create the name of the new module
+      let y = qualifyM new' $ dequalify x
+      tell [Left $ Map.singleton x y]
+
+      -- We need to copy the contents of included modules recursively
+      (s, renM, renD) <- lift $ do
+        createModule y
+        s0 <- getNamedScope x
+        withCurrentModule y $ copyScope y s0
+      lift $ modifyNamedScope y (const s)
+      tell [Left renM, Right renD]
+      return y
+      where
+        dequalify = A.mnameFromList . drop (size old) . A.mnameToList
 
 -- | Apply an importdirective and check that all the names mentioned actually
 --   exist.
 applyImportDirectiveM :: C.QName -> ImportDirective -> Scope -> ScopeM Scope
 applyImportDirectiveM m dir scope = do
-  xs <- filterM doesn'tExist names
+  xs <- filterM doesntExist names
   reportSLn "scope.import.apply" 20 $ "non existing names: " ++ show xs
   case xs of
-    []	-> return $ applyImportDirective dir scope
-    _	-> typeError $ ModuleDoesntExport m xs
+    []  -> return $ applyImportDirective dir scope
+    _   -> typeError $ ModuleDoesntExport m xs
   where
     names :: [ImportedName]
-    names = map fst (renaming dir) ++ case usingOrHiding dir of
+    names = map renFrom (renaming dir) ++ case usingOrHiding dir of
       Using  xs -> xs
       Hiding xs -> xs
 
-    doesn'tExist (ImportedName x) =
-      case Map.lookup (C.QName x) $ allNamesInScope scope of
-	Just _	-> return False
-	Nothing	-> return True
-    doesn'tExist (ImportedModule x) =
-      case Map.lookup (C.QName x) $ allModulesInScope scope of
-	Just _	-> return False
-	Nothing	-> return True
-
--- | Open a module. Assumes that all preconditions have been checked, i.e. that
---   the module is not opened into a different context than it was defined.
+    doesntExist (ImportedName x) =
+      case Map.lookup x (allNamesInScope scope :: ThingsInScope AbstractName) of
+        Just _  -> return False
+        Nothing -> return True
+    doesntExist (ImportedModule x) =
+      case Map.lookup x (allNamesInScope scope :: ThingsInScope AbstractModule) of
+        Just _  -> return False
+        Nothing -> return True
+
+-- | Open a module.
 openModule_ :: C.QName -> ImportDirective -> ScopeM ()
-openModule_ m dir =
-  addScope  .  setScopeAccess acc
-           =<< applyImportDirectiveM m dir
-            .  unqualifyScope m =<< matchPrefix m
+openModule_ cm dir = do
+  current <- getCurrentModule
+  m <- amodName <$> resolveModule cm
+  let ns = namespace current m
+  s <- setScopeAccess ns <$> 
+        (applyImportDirectiveM cm dir . restrictPrivate =<< getNamedScope m)
+  checkForClashes (scopeNameSpace ns s)
+  modifyCurrentScope (`mergeScope` s)
   where
-    addScope s
-      | not (publicOpen dir) = modifyTopScope (`mergeScope` s)
-      | otherwise            = do
-        -- In case of a public open we check that there are no
-        -- clashes with previously defined names.
-        pub0 <- scopePublic . head . scopeStack <$> getScope
-        let pub1 = scopePublic s
-            [def0, def1] = map (Map.keys . nsNames) [pub0, pub1]
-            [mod0, mod1] = map (Map.keys . nsModules) [pub0, pub1]
-
-        -- Clashing definitions?
-        case intersect def0 def1 of
-          []    -> return ()
-          x : _ -> case Map.lookup x (nsNames pub0) of
-                    Just [q] -> typeError $ ClashingDefinition x (anameName q)
-                    _        -> __IMPOSSIBLE__
-
-        -- Clashing modules?
-        case intersect mod0 mod1 of
-          []    -> return ()
-          x : _ -> case (Map.lookup x (nsModules pub0), Map.lookup x (nsModules pub1)) of
-                    (Just [q0], Just [q1]) -> typeError $ ClashingModule (amodName q0) (amodName q1)
-                    _                      -> __IMPOSSIBLE__
-
-        -- All is well. Merge.
-        modifyTopScope (`mergeScope` s)
-
-    acc | publicOpen dir  = PublicAccess
-	| otherwise	  = PrivateAccess
+    namespace m0 m1
+      | not (publicOpen dir)  = PrivateNS
+      | m1 `isSubModuleOf` m0 = PublicNS
+      | otherwise             = ImportedNS
+
+    -- Only checks for clashes that would lead to the same
+    -- name being exported twice from the module.
+    checkForClashes new
+      | not (publicOpen dir) = return ()
+      | otherwise = do
+
+        old <- allThingsInScope . restrictPrivate <$> (getNamedScope =<< getCurrentModule)
+
+        let defClashes = Map.toList $ Map.intersectionWith (,) (nsNames new) (nsNames old)
+            modClashes = Map.toList $ Map.intersectionWith (,) (nsModules new) (nsModules old)
+
+            realClash (_, ([x],[y])) = x /= y
+            realClash _              = True
+
+            defClash (_, (qs0, qs1)) =
+              any ((/= ConName) . anameKind) (qs0 ++ qs1)
+
+            (f & g) x = f x && g x
+
+        case filter (realClash & defClash) defClashes of
+          (x, (_, q:_)):_ -> typeError $ ClashingDefinition (C.QName x) (anameName q)
+          _               -> return ()
+        case filter realClash modClashes of
+          (_, (m0:_, m1:_)):_ -> typeError $ ClashingModule (amodName m0) (amodName m1)
+          _                   -> return ()
 
diff --git a/src/full/Agda/Syntax/Translation/AbstractToConcrete.hs b/src/full/Agda/Syntax/Translation/AbstractToConcrete.hs
index 99aa1b3..d081089 100644
--- a/src/full/Agda/Syntax/Translation/AbstractToConcrete.hs
+++ b/src/full/Agda/Syntax/Translation/AbstractToConcrete.hs
@@ -9,7 +9,17 @@
     for the concrete to abstract translation: translating from concrete to
     abstract and then back again should be (more or less) the identity.
 -}
-module Agda.Syntax.Translation.AbstractToConcrete where
+module Agda.Syntax.Translation.AbstractToConcrete
+    ( ToConcrete(..)
+    , abstractToConcrete_
+    , runAbsToCon
+    , RangeAndPragma(..)
+    , abstractToConcreteCtx
+    , withScope
+    , makeEnv
+    , abstractToConcrete
+    , AbsToCon, TypeAndDef, DontTouchMe, Env
+    ) where
 
 import Control.Applicative
 import Control.Monad.Reader
@@ -44,23 +54,23 @@ import Agda.Utils.Impossible
 -- Environment ------------------------------------------------------------
 
 data Env = Env { takenNames   :: Set C.Name
-	       , currentScope :: ScopeInfo
-	       }
+               , currentScope :: ScopeInfo
+               }
 
 defaultEnv :: Env
-defaultEnv = Env { takenNames	= Set.empty
-		 , currentScope	= emptyScopeInfo
-		 }
+defaultEnv = Env { takenNames   = Set.empty
+                 , currentScope = emptyScopeInfo
+                 }
 
 makeEnv :: ScopeInfo -> Env
 makeEnv scope = Env { takenNames   = taken
-		    , currentScope = scope
-		    }
+                    , currentScope = scope
+                    }
   where
-    s	  = mergeScopes $ scopeStack scope
+    ns    = everythingInScope scope
     taken = Set.union vars defs
     vars  = Set.fromList $ map fst $ scopeLocals scope
-    defs  = Set.fromList [ x | (C.QName x, _) <- Map.toList $ allNamesInScope s ]
+    defs  = Set.fromList [ x | (x, _) <- Map.toList $ nsNames ns ]
 
 currentPrecedence :: AbsToCon Precedence
 currentPrecedence = asks $ scopePrecedence . currentScope
@@ -121,19 +131,19 @@ lookupName x = do
 
 lookupQName :: A.QName -> AbsToCon C.QName
 lookupQName x =
-    do	scope <- asks currentScope
-	case inverseScopeLookupName x scope of
-	    Just y  -> return y
-	    Nothing -> return $ C.Qual (C.Name noRange [Id ""]) $ qnameToConcrete x
-		-- this is what happens for names that are not in scope (private names)
+    do  scope <- asks currentScope
+        case inverseScopeLookupName x scope of
+            Just y  -> return y
+            Nothing -> return $ C.Qual (C.Name noRange [Id ""]) $ qnameToConcrete x
+                -- this is what happens for names that are not in scope (private names)
 
 lookupModule :: A.ModuleName -> AbsToCon C.QName
 lookupModule x =
-    do	scope <- asks currentScope
-	case inverseScopeLookupModule x scope of
-	    Just y  -> return y
-	    Nothing -> return $ mnameToConcrete x
-		-- this is what happens for names that are not in scope (private names)
+    do  scope <- asks currentScope
+        case inverseScopeLookupModule x scope of
+            Just y  -> return y
+            Nothing -> return $ mnameToConcrete x
+                -- this is what happens for names that are not in scope (private names)
 
 bindName :: A.Name -> (C.Name -> AbsToCon a) -> AbsToCon a
 bindName x ret = do
@@ -141,41 +151,41 @@ bindName x ret = do
   let y = nameConcrete x
   case (Set.member y names) of
     _ | C.isNoName y -> ret y
-    True	     -> bindName (nextName x) ret
-    False	     ->
-	local (\e -> e { takenNames   = Set.insert y $ takenNames e
-		       , currentScope = (currentScope e)
-			  { scopeLocals = (y, x) : scopeLocals (currentScope e)
-			  }
-		       }
-	      ) $ ret y
+    True             -> bindName (nextName x) ret
+    False            ->
+        local (\e -> e { takenNames   = Set.insert y $ takenNames e
+                       , currentScope = (currentScope e)
+                          { scopeLocals = (y, x) : scopeLocals (currentScope e)
+                          }
+                       }
+              ) $ ret y
 
 -- Dealing with precedences -----------------------------------------------
 
 -- | General bracketing function.
-bracket' ::    (e -> e)		    -- ^ the bracketing function
-	    -> (Precedence -> Bool) -- ^ do we need brackets
-	    -> e -> AbsToCon e
+bracket' ::    (e -> e)             -- ^ the bracketing function
+            -> (Precedence -> Bool) -- ^ do we need brackets
+            -> e -> AbsToCon e
 bracket' paren needParen e =
-    do	p <- currentPrecedence
-	return $ if needParen p then paren e else e
+    do  p <- currentPrecedence
+        return $ if needParen p then paren e else e
 
 -- | Expression bracketing
 bracket :: (Precedence -> Bool) -> AbsToCon C.Expr -> AbsToCon C.Expr
 bracket par m =
-    do	e <- m
-	bracket' (Paren (getRange e)) par e
+    do  e <- m
+        bracket' (Paren (getRange e)) par e
 
 -- | Pattern bracketing
 bracketP_ :: (Precedence -> Bool) -> AbsToCon C.Pattern -> AbsToCon C.Pattern
 bracketP_ par m =
-    do	e <- m
-	bracket' (ParenP (getRange e)) par e
+    do  e <- m
+        bracket' (ParenP (getRange e)) par e
 
 -- | Pattern bracketing
 bracketP :: (Precedence -> Bool) -> (C.Pattern -> AbsToCon a)
-				 -> ((C.Pattern -> AbsToCon a) -> AbsToCon a)
-				 -> AbsToCon a
+                                 -> ((C.Pattern -> AbsToCon a) -> AbsToCon a)
+                                 -> AbsToCon a
 bracketP par ret m = m $ \p -> do
     p <- bracket' (ParenP $ getRange p) par p
     ret p
@@ -187,9 +197,9 @@ bracketP par ret m = m $ \p -> do
 withInfixDecl :: DefInfo -> C.Name -> AbsToCon [C.Declaration] -> AbsToCon [C.Declaration]
 withInfixDecl i x m
     | defFixity i == defaultFixity = m
-    | otherwise			   = do
-	ds <- m
-	return $ C.Infix (defFixity i) [x] : ds
+    | otherwise                    = do
+        ds <- m
+        return $ C.Infix (defFixity i) [x] : ds
 
 withInfixDecls :: [(DefInfo, C.Name)] -> AbsToCon [C.Declaration] -> AbsToCon [C.Declaration]
 withInfixDecls = foldr (.) id . map (uncurry withInfixDecl)
@@ -199,15 +209,15 @@ withInfixDecls = foldr (.) id . map (uncurry withInfixDecl)
 withAbstractPrivate :: DefInfo -> AbsToCon [C.Declaration] -> AbsToCon [C.Declaration]
 withAbstractPrivate i m =
     case (defAccess i, defAbstract i) of
-	(PublicAccess, ConcreteDef) -> m
-	(p,a)			    ->
-	    do	ds <- m
-		return $ abst a $ priv p $ ds
+        (PublicAccess, ConcreteDef) -> m
+        (p,a)                       ->
+            do  ds <- m
+                return $ abst a $ priv p $ ds
     where
-	priv PrivateAccess ds = [ C.Private (getRange ds) ds ]
-	priv _ ds	      = ds
-	abst AbstractDef ds   = [ C.Abstract (getRange ds) ds ]
-	abst _ ds	      = ds
+        priv PrivateAccess ds = [ C.Private (getRange ds) ds ]
+        priv _ ds             = ds
+        abst AbstractDef ds   = [ C.Abstract (getRange ds) ds ]
+        abst _ ds             = ds
 
 -- The To Concrete Class --------------------------------------------------
 
@@ -215,7 +225,7 @@ class ToConcrete a c | a -> c where
     toConcrete :: a -> AbsToCon c
     bindToConcrete :: a -> (c -> AbsToCon b) -> AbsToCon b
 
-    toConcrete	   x	 = bindToConcrete x return
+    toConcrete     x     = bindToConcrete x return
     bindToConcrete x ret = ret =<< toConcrete x
 
 -- | Translate something in a context of the given precedence.
@@ -229,25 +239,25 @@ bindToConcreteCtx p x ret = withPrecedence p $ bindToConcrete x ret
 -- General instances ------------------------------------------------------
 
 instance ToConcrete a c => ToConcrete [a] [c] where
-    toConcrete	   = mapM toConcrete
+    toConcrete     = mapM toConcrete
     bindToConcrete = thread bindToConcrete
 
 instance (ToConcrete a1 c1, ToConcrete a2 c2) => ToConcrete (a1,a2) (c1,c2) where
     toConcrete (x,y) = liftM2 (,) (toConcrete x) (toConcrete y)
     bindToConcrete (x,y) ret =
-	bindToConcrete x $ \x ->
-	bindToConcrete y $ \y ->
-	ret (x,y)
+        bindToConcrete x $ \x ->
+        bindToConcrete y $ \y ->
+        ret (x,y)
 
 instance (ToConcrete a1 c1, ToConcrete a2 c2, ToConcrete a3 c3) =>
-	 ToConcrete (a1,a2,a3) (c1,c2,c3) where
+         ToConcrete (a1,a2,a3) (c1,c2,c3) where
     toConcrete (x,y,z) = reorder <$> toConcrete (x,(y,z))
-	where
-	    reorder (x,(y,z)) = (x,y,z)
+        where
+            reorder (x,(y,z)) = (x,y,z)
 
     bindToConcrete (x,y,z) ret = bindToConcrete (x,(y,z)) $ ret . reorder
-	where
-	    reorder (x,(y,z)) = (x,y,z)
+        where
+            reorder (x,(y,z)) = (x,y,z)
 
 instance ToConcrete a c => ToConcrete (Arg a) (Arg c) where
     toConcrete (Arg h at Hidden    x) = Arg h <$> toConcreteCtx TopCtx x
@@ -267,7 +277,7 @@ instance ToConcrete (DontTouchMe a) a where
 -- Names ------------------------------------------------------------------
 
 instance ToConcrete A.Name C.Name where
-  toConcrete	   = lookupName
+  toConcrete       = lookupName
   bindToConcrete x = bindName x
 
 instance ToConcrete A.QName C.QName where
@@ -283,89 +293,93 @@ instance ToConcrete A.Expr C.Expr where
     toConcrete (Def x)            = Ident <$> toConcrete x
     toConcrete (Con (AmbQ (x:_))) = Ident <$> toConcrete x
     toConcrete (Con (AmbQ []))    = __IMPOSSIBLE__
-	-- for names we have to use the name from the info, since the abstract
-	-- name has been resolved to a fully qualified name (except for
-	-- variables)
-    toConcrete (A.Lit l)	    = return $ C.Lit l
+        -- for names we have to use the name from the info, since the abstract
+        -- name has been resolved to a fully qualified name (except for
+        -- variables)
+    toConcrete (A.Lit l)            = return $ C.Lit l
 
     toConcrete (A.QuestionMark i)   = return $ C.QuestionMark
-						(getRange i)
-						(metaNumber i)
-    toConcrete (A.Underscore i)	    = return $ C.Underscore
-						(getRange i)
-						(metaNumber i)
+                                                (getRange i)
+                                                (metaNumber i)
+    toConcrete (A.Underscore i)     = return $ C.Underscore
+                                                (getRange i)
+                                                (metaNumber i)
 
     toConcrete e@(A.App i e1 e2)    =
         tryToRecoverOpApp e
         -- or fallback to App
-	$ bracket appBrackets
+        $ bracket appBrackets
         $ do e1' <- toConcreteCtx FunctionCtx e1
-	     e2' <- toConcreteCtx ArgumentCtx e2
-	     return $ C.App (getRange i) e1' e2'
+             e2' <- toConcreteCtx ArgumentCtx e2
+             return $ C.App (getRange i) e1' e2'
 
     toConcrete (A.WithApp i e es) =
       bracket withAppBrackets $ do
         e <- toConcreteCtx WithFunCtx e
-	es <- mapM (toConcreteCtx WithArgCtx) es
-	return $ C.WithApp (getRange i) e es
+        es <- mapM (toConcreteCtx WithArgCtx) es
+        return $ C.WithApp (getRange i) e es
 
     toConcrete (A.AbsurdLam i h) =
       bracket lamBrackets $ return $ C.AbsurdLam (getRange i) h
-    toConcrete e@(A.Lam i _ _)	    =
-	bracket lamBrackets
-	$ case lamView e of
-	    (bs, e) ->
-		bindToConcrete bs $ \bs -> do
-		    e  <- toConcreteCtx TopCtx e
-		    return $ C.Lam (getRange i) bs e
-	where
-	    lamView (A.Lam _ b@(A.DomainFree _ _) e) =
-		case lamView e of
-		    ([], e)			   -> ([b], e)
-		    (bs@(A.DomainFree _ _ : _), e) -> (b:bs, e)
-		    _				   -> ([b], e)
-	    lamView (A.Lam _ b@(A.DomainFull _) e) =
-		case lamView e of
-		    ([], e)			   -> ([b], e)
-		    (bs@(A.DomainFull _ : _), e)   -> (b:bs, e)
-		    _				   -> ([b], e)
-	    lamView e = ([], e)
+    toConcrete e@(A.Lam i _ _)      =
+        bracket lamBrackets
+        $ case lamView e of
+            (bs, e) ->
+                bindToConcrete bs $ \bs -> do
+                    e  <- toConcreteCtx TopCtx e
+                    return $ C.Lam (getRange i) bs e
+        where
+            lamView (A.Lam _ b@(A.DomainFree _ _) e) =
+                case lamView e of
+                    ([], e)                        -> ([b], e)
+                    (bs@(A.DomainFree _ _ : _), e) -> (b:bs, e)
+                    _                              -> ([b], e)
+            lamView (A.Lam _ b@(A.DomainFull _) e) =
+                case lamView e of
+                    ([], e)                        -> ([b], e)
+                    (bs@(A.DomainFull _ : _), e)   -> (b:bs, e)
+                    _                              -> ([b], e)
+            lamView e = ([], e)
 
     toConcrete (A.Pi _ [] e) = toConcrete e
     toConcrete t@(A.Pi i _ _)  = case piTel t of
       (tel, e) ->
-	bracket piBrackets
-	$ bindToConcrete tel $ \b' -> do
-	     e' <- toConcreteCtx TopCtx e
-	     return $ C.Pi b' e'
+        bracket piBrackets
+        $ bindToConcrete tel $ \b' -> do
+             e' <- toConcreteCtx TopCtx e
+             return $ C.Pi b' e'
       where
-	piTel (A.Pi _ tel e) = (tel ++) -*- id $ piTel e
-	piTel e		     = ([], e)
+        piTel (A.Pi _ tel e) = (tel ++) -*- id $ piTel e
+        piTel e              = ([], e)
 
     toConcrete (A.Fun i a b) =
-	bracket piBrackets
-	$ do a' <- toConcreteCtx FunctionSpaceDomainCtx a
-	     b' <- toConcreteCtx TopCtx b
-	     return $ C.Fun (getRange i) (mkArg a') b'
-	where
-	    mkArg (Arg Hidden	 e) = HiddenArg (getRange e) (unnamed e)
-	    mkArg (Arg NotHidden e) = e
+        bracket piBrackets
+        $ do a' <- toConcreteCtx FunctionSpaceDomainCtx a
+             b' <- toConcreteCtx TopCtx b
+             return $ C.Fun (getRange i) (mkArg a') b'
+        where
+            mkArg (Arg Hidden    e) = HiddenArg (getRange e) (unnamed e)
+            mkArg (Arg NotHidden e) = e
 
     toConcrete (A.Set i 0)  = return $ C.Set (getRange i)
     toConcrete (A.Set i n)  = return $ C.SetN (getRange i) n
     toConcrete (A.Prop i)   = return $ C.Prop (getRange i)
 
     toConcrete (A.Let i ds e) =
-	bracket lamBrackets
-	$ bindToConcrete ds $ \ds' -> do
-	     e'  <- toConcreteCtx TopCtx e
-	     return $ C.Let (getRange i) (concat ds') e'
+        bracket lamBrackets
+        $ bindToConcrete ds $ \ds' -> do
+             e'  <- toConcreteCtx TopCtx e
+             return $ C.Let (getRange i) (concat ds') e'
 
     toConcrete (A.Rec i fs) =
       bracket appBrackets $ do
-	let (xs, es) = unzip fs
-	es <- toConcreteCtx TopCtx es
-	return $ C.Rec (getRange i) $ zip xs es
+        let (xs, es) = unzip fs
+        es <- toConcreteCtx TopCtx es
+        return $ C.Rec (getRange i) $ zip xs es
+
+    toConcrete (A.ETel tel) = do
+      tel <- toConcrete tel
+      return $ C.ETel tel
 
     toConcrete (A.ScopedExpr _ e) = toConcrete e
 
@@ -377,23 +391,23 @@ instance ToConcrete A.LamBinding C.LamBinding where
 
 instance ToConcrete A.TypedBindings C.TypedBindings where
     bindToConcrete (A.TypedBindings r h bs) ret =
-	bindToConcrete bs $ \bs ->
-	ret (C.TypedBindings r h bs)
+        bindToConcrete bs $ \bs ->
+        ret (C.TypedBindings r h bs)
 
 instance ToConcrete A.TypedBinding C.TypedBinding where
     bindToConcrete (A.TBind r xs e) ret =
-	bindToConcrete xs $ \xs -> do
-	e <- toConcreteCtx TopCtx e
-	ret (C.TBind r (map mkBoundName_ xs) e)
+        bindToConcrete xs $ \xs -> do
+        e <- toConcreteCtx TopCtx e
+        ret (C.TBind r (map mkBoundName_ xs) e)
     bindToConcrete (A.TNoBind e) ret = do
-	e <- toConcreteCtx TopCtx e
-	ret (C.TNoBind e)
+        e <- toConcreteCtx TopCtx e
+        ret (C.TNoBind e)
 
 instance ToConcrete LetBinding [C.Declaration] where
     bindToConcrete (LetBind i x t e) ret =
-	bindToConcrete x $ \x ->
-	do  (t,(e, [], [])) <- toConcrete (t, A.RHS e)
-	    ret [C.TypeSig x t, C.FunClause (C.LHS (C.IdentP $ C.QName x) [] []) e C.NoWhere]
+        bindToConcrete x $ \x ->
+        do  (t,(e, [], [])) <- toConcrete (t, A.RHS e)
+            ret [C.TypeSig x t, C.FunClause (C.LHS (C.IdentP $ C.QName x) [] []) e C.NoWhere]
     bindToConcrete (LetApply i x tel y es _ _) ret = do
       x  <- unsafeQNameToName <$> toConcrete x
       y  <- toConcrete y
@@ -404,6 +418,9 @@ instance ToConcrete LetBinding [C.Declaration] where
                   (foldl (C.App r) (C.Ident y) es) DontOpen
                   (ImportDirective r (Hiding []) [] False)
           ]
+    bindToConcrete (LetOpen i x) ret = do
+      x <- toConcrete x
+      ret [ C.Open (getRange i) x defaultImportDir ]
 
 
 -- Declaration instances --------------------------------------------------
@@ -447,9 +464,9 @@ instance ToConcrete TypeAndDef [C.Declaration] where
       return [ C.Data (getRange i) ind x' tel' t' cs' ]
     where
       (tel, t0) = mkTel (length bs) t
-      mkTel 0 t		   = ([], t)
+      mkTel 0 t            = ([], t)
       mkTel n (A.Pi _ b t) = (b++) -*- id $ mkTel (n - 1) t
-      mkTel _ _		   = __IMPOSSIBLE__
+      mkTel _ _            = __IMPOSSIBLE__
 
   toConcrete (TypeAndDef (Axiom _ x t) (RecDef  i _ bs _ cs)) =
     withAbstractPrivate i $
@@ -459,14 +476,12 @@ instance ToConcrete TypeAndDef [C.Declaration] where
       return [ C.Record (getRange i) x' tel' t' cs' ]
     where
       (tel, t0) = mkTel (length bs) t
-      mkTel 0 t		   = ([], t)
+      mkTel 0 t            = ([], t)
       mkTel n (A.Pi _ b t) = (b++) -*- id $ mkTel (n - 1) t
-      mkTel _ _		   = __IMPOSSIBLE__
+      mkTel _ _            = __IMPOSSIBLE__
 
   toConcrete _ = __IMPOSSIBLE__
 
-newtype Constr a = Constr a
-
 instance ToConcrete (Constr A.Constructor) C.Declaration where
   toConcrete (Constr (A.ScopedDecl scope [d])) =
     withScope scope $ toConcrete (Constr d)
@@ -479,12 +494,12 @@ instance ToConcrete (Constr A.Constructor) C.Declaration where
 instance ToConcrete A.Clause [C.Declaration] where
   toConcrete (A.Clause lhs rhs wh) =
       bindToConcrete lhs $ \(C.LHS p wps _) -> do
-	  (rhs', with, wcs) <- toConcreteCtx TopCtx rhs
-	  ds	     <- toConcrete wh
-	  let wh' = case ds of
-		[]  -> C.NoWhere
-		_   -> C.AnyWhere ds
-	  return $ FunClause (C.LHS p wps with) rhs' wh' : wcs
+          (rhs', with, wcs) <- toConcreteCtx TopCtx rhs
+          ds         <- toConcrete wh
+          let wh' = case ds of
+                []  -> C.NoWhere
+                _   -> C.AnyWhere ds
+          return $ FunClause (C.LHS p wps with) rhs' wh' : wcs
 
 instance ToConcrete A.Declaration [C.Declaration] where
   toConcrete (ScopedDecl scope ds) =
@@ -492,21 +507,21 @@ instance ToConcrete A.Declaration [C.Declaration] where
 
   toConcrete (Axiom i x t) = do
     x' <- unsafeQNameToName <$> toConcrete x
-    withAbstractPrivate	i $
+    withAbstractPrivate i $
       withInfixDecl i x'  $ do
       t' <- toConcreteCtx TopCtx t
       return [C.Postulate (getRange i) [C.TypeSig x' t']]
 
   toConcrete (A.Field i x t) = do
     x' <- unsafeQNameToName <$> toConcrete x
-    withAbstractPrivate	i $
+    withAbstractPrivate i $
       withInfixDecl i x'  $ do
       t' <- toConcreteCtx TopCtx t
       return [C.Field x' t']
 
   toConcrete (A.Primitive i x t) = do
     x' <- unsafeQNameToName <$> toConcrete x
-    withAbstractPrivate	i $
+    withAbstractPrivate i $
       withInfixDecl i x'  $ do
       t' <- toConcreteCtx TopCtx t
       return [C.Primitive (getRange i) [C.TypeSig x' t']]
@@ -514,17 +529,17 @@ instance ToConcrete A.Declaration [C.Declaration] where
   toConcrete (Definition i ts ds) = do
       ixs' <- map (id -*- unsafeQNameToName) <$> toConcrete (map (DontTouchMe -*- id) ixs)
       withInfixDecls ixs' $ do
-	ds' <- concat <$> toConcrete (zipWith TypeAndDef ts ds)
-	return [mutual (getRange i) ds']
+        ds' <- concat <$> toConcrete (zipWith TypeAndDef ts ds)
+        return [mutual (getRange i) ds']
       where
-	  ixs = map getInfoAndName ts
-	  is  = map fst ixs
-	  getInfoAndName (A.Axiom i x _)	  = (i,x)
-	  getInfoAndName (A.ScopedDecl scope [d]) = getInfoAndName d
-	  getInfoAndName _			  = __IMPOSSIBLE__
+          ixs = map getInfoAndName ts
+          is  = map fst ixs
+          getInfoAndName (A.Axiom i x _)          = (i,x)
+          getInfoAndName (A.ScopedDecl scope [d]) = getInfoAndName d
+          getInfoAndName _                        = __IMPOSSIBLE__
 
-	  mutual r [d] = d
-	  mutual r ds  = C.Mutual r ds
+          mutual r [d] = d
+          mutual r ds  = C.Mutual r ds
 
   toConcrete (A.Section i x tel ds) = do
     x <- toConcrete x
@@ -539,24 +554,28 @@ instance ToConcrete A.Declaration [C.Declaration] where
     es <- toConcrete es
     let r = fuseRange y es
     return [ C.ModuleMacro (getRange i) x tel
-		(foldl (C.App r) (C.Ident y) es) DontOpen
-		(ImportDirective r (Hiding []) [] False)
-	   ]
+                (foldl (C.App r) (C.Ident y) es) DontOpen
+                (ImportDirective r (Hiding []) [] False)
+           ]
 
   toConcrete (A.Import i x) = do
     x <- toConcrete x
     return [ C.Import (getRange i) x Nothing DontOpen defaultImportDir ]
 
-  toConcrete (A.Pragma i p)	= do
+  toConcrete (A.Pragma i p)     = do
     p <- toConcrete $ RangeAndPragma (getRange i) p
     return [C.Pragma p]
 
+  toConcrete (A.Open i x) = do
+    x <- toConcrete x
+    return [C.Open (getRange i) x defaultImportDir]
+
 data RangeAndPragma = RangeAndPragma Range A.Pragma
 
 instance ToConcrete RangeAndPragma C.Pragma where
     toConcrete (RangeAndPragma r p) = case p of
-	A.OptionsPragma xs  -> return $ C.OptionsPragma r xs
-	A.BuiltinPragma b x -> do
+        A.OptionsPragma xs  -> return $ C.OptionsPragma r xs
+        A.BuiltinPragma b x -> do
           x <- toConcrete x
           return $ C.BuiltinPragma r b x
         A.CompiledTypePragma x hs -> do
@@ -585,35 +604,35 @@ instance ToConcrete A.LHS C.LHS where
       where info = PatRange (getRange i)
 
 appBrackets' :: [arg] -> Precedence -> Bool
-appBrackets' []	   _   = False
+appBrackets' []    _   = False
 appBrackets' (_:_) ctx = appBrackets ctx
 
 -- TODO: bind variables properly
 instance ToConcrete A.Pattern C.Pattern where
-    toConcrete (VarP x)	   = toConcrete x >>= return . IdentP . C.QName
-    toConcrete (A.WildP i)	   =
-	return $ C.WildP (getRange i)
+    toConcrete (VarP x)    = toConcrete x >>= return . IdentP . C.QName
+    toConcrete (A.WildP i)         =
+        return $ C.WildP (getRange i)
     toConcrete (ConP i (AmbQ []) args) = __IMPOSSIBLE__
     toConcrete p@(ConP i (AmbQ (x:_)) args) =
       tryToRecoverOpAppP p $
-	bracketP_ (appBrackets' args) $ do
-	    x <- toConcrete x
-	    args <- toConcreteCtx ArgumentCtx (noImplicitArgs args)
-	    return $ foldl AppP (C.IdentP x) args
+        bracketP_ (appBrackets' args) $ do
+            x <- toConcrete x
+            args <- toConcreteCtx ArgumentCtx (noImplicitArgs args)
+            return $ foldl AppP (C.IdentP x) args
     toConcrete p@(DefP i x args) =
       tryToRecoverOpAppP p $
-	bracketP_ (appBrackets' args) $ do
-	    x <- toConcrete x
-	    args <- toConcreteCtx ArgumentCtx (noImplicitArgs args)
-	    return $ foldl AppP (C.IdentP x) args
+        bracketP_ (appBrackets' args) $ do
+            x <- toConcrete x
+            args <- toConcreteCtx ArgumentCtx (noImplicitArgs args)
+            return $ foldl AppP (C.IdentP x) args
     toConcrete (A.AsP i x p)   = do
       (x, p) <- toConcreteCtx ArgumentCtx (x,p)
       return $ C.AsP (getRange i) x p
     toConcrete (A.AbsurdP i) = return $ C.AbsurdP (getRange i)
     toConcrete (A.LitP l)    = return $ C.LitP l
     toConcrete (A.DotP i e)  = do
-	e <- toConcreteCtx DotPatternCtx e
-	return $ C.DotP (getRange i) e
+        e <- toConcreteCtx DotPatternCtx e
+        return $ C.DotP (getRange i) e
     -- just for debugging purposes (shouldn't show up in practise)
     toConcrete (A.ImplicitP i) = return $ C.IdentP (C.QName $ C.Name noRange [C.Id "(implicit)"])
 
@@ -651,11 +670,11 @@ recoverOpApp bracket opApp view e mdefault = case view e of
     | all notHidden args  -> do
       let  args' = map (namedThing . unArg) args
       case hd of
-	HdVar n  -> do
-	  x <- toConcrete n
-	  doCName (nameFixity n) x args'
-	HdDef qn -> doQName qn args'
-	HdCon qn -> doQName qn args'
+        HdVar n  -> do
+          x <- toConcrete n
+          doCName (nameFixity n) x args'
+        HdDef qn -> doQName qn args'
+        HdCon qn -> doQName qn args'
     | otherwise -> mdefault
   where
 
@@ -666,47 +685,47 @@ recoverOpApp bracket opApp view e mdefault = case view e of
     x <- toConcrete qn
     case x of
       C.QName x -> doCName (nameFixity $ qnameName qn) x as
-      _		-> mdefault
+      _         -> mdefault
 
   -- fall-back (wrong number of arguments or no holes)
   doCName _ cn@(C.Name _ xs) es
     | length es /= numHoles = mdefault
-    | List.null es	    = mdefault
+    | List.null es          = mdefault
     where numHoles = length [ () | Hole <- xs ]
-	  msg = "doCName " ++ showList xs "" ++ " on " ++ show (length es) ++ " args"
+          msg = "doCName " ++ showList xs "" ++ " on " ++ show (length es) ++ " args"
 
   -- binary case
   doCName fixity cn@(C.Name _ xs) as
     | Hole <- head xs
     , Hole <- last xs = do
-	let a1	   = head as
-	    an	   = last as
-	    as'	   = init $ tail as
-	e1 <- toConcreteCtx (LeftOperandCtx fixity) a1
-	es <- mapM (toConcreteCtx InsideOperandCtx) as'
-	en <- toConcreteCtx (RightOperandCtx fixity) an
-	bracket (opBrackets fixity)
-	    $ return $ opApp (getRange (e1,en)) cn ([e1] ++ es ++ [en])
+        let a1     = head as
+            an     = last as
+            as'    = init $ tail as
+        e1 <- toConcreteCtx (LeftOperandCtx fixity) a1
+        es <- mapM (toConcreteCtx InsideOperandCtx) as'
+        en <- toConcreteCtx (RightOperandCtx fixity) an
+        bracket (opBrackets fixity)
+            $ return $ opApp (getRange (e1,en)) cn ([e1] ++ es ++ [en])
 
   -- prefix
   doCName fixity cn@(C.Name _ xs) as
     | Hole <- last xs = do
-	let an	= last as
-	    as' = init as
-	es <- mapM (toConcreteCtx InsideOperandCtx) as'
-	en <- toConcreteCtx (RightOperandCtx fixity) an
-	bracket (opBrackets fixity)
-	    $ return $ opApp (getRange (cn,en)) cn (es ++ [en])
+        let an  = last as
+            as' = init as
+        es <- mapM (toConcreteCtx InsideOperandCtx) as'
+        en <- toConcreteCtx (RightOperandCtx fixity) an
+        bracket (opBrackets fixity)
+            $ return $ opApp (getRange (cn,en)) cn (es ++ [en])
 
   -- postfix
   doCName fixity cn@(C.Name _ xs) as
     | Hole <- head xs = do
-	let a1	   = head as
-	    as'	   = tail as
-	e1 <- toConcreteCtx (LeftOperandCtx fixity) a1
-	es <- mapM (toConcreteCtx InsideOperandCtx) as'
-	bracket (opBrackets fixity)
-	    $ return $ opApp (getRange (e1,cn)) cn ([e1] ++ es)
+        let a1     = head as
+            as'    = tail as
+        e1 <- toConcreteCtx (LeftOperandCtx fixity) a1
+        es <- mapM (toConcreteCtx InsideOperandCtx) as'
+        bracket (opBrackets fixity)
+            $ return $ opApp (getRange (e1,cn)) cn ([e1] ++ es)
 
   -- roundfix
   doCName _ cn as = do
diff --git a/src/full/Agda/Syntax/Translation/ConcreteToAbstract.hs b/src/full/Agda/Syntax/Translation/ConcreteToAbstract.hs
index 2d3aee2..f3d9da3 100644
--- a/src/full/Agda/Syntax/Translation/ConcreteToAbstract.hs
+++ b/src/full/Agda/Syntax/Translation/ConcreteToAbstract.hs
@@ -14,6 +14,11 @@ module Agda.Syntax.Translation.ConcreteToAbstract
     , TopLevel(..)
     , TopLevelInfo(..)
     , topLevelModuleName
+    , AbstractRHS
+    , NewModuleName, OldModuleName
+    , NewName, OldQName
+    , LeftHandSide, RightHandSide
+    , PatName, APatName, LetDef, LetDefs
     ) where
 
 import Prelude hiding (mapM)
@@ -23,6 +28,7 @@ import Control.Monad.Error hiding (mapM)
 import Data.Typeable
 import Data.Traversable (mapM)
 import Data.List ((\\), nub)
+import qualified Data.Map as Map
 
 import Agda.Syntax.Concrete as C
 import Agda.Syntax.Abstract as A
@@ -56,9 +62,9 @@ import Agda.Utils.Impossible
     Exceptions
  --------------------------------------------------------------------------}
 
-notAModuleExpr e	    = typeError $ NotAModuleExpr e
-notAnExpression e	    = typeError $ NotAnExpression e
-notAValidLetBinding d	    = typeError $ NotAValidLetBinding d
+notAModuleExpr e            = typeError $ NotAModuleExpr e
+notAnExpression e           = typeError $ NotAnExpression e
+notAValidLetBinding d       = typeError $ NotAValidLetBinding d
 nothingAppliedToHiddenArg e = typeError $ NothingAppliedToHiddenArg e
 
 -- Debugging
@@ -80,16 +86,16 @@ printScope tag v s = verboseS ("scope." ++ tag) v $ do
 lhsArgs :: C.Pattern -> (C.Name, [NamedArg C.Pattern])
 lhsArgs p = case appView p of
     Arg _ (Named _ (IdentP (C.QName x))) : ps -> (x, ps)
-    _				              -> __IMPOSSIBLE__
+    _                                         -> __IMPOSSIBLE__
     where
-	mkHead	  = Arg NotHidden . unnamed
-	notHidden = Arg NotHidden . unnamed
-	appView p = case p of
-	    AppP p arg	  -> appView p ++ [arg]
-	    OpAppP _ x ps -> mkHead (IdentP $ C.QName x) : map notHidden ps
-	    ParenP _ p	  -> appView p
-	    RawAppP _ _	  -> __IMPOSSIBLE__
-	    _		  -> [ mkHead p ]
+        mkHead    = Arg NotHidden . unnamed
+        notHidden = Arg NotHidden . unnamed
+        appView p = case p of
+            AppP p arg    -> appView p ++ [arg]
+            OpAppP _ x ps -> mkHead (IdentP $ C.QName x) : map notHidden ps
+            ParenP _ p    -> appView p
+            RawAppP _ _   -> __IMPOSSIBLE__
+            _             -> [ mkHead p ]
 
 annotateDecl :: ScopeM A.Declaration -> ScopeM A.Declaration
 annotateDecl m = annotateDecls $ (:[]) <$> m
@@ -120,19 +126,19 @@ expandEllipsis p ps (C.Clause x (C.Ellipsis _ ps' es) rhs wh wcs) =
 -- | Make sure that each variable occurs only once.
 checkPatternLinearity :: [A.Pattern' e] -> ScopeM ()
 checkPatternLinearity ps = case xs \\ nub xs of
-    []	-> return ()
-    ys	-> typeError $ RepeatedVariablesInPattern $ nub ys
+    []  -> return ()
+    ys  -> typeError $ RepeatedVariablesInPattern $ nub ys
   where
     xs = concatMap vars ps
     vars :: A.Pattern' e -> [C.Name]
     vars p = case p of
-      A.VarP x	      -> [nameConcrete x]
+      A.VarP x        -> [nameConcrete x]
       A.ConP _ _ args -> concatMap (vars . namedThing . unArg) args
-      A.WildP _	      -> []
+      A.WildP _       -> []
       A.AsP _ x p     -> nameConcrete x : vars p
       A.DotP _ _      -> []
       A.AbsurdP _     -> []
-      A.LitP _	      -> []
+      A.LitP _        -> []
       A.DefP _ _ args -> __IMPOSSIBLE__
       A.ImplicitP _   -> __IMPOSSIBLE__
 
@@ -152,37 +158,57 @@ recordConstructorType fields = build fs
     build (d : fs)                     = C.Let noRange (notSoNiceDeclarations [d]) $ build fs
     build []                           = C.Prop noRange
 
-checkModuleMacro apply r p a x tel m args open dir =
-    withLocalVars $ do
+checkModuleMacro apply r p x tel m args open dir = withLocalVars $ do
+    notPublicWithoutOpen open dir
+
     tel' <- toAbstract tel
-    (x',m1,args') <- toAbstract ( NewModuleName x
+    (m0,m1,args') <- toAbstract ( NewModuleName x
                                 , OldModuleName m
                                 , args
                                 )
     printScope "mod.inst" 20 "module macro"
-    pushScope x'
-    m0 <- getCurrentModule
-    openModule_ m $ dir { C.publicOpen = True }
-    printScope "mod.inst" 20 "opened source module"
-    s : _ <- scopeStack <$> getScope
-    (renD, renM) <- renamedCanonicalNames m1 m0 s
-    modifyTopScope $ renameCanonicalNames renD renM
-    printScope "mod.inst" 20 "renamed stuff"
-    popScope p
-    printScope "mod.inst" 20 "popped"
+
+    -- If we're opening, the import directive is applied to the open,
+    -- otherwise to the module itself.
+    let dir' = case open of
+                DontOpen  -> dir
+                DoOpen    -> defaultImportDir
+
+    (renD, renM) <- withCurrentModule m0 $ do
+      s  <- getNamedScope m1
+      (s', renM, renD) <- copyScope m0 =<< getNamedScope m1
+      s' <- applyImportDirectiveM (C.QName x) dir' s'
+      modifyCurrentScope $ const s'
+      printScope "mod.inst" 20 "copied source module"
+      return (renD, renM)
     bindModule p x m0
+    printScope "mod.inst" 20 "after copying"
     case open of
+      DoOpen   -> openModule_ (C.QName x) dir
       DontOpen -> return ()
-      DoOpen   -> openModule_ (C.QName x) $ defaultImportDir { C.publicOpen = C.publicOpen dir }
-    printScope "mod.inst" 20 $ case open of
-      DontOpen  -> "didn't open"
-      DoOpen    -> "opened"
-    printScope "mod.inst" 10 $ "before stripping"
+    printScope "mod.inst" 20 $ show open
     stripNoNames
     printScope "mod.inst" 10 $ "after stripping"
     return [ apply info (m0 `withRangesOf` [x]) tel' m1 args' renD renM ]
   where
-    info = ModuleInfo p a r
+    info = ModuleInfo
+             { minfoRange  = r
+             , minfoAsName = Nothing
+             , minfoAsTo   = renamingRange dir
+             }
+
+-- | The @public@ keyword must only be used together with @open at .
+
+notPublicWithoutOpen :: OpenShortHand -> ImportDirective -> ScopeM ()
+notPublicWithoutOpen DoOpen   dir = return ()
+notPublicWithoutOpen DontOpen dir = when (publicOpen dir) $ typeError $
+  GenericError
+    "The public keyword must only be used together with the open keyword"
+
+-- | Computes the range of all the \"to\" keywords used in a renaming
+-- directive.
+
+renamingRange = getRange . map renToRange . renaming
 
 {--------------------------------------------------------------------------
     Translation
@@ -197,22 +223,22 @@ concreteToAbstract scope x = withScope_ scope (toAbstract x)
 -- | Things that can be translated to abstract syntax are instances of this
 --   class.
 class ToAbstract concrete abstract | concrete -> abstract where
-    toAbstract	  :: concrete -> ScopeM abstract
+    toAbstract    :: concrete -> ScopeM abstract
 
 -- | This function should be used instead of 'toAbstract' for things that need
 --   to keep track of precedences to make sure that we don't forget about it.
 toAbstractCtx :: ToAbstract concrete abstract =>
-		 Precedence -> concrete -> ScopeM abstract
+                 Precedence -> concrete -> ScopeM abstract
 toAbstractCtx ctx c = withContextPrecedence ctx $ toAbstract c
 
 setContextCPS :: Precedence -> (a -> ScopeM b) ->
-		 ((a -> ScopeM b) -> ScopeM b) -> ScopeM b
+                 ((a -> ScopeM b) -> ScopeM b) -> ScopeM b
 setContextCPS p ret f = do
   p' <- getContextPrecedence
   withContextPrecedence p $ f $ withContextPrecedence p' . ret
 
 localToAbstractCtx :: ToAbstract concrete abstract =>
-		     Precedence -> concrete -> (abstract -> ScopeM a) -> ScopeM a
+                     Precedence -> concrete -> (abstract -> ScopeM a) -> ScopeM a
 localToAbstractCtx ctx c ret = setContextCPS ctx ret (localToAbstract c)
 
 -- | This operation does not affect the scope, i.e. the original scope
@@ -232,10 +258,10 @@ instance (ToAbstract c1 a1, ToAbstract c2 a2) => ToAbstract (c1,c2) (a1,a2) wher
     (,) <$> toAbstract x <*> toAbstract y
 
 instance (ToAbstract c1 a1, ToAbstract c2 a2, ToAbstract c3 a3) =>
-	 ToAbstract (c1,c2,c3) (a1,a2,a3) where
+         ToAbstract (c1,c2,c3) (a1,a2,a3) where
     toAbstract (x,y,z) = flatten <$> toAbstract (x,(y,z))
-	where
-	    flatten (x,(y,z)) = (x,y,z)
+        where
+            flatten (x,(y,z)) = (x,y,z)
 
 instance ToAbstract c a => ToAbstract [c] [a] where
     toAbstract = mapM toAbstract
@@ -280,7 +306,7 @@ instance ToAbstract OldQName A.Expr where
       UnknownName        -> notInScope x
 
 data APatName = VarPatName A.Name
-	      | ConPatName [AbstractName]
+              | ConPatName [AbstractName]
 
 instance ToAbstract PatName APatName where
   toAbstract (PatName x) = do
@@ -288,20 +314,20 @@ instance ToAbstract PatName APatName where
     rx <- resolveName x
     z  <- case (rx, x) of
       -- TODO: warn about shadowing
-      (VarName y,     C.QName x)			  -> return $ Left x -- typeError $ RepeatedVariableInPattern y x
+      (VarName y,     C.QName x)                          -> return $ Left x -- typeError $ RepeatedVariableInPattern y x
       (DefinedName d, C.QName x) | DefName == anameKind d -> return $ Left x
-      (UnknownName,   C.QName x)			  -> return $ Left x
-      (ConstructorName ds, _)	                          -> return $ Right ds
-      _							  -> fail $ "not a constructor: " ++ show x -- TODO
+      (UnknownName,   C.QName x)                          -> return $ Left x
+      (ConstructorName ds, _)                             -> return $ Right ds
+      _                                                   -> fail $ "not a constructor: " ++ show x -- TODO
     case z of
       Left x  -> do
-	reportSLn "scope.pat" 10 $ "it was a var: " ++ show x
-	p <- VarPatName <$> toAbstract (NewName x)
-	printLocals 10 "bound it:"
-	return p
+        reportSLn "scope.pat" 10 $ "it was a var: " ++ show x
+        p <- VarPatName <$> toAbstract (NewName x)
+        printLocals 10 "bound it:"
+        return p
       Right cs -> do
-	reportSLn "scope.pat" 10 $ "it was a con: " ++ show (map anameName cs)
-	return $ ConPatName cs
+        reportSLn "scope.pat" 10 $ "it was a con: " ++ show (map anameName cs)
+        return $ ConPatName cs
 
 -- Should be a defined name.
 instance ToAbstract OldName A.QName where
@@ -309,25 +335,36 @@ instance ToAbstract OldName A.QName where
     rx <- resolveName (C.QName x)
     case rx of
       DefinedName d -> return $ anameName d
-      _		    -> __IMPOSSIBLE__
+      _             -> __IMPOSSIBLE__
 
-newtype NewModuleName  = NewModuleName  C.Name
-newtype NewModuleQName = NewModuleQName C.QName
-newtype OldModuleName  = OldModuleName  C.QName
+newtype NewModuleName      = NewModuleName      C.Name
+newtype NewModuleQName     = NewModuleQName     C.QName
+newtype OldModuleName      = OldModuleName      C.QName
+
+freshQModule :: A.ModuleName -> C.Name -> ScopeM A.ModuleName
+freshQModule m x = A.qualifyM m . mnameFromList . (:[]) <$> freshAbstractName_ x
 
 instance ToAbstract NewModuleName A.ModuleName where
-  toAbstract (NewModuleName x) = mnameFromList . (:[]) <$> freshAbstractName_ x
+  toAbstract (NewModuleName x) = do
+    ms <- scopeLookup (C.QName x) <$> getScope
+    unless (null ms) $ 
+      typeError $ ShadowedModule $
+                  map ((`withRangeOf` x) . amodName) ms
+    m <- getCurrentModule
+    y <- freshQModule m x
+    createModule y
+    return y
 
 instance ToAbstract NewModuleQName A.ModuleName where
-  toAbstract (NewModuleQName q) = do
-    ms <- resolveModule' q
-    case ms of
-      [] -> foldr1 A.qualifyM <$> mapM (toAbstract . NewModuleName) (toList q)
-      ms -> typeError $ ShadowedModule $
-                          map ((`withRangesOfQ` q) . amodName) ms
+  toAbstract (NewModuleQName m) = toAbs noModuleName m
     where
-      toList (C.QName  x) = [x]
-      toList (C.Qual m x) = m : toList x
+      toAbs m (C.QName x)  = do
+        y <- freshQModule m x
+        createModule y
+        return y
+      toAbs m (C.Qual x q) = do
+        m' <- freshQModule m x
+        toAbs m' q
 
 instance ToAbstract OldModuleName A.ModuleName where
   toAbstract (OldModuleName q) = amodName <$> resolveModule q
@@ -337,12 +374,12 @@ instance ToAbstract OldModuleName A.ModuleName where
 -- | Peel off 'C.HiddenArg' and represent it as an 'NamedArg'.
 mkNamedArg :: C.Expr -> NamedArg C.Expr
 mkNamedArg (C.HiddenArg _ e) = Arg Hidden e
-mkNamedArg e		     = Arg NotHidden $ unnamed e
+mkNamedArg e                 = Arg NotHidden $ unnamed e
 
 -- | Peel off 'C.HiddenArg' and represent it as an 'Arg', throwing away any name.
 mkArg :: C.Expr -> Arg C.Expr
 mkArg (C.HiddenArg _ e) = Arg Hidden $ namedThing e
-mkArg e			= Arg NotHidden e
+mkArg e                 = Arg NotHidden e
 
 instance ToAbstract C.Expr A.Expr where
   toAbstract e =
@@ -355,39 +392,39 @@ instance ToAbstract C.Expr A.Expr where
 
   -- Meta variables
       C.QuestionMark r n -> do
-	scope <- getScope
-	return $ A.QuestionMark $ MetaInfo
-		    { metaRange  = r
-		    , metaScope  = scope
-		    , metaNumber = n
-		    }
+        scope <- getScope
+        return $ A.QuestionMark $ MetaInfo
+                    { metaRange  = r
+                    , metaScope  = scope
+                    , metaNumber = n
+                    }
       C.Underscore r n -> do
-	scope <- getScope
-	return $ A.Underscore $ MetaInfo
-		    { metaRange  = r
-		    , metaScope  = scope
-		    , metaNumber = n
-		    }
+        scope <- getScope
+        return $ A.Underscore $ MetaInfo
+                    { metaRange  = r
+                    , metaScope  = scope
+                    , metaNumber = n
+                    }
 
   -- Raw application
       C.RawApp r es -> do
-	e <- parseApplication es
-	toAbstract e
+        e <- parseApplication es
+        toAbstract e
 
   -- Application
       C.App r e1 e2 -> do
-	e1 <- toAbstractCtx FunctionCtx e1
-	e2 <- toAbstractCtx ArgumentCtx e2
-	return $ A.App (ExprRange r) e1 e2
+        e1 <- toAbstractCtx FunctionCtx e1
+        e2 <- toAbstractCtx ArgumentCtx e2
+        return $ A.App (ExprRange r) e1 e2
 
   -- Operator application
       C.OpApp r op es -> toAbstractOpApp op es
 
   -- With application
       C.WithApp r e es -> do
-	e  <- toAbstractCtx WithFunCtx e
-	es <- mapM (toAbstractCtx WithArgCtx) es
-	return $ A.WithApp (ExprRange r) e es
+        e  <- toAbstractCtx WithFunCtx e
+        es <- mapM (toAbstractCtx WithArgCtx) es
+        return $ A.WithApp (ExprRange r) e es
 
   -- Malplaced hidden argument
       C.HiddenArg _ _ -> nothingAppliedToHiddenArg e
@@ -396,25 +433,25 @@ instance ToAbstract C.Expr A.Expr where
       C.AbsurdLam r h -> return $ A.AbsurdLam (ExprRange r) h
 
       e0@(C.Lam r bs e) -> do
-	localToAbstract bs $ \(b:bs') -> do
-	e	 <- toAbstractCtx TopCtx e
-	let info = ExprRange r
-	return $ A.Lam info b $ foldr mkLam e bs'
-	where
-	    mkLam b e = A.Lam (ExprRange $ fuseRange b e) b e
+        localToAbstract bs $ \(b:bs') -> do
+        e        <- toAbstractCtx TopCtx e
+        let info = ExprRange r
+        return $ A.Lam info b $ foldr mkLam e bs'
+        where
+            mkLam b e = A.Lam (ExprRange $ fuseRange b e) b e
 
   -- Function types
       C.Fun r e1 e2 -> do
-	e1 <- toAbstractCtx FunctionSpaceDomainCtx $ mkArg e1
-	e2 <- toAbstractCtx TopCtx e2
-	let info = ExprRange r
-	return $ A.Fun info e1 e2
+        e1 <- toAbstractCtx FunctionSpaceDomainCtx $ mkArg e1
+        e2 <- toAbstractCtx TopCtx e2
+        let info = ExprRange r
+        return $ A.Fun info e1 e2
 
       e0@(C.Pi tel e) ->
-	localToAbstract tel $ \tel -> do
-	e    <- toAbstractCtx TopCtx e
-	let info = ExprRange (getRange e0)
-	return $ A.Pi info tel e
+        localToAbstract tel $ \tel -> do
+        e    <- toAbstractCtx TopCtx e
+        let info = ExprRange (getRange e0)
+        return $ A.Pi info tel e
 
   -- Sorts
       C.Set _    -> return $ A.Set (ExprRange $ getRange e) 0
@@ -423,16 +460,16 @@ instance ToAbstract C.Expr A.Expr where
 
   -- Let
       e0@(C.Let _ ds e) ->
-	localToAbstract (LetDefs ds) $ \ds' -> do
-	e	 <- toAbstractCtx TopCtx e
-	let info = ExprRange (getRange e0)
-	return $ A.Let info ds' e
+        localToAbstract (LetDefs ds) $ \ds' -> do
+        e        <- toAbstractCtx TopCtx e
+        let info = ExprRange (getRange e0)
+        return $ A.Let info ds' e
 
   -- Record construction
       C.Rec r fs  -> do
-	let (xs, es) = unzip fs
-	es <- toAbstractCtx TopCtx es
-	return $ A.Rec (ExprRange r) $ zip xs es
+        let (xs, es) = unzip fs
+        es <- toAbstractCtx TopCtx es
+        return $ A.Rec (ExprRange r) $ zip xs es
 
   -- Parenthesis
       C.Paren _ e -> toAbstractCtx TopCtx e
@@ -442,9 +479,12 @@ instance ToAbstract C.Expr A.Expr where
       C.Dot _ _  -> notAnExpression e
       C.Absurd _ -> notAnExpression e
 
+  -- Impossible things
+      C.ETel _   -> __IMPOSSIBLE__
+
 instance ToAbstract C.LamBinding A.LamBinding where
   toAbstract (C.DomainFree h x) = A.DomainFree h <$> toAbstract (NewName x)
-  toAbstract (C.DomainFull tb)	= A.DomainFull <$> toAbstract tb
+  toAbstract (C.DomainFull tb)  = A.DomainFull <$> toAbstract tb
 
 instance ToAbstract C.TypedBindings A.TypedBindings where
   toAbstract (C.TypedBindings r h bs) = A.TypedBindings r h <$> toAbstract bs
@@ -458,49 +498,52 @@ instance ToAbstract C.TypedBinding A.TypedBinding where
     e <- toAbstractCtx TopCtx e
     return (A.TNoBind e)
 
-newtype TopLevel a = TopLevel a
-
 -- | Returns the scope inside the checked module.
-scopeCheckModule :: Range -> Access -> IsAbstract -> C.QName -> A.ModuleName -> C.Telescope -> [C.Declaration] ->
-		    ScopeM (ScopeInfo, [A.Declaration])
-scopeCheckModule r a c x m tel ds = do
-  pushScope m
-  qm <- getCurrentModule
-  ds <- withLocalVars $ do
-	  tel <- toAbstract tel
-	  (:[]) . A.Section info (qm `withRangesOfQ` x) tel <$>
-            toAbstract ds
-  scope <- getScope
-  popScope a
-  bindQModule a x qm
-  return (scope, ds)
+scopeCheckModule :: Range -> C.QName -> A.ModuleName -> C.Telescope -> [C.Declaration] ->
+                    ScopeM (ScopeInfo, [A.Declaration])
+scopeCheckModule r x qm tel ds = do
+  printScope "module" 20 $ "checking module " ++ show x
+  res <- withCurrentModule qm $ do
+    -- pushScope m
+    -- qm <- getCurrentModule
+    printScope "module" 20 $ "inside module " ++ show x
+    ds <- withLocalVars $ do
+            tel <- toAbstract tel
+            (:[]) . A.Section info (qm `withRangesOfQ` x) tel <$>
+              toAbstract ds
+    scope <- getScope
+    return (scope, ds)
+
+  -- Binding is done by the caller
+  printScope "module" 20 $ "after module " ++ show x
+  return res
   where
-    info = ModuleInfo a c r
+    info = ModuleInfo r noRange Nothing
+
+newtype TopLevel a = TopLevel a
 
 data TopLevelInfo = TopLevelInfo
-	{ topLevelDecls :: [A.Declaration]
-	, outsideScope  :: ScopeInfo
-	, insideScope	:: ScopeInfo
-	}
+        { topLevelDecls :: [A.Declaration]
+        , outsideScope  :: ScopeInfo
+        , insideScope   :: ScopeInfo
+        }
 
 -- | The top-level module name.
 
 topLevelModuleName :: TopLevelInfo -> A.ModuleName
-topLevelModuleName topLevel = case scopeStack (insideScope topLevel) of
-  []    -> __IMPOSSIBLE__
-  s : _ -> scopeName s
+topLevelModuleName topLevel = scopeCurrent (insideScope topLevel)
 
 -- Top-level declarations are always (import|open)* module
 instance ToAbstract (TopLevel [C.Declaration]) TopLevelInfo where
     toAbstract (TopLevel ds) = case splitAt (length ds - 1) ds of
-	(ds', [C.Module r m tel ds]) -> do
-	  setTopLevelModule m
-	  am	       <- toAbstract (NewModuleQName m)
-	  ds'	       <- toAbstract ds'
-	  (scope0, ds) <- scopeCheckModule r PublicAccess ConcreteDef m am tel ds
-	  scope	       <- getScope
-	  return $ TopLevelInfo (ds' ++ ds) scope scope0
-	_ -> __IMPOSSIBLE__
+        (ds', [C.Module r m tel ds]) -> do
+          setTopLevelModule m
+          am           <- toAbstract (NewModuleQName m)
+          ds'          <- toAbstract ds'
+          (scope0, ds) <- scopeCheckModule r m am tel ds
+          scope        <- getScope
+          return $ TopLevelInfo (ds' ++ ds) scope scope0
+        _ -> __IMPOSSIBLE__
 
 
 niceDecls :: [C.Declaration] -> ScopeM [NiceDeclaration]
@@ -516,47 +559,52 @@ newtype LetDef = LetDef NiceDeclaration
 
 instance ToAbstract LetDefs [A.LetBinding] where
     toAbstract (LetDefs ds) =
-	concat <$> (toAbstract =<< map LetDef <$> niceDecls ds)
+        concat <$> (toAbstract =<< map LetDef <$> niceDecls ds)
 
 instance ToAbstract LetDef [A.LetBinding] where
     toAbstract (LetDef d) =
-	case d of
-	    NiceDef _ c [C.Axiom _ _ _ _ x t] [C.FunDef _ _ _ _ _ _ [cl]] ->
-		do  e <- letToAbstract cl
-		    t <- toAbstract t
-		    x <- toAbstract (NewName x)
-		    return [ A.LetBind (LetRange $ getRange c) x t e ]
+        case d of
+            NiceDef _ c [C.Axiom _ _ _ _ x t] [C.FunDef _ _ _ _ _ _ [cl]] ->
+                do  e <- letToAbstract cl
+                    t <- toAbstract t
+                    x <- toAbstract (NewName x)
+                    return [ A.LetBind (LetRange $ getRange c) x t e ]
 
             -- You can't open public in a let
             NiceOpen r x dirs | not (C.publicOpen dirs) -> do
-              m	      <- toAbstract (OldModuleName x)
-              n	      <- length . scopeLocals <$> getScope
+              m       <- toAbstract (OldModuleName x)
+              n       <- length . scopeLocals <$> getScope
               openModule_ x dirs
-              return []
+              return [A.LetOpen (ModuleInfo
+                                   { minfoRange  = r
+                                   , minfoAsName = Nothing
+                                   , minfoAsTo   = renamingRange dirs
+                                   })
+                                m]
 
             NiceModuleMacro r p a x tel e open dir | not (C.publicOpen dir) -> case appView e of
-              AppView (Ident m) args -> checkModuleMacro LetApply r p a x tel m args open dir
+              AppView (Ident m) args -> checkModuleMacro LetApply r p x tel m args open dir
               _                      -> notAModuleExpr e
 
-	    _	-> notAValidLetBinding d
-	where
-	    letToAbstract (C.Clause top clhs@(C.LHS p [] []) (C.RHS rhs) NoWhere []) = do
-		p    <- parseLHS (Just top) p
-		localToAbstract (snd $ lhsArgs p) $ \args ->
-		    do	rhs <- toAbstract rhs
-			foldM lambda rhs (reverse args)  -- just reverse because these DomainFree
-	    letToAbstract _ = notAValidLetBinding d
-
-	    -- Named patterns not allowed in let definitions
-	    lambda e (Arg h (Named Nothing (A.VarP x))) = return $ A.Lam i (A.DomainFree h x) e
-		where
-		    i = ExprRange (fuseRange x e)
-	    lambda e (Arg h (Named Nothing (A.WildP i))) =
-		do  x <- freshNoName (getRange i)
-		    return $ A.Lam i' (A.DomainFree h x) e
-		where
-		    i' = ExprRange (fuseRange i e)
-	    lambda _ _ = notAValidLetBinding d
+            _   -> notAValidLetBinding d
+        where
+            letToAbstract (C.Clause top clhs@(C.LHS p [] []) (C.RHS rhs) NoWhere []) = do
+                p    <- parseLHS (Just top) p
+                localToAbstract (snd $ lhsArgs p) $ \args ->
+                    do  rhs <- toAbstract rhs
+                        foldM lambda rhs (reverse args)  -- just reverse because these DomainFree
+            letToAbstract _ = notAValidLetBinding d
+
+            -- Named patterns not allowed in let definitions
+            lambda e (Arg h (Named Nothing (A.VarP x))) = return $ A.Lam i (A.DomainFree h x) e
+                where
+                    i = ExprRange (fuseRange x e)
+            lambda e (Arg h (Named Nothing (A.WildP i))) =
+                do  x <- freshNoName (getRange i)
+                    return $ A.Lam i' (A.DomainFree h x) e
+                where
+                    i' = ExprRange (fuseRange i e)
+            lambda _ _ = notAValidLetBinding d
 
 instance ToAbstract C.Pragma [A.Pragma] where
     toAbstract (C.OptionsPragma _ opts) = return [ A.OptionsPragma opts ]
@@ -578,8 +626,8 @@ instance ToAbstract C.Pragma [A.Pragma] where
             _       -> __IMPOSSIBLE__
       return [ A.CompiledPragma y hs ]
     toAbstract (C.BuiltinPragma _ b e) = do
-	e <- toAbstract e
-	return [ A.BuiltinPragma b e ]
+        e <- toAbstract e
+        return [ A.BuiltinPragma b e ]
     toAbstract (C.LinePragma _ _ _) = return []
     toAbstract (C.ImportPragma _ i) = do
       addHaskellImport i
@@ -625,14 +673,18 @@ instance ToAbstract NiceDefinition Definition where
           pars   <- toAbstract pars
           x'     <- toAbstract (OldName x)
           contel <- toAbstract $ recordConstructorType fields
-          let m = mnameFromList $ (:[]) $ last $ qnameToList x'
+          m0     <- getCurrentModule
+          let m = A.qualifyM m0 $ mnameFromList $ (:[]) $ last $ qnameToList x'
           printScope "rec" 15 "before record"
-          pushScope m
-          afields <- toAbstract fields
-          printScope "rec" 15 "checked fields"
-          qm <- getCurrentModule
-          popScope p
-          bindModule p x qm
+          -- pushScope m
+          createModule m
+          afields <- withCurrentModule m $ do
+            afields <- toAbstract fields
+            printScope "rec" 15 "checked fields"
+            return afields
+            -- qm <- getCurrentModule
+          -- popScope p
+          bindModule p x m
           printScope "rec" 15 "record complete"
           return $ A.RecDef (mkDefInfo x f p a r) x' pars contel afields
 
@@ -669,96 +721,97 @@ instance ToAbstract NiceDeclaration A.Declaration where
     NiceDef r cs ts ds -> do
       (ts', ds') <- toAbstract (ts, ds)
       return [ Definition (DeclInfo C.noName_ r) ts' ds' ]
-			  -- TODO: what does the info mean here?
+                          -- TODO: what does the info mean here?
 
   -- TODO: what does an abstract module mean? The syntax doesn't allow it.
-    NiceModule r p a name tel ds -> do
-      aname <- toAbstract (NewModuleQName name)
-      snd <$> scopeCheckModule r p a name aname tel ds
+    NiceModule r p a (C.QName name) tel ds -> do
+      aname <- toAbstract (NewModuleName name)
+      x <- snd <$> scopeCheckModule r (C.QName name) aname tel ds
+      bindModule p name aname
+      return x
+
+    NiceModule _ _ _ C.Qual{} _ _ -> __IMPOSSIBLE__
 
     NiceModuleMacro r p a x tel e open dir -> case appView e of
-      AppView (Ident m) args -> checkModuleMacro Apply r p a x tel m args open dir
+      AppView (Ident m) args -> checkModuleMacro Apply r p x tel m args open dir
       _                      -> notAModuleExpr e
 
     NiceOpen r x dir -> do
-      m	      <- toAbstract (OldModuleName x)
-      n	      <- length . scopeLocals <$> getScope
-
+      m <- toAbstract (OldModuleName x)
       printScope "open" 20 $ "opening " ++ show x
-      -- Opening (privately) a submodule or opening into a non-parameterised module
-      -- is fine. Otherwise we have to create a temporary module.
-      if not (C.publicOpen dir) -- && (m `isSubModuleOf` current || n == 0)
-	then do
-	  reportSLn "scope.open" 20 "normal open"
-	  openModule_ x dir
-	  printScope "open" 20 $ "result:"
-	  return []
-	else do
-	  reportSLn "scope.open" 20 "fancy open"
-	  tmp <- nameConcrete <$> freshNoName (getRange x)
-	  d   <- toAbstract $ NiceModuleMacro r PrivateAccess ConcreteDef
-					    tmp [] (C.Ident x) DoOpen dir
-	  printScope "open" 20 "result:"
-	  return [d]
+      openModule_ x dir
+      printScope "open" 20 $ "result:"
+      return [A.Open (ModuleInfo
+                        { minfoRange  = r
+                        , minfoAsName = Nothing
+                        , minfoAsTo   = renamingRange dir
+                        })
+                     m]
 
     NicePragma r p -> do
       ps <- toAbstract p
       return $ map (A.Pragma r) ps
 
     NiceImport r x as open dir -> do
+      notPublicWithoutOpen open dir
 
       -- First scope check the imported module and return its name and
       -- interface. This is done with that module as the top-level module.
-      (m, i) <- withTopLevelModule x $ do
-	m <- toAbstract $ NewModuleQName x
-	printScope "import" 10 "before import:"
-	(m, i) <- scopeCheckImport m
-	printScope "import" 10 $ "scope checked import: " ++ show i
-	return (m, i)
-
-      -- Abstract name for the imported module.
-      m' <- case as of
-	      Nothing -> return m
-	      Just y  -> toAbstract $ NewModuleName y
-
-      -- Now, we push a new scope with the name we want for the imported
-      -- module containing its interface. We then do a public open on the
-      -- imported module and pop the scope. This results in the concrete names
-      -- getting renamed to use the "as" name (if any).
-      pushScope m'
-      modifyTopScope (`mergeScope` setScopeAccess PrivateAccess i)
-      openModule_ x $ dir { publicOpen = True }
-      popScope PrivateAccess
-
-      -- Finally we bind the desired module name to the right abstract name.
-      bindQModule PrivateAccess name m
+      -- This is quite subtle. We rely on the fact that when setting the
+      -- top-level module and generating a fresh module name the generated
+      -- name will be exactly the same as the name generated when checking
+      -- the imported module.
+      (m, i) <- withCurrentModule noModuleName $ withTopLevelModule x $ do
+        m <- toAbstract $ NewModuleQName x
+        printScope "import" 10 "before import:"
+        (m, i) <- scopeCheckImport m
+        printScope "import" 10 $ "scope checked import: " ++ show i
+        -- We don't want the top scope of the imported module (things happening
+        -- before the module declaration)
+        return (m, Map.delete noModuleName i)
+
+      -- Merge the imported scopes with the current scopes
+      modifyScopeInfo $ \s -> s { scopeModules = Map.unionWith mergeScope
+                                                  (Map.delete m $ scopeModules s) i }
+
+      -- Bind the desired module name to the right abstract name.
+      case as of
+        Nothing -> bindQModule PrivateAccess x m
+        Just y  -> bindModule PrivateAccess (asName y) m
 
       printScope "import" 10 "merged imported sig:"
-      ds <- case open of
-	DontOpen -> return []
-	DoOpen   -> do
-	  toAbstract [ C.Open r name dir { usingOrHiding = Hiding []
-					 , renaming	 = []
-					 }
-		     ]
-      return $ A.Import (ModuleInfo PublicAccess ConcreteDef r) m : ds
-      where
-	  name = maybe x C.QName as
-
-newtype Constr a = Constr a
+
+      -- Open if specified, otherwise apply import directives
+      let (name, theAsSymbol, theAsName) = case as of
+            Nothing -> (x,                  noRange,   Nothing)
+            Just a  -> (C.QName (asName a), asRange a, Just (asName a))
+      case open of
+        DoOpen   -> do
+          toAbstract [ C.Open r name dir ]
+          return ()
+        DontOpen -> do
+          -- If not opening import directives are applied to the original scope
+          modifyNamedScopeM m $ applyImportDirectiveM x dir
+      return [ A.Import (ModuleInfo
+                           { minfoRange  = r
+                           , minfoAsName = theAsName
+                           , minfoAsTo   =
+                               getRange (theAsSymbol, renamingRange dir)
+                           })
+                        m ]
 
 instance ToAbstract (Constr C.NiceDeclaration) A.Declaration where
     toAbstract (Constr (C.Axiom r f p a x t)) = do
-	t' <- toAbstractCtx TopCtx t
-	y  <- freshAbstractQName f x
-	bindName p' ConName x y
-	return $ A.Axiom (mkDefInfo x f p a r) y t'
-	where
-	    -- An abstract constructor is private (abstract constructor means
-	    -- abstract datatype, so the constructor should not be exported).
-	    p' = case (a, p) of
-		    (AbstractDef, _) -> PrivateAccess
-		    (_, p)	     -> p
+        t' <- toAbstractCtx TopCtx t
+        y  <- freshAbstractQName f x
+        bindName p' ConName x y
+        return $ A.Axiom (mkDefInfo x f p a r) y t'
+        where
+            -- An abstract constructor is private (abstract constructor means
+            -- abstract datatype, so the constructor should not be exported).
+            p' = case (a, p) of
+                    (AbstractDef, _) -> PrivateAccess
+                    (_, p)           -> p
 
     toAbstract _ = __IMPOSSIBLE__    -- a constructor is always an axiom
 
@@ -769,29 +822,30 @@ instance ToAbstract C.Clause A.Clause where
       lhs' <- toAbstract (LeftHandSide top p wps)
       printLocals 10 "after lhs:"
       let (whname, whds) = case wh of
-	    NoWhere	   -> (Nothing, [])
-	    AnyWhere ds	   -> (Nothing, ds)
-	    SomeWhere m ds -> (Just m, ds)
+            NoWhere        -> (Nothing, [])
+            AnyWhere ds    -> (Nothing, ds)
+            SomeWhere m ds -> (Just m, ds)
       case whds of
-	[] -> do
-	  rhs <- toAbstract =<< toAbstractCtx TopCtx (RightHandSide with wcs' rhs)
-	  return $ A.Clause lhs' rhs []
-	_	-> do
-	  m <- C.QName <$> maybe (nameConcrete <$> freshNoName noRange) return whname
-	  let acc = maybe PrivateAccess (const PublicAccess) whname  -- unnamed where's are private
-	  let tel = []
-	  am <- toAbstract (NewModuleQName m)
-	  (scope, ds) <- scopeCheckModule (getRange wh) acc ConcreteDef m am tel whds
-	  setScope scope
-	  -- the right hand side is checked inside the module of the local definitions
-	  rhs <- toAbstractCtx TopCtx (RightHandSide with wcs' rhs)
-	  qm <- getCurrentModule
-	  case acc of
-	    PublicAccess  -> popScope PublicAccess
-	    PrivateAccess -> popScope_	-- unnamed where clauses are not in scope
-	  bindQModule acc m qm
+        [] -> do
+          rhs <- toAbstract =<< toAbstractCtx TopCtx (RightHandSide with wcs' rhs)
+          return $ A.Clause lhs' rhs []
+        _       -> do
+          m <- maybe (nameConcrete <$> freshNoName noRange) return whname
+          let acc = maybe PrivateAccess (const PublicAccess) whname  -- unnamed where's are private
+          let tel = []
+          old <- getCurrentModule
+          am  <- toAbstract (NewModuleName m)
+          (scope, ds) <- scopeCheckModule (getRange wh) (C.QName m) am tel whds
+          setScope scope
+          -- the right hand side is checked inside the module of the local definitions
+          rhs <- toAbstractCtx TopCtx (RightHandSide with wcs' rhs)
+          setCurrentModule old
+--        case acc of
+--          PublicAccess  -> popScope PublicAccess
+--          PrivateAccess -> popScope_  -- unnamed where clauses are not in scope
+          bindModule acc m am
           rhs <- toAbstract rhs
-	  return $ A.Clause lhs' rhs ds
+          return $ A.Clause lhs' rhs ds
 
 data RightHandSide = RightHandSide [C.Expr] [C.Clause] C.RHS
 data AbstractRHS = AbsurdRHS'
@@ -825,18 +879,18 @@ data LeftHandSide = LeftHandSide C.Name C.Pattern [C.Pattern]
 instance ToAbstract LeftHandSide A.LHS where
     toAbstract (LeftHandSide top lhs wps) =
       traceCall (ScopeCheckLHS top lhs) $ do
-	p <- parseLHS (Just top) lhs
-	printLocals 10 "before lhs:"
+        p <- parseLHS (Just top) lhs
+        printLocals 10 "before lhs:"
         let (x, ps) = lhsArgs p
-	x    <- toAbstract (OldName x)
-	args <- toAbstract ps
-	wps  <- toAbstract =<< mapM (parseLHS Nothing) wps
-	checkPatternLinearity (map (namedThing . unArg) args ++ wps)
-	printLocals 10 "checked pattern:"
-	args <- toAbstract args -- take care of dot patterns
-	wps  <- toAbstract wps
-	printLocals 10 "checked dots:"
-	return $ A.LHS (LHSRange $ getRange (lhs, wps)) x args wps
+        x    <- toAbstract (OldName x)
+        args <- toAbstract ps
+        wps  <- toAbstract =<< mapM (parseLHS Nothing) wps
+        checkPatternLinearity (map (namedThing . unArg) args ++ wps)
+        printLocals 10 "checked pattern:"
+        args <- toAbstract args -- take care of dot patterns
+        wps  <- toAbstract wps
+        printLocals 10 "checked dots:"
+        return $ A.LHS (LHSRange $ getRange (lhs, wps)) x args wps
 
 instance ToAbstract c a => ToAbstract (Arg c) (Arg a) where
     toAbstract (Arg h e) = Arg h <$> toAbstractCtx (hiddenArgumentCtx h) e
@@ -854,33 +908,33 @@ instance ToAbstract c a => ToAbstract (A.Pattern' c) (A.Pattern' a) where
 instance ToAbstract C.Pattern (A.Pattern' C.Expr) where
 
     toAbstract p@(C.IdentP x) = do
-	px <- toAbstract (PatName x)
-	case px of
-	    VarPatName y  -> return $ VarP y
-	    ConPatName ds -> return $ ConP (PatRange (getRange p))
+        px <- toAbstract (PatName x)
+        case px of
+            VarPatName y  -> return $ VarP y
+            ConPatName ds -> return $ ConP (PatRange (getRange p))
                                            (AmbQ $ map anameName ds)
                                            []
 
     toAbstract p0@(AppP p q) = do
-	(p', q') <- toAbstract (p,q)
-	case p' of
-	    ConP _ x as -> return $ ConP info x (as ++ [q'])
-	    DefP _ x as -> return $ DefP info x (as ++ [q'])
-	    _		-> typeError $ InvalidPattern p0
-	where
-	    r = getRange p0
-	    info = PatSource r $ \pr -> if appBrackets pr then ParenP r p0 else p0
+        (p', q') <- toAbstract (p,q)
+        case p' of
+            ConP _ x as -> return $ ConP info x (as ++ [q'])
+            DefP _ x as -> return $ DefP info x (as ++ [q'])
+            _           -> typeError $ InvalidPattern p0
+        where
+            r = getRange p0
+            info = PatSource r $ \pr -> if appBrackets pr then ParenP r p0 else p0
 
     toAbstract p0@(OpAppP r op ps) = do
-	p <- toAbstract (IdentP $ C.QName op)
-	ps <- toAbstract ps
-	case p of
-	  ConP _ x as -> return $ ConP info x (as ++ map (Arg NotHidden . unnamed) ps)
-	  DefP _ x as -> return $ DefP info x (as ++ map (Arg NotHidden . unnamed) ps)
-	  _	      -> __IMPOSSIBLE__
-	where
-	    r = getRange p0
-	    info = PatSource r $ \pr -> if appBrackets pr then ParenP r p0 else p0
+        p <- toAbstract (IdentP $ C.QName op)
+        ps <- toAbstract ps
+        case p of
+          ConP _ x as -> return $ ConP info x (as ++ map (Arg NotHidden . unnamed) ps)
+          DefP _ x as -> return $ DefP info x (as ++ map (Arg NotHidden . unnamed) ps)
+          _           -> __IMPOSSIBLE__
+        where
+            r = getRange p0
+            info = PatSource r $ \pr -> if appBrackets pr then ParenP r p0 else p0
 
     -- Removed when parsing
     toAbstract (HiddenP _ _) = __IMPOSSIBLE__
@@ -888,21 +942,21 @@ instance ToAbstract C.Pattern (A.Pattern' C.Expr) where
 
     toAbstract p@(C.WildP r)    = return $ A.WildP (PatSource r $ const p)
     toAbstract (C.ParenP _ p)   = toAbstract p
-    toAbstract (C.LitP l)	= return $ A.LitP l
+    toAbstract (C.LitP l)       = return $ A.LitP l
     toAbstract p0@(C.AsP r x p) = typeError $ NotSupported "@-patterns"
       {- do
-	x <- toAbstract (NewName x)
-	p <- toAbstract p
-	return $ A.AsP info x p
-	where
-	    info = PatSource r $ \_ -> p0
+        x <- toAbstract (NewName x)
+        p <- toAbstract p
+        return $ A.AsP info x p
+        where
+            info = PatSource r $ \_ -> p0
       -}
     -- we have to do dot patterns at the end
     toAbstract p0@(C.DotP r e) = return $ A.DotP info e
-	where info = PatSource r $ \_ -> p0
+        where info = PatSource r $ \_ -> p0
     toAbstract p0@(C.AbsurdP r) = return $ A.AbsurdP info
-	where
-	    info = PatSource r $ \_ -> p0
+        where
+            info = PatSource r $ \_ -> p0
 
 -- | Turn an operator application into abstract syntax. Make sure to record the
 -- right precedences for the various arguments.
@@ -913,29 +967,29 @@ toAbstractOpApp op@(C.Name _ xs) es = do
     op <- toAbstract (OldQName $ C.QName op)
     foldl app op <$> left f xs es
     where
-	app e arg = A.App (ExprRange (fuseRange e arg)) e
-		  $ Arg NotHidden $ unnamed arg
-
-	left f (Hole : xs) (e : es) = do
-	    e  <- toAbstractCtx (LeftOperandCtx f) e
-	    es <- inside f xs es
-	    return (e : es)
-	left f (Id {} : xs) es = inside f xs es
-	left f (Hole  : _)  [] = __IMPOSSIBLE__
-	left f []           _  = __IMPOSSIBLE__
-
-	inside f [x]	      es       = right f x es
-	inside f (Id {} : xs) es       = inside f xs es
-	inside f (Hole  : xs) (e : es) = do
-	    e  <- toAbstractCtx InsideOperandCtx e
-	    es <- inside f xs es
-	    return (e : es)
-	inside _ (Hole : _) [] = __IMPOSSIBLE__
-	inside _ []         _  = __IMPOSSIBLE__
-
-	right f Hole [e] = do
-	    e <- toAbstractCtx (RightOperandCtx f) e
-	    return [e]
-	right _ (Id {})  [] = return []
-	right _ Hole     _  = __IMPOSSIBLE__
-	right _ (Id {})  _  = __IMPOSSIBLE__
+        app e arg = A.App (ExprRange (fuseRange e arg)) e
+                  $ Arg NotHidden $ unnamed arg
+
+        left f (Hole : xs) (e : es) = do
+            e  <- toAbstractCtx (LeftOperandCtx f) e
+            es <- inside f xs es
+            return (e : es)
+        left f (Id {} : xs) es = inside f xs es
+        left f (Hole  : _)  [] = __IMPOSSIBLE__
+        left f []           _  = __IMPOSSIBLE__
+
+        inside f [x]          es       = right f x es
+        inside f (Id {} : xs) es       = inside f xs es
+        inside f (Hole  : xs) (e : es) = do
+            e  <- toAbstractCtx InsideOperandCtx e
+            es <- inside f xs es
+            return (e : es)
+        inside _ (Hole : _) [] = __IMPOSSIBLE__
+        inside _ []         _  = __IMPOSSIBLE__
+
+        right f Hole [e] = do
+            e <- toAbstractCtx (RightOperandCtx f) e
+            return [e]
+        right _ (Id {})  [] = return []
+        right _ Hole     _  = __IMPOSSIBLE__
+        right _ (Id {})  _  = __IMPOSSIBLE__
diff --git a/src/full/Agda/Syntax/Translation/InternalToAbstract.hs b/src/full/Agda/Syntax/Translation/InternalToAbstract.hs
index aba216e..2757d30 100644
--- a/src/full/Agda/Syntax/Translation/InternalToAbstract.hs
+++ b/src/full/Agda/Syntax/Translation/InternalToAbstract.hs
@@ -311,6 +311,7 @@ instance DotVars A.Expr where
     A.Prop _         -> Set.empty
     A.Let _ _ _      -> __IMPOSSIBLE__
     A.Rec _ es       -> dotVars $ map snd es
+    A.ETel _         -> __IMPOSSIBLE__
 
 instance DotVars TypedBindings where
   dotVars (TypedBindings _ _ bs) = dotVars bs
@@ -340,9 +341,10 @@ reifyPatterns tel perm ps = evalStateT (reifyArgs ps) 0
       I.DotP v -> do
         t <- lift $ reify v
         let vars = Set.map show (dotVars t)
+        tick
         if Set.member "()" vars
-          then tick >> (return $ A.DotP i $ A.Underscore mi)
-          else tick >> lift (A.DotP i <$> reify v)
+          then return $ A.DotP i $ A.Underscore mi
+          else lift $ A.DotP i <$> reify v
       I.LitP l    -> return $ A.LitP l
       I.ConP c ps -> A.ConP i (AmbQ [c]) <$> reifyArgs ps
       where
diff --git a/src/full/Agda/Termination/CallGraph.hs b/src/full/Agda/Termination/CallGraph.hs
index 16f1234..4bcd0ab 100644
--- a/src/full/Agda/Termination/CallGraph.hs
+++ b/src/full/Agda/Termination/CallGraph.hs
@@ -442,6 +442,7 @@ showBehaviour = concatMap showCall . toList
 ------------------------------------------------------------------------
 -- All tests
 
+tests :: IO Bool
 tests = runTests "Agda.Termination.CallGraph"
   [ quickCheck' prop_orderSemiring
   , quickCheck' prop_Arbitrary_CallMatrix
diff --git a/src/full/Agda/Termination/Lexicographic.hs b/src/full/Agda/Termination/Lexicographic.hs
index c2408cd..205df31 100644
--- a/src/full/Agda/Termination/Lexicographic.hs
+++ b/src/full/Agda/Termination/Lexicographic.hs
@@ -224,6 +224,7 @@ prop_lexOrder_noArgs =
 ------------------------------------------------------------------------
 -- All tests
 
+tests :: IO Bool
 tests = runTests "Agda.Termination.Lexicographic"
   [ quickCheck' prop_recBehaviour_Arbitrary
   , quickCheck' prop_fromDiagonals
diff --git a/src/full/Agda/Termination/Matrix.hs b/src/full/Agda/Termination/Matrix.hs
index 79d6558..cdc5ff1 100644
--- a/src/full/Agda/Termination/Matrix.hs
+++ b/src/full/Agda/Termination/Matrix.hs
@@ -321,6 +321,7 @@ zipWith f m1 m2
 ------------------------------------------------------------------------
 -- All tests
 
+tests :: IO Bool
 tests = runTests "Agda.Termination.Matrix"
   [ quickCheck' prop_Arbitrary_Size
   , quickCheck' prop_Arbitrary_Matrix
diff --git a/src/full/Agda/Termination/Semiring.hs b/src/full/Agda/Termination/Semiring.hs
index dd68d5d..ff6d998 100644
--- a/src/full/Agda/Termination/Semiring.hs
+++ b/src/full/Agda/Termination/Semiring.hs
@@ -60,6 +60,7 @@ prop_boolSemiring = semiringInvariant boolSemiring
 ------------------------------------------------------------------------
 -- All tests
 
+tests :: IO Bool
 tests = runTests "Agda.Termination.Semiring"
   [ quickCheck' prop_integerSemiring
   , quickCheck' prop_boolSemiring
diff --git a/src/full/Agda/Termination/TermCheck.hs b/src/full/Agda/Termination/TermCheck.hs
index c8f2677..4a30dc0 100644
--- a/src/full/Agda/Termination/TermCheck.hs
+++ b/src/full/Agda/Termination/TermCheck.hs
@@ -7,7 +7,10 @@
    Source : TypeCheck.Rules.Decl
  -}
 
-module Agda.Termination.TermCheck (termDecls) where
+module Agda.Termination.TermCheck
+    ( termDecls
+    , Result, DeBruijnPat
+    ) where
 
 import Control.Monad.Error
 import Data.List as List
@@ -77,6 +80,7 @@ termDecl d =
 	A.Import {}		 -> return []
 	A.Pragma {}		 -> return []
 	A.ScopedDecl scope ds	 -> setScope scope >> termDecls ds
+        A.Open {}                -> return []
 	    -- open is just an artifact from the concrete syntax
 
 collectCalls :: (a -> TCM Calls) -> [a] -> TCM Calls
@@ -388,7 +392,7 @@ termTerm names f pats0 t0 = do
                   let reduceCon t@(Con _ _) = reduce t
                       reduceCon t           = return t
                   args2 <- mapM reduceCon args2
-                  let args = map etaContract args2
+                  args  <- mapM etaContract args2
 
                   -- collect calls in the arguments of this call
                   calls <- collectCalls (loop pats Unknown) args
diff --git a/src/full/Agda/Termination/Termination.hs b/src/full/Agda/Termination/Termination.hs
index 864d7bf..f34b30c 100644
--- a/src/full/Agda/Termination/Termination.hs
+++ b/src/full/Agda/Termination/Termination.hs
@@ -247,6 +247,7 @@ prop_terminates_example6 = isLeft $ terminates example6
 ------------------------------------------------------------------------
 -- All tests
 
+tests :: IO Bool
 tests = runTests "Agda.Termination.Termination"
   [ quickCheck' prop_terminates_example1
   , quickCheck' prop_terminates_example2
diff --git a/src/full/Agda/TypeChecker.hs b/src/full/Agda/TypeChecker.hs
index d8c32a3..8afc5f7 100644
--- a/src/full/Agda/TypeChecker.hs
+++ b/src/full/Agda/TypeChecker.hs
@@ -5,10 +5,10 @@ module Agda.TypeChecker
   ) where
 
 import Agda.TypeChecking.Rules.Builtin as Rules
-import Agda.TypeChecking.Rules.Data	  as Rules
-import Agda.TypeChecking.Rules.Decl	  as Rules
-import Agda.TypeChecking.Rules.Def	  as Rules
-import Agda.TypeChecking.Rules.LHS	  as Rules
+import Agda.TypeChecking.Rules.Data    as Rules
+import Agda.TypeChecking.Rules.Decl    as Rules
+import Agda.TypeChecking.Rules.Def     as Rules
+import Agda.TypeChecking.Rules.LHS     as Rules
 import Agda.TypeChecking.Rules.Record  as Rules
-import Agda.TypeChecking.Rules.Term	  as Rules
+import Agda.TypeChecking.Rules.Term    as Rules
 
diff --git a/src/full/Agda/TypeChecking/Constraints.hs b/src/full/Agda/TypeChecking/Constraints.hs
index 5f82d95..b35c0a0 100644
--- a/src/full/Agda/TypeChecking/Constraints.hs
+++ b/src/full/Agda/TypeChecking/Constraints.hs
@@ -56,6 +56,7 @@ guardConstraint m c = do
 	isSC SortCmp{}     = True
 	isSC ValueCmp{}    = False
 	isSC TypeCmp{}     = False
+	isSC TelCmp{}      = False
 	isSC (Guarded c _) = isSC c
 	isSC UnBlock{}     = False
         isSC IsEmpty{}     = False
@@ -80,6 +81,7 @@ solveConstraints cs = do
 solveConstraint :: MonadTCM tcm => Constraint -> tcm Constraints
 solveConstraint (ValueCmp cmp a u v) = compareTerm cmp a u v
 solveConstraint (TypeCmp cmp a b)    = compareType cmp a b
+solveConstraint (TelCmp cmp a b)     = compareTel  cmp a b
 solveConstraint (SortCmp cmp s1 s2)  = compareSort cmp s1 s2
 solveConstraint (Guarded c cs)       = guardConstraint (return cs) c
 solveConstraint (IsEmpty t)          = isEmptyTypeC t
diff --git a/src/full/Agda/TypeChecking/Conversion.hs b/src/full/Agda/TypeChecking/Conversion.hs
index 83e0cdb..8df0fb3 100644
--- a/src/full/Agda/TypeChecking/Conversion.hs
+++ b/src/full/Agda/TypeChecking/Conversion.hs
@@ -110,6 +110,33 @@ compareTerm cmp a m n =
         suggest (Pi _ (Abs x _)) = x
         suggest _		 = __IMPOSSIBLE__
 
+compareTel :: MonadTCM tcm => Comparison -> Telescope -> Telescope -> tcm Constraints
+compareTel cmp tel1 tel2 =
+  catchConstraint (TelCmp cmp tel1 tel2) $ case (tel1, tel2) of
+    (EmptyTel, EmptyTel) -> return []
+    (EmptyTel, _)        -> bad
+    (_, EmptyTel)        -> bad
+    (ExtendTel arg1@(Arg h1 a1) tel1, ExtendTel arg2@(Arg h2 a2) tel2)
+      | h1 /= h2  -> bad
+      | otherwise -> do
+          let (tel1', tel2') = raise 1 (tel1, tel2)
+              arg            = Var 0 []
+          name <- freshName_ (suggest (absName tel1) (absName tel2))
+          cs   <- compareType cmp a1 a2
+          let c = TelCmp cmp (absApp tel1' arg) (absApp tel2' arg)
+
+	  let dependent = 0 `freeIn` absBody tel2
+	  
+          if dependent
+	    then addCtx name arg1 $ guardConstraint (return cs) c
+	    else do cs' <- addCtx name arg1 $ solveConstraint c
+		    return $ cs ++ cs'
+          where
+            suggest "_" y = y
+            suggest  x  _ = x
+  where
+    bad = typeError $ UnequalTelescopes cmp tel1 tel2
+
 -- | Syntax directed equality on atomic values
 --
 compareAtom :: MonadTCM tcm => Comparison -> Type -> Term -> Term -> tcm Constraints
diff --git a/src/full/Agda/TypeChecking/Conversion.hs-boot b/src/full/Agda/TypeChecking/Conversion.hs-boot
index 1145ad9..d9bb26b 100644
--- a/src/full/Agda/TypeChecking/Conversion.hs-boot
+++ b/src/full/Agda/TypeChecking/Conversion.hs-boot
@@ -9,6 +9,7 @@ compareTerm :: MonadTCM tcm => Comparison -> Type -> Term -> Term -> tcm Constra
 compareAtom :: MonadTCM tcm => Comparison -> Type -> Term -> Term -> tcm Constraints
 compareArgs :: MonadTCM tcm => [Polarity] -> Type -> Args -> Args -> tcm Constraints
 compareType :: MonadTCM tcm => Comparison -> Type -> Type -> tcm Constraints
+compareTel  :: MonadTCM tcm => Comparison -> Telescope -> Telescope -> tcm Constraints
 compareSort :: MonadTCM tcm => Comparison -> Sort -> Sort -> tcm Constraints
 equalTerm :: MonadTCM tcm => Type -> Term -> Term -> tcm Constraints
 equalArgs :: MonadTCM tcm => Type -> Args -> Args -> tcm Constraints
diff --git a/src/full/Agda/TypeChecking/Coverage.hs b/src/full/Agda/TypeChecking/Coverage.hs
index 4e03ed8..4bbeae8 100644
--- a/src/full/Agda/TypeChecking/Coverage.hs
+++ b/src/full/Agda/TypeChecking/Coverage.hs
@@ -115,7 +115,7 @@ cover cs (SClause tel perm ps _) = do
       r <- split tel perm ps x
       case r of
         Left err  -> case err of
-          CantSplit c         -> typeError $ CoverageCantSplitOn c
+          CantSplit c _ _ _ _ -> typeError $ CoverageCantSplitOn c
           NotADatatype a      -> typeError $ CoverageCantSplitType a
           GenericSplitError s -> fail $ "failed to split: " ++ s
         Right scs -> (Set.unions -*- concat) . unzip <$> mapM (cover cs) scs
@@ -135,7 +135,7 @@ isDatatype t = do
     _ -> return Nothing
 
 data SplitError = NotADatatype Type
-                | CantSplit QName
+                | CantSplit QName Telescope Args Args [Term]
                 | GenericSplitError String
   deriving (Show)
 
@@ -167,8 +167,11 @@ computeNeighbourhood delta1 delta2 perm d pars ixs hix hps con = do
   let flex = [0..size delta1 + size gamma - 1]
 
   -- Unify constructor target and given type (in Δ₁Γ)
+  let conIxs   = drop (size pars) cixs
+      givenIxs = raise (size gamma) ixs
+
   r <- addCtxTel (delta1 `abstract` gamma) $
-       unifyIndices flex (raise (size gamma) dtype) (drop (size pars) cixs) (raise (size gamma) ixs)
+       unifyIndices flex (raise (size gamma) dtype) conIxs givenIxs
 
   case r of
     NoUnify _ _ _ -> do
@@ -176,7 +179,8 @@ computeNeighbourhood delta1 delta2 perm d pars ixs hix hps con = do
       return []
     DontKnow _    -> do
       debugCantSplit
-      throwException $ CantSplit con
+      throwException $ CantSplit con (delta1 `abstract` gamma) conIxs givenIxs
+                                 [ Var i [] | i <- flex ]
     Unifies sub   -> do
       debugSubst "sub" sub
 
@@ -240,7 +244,7 @@ computeNeighbourhood delta1 delta2 perm d pars ixs hix hps con = do
           , text "ctype  =" <+> prettyTCM ctype
           , text "hps    =" <+> text (show hps)
           , text "pars   =" <+> prettyList (map prettyTCM pars)
-          , text "ixs    =" <+> prettyList (map prettyTCM ixs)
+          , text "ixs    =" <+> addCtxTel (delta1 `abstract` gamma) (prettyList (map prettyTCM ixs))
           , text "cixs   =" <+> prettyList (map prettyTCM cixs)
           , text "delta1 =" <+> prettyTCM delta1
           , text "delta2 =" <+> prettyTCM delta2
diff --git a/src/full/Agda/TypeChecking/Errors.hs b/src/full/Agda/TypeChecking/Errors.hs
index f54da91..a173b4c 100644
--- a/src/full/Agda/TypeChecking/Errors.hs
+++ b/src/full/Agda/TypeChecking/Errors.hs
@@ -153,6 +153,7 @@ errorString err = case err of
     UnequalSorts{}			       -> "UnequalSorts"
     UnequalTerms{}			       -> "UnequalTerms"
     UnequalTypes{}			       -> "UnequalTypes"
+    UnequalTelescopes{}			       -> "UnequalTelescopes"
     UnexpectedWithPatterns _                   -> "UnexpectedWithPatterns"
     UninstantiatedDotPattern _                 -> "UninstantiatedDotPattern"
     UninstantiatedModule _		       -> "UninstantiatedModule"
@@ -234,8 +235,8 @@ instance PrettyTCM TypeError where
               [prettyTCM c] ++ pwords "is not a constructor of the datatype" ++ [prettyTCM d]
             ShadowedModule [] -> __IMPOSSIBLE__
             ShadowedModule ms@(m : _) -> fsep $
-              pwords "Shadowing of module" ++ [prettyTCM m] ++ pwords "defined at" ++ [text $ show r] ++
-              pwords "is not allowed"
+              pwords "Duplicate definition of module" ++ [prettyTCM m <> text "."] ++
+              pwords "Previous definition at" ++ [text $ show r]
               where
                 r = case [ r | r <- map (defSiteOfLast . mnameToList) ms
                              , r /= noRange ] of
@@ -268,6 +269,11 @@ instance PrettyTCM TypeError where
                 where
                   f CmpEq  = text "!="
                   f CmpLeq = text "!=<"
+	    UnequalTelescopes cmp a b -> fsep $
+		[prettyTCM a, f cmp, prettyTCM b]
+                where
+                  f CmpEq  = text "!="
+                  f CmpLeq = text "!=<"
 	    UnequalTypes cmp a b -> fsep $
 		[prettyTCM a, f cmp, prettyTCM b]
                 where
@@ -567,7 +573,7 @@ instance PrettyTCM Call where
           pwords "when checking the module application" ++
           [prettyA $ A.Apply info m1 ptel m2 args Map.empty Map.empty]
           where
-            info = A.ModuleInfo PublicAccess ConcreteDef noRange
+            info = A.ModuleInfo noRange noRange Nothing
 
 	where
 	    hPretty a@(Arg h _) = pretty =<< abstractToConcreteCtx (hiddenArgumentCtx h) a
diff --git a/src/full/Agda/TypeChecking/EtaContract.hs b/src/full/Agda/TypeChecking/EtaContract.hs
index 0a1d831..126e4a2 100644
--- a/src/full/Agda/TypeChecking/EtaContract.hs
+++ b/src/full/Agda/TypeChecking/EtaContract.hs
@@ -8,6 +8,9 @@ import Agda.Syntax.Internal
 import Agda.Syntax.Internal.Generic
 import Agda.TypeChecking.Substitute
 import Agda.TypeChecking.Free
+import Agda.TypeChecking.Monad
+import Agda.TypeChecking.Records
+import Agda.Utils.Monad
 
 #include "../undefined.h"
 import Agda.Utils.Impossible
@@ -32,12 +35,16 @@ binAppView t = case t of
     app f [] = noApp
     app f xs = App (f $ init xs) (last xs)
 
-etaContract :: TermLike a => a -> a
-etaContract = traverseTerm eta
+etaContract :: (MonadTCM tcm, TermLike a) => a -> tcm a
+etaContract = traverseTermM eta
   where
     eta t@(Lam h b) = case binAppView (absBody b) of
       App u (Arg _ (Var 0 []))
-        | not (freeIn 0 u)  -> subst __IMPOSSIBLE__ u
-      _ -> t
-    eta t = t
+        | not (freeIn 0 u)  -> return $ subst __IMPOSSIBLE__ u
+      _ -> return t
+    eta t@(Con r args) =
+      ifM (isRecord r)
+          (etaContractRecord r args)
+          (return t)
+    eta t = return t
 
diff --git a/src/full/Agda/TypeChecking/MetaVars.hs b/src/full/Agda/TypeChecking/MetaVars.hs
index b225caa..2c132af 100644
--- a/src/full/Agda/TypeChecking/MetaVars.hs
+++ b/src/full/Agda/TypeChecking/MetaVars.hs
@@ -27,6 +27,7 @@ import Agda.TypeChecking.Errors
 import Agda.TypeChecking.Free
 import Agda.TypeChecking.Records
 import Agda.TypeChecking.Pretty
+import Agda.TypeChecking.EtaContract
 
 import {-# SOURCE #-} Agda.TypeChecking.Conversion
 
@@ -419,10 +420,11 @@ assignS x s =
 --   @reverse@ is necessary because we are directly abstracting over this list @ids at .
 --
 checkArgs :: MonadTCM tcm => MetaId -> Args -> tcm [Arg Nat]
-checkArgs x args =
-    case validParameters args of
-	Just ids    -> return $ reverse ids
-	Nothing	    -> patternViolation
+checkArgs x args = do
+  args <- etaContract =<< instantiateFull args
+  case validParameters args of
+    Just ids -> return $ reverse ids
+    Nothing  -> patternViolation
 
 -- | Check that the parameters to a meta variable are distinct variables.
 validParameters :: Monad m => Args -> m [Arg Nat]
diff --git a/src/full/Agda/TypeChecking/Monad/Base.hs b/src/full/Agda/TypeChecking/Monad/Base.hs
index df058a8..959475c 100644
--- a/src/full/Agda/TypeChecking/Monad/Base.hs
+++ b/src/full/Agda/TypeChecking/Monad/Base.hs
@@ -7,7 +7,7 @@ module Agda.TypeChecking.Monad.Base where
 import Control.Monad.Error
 import Control.Monad.State
 import Control.Monad.Reader
-import Control.Exception
+import Control.OldException
 import Control.Applicative
 import Data.Map as Map
 import Data.Set as Set
@@ -147,7 +147,7 @@ type DecodedModules = Map ModuleName (Interface, ClockTime)
 data Interface = Interface
 	{ iImportedModules :: [ModuleName]
         , iModuleName      :: ModuleName
-	, iScope	   :: Scope
+	, iScope	   :: Map A.ModuleName Scope
 	, iSignature	   :: Signature
 	, iBuiltin	   :: BuiltinThings String
         , iHaskellImports  :: [String]
@@ -186,6 +186,7 @@ type ConstraintClosure = Closure Constraint
 
 data Constraint = ValueCmp Comparison Type Term Term
 		| TypeCmp Comparison Type Type
+                | TelCmp Comparison Telescope Telescope
 		| SortCmp Comparison Sort Sort
 		| UnBlock MetaId
 		| Guarded Constraint Constraints
@@ -734,6 +735,7 @@ data TypeError
 	| NotAProperTerm
 	| UnequalTerms Comparison Term Term Type
 	| UnequalTypes Comparison Type Type
+	| UnequalTelescopes Comparison Telescope Telescope
 	| UnequalHiding Type Type
 	    -- ^ The two function types have different hiding.
 	| UnequalSorts Sort Sort
diff --git a/src/full/Agda/TypeChecking/Monad/Builtin.hs b/src/full/Agda/TypeChecking/Monad/Builtin.hs
index efa084a..7175deb 100644
--- a/src/full/Agda/TypeChecking/Monad/Builtin.hs
+++ b/src/full/Agda/TypeChecking/Monad/Builtin.hs
@@ -57,58 +57,58 @@ getPrimitive x = do
 
 primInteger, primFloat, primChar, primString, primBool, primTrue, primFalse,
     primList, primNil, primCons, primIO, primNat, primSuc, primZero,
-    primNatPlus, primNatMinus, primNatTimes, primNatDivSuc, primNatModSuc,
+    primNatPlus, primNatMinus, primNatTimes, primNatDivSucAux, primNatModSucAux,
     primNatEquality, primNatLess, primSize, primSizeSuc, primSizeInf
     :: MonadTCM tcm => tcm Term
-primInteger     = getBuiltin builtinInteger
-primFloat       = getBuiltin builtinFloat
-primChar        = getBuiltin builtinChar
-primString      = getBuiltin builtinString
-primBool        = getBuiltin builtinBool
-primTrue        = getBuiltin builtinTrue
-primFalse       = getBuiltin builtinFalse
-primList        = getBuiltin builtinList
-primNil         = getBuiltin builtinNil
-primCons        = getBuiltin builtinCons
-primIO          = getBuiltin builtinIO
-primNat         = getBuiltin builtinNat
-primSuc         = getBuiltin builtinSuc
-primZero        = getBuiltin builtinZero
-primNatPlus     = getBuiltin builtinNatPlus
-primNatMinus    = getBuiltin builtinNatMinus
-primNatTimes    = getBuiltin builtinNatTimes
-primNatDivSuc   = getBuiltin builtinNatDivSuc
-primNatModSuc   = getBuiltin builtinNatModSuc
-primNatEquality = getBuiltin builtinNatEquals
-primNatLess     = getBuiltin builtinNatLess
-primSize        = getBuiltin builtinSize
-primSizeSuc     = getBuiltin builtinSizeSuc
-primSizeInf     = getBuiltin builtinSizeInf
-
-builtinNat       = "NATURAL"
-builtinSuc       = "SUC"
-builtinZero      = "ZERO"
-builtinNatPlus   = "NATPLUS"
-builtinNatMinus  = "NATMINUS"
-builtinNatTimes  = "NATTIMES"
-builtinNatDivSuc = "NATDIVSUC"
-builtinNatModSuc = "NATMODSUC"
-builtinNatEquals = "NATEQUALS"
-builtinNatLess   = "NATLESS"
-builtinInteger   = "INTEGER"
-builtinFloat     = "FLOAT"
-builtinChar      = "CHAR"
-builtinString    = "STRING"
-builtinBool      = "BOOL"
-builtinTrue      = "TRUE"
-builtinFalse     = "FALSE"
-builtinList      = "LIST"
-builtinNil       = "NIL"
-builtinCons      = "CONS"
-builtinIO        = "IO"
-builtinSize      = "SIZE"
-builtinSizeSuc   = "SIZESUC"
-builtinSizeInf   = "SIZEINF"
+primInteger      = getBuiltin builtinInteger
+primFloat        = getBuiltin builtinFloat
+primChar         = getBuiltin builtinChar
+primString       = getBuiltin builtinString
+primBool         = getBuiltin builtinBool
+primTrue         = getBuiltin builtinTrue
+primFalse        = getBuiltin builtinFalse
+primList         = getBuiltin builtinList
+primNil          = getBuiltin builtinNil
+primCons         = getBuiltin builtinCons
+primIO           = getBuiltin builtinIO
+primNat          = getBuiltin builtinNat
+primSuc          = getBuiltin builtinSuc
+primZero         = getBuiltin builtinZero
+primNatPlus      = getBuiltin builtinNatPlus
+primNatMinus     = getBuiltin builtinNatMinus
+primNatTimes     = getBuiltin builtinNatTimes
+primNatDivSucAux = getBuiltin builtinNatDivSucAux
+primNatModSucAux = getBuiltin builtinNatModSucAux
+primNatEquality  = getBuiltin builtinNatEquals
+primNatLess      = getBuiltin builtinNatLess
+primSize         = getBuiltin builtinSize
+primSizeSuc      = getBuiltin builtinSizeSuc
+primSizeInf      = getBuiltin builtinSizeInf
+
+builtinNat          = "NATURAL"
+builtinSuc          = "SUC"
+builtinZero         = "ZERO"
+builtinNatPlus      = "NATPLUS"
+builtinNatMinus     = "NATMINUS"
+builtinNatTimes     = "NATTIMES"
+builtinNatDivSucAux = "NATDIVSUCAUX"
+builtinNatModSucAux = "NATMODSUCAUX"
+builtinNatEquals    = "NATEQUALS"
+builtinNatLess      = "NATLESS"
+builtinInteger      = "INTEGER"
+builtinFloat        = "FLOAT"
+builtinChar         = "CHAR"
+builtinString       = "STRING"
+builtinBool         = "BOOL"
+builtinTrue         = "TRUE"
+builtinFalse        = "FALSE"
+builtinList         = "LIST"
+builtinNil          = "NIL"
+builtinCons         = "CONS"
+builtinIO           = "IO"
+builtinSize         = "SIZE"
+builtinSizeSuc      = "SIZESUC"
+builtinSizeInf      = "SIZEINF"
 
 builtinTypes :: [String]
 builtinTypes =
diff --git a/src/full/Agda/TypeChecking/Monad/Options.hs b/src/full/Agda/TypeChecking/Monad/Options.hs
index eeed5ea..24d293f 100644
--- a/src/full/Agda/TypeChecking/Monad/Options.hs
+++ b/src/full/Agda/TypeChecking/Monad/Options.hs
@@ -50,13 +50,6 @@ setOptionsFromPragma _ = return ()
 setOptionsFromPragmas :: MonadTCM tcm => [Pragma] -> tcm ()
 setOptionsFromPragmas = foldr (>>) (return ()) . map setOptionsFromPragma
 
-bracketOptions :: MonadTCM tcm => tcm a -> tcm a
-bracketOptions m = do
-    opts <- commandLineOptions
-    x    <- m
-    setCommandLineOptions opts
-    return x
-
 -- | Disable display forms.
 enableDisplayForms :: MonadTCM tcm => tcm a -> tcm a
 enableDisplayForms =
@@ -131,8 +124,10 @@ getVerbosity = optVerbose <$> commandLineOptions
 
 type VerboseKey = String
 
+-- | Precondition: The level must be non-negative.
 verboseS :: MonadTCM tcm => VerboseKey -> Int -> tcm () -> tcm ()
-verboseS k n action = do
+verboseS k n action | n < 0     = __IMPOSSIBLE__
+                    | otherwise = do
     t <- getVerbosity
     let ks = wordsBy (`elem` ".:") k
 	m  = maximum $ 0 : Trie.lookupPath ks t
diff --git a/src/full/Agda/TypeChecking/Monad/Signature.hs b/src/full/Agda/TypeChecking/Monad/Signature.hs
index 8bf39d0..17f468e 100644
--- a/src/full/Agda/TypeChecking/Monad/Signature.hs
+++ b/src/full/Agda/TypeChecking/Monad/Signature.hs
@@ -352,13 +352,17 @@ getSecFreeVars m = do
     True  -> return $ maybe 0 secFreeVars $ Map.lookup m sig
     False -> return 0
 
+-- | Compute the number of free variables of a module. This is the sum of
+--   the free variables of its sections.
+getModuleFreeVars :: MonadTCM tcm => ModuleName -> tcm Nat
+getModuleFreeVars m = sum <$> ((:) <$> getAnonymousVariables m <*> mapM getSecFreeVars ms)
+  where
+    ms = map mnameFromList . inits . mnameToList $ m
+
 -- | Compute the number of free variables of a defined name. This is the sum of
 --   the free variables of the sections it's contained in.
 getDefFreeVars :: MonadTCM tcm => QName -> tcm Nat
-getDefFreeVars q = sum <$> ((:) <$> getAnonymousVariables m <*> mapM getSecFreeVars ms)
-  where
-    m  = qnameModule q
-    ms = map mnameFromList . inits . mnameToList $ m
+getDefFreeVars q = getModuleFreeVars (qnameModule q)
 
 -- | Compute the context variables to apply a definition to.
 freeVarsToApply :: MonadTCM tcm => QName -> tcm Args
diff --git a/src/full/Agda/TypeChecking/Pretty.hs b/src/full/Agda/TypeChecking/Pretty.hs
index 53175d1..787a6dc 100644
--- a/src/full/Agda/TypeChecking/Pretty.hs
+++ b/src/full/Agda/TypeChecking/Pretty.hs
@@ -94,6 +94,10 @@ instance PrettyTCM Constraint where
 	    sep [ prettyTCM a
 		, prettyTCM cmp <+> prettyTCM b
 		]
+	TelCmp cmp a b ->
+	    sep [ prettyTCM a
+		, prettyTCM cmp <+> prettyTCM b
+		]
 	SortCmp cmp s1 s2 ->
 	    sep [ prettyTCM s1
 		, prettyTCM cmp <+> prettyTCM s2
diff --git a/src/full/Agda/TypeChecking/Primitive.hs b/src/full/Agda/TypeChecking/Primitive.hs
index 09f6b9f..59f8d2c 100644
--- a/src/full/Agda/TypeChecking/Primitive.hs
+++ b/src/full/Agda/TypeChecking/Primitive.hs
@@ -246,6 +246,35 @@ mkPrimFun2 f = do
 	    (\w' -> [Arg (argHiding v) (fromA x), w']) $ \y ->
 	redReturn $ fromC $ f x y
 
+mkPrimFun4 :: ( MonadTCM tcm
+              , PrimType a, FromTerm a, ToTerm a
+              , PrimType b, FromTerm b, ToTerm b
+              , PrimType c, FromTerm c, ToTerm c
+              , PrimType d, FromTerm d
+              , PrimType e, ToTerm e) =>
+	      (a -> b -> c -> d -> e) -> tcm PrimitiveImpl
+mkPrimFun4 f = do
+    (toA, fromA) <- (,) <$> fromTerm <*> toTerm
+    (toB, fromB) <- (,) <$> fromTerm <*> toTerm
+    (toC, fromC) <- (,) <$> fromTerm <*> toTerm
+    toD          <- fromTerm
+    fromE        <- toTerm
+    t <- primType f
+    return $ PrimImpl t $ PrimFun __IMPOSSIBLE__ 4 $ \[a,b,c,d] -> liftTCM $
+	redBind (toA a)
+	    (\a' -> [a',b,c,d]) $ \x ->
+	redBind (toB b)
+	    (\b' -> [Arg (argHiding a) (fromA x), b', c, d]) $ \y ->
+	redBind (toC c)
+	    (\c' -> [ Arg (argHiding a) (fromA x)
+                    , Arg (argHiding b) (fromB y), c', d]) $ \z ->
+	redBind (toD d)
+	    (\d' -> [ Arg (argHiding a) (fromA x)
+                    , Arg (argHiding b) (fromB y)
+                    , Arg (argHiding c) (fromC z)
+                    , d']) $ \w ->
+	redReturn $ fromE $ f x y z w
+
 -- Abstract primitive functions
 abstractPrim :: (MonadTCM tcm, PrimType a) => a -> tcm PrimitiveImpl
 abstractPrim x = abstractFromType (primType x)
@@ -330,8 +359,12 @@ primitiveFunctions = Map.fromList
     , "primNatPlus"	    |-> mkPrimFun2 ((+)			    :: Op Nat)
     , "primNatMinus"	    |-> mkPrimFun2 ((\x y -> max 0 (x - y)) :: Op Nat)
     , "primNatTimes"	    |-> mkPrimFun2 ((*)			    :: Op Nat)
-    , "primNatDivSuc"	    |-> mkPrimFun2 ((\x y -> div x (y + 1)) :: Op Nat)
-    , "primNatModSuc"	    |-> mkPrimFun2 ((\x y -> mod x (y + 1)) :: Op Nat)
+    , "primNatDivSucAux"    |-> mkPrimFun4 ((\k m n j -> k + div (n + m - j) (m + 1)) :: Nat -> Nat -> Nat -> Nat -> Nat)
+    , "primNatModSucAux"    |->
+        let aux :: Nat -> Nat -> Nat -> Nat -> Nat
+            aux k m n j | n > j     = mod (n - j - 1) (m + 1)
+                        | otherwise = k + n
+        in mkPrimFun4 aux
     , "primNatEquality"	    |-> mkPrimFun2 ((==)		    :: Rel Nat)
     , "primNatLess"	    |-> mkPrimFun2 ((<)			    :: Rel Nat)
 
diff --git a/src/full/Agda/TypeChecking/Records.hs b/src/full/Agda/TypeChecking/Records.hs
index be76147..fbb6acd 100644
--- a/src/full/Agda/TypeChecking/Records.hs
+++ b/src/full/Agda/TypeChecking/Records.hs
@@ -99,3 +99,22 @@ etaExpandRecord r pars u = do
   where
     hide (Arg _ x) = Arg Hidden x
 
+-- | The fields should be eta contracted already.
+etaContractRecord :: MonadTCM tcm => QName -> Args -> tcm Term
+etaContractRecord r args = do
+  Record{ recFields = xs } <- getRecordDef r
+  let check (Arg _ v) x = do
+        case v of
+          Def y args@(_:_) | x == y -> return (Just $ unArg $ last args)
+          _                         -> return Nothing
+  unless (length args == length xs) __IMPOSSIBLE__
+  cs <- zipWithM check args xs
+  case sequence cs of
+    Just (c:cs) -> do
+      if all (c ==) cs
+        then return c
+        else fallBack
+    _ -> fallBack
+  where
+    fallBack = return (Con r args)
+
diff --git a/src/full/Agda/TypeChecking/Reduce.hs b/src/full/Agda/TypeChecking/Reduce.hs
index 8c34bcc..2e9c158 100644
--- a/src/full/Agda/TypeChecking/Reduce.hs
+++ b/src/full/Agda/TypeChecking/Reduce.hs
@@ -89,18 +89,20 @@ instance (Instantiate a, Instantiate b) => Instantiate (a,b) where
 instance (Instantiate a, Instantiate b,Instantiate c) => Instantiate (a,b,c) where
     instantiate (x,y,z) = (,,) <$> instantiate x <*> instantiate y <*> instantiate z
 
-
-
 instance Instantiate a => Instantiate (Closure a) where
     instantiate cl = do
 	x <- enterClosure cl instantiate
 	return $ cl { clValue = x }
 
+instance Instantiate Telescope where
+  instantiate tel = return tel
+
 instance Instantiate Constraint where
     instantiate (ValueCmp cmp t u v) =
 	do  (t,u,v) <- instantiate (t,u,v)
 	    return $ ValueCmp cmp t u v
     instantiate (TypeCmp cmp a b) = uncurry (TypeCmp cmp) <$> instantiate (a,b)
+    instantiate (TelCmp cmp a b)  = uncurry (TelCmp cmp)  <$> instantiate (a,b)
     instantiate (SortCmp cmp a b) = uncurry (SortCmp cmp) <$> instantiate (a,b)
     instantiate (Guarded c cs)    = uncurry Guarded <$> instantiate (c,cs)
     instantiate (UnBlock m)       = return $ UnBlock m
@@ -273,11 +275,15 @@ instance Reduce a => Reduce (Closure a) where
 	x <- enterClosure cl reduce
 	return $ cl { clValue = x }
 
+instance Reduce Telescope where
+  reduce tel = return tel
+
 instance Reduce Constraint where
     reduce (ValueCmp cmp t u v) =
 	do  (t,u,v) <- reduce (t,u,v)
 	    return $ ValueCmp cmp t u v
     reduce (TypeCmp cmp a b) = uncurry (TypeCmp cmp) <$> reduce (a,b)
+    reduce (TelCmp  cmp a b) = uncurry (TelCmp cmp)  <$> reduce (a,b)
     reduce (SortCmp cmp a b) = uncurry (SortCmp cmp) <$> reduce (a,b)
     reduce (Guarded c cs)    = uncurry Guarded <$> reduce (c,cs)
     reduce (UnBlock m)       = return $ UnBlock m
@@ -341,11 +347,16 @@ instance Normalise a => Normalise (Closure a) where
 	x <- enterClosure cl normalise
 	return $ cl { clValue = x }
 
+instance Normalise Telescope where
+  normalise EmptyTel = return EmptyTel
+  normalise (ExtendTel a b) = uncurry ExtendTel <$> normalise (a, b)
+
 instance Normalise Constraint where
     normalise (ValueCmp cmp t u v) =
 	do  (t,u,v) <- normalise (t,u,v)
 	    return $ ValueCmp cmp t u v
     normalise (TypeCmp cmp a b) = uncurry (TypeCmp cmp) <$> normalise (a,b)
+    normalise (TelCmp cmp a b)  = uncurry (TelCmp cmp)  <$> normalise (a,b)
     normalise (SortCmp cmp a b) = uncurry (SortCmp cmp) <$> normalise (a,b)
     normalise (Guarded c cs)    = uncurry Guarded <$> normalise (c,cs)
     normalise (UnBlock m)       = return $ UnBlock m
@@ -438,6 +449,7 @@ instance InstantiateFull Constraint where
 	do  (t,u,v) <- instantiateFull (t,u,v)
 	    return $ ValueCmp cmp t u v
     instantiateFull (TypeCmp cmp a b) = uncurry (TypeCmp cmp) <$> instantiateFull (a,b)
+    instantiateFull (TelCmp cmp a b)  = uncurry (TelCmp cmp)  <$> instantiateFull (a,b)
     instantiateFull (SortCmp cmp a b) = uncurry (SortCmp cmp) <$> instantiateFull (a,b)
     instantiateFull (Guarded c cs)    = uncurry Guarded <$> instantiateFull (c,cs)
     instantiateFull (UnBlock m)       = return $ UnBlock m
@@ -483,9 +495,9 @@ instance InstantiateFull DisplayTerm where
 instance InstantiateFull Defn where
     instantiateFull d = case d of
       Axiom{} -> return d
-      Function{ funClauses = cs } -> do
-        cs <- instantiateFull cs
-        return $ d { funClauses = cs }
+      Function{ funClauses = cs, funInv = inv } -> do
+        (cs, inv) <- instantiateFull (cs, inv)
+        return $ d { funClauses = cs, funInv = inv }
       Datatype{ dataSort = s, dataClause = cl } -> do
 	s  <- instantiateFull s
 	cl <- instantiateFull cl
@@ -500,6 +512,10 @@ instance InstantiateFull Defn where
         cs <- instantiateFull cs
         return $ d { primClauses = cs }
 
+instance InstantiateFull FunctionInverse where
+  instantiateFull NotInjective = return NotInjective
+  instantiateFull (Inverse inv) = Inverse <$> instantiateFull inv
+
 instance InstantiateFull Clause where
     instantiateFull (Clause r tel perm ps b) =
        Clause r <$> instantiateFull tel
diff --git a/src/full/Agda/TypeChecking/Rules/Builtin.hs b/src/full/Agda/TypeChecking/Rules/Builtin.hs
index 37ce457..5cdc8b1 100644
--- a/src/full/Agda/TypeChecking/Rules/Builtin.hs
+++ b/src/full/Agda/TypeChecking/Rules/Builtin.hs
@@ -132,13 +132,13 @@ bindBuiltinPrimitive _ b _ _ = typeError $ GenericError $ "Builtin " ++ b ++ " m
 
 builtinPrimitives :: [ (String, (String, Term -> TCM ())) ]
 builtinPrimitives =
-    [ "NATPLUS"   |-> ("primNatPlus", verifyPlus)
-    , "NATMINUS"  |-> ("primNatMinus", verifyMinus)
-    , "NATTIMES"  |-> ("primNatTimes", verifyTimes)
-    , "NATDIVSUC" |-> ("primNatDivSuc", verifyDivSuc)
-    , "NATMODSUC" |-> ("primNatModSuc", verifyModSuc)
-    , "NATEQUALS" |-> ("primNatEquality", verifyEquals)
-    , "NATLESS"	  |-> ("primNatLess", verifyLess)
+    [ "NATPLUS"      |-> ("primNatPlus", verifyPlus)
+    , "NATMINUS"     |-> ("primNatMinus", verifyMinus)
+    , "NATTIMES"     |-> ("primNatTimes", verifyTimes)
+    , "NATDIVSUCAUX" |-> ("primNatDivSucAux", verifyDivSucAux)
+    , "NATMODSUCAUX" |-> ("primNatModSucAux", verifyModSucAux)
+    , "NATEQUALS"    |-> ("primNatEquality", verifyEquals)
+    , "NATLESS"      |-> ("primNatLess", verifyLess)
     ]
     where
 	(|->) = (,)
@@ -188,26 +188,29 @@ builtinPrimitives =
 				]
 		    ]
 
-	verifyDivSuc ds =
-	    verify ["n","m"] $ \(@@) zero suc (==) choice -> do
-		minus <- primNatMinus
-		let x - y      = minus @@ x @@ y
-		    divSuc x y = ds @@ x @@ y
-		    m	       = Var 0 []
-		    n	       = Var 1 []
-
-		divSuc  zero   m == zero
-		divSuc (suc n) m == suc (divSuc (n - m) m)
-
-	verifyModSuc ms =
-	    verify ["n","m"] $ \(@@) zero suc (==) choice -> do
-		minus <- primNatMinus
-		let x - y      = minus @@ x @@ y
-		    modSuc x y = ms @@ x @@ y
-		    m	       = Var 0 []
-		    n	       = Var 1 []
-		modSuc  zero   m == zero
-		modSuc (suc n) m == modSuc (n - m) m
+	verifyDivSucAux dsAux =
+	    verify ["k","m","n","j"] $ \(@@) zero suc (==) choice -> do
+		let aux k m n j = dsAux @@ k @@ m @@ n @@ j
+		    k	        = Var 0 []
+		    m	        = Var 1 []
+		    n	        = Var 2 []
+		    j	        = Var 3 []
+
+                aux k m zero    j       == k
+                aux k m (suc n) zero    == aux (suc k) m n m
+                aux k m (suc n) (suc j) == aux k m n j
+
+	verifyModSucAux dsAux =
+	    verify ["k","m","n","j"] $ \(@@) zero suc (==) choice -> do
+		let aux k m n j = dsAux @@ k @@ m @@ n @@ j
+		    k	        = Var 0 []
+		    m	        = Var 1 []
+		    n	        = Var 2 []
+		    j	        = Var 3 []
+
+                aux k m zero    j       == k
+                aux k m (suc n) zero    == aux zero m n m
+                aux k m (suc n) (suc j) == aux (suc k) m n j
 
 	verifyEquals eq =
 	    verify ["n","m"] $ \(@@) zero suc (===) choice -> do
diff --git a/src/full/Agda/TypeChecking/Rules/Decl.hs b/src/full/Agda/TypeChecking/Rules/Decl.hs
index 71f4729..0f976b5 100644
--- a/src/full/Agda/TypeChecking/Rules/Decl.hs
+++ b/src/full/Agda/TypeChecking/Rules/Decl.hs
@@ -58,7 +58,9 @@ checkDecl d = do
 	A.Import i x		     -> checkImport i x
 	A.Pragma i p		     -> checkPragma i p
 	A.ScopedDecl scope ds	     -> setScope scope >> checkDecls ds
+        A.Open _ _                   -> return ()
 	    -- open is just an artifact from the concrete syntax
+            -- retained for highlighting purposes
     solveSizeConstraints
 
 
diff --git a/src/full/Agda/TypeChecking/Rules/LHS/Split.hs b/src/full/Agda/TypeChecking/Rules/LHS/Split.hs
index d1fd0db..c130a36 100644
--- a/src/full/Agda/TypeChecking/Rules/LHS/Split.hs
+++ b/src/full/Agda/TypeChecking/Rules/LHS/Split.hs
@@ -6,6 +6,7 @@ import Control.Applicative
 import Control.Monad.Error
 import Data.Monoid
 import Data.List
+import Data.Traversable hiding (mapM)
 
 import Agda.Syntax.Common
 import Agda.Syntax.Literal
@@ -42,6 +43,27 @@ asView :: A.Pattern -> ([Name], A.Pattern)
 asView (A.AsP _ x p) = (x :) -*- id $ asView p
 asView p	     = ([], p)
 
+-- | TODO: move somewhere else
+expandLitPattern :: NamedArg A.Pattern -> TCM (NamedArg A.Pattern)
+expandLitPattern p = traverse (traverse expand) p
+  where
+    expand p = case asView p of
+      (xs, A.LitP (LitInt r n))
+        | n < 0     -> __IMPOSSIBLE__
+        | n > 20    -> typeError $ GenericError $
+                        "Matching on natural number literals is done by expanding "
+                        ++ "the literal to the corresponding constructor pattern, so "
+                        ++ "you probably don't want to do it this way."
+        | otherwise -> do
+          Con z _ <- primZero
+          Con s _ <- primSuc
+          let zero  = A.ConP info (A.AmbQ [setRange r z]) []
+              suc p = A.ConP info (A.AmbQ [setRange r s]) [Arg NotHidden $ unnamed p]
+              info  = A.PatRange r
+              p'    = foldr ($) zero $ genericReplicate n suc
+          return $ foldr (A.AsP info) p' xs
+      _ -> return p
+
 -- | Split a problem at the first constructor of datatype type. Implicit
 --   patterns should have been inserted.
 splitProblem :: Problem -> TCM (Either SplitError SplitProblem)
@@ -55,21 +77,9 @@ splitProblem (Problem ps (perm, qs) tel) = do
     splitP _	    (_:_)	  EmptyTel		 = __IMPOSSIBLE__
     splitP []	     _		  _			 = throwError $ NothingToSplit
     splitP ps	    []		  EmptyTel		 = __IMPOSSIBLE__
-    splitP (p : ps) ((i, q) : qs) tel0@(ExtendTel a tel) =
+    splitP (p : ps) ((i, q) : qs) tel0@(ExtendTel a tel) = do
+      p <- lift $ expandLitPattern p
       case asView $ namedThing $ unArg p of
-	(xs, A.LitP (LitInt r n)) | n < 0     -> __IMPOSSIBLE__
-                                  | n > 20    -> typeError $ GenericError $
-                                                "Matching on natural number literals is done by expanding "
-                                                ++ "the literal to the corresponding constructor pattern, so "
-                                                ++ "you probably don't want to do it this way."
-                                  | otherwise -> do
-          Con z _ <- primZero
-          Con s  _ <- primSuc
-          let zero  = A.ConP info (A.AmbQ [setRange r z]) []
-              suc p = A.ConP info (A.AmbQ [setRange r s]) [Arg NotHidden $ unnamed p]
-              info  = A.PatRange r
-              p'    = fmap (fmap $ const $ foldr ($) zero $ replicate (fromIntegral n) suc) p
-          splitP (p' : ps) ((i, q) : qs) tel0
 	(xs, A.LitP lit)  -> do
 	  b <- lift $ litType lit
 	  ok <- lift $ do
diff --git a/src/full/Agda/TypeChecking/Rules/LHS/Unify.hs b/src/full/Agda/TypeChecking/Rules/LHS/Unify.hs
index 2ca9a15..a6b43ad 100644
--- a/src/full/Agda/TypeChecking/Rules/LHS/Unify.hs
+++ b/src/full/Agda/TypeChecking/Rules/LHS/Unify.hs
@@ -113,7 +113,7 @@ makeSubstitution sub = map val [0..]
 ureduce :: Term -> Unify Term
 ureduce u = do
   rho <- onSub makeSubstitution
-  liftTCM $ etaContract <$> reduce (substs rho u)
+  liftTCM $ etaContract =<< reduce (substs rho u)
 
 -- | Take a substitution σ and ensure that no variables from the domain appear
 --   in the targets. The context of the targets is not changed.
@@ -225,9 +225,7 @@ unifyIndices flex a us vs = liftTCM $ do
     unifyAtom :: Type -> Term -> Term -> Unify ()
     unifyAtom a u v =
       case (u, v) of
-	(Var i us, Var j vs) | i == j  -> do
-	    a <- typeOfBV i
-	    unifyArgs a us vs
+	(Var i us, Var j vs) | i == j  -> addEquality a u v
 	(Var i [], v) | flexible i -> i |->> (v, a)
 	(u, Var j []) | flexible j -> j |->> (u, a)
 	(Con c us, Con c' vs)
diff --git a/src/full/Agda/TypeChecking/Rules/Record.hs b/src/full/Agda/TypeChecking/Rules/Record.hs
index f815a0b..ad66b2c 100644
--- a/src/full/Agda/TypeChecking/Rules/Record.hs
+++ b/src/full/Agda/TypeChecking/Rules/Record.hs
@@ -36,6 +36,12 @@ checkRecDef :: Info.DefInfo -> QName -> [A.LamBinding] -> A.Expr -> [A.Construct
 checkRecDef i name ps contel fields =
   noMutualBlock $ -- records can't be recursive anyway
   traceCall (CheckRecDef (getRange i) (qnameName name) ps fields) $ do
+    reportSDoc "tc.rec" 10 $ vcat
+      [ text "checking record def" <+> prettyTCM name
+      , nest 2 $ text "ps ="     <+> prettyList (map prettyA ps)
+      , nest 2 $ text "contel =" <+> prettyA contel
+      , nest 2 $ text "fields =" <+> prettyA fields
+      ]
     t <- instantiateFull =<< typeOfConst name
     bindParameters ps t $ \tel t0 -> do
       t0' <- normalise t0
diff --git a/src/full/Agda/TypeChecking/Rules/Term.hs b/src/full/Agda/TypeChecking/Rules/Term.hs
index a03827a..28dedec 100644
--- a/src/full/Agda/TypeChecking/Rules/Term.hs
+++ b/src/full/Agda/TypeChecking/Rules/Term.hs
@@ -368,6 +368,8 @@ checkExpr e t =
 	A.Def _    -> __IMPOSSIBLE__
 	A.Con _    -> __IMPOSSIBLE__
 
+        A.ETel _   -> __IMPOSSIBLE__
+
 	A.ScopedExpr scope e -> setScope scope >> checkExpr e t
 
 -- | Infer the type of a head thing (variable, function symbol, or constructor)
@@ -429,7 +431,28 @@ checkHeadApplication e t hd args = do
     HeadCon [c] -> do
       info <- getConstInfo c
       case conInd $ theDef info of
-        Inductive   -> defaultResult
+        Inductive   -> do
+          (f, t0) <- inferHead hd
+          checkArguments' ExpandLast (getRange hd) args t0 t e $ \vs t1 cs -> do
+            TelV eTel eType <- telView <$> normalise t
+            TelV fTel fType <- telView <$> normalise t1
+            blockTerm t (f vs) $ (cs ++) <$> do
+              -- We know that the target type of the constructor (fType)
+              -- does not depend on fTel so we can compare fType and eType
+              -- first.
+                                             -- This will fail
+              when (size eTel > size fTel) $ compareTel CmpLeq eTel fTel >> return ()
+
+              -- If the expected type is a metavariable we have to make
+              -- sure it's instantiated to the proper pi type
+              let (fTel0, fTel1) = telFromList -*- telFromList
+                                 $ splitAt (size eTel)
+                                 $ telToList fTel
+                  fType' = abstract fTel1 fType
+
+              cs1 <- addCtxTel eTel $ leqType fType' eType
+              cs2 <- compareTel CmpLeq eTel fTel0
+              return $ cs1 ++ cs2
         CoInductive -> do
           -- TODO: Handle coinductive constructors under lets.
           lets <- envLetBindings <$> ask
@@ -607,10 +630,18 @@ checkLetBinding b@(A.LetBind i x t e) ret =
 checkLetBinding (A.LetApply i x tel m args rd rm) ret = do
   -- Any variables in the context that doesn't belong to the current
   -- module should go with the new module.
-  fv   <- getDefFreeVars =<< (qnameFromList . mnameToList) <$> currentModule
+  -- fv   <- getDefFreeVars =<< (qnameFromList . mnameToList) <$> currentModule
+  fv   <- getModuleFreeVars =<< currentModule
   n    <- size <$> getContext
   let new = n - fv
   reportSLn "tc.term.let.apply" 10 $ "Applying " ++ show m ++ " with " ++ show new ++ " free variables"
+  reportSDoc "tc.term.let.apply" 20 $ vcat
+    [ text "context =" <+> (prettyTCM =<< getContextTelescope)
+    , text "module  =" <+> (prettyTCM =<< currentModule)
+    , text "fv      =" <+> (text $ show fv)
+    ]
   checkSectionApplication i x tel m args rd rm
   withAnonymousModule x new ret
+-- LetOpen is only used for highlighting and has no semantics
+checkLetBinding A.LetOpen{} ret = ret
 
diff --git a/src/full/Agda/TypeChecking/Serialise.hs b/src/full/Agda/TypeChecking/Serialise.hs
index 57a3446..9f9c242 100644
--- a/src/full/Agda/TypeChecking/Serialise.hs
+++ b/src/full/Agda/TypeChecking/Serialise.hs
@@ -21,6 +21,7 @@ module Agda.TypeChecking.Serialise
   , encodeFile
   , decode
   , decodeFile
+  , EmbPrj
   )
   where
 
@@ -66,7 +67,7 @@ import Agda.Utils.Permutation
 import Agda.Utils.Impossible
 
 currentInterfaceVersion :: Int
-currentInterfaceVersion = 20090312
+currentInterfaceVersion = 20090421 * 10 + 2
 
 type Node = [Int] -- constructor tag (maybe omitted) and arg indices
 
@@ -221,9 +222,9 @@ instance EmbPrj C.QName where
                            valu _      = __IMPOSSIBLE__
 
 instance EmbPrj Scope where
-  icode (Scope a b c) = icode3' a b c
-  value = vcase valu where valu [a, b, c] = valu3 Scope a b c
-                           valu _         = __IMPOSSIBLE__
+  icode (Scope a b c d e f) = icode6' a b c d e f
+  value = vcase valu where valu [a, b, c, d, e, f] = valu6 Scope a b c d e f
+                           valu _                  = __IMPOSSIBLE__
 
 instance EmbPrj Access where
   icode PrivateAccess = icode0 0
diff --git a/src/full/Agda/TypeChecking/With.hs b/src/full/Agda/TypeChecking/With.hs
index bf6b513..5d6e068 100644
--- a/src/full/Agda/TypeChecking/With.hs
+++ b/src/full/Agda/TypeChecking/With.hs
@@ -19,6 +19,7 @@ import Agda.TypeChecking.Reduce
 import Agda.TypeChecking.Primitive hiding (Nat)
 import Agda.TypeChecking.Pretty
 import Agda.TypeChecking.Rules.LHS.Implicit
+import Agda.TypeChecking.Rules.LHS.Split (expandLitPattern)
 import Agda.TypeChecking.Abstract
 import Agda.TypeChecking.EtaContract
 
@@ -35,8 +36,8 @@ showPat (LitP l)    = text (show l)
 
 withFunctionType :: Telescope -> [Term] -> [Type] -> Telescope -> Type -> TCM Type
 withFunctionType delta1 vs as delta2 b = do
-  vas <- etaContract <$> normalise (zip vs as)
-  b   <- etaContract <$> normalise (telePi_ delta2 b)
+  vas <- etaContract =<< normalise (zip vs as)
+  b   <- etaContract =<< normalise (telePi_ delta2 b)
   return $ telePi_ delta1 $ foldr (uncurry piAbstractTerm) b vas
 
 -- | Compute the clauses for the with-function given the original patterns.
@@ -95,12 +96,14 @@ stripWithClausePatterns gamma qs perm ps = do
     strip EmptyTel    (_ : _) _       = __IMPOSSIBLE__
     strip ExtendTel{} []      _       = __IMPOSSIBLE__
     strip EmptyTel    []      []      | 0 == 0 = return []
-    strip (ExtendTel a tel) (p : ps) (q : qs) = do
+    strip (ExtendTel a tel) (p0 : ps) (q : qs) = do
+      p <- expandLitPattern p0
       reportSDoc "tc.with.strip" 15 $ vcat
         [ text "strip"
-        , nest 2 $ text "ps =" <+> fsep (punctuate comma $ map prettyA (p : ps))
-        , nest 2 $ text "qs =" <+> fsep (punctuate comma $ map (showPat . unArg) (q : qs))
-        , nest 2 $ text "tel=" <+> prettyTCM (ExtendTel a tel)
+        , nest 2 $ text "ps  =" <+> fsep (punctuate comma $ map prettyA (p0 : ps))
+        , nest 2 $ text "exp =" <+> prettyA p
+        , nest 2 $ text "qs  =" <+> fsep (punctuate comma $ map (showPat . unArg) (q : qs))
+        , nest 2 $ text "tel =" <+> prettyTCM (ExtendTel a tel)
         ]
       case unArg q of
         VarP _  -> do
@@ -176,7 +179,7 @@ stripWithClausePatterns gamma qs perm ps = do
           A.LitP lit' | lit == lit' -> strip (tel `absApp` Lit lit) ps qs
           _ -> mismatch
       where
-        mismatch = typeError $ WithClausePatternMismatch (namedThing $ unArg p) (unArg q)
+        mismatch = typeError $ WithClausePatternMismatch (namedThing $ unArg p0) (unArg q)
     strip tel ps qs = error $ "huh? " ++ show (size tel) ++ " " ++ show (size ps) ++ " " ++ show (size qs)
 
 -- | Construct the display form for a with function. It will display
diff --git a/src/full/Agda/Utils/Either.hs b/src/full/Agda/Utils/Either.hs
index c4863b9..fdd63f0 100644
--- a/src/full/Agda/Utils/Either.hs
+++ b/src/full/Agda/Utils/Either.hs
@@ -3,24 +3,13 @@
 ------------------------------------------------------------------------
 
 module Agda.Utils.Either
-  ( rights
-  , isLeft, isRight
+  ( isLeft, isRight
   , tests
   ) where
 
 import Control.Arrow
 import Agda.Utils.TestHelpers
 
--- | Extracts the right elements from the list.
-
-rights :: [Either a b] -> [b]
-rights xs = [ x | Right x <- xs ]
-
--- | Extracts the left elements from the list.
-
-lefts :: [Either a b] -> [a]
-lefts xs = [ x | Left x <- xs ]
-
 -- | Returns 'True' iff the argument is @'Right' x@ for some @x at .
 
 isRight :: Either a b -> Bool
diff --git a/src/full/Agda/Utils/FileName.hs b/src/full/Agda/Utils/FileName.hs
index be45c13..ce7f620 100644
--- a/src/full/Agda/Utils/FileName.hs
+++ b/src/full/Agda/Utils/FileName.hs
@@ -83,7 +83,7 @@ prop_splitPath =
 -- | Given a path (not including a file) @'dropDirectory' n@ removes
 -- the last @n@ directories in the path (if any).
 --
--- Precondition: @n '>=' 0 at .
+-- Precondition: @n '>=' 0@, and the path has to be absolute.
 
 dropDirectory :: Integral i => i -> FilePath -> FilePath
 dropDirectory n =
@@ -164,9 +164,12 @@ slashes = ['/']
 --
 -- Nonexisting and existing files are not compared.
 --
--- The size test for existing files is included since the first method
--- may not always give correct results. I would want to check the
--- files' sizes instead of their modification times, but
+-- Note that in the case of existing files the returned file names
+-- are canonicalised.
+--
+-- The modification time test for existing files is included since the
+-- first method may not always give correct results. I would want to
+-- check the files' sizes instead of their modification times, but
 -- "System.Directory" does not contain a function for querying the
 -- size of a file.
 --
diff --git a/src/full/Agda/Utils/Impossible.hs b/src/full/Agda/Utils/Impossible.hs
index 2cbec7c..bad6ea5 100644
--- a/src/full/Agda/Utils/Impossible.hs
+++ b/src/full/Agda/Utils/Impossible.hs
@@ -6,7 +6,7 @@
 
 module Agda.Utils.Impossible where
 
-import Control.Exception
+import Control.OldException
 import Data.Typeable
 
 -- | \"Impossible\" errors, annotated with a file name and a line
diff --git a/src/full/Agda/Utils/TestHelpers.hs b/src/full/Agda/Utils/TestHelpers.hs
index a313b5f..0c7ddad 100644
--- a/src/full/Agda/Utils/TestHelpers.hs
+++ b/src/full/Agda/Utils/TestHelpers.hs
@@ -89,7 +89,7 @@ rightDistributive (*) (+) = \x y z ->
 -- | Generates natural numbers.
 
 natural :: (Integral i) => Gen i
-natural = fmap (abs . fromInteger) arbitrary
+natural = fmap (fromInteger . abs) arbitrary
 
 -- | Generates positive numbers.
 
diff --git a/src/full/Agda/Utils/Trie.hs b/src/full/Agda/Utils/Trie.hs
index 4ef98ab..ee33e3e 100644
--- a/src/full/Agda/Utils/Trie.hs
+++ b/src/full/Agda/Utils/Trie.hs
@@ -1,130 +1,82 @@
------------------------------------------------------------------------------
--- |
--- Module      :  Unstable.Org.Lochan.Trie
--- Copyright   :  (c) Keith Wansbrough 2005
--- License     :  BSD-style
---
--- Maintainer  :  keith.hlib at lochan.org
---             :  modified and extended by Ulf Norell
--- Stability   :  experimental
--- Portability :  portable
---
---  This module provides a very basic implementation of the Trie data type,
---  with no great concern for efficiency, or for completeness of API.
---
------------------------------------------------------------------------------
 
 module Agda.Utils.Trie
-    (
-    -- * Data type
-    Trie,
-    -- * Constructors
-    empty, singleton, union, unionWith,
-    insert, insertWith,
-    -- * Primitive accessors and mutators
-    value, children, value_u, children_u,
-    lookup, lookupPath,
-    -- * Basic operations
-    preOrder, upwards, downwards,
-    -- * Derived operations
-    takeWhile, takeWhile_V, fringe,
-    ) where
-
-
-import Prelude hiding (takeWhile, lookup)
+  ( Trie
+  , empty, singleton, insert, lookupPath, union
+  ) where
+
+import Control.Applicative hiding (empty)
+import Control.Monad (mplus)
+import Data.Function
+import Data.List (nubBy, sortBy, isPrefixOf)
 import Data.Map (Map)
 import qualified Data.Map as Map
-import Data.Maybe
-import Control.Monad
+import Test.QuickCheck
 
--- |A Trie with key elements of type @k@ (keys of type @[k]@) and values of type @v at .
-data Trie k v = Trie { value    :: Maybe v
-                     , children :: Map k (Trie k v)
-                     }
+data Trie k v = Trie (Maybe v) (Map k (Trie k v))
   deriving Show
 
--- |Modify the 'children' field of a trie.
-value_u :: (Maybe v -> Maybe v) -> Trie k v -> Trie k v
-value_u f p = p { value = f (value p) }
-
--- |Modify the 'children' field of a trie.
-children_u :: (Map k (Trie k v) -> Map k (Trie k v)) -> Trie k v -> Trie k v
-children_u f p = p { children = f (children p) }
-
--- |The empty trie.
 empty :: Trie k v
-empty = Trie { value = Nothing, children = Map.empty }
+empty = Trie Nothing Map.empty
 
--- |The singleton trie.
-singleton :: Ord k => [k] -> v -> Trie k v
-singleton [] x     = Trie { value = Just x, children = Map.empty }
-singleton (k:ks) x = Trie { value = Nothing, children = Map.singleton k (singleton ks x) }
+singleton :: [k] -> v -> Trie k v
+singleton []     v = Trie (Just v) Map.empty
+singleton (x:xs) v = Trie Nothing $ Map.singleton x (singleton xs v)
 
--- |Combining two tries.  The first shadows the second.
+-- | Left biased union.
 union :: Ord k => Trie k v -> Trie k v -> Trie k v
-union p1 p2 =
-    Trie {
-          value    = mplus (value p1) (value p2),
-          children = Map.unionWith union (children p1) (children p2)
-         }
-
--- |Combining two tries.  If the two define the same key, the
--- specified combining function is used.
-unionWith :: Ord k => (v -> v -> v) -> Trie k v -> Trie k v -> Trie k v
-unionWith f p1 p2 =
-    Trie { value    = lift f (value p1) (value p2)
-         , children = Map.unionWith (unionWith f) (children p1) (children p2)
-         }
-    where lift _ Nothing y = y
-          lift _ x Nothing = x
-          lift _ (Just x) (Just y) = Just (f x y)
-
-
--- |Insertion.
+union (Trie v ss) (Trie w ts) =
+  Trie (v `mplus` w) (Map.unionWith union ss ts)
+
 insert :: Ord k => [k] -> v -> Trie k v -> Trie k v
 insert k v t = union (singleton k v) t
 
-insertWith :: Ord k => (v -> v -> v) -> [k] -> v -> Trie k v -> Trie k v
-insertWith f k v t = unionWith f (singleton k v) t
-
--- |Lookup an element.
-lookup :: Ord k => [k] -> Trie k v -> Maybe v
-lookup []       t = value t
-lookup (k : ks) t = lookup ks =<< Map.lookup k (children t)
-
--- |Lookup and return all values on the path.
 lookupPath :: Ord k => [k] -> Trie k v -> [v]
-lookupPath ks t = case ks of
-  []     -> list $ value t
-  k : ks -> concat $ list (value t) : list (fmap (lookupPath ks) (Map.lookup k $ children t))
+lookupPath xs (Trie v cs) = case xs of
+    []     -> val v
+    x : xs -> val v ++ maybe [] (lookupPath xs) (Map.lookup x cs)
   where
-    list = maybe [] (:[])
+    val = maybe [] (:[])
+
+-- Tests ------------------------------------------------------------------
+
+newtype Key = Key Int
+  deriving (Eq, Ord)
+
+newtype Val = Val Int
+  deriving (Eq)
+
+newtype Model = Model [([Key], Val)]
+  deriving (Eq, Show)
+
+instance Show Key where
+  show (Key x) = show x
 
--- |Enumerate all (key,value) pairs, in preorder.
-preOrder :: Ord k => [k] -> Trie k v -> [([k],v)]
-preOrder ks p = getNode p
-                ++ concatMap (\(k,p') -> preOrder (ks++[k]) p')
-                             (Map.toList (children p))
-    where getNode p = maybe [] (\ v -> [(ks,v)]) (value p)
+instance Show Val where
+  show (Val x) = show x
 
--- |An upwards accumulation on the trie.
-upwards :: Ord k => (Trie k v -> Trie k v) -> Trie k v -> Trie k v
-upwards f = f . children_u (Map.map (upwards f))
+instance Arbitrary Key where
+  arbitrary = elements $ map Key [1..2]
+  shrink (Key x) = Key <$> shrink x
 
--- |A downwards accumulation on the trie.
-downwards :: Ord k => (Trie k v -> Trie k v) -> Trie k v -> Trie k v
-downwards f = children_u (Map.map (downwards f)) . f
+instance Arbitrary Val where
+  arbitrary = elements $ map Val [1..3]
+  shrink (Val x) = Val <$> shrink x
 
--- |Return the prefix of the trie satisfying @f at .
-takeWhile :: Ord k => (Trie k v -> Bool) -> Trie k v -> Trie k v
-takeWhile f = downwards (children_u (Map.filter f))
+instance Arbitrary Model where
+  arbitrary = Model <$> arbitrary
+  shrink (Model xs) = Model <$> shrink xs
 
--- |Return the prefix of the trie satisfying @f@ on all values present.
-takeWhile_V :: Ord k => (v -> Bool) -> Trie k v -> Trie k v
-takeWhile_V f = takeWhile (maybe True f . value)
+modelToTrie :: Model -> Trie Key Val
+modelToTrie (Model xs) = foldr (uncurry insert) empty xs
 
--- |Return the fringe of the trie (the trie composed of only the leaf nodes).
-fringe :: Ord k => Trie k v -> Trie k v
-fringe = upwards (\ p -> if Map.null (children p) then p else value_u (const Nothing) p)
+modelPath :: [Key] -> Model -> [Val]
+modelPath ks (Model xs) =
+  map snd
+  $ sortBy (compare `on` length . fst)
+  $ nubBy ((==) `on` fst)
+  $ filter (flip isPrefixOf ks . fst) xs
 
+prop_path ks m =
+  collect (length $ modelPath ks m) $
+  lookupPath ks (modelToTrie m) == modelPath ks m
 
diff --git a/src/full/Agda/Utils/Unicode.hs b/src/full/Agda/Utils/Unicode.hs
index ab89853..f15642c 100644
--- a/src/full/Agda/Utils/Unicode.hs
+++ b/src/full/Agda/Utils/Unicode.hs
@@ -11,7 +11,8 @@ import Data.Char
 isUnicodeId :: Char -> Bool
 isUnicodeId c = isPrint c && not (isAscii c)
 
--- | Converts all Unicode line endings into '\n'.
+-- | Converts many character sequences which may be interpreted as
+-- line or paragraph separators into '\n'.
 
 convertLineEndings :: String -> String
 convertLineEndings ('\x000D' : '\x000A' : s) = '\n' : convertLineEndings s

-- 
Packaging for Agda



More information about the Pkg-haskell-commits mailing list