packages feed

rzk 0.11.3 → 0.11.4

raw patch · 292 files changed

+8943/−3766 lines, 292 filesdep ~free-foilPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: free-foil

API changes (from Hackage documentation)

+ Language.Rzk.Foil.Syntax: instance Data.ZipMatchK.Generic.ZipMatchFoldK Language.Rzk.Foil.Syntax.LambdaParam
+ Language.Rzk.Foil.Syntax: instance Data.ZipMatchK.Generic.ZipMatchFoldK Language.Rzk.Foil.Syntax.TermSig
+ Language.Rzk.Syntax.Abs: MatchModal :: a -> Modality' a -> Term' a -> [MatchBranch' a] -> Term' a
+ Language.Rzk.Syntax.Abs: MatchModalInto :: a -> Modality' a -> Term' a -> Term' a -> [MatchBranch' a] -> Term' a
+ Language.Rzk.Syntax.Par: pTerm8 :: [Token] -> Err Term
+ Rzk.Diagnostic: HoleDataEntry :: String -> String -> HoleModalData -> HoleDataEntry
+ Rzk.Diagnostic: HoleDataTope :: String -> HoleModalData -> HoleDataTope
+ Rzk.Diagnostic: HoleModalData :: String -> String -> Bool -> HoleModalData
+ Rzk.Diagnostic: [holeDataEntryMode] :: HoleDataEntry -> HoleModalData
+ Rzk.Diagnostic: [holeDataEntryName] :: HoleDataEntry -> String
+ Rzk.Diagnostic: [holeDataEntryType] :: HoleDataEntry -> String
+ Rzk.Diagnostic: [holeDataTopeMode] :: HoleDataTope -> HoleModalData
+ Rzk.Diagnostic: [holeDataTopeValue] :: HoleDataTope -> String
+ Rzk.Diagnostic: [holeModalAccessible] :: HoleModalData -> Bool
+ Rzk.Diagnostic: [holeModalLocks] :: HoleModalData -> String
+ Rzk.Diagnostic: [holeModalModality] :: HoleModalData -> String
+ Rzk.Diagnostic: data HoleDataEntry
+ Rzk.Diagnostic: data HoleDataTope
+ Rzk.Diagnostic: data HoleModalData
+ Rzk.Diagnostic: instance GHC.Classes.Eq Rzk.Diagnostic.HoleDataEntry
+ Rzk.Diagnostic: instance GHC.Classes.Eq Rzk.Diagnostic.HoleDataTope
+ Rzk.Diagnostic: instance GHC.Classes.Eq Rzk.Diagnostic.HoleModalData
+ Rzk.Diagnostic: instance GHC.Show.Show Rzk.Diagnostic.HoleDataEntry
+ Rzk.Diagnostic: instance GHC.Show.Show Rzk.Diagnostic.HoleDataTope
+ Rzk.Diagnostic: instance GHC.Show.Show Rzk.Diagnostic.HoleModalData
+ Rzk.TypeCheck.Context: RSTTSafeError :: RSTTSafeMode
+ Rzk.TypeCheck.Context: RSTTSafeOff :: RSTTSafeMode
+ Rzk.TypeCheck.Context: RSTTSafeWarn :: RSTTSafeMode
+ Rzk.TypeCheck.Context: SchematicChecked :: SchematicStatus
+ Rzk.TypeCheck.Context: SchematicRejected :: SchematicStatus
+ Rzk.TypeCheck.Context: SchematicUnchecked :: SchematicStatus
+ Rzk.TypeCheck.Context: [ctxRSTTSafeOverride] :: Context (n :: S) -> Maybe RSTTSafeMode
+ Rzk.TypeCheck.Context: [ctxRSTTSafe] :: Context (n :: S) -> RSTTSafeMode
+ Rzk.TypeCheck.Context: [ctxStandaloneWarnFreeStandingRestriction] :: Context (n :: S) -> Bool
+ Rzk.TypeCheck.Context: [ctxStandaloneWarnMetaBinder] :: Context (n :: S) -> Bool
+ Rzk.TypeCheck.Context: [ctxStandaloneWarnShapeDependency] :: Context (n :: S) -> Bool
+ Rzk.TypeCheck.Context: [ctxWarnTopeFamilyDomain] :: Context (n :: S) -> Bool
+ Rzk.TypeCheck.Context: [varSchematicStatus] :: VarInfo (n :: S) -> SchematicStatus
+ Rzk.TypeCheck.Context: ctxWarnFreeStandingRestriction :: forall (n :: S). Context n -> Bool
+ Rzk.TypeCheck.Context: ctxWarnMetaBinder :: forall (n :: S). Context n -> Bool
+ Rzk.TypeCheck.Context: ctxWarnShapeDependency :: forall (n :: S). Context n -> Bool
+ Rzk.TypeCheck.Context: data RSTTSafeMode
+ Rzk.TypeCheck.Context: data SchematicStatus
+ Rzk.TypeCheck.Context: effectiveMetaPrefixSensitivity :: forall (n :: S). Context n -> MetaPrefixSensitivity
+ Rzk.TypeCheck.Context: instance GHC.Classes.Eq Rzk.TypeCheck.Context.RSTTSafeMode
+ Rzk.TypeCheck.Context: instance GHC.Classes.Eq Rzk.TypeCheck.Context.SchematicStatus
+ Rzk.TypeCheck.Context: instance GHC.Read.Read Rzk.TypeCheck.Context.RSTTSafeMode
+ Rzk.TypeCheck.Context: instance GHC.Show.Show Rzk.TypeCheck.Context.RSTTSafeMode
+ Rzk.TypeCheck.Context: isVarAccessible :: forall (n :: S). VarInfo n -> Bool
+ Rzk.TypeCheck.Context: rsttSafeEnabled :: forall (n :: S). Context n -> Bool
+ Rzk.TypeCheck.Context: rsttSafeMode :: forall (n :: S). Context n -> RSTTSafeMode
+ Rzk.TypeCheck.Decl: checkDataConFieldLayers :: forall (n :: S). Distinct n => VarIdent -> Int -> [ParamDecl] -> TermT n -> TypeCheck n ()
+ Rzk.TypeCheck.Decl: checkDataSortLayers :: forall (n :: S). Distinct n => [ParamDecl] -> [SortIndex] -> TermT n -> TypeCheck n ()
+ Rzk.TypeCheck.Decl: elaborateChecked :: forall (n :: S). Distinct n => Term -> TypeCheck n (Term n)
+ Rzk.TypeCheck.Decl.Data: [esModality] :: ElimSpec -> TModality
+ Rzk.TypeCheck.Decl.Data: elimIdent :: Text -> TModality -> VarIdent -> VarIdent
+ Rzk.TypeCheck.Decl.Data: modalityPrefix :: TModality -> Text
+ Rzk.TypeCheck.Decl.Data: modalizeParamDecl :: TModality -> ParamDecl -> ParamDecl
+ Rzk.TypeCheck.Decl.Data: surfaceArrowModal :: TModality -> Term -> Term -> Term
+ Rzk.TypeCheck.Decl.Data: surfacePiModal :: TModality -> VarIdent -> Term -> Term -> Term
+ Rzk.TypeCheck.Error: MismatchFunctionType :: ModalityMismatchSite
+ Rzk.TypeCheck.Error: MismatchLambda :: ModalityMismatchSite
+ Rzk.TypeCheck.Error: MismatchLambdaParameter :: Binder -> ModalityMismatchSite
+ Rzk.TypeCheck.Error: MismatchModalElimination :: ModalityMismatchSite
+ Rzk.TypeCheck.Error: MismatchModalIntroduction :: ModalityMismatchSite
+ Rzk.TypeCheck.Error: MismatchSigmaType :: ModalityMismatchSite
+ Rzk.TypeCheck.Error: ModalTypeForElimination :: ModalTypeExpectation
+ Rzk.TypeCheck.Error: ModalTypeForIntroduction :: ModalTypeExpectation
+ Rzk.TypeCheck.Error: SchematicDependency :: SchematicProblem
+ Rzk.TypeCheck.Error: SchematicKindMismatch :: SchematicProblem
+ Rzk.TypeCheck.Error: SchematicUnsupported :: SchematicProblem
+ Rzk.TypeCheck.Error: TypeErrorRSTT :: String -> TypeError (n :: S)
+ Rzk.TypeCheck.Error: TypeErrorSchematic :: SchematicProblem -> String -> TypeError (n :: S)
+ Rzk.TypeCheck.Error: data ModalTypeExpectation
+ Rzk.TypeCheck.Error: data ModalityMismatchSite
+ Rzk.TypeCheck.Error: data SchematicProblem
+ Rzk.TypeCheck.Error: instance GHC.Classes.Eq Rzk.TypeCheck.Error.SchematicProblem
+ Rzk.TypeCheck.Eval: DomainCubeFamily :: DomainKind
+ Rzk.TypeCheck.Eval: DomainCubePoint :: DomainKind
+ Rzk.TypeCheck.Eval: DomainCubeUniverse :: DomainKind
+ Rzk.TypeCheck.Eval: DomainModalTope :: DomainKind
+ Rzk.TypeCheck.Eval: DomainOtherTopeFamily :: DomainKind
+ Rzk.TypeCheck.Eval: DomainTopeFamily :: DomainKind
+ Rzk.TypeCheck.Eval: DomainTopeUniverse :: DomainKind
+ Rzk.TypeCheck.Eval: DomainType :: DomainKind
+ Rzk.TypeCheck.Eval: classifyDomain :: forall (n :: S). Distinct n => TermT n -> TypeCheck n DomainKind
+ Rzk.TypeCheck.Eval: data DomainKind
+ Rzk.TypeCheck.Eval: domainKindName :: DomainKind -> String
+ Rzk.TypeCheck.Eval: ensureTypeAtU :: forall (n :: S). Distinct n => String -> TermT n -> TypeCheck n ()
+ Rzk.TypeCheck.Eval: extractModal :: forall (n :: S). Distinct n => TModality -> TModality -> TermT n -> TypeCheck n (Maybe (TermT n))
+ Rzk.TypeCheck.Eval: requireTypeUnderModal :: forall (n :: S). Distinct n => TModality -> TermT n -> TypeCheck n (TermT n)
+ Rzk.TypeCheck.Eval: typeUnderModal :: forall (n :: S). TModality -> TermT n -> Maybe (TermT n)
+ Rzk.TypeCheck.Eval: valueUnderModal :: forall (n :: S). TModality -> TermT n -> Maybe (TermT n)
+ Rzk.TypeCheck.Fragment.RSTT: fragmentHead :: forall (n :: S). Distinct n => Int -> TermT n -> TypeCheck n (TermT n)
+ Rzk.TypeCheck.Fragment.RSTT: instance GHC.Classes.Eq Rzk.TypeCheck.Fragment.RSTT.FragmentView
+ Rzk.TypeCheck.Fragment.RSTT: instance GHC.Classes.Eq Rzk.TypeCheck.Fragment.RSTT.PrefixPosition
+ Rzk.TypeCheck.Fragment.RSTT: recordFragmentUses :: forall (n :: S). Distinct n => VarIdent -> TermT n -> Maybe (TermT n) -> Bool -> TypeCheck n ()
+ Rzk.TypeCheck.Fragment.RSTT: recordSyntaxUses :: forall (n :: S). Distinct n => Term n -> TypeCheck n ()
+ Rzk.TypeCheck.Judgements: inferDirectedPoint :: forall (n :: S). Distinct n => Term n -> TypeCheck n (TermT n)
+ Rzk.TypeCheck.Judgements: inferPoint :: forall (n :: S). Distinct n => Term n -> TypeCheck n (TermT n)
+ Rzk.TypeCheck.Judgements: modalizeTope :: forall (n :: S). TModality -> TermT n -> TermT n
+ Rzk.TypeCheck.Monad: FreeStandingRestrictionWarning :: VarIdent -> String -> FragmentUse -> Maybe LocationInfo -> CheckWarning
+ Rzk.TypeCheck.Monad: HoleModalInfo :: TModality -> TModality -> Bool -> HoleModalInfo
+ Rzk.TypeCheck.Monad: HoleTopeEntry :: Rendered -> HoleModalInfo -> HoleTopeEntry
+ Rzk.TypeCheck.Monad: MetaBinderWarning :: VarIdent -> VarIdent -> String -> Maybe LocationInfo -> CheckWarning
+ Rzk.TypeCheck.Monad: OverhangWarning :: String -> String -> [String] -> Maybe LocationInfo -> CheckWarning
+ Rzk.TypeCheck.Monad: RSTTHoleWarning :: Maybe LocationInfo -> CheckWarning
+ Rzk.TypeCheck.Monad: RSTTIncompleteWarning :: String -> Maybe LocationInfo -> CheckWarning
+ Rzk.TypeCheck.Monad: RSTTInductive :: RSTTExtension
+ Rzk.TypeCheck.Monad: RSTTInterval :: RSTTExtension
+ Rzk.TypeCheck.Monad: RSTTModal :: RSTTExtension
+ Rzk.TypeCheck.Monad: RSTTSchematic :: RSTTExtension
+ Rzk.TypeCheck.Monad: RSTTScopeWarning :: RSTTExtension -> String -> Maybe LocationInfo -> CheckWarning
+ Rzk.TypeCheck.Monad: RSTTShapeDependency :: RSTTExtension
+ Rzk.TypeCheck.Monad: RSTTUnsupported :: RSTTExtension
+ Rzk.TypeCheck.Monad: TopeFamilyDomainWarning :: String -> String -> Maybe LocationInfo -> CheckWarning
+ Rzk.TypeCheck.Monad: UseBinder :: FragmentUse
+ Rzk.TypeCheck.Monad: UseConcluded :: FragmentUse
+ Rzk.TypeCheck.Monad: UseData :: FragmentUse
+ Rzk.TypeCheck.Monad: UseIdentity :: FragmentUse
+ Rzk.TypeCheck.Monad: UseMotive :: FragmentUse
+ Rzk.TypeCheck.Monad: [holeEntryMode] :: HoleEntry -> HoleModalInfo
+ Rzk.TypeCheck.Monad: [holeItemAccessible] :: HoleModalInfo -> Bool
+ Rzk.TypeCheck.Monad: [holeItemLocks] :: HoleModalInfo -> TModality
+ Rzk.TypeCheck.Monad: [holeItemModality] :: HoleModalInfo -> TModality
+ Rzk.TypeCheck.Monad: [holeTopeMode] :: HoleTopeEntry -> HoleModalInfo
+ Rzk.TypeCheck.Monad: [holeTopeValue] :: HoleTopeEntry -> Rendered
+ Rzk.TypeCheck.Monad: [logSchematicCache] :: CheckLog -> IntSet
+ Rzk.TypeCheck.Monad: [logSchematicObjectFamilies] :: CheckLog -> IntMap (Maybe Int)
+ Rzk.TypeCheck.Monad: data FragmentUse
+ Rzk.TypeCheck.Monad: data HoleModalInfo
+ Rzk.TypeCheck.Monad: data HoleTopeEntry
+ Rzk.TypeCheck.Monad: data RSTTExtension
+ Rzk.TypeCheck.Monad: instance GHC.Classes.Eq Rzk.TypeCheck.Monad.FragmentUse
+ Rzk.TypeCheck.Monad: instance GHC.Classes.Eq Rzk.TypeCheck.Monad.HoleModalInfo
+ Rzk.TypeCheck.Monad: instance GHC.Classes.Eq Rzk.TypeCheck.Monad.HoleTopeEntry
+ Rzk.TypeCheck.Monad: instance GHC.Classes.Eq Rzk.TypeCheck.Monad.RSTTExtension
+ Rzk.TypeCheck.Monad: instance GHC.Show.Show Rzk.TypeCheck.Monad.FragmentUse
+ Rzk.TypeCheck.Monad: instance GHC.Show.Show Rzk.TypeCheck.Monad.HoleModalInfo
+ Rzk.TypeCheck.Monad: instance GHC.Show.Show Rzk.TypeCheck.Monad.HoleTopeEntry
+ Rzk.TypeCheck.Monad: instance GHC.Show.Show Rzk.TypeCheck.Monad.RSTTExtension
+ Rzk.TypeCheck.Monad: localWarnFreeStandingRestriction :: forall (n :: S) a. Bool -> TypeCheck n a -> TypeCheck n a
+ Rzk.TypeCheck.Monad: localWarnMetaBinder :: forall (n :: S) a. Bool -> TypeCheck n a -> TypeCheck n a
+ Rzk.TypeCheck.Monad: localWarnShapeDependency :: forall (n :: S) a. Bool -> TypeCheck n a -> TypeCheck n a
+ Rzk.TypeCheck.Monad: localWarnTopeFamilyDomain :: forall (n :: S) a. Bool -> TypeCheck n a -> TypeCheck n a
+ Rzk.TypeCheck.Monad: reportIncompleteRSTTCheck :: forall (n :: S). Distinct n => String -> TypeErrorInScopedContext -> TypeCheck n ()
+ Rzk.TypeCheck.Monad: rsttViolation :: CheckWarning -> Maybe String
+ Rzk.TypeCheck.Schematic: checkSchematicDeclaration :: forall (n :: S). Distinct n => TermT n -> Maybe (TermT n) -> TypeCheck n (CheckedSchematicDeclaration n)
+ Rzk.TypeCheck.Schematic: data CheckedSchematicDeclaration (n :: S)
+ Rzk.TypeCheck.Schematic: data SchematicStatement (n :: S)
+ Rzk.TypeCheck.Schematic: instance GHC.Classes.Eq Rzk.TypeCheck.Schematic.Sort
+ Rzk.TypeCheck.Schematic: recordSchematicDeclaration :: forall (n :: S). Distinct n => VarIdent -> TermT n -> Maybe (TermT n) -> TypeCheck n SchematicStatus
- Language.Rzk.Foil.Syntax: MatchF :: term -> Maybe term -> [(VarIdent, term)] -> TermSig scope term
+ Language.Rzk.Foil.Syntax: MatchF :: TModality -> term -> Maybe term -> [(VarIdent, term)] -> TermSig scope term
- Language.Rzk.Foil.Syntax: pattern Match :: Term n -> Maybe (Term n) -> [(VarIdent, Term n)] -> Term n
+ Language.Rzk.Foil.Syntax: pattern Match :: TModality -> Term n -> Maybe (Term n) -> [(VarIdent, Term n)] -> Term n
- Language.Rzk.Foil.Syntax: pattern MatchT :: forall {binder} {ann} {n}. ann (AST binder (AnnSig ann TermSig) n) -> AST binder (AnnSig ann TermSig) n -> Maybe (AST binder (AnnSig ann TermSig) n) -> [(VarIdent, AST binder (AnnSig ann TermSig) n)] -> AST binder (AnnSig ann TermSig) n
+ Language.Rzk.Foil.Syntax: pattern MatchT :: forall {binder} {ann} {n}. ann (AST binder (AnnSig ann TermSig) n) -> TModality -> AST binder (AnnSig ann TermSig) n -> Maybe (AST binder (AnnSig ann TermSig) n) -> [(VarIdent, AST binder (AnnSig ann TermSig) n)] -> AST binder (AnnSig ann TermSig) n
- Rzk.Diagnostic: HoleData :: Maybe String -> String -> Maybe (String, String) -> [(String, String)] -> [(String, String)] -> [String] -> HoleData
+ Rzk.Diagnostic: HoleData :: Maybe String -> String -> Maybe (String, String) -> [HoleDataEntry] -> [HoleDataEntry] -> [HoleDataTope] -> HoleData
- Rzk.Diagnostic: [holeDataCubeVars] :: HoleData -> [(String, String)]
+ Rzk.Diagnostic: [holeDataCubeVars] :: HoleData -> [HoleDataEntry]
- Rzk.Diagnostic: [holeDataTermVars] :: HoleData -> [(String, String)]
+ Rzk.Diagnostic: [holeDataTermVars] :: HoleData -> [HoleDataEntry]
- Rzk.Diagnostic: [holeDataTopes] :: HoleData -> [String]
+ Rzk.Diagnostic: [holeDataTopes] :: HoleData -> [HoleDataTope]
- Rzk.TypeCheck.Context: Context :: Scope n -> NameMap n (VarInfo n) -> Map VarIdent (Name n) -> [Name n] -> [SectionInfo n] -> [ModalTope n] -> [ModalTope n] -> [ModalTope n] -> [[ModalTope n]] -> Maybe Bool -> CachedSaturation n -> Map VarIdent [VarIdent] -> [Action n] -> Int -> Maybe Command -> Maybe LocationInfo -> Verbosity -> Covariance -> Maybe RenderBackend -> Bool -> Bool -> Bool -> [VarIdent] -> Bool -> MetaPrefixSensitivity -> Context (n :: S)
+ Rzk.TypeCheck.Context: Context :: Scope n -> NameMap n (VarInfo n) -> Map VarIdent (Name n) -> [Name n] -> [SectionInfo n] -> [ModalTope n] -> [ModalTope n] -> [ModalTope n] -> [[ModalTope n]] -> Maybe Bool -> CachedSaturation n -> Map VarIdent [VarIdent] -> [Action n] -> Int -> Maybe Command -> Maybe LocationInfo -> Verbosity -> Covariance -> Maybe RenderBackend -> Bool -> Bool -> Bool -> [VarIdent] -> RSTTSafeMode -> Maybe RSTTSafeMode -> Bool -> MetaPrefixSensitivity -> Bool -> Bool -> Bool -> Bool -> Context (n :: S)
- Rzk.TypeCheck.Context: DataElimKind :: Int -> Int -> ElimKind -> DataRoleKind
+ Rzk.TypeCheck.Context: DataElimKind :: TModality -> Int -> Int -> ElimKind -> DataRoleKind
- Rzk.TypeCheck.Context: VarInfo :: TermT n -> Maybe (TermT n) -> TModality -> TModality -> Binder -> Bool -> Bool -> [Name n] -> Maybe LocationInfo -> Maybe (DataRole n) -> Int -> VarInfo (n :: S)
+ Rzk.TypeCheck.Context: VarInfo :: SchematicStatus -> TermT n -> Maybe (TermT n) -> TModality -> TModality -> Binder -> Bool -> Bool -> [Name n] -> Maybe LocationInfo -> Maybe (DataRole n) -> Int -> VarInfo (n :: S)
- Rzk.TypeCheck.Decl.Data: ElimSpec :: VarIdent -> [VarIdent] -> [ParamDecl] -> [VarIdent] -> [ParamDecl] -> VarIdent -> VarIdent -> [VarIdent] -> Maybe [VarIdent] -> VarIdent -> VarIdent -> VarIdent -> [DataConSurface] -> [Maybe ((Term, Term), (Term, Term))] -> ElimSpec
+ Rzk.TypeCheck.Decl.Data: ElimSpec :: VarIdent -> TModality -> [VarIdent] -> [ParamDecl] -> [VarIdent] -> [ParamDecl] -> VarIdent -> VarIdent -> [VarIdent] -> Maybe [VarIdent] -> VarIdent -> VarIdent -> VarIdent -> [DataConSurface] -> [Maybe ((Term, Term), (Term, Term))] -> ElimSpec
- Rzk.TypeCheck.Error: TypeErrorModalityMismatch :: TModality -> TModality -> Term n -> TypeError (n :: S)
+ Rzk.TypeCheck.Error: TypeErrorModalityMismatch :: ModalityMismatchSite -> TModality -> TModality -> Maybe (Term n) -> TypeError (n :: S)
- Rzk.TypeCheck.Error: TypeErrorNotModal :: Term n -> TModality -> TermT n -> TypeError (n :: S)
+ Rzk.TypeCheck.Error: TypeErrorNotModal :: ModalTypeExpectation -> Term n -> TModality -> TermT n -> TypeError (n :: S)
- Rzk.TypeCheck.Error: TypeErrorNotTypeInModal :: TermT n -> TypeError (n :: S)
+ Rzk.TypeCheck.Error: TypeErrorNotTypeInModal :: TModality -> Term n -> TermT n -> TypeError (n :: S)
- Rzk.TypeCheck.Judgements: checkMatch :: forall (n :: S). Distinct n => Term n -> Term n -> Maybe (Term n) -> [(VarIdent, Term n)] -> Maybe (TermT n) -> TypeCheck n (TermT n)
+ Rzk.TypeCheck.Judgements: checkMatch :: forall (n :: S). Distinct n => Term n -> TModality -> Term n -> Maybe (Term n) -> [(VarIdent, Term n)] -> Maybe (TermT n) -> TypeCheck n (TermT n)
- Rzk.TypeCheck.Monad: CheckLog :: [HoleInfo] -> [CheckWarning] -> CheckLog
+ Rzk.TypeCheck.Monad: CheckLog :: [HoleInfo] -> [CheckWarning] -> IntSet -> IntMap (Maybe Int) -> CheckLog
- Rzk.TypeCheck.Monad: HoleEntry :: VarIdent -> Rendered -> HoleEntry
+ Rzk.TypeCheck.Monad: HoleEntry :: VarIdent -> Rendered -> HoleModalInfo -> HoleEntry
- Rzk.TypeCheck.Monad: HoleInfo :: Maybe VarIdent -> Rendered -> Maybe (VarIdent, Rendered) -> [HoleEntry] -> [HoleEntry] -> [Rendered] -> [Rendered] -> [Rendered] -> Maybe String -> Maybe LocationInfo -> HoleInfo
+ Rzk.TypeCheck.Monad: HoleInfo :: Maybe VarIdent -> Rendered -> Maybe (VarIdent, Rendered) -> [HoleEntry] -> [HoleEntry] -> [HoleTopeEntry] -> [Rendered] -> [Rendered] -> Maybe String -> Maybe LocationInfo -> HoleInfo
- Rzk.TypeCheck.Monad: [holeTopes] :: HoleInfo -> [Rendered]
+ Rzk.TypeCheck.Monad: [holeTopes] :: HoleInfo -> [HoleTopeEntry]
- Rzk.TypeCheck.Monad: recordCheckWarning :: forall (n :: S). CheckWarning -> TypeCheck n ()
+ Rzk.TypeCheck.Monad: recordCheckWarning :: forall (n :: S). Distinct n => CheckWarning -> TypeCheck n ()
- Rzk.TypeCheck.Monad: recordHoleInfo :: forall (n :: S). HoleInfo -> TypeCheck n ()
+ Rzk.TypeCheck.Monad: recordHoleInfo :: forall (n :: S). Distinct n => HoleInfo -> TypeCheck n ()

Files

ChangeLog.md view
@@ -6,6 +6,42 @@ and this project adheres to the [Haskell Package Versioning Policy](https://pvp.haskell.org/). +## v0.11.4 — 2026-11-04++This release closes a soundness gap in tope families, adds an RSTT-safe mode that reports what lies outside Riehl–Shulman type theory, and adds a modal `#!rzk match`. One rule now decides which kinds may appear where. Some programs that were accepted before are now rejected, and each such change is marked **Breaking** below. sHoTT still typechecks.++Added:++- **RSTT-safe mode** (see [#364](https://github.com/rzk-lang/rzk/pull/364)). With `rstt-safe = "warn"`, rzk reports declarations outside Riehl–Shulman type theory and outside the fragment in which conservativity is proved: assumed free-standing restrictions, boundaries that depend on outer cube points, a universe used as an ordinary type (as in Hurkens's paradox), holes, and syntax outside RSTT (modalities, auxiliary intervals, inductive types). With `"error"` such declarations are rejected, and `--rstt-safe` on the command line overrides the source settings. The mode is off by default (see [#372](https://github.com/rzk-lang/rzk/pull/372)), since its checks make sHoTT take 5.9 s instead of 1.6 s. For the same reason, the standalone `warn-shape-dependency` check is off by default too.++- **Modal `#!rzk match`**, by [Islam Talipov](https://github.com/LIshy2) (see [#358](https://github.com/rzk-lang/rzk/pull/358)). `#!rzk match ♭ n (…)` eliminates a scrutinee available under `♭` or `ᵒᵖ`, and the constructor fields inherit the modality. These are Shulman's crisp induction principles, and there are none for `♯`. A `#!rzk #data` without path constructors also generates `ind-op-D`, `rec-op-D`, `ind-b-D`, and `rec-b-D`. **Breaking**: `#!rzk match mod μ x (…)` is a syntax error (write `#!rzk match (mod μ x) (…)`), and an earlier definition with one of the four new names now clashes.++- **A warning for a tope family not included in its domain** (see [#362](https://github.com/rzk-lang/rzk/pull/362)). Such a family is read as its intersection with the domain. This is convenient to write (sHoTT writes the faces of a horn on the whole cube), but the family checked is not the one written.++Changed:++- **The layer discipline** (see [#354](https://github.com/rzk-lang/rzk/pull/354)). One rule per position now decides, on the elaborated form, which kinds may appear in `#!rzk #data`. A parameter may be a type, `#!rzk CUBE`, a tope family, a modal kind, or (as suggested by Islam Talipov) a bare tope `#!rzk (ψ : TOPE)`. An index must be a type. A field may be a type, a cube point, or a shape point in any spelling, such as `#!rzk (t : 2 | ⊤)` or `#!rzk (t :♭ Δ¹)`. **Breaking**: cubes, topes, and tope families are no longer accepted as fields or indices, points not as parameters, and no universe kind as a Σ component, an identity carrier, a definition at type `#!rzk U`, or an argument at type `#!rzk U`. sHoTT and the documentation use none of these.++- **Modal diagnostics name what went wrong**, by Islam Talipov (see [#365](https://github.com/rzk-lang/rzk/pull/365)). Contexts in errors and hole goals mark an inaccessible entry with `×`, its modality, and the locks accumulated since, and the JSON output of holes carries the same fields. Modal errors name the site and both sides.++Fixed:++- **A tope family is elaborated with its declared domain** (see [#359](https://github.com/rzk-lang/rzk/pull/359)). A family not included in its domain, such as `#!rzk \ t → TOP` over the empty shape, was read with the domain where a family variable is applied and without it once the family was substituted. The two readings together gave a closed term of every type. Such a family now elaborates to its intersection with the domain.++- **The interval order at the endpoints**, by Islam Talipov (see [#361](https://github.com/rzk-lang/rzk/pull/361), fixing [#360](https://github.com/rzk-lang/rzk/issues/360)). The tope solver derives `s ≤ t` from `t ≡ 1ᵢ` or `s ≡ 0ᵢ`.++- **Modal fixes**, by Islam Talipov (see [#357](https://github.com/rzk-lang/rzk/pull/357)). `#!rzk let mod` eliminates a modal value whose type carries a boundary restriction, a motive-free `#!rzk let mod` instantiates a dependent result type with the payload, and topes under `ᵒᵖ` are normalised symmetrically.++- **Hole candidates** (see [#367](https://github.com/rzk-lang/rzk/pull/367), [#260](https://github.com/rzk-lang/rzk/pull/260)). A lemma whose edge body is headed by a hole is offered as a candidate, and in lenient mode an incomplete guard such as `#!rzk recOR (? ≤ ? ↦ a , ? ↦ a)` records its holes instead of failing.++Performance:++- **sHoTT checks 8–10% faster than with v0.11.3.** Part of the gain comes from the upgrade to free-foil 0.6.1 (see [#370](https://github.com/rzk-lang/rzk/pull/370)), whose substitution and α-equivalence specialise at rzk's signature.++Documentation:++- The hole guide and the direction of the overhang warning's entailment are corrected (see [#368](https://github.com/rzk-lang/rzk/pull/368)).+ ## v0.11.3 — 2026-08-31  A maintenance release. The conversion fast path now compares stuck applications spine to spine, the modal `#!rzk let` gets a clearer surface syntax, and `rzk version --full` describes the build.
app/Main.hs view
@@ -50,12 +50,14 @@ data TypecheckOptions = TypecheckOptions   { typecheckAllowHoles :: Bool   , typecheckJson       :: Bool+  , typecheckRSTTSafe   :: Maybe String   } deriving (Generic, Show, ParseRecord, Read, ParseField)  instance ParseFields TypecheckOptions where   parseFields _ _ _ _ = TypecheckOptions     <$> parseFields (Just "Allow unsolved holes: report each hole's goal and local context instead of failing") (Just "allow-holes") (Just 'H') Nothing     <*> parseFields (Just "Output diagnostics (type errors and holes) as JSON on stdout") (Just "json") (Just 'j') Nothing+    <*> parseFields (Just "Enforce RSTT fragment checks throughout the run: warn, error, or off") (Just "rstt-safe") Nothing Nothing  data VersionOptions = VersionOptions   { versionFull :: Bool@@ -80,9 +82,19 @@   withUtf8 $ #endif     getRecord "rzk: an experimental proof assistant for synthetic ∞-categories" >>= \case-    Typecheck (TypecheckOptions {typecheckAllowHoles = allowHolesFlag, typecheckJson = jsonFlag}) paths -> do+    Typecheck (TypecheckOptions {typecheckAllowHoles = allowHolesFlag, typecheckJson = jsonFlag, typecheckRSTTSafe = safeFlag}) paths -> do+      safeOverride <- case safeFlag of+        Nothing -> pure Nothing+        Just "warn" -> pure (Just RSTTSafeWarn)+        Just "error" -> pure (Just RSTTSafeError)+        Just "off" -> pure (Just RSTTSafeOff)+        Just _ -> do+          putStrLn "Unknown --rstt-safe mode (use warn, error, or off)"+          exitFailure       modules <- parseRzkFilesOrStdin paths-      let reportError err = do+      let baseContext = if jsonFlag || allowHolesFlag then allowHoles emptyContext else emptyContext+          result = checkedModules modules (baseContext { ctxRSTTSafeOverride = safeOverride })+          reportError err = do             putStrLn "An error occurred when typechecking!"             putStrLn $ unlines               [ "Type Error:"@@ -93,7 +105,7 @@         -- holes as hints) as a JSON array on stdout; progress goes to stderr.         -- Exit non-zero iff there is an error-severity diagnostic.         then do-          let diagnostics = case typecheckModulesWithHoles modules of+          let diagnostics = case result of                 Left err -> [diagnoseTypeError BottomUp err]                 Right (Checked _ctx _decls errors warnings, holes) ->                   map (diagnoseTypeError BottomUp) errors@@ -102,7 +114,7 @@           BL8.putStrLn (encode diagnostics)           when (any ((== SeverityError) . diagnosticSeverity) diagnostics) exitFailure         else if allowHolesFlag-          then case typecheckModulesWithHoles modules of+          then case result of             Left err -> reportError err >> exitFailure             Right (Checked _ctx _decls errors warnings, holes) -> do               forM_ warnings (putStrLn . ppCheckWarning)@@ -110,11 +122,13 @@               case errors of                 [] -> putStrLn ("Everything is ok! (" <> show (length holes) <> " hole(s))")                 _  -> do forM_ errors reportError; exitFailure-          else case typecheckModules modules of+          else case result of             Left err -> reportError err >> exitFailure-            Right checked -> do-              forM_ (checkedWarnings checked) (putStrLn . ppCheckWarning)-              putStrLn "Everything is ok!"+            Right (Checked _ _ errors warnings, _) -> do+              forM_ warnings (putStrLn . ppCheckWarning)+              case errors of+                [] -> putStrLn "Everything is ok!"+                _ -> do forM_ errors reportError; exitFailure      Lsp -> #ifdef LSP_ENABLED
grammar/Syntax.cf view
@@ -150,25 +150,25 @@ ASCII_ModalColonOp.    ModalColon ::= ":_op" ;  -- Universes-Universe.       Term7 ::= "U" ;-UniverseCube.   Term7 ::= "CUBE" ;-UniverseTope.   Term7 ::= "TOPE" ;+Universe.       Term8 ::= "U" ;+UniverseCube.   Term8 ::= "CUBE" ;+UniverseTope.   Term8 ::= "TOPE" ; -- Cubes-CubeUnit.       Term7 ::= "1" ;-CubeUnitStar.   Term7 ::= "*₁" ;-Cube2.          Term7 ::= "2" ;-Cube2_0.        Term7 ::= "0₂" ;-Cube2_1.        Term7 ::= "1₂" ;-CubeI.          Term7 ::= "𝕀" ;-CubeI_0.        Term7 ::= "0ᵢ" ;-CubeI_1.        Term7 ::= "1ᵢ" ;+CubeUnit.       Term8 ::= "1" ;+CubeUnitStar.   Term8 ::= "*₁" ;+Cube2.          Term8 ::= "2" ;+Cube2_0.        Term8 ::= "0₂" ;+Cube2_1.        Term8 ::= "1₂" ;+CubeI.          Term8 ::= "𝕀" ;+CubeI_0.        Term8 ::= "0ᵢ" ;+CubeI_1.        Term8 ::= "1ᵢ" ; CubeProduct.    Term5 ::= Term5 "×" Term6 ; -- Lattice operations on cube points (join/meet) CubeSup.        Term5 ::= Term5 "⊔" Term6 ; CubeInf.        Term5 ::= Term5 "⊓" Term6 ; -- Topes-TopeTop.        Term7 ::= "⊤" ;-TopeBottom.     Term7 ::= "⊥" ;+TopeTop.        Term8 ::= "⊤" ;+TopeBottom.     Term8 ::= "⊥" ; TopeEQ.         Term4 ::= Term5 "≡" Term5 ; TopeLEQ.        Term4 ::= Term5 "≤" Term5 ; TopeAnd.        Term3 ::= Term4 "∧" Term3 ;@@ -186,14 +186,14 @@ ascii_CubeUnflip. Term6 ::= "unflip_op" Term7 ; define ascii_CubeUnflip t = CubeUnflip t ; -- Tope disjunction elimination-RecBottom.        Term7 ::= "recBOT" ;-RecOr.            Term7 ::= "recOR" "(" [Restriction] ")" ;+RecBottom.        Term8 ::= "recBOT" ;+RecOr.            Term8 ::= "recOR" "(" [Restriction] ")" ; -- Types TypeFun.        Term1 ::= ParamDecl "→" Term1 ; TypeSigma.      Term1 ::= "Σ" "(" Pattern ":" Term ")" "," Term1 ; TypeSigmaModal.    Term1 ::= "Σ" "(" Pattern ModalColon Term ")" "," Term1 ; TypeSigmaTuple. Term1 ::= "Σ" "(" SigmaParam "," [SigmaParam] ")" "," Term1 ;-TypeUnit.       Term7 ::= "Unit" ;+TypeUnit.       Term8 ::= "Unit" ; TypeId.         Term1 ::= Term2 "=_{" Term "}" Term2 ; TypeIdSimple.   Term1 ::= Term2 "=" Term2 ; TypeRestricted. Term6  ::= Term6 "[" [Restriction] "]" ;@@ -201,8 +201,8 @@ Let.            Term1 ::= "let" Bind ":=" Term "in" Term ; App.            Term6 ::= Term6 Term7 ; Lambda.         Term1 ::= "\\" [Param] "→" Term1 ;-Pair.           Term7 ::= "(" Term "," Term ")" ;-Tuple.          Term7 ::= "(" Term "," Term "," [Term] ")" ;+Pair.           Term8 ::= "(" Term "," Term ")" ;+Tuple.          Term8 ::= "(" Term "," Term "," [Term] ")" ; ModApp.         Term7 ::= "mod" Modality Term7 ; ModType.        Term7 ::= Modality Term7 ; ModExtract.     Term6 ::= "$extract$" ModComp Term7 ;@@ -214,21 +214,25 @@ LetModFramedInto. Term1 ::= "let" Modality "mod" Modality Bind ":=" Term "into" Term "in" Term ; First.          Term6 ::= "π₁" Term7 ; Second.         Term6 ::= "π₂" Term7 ;-Unit.           Term7 ::= "unit" ;-Refl.           Term7 ::= "refl";-ReflTerm.       Term7 ::= "refl_{" Term "}" ;-ReflTermType.   Term7 ::= "refl_{" Term ":" Term "}" ;-IdJ.            Term7 ::= "idJ" "(" Term "," Term "," Term "," Term "," Term "," Term ")" ;-Match.          Term7 ::= "match" Term7 "(" [MatchBranch] ")" ;-MatchInto.      Term7 ::= "match" Term7 "into" Term7 "(" [MatchBranch] ")" ;+Unit.           Term8 ::= "unit" ;+Refl.           Term8 ::= "refl";+ReflTerm.       Term8 ::= "refl_{" Term "}" ;+ReflTermType.   Term8 ::= "refl_{" Term ":" Term "}" ;+IdJ.            Term8 ::= "idJ" "(" Term "," Term "," Term "," Term "," Term "," Term ")" ;+-- A bare modality after `match` belongs to the modal form. The ordinary form+-- takes an atom; a prefixed scrutinee can still be written in parentheses.+Match.          Term7 ::= "match" Term8 "(" [MatchBranch] ")" ;+MatchInto.      Term7 ::= "match" Term8 "into" Term8 "(" [MatchBranch] ")" ;+MatchModal.     Term7 ::= "match" Modality Term8 "(" [MatchBranch] ")" ;+MatchModalInto. Term7 ::= "match" Modality Term8 "into" Term8 "(" [MatchBranch] ")" ; -- Variables and holes-Hole.           Term7 ::= HoleIdent;-Var.            Term7 ::= VarIdent ;+Hole.           Term8 ::= HoleIdent;+Var.            Term8 ::= VarIdent ; -- Miscellaneous TypeAsc.        Term ::= Term2 "as" Term1 ;  separator nonempty Term "," ;-coercions Term 7 ;+coercions Term 8 ;  -- ASCII version of some rules above @@ -239,15 +243,15 @@ ascii_CubeInf.        Term6 ::= "inf" Term7 Term7 ; define ascii_CubeInf l r = CubeInf l r ; -ASCII_CubeUnitStar.   Term7 ::= "*_1" ;-ASCII_Cube2_0.        Term7 ::= "0_2" ;-ASCII_Cube2_1.        Term7 ::= "1_2" ;-ASCII_CubeI.          Term7 ::= "II" ;-ASCII_CubeI_0.        Term7 ::= "0_I" ;-ASCII_CubeI_1.        Term7 ::= "1_I" ;+ASCII_CubeUnitStar.   Term8 ::= "*_1" ;+ASCII_Cube2_0.        Term8 ::= "0_2" ;+ASCII_Cube2_1.        Term8 ::= "1_2" ;+ASCII_CubeI.          Term8 ::= "II" ;+ASCII_CubeI_0.        Term8 ::= "0_I" ;+ASCII_CubeI_1.        Term8 ::= "1_I" ; -ASCII_TopeTop.        Term7 ::= "TOP" ;-ASCII_TopeBottom.     Term7 ::= "BOT" ;+ASCII_TopeTop.        Term8 ::= "TOP" ;+ASCII_TopeBottom.     Term8 ::= "BOT" ; ASCII_TopeEQ.         Term4 ::= Term5 "===" Term5 ; ASCII_TopeLEQ.        Term4 ::= Term5 "<=" Term5 ; ASCII_TopeAnd.        Term3 ::= Term4 "/\\" Term3 ;
rzk.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack  name:           rzk-version:        0.11.3+version:        0.11.4 synopsis:       An experimental proof assistant for synthetic ∞-categories description:    Please see the README on GitHub at <https://github.com/rzk-lang/rzk#readme> category:       Dependent Types@@ -33,14 +33,22 @@     test/typecheck/cases/happy-data-interval-funext.rzk     test/typecheck/cases/happy-data-large-warning.rzk     test/typecheck/cases/happy-data-list.rzk+    test/typecheck/cases/happy-data-modal-kind-param.rzk+    test/typecheck/cases/happy-data-modal-shape-field.rzk     test/typecheck/cases/happy-data-nat.rzk+    test/typecheck/cases/happy-data-path-shape-field.rzk     test/typecheck/cases/happy-data-prop-trunc.rzk     test/typecheck/cases/happy-data-pushout.rzk     test/typecheck/cases/happy-data-rec-section.rzk     test/typecheck/cases/happy-data-section.rzk+    test/typecheck/cases/happy-data-shape-realisation.rzk+    test/typecheck/cases/happy-data-shape-tope.rzk+    test/typecheck/cases/happy-data-tope-param.rzk     test/typecheck/cases/happy-data-vec.rzk+    test/typecheck/cases/happy-ext-style-restrictions.rzk     test/typecheck/cases/happy-flip-unflip.rzk     test/typecheck/cases/happy-interval-basics.rzk+    test/typecheck/cases/happy-interval-endpoint-entailment.rzk     test/typecheck/cases/happy-interval-subtyping.rzk     test/typecheck/cases/happy-issue-9-relfunext2-id.rzk     test/typecheck/cases/happy-lattice-eq-gives-leq.rzk@@ -49,6 +57,7 @@     test/typecheck/cases/happy-match-basics.rzk     test/typecheck/cases/happy-match-case-vec.rzk     test/typecheck/cases/happy-match-indexed.rzk+    test/typecheck/cases/happy-match-modal.rzk     test/typecheck/cases/happy-meta-prefix-option-off.rzk     test/typecheck/cases/happy-meta-prefix-plumbing.rzk     test/typecheck/cases/happy-modal-basics.rzk@@ -56,9 +65,12 @@     test/typecheck/cases/happy-modal-flat-recOR-under-op.rzk     test/typecheck/cases/happy-modal-flat-under-op.rzk     test/typecheck/cases/happy-modal-inv.rzk+    test/typecheck/cases/happy-modal-let-dependent-payload.rzk     test/typecheck/cases/happy-modal-let-into.rzk+    test/typecheck/cases/happy-modal-let-restricted.rzk     test/typecheck/cases/happy-modal-tope-unwrap.rzk     test/typecheck/cases/happy-modal-topes.rzk+    test/typecheck/cases/happy-modal-uninv-shape-restricted.rzk     test/typecheck/cases/happy-multivar-binder.rzk     test/typecheck/cases/happy-nbe-church-conversion.rzk     test/typecheck/cases/happy-nbe-transport-refl-spine.rzk@@ -69,17 +81,34 @@     test/typecheck/cases/happy-recor-split-simplex-overhang.rzk     test/typecheck/cases/happy-refl-path.rzk     test/typecheck/cases/happy-restrict-face-not-contained.rzk+    test/typecheck/cases/happy-rstt-awareness.rzk+    test/typecheck/cases/happy-rstt-bare-tope-param.rzk+    test/typecheck/cases/happy-rstt-boundary-error.rzk+    test/typecheck/cases/happy-rstt-boundary-multicube.rzk+    test/typecheck/cases/happy-rstt-boundary-warn.rzk+    test/typecheck/cases/happy-rstt-boundary.rzk+    test/typecheck/cases/happy-rstt-independent-cubes.rzk+    test/typecheck/cases/happy-rstt-off.rzk+    test/typecheck/cases/happy-rstt-schema-parameters.rzk+    test/typecheck/cases/happy-rstt-shape-dependency-off.rzk+    test/typecheck/cases/happy-rstt-tail-nested.rzk+    test/typecheck/cases/happy-rstt-tau-flip.rzk+    test/typecheck/cases/happy-rstt-tope-terms.rzk+    test/typecheck/cases/happy-rstt-trusted-postulate.rzk     test/typecheck/cases/happy-set-option-warn-overhang.rzk     test/typecheck/cases/happy-shadowing-across-groups.rzk     test/typecheck/cases/happy-shott-simplicial-subcomplexes.rzk     test/typecheck/cases/happy-subtype-variance-pi-shape-domain.rzk     test/typecheck/cases/happy-subtype-variance-restriction-faces.rzk     test/typecheck/cases/happy-subtype-variance-tope-family.rzk+    test/typecheck/cases/happy-tope-assume.rzk+    test/typecheck/cases/happy-tope-family-domain-instance.rzk     test/typecheck/cases/happy-tope-high-dim-cubes.rzk     test/typecheck/cases/happy-tope-nested-rec-or-d4.rzk     test/typecheck/cases/happy-tope-nested-rec-or-d5.rzk     test/typecheck/cases/happy-tope-nested-rec-or-d6.rzk     test/typecheck/cases/happy-tope-nested-rec-or.rzk+    test/typecheck/cases/happy-tope-param.rzk     test/typecheck/cases/happy-tope-rec-and-restrict.rzk     test/typecheck/cases/happy-tope-shapes.rzk     test/typecheck/cases/ill-bare-lambda-compute.rzk@@ -88,6 +117,10 @@     test/typecheck/cases/ill-data-compute-kind.rzk     test/typecheck/cases/ill-data-compute-mismatch.rzk     test/typecheck/cases/ill-data-compute-unknown.rzk+    test/typecheck/cases/ill-data-cube-index.rzk+    test/typecheck/cases/ill-data-cube-param.rzk+    test/typecheck/cases/ill-data-cube-universe-field.rzk+    test/typecheck/cases/ill-data-cube-universe-index.rzk     test/typecheck/cases/ill-data-duplicate-constructor.rzk     test/typecheck/cases/ill-data-eliminator-duplicate.rzk     test/typecheck/cases/ill-data-eliminator-mismatch.rzk@@ -95,7 +128,15 @@     test/typecheck/cases/ill-data-fun-field.rzk     test/typecheck/cases/ill-data-index-mismatch.rzk     test/typecheck/cases/ill-data-missing-return.rzk+    test/typecheck/cases/ill-data-modal-cube-field.rzk+    test/typecheck/cases/ill-data-modal-kind-param-lock.rzk+    test/typecheck/cases/ill-data-modal-kind-param-point.rzk+    test/typecheck/cases/ill-data-modal-shape-field-lock.rzk+    test/typecheck/cases/ill-data-modal-tope-field.rzk+    test/typecheck/cases/ill-data-modal-tope-index.rzk+    test/typecheck/cases/ill-data-modal-type-field.rzk     test/typecheck/cases/ill-data-negative.rzk+    test/typecheck/cases/ill-data-no-sharp-eliminator.rzk     test/typecheck/cases/ill-data-non-u-sort.rzk     test/typecheck/cases/ill-data-path-endpoint.rzk     test/typecheck/cases/ill-data-path-higher-field.rzk@@ -103,11 +144,18 @@     test/typecheck/cases/ill-data-path-indexed.rzk     test/typecheck/cases/ill-data-path-unannotated.rzk     test/typecheck/cases/ill-data-return-type.rzk-    test/typecheck/cases/ill-data-shape-field.rzk+    test/typecheck/cases/ill-data-shape-index-named.rzk+    test/typecheck/cases/ill-data-shape-index.rzk+    test/typecheck/cases/ill-data-shape-param.rzk+    test/typecheck/cases/ill-data-tope-family-field.rzk+    test/typecheck/cases/ill-data-tope-family-index.rzk+    test/typecheck/cases/ill-data-tope-field.rzk+    test/typecheck/cases/ill-data-tope-index.rzk     test/typecheck/cases/ill-duplicate.rzk     test/typecheck/cases/ill-hole-infer.rzk     test/typecheck/cases/ill-hole-pattern-binder-names.rzk     test/typecheck/cases/ill-hole-recor-branch.rzk+    test/typecheck/cases/ill-hole-recor-guard-point.rzk     test/typecheck/cases/ill-hole-unsolved.rzk     test/typecheck/cases/ill-implicit.rzk     test/typecheck/cases/ill-interval-no-totality.rzk@@ -116,6 +164,13 @@     test/typecheck/cases/ill-issue-13-flip-flip-wrong.rzk     test/typecheck/cases/ill-issue-206-families-of-extension.rzk     test/typecheck/cases/ill-issue-33-restriction-coherence.rzk+    test/typecheck/cases/ill-kind-app-argument-tope.rzk+    test/typecheck/cases/ill-kind-define-tope.rzk+    test/typecheck/cases/ill-kind-id-carrier-tope.rzk+    test/typecheck/cases/ill-kind-sigma-body-tope.rzk+    test/typecheck/cases/ill-kind-sigma-cube-universe.rzk+    test/typecheck/cases/ill-kind-sigma-tope-family.rzk+    test/typecheck/cases/ill-kind-sigma-tope.rzk     test/typecheck/cases/ill-lattice-endpoints-distinct.rzk     test/typecheck/cases/ill-lattice-eq-no-leak.rzk     test/typecheck/cases/ill-lattice-non-law.rzk@@ -129,6 +184,11 @@     test/typecheck/cases/ill-match-duplicate-branch.rzk     test/typecheck/cases/ill-match-missing-branch.rzk     test/typecheck/cases/ill-match-missing-path-branch.rzk+    test/typecheck/cases/ill-match-modal-hit.rzk+    test/typecheck/cases/ill-match-modal-ih-remodalized.rzk+    test/typecheck/cases/ill-match-modal-inaccessible.rzk+    test/typecheck/cases/ill-match-modal-motive.rzk+    test/typecheck/cases/ill-match-modal-sharp.rzk     test/typecheck/cases/ill-match-not-data.rzk     test/typecheck/cases/ill-match-unknown-branch.rzk     test/typecheck/cases/ill-modal-b-no-dist.rzk@@ -164,15 +224,40 @@     test/typecheck/cases/ill-repeated-binder-pair.rzk     test/typecheck/cases/ill-repeated-binder-params.rzk     test/typecheck/cases/ill-restrict-face-disjoint.rzk+    test/typecheck/cases/ill-rstt-auxiliary-interval.rzk+    test/typecheck/cases/ill-rstt-boundary-obligation.rzk+    test/typecheck/cases/ill-rstt-dependent-cube-family.rzk+    test/typecheck/cases/ill-rstt-dependent-cube-instance.rzk+    test/typecheck/cases/ill-rstt-dependent-cube.rzk+    test/typecheck/cases/ill-rstt-false-bottom.rzk+    test/typecheck/cases/ill-rstt-false-refl.rzk+    test/typecheck/cases/ill-rstt-inductive.rzk+    test/typecheck/cases/ill-rstt-meta-binder-in-face.rzk+    test/typecheck/cases/ill-rstt-meta-binder.rzk+    test/typecheck/cases/ill-rstt-meta-prefix.rzk+    test/typecheck/cases/ill-rstt-modal.rzk+    test/typecheck/cases/ill-rstt-option.rzk+    test/typecheck/cases/ill-rstt-packed-cube-family.rzk+    test/typecheck/cases/ill-rstt-packed-type-family.rzk+    test/typecheck/cases/ill-rstt-postulate.rzk+    test/typecheck/cases/ill-rstt-restriction-in-domain.rzk+    test/typecheck/cases/ill-rstt-restriction.rzk+    test/typecheck/cases/ill-rstt-shape-boundary.rzk+    test/typecheck/cases/ill-rstt-shape-domain.rzk+    test/typecheck/cases/ill-rstt-uncovered-endpoints.rzk+    test/typecheck/cases/ill-rstt-unsupported.rzk     test/typecheck/cases/ill-section-end-mismatch.rzk     test/typecheck/cases/ill-section-not-closed.rzk     test/typecheck/cases/ill-section-unexpected-end.rzk     test/typecheck/cases/ill-set-option-render.rzk     test/typecheck/cases/ill-set-option-unknown.rzk     test/typecheck/cases/ill-set-option-verbosity.rzk+    test/typecheck/cases/ill-shape-dependency-option.rzk     test/typecheck/cases/ill-subtype-variance-pi-shape-domain.rzk     test/typecheck/cases/ill-subtype-variance-restriction-faces.rzk     test/typecheck/cases/ill-subtype-variance-tope-family.rzk+    test/typecheck/cases/ill-tope-family-domain-non-instance.rzk+    test/typecheck/cases/ill-tope-family-domain-same-domain.rzk     test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d4.rzk     test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d5.rzk     test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d6.rzk@@ -182,8 +267,8 @@     test/typecheck/cases/ill-tope-not-satisfied-rec-or-boundary-equiv.rzk     test/typecheck/cases/ill-tope-not-satisfied-rec-or-open-singleton.rzk     test/typecheck/cases/ill-tope-not-satisfied-tope-family-subtyping.rzk-    test/typecheck/cases/ill-tope-param-lambda.rzk-    test/typecheck/cases/ill-tope-param-typefun.rzk+    test/typecheck/cases/ill-tope-param-entailment.rzk+    test/typecheck/cases/ill-tope-param-instance.rzk     test/typecheck/cases/ill-tope-pattern-binder-bare.rzk     test/typecheck/cases/ill-tope-recOR-non-discrete.rzk     test/typecheck/cases/ill-tope-subtle-app-shape-5d.rzk@@ -205,10 +290,31 @@     test/typecheck/cases/multimodule-two-ok/user.rzk     test/typecheck/cases/uses-whnf-discarded.rzk     test/typecheck/cases/uses-whnf-masked-transitive.rzk+    test/typecheck/cases/warn-free-standing-restriction-assumed.rzk+    test/typecheck/cases/warn-free-standing-restriction-option.rzk+    test/typecheck/cases/warn-meta-binder-inside-term.rzk     test/typecheck/cases/warn-meta-prefix-object-position.rzk     test/typecheck/cases/warn-meta-prefix-option-structural.rzk     test/typecheck/cases/warn-meta-prefix-section.rzk     test/typecheck/cases/warn-meta-prefix-strict-only.rzk+    test/typecheck/cases/warn-overhang-controls.rzk+    test/typecheck/cases/warn-rstt-bare-tope-binder-in-term.rzk+    test/typecheck/cases/warn-rstt-bare-tope-object-point.rzk+    test/typecheck/cases/warn-rstt-default.rzk+    test/typecheck/cases/warn-rstt-escape-beta.rzk+    test/typecheck/cases/warn-rstt-escape-iota.rzk+    test/typecheck/cases/warn-rstt-escape-let.rzk+    test/typecheck/cases/warn-rstt-escape-pair.rzk+    test/typecheck/cases/warn-rstt-escape-section.rzk+    test/typecheck/cases/warn-rstt-escape-tope-family.rzk+    test/typecheck/cases/warn-rstt-escape-unfolding.rzk+    test/typecheck/cases/warn-rstt-inductive.rzk+    test/typecheck/cases/warn-rstt-modal.rzk+    test/typecheck/cases/warn-rstt-reset.rzk+    test/typecheck/cases/warn-rstt-shape-dependency.rzk+    test/typecheck/cases/warn-rstt-warn-overrides-standalone.rzk+    test/typecheck/cases/warn-tope-family-domain-non-instance.rzk+    test/typecheck/cases/warn-tope-family-domain-option.rzk     test/typecheck/cases/happy-check.expect.yaml     test/typecheck/cases/happy-data-bool.expect.yaml     test/typecheck/cases/happy-data-circle.expect.yaml@@ -222,14 +328,22 @@     test/typecheck/cases/happy-data-interval-funext.expect.yaml     test/typecheck/cases/happy-data-large-warning.expect.yaml     test/typecheck/cases/happy-data-list.expect.yaml+    test/typecheck/cases/happy-data-modal-kind-param.expect.yaml+    test/typecheck/cases/happy-data-modal-shape-field.expect.yaml     test/typecheck/cases/happy-data-nat.expect.yaml+    test/typecheck/cases/happy-data-path-shape-field.expect.yaml     test/typecheck/cases/happy-data-prop-trunc.expect.yaml     test/typecheck/cases/happy-data-pushout.expect.yaml     test/typecheck/cases/happy-data-rec-section.expect.yaml     test/typecheck/cases/happy-data-section.expect.yaml+    test/typecheck/cases/happy-data-shape-realisation.expect.yaml+    test/typecheck/cases/happy-data-shape-tope.expect.yaml+    test/typecheck/cases/happy-data-tope-param.expect.yaml     test/typecheck/cases/happy-data-vec.expect.yaml+    test/typecheck/cases/happy-ext-style-restrictions.expect.yaml     test/typecheck/cases/happy-flip-unflip.expect.yaml     test/typecheck/cases/happy-interval-basics.expect.yaml+    test/typecheck/cases/happy-interval-endpoint-entailment.expect.yaml     test/typecheck/cases/happy-interval-subtyping.expect.yaml     test/typecheck/cases/happy-issue-9-relfunext2-id.expect.yaml     test/typecheck/cases/happy-lattice-eq-gives-leq.expect.yaml@@ -238,6 +352,7 @@     test/typecheck/cases/happy-match-basics.expect.yaml     test/typecheck/cases/happy-match-case-vec.expect.yaml     test/typecheck/cases/happy-match-indexed.expect.yaml+    test/typecheck/cases/happy-match-modal.expect.yaml     test/typecheck/cases/happy-meta-prefix-option-off.expect.yaml     test/typecheck/cases/happy-meta-prefix-plumbing.expect.yaml     test/typecheck/cases/happy-modal-basics.expect.yaml@@ -245,9 +360,12 @@     test/typecheck/cases/happy-modal-flat-recOR-under-op.expect.yaml     test/typecheck/cases/happy-modal-flat-under-op.expect.yaml     test/typecheck/cases/happy-modal-inv.expect.yaml+    test/typecheck/cases/happy-modal-let-dependent-payload.expect.yaml     test/typecheck/cases/happy-modal-let-into.expect.yaml+    test/typecheck/cases/happy-modal-let-restricted.expect.yaml     test/typecheck/cases/happy-modal-tope-unwrap.expect.yaml     test/typecheck/cases/happy-modal-topes.expect.yaml+    test/typecheck/cases/happy-modal-uninv-shape-restricted.expect.yaml     test/typecheck/cases/happy-multivar-binder.expect.yaml     test/typecheck/cases/happy-nbe-church-conversion.expect.yaml     test/typecheck/cases/happy-nbe-transport-refl-spine.expect.yaml@@ -258,17 +376,34 @@     test/typecheck/cases/happy-recor-split-simplex-overhang.expect.yaml     test/typecheck/cases/happy-refl-path.expect.yaml     test/typecheck/cases/happy-restrict-face-not-contained.expect.yaml+    test/typecheck/cases/happy-rstt-awareness.expect.yaml+    test/typecheck/cases/happy-rstt-bare-tope-param.expect.yaml+    test/typecheck/cases/happy-rstt-boundary-error.expect.yaml+    test/typecheck/cases/happy-rstt-boundary-multicube.expect.yaml+    test/typecheck/cases/happy-rstt-boundary-warn.expect.yaml+    test/typecheck/cases/happy-rstt-boundary.expect.yaml+    test/typecheck/cases/happy-rstt-independent-cubes.expect.yaml+    test/typecheck/cases/happy-rstt-off.expect.yaml+    test/typecheck/cases/happy-rstt-schema-parameters.expect.yaml+    test/typecheck/cases/happy-rstt-shape-dependency-off.expect.yaml+    test/typecheck/cases/happy-rstt-tail-nested.expect.yaml+    test/typecheck/cases/happy-rstt-tau-flip.expect.yaml+    test/typecheck/cases/happy-rstt-tope-terms.expect.yaml+    test/typecheck/cases/happy-rstt-trusted-postulate.expect.yaml     test/typecheck/cases/happy-set-option-warn-overhang.expect.yaml     test/typecheck/cases/happy-shadowing-across-groups.expect.yaml     test/typecheck/cases/happy-shott-simplicial-subcomplexes.expect.yaml     test/typecheck/cases/happy-subtype-variance-pi-shape-domain.expect.yaml     test/typecheck/cases/happy-subtype-variance-restriction-faces.expect.yaml     test/typecheck/cases/happy-subtype-variance-tope-family.expect.yaml+    test/typecheck/cases/happy-tope-assume.expect.yaml+    test/typecheck/cases/happy-tope-family-domain-instance.expect.yaml     test/typecheck/cases/happy-tope-high-dim-cubes.expect.yaml     test/typecheck/cases/happy-tope-nested-rec-or-d4.expect.yaml     test/typecheck/cases/happy-tope-nested-rec-or-d5.expect.yaml     test/typecheck/cases/happy-tope-nested-rec-or-d6.expect.yaml     test/typecheck/cases/happy-tope-nested-rec-or.expect.yaml+    test/typecheck/cases/happy-tope-param.expect.yaml     test/typecheck/cases/happy-tope-rec-and-restrict.expect.yaml     test/typecheck/cases/happy-tope-shapes.expect.yaml     test/typecheck/cases/ill-bare-lambda-compute.expect.yaml@@ -277,6 +412,10 @@     test/typecheck/cases/ill-data-compute-kind.expect.yaml     test/typecheck/cases/ill-data-compute-mismatch.expect.yaml     test/typecheck/cases/ill-data-compute-unknown.expect.yaml+    test/typecheck/cases/ill-data-cube-index.expect.yaml+    test/typecheck/cases/ill-data-cube-param.expect.yaml+    test/typecheck/cases/ill-data-cube-universe-field.expect.yaml+    test/typecheck/cases/ill-data-cube-universe-index.expect.yaml     test/typecheck/cases/ill-data-duplicate-constructor.expect.yaml     test/typecheck/cases/ill-data-eliminator-duplicate.expect.yaml     test/typecheck/cases/ill-data-eliminator-mismatch.expect.yaml@@ -284,7 +423,15 @@     test/typecheck/cases/ill-data-fun-field.expect.yaml     test/typecheck/cases/ill-data-index-mismatch.expect.yaml     test/typecheck/cases/ill-data-missing-return.expect.yaml+    test/typecheck/cases/ill-data-modal-cube-field.expect.yaml+    test/typecheck/cases/ill-data-modal-kind-param-lock.expect.yaml+    test/typecheck/cases/ill-data-modal-kind-param-point.expect.yaml+    test/typecheck/cases/ill-data-modal-shape-field-lock.expect.yaml+    test/typecheck/cases/ill-data-modal-tope-field.expect.yaml+    test/typecheck/cases/ill-data-modal-tope-index.expect.yaml+    test/typecheck/cases/ill-data-modal-type-field.expect.yaml     test/typecheck/cases/ill-data-negative.expect.yaml+    test/typecheck/cases/ill-data-no-sharp-eliminator.expect.yaml     test/typecheck/cases/ill-data-non-u-sort.expect.yaml     test/typecheck/cases/ill-data-path-endpoint.expect.yaml     test/typecheck/cases/ill-data-path-higher-field.expect.yaml@@ -292,11 +439,18 @@     test/typecheck/cases/ill-data-path-indexed.expect.yaml     test/typecheck/cases/ill-data-path-unannotated.expect.yaml     test/typecheck/cases/ill-data-return-type.expect.yaml-    test/typecheck/cases/ill-data-shape-field.expect.yaml+    test/typecheck/cases/ill-data-shape-index-named.expect.yaml+    test/typecheck/cases/ill-data-shape-index.expect.yaml+    test/typecheck/cases/ill-data-shape-param.expect.yaml+    test/typecheck/cases/ill-data-tope-family-field.expect.yaml+    test/typecheck/cases/ill-data-tope-family-index.expect.yaml+    test/typecheck/cases/ill-data-tope-field.expect.yaml+    test/typecheck/cases/ill-data-tope-index.expect.yaml     test/typecheck/cases/ill-duplicate.expect.yaml     test/typecheck/cases/ill-hole-infer.expect.yaml     test/typecheck/cases/ill-hole-pattern-binder-names.expect.yaml     test/typecheck/cases/ill-hole-recor-branch.expect.yaml+    test/typecheck/cases/ill-hole-recor-guard-point.expect.yaml     test/typecheck/cases/ill-hole-unsolved.expect.yaml     test/typecheck/cases/ill-implicit.expect.yaml     test/typecheck/cases/ill-interval-no-totality.expect.yaml@@ -305,6 +459,13 @@     test/typecheck/cases/ill-issue-13-flip-flip-wrong.expect.yaml     test/typecheck/cases/ill-issue-206-families-of-extension.expect.yaml     test/typecheck/cases/ill-issue-33-restriction-coherence.expect.yaml+    test/typecheck/cases/ill-kind-app-argument-tope.expect.yaml+    test/typecheck/cases/ill-kind-define-tope.expect.yaml+    test/typecheck/cases/ill-kind-id-carrier-tope.expect.yaml+    test/typecheck/cases/ill-kind-sigma-body-tope.expect.yaml+    test/typecheck/cases/ill-kind-sigma-cube-universe.expect.yaml+    test/typecheck/cases/ill-kind-sigma-tope-family.expect.yaml+    test/typecheck/cases/ill-kind-sigma-tope.expect.yaml     test/typecheck/cases/ill-lattice-endpoints-distinct.expect.yaml     test/typecheck/cases/ill-lattice-eq-no-leak.expect.yaml     test/typecheck/cases/ill-lattice-non-law.expect.yaml@@ -318,6 +479,11 @@     test/typecheck/cases/ill-match-duplicate-branch.expect.yaml     test/typecheck/cases/ill-match-missing-branch.expect.yaml     test/typecheck/cases/ill-match-missing-path-branch.expect.yaml+    test/typecheck/cases/ill-match-modal-hit.expect.yaml+    test/typecheck/cases/ill-match-modal-ih-remodalized.expect.yaml+    test/typecheck/cases/ill-match-modal-inaccessible.expect.yaml+    test/typecheck/cases/ill-match-modal-motive.expect.yaml+    test/typecheck/cases/ill-match-modal-sharp.expect.yaml     test/typecheck/cases/ill-match-not-data.expect.yaml     test/typecheck/cases/ill-match-unknown-branch.expect.yaml     test/typecheck/cases/ill-modal-b-no-dist.expect.yaml@@ -353,15 +519,40 @@     test/typecheck/cases/ill-repeated-binder-pair.expect.yaml     test/typecheck/cases/ill-repeated-binder-params.expect.yaml     test/typecheck/cases/ill-restrict-face-disjoint.expect.yaml+    test/typecheck/cases/ill-rstt-auxiliary-interval.expect.yaml+    test/typecheck/cases/ill-rstt-boundary-obligation.expect.yaml+    test/typecheck/cases/ill-rstt-dependent-cube-family.expect.yaml+    test/typecheck/cases/ill-rstt-dependent-cube-instance.expect.yaml+    test/typecheck/cases/ill-rstt-dependent-cube.expect.yaml+    test/typecheck/cases/ill-rstt-false-bottom.expect.yaml+    test/typecheck/cases/ill-rstt-false-refl.expect.yaml+    test/typecheck/cases/ill-rstt-inductive.expect.yaml+    test/typecheck/cases/ill-rstt-meta-binder-in-face.expect.yaml+    test/typecheck/cases/ill-rstt-meta-binder.expect.yaml+    test/typecheck/cases/ill-rstt-meta-prefix.expect.yaml+    test/typecheck/cases/ill-rstt-modal.expect.yaml+    test/typecheck/cases/ill-rstt-option.expect.yaml+    test/typecheck/cases/ill-rstt-packed-cube-family.expect.yaml+    test/typecheck/cases/ill-rstt-packed-type-family.expect.yaml+    test/typecheck/cases/ill-rstt-postulate.expect.yaml+    test/typecheck/cases/ill-rstt-restriction-in-domain.expect.yaml+    test/typecheck/cases/ill-rstt-restriction.expect.yaml+    test/typecheck/cases/ill-rstt-shape-boundary.expect.yaml+    test/typecheck/cases/ill-rstt-shape-domain.expect.yaml+    test/typecheck/cases/ill-rstt-uncovered-endpoints.expect.yaml+    test/typecheck/cases/ill-rstt-unsupported.expect.yaml     test/typecheck/cases/ill-section-end-mismatch.expect.yaml     test/typecheck/cases/ill-section-not-closed.expect.yaml     test/typecheck/cases/ill-section-unexpected-end.expect.yaml     test/typecheck/cases/ill-set-option-render.expect.yaml     test/typecheck/cases/ill-set-option-unknown.expect.yaml     test/typecheck/cases/ill-set-option-verbosity.expect.yaml+    test/typecheck/cases/ill-shape-dependency-option.expect.yaml     test/typecheck/cases/ill-subtype-variance-pi-shape-domain.expect.yaml     test/typecheck/cases/ill-subtype-variance-restriction-faces.expect.yaml     test/typecheck/cases/ill-subtype-variance-tope-family.expect.yaml+    test/typecheck/cases/ill-tope-family-domain-non-instance.expect.yaml+    test/typecheck/cases/ill-tope-family-domain-same-domain.expect.yaml     test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d4.expect.yaml     test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d5.expect.yaml     test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d6.expect.yaml@@ -371,8 +562,8 @@     test/typecheck/cases/ill-tope-not-satisfied-rec-or-boundary-equiv.expect.yaml     test/typecheck/cases/ill-tope-not-satisfied-rec-or-open-singleton.expect.yaml     test/typecheck/cases/ill-tope-not-satisfied-tope-family-subtyping.expect.yaml-    test/typecheck/cases/ill-tope-param-lambda.expect.yaml-    test/typecheck/cases/ill-tope-param-typefun.expect.yaml+    test/typecheck/cases/ill-tope-param-entailment.expect.yaml+    test/typecheck/cases/ill-tope-param-instance.expect.yaml     test/typecheck/cases/ill-tope-pattern-binder-bare.expect.yaml     test/typecheck/cases/ill-tope-recOR-non-discrete.expect.yaml     test/typecheck/cases/ill-tope-subtle-app-shape-5d.expect.yaml@@ -390,10 +581,31 @@     test/typecheck/cases/ill-unused-assumption.expect.yaml     test/typecheck/cases/uses-whnf-discarded.expect.yaml     test/typecheck/cases/uses-whnf-masked-transitive.expect.yaml+    test/typecheck/cases/warn-free-standing-restriction-assumed.expect.yaml+    test/typecheck/cases/warn-free-standing-restriction-option.expect.yaml+    test/typecheck/cases/warn-meta-binder-inside-term.expect.yaml     test/typecheck/cases/warn-meta-prefix-object-position.expect.yaml     test/typecheck/cases/warn-meta-prefix-option-structural.expect.yaml     test/typecheck/cases/warn-meta-prefix-section.expect.yaml     test/typecheck/cases/warn-meta-prefix-strict-only.expect.yaml+    test/typecheck/cases/warn-overhang-controls.expect.yaml+    test/typecheck/cases/warn-rstt-bare-tope-binder-in-term.expect.yaml+    test/typecheck/cases/warn-rstt-bare-tope-object-point.expect.yaml+    test/typecheck/cases/warn-rstt-default.expect.yaml+    test/typecheck/cases/warn-rstt-escape-beta.expect.yaml+    test/typecheck/cases/warn-rstt-escape-iota.expect.yaml+    test/typecheck/cases/warn-rstt-escape-let.expect.yaml+    test/typecheck/cases/warn-rstt-escape-pair.expect.yaml+    test/typecheck/cases/warn-rstt-escape-section.expect.yaml+    test/typecheck/cases/warn-rstt-escape-tope-family.expect.yaml+    test/typecheck/cases/warn-rstt-escape-unfolding.expect.yaml+    test/typecheck/cases/warn-rstt-inductive.expect.yaml+    test/typecheck/cases/warn-rstt-modal.expect.yaml+    test/typecheck/cases/warn-rstt-reset.expect.yaml+    test/typecheck/cases/warn-rstt-shape-dependency.expect.yaml+    test/typecheck/cases/warn-rstt-warn-overrides-standalone.expect.yaml+    test/typecheck/cases/warn-tope-family-domain-non-instance.expect.yaml+    test/typecheck/cases/warn-tope-family-domain-option.expect.yaml     test/typecheck/cases/literate-fence/expect.yaml     test/typecheck/cases/multimodule-first-error/expect.yaml     test/typecheck/cases/multimodule-two-ok/expect.yaml@@ -437,11 +649,13 @@       Rzk.TypeCheck.Display       Rzk.TypeCheck.Error       Rzk.TypeCheck.Eval+      Rzk.TypeCheck.Fragment.RSTT       Rzk.TypeCheck.Judgements       Rzk.TypeCheck.MetaPrefix       Rzk.TypeCheck.Monad       Rzk.TypeCheck.NbE       Rzk.TypeCheck.Render+      Rzk.TypeCheck.Schematic       Rzk.TypeCheck.Unify       Rzk.Version   other-modules:@@ -462,7 +676,7 @@     , bytestring >=0.10.8.2 && <1     , containers >=0.6 && <1     , directory >=1.2.7.0 && <2-    , free-foil ==0.4.*+    , free-foil ==0.6.*     , gitrev >=1.3.1 && <2     , kind-generics >=0.5 && <1     , kind-generics-th >=0.2 && <1@@ -516,7 +730,7 @@     , bytestring >=0.10.8.2 && <1     , containers >=0.6 && <1     , directory >=1.2.7.0 && <2-    , free-foil ==0.4.*+    , free-foil ==0.6.*     , gitrev >=1.3.1 && <2     , kind-generics >=0.5 && <1     , kind-generics-th >=0.2 && <1@@ -553,7 +767,7 @@     , containers >=0.6 && <1     , directory >=1.2.7.0 && <2     , doctest-parallel >=0.3 && <1-    , free-foil ==0.4.*+    , free-foil ==0.6.*     , gitrev >=1.3.1 && <2     , kind-generics >=0.5 && <1     , kind-generics-th >=0.2 && <1@@ -579,6 +793,8 @@       Rzk.ParserSpec       Rzk.PositionEncodingSpec       Rzk.RefIndexSpec+      Rzk.RSTTSafeSpec+      Rzk.SchematicSpec       Rzk.SemanticTokensSpec       Rzk.TypeCheckSpec       Rzk.VersionSpec@@ -602,7 +818,7 @@     , containers >=0.6 && <1     , directory >=1.2.7.0 && <2     , filepath >=1.4 && <2-    , free-foil ==0.4.*+    , free-foil ==0.6.*     , gitrev >=1.3.1 && <2     , hspec >=2.7 && <3     , hspec-discover >=2.7 && <3
src/Language/Rzk/Foil/Convert.hs view
@@ -199,9 +199,13 @@       Rzk.ReflTermType _loc x tA -> Refl (Just (go x, Just (go tA)))       Rzk.IdJ _loc a b c d e f -> IdJ (go a) (go b) (go c) (go d) (go e) (go f)       Rzk.Match _loc scrut branches ->-        Match (go scrut) Nothing (map matchBranch branches)+        Match Id (go scrut) Nothing (map matchBranch branches)       Rzk.MatchInto _loc scrut motive branches ->-        Match (go scrut) (Just (go motive)) (map matchBranch branches)+        Match Id (go scrut) (Just (go motive)) (map matchBranch branches)+      Rzk.MatchModal _loc md scrut branches ->+        Match (Free.toModality md) (go scrut) Nothing (map matchBranch branches)+      Rzk.MatchModalInto _loc md scrut motive branches ->+        Match (Free.toModality md) (go scrut) (Just (go motive)) (map matchBranch branches)       Rzk.TypeAsc _loc x t -> TypeAsc (go x) (go t)        -- A binder may name several variables sharing a type, e.g. @(x y : A)@,
src/Language/Rzk/Foil/Print.hs view
@@ -194,10 +194,12 @@     go (Refl (Just (t, Just ty))) = Rzk.ReflTermType loc (go t) (go ty)     go (IdJ a b c d e f) = Rzk.IdJ loc (go a) (go b) (go c) (go d) (go e) (go f) -    go (Match scrut mmotive branches) =-      case mmotive of-        Nothing     -> Rzk.Match loc (go scrut) (map goBranch branches)-        Just motive -> Rzk.MatchInto loc (go scrut) (go motive) (map goBranch branches)+    go (Match md scrut mmotive branches) =+      case (md, mmotive) of+        (Id, Nothing)     -> Rzk.Match loc (go scrut) (map goBranch branches)+        (Id, Just motive) -> Rzk.MatchInto loc (go scrut) (go motive) (map goBranch branches)+        (_, Nothing)      -> Rzk.MatchModal loc (goMod md) (go scrut) (map goBranch branches)+        (_, Just motive)  -> Rzk.MatchModalInto loc (goMod md) (go scrut) (go motive) (map goBranch branches)       where         goBranch (con, chain) = Rzk.MatchBranch loc (fromVarIdent con) pats body           where (pats, body) = matchArms used supply names chain
src/Language/Rzk/Foil/Syntax.hs view
@@ -45,6 +45,7 @@                                                  alphaEquiv,                                                  substitute, unsafeEqAST) import           Data.ZipMatchK                 (Mappings (..),+                                                 ZipMatchFoldK,                                                  ZipMatchK (..),                                                  zipMatchViaChooseLeft,                                                  zipMatchViaEq)@@ -120,7 +121,7 @@     -- branch per constructor (constructor name, arm chain). The node is     -- elaborated into the generated eliminator during typechecking, so a     -- /typed/ match never exists.-    | MatchF term (Maybe term) [(VarIdent, term)]+    | MatchF TModality term (Maybe term) [(VarIdent, term)]     -- | One branch binder of a match; the body is the next arm, or the branch     -- body once the binders run out. Valid only inside a 'MatchF' branch; the     -- parser cannot produce it anywhere else.@@ -169,6 +170,7 @@   zipMatchWithK = zipMatchViaEq  instance ZipMatchK LambdaParam+instance ZipMatchFoldK LambdaParam  -- | The node matcher, TH-derived: an explicit instance, so no @Generics.Kind@ -- view is rebuilt per comparison. It drives 'Control.Monad.Free.Foil.alphaEquiv'@@ -568,7 +570,7 @@ pattern SecondT info t = Node (AnnSig info (SecondF t)) pattern ReflT info mx = Node (AnnSig info (ReflF mx)) pattern IdJT info a b c d e f = Node (AnnSig info (IdJF a b c d e f))-pattern MatchT info scrut mmotive branches = Node (AnnSig info (MatchF scrut mmotive branches))+pattern MatchT info md scrut mmotive branches = Node (AnnSig info (MatchF md scrut mmotive branches)) pattern MatchArmT info orig arm = Node (AnnSig info (MatchArmF orig arm)) pattern UnitT info = Node (AnnSig info UnitF) pattern TypeUnitT info = Node (AnnSig info TypeUnitF)@@ -641,7 +643,7 @@ pattern Second t = UntypedNode (SecondF t) pattern Refl mx = UntypedNode (ReflF mx) pattern IdJ a b c d e f = UntypedNode (IdJF a b c d e f)-pattern Match scrut mmotive branches = UntypedNode (MatchF scrut mmotive branches)+pattern Match md scrut mmotive branches = UntypedNode (MatchF md scrut mmotive branches) pattern MatchArm orig arm = UntypedNode (MatchArmF orig arm) pattern Unit = UntypedNode UnitF pattern TypeUnit = UntypedNode TypeUnitF
src/Language/Rzk/Syntax/Abs.hs view
@@ -230,6 +230,8 @@     | IdJ a (Term' a) (Term' a) (Term' a) (Term' a) (Term' a) (Term' a)     | Match a (Term' a) [MatchBranch' a]     | MatchInto a (Term' a) (Term' a) [MatchBranch' a]+    | MatchModal a (Modality' a) (Term' a) [MatchBranch' a]+    | MatchModalInto a (Modality' a) (Term' a) (Term' a) [MatchBranch' a]     | Hole a (HoleIdent' a)     | Var a (VarIdent' a)     | TypeAsc a (Term' a) (Term' a)@@ -534,6 +536,8 @@     IdJ p _ _ _ _ _ _ -> p     Match p _ _ -> p     MatchInto p _ _ _ -> p+    MatchModal p _ _ _ -> p+    MatchModalInto p _ _ _ _ -> p     Hole p _ -> p     Var p _ -> p     TypeAsc p _ _ -> p
src/Language/Rzk/Syntax/Par.hs view
@@ -48,3106 +48,3165 @@   , pModality   , pModComp   , pModalColon-  , pTerm7-  , pTerm5-  , pTerm4-  , pTerm3-  , pTerm2-  , pTerm6-  , pTerm1-  , pTerm-  , pListTerm-  ) where--import Prelude--import qualified Language.Rzk.Syntax.Abs-import Language.Rzk.Syntax.Lex-import qualified Data.Text-import qualified Control.Monad as Happy_Prelude-import qualified Data.Bool as Happy_Prelude-import qualified Data.Function as Happy_Prelude-import qualified Data.Int as Happy_Prelude-import qualified Data.List as Happy_Prelude-import qualified Data.Maybe as Happy_Prelude-import qualified Data.String as Happy_Prelude-import qualified Data.Tuple as Happy_Prelude-import qualified GHC.Err as Happy_Prelude-import qualified GHC.Num as Happy_Prelude-import qualified Text.Show as Happy_Prelude-import qualified Data.Array as Happy_Data_Array-import qualified Data.Bits as Bits-import qualified GHC.Exts as Happy_GHC_Exts-import Control.Applicative(Applicative(..))-import Control.Monad (ap)---- parser produced by Happy Version 2.2--newtype HappyAbsSyn  = HappyAbsSyn HappyAny-#if __GLASGOW_HASKELL__ >= 607-type HappyAny = Happy_GHC_Exts.Any-#else-type HappyAny = forall a . a-#endif-newtype HappyWrap47 = HappyWrap47 ((Language.Rzk.Syntax.Abs.BNFC'Position, String))-happyIn47 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, String)) -> (HappyAbsSyn )-happyIn47 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap47 x)-{-# INLINE happyIn47 #-}-happyOut47 :: (HappyAbsSyn ) -> HappyWrap47-happyOut47 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut47 #-}-newtype HappyWrap48 = HappyWrap48 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.VarIdentToken))-happyIn48 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.VarIdentToken)) -> (HappyAbsSyn )-happyIn48 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap48 x)-{-# INLINE happyIn48 #-}-happyOut48 :: (HappyAbsSyn ) -> HappyWrap48-happyOut48 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut48 #-}-newtype HappyWrap49 = HappyWrap49 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.HoleIdentToken))-happyIn49 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.HoleIdentToken)) -> (HappyAbsSyn )-happyIn49 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap49 x)-{-# INLINE happyIn49 #-}-happyOut49 :: (HappyAbsSyn ) -> HappyWrap49-happyOut49 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut49 #-}-newtype HappyWrap50 = HappyWrap50 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Module))-happyIn50 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Module)) -> (HappyAbsSyn )-happyIn50 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap50 x)-{-# INLINE happyIn50 #-}-happyOut50 :: (HappyAbsSyn ) -> HappyWrap50-happyOut50 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut50 #-}-newtype HappyWrap51 = HappyWrap51 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.HoleIdent))-happyIn51 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.HoleIdent)) -> (HappyAbsSyn )-happyIn51 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap51 x)-{-# INLINE happyIn51 #-}-happyOut51 :: (HappyAbsSyn ) -> HappyWrap51-happyOut51 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut51 #-}-newtype HappyWrap52 = HappyWrap52 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.VarIdent))-happyIn52 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.VarIdent)) -> (HappyAbsSyn )-happyIn52 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap52 x)-{-# INLINE happyIn52 #-}-happyOut52 :: (HappyAbsSyn ) -> HappyWrap52-happyOut52 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut52 #-}-newtype HappyWrap53 = HappyWrap53 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.VarIdent]))-happyIn53 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.VarIdent])) -> (HappyAbsSyn )-happyIn53 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap53 x)-{-# INLINE happyIn53 #-}-happyOut53 :: (HappyAbsSyn ) -> HappyWrap53-happyOut53 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut53 #-}-newtype HappyWrap54 = HappyWrap54 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.LanguageDecl))-happyIn54 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.LanguageDecl)) -> (HappyAbsSyn )-happyIn54 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap54 x)-{-# INLINE happyIn54 #-}-happyOut54 :: (HappyAbsSyn ) -> HappyWrap54-happyOut54 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut54 #-}-newtype HappyWrap55 = HappyWrap55 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Language))-happyIn55 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Language)) -> (HappyAbsSyn )-happyIn55 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap55 x)-{-# INLINE happyIn55 #-}-happyOut55 :: (HappyAbsSyn ) -> HappyWrap55-happyOut55 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut55 #-}-newtype HappyWrap56 = HappyWrap56 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Command))-happyIn56 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Command)) -> (HappyAbsSyn )-happyIn56 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap56 x)-{-# INLINE happyIn56 #-}-happyOut56 :: (HappyAbsSyn ) -> HappyWrap56-happyOut56 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut56 #-}-newtype HappyWrap57 = HappyWrap57 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Command]))-happyIn57 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Command])) -> (HappyAbsSyn )-happyIn57 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap57 x)-{-# INLINE happyIn57 #-}-happyOut57 :: (HappyAbsSyn ) -> HappyWrap57-happyOut57 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut57 #-}-newtype HappyWrap58 = HappyWrap58 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.DeclUsedVars))-happyIn58 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.DeclUsedVars)) -> (HappyAbsSyn )-happyIn58 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap58 x)-{-# INLINE happyIn58 #-}-happyOut58 :: (HappyAbsSyn ) -> HappyWrap58-happyOut58 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut58 #-}-newtype HappyWrap59 = HappyWrap59 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.SectionName))-happyIn59 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.SectionName)) -> (HappyAbsSyn )-happyIn59 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap59 x)-{-# INLINE happyIn59 #-}-happyOut59 :: (HappyAbsSyn ) -> HappyWrap59-happyOut59 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut59 #-}-newtype HappyWrap60 = HappyWrap60 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.DataSort))-happyIn60 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.DataSort)) -> (HappyAbsSyn )-happyIn60 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap60 x)-{-# INLINE happyIn60 #-}-happyOut60 :: (HappyAbsSyn ) -> HappyWrap60-happyOut60 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut60 #-}-newtype HappyWrap61 = HappyWrap61 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.DataBody))-happyIn61 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.DataBody)) -> (HappyAbsSyn )-happyIn61 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap61 x)-{-# INLINE happyIn61 #-}-happyOut61 :: (HappyAbsSyn ) -> HappyWrap61-happyOut61 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut61 #-}-newtype HappyWrap62 = HappyWrap62 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Constructor))-happyIn62 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Constructor)) -> (HappyAbsSyn )-happyIn62 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap62 x)-{-# INLINE happyIn62 #-}-happyOut62 :: (HappyAbsSyn ) -> HappyWrap62-happyOut62 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut62 #-}-newtype HappyWrap63 = HappyWrap63 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Constructor]))-happyIn63 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Constructor])) -> (HappyAbsSyn )-happyIn63 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap63 x)-{-# INLINE happyIn63 #-}-happyOut63 :: (HappyAbsSyn ) -> HappyWrap63-happyOut63 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut63 #-}-newtype HappyWrap64 = HappyWrap64 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ConstructorType))-happyIn64 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ConstructorType)) -> (HappyAbsSyn )-happyIn64 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap64 x)-{-# INLINE happyIn64 #-}-happyOut64 :: (HappyAbsSyn ) -> HappyWrap64-happyOut64 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut64 #-}-newtype HappyWrap65 = HappyWrap65 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.DataElim))-happyIn65 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.DataElim)) -> (HappyAbsSyn )-happyIn65 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap65 x)-{-# INLINE happyIn65 #-}-happyOut65 :: (HappyAbsSyn ) -> HappyWrap65-happyOut65 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut65 #-}-newtype HappyWrap66 = HappyWrap66 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.DataElim]))-happyIn66 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.DataElim])) -> (HappyAbsSyn )-happyIn66 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap66 x)-{-# INLINE happyIn66 #-}-happyOut66 :: (HappyAbsSyn ) -> HappyWrap66-happyOut66 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut66 #-}-newtype HappyWrap67 = HappyWrap67 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.MatchBranch))-happyIn67 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.MatchBranch)) -> (HappyAbsSyn )-happyIn67 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap67 x)-{-# INLINE happyIn67 #-}-happyOut67 :: (HappyAbsSyn ) -> HappyWrap67-happyOut67 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut67 #-}-newtype HappyWrap68 = HappyWrap68 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.MatchBranch]))-happyIn68 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.MatchBranch])) -> (HappyAbsSyn )-happyIn68 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap68 x)-{-# INLINE happyIn68 #-}-happyOut68 :: (HappyAbsSyn ) -> HappyWrap68-happyOut68 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut68 #-}-newtype HappyWrap69 = HappyWrap69 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Pattern))-happyIn69 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Pattern)) -> (HappyAbsSyn )-happyIn69 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap69 x)-{-# INLINE happyIn69 #-}-happyOut69 :: (HappyAbsSyn ) -> HappyWrap69-happyOut69 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut69 #-}-newtype HappyWrap70 = HappyWrap70 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Pattern]))-happyIn70 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Pattern])) -> (HappyAbsSyn )-happyIn70 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap70 x)-{-# INLINE happyIn70 #-}-happyOut70 :: (HappyAbsSyn ) -> HappyWrap70-happyOut70 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut70 #-}-newtype HappyWrap71 = HappyWrap71 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Pattern))-happyIn71 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Pattern)) -> (HappyAbsSyn )-happyIn71 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap71 x)-{-# INLINE happyIn71 #-}-happyOut71 :: (HappyAbsSyn ) -> HappyWrap71-happyOut71 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut71 #-}-newtype HappyWrap72 = HappyWrap72 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Pattern]))-happyIn72 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Pattern])) -> (HappyAbsSyn )-happyIn72 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap72 x)-{-# INLINE happyIn72 #-}-happyOut72 :: (HappyAbsSyn ) -> HappyWrap72-happyOut72 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut72 #-}-newtype HappyWrap73 = HappyWrap73 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Param))-happyIn73 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Param)) -> (HappyAbsSyn )-happyIn73 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap73 x)-{-# INLINE happyIn73 #-}-happyOut73 :: (HappyAbsSyn ) -> HappyWrap73-happyOut73 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut73 #-}-newtype HappyWrap74 = HappyWrap74 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Param]))-happyIn74 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Param])) -> (HappyAbsSyn )-happyIn74 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap74 x)-{-# INLINE happyIn74 #-}-happyOut74 :: (HappyAbsSyn ) -> HappyWrap74-happyOut74 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut74 #-}-newtype HappyWrap75 = HappyWrap75 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Bind))-happyIn75 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Bind)) -> (HappyAbsSyn )-happyIn75 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap75 x)-{-# INLINE happyIn75 #-}-happyOut75 :: (HappyAbsSyn ) -> HappyWrap75-happyOut75 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut75 #-}-newtype HappyWrap76 = HappyWrap76 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ParamDecl))-happyIn76 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ParamDecl)) -> (HappyAbsSyn )-happyIn76 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap76 x)-{-# INLINE happyIn76 #-}-happyOut76 :: (HappyAbsSyn ) -> HappyWrap76-happyOut76 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut76 #-}-newtype HappyWrap77 = HappyWrap77 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.SigmaParam))-happyIn77 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.SigmaParam)) -> (HappyAbsSyn )-happyIn77 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap77 x)-{-# INLINE happyIn77 #-}-happyOut77 :: (HappyAbsSyn ) -> HappyWrap77-happyOut77 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut77 #-}-newtype HappyWrap78 = HappyWrap78 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.SigmaParam]))-happyIn78 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.SigmaParam])) -> (HappyAbsSyn )-happyIn78 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap78 x)-{-# INLINE happyIn78 #-}-happyOut78 :: (HappyAbsSyn ) -> HappyWrap78-happyOut78 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut78 #-}-newtype HappyWrap79 = HappyWrap79 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Restriction))-happyIn79 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Restriction)) -> (HappyAbsSyn )-happyIn79 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap79 x)-{-# INLINE happyIn79 #-}-happyOut79 :: (HappyAbsSyn ) -> HappyWrap79-happyOut79 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut79 #-}-newtype HappyWrap80 = HappyWrap80 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Restriction]))-happyIn80 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Restriction])) -> (HappyAbsSyn )-happyIn80 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap80 x)-{-# INLINE happyIn80 #-}-happyOut80 :: (HappyAbsSyn ) -> HappyWrap80-happyOut80 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut80 #-}-newtype HappyWrap81 = HappyWrap81 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Modality))-happyIn81 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Modality)) -> (HappyAbsSyn )-happyIn81 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap81 x)-{-# INLINE happyIn81 #-}-happyOut81 :: (HappyAbsSyn ) -> HappyWrap81-happyOut81 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut81 #-}-newtype HappyWrap82 = HappyWrap82 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ModComp))-happyIn82 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ModComp)) -> (HappyAbsSyn )-happyIn82 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap82 x)-{-# INLINE happyIn82 #-}-happyOut82 :: (HappyAbsSyn ) -> HappyWrap82-happyOut82 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut82 #-}-newtype HappyWrap83 = HappyWrap83 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ModalColon))-happyIn83 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ModalColon)) -> (HappyAbsSyn )-happyIn83 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap83 x)-{-# INLINE happyIn83 #-}-happyOut83 :: (HappyAbsSyn ) -> HappyWrap83-happyOut83 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut83 #-}-newtype HappyWrap84 = HappyWrap84 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))-happyIn84 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )-happyIn84 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap84 x)-{-# INLINE happyIn84 #-}-happyOut84 :: (HappyAbsSyn ) -> HappyWrap84-happyOut84 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut84 #-}-newtype HappyWrap85 = HappyWrap85 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))-happyIn85 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )-happyIn85 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap85 x)-{-# INLINE happyIn85 #-}-happyOut85 :: (HappyAbsSyn ) -> HappyWrap85-happyOut85 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut85 #-}-newtype HappyWrap86 = HappyWrap86 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))-happyIn86 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )-happyIn86 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap86 x)-{-# INLINE happyIn86 #-}-happyOut86 :: (HappyAbsSyn ) -> HappyWrap86-happyOut86 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut86 #-}-newtype HappyWrap87 = HappyWrap87 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))-happyIn87 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )-happyIn87 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap87 x)-{-# INLINE happyIn87 #-}-happyOut87 :: (HappyAbsSyn ) -> HappyWrap87-happyOut87 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut87 #-}-newtype HappyWrap88 = HappyWrap88 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))-happyIn88 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )-happyIn88 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap88 x)-{-# INLINE happyIn88 #-}-happyOut88 :: (HappyAbsSyn ) -> HappyWrap88-happyOut88 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut88 #-}-newtype HappyWrap89 = HappyWrap89 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))-happyIn89 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )-happyIn89 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap89 x)-{-# INLINE happyIn89 #-}-happyOut89 :: (HappyAbsSyn ) -> HappyWrap89-happyOut89 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut89 #-}-newtype HappyWrap90 = HappyWrap90 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))-happyIn90 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )-happyIn90 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap90 x)-{-# INLINE happyIn90 #-}-happyOut90 :: (HappyAbsSyn ) -> HappyWrap90-happyOut90 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut90 #-}-newtype HappyWrap91 = HappyWrap91 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))-happyIn91 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )-happyIn91 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap91 x)-{-# INLINE happyIn91 #-}-happyOut91 :: (HappyAbsSyn ) -> HappyWrap91-happyOut91 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut91 #-}-newtype HappyWrap92 = HappyWrap92 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Term]))-happyIn92 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Term])) -> (HappyAbsSyn )-happyIn92 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap92 x)-{-# INLINE happyIn92 #-}-happyOut92 :: (HappyAbsSyn ) -> HappyWrap92-happyOut92 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut92 #-}-happyInTok :: (Token) -> (HappyAbsSyn )-happyInTok x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyInTok #-}-happyOutTok :: (HappyAbsSyn ) -> (Token)-happyOutTok x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOutTok #-}---{-# NOINLINE happyTokenStrings #-}-happyTokenStrings = ["'#assume'","'#check'","'#compute'","'#compute-nf'","'#compute-whnf'","'#data'","'#def'","'#define'","'#end'","'#lang'","'#postulate'","'#section'","'#set-option'","'#unset-option'","'#variable'","'#variables'","'$extract$'","'('","')'","'*'","'*_1'","'*\8321'","','","'->'","'/'","'/\\\\'","'0_2'","'0_I'","'0\7522'","'0\8322'","'1'","'1_2'","'1_I'","'1\7522'","'1\8322'","'2'","':'","':='","':_#'","':_b'","':_id'","':_op'","':\7506\7510'","':\9837'","':\9839'","';'","'<='","'='","'==='","'=>'","'=_{'","'BOT'","'CUBE'","'II'","'Sigma'","'TOP'","'TOPE'","'U'","'Unit'","'['","'\\\\'","'\\\\/'","']'","'_#'","'_b'","'_id'","'_op'","'as'","'compute'","'eliminate'","'first'","'flip_op'","'flip\7506\7510'","'idJ'","'in'","'inf'","'into'","'inv_op'","'inv\7506\7510'","'let'","'match'","'mod'","'recBOT'","'recOR'","'refl'","'refl_{'","'rzk-1'","'second'","'sup'","'unflip_op'","'unflip\7506\7510'","'uninv_op'","'uninv\7506\7510'","'unit'","'uses'","'with'","'|'","'|->'","'}'","'\215'","'\931'","'\960\8321'","'\960\8322'","'\7506\7510'","'\8594'","'\8614'","'\8658'","'\8721'","'\8743'","'\8744'","'\8801'","'\8804'","'\8851'","'\8852'","'\8868'","'\8869'","'\9837'","'\9839'","'\120128'","L_quoted","L_VarIdentToken","L_HoleIdentToken","%eof"]--happyActOffsets :: HappyAddr-happyActOffsets = HappyA# "\xff\xff\xff\xff\x9d\xff\xff\xff\xa4\xff\xff\xff\xa4\xff\xff\xff\x21\x00\x00\x00\xcb\xff\xff\xff\xbe\x0c\x00\x00\xbe\x0c\x00\x00\xd5\xff\xff\xff\xc1\xff\xff\xff\x39\x00\x00\x00\x4d\x00\x00\x00\x1d\x00\x00\x00\x1d\x00\x00\x00\x84\x00\x00\x00\xbd\xff\xff\xff\xbd\xff\xff\xff\x37\x00\x00\x00\x37\x00\x00\x00\x41\x00\x00\x00\x41\x00\x00\x00\x41\x00\x00\x00\x41\x00\x00\x00\xc4\x00\x00\x00\xc4\x00\x00\x00\xd4\x00\x00\x00\x59\x00\x00\x00\xd4\x00\x00\x00\xd4\x00\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\x8f\x01\x00\x00\x8f\x01\x00\x00\xa3\x03\x00\x00\xf7\x01\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\xff\xff\xff\xf7\x01\x00\x00\x00\x00\x00\x00\x91\x01\x00\x00\xed\xff\xff\xff\xd8\xff\xff\xff\x10\x01\x00\x00\x43\x01\x00\x00\x00\x00\x00\x00\xc7\x00\x00\x00\x79\x00\x00\x00\x8f\x01\x00\x00\xef\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\x01\x00\x00\xf7\x01\x00\x00\xf7\x01\x00\x00\xf7\x00\x00\x00\xf7\x01\x00\x00\xf7\x01\x00\x00\xf7\x01\x00\x00\xfd\x01\x00\x00\xf7\x01\x00\x00\x8f\x01\x00\x00\x00\x00\x00\x00\x1a\x01\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\xf7\x01\x00\x00\xf7\x01\x00\x00\xf7\x01\x00\x00\xf7\x01\x00\x00\xf7\x01\x00\x00\xf7\x01\x00\x00\x00\x00\x00\x00\x21\x01\x00\x00\xf7\x01\x00\x00\xf7\x01\x00\x00\x00\x00\x00\x00\x27\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\xc3\x00\x00\x00\x56\x00\x00\x00\xc3\x00\x00\x00\xf5\x00\x00\x00\xef\xff\xff\xff\xc3\x00\x00\x00\xa9\x01\x00\x00\xc3\x00\x00\x00\xc3\x00\x00\x00\x0d\x00\x00\x00\xc3\x00\x00\x00\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x01\x00\x00\xe1\x00\x00\x00\xe1\x00\x00\x00\x5e\x01\x00\x00\x18\x01\x00\x00\x2e\x00\x00\x00\x18\x01\x00\x00\x00\x00\x00\x00\xaa\x0c\x00\x00\x7a\x01\x00\x00\x24\x01\x00\x00\x13\x01\x00\x00\x00\x00\x00\x00\x24\x01\x00\x00\x24\x01\x00\x00\xa9\x01\x00\x00\x78\x01\x00\x00\x2c\x01\x00\x00\x00\x00\x00\x00\x22\x01\x00\x00\x2c\x01\x00\x00\x2a\x01\x00\x00\x2c\x01\x00\x00\x00\x00\x00\x00\xb7\x01\x00\x00\x59\x01\x00\x00\x59\x01\x00\x00\x2a\x01\x00\x00\x59\x01\x00\x00\x59\x01\x00\x00\x48\x01\x00\x00\x85\x01\x00\x00\x6c\x01\x00\x00\x6c\x01\x00\x00\xbd\xff\xff\xff\x6c\x01\x00\x00\xa8\x01\x00\x00\xc7\x01\x00\x00\x72\x01\x00\x00\x72\x01\x00\x00\xef\xff\xff\xff\xf4\xff\xff\xff\xaf\x01\x00\x00\x93\x01\x00\x00\x93\x01\x00\x00\x93\x01\x00\x00\xb5\x01\x00\x00\xb8\x01\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\xb8\x01\x00\x00\xb8\x01\x00\x00\x22\x02\x00\x00\x07\x02\x00\x00\xcc\x01\x00\x00\xcb\x01\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\xcb\x01\x00\x00\xcb\x01\x00\x00\xcb\x01\x00\x00\xcb\x01\x00\x00\xcb\x01\x00\x00\xcb\x01\x00\x00\xd8\x01\x00\x00\xd8\x01\x00\x00\xf0\x01\x00\x00\xf0\x01\x00\x00\xd6\x01\x00\x00\xd6\x01\x00\x00\x00\x00\x00\x00\xd6\x01\x00\x00\x30\x02\x00\x00\x14\x02\x00\x00\x15\x02\x00\x00\x15\x02\x00\x00\x15\x02\x00\x00\x15\x02\x00\x00\xbe\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x02\x00\x00\x76\x02\x00\x00\x89\x02\x00\x00\x00\x00\x00\x00\x7f\x02\x00\x00\x00\x00\x00\x00\x5f\x02\x00\x00\x00\x00\x00\x00\x5f\x02\x00\x00\x5f\x02\x00\x00\x5f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9a\x02\x00\x00\xa3\x02\x00\x00\xbe\x0c\x00\x00\x64\x02\x00\x00\x00\x00\x00\x00\xbd\xff\xff\xff\x64\x02\x00\x00\x00\x00\x00\x00\xbe\x02\x00\x00\x00\x00\x00\x00\x7e\x02\x00\x00\x7e\x02\x00\x00\x00\x00\x00\x00\x7e\x02\x00\x00\xe3\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\x00\x00\x00\x00\x2a\x01\x00\x00\x09\x00\x00\x00\xb3\x0c\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\xef\xff\xff\xff\xe2\x02\x00\x00\x2a\x01\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\x8f\x01\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xc1\x00\x00\x00\xa7\x00\x00\x00\xef\xff\xff\xff\x2a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\x01\x00\x00\x00\x00\x00\x00\xf5\xff\xff\xff\xef\xff\xff\xff\xf7\x01\x00\x00\x02\x00\x00\x00\xd8\x02\x00\x00\x85\x00\x00\x00\x8f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\x01\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x2a\x01\x00\x00\x41\x0c\x00\x00\xf7\x01\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xde\x00\x00\x00\xde\x00\x00\x00\xde\x00\x00\x00\xde\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\xbc\x0c\x00\x00\xea\x02\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\xeb\x02\x00\x00\x00\x00\x00\x00\x2a\x01\x00\x00\xe1\x02\x00\x00\x8f\x01\x00\x00\xef\xff\xff\xff\xa0\x02\x00\x00\xf7\x01\x00\x00\x00\x00\x00\x00\xf7\x02\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xc5\x0c\x00\x00\x08\x03\x00\x00\xce\x0c\x00\x00\x13\x03\x00\x00\xd0\x02\x00\x00\x00\x00\x00\x00\xa9\x01\x00\x00\xa9\x01\x00\x00\xa9\x01\x00\x00\xa9\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\x2a\x01\x00\x00\xfb\x02\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\x00\x00\x00\x00\x10\x03\x00\x00\x11\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x03\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\x60\x00\x00\x00\xc8\x00\x00\x00\x15\x01\x00\x00\x16\x01\x00\x00\xc6\x02\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x03\x00\x00\xef\xff\xff\xff\x1c\x03\x00\x00\xef\xff\xff\xff\x23\x03\x00\x00\xef\xff\xff\xff\x19\x03\x00\x00\x31\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x5f\x01\x00\x00\xa7\x00\x00\x00\x2a\x01\x00\x00\xef\xff\xff\xff\x2a\x01\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\xf2\x02\x00\x00\x00\x00\x00\x00\x52\x03\x00\x00\x53\x03\x00\x00\x1e\x03\x00\x00\x2a\x01\x00\x00\xef\xff\xff\xff\x3f\x03\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x01\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\x22\x00\x00\x00\x8d\x01\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\xef\xff\xff\xff\x59\x03\x00\x00\x5a\x03\x00\x00\x5b\x03\x00\x00\x58\x03\x00\x00\xef\xff\xff\xff\x12\x00\x00\x00\x4a\x03\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\xf9\x02\x00\x00\x00\x00\x00\x00\x61\x03\x00\x00\x63\x03\x00\x00\x64\x03\x00\x00\x66\x03\x00\x00\x80\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x01\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x54\x03\x00\x00\x00\x00\x00\x00\x6e\x03\x00\x00\xef\xff\xff\xff\x6f\x03\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\x72\x03\x00\x00\xef\xff\xff\xff\x75\x03\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\x89\x03\x00\x00\x8a\x03\x00\x00\x8b\x03\x00\x00\x88\x03\x00\x00\x8c\x03\x00\x00\x8e\x03\x00\x00\x8f\x03\x00\x00\x91\x03\x00\x00\xaf\x03\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\x01\x01\x00\x00\xef\xff\xff\xff\x92\x03\x00\x00\xac\x03\x00\x00\xad\x03\x00\x00\xb4\x03\x00\x00\xbf\x03\x00\x00\xc0\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\xbd\x03\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\x56\x03\x00\x00\x00\x00\x00\x00\x45\x01\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\xef\xff\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\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\x8d\x03\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbe\x03\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\x97\x03\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\xef\xff\xff\xff\xcc\x03\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\xc4\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#--happyGotoOffsets :: HappyAddr-happyGotoOffsets = HappyA# "\x06\x01\x00\x00\xa3\x00\x00\x00\xad\x01\x00\x00\x5c\x00\x00\x00\xeb\x03\x00\x00\xec\x03\x00\x00\xea\x03\x00\x00\x48\x00\x00\x00\xef\x03\x00\x00\x8b\x02\x00\x00\xee\x03\x00\x00\xe9\x03\x00\x00\xc5\x02\x00\x00\x59\x02\x00\x00\xed\x03\x00\x00\xf0\x03\x00\x00\xda\x00\x00\x00\xdc\x01\x00\x00\xd1\x00\x00\x00\xae\x01\x00\x00\x18\x00\x00\x00\x70\x0b\x00\x00\x4d\x0b\x00\x00\x30\x0c\x00\x00\x73\x0c\x00\x00\x9a\x01\x00\x00\x0c\x0b\x00\x00\xde\x02\x00\x00\x80\x00\x00\x00\x28\x03\x00\x00\xb0\x02\x00\x00\xda\x03\x00\x00\x23\x01\x00\x00\xd9\x03\x00\x00\xd5\x01\x00\x00\x1b\x0b\x00\x00\x01\x0b\x00\x00\xd7\x0a\x00\x00\xb4\x09\x00\x00\x5d\x0b\x00\x00\xc4\x09\x00\x00\x38\x03\x00\x00\x53\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\x42\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x93\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x01\x00\x00\x57\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x98\x0b\x00\x00\xaa\x0b\x00\x00\xaf\x0b\x00\x00\x00\x00\x00\x00\xba\x0b\x00\x00\xbf\x0b\x00\x00\xc4\x0b\x00\x00\x87\x01\x00\x00\xc9\x0b\x00\x00\xdd\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x03\x00\x00\xd1\x0b\x00\x00\xd6\x0b\x00\x00\xeb\x0b\x00\x00\xf0\x0b\x00\x00\xf8\x0b\x00\x00\xfd\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x0c\x00\x00\x07\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x0c\x00\x00\x86\x03\x00\x00\x00\x00\x00\x00\x12\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdc\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x0c\x00\x00\x00\x00\x00\x00\x88\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x91\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\x03\x00\x00\x61\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x02\x00\x00\x00\x00\x00\x00\xb5\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\x87\x00\x00\x00\xc5\x03\x00\x00\xe4\x03\x00\x00\xf4\x03\x00\x00\x13\x04\x00\x00\xb0\x01\x00\x00\xee\x01\x00\x00\xf4\x01\x00\x00\xc2\x02\x00\x00\x58\x02\x00\x00\xc7\x02\x00\x00\x03\x04\x00\x00\x04\x04\x00\x00\x5a\x02\x00\x00\x1f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfd\x03\x00\x00\x06\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\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\xfc\x03\x00\x00\x00\x00\x00\x00\x07\x04\x00\x00\x08\x04\x00\x00\x16\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\x01\x00\x00\x24\x02\x00\x00\x00\x00\x00\x00\xc9\x01\x00\x00\xf6\x02\x00\x00\x00\x00\x00\x00\xf7\x03\x00\x00\x00\x00\x00\x00\xca\x02\x00\x00\xf4\x02\x00\x00\x00\x00\x00\x00\x4e\x02\x00\x00\x00\x00\x00\x00\x23\x04\x00\x00\x42\x04\x00\x00\x00\x00\x00\x00\x9a\x0c\x00\x00\xa8\x0c\x00\x00\xfe\x03\x00\x00\x00\x00\x00\x00\x52\x04\x00\x00\x00\x00\x00\x00\xc0\x02\x00\x00\x00\x00\x00\x00\xd3\x01\x00\x00\x71\x04\x00\x00\x81\x04\x00\x00\xa0\x04\x00\x00\xb0\x04\x00\x00\xec\x02\x00\x00\x01\x04\x00\x00\x69\x0b\x00\x00\x79\x0b\x00\x00\x7f\x0b\x00\x00\x88\x0b\x00\x00\x00\x00\x00\x00\x9d\x0a\x00\x00\xcf\x04\x00\x00\x1a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\x02\x00\x00\x29\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x02\x00\x00\x09\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x0c\x00\x00\xdf\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x03\x00\x00\x02\x04\x00\x00\x39\x0c\x00\x00\x80\x02\x00\x00\xd3\x09\x00\x00\xac\x0a\x00\x00\xb8\x0a\x00\x00\xe2\x0a\x00\x00\xf1\x0a\x00\x00\x2b\x0b\x00\x00\x36\x0b\x00\x00\x42\x0b\x00\x00\x52\x0b\x00\x00\x00\x00\x00\x00\xe3\x09\x00\x00\xf2\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x04\x00\x00\x00\x00\x00\x00\x0e\x05\x00\x00\x2d\x05\x00\x00\x05\x04\x00\x00\x00\x00\x00\x00\x02\x0a\x00\x00\x11\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xee\x02\x00\x00\x00\x00\x00\x00\x0a\x04\x00\x00\x3d\x05\x00\x00\x71\x03\x00\x00\x3e\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x04\x00\x00\x00\x00\x00\x00\x0b\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x0c\x00\x00\x43\x0c\x00\x00\x43\x0c\x00\x00\x43\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x05\x00\x00\x8b\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x05\x00\x00\xba\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xca\x05\x00\x00\xe9\x05\x00\x00\x70\x0c\x00\x00\x82\x0c\x00\x00\x8b\x0c\x00\x00\x91\x0c\x00\x00\x2d\x04\x00\x00\xf9\x05\x00\x00\x18\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x06\x00\x00\x00\x00\x00\x00\x47\x06\x00\x00\x00\x00\x00\x00\x57\x06\x00\x00\x20\x04\x00\x00\x24\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x06\x00\x00\x86\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc7\x0a\x00\x00\x82\x02\x00\x00\xa5\x06\x00\x00\x85\x02\x00\x00\xb5\x06\x00\x00\xd4\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x0b\x00\x00\xe4\x06\x00\x00\x00\x00\x00\x00\x03\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x02\x00\x00\x13\x07\x00\x00\x32\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x07\x00\x00\x00\x00\x00\x00\x91\x02\x00\x00\x00\x00\x00\x00\x61\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x07\x00\x00\x00\x00\x00\x00\xa0\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\x00\x00\x9f\x0c\x00\x00\x00\x00\x00\x00\xa0\x07\x00\x00\x00\x00\x00\x00\xbf\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x25\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcf\x07\x00\x00\x00\x00\x00\x00\xee\x07\x00\x00\x00\x00\x00\x00\xfe\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x08\x00\x00\x00\x00\x00\x00\x2d\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x08\x00\x00\x5c\x08\x00\x00\x7b\x08\x00\x00\x00\x00\x00\x00\x8b\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x0a\x00\x00\x30\x0a\x00\x00\x40\x0a\x00\x00\x00\x00\x00\x00\xaa\x08\x00\x00\xba\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x0a\x00\x00\x5f\x0a\x00\x00\x6e\x0a\x00\x00\x7e\x0a\x00\x00\x8d\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd9\x08\x00\x00\x00\x00\x00\x00\xe9\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x09\x00\x00\x18\x09\x00\x00\x37\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x09\x00\x00\x00\x00\x00\x00\x95\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa5\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#--happyDefActions :: HappyAddr-happyDefActions = HappyA# "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb7\xff\xff\xff\xb4\xff\xff\xff\xb3\xff\xff\xff\xb0\xff\xff\xff\xae\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xa8\xff\xff\xff\x00\x00\x00\x00\xa5\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\xff\xff\xff\xcf\xff\xff\xff\xd0\xff\xff\xff\x53\xff\xff\xff\x52\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x2b\xff\xff\xff\x41\xff\xff\xff\x3d\xff\xff\xff\x3a\xff\xff\xff\x18\xff\xff\xff\x45\xff\xff\xff\x0f\xff\xff\xff\x0e\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\xff\xff\xff\x6a\xff\xff\xff\x4f\xff\xff\xff\x4c\xff\xff\xff\x65\xff\xff\xff\x68\xff\xff\xff\x6b\xff\xff\xff\x4e\xff\xff\xff\x4b\xff\xff\xff\x64\xff\xff\xff\x67\xff\xff\xff\x69\xff\xff\xff\x49\xff\xff\xff\x6d\xff\xff\xff\x4d\xff\xff\xff\x00\x00\x00\x00\x4a\xff\xff\xff\x6c\xff\xff\xff\x6e\xff\xff\xff\x5f\xff\xff\xff\x00\x00\x00\x00\x7b\xff\xff\xff\x7d\xff\xff\xff\x78\xff\xff\xff\x79\xff\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\x61\xff\xff\xff\x00\x00\x00\x00\x59\xff\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\x5a\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\xff\xff\xff\x00\x00\x00\x00\x63\xff\xff\xff\x62\xff\xff\xff\x7e\xff\xff\xff\x7c\xff\xff\xff\x66\xff\xff\xff\xd3\xff\xff\xff\xd2\xff\xff\xff\x00\x00\x00\x00\x18\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\xff\xff\xff\x71\xff\xff\xff\x72\xff\xff\xff\x6f\xff\xff\xff\x73\xff\xff\xff\x75\xff\xff\xff\x74\xff\xff\xff\x77\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x80\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9c\xff\xff\xff\x00\x00\x00\x00\x84\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x9d\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x8b\xff\xff\xff\x8d\xff\xff\xff\x00\x00\x00\x00\x94\xff\xff\xff\x8f\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\xff\xff\xff\x96\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x99\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9f\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xa5\xff\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\xa8\xff\xff\xff\xab\xff\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\xb2\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb3\xff\xff\xff\x00\x00\x00\x00\xb3\xff\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\xcb\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xce\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb7\xff\xff\xff\xd1\xff\xff\xff\xcd\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc9\xff\xff\xff\x00\x00\x00\x00\xbf\xff\xff\xff\xb4\xff\xff\xff\xbe\xff\xff\xff\xb4\xff\xff\xff\xb4\xff\xff\xff\xb4\xff\xff\xff\xc6\xff\xff\xff\xc5\xff\xff\xff\xc7\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xb7\xff\xff\xff\x00\x00\x00\x00\xb1\xff\xff\xff\xa5\xff\xff\xff\x00\x00\x00\x00\xac\xff\xff\xff\xa8\xff\xff\xff\xa9\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xa4\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x98\xff\xff\xff\x00\x00\x00\x00\x99\xff\xff\xff\x00\x00\x00\x00\x8e\xff\xff\xff\x00\x00\x00\x00\x2f\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\xff\xff\xff\x2d\xff\xff\xff\x00\x00\x00\x00\x36\xff\xff\xff\x35\xff\xff\xff\x32\xff\xff\xff\x31\xff\xff\xff\x00\x00\x00\x00\x27\xff\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\x38\xff\xff\xff\x37\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x34\xff\xff\xff\x33\xff\xff\xff\x28\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x26\xff\xff\xff\x17\xff\xff\xff\x42\xff\xff\xff\x43\xff\xff\xff\x40\xff\xff\xff\x3f\xff\xff\xff\x3e\xff\xff\xff\x3c\xff\xff\xff\x3b\xff\xff\xff\x39\xff\xff\xff\x10\xff\xff\xff\x0d\xff\xff\xff\x2e\xff\xff\xff\x00\x00\x00\x00\x51\xff\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\x29\xff\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\x5c\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x58\xff\xff\xff\x2a\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\xff\xff\xff\x47\xff\xff\xff\x46\xff\xff\xff\x48\xff\xff\xff\x44\xff\xff\xff\x76\xff\xff\xff\x7f\xff\xff\xff\x82\xff\xff\xff\x81\xff\xff\xff\x86\xff\xff\xff\x85\xff\xff\xff\x83\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x8c\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x95\xff\xff\xff\xa2\xff\xff\xff\xa0\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x9e\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xad\xff\xff\xff\xaa\xff\xff\xff\xaf\xff\xff\xff\x00\x00\x00\x00\xb6\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xb0\xff\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\xcc\xff\xff\xff\xc0\xff\xff\xff\xc1\xff\xff\xff\xca\xff\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\xae\xff\xff\xff\xb0\xff\xff\xff\xc8\xff\xff\xff\xc2\xff\xff\xff\xb5\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xa3\xff\xff\xff\xa1\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x30\xff\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\x60\xff\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\x1f\xff\xff\xff\x13\xff\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\x88\xff\xff\xff\x00\x00\x00\x00\x5e\xff\xff\xff\x00\x00\x00\x00\x8a\xff\xff\xff\x00\x00\x00\x00\x86\xff\xff\xff\x85\xff\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\x55\xff\xff\xff\x00\x00\x00\x00\x57\xff\xff\xff\x86\xff\xff\xff\x85\xff\xff\xff\x00\x00\x00\x00\x86\xff\xff\xff\x00\x00\x00\x00\x22\xff\xff\xff\x9b\xff\xff\xff\x00\x00\x00\x00\x91\xff\xff\xff\x00\x00\x00\x00\x93\xff\xff\xff\x00\x00\x00\x00\xa6\xff\xff\xff\xa7\xff\xff\xff\xae\xff\xff\xff\xb8\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\xff\xff\xff\x00\x00\x00\x00\xc4\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb9\xff\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\x20\xff\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\x00\x00\x87\xff\xff\xff\x5d\xff\xff\xff\x89\xff\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\x1e\xff\xff\xff\x00\x00\x00\x00\x54\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9a\xff\xff\xff\x90\xff\xff\xff\x92\xff\xff\xff\xba\xff\xff\xff\x00\x00\x00\x00\xbc\xff\xff\xff\x00\x00\x00\x00\xbd\xff\xff\xff\xbb\xff\xff\xff\x11\xff\xff\xff\x12\xff\xff\xff\x23\xff\xff\xff\x24\xff\xff\xff\x25\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\xff\xff\xff\x00\x00\x00\x00\x14\xff\xff\xff\x15\xff\xff\xff\x16\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x1b\xff\xff\xff\x00\x00\x00\x00\x1c\xff\xff\xff\x00\x00\x00\x00\x1a\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x19\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x56\xff\xff\xff"#--happyCheck :: HappyAddr-happyCheck = HappyA# "\xff\xff\xff\xff\x12\x00\x00\x00\x13\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x13\x00\x00\x00\x1b\x00\x00\x00\x19\x00\x00\x00\x0b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x13\x00\x00\x00\x33\x00\x00\x00\x3f\x00\x00\x00\x7b\x00\x00\x00\x01\x00\x00\x00\x26\x00\x00\x00\x26\x00\x00\x00\x13\x00\x00\x00\x05\x00\x00\x00\x7a\x00\x00\x00\x14\x00\x00\x00\x19\x00\x00\x00\x18\x00\x00\x00\x15\x00\x00\x00\x58\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x0b\x00\x00\x00\x3e\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x14\x00\x00\x00\x60\x00\x00\x00\x14\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x7a\x00\x00\x00\x4d\x00\x00\x00\x14\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x6f\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\x00\x00\x5d\x00\x00\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x6c\x00\x00\x00\x4e\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x00\x00\x5f\x00\x00\x00\x13\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x68\x00\x00\x00\x69\x00\x00\x00\x64\x00\x00\x00\x6a\x00\x00\x00\x6e\x00\x00\x00\x6d\x00\x00\x00\x01\x00\x00\x00\x4c\x00\x00\x00\x26\x00\x00\x00\x4e\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x5f\x00\x00\x00\x7a\x00\x00\x00\x7b\x00\x00\x00\x12\x00\x00\x00\x13\x00\x00\x00\x62\x00\x00\x00\x7a\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x6a\x00\x00\x00\x65\x00\x00\x00\x13\x00\x00\x00\x27\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x72\x00\x00\x00\x73\x00\x00\x00\x01\x00\x00\x00\x62\x00\x00\x00\x7a\x00\x00\x00\x62\x00\x00\x00\x05\x00\x00\x00\x26\x00\x00\x00\x31\x00\x00\x00\x01\x00\x00\x00\x7c\x00\x00\x00\x34\x00\x00\x00\x62\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x63\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x16\x00\x00\x00\x7a\x00\x00\x00\x13\x00\x00\x00\x6b\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x5f\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x02\x00\x00\x00\x4d\x00\x00\x00\x04\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x26\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x7a\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\x00\x00\x5d\x00\x00\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x12\x00\x00\x00\x13\x00\x00\x00\x7a\x00\x00\x00\x79\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x5f\x00\x00\x00\x67\x00\x00\x00\x68\x00\x00\x00\x69\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x01\x00\x00\x00\x7a\x00\x00\x00\x7b\x00\x00\x00\x14\x00\x00\x00\x05\x00\x00\x00\x13\x00\x00\x00\x53\x00\x00\x00\x18\x00\x00\x00\x7a\x00\x00\x00\x13\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x18\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x5f\x00\x00\x00\x14\x00\x00\x00\x15\x00\x00\x00\x13\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x12\x00\x00\x00\x13\x00\x00\x00\x26\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x15\x00\x00\x00\x4d\x00\x00\x00\x7c\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x13\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x7a\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\x00\x00\x5d\x00\x00\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x13\x00\x00\x00\x13\x00\x00\x00\x03\x00\x00\x00\x13\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x07\x00\x00\x00\x67\x00\x00\x00\x68\x00\x00\x00\x69\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x01\x00\x00\x00\x7a\x00\x00\x00\x7b\x00\x00\x00\x5f\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x13\x00\x00\x00\x5f\x00\x00\x00\x13\x00\x00\x00\x13\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x13\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x5f\x00\x00\x00\x13\x00\x00\x00\x13\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x13\x00\x00\x00\x26\x00\x00\x00\x26\x00\x00\x00\x13\x00\x00\x00\x7a\x00\x00\x00\x7c\x00\x00\x00\x4b\x00\x00\x00\x31\x00\x00\x00\x7a\x00\x00\x00\x65\x00\x00\x00\x34\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x4c\x00\x00\x00\x7a\x00\x00\x00\x4e\x00\x00\x00\x72\x00\x00\x00\x73\x00\x00\x00\x1a\x00\x00\x00\x5f\x00\x00\x00\x5f\x00\x00\x00\x45\x00\x00\x00\x13\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x13\x00\x00\x00\x19\x00\x00\x00\x7c\x00\x00\x00\x69\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x7a\x00\x00\x00\x7a\x00\x00\x00\x7b\x00\x00\x00\x7c\x00\x00\x00\x5f\x00\x00\x00\x14\x00\x00\x00\x5f\x00\x00\x00\x5f\x00\x00\x00\x18\x00\x00\x00\x18\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x33\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x5f\x00\x00\x00\x12\x00\x00\x00\x13\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x01\x00\x00\x00\x5f\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x00\x00\x05\x00\x00\x00\x7a\x00\x00\x00\x4b\x00\x00\x00\x7a\x00\x00\x00\x7a\x00\x00\x00\x4c\x00\x00\x00\x18\x00\x00\x00\x4e\x00\x00\x00\x7c\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x01\x00\x00\x00\x7a\x00\x00\x00\x16\x00\x00\x00\x26\x00\x00\x00\x05\x00\x00\x00\x7c\x00\x00\x00\x14\x00\x00\x00\x5f\x00\x00\x00\x1c\x00\x00\x00\x7a\x00\x00\x00\x18\x00\x00\x00\x15\x00\x00\x00\x5f\x00\x00\x00\x7c\x00\x00\x00\x22\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x00\x00\x69\x00\x00\x00\x6a\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x16\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x05\x00\x00\x00\x6c\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x13\x00\x00\x00\x7a\x00\x00\x00\x7b\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x30\x00\x00\x00\x7a\x00\x00\x00\x32\x00\x00\x00\x16\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x18\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x01\x00\x00\x00\x7c\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x12\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x05\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x62\x00\x00\x00\x7c\x00\x00\x00\x16\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x7c\x00\x00\x00\x01\x00\x00\x00\x14\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x05\x00\x00\x00\x4b\x00\x00\x00\x01\x00\x00\x00\x65\x00\x00\x00\x22\x00\x00\x00\x69\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x70\x00\x00\x00\x71\x00\x00\x00\x72\x00\x00\x00\x73\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x01\x00\x00\x00\x5f\x00\x00\x00\x61\x00\x00\x00\x13\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x7c\x00\x00\x00\x13\x00\x00\x00\x62\x00\x00\x00\x69\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x01\x00\x00\x00\x7a\x00\x00\x00\x7b\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x61\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x05\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x7a\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x7c\x00\x00\x00\x13\x00\x00\x00\x2f\x00\x00\x00\x16\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x16\x00\x00\x00\x1c\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x4b\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x7a\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x7c\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x01\x00\x00\x00\x53\x00\x00\x00\x79\x00\x00\x00\x7c\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x5f\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x5f\x00\x00\x00\x05\x00\x00\x00\x05\x00\x00\x00\x05\x00\x00\x00\x69\x00\x00\x00\x01\x00\x00\x00\x14\x00\x00\x00\x15\x00\x00\x00\x22\x00\x00\x00\x05\x00\x00\x00\x69\x00\x00\x00\x25\x00\x00\x00\x0f\x00\x00\x00\x10\x00\x00\x00\x7a\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x1d\x00\x00\x00\x7a\x00\x00\x00\x7b\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x22\x00\x00\x00\x16\x00\x00\x00\x7a\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x58\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x7a\x00\x00\x00\x05\x00\x00\x00\x05\x00\x00\x00\x7c\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x2f\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x0c\x00\x00\x00\x16\x00\x00\x00\x0f\x00\x00\x00\x10\x00\x00\x00\x16\x00\x00\x00\x26\x00\x00\x00\x1d\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x22\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\x26\x00\x00\x00\x31\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x60\x00\x00\x00\x26\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x26\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x1d\x00\x00\x00\x0c\x00\x00\x00\x05\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x0c\x00\x00\x00\x0f\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\x7a\x00\x00\x00\x01\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x05\x00\x00\x00\x26\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x16\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x7a\x00\x00\x00\x05\x00\x00\x00\x18\x00\x00\x00\x05\x00\x00\x00\x1e\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x27\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x18\x00\x00\x00\x18\x00\x00\x00\x16\x00\x00\x00\x0f\x00\x00\x00\x10\x00\x00\x00\x16\x00\x00\x00\x27\x00\x00\x00\x1d\x00\x00\x00\x1c\x00\x00\x00\x14\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\x7a\x00\x00\x00\x01\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x05\x00\x00\x00\x18\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x18\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x16\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x05\x00\x00\x00\x64\x00\x00\x00\x05\x00\x00\x00\x26\x00\x00\x00\x26\x00\x00\x00\x1e\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x40\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x14\x00\x00\x00\x79\x00\x00\x00\x27\x00\x00\x00\x26\x00\x00\x00\x26\x00\x00\x00\x16\x00\x00\x00\x16\x00\x00\x00\x1d\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x20\x00\x00\x00\x26\x00\x00\x00\x22\x00\x00\x00\x1e\x00\x00\x00\x1e\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\x64\x00\x00\x00\x26\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x13\x00\x00\x00\x27\x00\x00\x00\x14\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x4c\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x14\x00\x00\x00\x14\x00\x00\x00\x14\x00\x00\x00\x18\x00\x00\x00\x27\x00\x00\x00\x01\x00\x00\x00\x7a\x00\x00\x00\x1d\x00\x00\x00\x14\x00\x00\x00\x05\x00\x00\x00\x14\x00\x00\x00\x14\x00\x00\x00\x22\x00\x00\x00\x14\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\x14\x00\x00\x00\x15\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x14\x00\x00\x00\x27\x00\x00\x00\x27\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x27\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x27\x00\x00\x00\x14\x00\x00\x00\x14\x00\x00\x00\x14\x00\x00\x00\x18\x00\x00\x00\x01\x00\x00\x00\x4c\x00\x00\x00\x1d\x00\x00\x00\x18\x00\x00\x00\x05\x00\x00\x00\x18\x00\x00\x00\x18\x00\x00\x00\x22\x00\x00\x00\x18\x00\x00\x00\x18\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\x14\x00\x00\x00\x15\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x14\x00\x00\x00\x18\x00\x00\x00\x18\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x1d\x00\x00\x00\x14\x00\x00\x00\x14\x00\x00\x00\x18\x00\x00\x00\x18\x00\x00\x00\x22\x00\x00\x00\x14\x00\x00\x00\x4c\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\x4c\x00\x00\x00\x18\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x07\x00\x00\x00\x09\x00\x00\x00\x08\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x0e\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x0b\x00\x00\x00\x0d\x00\x00\x00\x22\x00\x00\x00\x24\x00\x00\x00\x11\x00\x00\x00\x22\x00\x00\x00\x24\x00\x00\x00\x1d\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x22\x00\x00\x00\x0b\x00\x00\x00\x11\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\x0b\x00\x00\x00\x0b\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x0b\x00\x00\x00\x24\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x24\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x24\x00\x00\x00\x24\x00\x00\x00\x22\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x24\x00\x00\x00\x1d\x00\x00\x00\x0d\x00\x00\x00\xff\xff\xff\xff\x0e\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\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\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\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\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\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\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\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\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\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\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\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\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\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\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\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\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\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\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\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\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\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\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\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\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\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\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\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\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\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\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\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\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\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\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\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\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\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\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\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\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\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\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\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\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\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\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\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\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\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\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\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\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\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\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\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\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\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\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\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\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\xff\xff\xff\xff\x2a\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\xff\xff\xff\xff\x2a\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\xff\xff\xff\xff\x2a\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x05\x00\x00\x00\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\x2a\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\xff\xff\xff\xff\x16\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x1c\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x16\x00\x00\x00\x22\x00\x00\x00\x18\x00\x00\x00\x19\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x16\x00\x00\x00\x2a\x00\x00\x00\x18\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x2a\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\x2a\x00\x00\x00\x25\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x00\x00\x17\x00\x00\x00\x2a\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x22\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x25\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x16\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x1a\x00\x00\x00\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\xff\xff\xff\xff\x14\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x18\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x25\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\x05\x00\x00\x00\x26\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x11\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x16\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x0d\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x16\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x16\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x16\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x16\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x16\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\xff\xff\xff\xff\x05\x00\x00\x00\x01\x00\x00\x00\x16\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x05\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x16\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\xff\xff\xff\xff\x1a\x00\x00\x00\x1b\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x00\x00\xff\xff\xff\xff\x18\x00\x00\x00\x19\x00\x00\x00\xff\xff\xff\xff\x16\x00\x00\x00\xff\xff\xff\xff\x18\x00\x00\x00\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x00\x00\x17\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x00\x00\xff\xff\xff\xff\x0c\x00\x00\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x0f\x00\x00\x00\x10\x00\x00\x00\x11\x00\x00\x00\x26\x00\x00\x00\xff\xff\xff\xff\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x26\x00\x00\x00\xff\xff\xff\xff\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x26\x00\x00\x00\xff\xff\xff\xff\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x26\x00\x00\x00\xff\xff\xff\xff\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x26\x00\x00\x00\xff\xff\xff\xff\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\xb0\x00\x00\x00\xb1\x00\x00\x00\x3f\x00\x00\x00\x40\x00\x00\x00\xa1\x00\x00\x00\x35\x01\x00\x00\x3c\x01\x00\x00\xd6\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x59\x01\x00\x00\x79\x01\x00\x00\x33\x01\x00\x00\x78\x00\x00\x00\x2d\x00\x00\x00\xb4\x00\x00\x00\x5d\x01\x00\x00\x97\x00\x00\x00\x92\x00\x00\x00\x77\x00\x00\x00\xd5\x01\x00\x00\x51\x01\x00\x00\x71\x01\x00\x00\x0e\x01\x00\x00\xd4\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\xd6\x00\x00\x00\x53\x00\x00\x00\xa6\x00\x00\x00\xa7\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\xd3\x01\x00\x00\xc0\x00\x00\x00\xbe\x01\x00\x00\x58\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x77\x00\x00\x00\x5c\x00\x00\x00\xba\x01\x00\x00\x5d\x00\x00\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x61\x00\x00\x00\x62\x00\x00\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x34\x01\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x68\x00\x00\x00\x69\x00\x00\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x6c\x00\x00\x00\x7a\x01\x00\x00\x5a\x01\x00\x00\xc0\x00\x00\x00\xc1\x00\x00\x00\x98\x00\x00\x00\x97\x00\x00\x00\x6d\x00\x00\x00\x6e\x00\x00\x00\x6f\x00\x00\x00\x70\x00\x00\x00\x5e\x01\x00\x00\x3d\x01\x00\x00\x36\x01\x00\x00\x71\x00\x00\x00\x2d\x00\x00\x00\xf2\x01\x00\x00\xbc\x00\x00\x00\xf3\x01\x00\x00\xd6\x00\x00\x00\xd7\x00\x00\x00\x72\x00\x00\x00\x73\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x98\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\xd6\x01\x00\x00\x77\x00\x00\x00\x3f\x00\x00\x00\x40\x00\x00\x00\x52\x01\x00\x00\x0f\x01\x00\x00\xa1\x00\x00\x00\xba\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x10\x01\x00\x00\x11\x01\x00\x00\x2d\x00\x00\x00\xd4\x01\x00\x00\x77\x00\x00\x00\xbf\x01\x00\x00\x92\x00\x00\x00\xbc\x00\x00\x00\x13\x01\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\x14\x01\x00\x00\xbb\x01\x00\x00\xd6\x00\x00\x00\xed\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x4d\x00\x00\x00\x0a\x01\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\x93\x00\x00\x00\x77\x00\x00\x00\x97\x00\x00\x00\x0b\x01\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x94\x00\x00\x00\x95\x00\x00\x00\x98\x00\x00\x00\x58\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x2e\x00\x00\x00\x5c\x00\x00\x00\xd9\x00\x00\x00\x5d\x00\x00\x00\x5e\x00\x00\x00\xb4\x00\x00\x00\x60\x00\x00\x00\x61\x00\x00\x00\x62\x00\x00\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x77\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x68\x00\x00\x00\x69\x00\x00\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x6c\x00\x00\x00\x3d\x00\x00\x00\x7d\x00\x00\x00\x77\x00\x00\x00\x2d\x00\x00\x00\x3f\x00\x00\x00\x40\x00\x00\x00\x98\x00\x00\x00\x6e\x00\x00\x00\x6f\x00\x00\x00\x70\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x72\x00\x00\x00\x73\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x2d\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x4c\x01\x00\x00\xa9\x00\x00\x00\xa1\x00\x00\x00\x57\x01\x00\x00\x4d\x01\x00\x00\x77\x00\x00\x00\xa1\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x4d\x00\x00\x00\x31\x01\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\x98\x00\x00\x00\xaa\x00\x00\x00\xab\x00\x00\x00\x97\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\xad\x00\x00\x00\xae\x00\x00\x00\x95\x01\x00\x00\x58\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x0e\x01\x00\x00\x5c\x00\x00\x00\xff\xff\xff\xff\x5d\x00\x00\x00\x5e\x00\x00\x00\x2e\x01\x00\x00\x60\x00\x00\x00\x61\x00\x00\x00\x62\x00\x00\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x77\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x68\x00\x00\x00\x69\x00\x00\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x6c\x00\x00\x00\xa1\x00\x00\x00\x7d\x00\x00\x00\xda\x00\x00\x00\x29\x01\x00\x00\x3f\x00\x00\x00\x40\x00\x00\x00\xdb\x00\x00\x00\x6e\x00\x00\x00\x6f\x00\x00\x00\x70\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x72\x00\x00\x00\x73\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x2d\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x98\x00\x00\x00\xd6\x00\x00\x00\xdf\x00\x00\x00\x97\x00\x00\x00\x98\x00\x00\x00\xa1\x00\x00\x00\xa1\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x4d\x00\x00\x00\x20\x01\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\x05\x01\x00\x00\x98\x00\x00\x00\x18\x01\x00\x00\xa1\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x15\x01\x00\x00\x93\x01\x00\x00\x91\x01\x00\x00\x97\x00\x00\x00\x77\x00\x00\x00\xff\xff\xff\xff\x5b\x00\x00\x00\x13\x01\x00\x00\x77\x00\x00\x00\x0f\x01\x00\x00\x14\x01\x00\x00\x8b\x00\x00\x00\x8c\x00\x00\x00\x60\x00\x00\x00\x61\x00\x00\x00\x62\x00\x00\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x03\x02\x00\x00\x77\x00\x00\x00\x04\x02\x00\x00\x10\x01\x00\x00\x11\x01\x00\x00\x0d\x01\x00\x00\x98\x00\x00\x00\x6c\x00\x00\x00\x32\x01\x00\x00\x7d\x00\x00\x00\x8b\x00\x00\x00\x2f\x01\x00\x00\x3f\x00\x00\x00\x40\x00\x00\x00\x97\x00\x00\x00\x8b\xff\xff\xff\xff\xff\xff\xff\x70\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x72\x00\x00\x00\x73\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\xff\xff\xff\xff\x98\x00\x00\x00\xd1\x01\x00\x00\x98\x00\x00\x00\x98\x00\x00\x00\x0c\x01\x00\x00\xd2\x01\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x4d\x00\x00\x00\xfc\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\x05\x01\x00\x00\x98\x00\x00\x00\xad\x00\x00\x00\xf8\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x2d\x00\x00\x00\x98\x00\x00\x00\xc0\x00\x00\x00\xdc\x00\x00\x00\x92\x00\x00\x00\x77\x00\x00\x00\x5b\x00\x00\x00\x77\x00\x00\x00\x77\x00\x00\x00\x1c\x02\x00\x00\x07\x01\x00\x00\x1d\x02\x00\x00\xff\xff\xff\xff\x60\x00\x00\x00\x61\x00\x00\x00\x62\x00\x00\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x2d\x00\x00\x00\x77\x00\x00\x00\x9b\x00\x00\x00\x03\x01\x00\x00\x92\x00\x00\x00\xff\xff\xff\xff\xbc\x01\x00\x00\x6c\x00\x00\x00\x22\x01\x00\x00\x77\x00\x00\x00\xbd\x01\x00\x00\x0e\x01\x00\x00\x98\x00\x00\x00\xff\xff\xff\xff\x23\x01\x00\x00\xc0\x00\x00\x00\x81\x01\x00\x00\x70\x00\x00\x00\x8b\xff\xff\xff\x2d\x00\x00\x00\x2d\x00\x00\x00\x9b\x00\x00\x00\x2d\x00\x00\x00\xd8\x00\x00\x00\x92\x00\x00\x00\xfd\x00\x00\x00\xe8\x00\x00\x00\x9c\x00\x00\x00\x72\x00\x00\x00\x73\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x7d\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x3f\x00\x00\x00\x40\x00\x00\x00\x37\x01\x00\x00\x77\x00\x00\x00\x38\x01\x00\x00\xa8\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\xff\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\x2d\x00\x00\x00\x2e\x00\x00\x00\x92\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xad\x00\x00\x00\x7f\x01\x00\x00\x2d\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x4d\x00\x00\x00\xa9\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\x05\x01\x00\x00\xfa\x00\x00\x00\xff\xff\xff\xff\x93\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\xff\xff\xff\xff\x2d\x00\x00\x00\xac\x00\x00\x00\x94\x00\x00\x00\x6f\x01\x00\x00\xe7\x00\x00\x00\x5b\x00\x00\x00\x2d\x00\x00\x00\x0f\x01\x00\x00\x32\x00\x00\x00\x70\x00\x00\x00\xe6\x00\x00\x00\x82\x00\x00\x00\x60\x00\x00\x00\x61\x00\x00\x00\x62\x00\x00\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x39\x01\x00\x00\x3a\x01\x00\x00\x10\x01\x00\x00\x11\x01\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x2d\x00\x00\x00\x6c\x00\x00\x00\xf8\x00\x00\x00\x7d\x00\x00\x00\xd6\x00\x00\x00\xdd\x00\x00\x00\x3f\x00\x00\x00\x40\x00\x00\x00\xff\xff\xff\xff\x97\x00\x00\x00\xf3\x00\x00\x00\x70\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x72\x00\x00\x00\x73\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x2d\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x2d\x00\x00\x00\x92\x00\x00\x00\x2d\x00\x00\x00\xf7\x00\x00\x00\xd6\x00\x00\x00\x80\x01\x00\x00\x92\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x4d\x00\x00\x00\x77\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\xff\xff\xff\xff\xf0\x00\x00\x00\xef\x00\x00\x00\x9b\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x05\x01\x00\x00\x55\x01\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x5b\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x77\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xff\xff\xff\xff\x60\x00\x00\x00\x61\x00\x00\x00\x62\x00\x00\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x2d\x00\x00\x00\x25\x01\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xa9\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x6c\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x2d\x00\x00\x00\x2d\x00\x00\x00\x2d\x00\x00\x00\x98\x00\x00\x00\xe4\x00\x00\x00\xb4\x00\x00\x00\xe0\x00\x00\x00\x70\x00\x00\x00\x2d\x00\x00\x00\xaa\x00\x00\x00\x7a\x01\x00\x00\x32\x00\x00\x00\x92\x00\x00\x00\x70\x00\x00\x00\x3a\x01\x00\x00\xb5\x00\x00\x00\xb6\x00\x00\x00\x77\x00\x00\x00\x72\x00\x00\x00\x73\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x31\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x32\x00\x00\x00\xa1\x01\x00\x00\x77\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2d\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x2d\x00\x00\x00\x92\x00\x00\x00\xd4\x00\x00\x00\x2d\x00\x00\x00\x92\x00\x00\x00\x2d\x00\x00\x00\x2d\x00\x00\x00\x92\x00\x00\x00\x77\x00\x00\x00\xb4\x00\x00\x00\xbc\x00\x00\x00\xff\xff\xff\xff\x2d\x00\x00\x00\x2e\x00\x00\x00\x8c\x01\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xbd\x00\x00\x00\x93\x00\x00\x00\xb5\x00\x00\x00\xf1\x00\x00\x00\x93\x00\x00\x00\x8b\x01\x00\x00\x31\x00\x00\x00\xff\x00\x00\x00\x00\x01\x00\x00\x94\x00\x00\x00\xce\x01\x00\x00\x32\x00\x00\x00\x94\x00\x00\x00\xcc\x01\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x48\x01\x00\x00\x31\x00\x00\x00\x8a\x01\x00\x00\x89\x01\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\xf9\x01\x00\x00\xc0\x00\x00\x00\x84\x01\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2d\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x2d\x00\x00\x00\xbc\x00\x00\x00\x2d\x00\x00\x00\x83\x01\x00\x00\xb4\x00\x00\x00\x2d\x00\x00\x00\xbc\x00\x00\x00\x31\x00\x00\x00\xe5\x00\x00\x00\x7c\x01\x00\x00\x8e\x00\x00\x00\x8f\x00\x00\x00\x32\x00\x00\x00\xe3\x00\x00\x00\xb7\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x90\x00\x00\x00\x31\x00\x00\x00\x77\x00\x00\x00\x2d\x00\x00\x00\x8e\x00\x00\x00\x71\x01\x00\x00\x32\x00\x00\x00\x92\x00\x00\x00\xb4\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x90\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2d\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x2d\x00\x00\x00\x92\x00\x00\x00\x93\x00\x00\x00\x2d\x00\x00\x00\x92\x00\x00\x00\x2d\x00\x00\x00\x77\x00\x00\x00\x7b\x01\x00\x00\x71\x01\x00\x00\xb4\x00\x00\x00\x98\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x58\x01\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xb4\x01\x00\x00\xb1\x01\x00\x00\x9b\x00\x00\x00\xb5\x00\x00\x00\x7e\x01\x00\x00\x93\x00\x00\x00\xaf\x01\x00\x00\x31\x00\x00\x00\xaf\x01\x00\x00\xaa\x01\x00\x00\x8e\x00\x00\x00\x6a\x01\x00\x00\x32\x00\x00\x00\x94\x00\x00\x00\xc1\x01\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x90\x00\x00\x00\x31\x00\x00\x00\x77\x00\x00\x00\x2d\x00\x00\x00\x8e\x00\x00\x00\x5b\x01\x00\x00\x32\x00\x00\x00\x92\x00\x00\x00\xa6\x01\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x90\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xa4\x01\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x2d\x00\x00\x00\x2d\x00\x00\x00\x61\x01\x00\x00\x2d\x00\x00\x00\x92\x00\x00\x00\x92\x00\x00\x00\xa3\x01\x00\x00\x92\x00\x00\x00\x9c\x01\x00\x00\x9b\x01\x00\x00\x62\x01\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xa1\x01\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x9a\x01\x00\x00\x2d\x00\x00\x00\xba\x00\x00\x00\xe0\x01\x00\x00\xde\x01\x00\x00\x5f\x01\x00\x00\x4e\x01\x00\x00\x31\x00\x00\x00\xa6\x00\x00\x00\xfd\x00\x00\x00\x91\x00\x00\x00\xdc\x01\x00\x00\x32\x00\x00\x00\x60\x01\x00\x00\x4f\x01\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x90\x00\x00\x00\x31\x00\x00\x00\xca\x01\x00\x00\xbc\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x78\x00\x00\x00\xc9\x01\x00\x00\xc4\x01\x00\x00\xc8\x01\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xc7\x01\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xf8\x01\x00\x00\xf7\x01\x00\x00\xf6\x01\x00\x00\xf5\x01\x00\x00\xf1\x01\x00\x00\x2d\x00\x00\x00\x77\x00\x00\x00\x31\x00\x00\x00\xee\x01\x00\x00\xa9\x00\x00\x00\xed\x01\x00\x00\xec\x01\x00\x00\x32\x00\x00\x00\xeb\x01\x00\x00\xba\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x2e\x01\x00\x00\x31\x00\x00\x00\xaa\x00\x00\x00\xab\x01\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x1e\x01\x00\x00\xea\x01\x00\x00\xe5\x01\x00\x00\xe3\x01\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x14\x02\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x12\x02\x00\x00\x10\x02\x00\x00\x0f\x02\x00\x00\x0e\x02\x00\x00\x0d\x02\x00\x00\x2d\x00\x00\x00\x1e\x02\x00\x00\x31\x00\x00\x00\x0c\x02\x00\x00\xa9\x00\x00\x00\x0b\x02\x00\x00\x0a\x02\x00\x00\x32\x00\x00\x00\x09\x02\x00\x00\x01\x02\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x11\x01\x00\x00\x31\x00\x00\x00\xaa\x00\x00\x00\xee\x01\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xf5\x00\x00\x00\x08\x02\x00\x00\x00\x02\x00\x00\xff\x01\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xfe\x01\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x85\x00\x00\x00\x86\x00\x00\x00\x87\x00\x00\x00\x88\x00\x00\x00\x89\x00\x00\x00\x8a\x00\x00\x00\x8b\x00\x00\x00\x31\x00\x00\x00\xfd\x01\x00\x00\xfc\x01\x00\x00\x21\x02\x00\x00\x2c\x02\x00\x00\x32\x00\x00\x00\x31\x02\x00\x00\x26\x02\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xf0\x00\x00\x00\x31\x00\x00\x00\x2a\x02\x00\x00\x2f\x02\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xec\x00\x00\x00\xd4\x00\x00\x00\xd1\x00\x00\x00\xd2\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xb8\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xbe\x00\x00\x00\xba\x00\x00\x00\x8d\x00\x00\x00\x83\x00\x00\x00\xb2\x00\x00\x00\x20\x01\x00\x00\x07\x01\x00\x00\x31\x00\x00\x00\xb1\x00\x00\x00\xe2\x00\x00\x00\xe1\x00\x00\x00\xde\x00\x00\x00\x32\x00\x00\x00\x87\x01\x00\x00\x7d\x01\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xeb\x00\x00\x00\x31\x00\x00\x00\x86\x01\x00\x00\x85\x01\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xea\x00\x00\x00\x84\x01\x00\x00\x73\x01\x00\x00\x69\x01\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x4a\x01\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xb4\x01\x00\x00\xa6\x01\x00\x00\x54\x01\x00\x00\xad\x01\x00\x00\x8e\x01\x00\x00\xd9\x01\x00\x00\x07\x01\x00\x00\x31\x00\x00\x00\xd8\x01\x00\x00\x00\x00\x00\x00\xe5\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xe9\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x77\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x76\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x72\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x6e\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x6d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x6c\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x6b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x63\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x52\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xb8\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xb7\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xb6\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xac\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xa8\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x9f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x9e\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x9d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x9c\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x98\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x97\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x8d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x8c\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xde\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xdc\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xda\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xd7\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xd6\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xcd\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xcb\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xca\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xc4\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xc2\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xc0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xbf\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xfa\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xf8\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xf3\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xef\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xe7\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xe6\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xe3\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xe1\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x12\x02\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x10\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x06\x02\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x05\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x04\x02\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x1f\x02\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x1e\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x15\x02\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x14\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x28\x02\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x27\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x26\x02\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x24\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x2a\x02\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x2d\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x2c\x02\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x2f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x7d\x00\x00\x00\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x79\x00\x00\x00\x38\x00\x00\x00\x7a\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x79\x00\x00\x00\x38\x00\x00\x00\x47\x01\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x79\x00\x00\x00\x38\x00\x00\x00\x3e\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x79\x00\x00\x00\x38\x00\x00\x00\x3d\x01\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x79\x00\x00\x00\x38\x00\x00\x00\xb2\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x79\x00\x00\x00\x38\x00\x00\x00\xb1\x01\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x79\x00\x00\x00\x38\x00\x00\x00\x23\x02\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x79\x00\x00\x00\x38\x00\x00\x00\x22\x02\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x79\x00\x00\x00\x38\x00\x00\x00\x21\x02\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x79\x00\x00\x00\x38\x00\x00\x00\x1a\x02\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x79\x00\x00\x00\x38\x00\x00\x00\x19\x02\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x79\x00\x00\x00\x38\x00\x00\x00\x18\x02\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x79\x00\x00\x00\x38\x00\x00\x00\x17\x02\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x79\x00\x00\x00\x38\x00\x00\x00\x16\x02\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x64\x01\x00\x00\x7e\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x46\x01\x00\x00\x7e\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x45\x01\x00\x00\x7e\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\xcf\x01\x00\x00\x7e\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x7e\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x44\x01\x00\x00\x00\x00\x00\x00\x7e\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x43\x01\x00\x00\x00\x00\x00\x00\x7e\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2d\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x92\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x80\x00\x00\x00\x99\x00\x00\x00\x00\x00\x00\x00\x7e\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x00\x00\x00\x00\x9b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9a\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xc5\x01\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x7e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x42\x01\x00\x00\x92\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x7e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x41\x01\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x7e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xa2\x00\x00\x00\x32\x00\x00\x00\xa3\x00\x00\x00\xa4\x00\x00\x00\x33\x00\x00\x00\x40\x01\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x7e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x92\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x3f\x01\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x7e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x32\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x33\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x00\x00\x7b\x00\x00\x00\xa5\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x68\x01\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x92\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x67\x01\x00\x00\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x00\x00\x00\xfa\x00\x00\x00\x66\x01\x00\x00\x32\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x33\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x65\x01\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2b\x01\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x2a\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x29\x01\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x25\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x21\x01\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x1d\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x1c\x01\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x1a\x01\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x19\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x15\x01\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2d\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x32\x00\x00\x00\x92\x00\x00\x00\x00\x00\x00\x00\x03\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x5e\x01\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x9d\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\xa1\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x01\x00\x00\x00\x00\x00\x00\x4c\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\xaa\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x92\x00\x00\x00\x4e\x01\x00\x00\x03\x01\x00\x00\x85\x00\x00\x00\x86\x00\x00\x00\x87\x00\x00\x00\x88\x00\x00\x00\x89\x00\x00\x00\x8a\x00\x00\x00\x8b\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\xf3\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x92\x00\x00\x00\x00\x00\x00\x00\x9d\x00\x00\x00\x92\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x9e\x00\x00\x00\xf4\x00\x00\x00\x95\x01\x00\x00\x92\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x92\x00\x00\x00\x00\x00\x00\x00\x9d\x00\x00\x00\x92\x00\x00\x00\x00\x00\x00\x00\x9d\x00\x00\x00\x9e\x00\x00\x00\x96\x01\x00\x00\x2d\x00\x00\x00\x9e\x00\x00\x00\x9f\x00\x00\x00\x9d\x00\x00\x00\x92\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x9e\x00\x00\x00\x2c\x01\x00\x00\x9d\x00\x00\x00\x92\x00\x00\x00\x00\x00\x00\x00\x9d\x00\x00\x00\x9e\x00\x00\x00\x01\x01\x00\x00\x2d\x00\x00\x00\x9e\x00\x00\x00\x93\x01\x00\x00\x00\x00\x00\x00\x92\x00\x00\x00\x2d\x00\x00\x00\x9d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x92\x00\x00\x00\x9e\x00\x00\x00\x91\x01\x00\x00\x9d\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x9e\x00\x00\x00\x8f\x01\x00\x00\x92\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x00\x00\x00\x00\x00\x00\xa3\x00\x00\x00\x75\x01\x00\x00\x00\x00\x00\x00\xa2\x00\x00\x00\x00\x00\x00\x00\xa3\x00\x00\x00\xe8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x00\x00\x00\xfd\x00\x00\x00\xc3\x00\x00\x00\xc4\x00\x00\x00\xc5\x00\x00\x00\xc6\x00\x00\x00\xc7\x00\x00\x00\xc8\x00\x00\x00\xc9\x00\x00\x00\xca\x00\x00\x00\xcb\x00\x00\x00\x00\x00\x00\x00\xcc\x00\x00\x00\xcd\x00\x00\x00\xce\x00\x00\x00\xcf\x00\x00\x00\xd0\x00\x00\x00\xd1\x00\x00\x00\x09\x01\x00\x00\x00\x00\x00\x00\x85\x00\x00\x00\x86\x00\x00\x00\x87\x00\x00\x00\x88\x00\x00\x00\x89\x00\x00\x00\x8a\x00\x00\x00\x8b\x00\x00\x00\x75\x01\x00\x00\x00\x00\x00\x00\x85\x00\x00\x00\x86\x00\x00\x00\x87\x00\x00\x00\x88\x00\x00\x00\x89\x00\x00\x00\x8a\x00\x00\x00\x8b\x00\x00\x00\xb6\x01\x00\x00\x00\x00\x00\x00\x85\x00\x00\x00\x86\x00\x00\x00\x87\x00\x00\x00\x88\x00\x00\x00\x89\x00\x00\x00\x8a\x00\x00\x00\x8b\x00\x00\x00\xa8\x01\x00\x00\x00\x00\x00\x00\x85\x00\x00\x00\x86\x00\x00\x00\x87\x00\x00\x00\x88\x00\x00\x00\x89\x00\x00\x00\x8a\x00\x00\x00\x8b\x00\x00\x00\xa5\x01\x00\x00\x00\x00\x00\x00\x85\x00\x00\x00\x86\x00\x00\x00\x87\x00\x00\x00\x88\x00\x00\x00\x89\x00\x00\x00\x8a\x00\x00\x00\x8b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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 = Happy_Data_Array.array (43, 242) [-        (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)-        ]--happyRuleArr :: HappyAddr-happyRuleArr = HappyA# "\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x03\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x03\x00\x00\x00\x08\x00\x00\x00\x01\x00\x00\x00\x09\x00\x00\x00\x04\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x04\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x06\x00\x00\x00\x09\x00\x00\x00\x05\x00\x00\x00\x09\x00\x00\x00\x04\x00\x00\x00\x09\x00\x00\x00\x04\x00\x00\x00\x09\x00\x00\x00\x04\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x08\x00\x00\x00\x09\x00\x00\x00\x07\x00\x00\x00\x09\x00\x00\x00\x08\x00\x00\x00\x09\x00\x00\x00\x07\x00\x00\x00\x09\x00\x00\x00\x06\x00\x00\x00\x09\x00\x00\x00\x05\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x03\x00\x00\x00\x0b\x00\x00\x00\x04\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x01\x00\x00\x00\x0d\x00\x00\x00\x02\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x03\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x03\x00\x00\x00\x0f\x00\x00\x00\x02\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x10\x00\x00\x00\x03\x00\x00\x00\x11\x00\x00\x00\x02\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x05\x00\x00\x00\x12\x00\x00\x00\x05\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00\x15\x00\x00\x00\x01\x00\x00\x00\x15\x00\x00\x00\x03\x00\x00\x00\x16\x00\x00\x00\x01\x00\x00\x00\x16\x00\x00\x00\x01\x00\x00\x00\x16\x00\x00\x00\x05\x00\x00\x00\x16\x00\x00\x00\x07\x00\x00\x00\x17\x00\x00\x00\x01\x00\x00\x00\x17\x00\x00\x00\x02\x00\x00\x00\x18\x00\x00\x00\x01\x00\x00\x00\x19\x00\x00\x00\x01\x00\x00\x00\x19\x00\x00\x00\x03\x00\x00\x00\x1a\x00\x00\x00\x01\x00\x00\x00\x1a\x00\x00\x00\x05\x00\x00\x00\x1a\x00\x00\x00\x07\x00\x00\x00\x1a\x00\x00\x00\x05\x00\x00\x00\x1a\x00\x00\x00\x07\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x02\x00\x00\x00\x1c\x00\x00\x00\x01\x00\x00\x00\x1c\x00\x00\x00\x03\x00\x00\x00\x1d\x00\x00\x00\x01\x00\x00\x00\x1d\x00\x00\x00\x05\x00\x00\x00\x1d\x00\x00\x00\x07\x00\x00\x00\x1d\x00\x00\x00\x05\x00\x00\x00\x1d\x00\x00\x00\x07\x00\x00\x00\x1e\x00\x00\x00\x03\x00\x00\x00\x1e\x00\x00\x00\x03\x00\x00\x00\x1f\x00\x00\x00\x01\x00\x00\x00\x1f\x00\x00\x00\x03\x00\x00\x00\x20\x00\x00\x00\x03\x00\x00\x00\x20\x00\x00\x00\x03\x00\x00\x00\x21\x00\x00\x00\x01\x00\x00\x00\x21\x00\x00\x00\x03\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x23\x00\x00\x00\x01\x00\x00\x00\x23\x00\x00\x00\x03\x00\x00\x00\x24\x00\x00\x00\x01\x00\x00\x00\x24\x00\x00\x00\x01\x00\x00\x00\x24\x00\x00\x00\x01\x00\x00\x00\x24\x00\x00\x00\x01\x00\x00\x00\x24\x00\x00\x00\x01\x00\x00\x00\x24\x00\x00\x00\x01\x00\x00\x00\x24\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x07\x00\x00\x00\x25\x00\x00\x00\x03\x00\x00\x00\x25\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x03\x00\x00\x00\x25\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x0e\x00\x00\x00\x25\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x07\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x03\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x26\x00\x00\x00\x03\x00\x00\x00\x26\x00\x00\x00\x03\x00\x00\x00\x26\x00\x00\x00\x03\x00\x00\x00\x26\x00\x00\x00\x01\x00\x00\x00\x26\x00\x00\x00\x03\x00\x00\x00\x27\x00\x00\x00\x03\x00\x00\x00\x27\x00\x00\x00\x03\x00\x00\x00\x27\x00\x00\x00\x01\x00\x00\x00\x27\x00\x00\x00\x03\x00\x00\x00\x27\x00\x00\x00\x03\x00\x00\x00\x28\x00\x00\x00\x03\x00\x00\x00\x28\x00\x00\x00\x01\x00\x00\x00\x28\x00\x00\x00\x03\x00\x00\x00\x29\x00\x00\x00\x03\x00\x00\x00\x29\x00\x00\x00\x01\x00\x00\x00\x29\x00\x00\x00\x03\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x04\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x03\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x01\x00\x00\x00\x2a\x00\x00\x00\x03\x00\x00\x00\x2a\x00\x00\x00\x03\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2b\x00\x00\x00\x03\x00\x00\x00\x2b\x00\x00\x00\x08\x00\x00\x00\x2b\x00\x00\x00\x08\x00\x00\x00\x2b\x00\x00\x00\x08\x00\x00\x00\x2b\x00\x00\x00\x05\x00\x00\x00\x2b\x00\x00\x00\x03\x00\x00\x00\x2b\x00\x00\x00\x06\x00\x00\x00\x2b\x00\x00\x00\x04\x00\x00\x00\x2b\x00\x00\x00\x07\x00\x00\x00\x2b\x00\x00\x00\x08\x00\x00\x00\x2b\x00\x00\x00\x09\x00\x00\x00\x2b\x00\x00\x00\x09\x00\x00\x00\x2b\x00\x00\x00\x0a\x00\x00\x00\x2b\x00\x00\x00\x0b\x00\x00\x00\x2b\x00\x00\x00\x01\x00\x00\x00\x2b\x00\x00\x00\x03\x00\x00\x00\x2b\x00\x00\x00\x08\x00\x00\x00\x2b\x00\x00\x00\x08\x00\x00\x00\x2b\x00\x00\x00\x08\x00\x00\x00\x2b\x00\x00\x00\x04\x00\x00\x00\x2b\x00\x00\x00\x08\x00\x00\x00\x2b\x00\x00\x00\x08\x00\x00\x00\x2c\x00\x00\x00\x03\x00\x00\x00\x2c\x00\x00\x00\x01\x00\x00\x00\x2d\x00\x00\x00\x01\x00\x00\x00\x2d\x00\x00\x00\x03\x00\x00\x00"#--happyCatchStates :: [Happy_Prelude.Int]-happyCatchStates = []--happy_n_terms = 125 :: Happy_Prelude.Int-happy_n_nonterms = 46 :: Happy_Prelude.Int--happy_n_starts = 43 :: Happy_Prelude.Int--happyReduce_43 = happySpecReduce_1  0# happyReduction_43-happyReduction_43 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn47-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), (Data.Text.unpack ((\(PT _ (TL s)) -> s) happy_var_1)))-        )}--happyReduce_44 = happySpecReduce_1  1# happyReduction_44-happyReduction_44 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn48-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.VarIdentToken (tokenText happy_var_1))-        )}--happyReduce_45 = happySpecReduce_1  2# happyReduction_45-happyReduction_45 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn49-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.HoleIdentToken (tokenText happy_var_1))-        )}--happyReduce_46 = happySpecReduce_2  3# happyReduction_46-happyReduction_46 happy_x_2-        happy_x_1-         =  case happyOut54 happy_x_1 of { (HappyWrap54 happy_var_1) -> -        case happyOut57 happy_x_2 of { (HappyWrap57 happy_var_2) -> -        happyIn50-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.Module (fst happy_var_1) (snd happy_var_1) (snd happy_var_2))-        )}}--happyReduce_47 = happySpecReduce_1  4# happyReduction_47-happyReduction_47 happy_x_1-         =  case happyOut49 happy_x_1 of { (HappyWrap49 happy_var_1) -> -        happyIn51-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.HoleIdent (fst happy_var_1) (snd happy_var_1))-        )}--happyReduce_48 = happySpecReduce_1  5# happyReduction_48-happyReduction_48 happy_x_1-         =  case happyOut48 happy_x_1 of { (HappyWrap48 happy_var_1) -> -        happyIn52-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.VarIdent (fst happy_var_1) (snd happy_var_1))-        )}--happyReduce_49 = happySpecReduce_1  6# happyReduction_49-happyReduction_49 happy_x_1-         =  case happyOut52 happy_x_1 of { (HappyWrap52 happy_var_1) -> -        happyIn53-                 ((fst happy_var_1, (:[]) (snd happy_var_1))-        )}--happyReduce_50 = happySpecReduce_2  6# happyReduction_50-happyReduction_50 happy_x_2-        happy_x_1-         =  case happyOut52 happy_x_1 of { (HappyWrap52 happy_var_1) -> -        case happyOut53 happy_x_2 of { (HappyWrap53 happy_var_2) -> -        happyIn53-                 ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_2))-        )}}--happyReduce_51 = happySpecReduce_3  7# happyReduction_51-happyReduction_51 happy_x_3-        happy_x_2-        happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        case happyOut55 happy_x_2 of { (HappyWrap55 happy_var_2) -> -        happyIn54-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.LanguageDecl (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))-        )}}--happyReduce_52 = happySpecReduce_1  8# happyReduction_52-happyReduction_52 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn55-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Rzk1 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))-        )}--happyReduce_53 = happyReduce 4# 9# happyReduction_53-happyReduction_53 (happy_x_4 `HappyStk`-        happy_x_3 `HappyStk`-        happy_x_2 `HappyStk`-        happy_x_1 `HappyStk`-        happyRest)-         = case happyOutTok happy_x_1 of { happy_var_1 -> -        case happyOut47 happy_x_2 of { (HappyWrap47 happy_var_2) -> -        case happyOut47 happy_x_4 of { (HappyWrap47 happy_var_4) -> -        happyIn56-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandSetOption (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))-        ) `HappyStk` happyRest}}}--happyReduce_54 = happySpecReduce_2  9# happyReduction_54-happyReduction_54 happy_x_2-        happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        case happyOut47 happy_x_2 of { (HappyWrap47 happy_var_2) -> -        happyIn56-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandUnsetOption (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))-        )}}--happyReduce_55 = happyReduce 4# 9# happyReduction_55-happyReduction_55 (happy_x_4 `HappyStk`-        happy_x_3 `HappyStk`-        happy_x_2 `HappyStk`-        happy_x_1 `HappyStk`-        happyRest)-         = case happyOutTok happy_x_1 of { happy_var_1 -> -        case happyOut91 happy_x_2 of { (HappyWrap91 happy_var_2) -> -        case happyOut91 happy_x_4 of { (HappyWrap91 happy_var_4) -> -        happyIn56-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandCheck (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))-        ) `HappyStk` happyRest}}}--happyReduce_56 = happySpecReduce_2  9# happyReduction_56-happyReduction_56 happy_x_2-        happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        case happyOut91 happy_x_2 of { (HappyWrap91 happy_var_2) -> -        happyIn56-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandCompute (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))-        )}}--happyReduce_57 = happySpecReduce_2  9# happyReduction_57-happyReduction_57 happy_x_2-        happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        case happyOut91 happy_x_2 of { (HappyWrap91 happy_var_2) -> -        happyIn56-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandComputeWHNF (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))-        )}}--happyReduce_58 = happySpecReduce_2  9# happyReduction_58-happyReduction_58 happy_x_2-        happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        case happyOut91 happy_x_2 of { (HappyWrap91 happy_var_2) -> -        happyIn56-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandComputeNF (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))-        )}}--happyReduce_59 = happyReduce 6# 9# happyReduction_59-happyReduction_59 (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 { happy_var_1 -> -        case happyOut52 happy_x_2 of { (HappyWrap52 happy_var_2) -> -        case happyOut58 happy_x_3 of { (HappyWrap58 happy_var_3) -> -        case happyOut74 happy_x_4 of { (HappyWrap74 happy_var_4) -> -        case happyOut91 happy_x_6 of { (HappyWrap91 happy_var_6) -> -        happyIn56-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandPostulate (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6))-        ) `HappyStk` happyRest}}}}}--happyReduce_60 = happyReduce 5# 9# happyReduction_60-happyReduction_60 (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 { happy_var_1 -> -        case happyOut52 happy_x_2 of { (HappyWrap52 happy_var_2) -> -        case happyOut58 happy_x_3 of { (HappyWrap58 happy_var_3) -> -        case happyOut91 happy_x_5 of { (HappyWrap91 happy_var_5) -> -        happyIn56-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandPostulateNoParams (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_5))-        ) `HappyStk` happyRest}}}}--happyReduce_61 = happyReduce 4# 9# happyReduction_61-happyReduction_61 (happy_x_4 `HappyStk`-        happy_x_3 `HappyStk`-        happy_x_2 `HappyStk`-        happy_x_1 `HappyStk`-        happyRest)-         = case happyOutTok happy_x_1 of { happy_var_1 -> -        case happyOut53 happy_x_2 of { (HappyWrap53 happy_var_2) -> -        case happyOut91 happy_x_4 of { (HappyWrap91 happy_var_4) -> -        happyIn56-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandAssume (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))-        ) `HappyStk` happyRest}}}--happyReduce_62 = happyReduce 4# 9# happyReduction_62-happyReduction_62 (happy_x_4 `HappyStk`-        happy_x_3 `HappyStk`-        happy_x_2 `HappyStk`-        happy_x_1 `HappyStk`-        happyRest)-         = case happyOutTok happy_x_1 of { happy_var_1 -> -        case happyOut52 happy_x_2 of { (HappyWrap52 happy_var_2) -> -        case happyOut91 happy_x_4 of { (HappyWrap91 happy_var_4) -> -        happyIn56-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandVariable (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))-        ) `HappyStk` happyRest}}}--happyReduce_63 = happyReduce 4# 9# happyReduction_63-happyReduction_63 (happy_x_4 `HappyStk`-        happy_x_3 `HappyStk`-        happy_x_2 `HappyStk`-        happy_x_1 `HappyStk`-        happyRest)-         = case happyOutTok happy_x_1 of { happy_var_1 -> -        case happyOut53 happy_x_2 of { (HappyWrap53 happy_var_2) -> -        case happyOut91 happy_x_4 of { (HappyWrap91 happy_var_4) -> -        happyIn56-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandVariables (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))-        ) `HappyStk` happyRest}}}--happyReduce_64 = happySpecReduce_2  9# happyReduction_64-happyReduction_64 happy_x_2-        happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        case happyOut59 happy_x_2 of { (HappyWrap59 happy_var_2) -> -        happyIn56-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandSection (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))-        )}}--happyReduce_65 = happySpecReduce_2  9# happyReduction_65-happyReduction_65 happy_x_2-        happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        case happyOut59 happy_x_2 of { (HappyWrap59 happy_var_2) -> -        happyIn56-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandSectionEnd (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))-        )}}--happyReduce_66 = happyReduce 8# 9# happyReduction_66-happyReduction_66 (happy_x_8 `HappyStk`-        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 { happy_var_1 -> -        case happyOut52 happy_x_2 of { (HappyWrap52 happy_var_2) -> -        case happyOut58 happy_x_3 of { (HappyWrap58 happy_var_3) -> -        case happyOut74 happy_x_4 of { (HappyWrap74 happy_var_4) -> -        case happyOut91 happy_x_6 of { (HappyWrap91 happy_var_6) -> -        case happyOut91 happy_x_8 of { (HappyWrap91 happy_var_8) -> -        happyIn56-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandDefine (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6) (snd happy_var_8))-        ) `HappyStk` happyRest}}}}}}--happyReduce_67 = happyReduce 7# 9# happyReduction_67-happyReduction_67 (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 { happy_var_1 -> -        case happyOut52 happy_x_2 of { (HappyWrap52 happy_var_2) -> -        case happyOut58 happy_x_3 of { (HappyWrap58 happy_var_3) -> -        case happyOut91 happy_x_5 of { (HappyWrap91 happy_var_5) -> -        case happyOut91 happy_x_7 of { (HappyWrap91 happy_var_7) -> -        happyIn56-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandDefineNoParams (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_5) (snd happy_var_7))-        ) `HappyStk` happyRest}}}}}--happyReduce_68 = happyReduce 8# 9# happyReduction_68-happyReduction_68 (happy_x_8 `HappyStk`-        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 { happy_var_1 -> -        case happyOut52 happy_x_2 of { (HappyWrap52 happy_var_2) -> -        case happyOut58 happy_x_3 of { (HappyWrap58 happy_var_3) -> -        case happyOut74 happy_x_4 of { (HappyWrap74 happy_var_4) -> -        case happyOut91 happy_x_6 of { (HappyWrap91 happy_var_6) -> -        case happyOut91 happy_x_8 of { (HappyWrap91 happy_var_8) -> -        happyIn56-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandDef (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6) (snd happy_var_8))-        ) `HappyStk` happyRest}}}}}}--happyReduce_69 = happyReduce 7# 9# happyReduction_69-happyReduction_69 (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 { happy_var_1 -> -        case happyOut52 happy_x_2 of { (HappyWrap52 happy_var_2) -> -        case happyOut58 happy_x_3 of { (HappyWrap58 happy_var_3) -> -        case happyOut91 happy_x_5 of { (HappyWrap91 happy_var_5) -> -        case happyOut91 happy_x_7 of { (HappyWrap91 happy_var_7) -> -        happyIn56-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandDefNoParams (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_5) (snd happy_var_7))-        ) `HappyStk` happyRest}}}}}--happyReduce_70 = happyReduce 6# 9# happyReduction_70-happyReduction_70 (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 { happy_var_1 -> -        case happyOut52 happy_x_2 of { (HappyWrap52 happy_var_2) -> -        case happyOut58 happy_x_3 of { (HappyWrap58 happy_var_3) -> -        case happyOut74 happy_x_4 of { (HappyWrap74 happy_var_4) -> -        case happyOut60 happy_x_5 of { (HappyWrap60 happy_var_5) -> -        case happyOut61 happy_x_6 of { (HappyWrap61 happy_var_6) -> -        happyIn56-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandData (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4) (snd happy_var_5) (snd happy_var_6))-        ) `HappyStk` happyRest}}}}}}--happyReduce_71 = happyReduce 5# 9# happyReduction_71-happyReduction_71 (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 { happy_var_1 -> -        case happyOut52 happy_x_2 of { (HappyWrap52 happy_var_2) -> -        case happyOut58 happy_x_3 of { (HappyWrap58 happy_var_3) -> -        case happyOut60 happy_x_4 of { (HappyWrap60 happy_var_4) -> -        case happyOut61 happy_x_5 of { (HappyWrap61 happy_var_5) -> -        happyIn56-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandDataNoParams (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4) (snd happy_var_5))-        ) `HappyStk` happyRest}}}}}--happyReduce_72 = happySpecReduce_0  10# happyReduction_72-happyReduction_72  =  happyIn57-                 ((Language.Rzk.Syntax.Abs.BNFC'NoPosition, [])-        )--happyReduce_73 = happySpecReduce_3  10# happyReduction_73-happyReduction_73 happy_x_3-        happy_x_2-        happy_x_1-         =  case happyOut56 happy_x_1 of { (HappyWrap56 happy_var_1) -> -        case happyOut57 happy_x_3 of { (HappyWrap57 happy_var_3) -> -        happyIn57-                 ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))-        )}}--happyReduce_74 = happyReduce 4# 11# happyReduction_74-happyReduction_74 (happy_x_4 `HappyStk`-        happy_x_3 `HappyStk`-        happy_x_2 `HappyStk`-        happy_x_1 `HappyStk`-        happyRest)-         = case happyOutTok happy_x_1 of { happy_var_1 -> -        case happyOut53 happy_x_3 of { (HappyWrap53 happy_var_3) -> -        happyIn58-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.DeclUsedVars (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3))-        ) `HappyStk` happyRest}}--happyReduce_75 = happySpecReduce_0  11# happyReduction_75-happyReduction_75  =  happyIn58-                 ((Language.Rzk.Syntax.Abs.BNFC'NoPosition, Language.Rzk.Syntax.Abs.noDeclUsedVars Language.Rzk.Syntax.Abs.BNFC'NoPosition)-        )--happyReduce_76 = happySpecReduce_0  12# happyReduction_76-happyReduction_76  =  happyIn59-                 ((Language.Rzk.Syntax.Abs.BNFC'NoPosition, Language.Rzk.Syntax.Abs.NoSectionName Language.Rzk.Syntax.Abs.BNFC'NoPosition)-        )--happyReduce_77 = happySpecReduce_1  12# happyReduction_77-happyReduction_77 happy_x_1-         =  case happyOut52 happy_x_1 of { (HappyWrap52 happy_var_1) -> -        happyIn59-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.SomeSectionName (fst happy_var_1) (snd happy_var_1))-        )}--happyReduce_78 = happySpecReduce_2  13# happyReduction_78-happyReduction_78 happy_x_2-        happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        case happyOut91 happy_x_2 of { (HappyWrap91 happy_var_2) -> -        happyIn60-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.SomeDataSort (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))-        )}}--happyReduce_79 = happySpecReduce_0  13# happyReduction_79-happyReduction_79  =  happyIn60-                 ((Language.Rzk.Syntax.Abs.BNFC'NoPosition, Language.Rzk.Syntax.Abs.NoDataSort Language.Rzk.Syntax.Abs.BNFC'NoPosition)-        )--happyReduce_80 = happySpecReduce_3  14# happyReduction_80-happyReduction_80 happy_x_3-        happy_x_2-        happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        case happyOut63 happy_x_2 of { (HappyWrap63 happy_var_2) -> -        case happyOut66 happy_x_3 of { (HappyWrap66 happy_var_3) -> -        happyIn61-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.SomeDataBody (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3))-        )}}}--happyReduce_81 = happySpecReduce_0  14# happyReduction_81-happyReduction_81  =  happyIn61-                 ((Language.Rzk.Syntax.Abs.BNFC'NoPosition, Language.Rzk.Syntax.Abs.NoDataBody Language.Rzk.Syntax.Abs.BNFC'NoPosition)-        )--happyReduce_82 = happySpecReduce_3  15# happyReduction_82-happyReduction_82 happy_x_3-        happy_x_2-        happy_x_1-         =  case happyOut52 happy_x_1 of { (HappyWrap52 happy_var_1) -> -        case happyOut74 happy_x_2 of { (HappyWrap74 happy_var_2) -> -        case happyOut64 happy_x_3 of { (HappyWrap64 happy_var_3) -> -        happyIn62-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.Constructor (fst happy_var_1) (snd happy_var_1) (snd happy_var_2) (snd happy_var_3))-        )}}}--happyReduce_83 = happySpecReduce_2  15# happyReduction_83-happyReduction_83 happy_x_2-        happy_x_1-         =  case happyOut52 happy_x_1 of { (HappyWrap52 happy_var_1) -> -        case happyOut64 happy_x_2 of { (HappyWrap64 happy_var_2) -> -        happyIn62-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.constructorNoParams (fst happy_var_1) (snd happy_var_1) (snd happy_var_2))-        )}}--happyReduce_84 = happySpecReduce_1  16# happyReduction_84-happyReduction_84 happy_x_1-         =  case happyOut62 happy_x_1 of { (HappyWrap62 happy_var_1) -> -        happyIn63-                 ((fst happy_var_1, (:[]) (snd happy_var_1))-        )}--happyReduce_85 = happySpecReduce_3  16# happyReduction_85-happyReduction_85 happy_x_3-        happy_x_2-        happy_x_1-         =  case happyOut62 happy_x_1 of { (HappyWrap62 happy_var_1) -> -        case happyOut63 happy_x_3 of { (HappyWrap63 happy_var_3) -> -        happyIn63-                 ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))-        )}}--happyReduce_86 = happySpecReduce_2  17# happyReduction_86-happyReduction_86 happy_x_2-        happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        case happyOut91 happy_x_2 of { (HappyWrap91 happy_var_2) -> -        happyIn64-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.SomeConstructorType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))-        )}}--happyReduce_87 = happySpecReduce_0  17# happyReduction_87-happyReduction_87  =  happyIn64-                 ((Language.Rzk.Syntax.Abs.BNFC'NoPosition, Language.Rzk.Syntax.Abs.NoConstructorType Language.Rzk.Syntax.Abs.BNFC'NoPosition)-        )--happyReduce_88 = happyReduce 5# 18# happyReduction_88-happyReduction_88 (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 { happy_var_1 -> -        case happyOut52 happy_x_3 of { (HappyWrap52 happy_var_3) -> -        case happyOut91 happy_x_5 of { (HappyWrap91 happy_var_5) -> -        happyIn65-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.DataElim (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5))-        ) `HappyStk` happyRest}}}--happyReduce_89 = happyReduce 5# 18# happyReduction_89-happyReduction_89 (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 { happy_var_1 -> -        case happyOut52 happy_x_3 of { (HappyWrap52 happy_var_3) -> -        case happyOut91 happy_x_5 of { (HappyWrap91 happy_var_5) -> -        happyIn65-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.DataCompute (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5))-        ) `HappyStk` happyRest}}}--happyReduce_90 = happySpecReduce_0  19# happyReduction_90-happyReduction_90  =  happyIn66-                 ((Language.Rzk.Syntax.Abs.BNFC'NoPosition, [])-        )--happyReduce_91 = happySpecReduce_2  19# happyReduction_91-happyReduction_91 happy_x_2-        happy_x_1-         =  case happyOut65 happy_x_1 of { (HappyWrap65 happy_var_1) -> -        case happyOut66 happy_x_2 of { (HappyWrap66 happy_var_2) -> -        happyIn66-                 ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_2))-        )}}--happyReduce_92 = happyReduce 4# 20# happyReduction_92-happyReduction_92 (happy_x_4 `HappyStk`-        happy_x_3 `HappyStk`-        happy_x_2 `HappyStk`-        happy_x_1 `HappyStk`-        happyRest)-         = case happyOut52 happy_x_1 of { (HappyWrap52 happy_var_1) -> -        case happyOut70 happy_x_2 of { (HappyWrap70 happy_var_2) -> -        case happyOut91 happy_x_4 of { (HappyWrap91 happy_var_4) -> -        happyIn67-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.MatchBranch (fst happy_var_1) (snd happy_var_1) (snd happy_var_2) (snd happy_var_4))-        ) `HappyStk` happyRest}}}--happyReduce_93 = happySpecReduce_3  20# happyReduction_93-happyReduction_93 happy_x_3-        happy_x_2-        happy_x_1-         =  case happyOut52 happy_x_1 of { (HappyWrap52 happy_var_1) -> -        case happyOut91 happy_x_3 of { (HappyWrap91 happy_var_3) -> -        happyIn67-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.matchBranchNoParams (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))-        )}}--happyReduce_94 = happyReduce 4# 20# happyReduction_94-happyReduction_94 (happy_x_4 `HappyStk`-        happy_x_3 `HappyStk`-        happy_x_2 `HappyStk`-        happy_x_1 `HappyStk`-        happyRest)-         = case happyOut52 happy_x_1 of { (HappyWrap52 happy_var_1) -> -        case happyOut70 happy_x_2 of { (HappyWrap70 happy_var_2) -> -        case happyOut91 happy_x_4 of { (HappyWrap91 happy_var_4) -> -        happyIn67-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.ascii_MatchBranch (fst happy_var_1) (snd happy_var_1) (snd happy_var_2) (snd happy_var_4))-        ) `HappyStk` happyRest}}}--happyReduce_95 = happySpecReduce_3  20# happyReduction_95-happyReduction_95 happy_x_3-        happy_x_2-        happy_x_1-         =  case happyOut52 happy_x_1 of { (HappyWrap52 happy_var_1) -> -        case happyOut91 happy_x_3 of { (HappyWrap91 happy_var_3) -> -        happyIn67-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.ascii_matchBranchNoParams (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))-        )}}--happyReduce_96 = happySpecReduce_1  21# happyReduction_96-happyReduction_96 happy_x_1-         =  case happyOut67 happy_x_1 of { (HappyWrap67 happy_var_1) -> -        happyIn68-                 ((fst happy_var_1, (:[]) (snd happy_var_1))-        )}--happyReduce_97 = happySpecReduce_3  21# happyReduction_97-happyReduction_97 happy_x_3-        happy_x_2-        happy_x_1-         =  case happyOut67 happy_x_1 of { (HappyWrap67 happy_var_1) -> -        case happyOut68 happy_x_3 of { (HappyWrap68 happy_var_3) -> -        happyIn68-                 ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))-        )}}--happyReduce_98 = happySpecReduce_1  22# happyReduction_98-happyReduction_98 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn69-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.PatternUnit (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))-        )}--happyReduce_99 = happySpecReduce_1  22# happyReduction_99-happyReduction_99 happy_x_1-         =  case happyOut52 happy_x_1 of { (HappyWrap52 happy_var_1) -> -        happyIn69-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.PatternVar (fst happy_var_1) (snd happy_var_1))-        )}--happyReduce_100 = happyReduce 5# 22# happyReduction_100-happyReduction_100 (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 { happy_var_1 -> -        case happyOut69 happy_x_2 of { (HappyWrap69 happy_var_2) -> -        case happyOut69 happy_x_4 of { (HappyWrap69 happy_var_4) -> -        happyIn69-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.PatternPair (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))-        ) `HappyStk` happyRest}}}--happyReduce_101 = happyReduce 7# 22# happyReduction_101-happyReduction_101 (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 { happy_var_1 -> -        case happyOut69 happy_x_2 of { (HappyWrap69 happy_var_2) -> -        case happyOut69 happy_x_4 of { (HappyWrap69 happy_var_4) -> -        case happyOut72 happy_x_6 of { (HappyWrap72 happy_var_6) -> -        happyIn69-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.PatternTuple (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))-        ) `HappyStk` happyRest}}}}--happyReduce_102 = happySpecReduce_1  23# happyReduction_102-happyReduction_102 happy_x_1-         =  case happyOut69 happy_x_1 of { (HappyWrap69 happy_var_1) -> -        happyIn70-                 ((fst happy_var_1, (:[]) (snd happy_var_1))-        )}--happyReduce_103 = happySpecReduce_2  23# happyReduction_103-happyReduction_103 happy_x_2-        happy_x_1-         =  case happyOut69 happy_x_1 of { (HappyWrap69 happy_var_1) -> -        case happyOut70 happy_x_2 of { (HappyWrap70 happy_var_2) -> -        happyIn70-                 ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_2))-        )}}--happyReduce_104 = happySpecReduce_1  24# happyReduction_104-happyReduction_104 happy_x_1-         =  case happyOut69 happy_x_1 of { (HappyWrap69 happy_var_1) -> -        happyIn71-                 ((fst happy_var_1, (snd happy_var_1))-        )}--happyReduce_105 = happySpecReduce_1  25# happyReduction_105-happyReduction_105 happy_x_1-         =  case happyOut71 happy_x_1 of { (HappyWrap71 happy_var_1) -> -        happyIn72-                 ((fst happy_var_1, (:[]) (snd happy_var_1))-        )}--happyReduce_106 = happySpecReduce_3  25# happyReduction_106-happyReduction_106 happy_x_3-        happy_x_2-        happy_x_1-         =  case happyOut71 happy_x_1 of { (HappyWrap71 happy_var_1) -> -        case happyOut72 happy_x_3 of { (HappyWrap72 happy_var_3) -> -        happyIn72-                 ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))-        )}}--happyReduce_107 = happySpecReduce_1  26# happyReduction_107-happyReduction_107 happy_x_1-         =  case happyOut69 happy_x_1 of { (HappyWrap69 happy_var_1) -> -        happyIn73-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.ParamPattern (fst happy_var_1) (snd happy_var_1))-        )}--happyReduce_108 = happyReduce 5# 26# happyReduction_108-happyReduction_108 (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 { happy_var_1 -> -        case happyOut70 happy_x_2 of { (HappyWrap70 happy_var_2) -> -        case happyOut91 happy_x_4 of { (HappyWrap91 happy_var_4) -> -        happyIn73-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamPatternType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))-        ) `HappyStk` happyRest}}}--happyReduce_109 = happyReduce 7# 26# happyReduction_109-happyReduction_109 (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 { happy_var_1 -> -        case happyOut70 happy_x_2 of { (HappyWrap70 happy_var_2) -> -        case happyOut91 happy_x_4 of { (HappyWrap91 happy_var_4) -> -        case happyOut91 happy_x_6 of { (HappyWrap91 happy_var_6) -> -        happyIn73-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamPatternShape (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))-        ) `HappyStk` happyRest}}}}--happyReduce_110 = happyReduce 5# 26# happyReduction_110-happyReduction_110 (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 { happy_var_1 -> -        case happyOut70 happy_x_2 of { (HappyWrap70 happy_var_2) -> -        case happyOut83 happy_x_3 of { (HappyWrap83 happy_var_3) -> -        case happyOut91 happy_x_4 of { (HappyWrap91 happy_var_4) -> -        happyIn73-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamPatternModalType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4))-        ) `HappyStk` happyRest}}}}--happyReduce_111 = happyReduce 7# 26# happyReduction_111-happyReduction_111 (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 { happy_var_1 -> -        case happyOut70 happy_x_2 of { (HappyWrap70 happy_var_2) -> -        case happyOut83 happy_x_3 of { (HappyWrap83 happy_var_3) -> -        case happyOut91 happy_x_4 of { (HappyWrap91 happy_var_4) -> -        case happyOut91 happy_x_6 of { (HappyWrap91 happy_var_6) -> -        happyIn73-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamPatternModalShape (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6))-        ) `HappyStk` happyRest}}}}}--happyReduce_112 = happySpecReduce_1  27# happyReduction_112-happyReduction_112 happy_x_1-         =  case happyOut73 happy_x_1 of { (HappyWrap73 happy_var_1) -> -        happyIn74-                 ((fst happy_var_1, (:[]) (snd happy_var_1))-        )}--happyReduce_113 = happySpecReduce_2  27# happyReduction_113-happyReduction_113 happy_x_2-        happy_x_1-         =  case happyOut73 happy_x_1 of { (HappyWrap73 happy_var_1) -> -        case happyOut74 happy_x_2 of { (HappyWrap74 happy_var_2) -> -        happyIn74-                 ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_2))-        )}}--happyReduce_114 = happySpecReduce_1  28# happyReduction_114-happyReduction_114 happy_x_1-         =  case happyOut69 happy_x_1 of { (HappyWrap69 happy_var_1) -> -        happyIn75-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.BindPattern (fst happy_var_1) (snd happy_var_1))-        )}--happyReduce_115 = happySpecReduce_3  28# happyReduction_115-happyReduction_115 happy_x_3-        happy_x_2-        happy_x_1-         =  case happyOut69 happy_x_1 of { (HappyWrap69 happy_var_1) -> -        case happyOut91 happy_x_3 of { (HappyWrap91 happy_var_3) -> -        happyIn75-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.BindPatternType (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))-        )}}--happyReduce_116 = happySpecReduce_1  29# happyReduction_116-happyReduction_116 happy_x_1-         =  case happyOut89 happy_x_1 of { (HappyWrap89 happy_var_1) -> -        happyIn76-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.ParamType (fst happy_var_1) (snd happy_var_1))-        )}--happyReduce_117 = happyReduce 5# 29# happyReduction_117-happyReduction_117 (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 { happy_var_1 -> -        case happyOut91 happy_x_2 of { (HappyWrap91 happy_var_2) -> -        case happyOut91 happy_x_4 of { (HappyWrap91 happy_var_4) -> -        happyIn76-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamTermType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))-        ) `HappyStk` happyRest}}}--happyReduce_118 = happyReduce 7# 29# happyReduction_118-happyReduction_118 (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 { happy_var_1 -> -        case happyOut91 happy_x_2 of { (HappyWrap91 happy_var_2) -> -        case happyOut91 happy_x_4 of { (HappyWrap91 happy_var_4) -> -        case happyOut91 happy_x_6 of { (HappyWrap91 happy_var_6) -> -        happyIn76-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamTermShape (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))-        ) `HappyStk` happyRest}}}}--happyReduce_119 = happyReduce 5# 29# happyReduction_119-happyReduction_119 (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 { happy_var_1 -> -        case happyOut91 happy_x_2 of { (HappyWrap91 happy_var_2) -> -        case happyOut83 happy_x_3 of { (HappyWrap83 happy_var_3) -> -        case happyOut91 happy_x_4 of { (HappyWrap91 happy_var_4) -> -        happyIn76-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamTermModalType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4))-        ) `HappyStk` happyRest}}}}--happyReduce_120 = happyReduce 7# 29# happyReduction_120-happyReduction_120 (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 { happy_var_1 -> -        case happyOut91 happy_x_2 of { (HappyWrap91 happy_var_2) -> -        case happyOut83 happy_x_3 of { (HappyWrap83 happy_var_3) -> -        case happyOut91 happy_x_4 of { (HappyWrap91 happy_var_4) -> -        case happyOut91 happy_x_6 of { (HappyWrap91 happy_var_6) -> -        happyIn76-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamTermModalShape (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6))-        ) `HappyStk` happyRest}}}}}--happyReduce_121 = happySpecReduce_3  30# happyReduction_121-happyReduction_121 happy_x_3-        happy_x_2-        happy_x_1-         =  case happyOut69 happy_x_1 of { (HappyWrap69 happy_var_1) -> -        case happyOut91 happy_x_3 of { (HappyWrap91 happy_var_3) -> -        happyIn77-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.SigmaParam (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))-        )}}--happyReduce_122 = happySpecReduce_3  30# happyReduction_122-happyReduction_122 happy_x_3-        happy_x_2-        happy_x_1-         =  case happyOut69 happy_x_1 of { (HappyWrap69 happy_var_1) -> -        case happyOut83 happy_x_2 of { (HappyWrap83 happy_var_2) -> -        case happyOut91 happy_x_3 of { (HappyWrap91 happy_var_3) -> -        happyIn77-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.SigmaParamModal (fst happy_var_1) (snd happy_var_1) (snd happy_var_2) (snd happy_var_3))-        )}}}--happyReduce_123 = happySpecReduce_1  31# happyReduction_123-happyReduction_123 happy_x_1-         =  case happyOut77 happy_x_1 of { (HappyWrap77 happy_var_1) -> -        happyIn78-                 ((fst happy_var_1, (:[]) (snd happy_var_1))-        )}--happyReduce_124 = happySpecReduce_3  31# happyReduction_124-happyReduction_124 happy_x_3-        happy_x_2-        happy_x_1-         =  case happyOut77 happy_x_1 of { (HappyWrap77 happy_var_1) -> -        case happyOut78 happy_x_3 of { (HappyWrap78 happy_var_3) -> -        happyIn78-                 ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))-        )}}--happyReduce_125 = happySpecReduce_3  32# happyReduction_125-happyReduction_125 happy_x_3-        happy_x_2-        happy_x_1-         =  case happyOut91 happy_x_1 of { (HappyWrap91 happy_var_1) -> -        case happyOut91 happy_x_3 of { (HappyWrap91 happy_var_3) -> -        happyIn79-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.Restriction (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))-        )}}--happyReduce_126 = happySpecReduce_3  32# happyReduction_126-happyReduction_126 happy_x_3-        happy_x_2-        happy_x_1-         =  case happyOut91 happy_x_1 of { (HappyWrap91 happy_var_1) -> -        case happyOut91 happy_x_3 of { (HappyWrap91 happy_var_3) -> -        happyIn79-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_Restriction (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))-        )}}--happyReduce_127 = happySpecReduce_1  33# happyReduction_127-happyReduction_127 happy_x_1-         =  case happyOut79 happy_x_1 of { (HappyWrap79 happy_var_1) -> -        happyIn80-                 ((fst happy_var_1, (:[]) (snd happy_var_1))-        )}--happyReduce_128 = happySpecReduce_3  33# happyReduction_128-happyReduction_128 happy_x_3-        happy_x_2-        happy_x_1-         =  case happyOut79 happy_x_1 of { (HappyWrap79 happy_var_1) -> -        case happyOut80 happy_x_3 of { (HappyWrap80 happy_var_3) -> -        happyIn80-                 ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))-        )}}--happyReduce_129 = happySpecReduce_1  34# happyReduction_129-happyReduction_129 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn81-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Flat (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))-        )}--happyReduce_130 = happySpecReduce_1  34# happyReduction_130-happyReduction_130 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn81-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Flat (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))-        )}--happyReduce_131 = happySpecReduce_1  34# happyReduction_131-happyReduction_131 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn81-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Sharp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))-        )}--happyReduce_132 = happySpecReduce_1  34# happyReduction_132-happyReduction_132 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn81-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Sharp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))-        )}--happyReduce_133 = happySpecReduce_1  34# happyReduction_133-happyReduction_133 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn81-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Op (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))-        )}--happyReduce_134 = happySpecReduce_1  34# happyReduction_134-happyReduction_134 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn81-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Op (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))-        )}--happyReduce_135 = happySpecReduce_1  34# happyReduction_135-happyReduction_135 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn81-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Id (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))-        )}--happyReduce_136 = happySpecReduce_1  35# happyReduction_136-happyReduction_136 happy_x_1-         =  case happyOut81 happy_x_1 of { (HappyWrap81 happy_var_1) -> -        happyIn82-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.Single (fst happy_var_1) (snd happy_var_1))-        )}--happyReduce_137 = happySpecReduce_3  35# happyReduction_137-happyReduction_137 happy_x_3-        happy_x_2-        happy_x_1-         =  case happyOut81 happy_x_1 of { (HappyWrap81 happy_var_1) -> -        case happyOut81 happy_x_3 of { (HappyWrap81 happy_var_3) -> -        happyIn82-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.Comp (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))-        )}}--happyReduce_138 = happySpecReduce_1  36# happyReduction_138-happyReduction_138 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn83-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ModalColonFlat (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))-        )}--happyReduce_139 = happySpecReduce_1  36# happyReduction_139-happyReduction_139 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn83-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ModalColonSharp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))-        )}--happyReduce_140 = happySpecReduce_1  36# happyReduction_140-happyReduction_140 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn83-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ModalColonOp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))-        )}--happyReduce_141 = happySpecReduce_1  36# happyReduction_141-happyReduction_141 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn83-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ModalColonId (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))-        )}--happyReduce_142 = happySpecReduce_1  36# happyReduction_142-happyReduction_142 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn83-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_ModalColonFlat (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))-        )}--happyReduce_143 = happySpecReduce_1  36# happyReduction_143-happyReduction_143 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn83-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_ModalColonSharp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))-        )}--happyReduce_144 = happySpecReduce_1  36# happyReduction_144-happyReduction_144 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn83-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_ModalColonOp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))-        )}--happyReduce_145 = happySpecReduce_1  37# happyReduction_145-happyReduction_145 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn84-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Universe (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))-        )}--happyReduce_146 = happySpecReduce_1  37# happyReduction_146-happyReduction_146 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn84-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.UniverseCube (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))-        )}--happyReduce_147 = happySpecReduce_1  37# happyReduction_147-happyReduction_147 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn84-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.UniverseTope (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))-        )}--happyReduce_148 = happySpecReduce_1  37# happyReduction_148-happyReduction_148 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn84-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeUnit (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))-        )}--happyReduce_149 = happySpecReduce_1  37# happyReduction_149-happyReduction_149 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn84-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeUnitStar (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))-        )}--happyReduce_150 = happySpecReduce_1  37# happyReduction_150-happyReduction_150 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn84-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Cube2 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))-        )}--happyReduce_151 = happySpecReduce_1  37# happyReduction_151-happyReduction_151 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn84-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Cube2_0 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))-        )}--happyReduce_152 = happySpecReduce_1  37# happyReduction_152-happyReduction_152 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn84-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Cube2_1 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))-        )}--happyReduce_153 = happySpecReduce_1  37# happyReduction_153-happyReduction_153 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn84-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeI (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))-        )}--happyReduce_154 = happySpecReduce_1  37# happyReduction_154-happyReduction_154 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn84-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeI_0 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))-        )}--happyReduce_155 = happySpecReduce_1  37# happyReduction_155-happyReduction_155 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn84-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeI_1 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))-        )}--happyReduce_156 = happySpecReduce_1  37# happyReduction_156-happyReduction_156 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn84-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TopeTop (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))-        )}--happyReduce_157 = happySpecReduce_1  37# happyReduction_157-happyReduction_157 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn84-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TopeBottom (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))-        )}--happyReduce_158 = happySpecReduce_1  37# happyReduction_158-happyReduction_158 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn84-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.RecBottom (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))-        )}--happyReduce_159 = happyReduce 4# 37# happyReduction_159-happyReduction_159 (happy_x_4 `HappyStk`-        happy_x_3 `HappyStk`-        happy_x_2 `HappyStk`-        happy_x_1 `HappyStk`-        happyRest)-         = case happyOutTok happy_x_1 of { happy_var_1 -> -        case happyOut80 happy_x_3 of { (HappyWrap80 happy_var_3) -> -        happyIn84-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.RecOr (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3))-        ) `HappyStk` happyRest}}--happyReduce_160 = happySpecReduce_1  37# happyReduction_160-happyReduction_160 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn84-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TypeUnit (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))-        )}--happyReduce_161 = happyReduce 5# 37# happyReduction_161-happyReduction_161 (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 { happy_var_1 -> -        case happyOut91 happy_x_2 of { (HappyWrap91 happy_var_2) -> -        case happyOut91 happy_x_4 of { (HappyWrap91 happy_var_4) -> -        happyIn84-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Pair (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))-        ) `HappyStk` happyRest}}}--happyReduce_162 = happyReduce 7# 37# happyReduction_162-happyReduction_162 (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 { happy_var_1 -> -        case happyOut91 happy_x_2 of { (HappyWrap91 happy_var_2) -> -        case happyOut91 happy_x_4 of { (HappyWrap91 happy_var_4) -> -        case happyOut92 happy_x_6 of { (HappyWrap92 happy_var_6) -> -        happyIn84-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Tuple (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))-        ) `HappyStk` happyRest}}}}--happyReduce_163 = happySpecReduce_3  37# happyReduction_163-happyReduction_163 happy_x_3-        happy_x_2-        happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        case happyOut81 happy_x_2 of { (HappyWrap81 happy_var_2) -> -        case happyOut84 happy_x_3 of { (HappyWrap84 happy_var_3) -> -        happyIn84-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ModApp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3))-        )}}}--happyReduce_164 = happySpecReduce_2  37# happyReduction_164-happyReduction_164 happy_x_2-        happy_x_1-         =  case happyOut81 happy_x_1 of { (HappyWrap81 happy_var_1) -> -        case happyOut84 happy_x_2 of { (HappyWrap84 happy_var_2) -> -        happyIn84-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.ModType (fst happy_var_1) (snd happy_var_1) (snd happy_var_2))-        )}}--happyReduce_165 = happySpecReduce_1  37# happyReduction_165-happyReduction_165 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn84-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Unit (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))-        )}--happyReduce_166 = happySpecReduce_1  37# happyReduction_166-happyReduction_166 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn84-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Refl (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))-        )}--happyReduce_167 = happySpecReduce_3  37# happyReduction_167-happyReduction_167 happy_x_3-        happy_x_2-        happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        case happyOut91 happy_x_2 of { (HappyWrap91 happy_var_2) -> -        happyIn84-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ReflTerm (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))-        )}}--happyReduce_168 = happyReduce 5# 37# happyReduction_168-happyReduction_168 (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 { happy_var_1 -> -        case happyOut91 happy_x_2 of { (HappyWrap91 happy_var_2) -> -        case happyOut91 happy_x_4 of { (HappyWrap91 happy_var_4) -> -        happyIn84-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ReflTermType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))-        ) `HappyStk` happyRest}}}--happyReduce_169 = happyReduce 14# 37# happyReduction_169-happyReduction_169 (happy_x_14 `HappyStk`-        happy_x_13 `HappyStk`-        happy_x_12 `HappyStk`-        happy_x_11 `HappyStk`-        happy_x_10 `HappyStk`-        happy_x_9 `HappyStk`-        happy_x_8 `HappyStk`-        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 { happy_var_1 -> -        case happyOut91 happy_x_3 of { (HappyWrap91 happy_var_3) -> -        case happyOut91 happy_x_5 of { (HappyWrap91 happy_var_5) -> -        case happyOut91 happy_x_7 of { (HappyWrap91 happy_var_7) -> -        case happyOut91 happy_x_9 of { (HappyWrap91 happy_var_9) -> -        case happyOut91 happy_x_11 of { (HappyWrap91 happy_var_11) -> -        case happyOut91 happy_x_13 of { (HappyWrap91 happy_var_13) -> -        happyIn84-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.IdJ (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_7) (snd happy_var_9) (snd happy_var_11) (snd happy_var_13))-        ) `HappyStk` happyRest}}}}}}}--happyReduce_170 = happyReduce 5# 37# happyReduction_170-happyReduction_170 (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 { happy_var_1 -> -        case happyOut84 happy_x_2 of { (HappyWrap84 happy_var_2) -> -        case happyOut68 happy_x_4 of { (HappyWrap68 happy_var_4) -> -        happyIn84-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Match (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))-        ) `HappyStk` happyRest}}}--happyReduce_171 = happyReduce 7# 37# happyReduction_171-happyReduction_171 (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 { happy_var_1 -> -        case happyOut84 happy_x_2 of { (HappyWrap84 happy_var_2) -> -        case happyOut84 happy_x_4 of { (HappyWrap84 happy_var_4) -> -        case happyOut68 happy_x_6 of { (HappyWrap68 happy_var_6) -> -        happyIn84-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.MatchInto (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))-        ) `HappyStk` happyRest}}}}--happyReduce_172 = happySpecReduce_1  37# happyReduction_172-happyReduction_172 happy_x_1-         =  case happyOut51 happy_x_1 of { (HappyWrap51 happy_var_1) -> -        happyIn84-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.Hole (fst happy_var_1) (snd happy_var_1))-        )}--happyReduce_173 = happySpecReduce_1  37# happyReduction_173-happyReduction_173 happy_x_1-         =  case happyOut52 happy_x_1 of { (HappyWrap52 happy_var_1) -> -        happyIn84-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.Var (fst happy_var_1) (snd happy_var_1))-        )}--happyReduce_174 = happySpecReduce_3  37# happyReduction_174-happyReduction_174 happy_x_3-        happy_x_2-        happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        case happyOut91 happy_x_2 of { (HappyWrap91 happy_var_2) -> -        happyIn84-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), (snd happy_var_2))-        )}}--happyReduce_175 = happySpecReduce_1  37# happyReduction_175-happyReduction_175 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn84-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_CubeUnitStar (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))-        )}--happyReduce_176 = happySpecReduce_1  37# happyReduction_176-happyReduction_176 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn84-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Cube2_0 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))-        )}--happyReduce_177 = happySpecReduce_1  37# happyReduction_177-happyReduction_177 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn84-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Cube2_1 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))-        )}--happyReduce_178 = happySpecReduce_1  37# happyReduction_178-happyReduction_178 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn84-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_CubeI (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))-        )}--happyReduce_179 = happySpecReduce_1  37# happyReduction_179-happyReduction_179 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn84-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_CubeI_0 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))-        )}--happyReduce_180 = happySpecReduce_1  37# happyReduction_180-happyReduction_180 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn84-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_CubeI_1 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))-        )}--happyReduce_181 = happySpecReduce_1  37# happyReduction_181-happyReduction_181 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn84-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_TopeTop (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))-        )}--happyReduce_182 = happySpecReduce_1  37# happyReduction_182-happyReduction_182 happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        happyIn84-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_TopeBottom (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))-        )}--happyReduce_183 = happySpecReduce_3  38# happyReduction_183-happyReduction_183 happy_x_3-        happy_x_2-        happy_x_1-         =  case happyOut85 happy_x_1 of { (HappyWrap85 happy_var_1) -> -        case happyOut89 happy_x_3 of { (HappyWrap89 happy_var_3) -> -        happyIn85-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.CubeProduct (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))-        )}}--happyReduce_184 = happySpecReduce_3  38# happyReduction_184-happyReduction_184 happy_x_3-        happy_x_2-        happy_x_1-         =  case happyOut85 happy_x_1 of { (HappyWrap85 happy_var_1) -> -        case happyOut89 happy_x_3 of { (HappyWrap89 happy_var_3) -> -        happyIn85-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.CubeSup (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))-        )}}--happyReduce_185 = happySpecReduce_3  38# happyReduction_185-happyReduction_185 happy_x_3-        happy_x_2-        happy_x_1-         =  case happyOut85 happy_x_1 of { (HappyWrap85 happy_var_1) -> -        case happyOut89 happy_x_3 of { (HappyWrap89 happy_var_3) -> -        happyIn85-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.CubeInf (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))-        )}}--happyReduce_186 = happySpecReduce_1  38# happyReduction_186-happyReduction_186 happy_x_1-         =  case happyOut89 happy_x_1 of { (HappyWrap89 happy_var_1) -> -        happyIn85-                 ((fst happy_var_1, (snd happy_var_1))-        )}--happyReduce_187 = happySpecReduce_3  38# happyReduction_187-happyReduction_187 happy_x_3-        happy_x_2-        happy_x_1-         =  case happyOut85 happy_x_1 of { (HappyWrap85 happy_var_1) -> -        case happyOut89 happy_x_3 of { (HappyWrap89 happy_var_3) -> -        happyIn85-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.ascii_CubeProduct (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))-        )}}--happyReduce_188 = happySpecReduce_3  39# happyReduction_188-happyReduction_188 happy_x_3-        happy_x_2-        happy_x_1-         =  case happyOut85 happy_x_1 of { (HappyWrap85 happy_var_1) -> -        case happyOut85 happy_x_3 of { (HappyWrap85 happy_var_3) -> -        happyIn86-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.TopeEQ (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))-        )}}--happyReduce_189 = happySpecReduce_3  39# happyReduction_189-happyReduction_189 happy_x_3-        happy_x_2-        happy_x_1-         =  case happyOut85 happy_x_1 of { (HappyWrap85 happy_var_1) -> -        case happyOut85 happy_x_3 of { (HappyWrap85 happy_var_3) -> -        happyIn86-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.TopeLEQ (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))-        )}}--happyReduce_190 = happySpecReduce_1  39# happyReduction_190-happyReduction_190 happy_x_1-         =  case happyOut85 happy_x_1 of { (HappyWrap85 happy_var_1) -> -        happyIn86-                 ((fst happy_var_1, (snd happy_var_1))-        )}--happyReduce_191 = happySpecReduce_3  39# happyReduction_191-happyReduction_191 happy_x_3-        happy_x_2-        happy_x_1-         =  case happyOut85 happy_x_1 of { (HappyWrap85 happy_var_1) -> -        case happyOut85 happy_x_3 of { (HappyWrap85 happy_var_3) -> -        happyIn86-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_TopeEQ (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))-        )}}--happyReduce_192 = happySpecReduce_3  39# happyReduction_192-happyReduction_192 happy_x_3-        happy_x_2-        happy_x_1-         =  case happyOut85 happy_x_1 of { (HappyWrap85 happy_var_1) -> -        case happyOut85 happy_x_3 of { (HappyWrap85 happy_var_3) -> -        happyIn86-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_TopeLEQ (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))-        )}}--happyReduce_193 = happySpecReduce_3  40# happyReduction_193-happyReduction_193 happy_x_3-        happy_x_2-        happy_x_1-         =  case happyOut86 happy_x_1 of { (HappyWrap86 happy_var_1) -> -        case happyOut87 happy_x_3 of { (HappyWrap87 happy_var_3) -> -        happyIn87-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.TopeAnd (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))-        )}}--happyReduce_194 = happySpecReduce_1  40# happyReduction_194-happyReduction_194 happy_x_1-         =  case happyOut86 happy_x_1 of { (HappyWrap86 happy_var_1) -> -        happyIn87-                 ((fst happy_var_1, (snd happy_var_1))-        )}--happyReduce_195 = happySpecReduce_3  40# happyReduction_195-happyReduction_195 happy_x_3-        happy_x_2-        happy_x_1-         =  case happyOut86 happy_x_1 of { (HappyWrap86 happy_var_1) -> -        case happyOut87 happy_x_3 of { (HappyWrap87 happy_var_3) -> -        happyIn87-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_TopeAnd (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))-        )}}--happyReduce_196 = happySpecReduce_3  41# happyReduction_196-happyReduction_196 happy_x_3-        happy_x_2-        happy_x_1-         =  case happyOut87 happy_x_1 of { (HappyWrap87 happy_var_1) -> -        case happyOut88 happy_x_3 of { (HappyWrap88 happy_var_3) -> -        happyIn88-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.TopeOr (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))-        )}}--happyReduce_197 = happySpecReduce_1  41# happyReduction_197-happyReduction_197 happy_x_1-         =  case happyOut87 happy_x_1 of { (HappyWrap87 happy_var_1) -> -        happyIn88-                 ((fst happy_var_1, (snd happy_var_1))-        )}--happyReduce_198 = happySpecReduce_3  41# happyReduction_198-happyReduction_198 happy_x_3-        happy_x_2-        happy_x_1-         =  case happyOut87 happy_x_1 of { (HappyWrap87 happy_var_1) -> -        case happyOut88 happy_x_3 of { (HappyWrap88 happy_var_3) -> -        happyIn88-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_TopeOr (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))-        )}}--happyReduce_199 = happySpecReduce_2  42# happyReduction_199-happyReduction_199 happy_x_2-        happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        case happyOut84 happy_x_2 of { (HappyWrap84 happy_var_2) -> -        happyIn89-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TopeInv (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))-        )}}--happyReduce_200 = happySpecReduce_2  42# happyReduction_200-happyReduction_200 happy_x_2-        happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        case happyOut84 happy_x_2 of { (HappyWrap84 happy_var_2) -> -        happyIn89-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ascii_TopeInv (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))-        )}}--happyReduce_201 = happySpecReduce_2  42# happyReduction_201-happyReduction_201 happy_x_2-        happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        case happyOut84 happy_x_2 of { (HappyWrap84 happy_var_2) -> -        happyIn89-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TopeUninv (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))-        )}}--happyReduce_202 = happySpecReduce_2  42# happyReduction_202-happyReduction_202 happy_x_2-        happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        case happyOut84 happy_x_2 of { (HappyWrap84 happy_var_2) -> -        happyIn89-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ascii_TopeUninv (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))-        )}}--happyReduce_203 = happySpecReduce_2  42# happyReduction_203-happyReduction_203 happy_x_2-        happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        case happyOut84 happy_x_2 of { (HappyWrap84 happy_var_2) -> -        happyIn89-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeFlip (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))-        )}}--happyReduce_204 = happySpecReduce_2  42# happyReduction_204-happyReduction_204 happy_x_2-        happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        case happyOut84 happy_x_2 of { (HappyWrap84 happy_var_2) -> -        happyIn89-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ascii_CubeFlip (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))-        )}}--happyReduce_205 = happySpecReduce_2  42# happyReduction_205-happyReduction_205 happy_x_2-        happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        case happyOut84 happy_x_2 of { (HappyWrap84 happy_var_2) -> -        happyIn89-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeUnflip (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))-        )}}--happyReduce_206 = happySpecReduce_2  42# happyReduction_206-happyReduction_206 happy_x_2-        happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        case happyOut84 happy_x_2 of { (HappyWrap84 happy_var_2) -> -        happyIn89-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ascii_CubeUnflip (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))-        )}}--happyReduce_207 = happyReduce 4# 42# happyReduction_207-happyReduction_207 (happy_x_4 `HappyStk`-        happy_x_3 `HappyStk`-        happy_x_2 `HappyStk`-        happy_x_1 `HappyStk`-        happyRest)-         = case happyOut89 happy_x_1 of { (HappyWrap89 happy_var_1) -> -        case happyOut80 happy_x_3 of { (HappyWrap80 happy_var_3) -> -        happyIn89-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.TypeRestricted (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))-        ) `HappyStk` happyRest}}--happyReduce_208 = happySpecReduce_2  42# happyReduction_208-happyReduction_208 happy_x_2-        happy_x_1-         =  case happyOut89 happy_x_1 of { (HappyWrap89 happy_var_1) -> -        case happyOut84 happy_x_2 of { (HappyWrap84 happy_var_2) -> -        happyIn89-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.App (fst happy_var_1) (snd happy_var_1) (snd happy_var_2))-        )}}--happyReduce_209 = happySpecReduce_3  42# happyReduction_209-happyReduction_209 happy_x_3-        happy_x_2-        happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        case happyOut82 happy_x_2 of { (HappyWrap82 happy_var_2) -> -        case happyOut84 happy_x_3 of { (HappyWrap84 happy_var_3) -> -        happyIn89-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ModExtract (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3))-        )}}}--happyReduce_210 = happySpecReduce_2  42# happyReduction_210-happyReduction_210 happy_x_2-        happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        case happyOut84 happy_x_2 of { (HappyWrap84 happy_var_2) -> -        happyIn89-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.First (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))-        )}}--happyReduce_211 = happySpecReduce_2  42# happyReduction_211-happyReduction_211 happy_x_2-        happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        case happyOut84 happy_x_2 of { (HappyWrap84 happy_var_2) -> -        happyIn89-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Second (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))-        )}}--happyReduce_212 = happySpecReduce_1  42# happyReduction_212-happyReduction_212 happy_x_1-         =  case happyOut84 happy_x_1 of { (HappyWrap84 happy_var_1) -> -        happyIn89-                 ((fst happy_var_1, (snd happy_var_1))-        )}--happyReduce_213 = happySpecReduce_3  42# happyReduction_213-happyReduction_213 happy_x_3-        happy_x_2-        happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        case happyOut84 happy_x_2 of { (HappyWrap84 happy_var_2) -> -        case happyOut84 happy_x_3 of { (HappyWrap84 happy_var_3) -> -        happyIn89-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ascii_CubeSup (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3))-        )}}}--happyReduce_214 = happySpecReduce_3  42# happyReduction_214-happyReduction_214 happy_x_3-        happy_x_2-        happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        case happyOut84 happy_x_2 of { (HappyWrap84 happy_var_2) -> -        case happyOut84 happy_x_3 of { (HappyWrap84 happy_var_3) -> -        happyIn89-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ascii_CubeInf (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3))-        )}}}--happyReduce_215 = happySpecReduce_2  42# happyReduction_215-happyReduction_215 happy_x_2-        happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        case happyOut84 happy_x_2 of { (HappyWrap84 happy_var_2) -> -        happyIn89-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_First (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))-        )}}--happyReduce_216 = happySpecReduce_2  42# happyReduction_216-happyReduction_216 happy_x_2-        happy_x_1-         =  case happyOutTok happy_x_1 of { happy_var_1 -> -        case happyOut84 happy_x_2 of { (HappyWrap84 happy_var_2) -> -        happyIn89-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Second (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))-        )}}--happyReduce_217 = happySpecReduce_3  43# happyReduction_217-happyReduction_217 happy_x_3-        happy_x_2-        happy_x_1-         =  case happyOut76 happy_x_1 of { (HappyWrap76 happy_var_1) -> -        case happyOut90 happy_x_3 of { (HappyWrap90 happy_var_3) -> -        happyIn90-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.TypeFun (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))-        )}}--happyReduce_218 = happyReduce 8# 43# happyReduction_218-happyReduction_218 (happy_x_8 `HappyStk`-        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 { happy_var_1 -> -        case happyOut69 happy_x_3 of { (HappyWrap69 happy_var_3) -> -        case happyOut91 happy_x_5 of { (HappyWrap91 happy_var_5) -> -        case happyOut90 happy_x_8 of { (HappyWrap90 happy_var_8) -> -        happyIn90-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TypeSigma (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))-        ) `HappyStk` happyRest}}}}--happyReduce_219 = happyReduce 8# 43# happyReduction_219-happyReduction_219 (happy_x_8 `HappyStk`-        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 { happy_var_1 -> -        case happyOut69 happy_x_3 of { (HappyWrap69 happy_var_3) -> -        case happyOut83 happy_x_4 of { (HappyWrap83 happy_var_4) -> -        case happyOut91 happy_x_5 of { (HappyWrap91 happy_var_5) -> -        case happyOut90 happy_x_8 of { (HappyWrap90 happy_var_8) -> -        happyIn90-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TypeSigmaModal (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_4) (snd happy_var_5) (snd happy_var_8))-        ) `HappyStk` happyRest}}}}}--happyReduce_220 = happyReduce 8# 43# happyReduction_220-happyReduction_220 (happy_x_8 `HappyStk`-        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 { happy_var_1 -> -        case happyOut77 happy_x_3 of { (HappyWrap77 happy_var_3) -> -        case happyOut78 happy_x_5 of { (HappyWrap78 happy_var_5) -> -        case happyOut90 happy_x_8 of { (HappyWrap90 happy_var_8) -> -        happyIn90-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TypeSigmaTuple (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))-        ) `HappyStk` happyRest}}}}--happyReduce_221 = happyReduce 5# 43# 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 happyOut88 happy_x_1 of { (HappyWrap88 happy_var_1) -> -        case happyOut91 happy_x_3 of { (HappyWrap91 happy_var_3) -> -        case happyOut88 happy_x_5 of { (HappyWrap88 happy_var_5) -> -        happyIn90-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.TypeId (fst happy_var_1) (snd happy_var_1) (snd happy_var_3) (snd happy_var_5))-        ) `HappyStk` happyRest}}}--happyReduce_222 = happySpecReduce_3  43# happyReduction_222-happyReduction_222 happy_x_3-        happy_x_2-        happy_x_1-         =  case happyOut88 happy_x_1 of { (HappyWrap88 happy_var_1) -> -        case happyOut88 happy_x_3 of { (HappyWrap88 happy_var_3) -> -        happyIn90-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.TypeIdSimple (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))-        )}}--happyReduce_223 = happyReduce 6# 43# happyReduction_223-happyReduction_223 (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 { happy_var_1 -> -        case happyOut75 happy_x_2 of { (HappyWrap75 happy_var_2) -> -        case happyOut91 happy_x_4 of { (HappyWrap91 happy_var_4) -> -        case happyOut91 happy_x_6 of { (HappyWrap91 happy_var_6) -> -        happyIn90-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Let (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))-        ) `HappyStk` happyRest}}}}--happyReduce_224 = happyReduce 4# 43# happyReduction_224-happyReduction_224 (happy_x_4 `HappyStk`-        happy_x_3 `HappyStk`-        happy_x_2 `HappyStk`-        happy_x_1 `HappyStk`-        happyRest)-         = case happyOutTok happy_x_1 of { happy_var_1 -> -        case happyOut74 happy_x_2 of { (HappyWrap74 happy_var_2) -> -        case happyOut90 happy_x_4 of { (HappyWrap90 happy_var_4) -> -        happyIn90-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Lambda (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))-        ) `HappyStk` happyRest}}}--happyReduce_225 = happyReduce 7# 43# happyReduction_225-happyReduction_225 (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 { happy_var_1 -> -        case happyOut81 happy_x_2 of { (HappyWrap81 happy_var_2) -> -        case happyOut75 happy_x_3 of { (HappyWrap75 happy_var_3) -> -        case happyOut91 happy_x_5 of { (HappyWrap91 happy_var_5) -> -        case happyOut91 happy_x_7 of { (HappyWrap91 happy_var_7) -> -        happyIn90-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.LetModBind (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_5) (snd happy_var_7))-        ) `HappyStk` happyRest}}}}}--happyReduce_226 = happyReduce 8# 43# happyReduction_226-happyReduction_226 (happy_x_8 `HappyStk`-        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 { happy_var_1 -> -        case happyOut81 happy_x_3 of { (HappyWrap81 happy_var_3) -> -        case happyOut75 happy_x_4 of { (HappyWrap75 happy_var_4) -> -        case happyOut91 happy_x_6 of { (HappyWrap91 happy_var_6) -> -        case happyOut91 happy_x_8 of { (HappyWrap91 happy_var_8) -> -        happyIn90-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.LetMod (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6) (snd happy_var_8))-        ) `HappyStk` happyRest}}}}}--happyReduce_227 = happyReduce 9# 43# happyReduction_227-happyReduction_227 (happy_x_9 `HappyStk`-        happy_x_8 `HappyStk`-        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 { happy_var_1 -> -        case happyOut81 happy_x_2 of { (HappyWrap81 happy_var_2) -> -        case happyOut81 happy_x_4 of { (HappyWrap81 happy_var_4) -> -        case happyOut75 happy_x_5 of { (HappyWrap75 happy_var_5) -> -        case happyOut91 happy_x_7 of { (HappyWrap91 happy_var_7) -> -        case happyOut91 happy_x_9 of { (HappyWrap91 happy_var_9) -> -        happyIn90-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.LetModFramed (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_5) (snd happy_var_7) (snd happy_var_9))-        ) `HappyStk` happyRest}}}}}}--happyReduce_228 = happyReduce 9# 43# happyReduction_228-happyReduction_228 (happy_x_9 `HappyStk`-        happy_x_8 `HappyStk`-        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 { happy_var_1 -> -        case happyOut81 happy_x_2 of { (HappyWrap81 happy_var_2) -> -        case happyOut75 happy_x_3 of { (HappyWrap75 happy_var_3) -> -        case happyOut91 happy_x_5 of { (HappyWrap91 happy_var_5) -> -        case happyOut91 happy_x_7 of { (HappyWrap91 happy_var_7) -> -        case happyOut91 happy_x_9 of { (HappyWrap91 happy_var_9) -> -        happyIn90-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.LetModBindInto (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_5) (snd happy_var_7) (snd happy_var_9))-        ) `HappyStk` happyRest}}}}}}--happyReduce_229 = happyReduce 10# 43# happyReduction_229-happyReduction_229 (happy_x_10 `HappyStk`-        happy_x_9 `HappyStk`-        happy_x_8 `HappyStk`-        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 { happy_var_1 -> -        case happyOut81 happy_x_3 of { (HappyWrap81 happy_var_3) -> -        case happyOut75 happy_x_4 of { (HappyWrap75 happy_var_4) -> -        case happyOut91 happy_x_6 of { (HappyWrap91 happy_var_6) -> -        case happyOut91 happy_x_8 of { (HappyWrap91 happy_var_8) -> -        case happyOut91 happy_x_10 of { (HappyWrap91 happy_var_10) -> -        happyIn90-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.LetModInto (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6) (snd happy_var_8) (snd happy_var_10))-        ) `HappyStk` happyRest}}}}}}--happyReduce_230 = happyReduce 11# 43# happyReduction_230-happyReduction_230 (happy_x_11 `HappyStk`-        happy_x_10 `HappyStk`-        happy_x_9 `HappyStk`-        happy_x_8 `HappyStk`-        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 { happy_var_1 -> -        case happyOut81 happy_x_2 of { (HappyWrap81 happy_var_2) -> -        case happyOut81 happy_x_4 of { (HappyWrap81 happy_var_4) -> -        case happyOut75 happy_x_5 of { (HappyWrap75 happy_var_5) -> -        case happyOut91 happy_x_7 of { (HappyWrap91 happy_var_7) -> -        case happyOut91 happy_x_9 of { (HappyWrap91 happy_var_9) -> -        case happyOut91 happy_x_11 of { (HappyWrap91 happy_var_11) -> -        happyIn90-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.LetModFramedInto (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_5) (snd happy_var_7) (snd happy_var_9) (snd happy_var_11))-        ) `HappyStk` happyRest}}}}}}}--happyReduce_231 = happySpecReduce_1  43# happyReduction_231-happyReduction_231 happy_x_1-         =  case happyOut88 happy_x_1 of { (HappyWrap88 happy_var_1) -> -        happyIn90-                 ((fst happy_var_1, (snd happy_var_1))-        )}--happyReduce_232 = happySpecReduce_3  43# happyReduction_232-happyReduction_232 happy_x_3-        happy_x_2-        happy_x_1-         =  case happyOut76 happy_x_1 of { (HappyWrap76 happy_var_1) -> -        case happyOut90 happy_x_3 of { (HappyWrap90 happy_var_3) -> -        happyIn90-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_TypeFun (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))-        )}}--happyReduce_233 = happyReduce 8# 43# happyReduction_233-happyReduction_233 (happy_x_8 `HappyStk`-        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 { happy_var_1 -> -        case happyOut69 happy_x_3 of { (HappyWrap69 happy_var_3) -> -        case happyOut91 happy_x_5 of { (HappyWrap91 happy_var_5) -> -        case happyOut90 happy_x_8 of { (HappyWrap90 happy_var_8) -> -        happyIn90-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_TypeSigma (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))-        ) `HappyStk` happyRest}}}}--happyReduce_234 = happyReduce 8# 43# happyReduction_234-happyReduction_234 (happy_x_8 `HappyStk`-        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 { happy_var_1 -> -        case happyOut69 happy_x_3 of { (HappyWrap69 happy_var_3) -> -        case happyOut83 happy_x_4 of { (HappyWrap83 happy_var_4) -> -        case happyOut91 happy_x_5 of { (HappyWrap91 happy_var_5) -> -        case happyOut90 happy_x_8 of { (HappyWrap90 happy_var_8) -> -        happyIn90-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ascii_TypeSigmaModal (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_4) (snd happy_var_5) (snd happy_var_8))-        ) `HappyStk` happyRest}}}}}--happyReduce_235 = happyReduce 8# 43# happyReduction_235-happyReduction_235 (happy_x_8 `HappyStk`-        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 { happy_var_1 -> -        case happyOut77 happy_x_3 of { (HappyWrap77 happy_var_3) -> -        case happyOut78 happy_x_5 of { (HappyWrap78 happy_var_5) -> -        case happyOut90 happy_x_8 of { (HappyWrap90 happy_var_8) -> -        happyIn90-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_TypeSigmaTuple (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))-        ) `HappyStk` happyRest}}}}--happyReduce_236 = happyReduce 4# 43# happyReduction_236-happyReduction_236 (happy_x_4 `HappyStk`-        happy_x_3 `HappyStk`-        happy_x_2 `HappyStk`-        happy_x_1 `HappyStk`-        happyRest)-         = case happyOutTok happy_x_1 of { happy_var_1 -> -        case happyOut74 happy_x_2 of { (HappyWrap74 happy_var_2) -> -        case happyOut90 happy_x_4 of { (HappyWrap90 happy_var_4) -> -        happyIn90-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Lambda (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))-        ) `HappyStk` happyRest}}}--happyReduce_237 = happyReduce 8# 43# happyReduction_237-happyReduction_237 (happy_x_8 `HappyStk`-        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 { happy_var_1 -> -        case happyOut69 happy_x_3 of { (HappyWrap69 happy_var_3) -> -        case happyOut91 happy_x_5 of { (HappyWrap91 happy_var_5) -> -        case happyOut90 happy_x_8 of { (HappyWrap90 happy_var_8) -> -        happyIn90-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.unicode_TypeSigmaAlt (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))-        ) `HappyStk` happyRest}}}}--happyReduce_238 = happyReduce 8# 43# happyReduction_238-happyReduction_238 (happy_x_8 `HappyStk`-        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 { happy_var_1 -> -        case happyOut77 happy_x_3 of { (HappyWrap77 happy_var_3) -> -        case happyOut78 happy_x_5 of { (HappyWrap78 happy_var_5) -> -        case happyOut90 happy_x_8 of { (HappyWrap90 happy_var_8) -> -        happyIn90-                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.unicode_TypeSigmaTupleAlt (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))-        ) `HappyStk` happyRest}}}}--happyReduce_239 = happySpecReduce_3  44# happyReduction_239-happyReduction_239 happy_x_3-        happy_x_2-        happy_x_1-         =  case happyOut88 happy_x_1 of { (HappyWrap88 happy_var_1) -> -        case happyOut90 happy_x_3 of { (HappyWrap90 happy_var_3) -> -        happyIn91-                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.TypeAsc (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))-        )}}--happyReduce_240 = happySpecReduce_1  44# happyReduction_240-happyReduction_240 happy_x_1-         =  case happyOut90 happy_x_1 of { (HappyWrap90 happy_var_1) -> -        happyIn91-                 ((fst happy_var_1, (snd happy_var_1))-        )}--happyReduce_241 = happySpecReduce_1  45# happyReduction_241-happyReduction_241 happy_x_1-         =  case happyOut91 happy_x_1 of { (HappyWrap91 happy_var_1) -> -        happyIn92-                 ((fst happy_var_1, (:[]) (snd happy_var_1))-        )}--happyReduce_242 = happySpecReduce_3  45# happyReduction_242-happyReduction_242 happy_x_3-        happy_x_2-        happy_x_1-         =  case happyOut91 happy_x_1 of { (HappyWrap91 happy_var_1) -> -        case happyOut92 happy_x_3 of { (HappyWrap92 happy_var_3) -> -        happyIn92-                 ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))-        )}}--happyTerminalToTok term = case term of {-        PT _ (TS _ 1) -> 2#;-        PT _ (TS _ 2) -> 3#;-        PT _ (TS _ 3) -> 4#;-        PT _ (TS _ 4) -> 5#;-        PT _ (TS _ 5) -> 6#;-        PT _ (TS _ 6) -> 7#;-        PT _ (TS _ 7) -> 8#;-        PT _ (TS _ 8) -> 9#;-        PT _ (TS _ 9) -> 10#;-        PT _ (TS _ 10) -> 11#;-        PT _ (TS _ 11) -> 12#;-        PT _ (TS _ 12) -> 13#;-        PT _ (TS _ 13) -> 14#;-        PT _ (TS _ 14) -> 15#;-        PT _ (TS _ 15) -> 16#;-        PT _ (TS _ 16) -> 17#;-        PT _ (TS _ 17) -> 18#;-        PT _ (TS _ 18) -> 19#;-        PT _ (TS _ 19) -> 20#;-        PT _ (TS _ 20) -> 21#;-        PT _ (TS _ 21) -> 22#;-        PT _ (TS _ 22) -> 23#;-        PT _ (TS _ 23) -> 24#;-        PT _ (TS _ 24) -> 25#;-        PT _ (TS _ 25) -> 26#;-        PT _ (TS _ 26) -> 27#;-        PT _ (TS _ 27) -> 28#;-        PT _ (TS _ 28) -> 29#;-        PT _ (TS _ 29) -> 30#;-        PT _ (TS _ 30) -> 31#;-        PT _ (TS _ 31) -> 32#;-        PT _ (TS _ 32) -> 33#;-        PT _ (TS _ 33) -> 34#;-        PT _ (TS _ 34) -> 35#;-        PT _ (TS _ 35) -> 36#;-        PT _ (TS _ 36) -> 37#;-        PT _ (TS _ 37) -> 38#;-        PT _ (TS _ 38) -> 39#;-        PT _ (TS _ 39) -> 40#;-        PT _ (TS _ 40) -> 41#;-        PT _ (TS _ 41) -> 42#;-        PT _ (TS _ 42) -> 43#;-        PT _ (TS _ 43) -> 44#;-        PT _ (TS _ 44) -> 45#;-        PT _ (TS _ 45) -> 46#;-        PT _ (TS _ 46) -> 47#;-        PT _ (TS _ 47) -> 48#;-        PT _ (TS _ 48) -> 49#;-        PT _ (TS _ 49) -> 50#;-        PT _ (TS _ 50) -> 51#;-        PT _ (TS _ 51) -> 52#;-        PT _ (TS _ 52) -> 53#;-        PT _ (TS _ 53) -> 54#;-        PT _ (TS _ 54) -> 55#;-        PT _ (TS _ 55) -> 56#;-        PT _ (TS _ 56) -> 57#;-        PT _ (TS _ 57) -> 58#;-        PT _ (TS _ 58) -> 59#;-        PT _ (TS _ 59) -> 60#;-        PT _ (TS _ 60) -> 61#;-        PT _ (TS _ 61) -> 62#;-        PT _ (TS _ 62) -> 63#;-        PT _ (TS _ 63) -> 64#;-        PT _ (TS _ 64) -> 65#;-        PT _ (TS _ 65) -> 66#;-        PT _ (TS _ 66) -> 67#;-        PT _ (TS _ 67) -> 68#;-        PT _ (TS _ 68) -> 69#;-        PT _ (TS _ 69) -> 70#;-        PT _ (TS _ 70) -> 71#;-        PT _ (TS _ 71) -> 72#;-        PT _ (TS _ 72) -> 73#;-        PT _ (TS _ 73) -> 74#;-        PT _ (TS _ 74) -> 75#;-        PT _ (TS _ 75) -> 76#;-        PT _ (TS _ 76) -> 77#;-        PT _ (TS _ 77) -> 78#;-        PT _ (TS _ 78) -> 79#;-        PT _ (TS _ 79) -> 80#;-        PT _ (TS _ 80) -> 81#;-        PT _ (TS _ 81) -> 82#;-        PT _ (TS _ 82) -> 83#;-        PT _ (TS _ 83) -> 84#;-        PT _ (TS _ 84) -> 85#;-        PT _ (TS _ 85) -> 86#;-        PT _ (TS _ 86) -> 87#;-        PT _ (TS _ 87) -> 88#;-        PT _ (TS _ 88) -> 89#;-        PT _ (TS _ 89) -> 90#;-        PT _ (TS _ 90) -> 91#;-        PT _ (TS _ 91) -> 92#;-        PT _ (TS _ 92) -> 93#;-        PT _ (TS _ 93) -> 94#;-        PT _ (TS _ 94) -> 95#;-        PT _ (TS _ 95) -> 96#;-        PT _ (TS _ 96) -> 97#;-        PT _ (TS _ 97) -> 98#;-        PT _ (TS _ 98) -> 99#;-        PT _ (TS _ 99) -> 100#;-        PT _ (TS _ 100) -> 101#;-        PT _ (TS _ 101) -> 102#;-        PT _ (TS _ 102) -> 103#;-        PT _ (TS _ 103) -> 104#;-        PT _ (TS _ 104) -> 105#;-        PT _ (TS _ 105) -> 106#;-        PT _ (TS _ 106) -> 107#;-        PT _ (TS _ 107) -> 108#;-        PT _ (TS _ 108) -> 109#;-        PT _ (TS _ 109) -> 110#;-        PT _ (TS _ 110) -> 111#;-        PT _ (TS _ 111) -> 112#;-        PT _ (TS _ 112) -> 113#;-        PT _ (TS _ 113) -> 114#;-        PT _ (TS _ 114) -> 115#;-        PT _ (TS _ 115) -> 116#;-        PT _ (TS _ 116) -> 117#;-        PT _ (TS _ 117) -> 118#;-        PT _ (TS _ 118) -> 119#;-        PT _ (TS _ 119) -> 120#;-        PT _ (TL _) -> 121#;-        PT _ (T_VarIdentToken _) -> 122#;-        PT _ (T_HoleIdentToken _) -> 123#;-        _ -> -1#;-        }-{-# NOINLINE happyTerminalToTok #-}--happyLex kend  _kmore []       = kend notHappyAtAll []-happyLex _kend kmore  (tk:tks) = kmore (happyTerminalToTok tk) tk tks-{-# INLINE happyLex #-}--happyNewToken action sts stk = happyLex (\tk -> happyDoAction 124# notHappyAtAll action sts stk) (\i tk -> happyDoAction i tk action sts stk)--happyReport 124# tk explist resume tks = happyReport' tks explist resume-happyReport _ tk explist resume tks = happyReport' (tk:tks) explist (\tks -> resume (Happy_Prelude.tail tks))---happyThen :: () => (Err a) -> (a -> (Err b)) -> (Err b)-happyThen = ((>>=))-happyReturn :: () => a -> (Err a)-happyReturn = (return)-happyThen1 m k tks = ((>>=)) m (\a -> k a tks)-happyFmap1 f m tks = happyThen (m tks) (\a -> happyReturn (f a))-happyReturn1 :: () => a -> b -> (Err a)-happyReturn1 = \a tks -> (return) a-happyReport' :: () => [(Token)] -> [Happy_Prelude.String] -> ([(Token)] -> (Err a)) -> (Err a)-happyReport' = (\tokens expected resume -> happyError tokens)--happyAbort :: () => [(Token)] -> (Err a)-happyAbort = Happy_Prelude.error "Called abort handler in non-resumptive parser"--pModule_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 0# tks) (\x -> happyReturn (let {(HappyWrap50 x') = happyOut50 x} in x'))--pHoleIdent_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 1# tks) (\x -> happyReturn (let {(HappyWrap51 x') = happyOut51 x} in x'))--pVarIdent_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 2# tks) (\x -> happyReturn (let {(HappyWrap52 x') = happyOut52 x} in x'))--pListVarIdent_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 3# tks) (\x -> happyReturn (let {(HappyWrap53 x') = happyOut53 x} in x'))--pLanguageDecl_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 4# tks) (\x -> happyReturn (let {(HappyWrap54 x') = happyOut54 x} in x'))--pLanguage_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 5# tks) (\x -> happyReturn (let {(HappyWrap55 x') = happyOut55 x} in x'))--pCommand_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 6# tks) (\x -> happyReturn (let {(HappyWrap56 x') = happyOut56 x} in x'))--pListCommand_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 7# tks) (\x -> happyReturn (let {(HappyWrap57 x') = happyOut57 x} in x'))--pDeclUsedVars_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 8# tks) (\x -> happyReturn (let {(HappyWrap58 x') = happyOut58 x} in x'))--pSectionName_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 9# tks) (\x -> happyReturn (let {(HappyWrap59 x') = happyOut59 x} in x'))--pDataSort_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 10# tks) (\x -> happyReturn (let {(HappyWrap60 x') = happyOut60 x} in x'))--pDataBody_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 11# tks) (\x -> happyReturn (let {(HappyWrap61 x') = happyOut61 x} in x'))--pConstructor_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 12# tks) (\x -> happyReturn (let {(HappyWrap62 x') = happyOut62 x} in x'))--pListConstructor_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 13# tks) (\x -> happyReturn (let {(HappyWrap63 x') = happyOut63 x} in x'))--pConstructorType_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 14# tks) (\x -> happyReturn (let {(HappyWrap64 x') = happyOut64 x} in x'))--pDataElim_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 15# tks) (\x -> happyReturn (let {(HappyWrap65 x') = happyOut65 x} in x'))--pListDataElim_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 16# tks) (\x -> happyReturn (let {(HappyWrap66 x') = happyOut66 x} in x'))--pMatchBranch_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 17# tks) (\x -> happyReturn (let {(HappyWrap67 x') = happyOut67 x} in x'))--pListMatchBranch_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 18# tks) (\x -> happyReturn (let {(HappyWrap68 x') = happyOut68 x} in x'))--pPattern_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 19# tks) (\x -> happyReturn (let {(HappyWrap69 x') = happyOut69 x} in x'))--pListPattern_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 20# tks) (\x -> happyReturn (let {(HappyWrap70 x') = happyOut70 x} in x'))--pPattern1_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 21# tks) (\x -> happyReturn (let {(HappyWrap71 x') = happyOut71 x} in x'))--pListPattern1_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 22# tks) (\x -> happyReturn (let {(HappyWrap72 x') = happyOut72 x} in x'))--pParam_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 23# tks) (\x -> happyReturn (let {(HappyWrap73 x') = happyOut73 x} in x'))--pListParam_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 24# tks) (\x -> happyReturn (let {(HappyWrap74 x') = happyOut74 x} in x'))--pBind_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 25# tks) (\x -> happyReturn (let {(HappyWrap75 x') = happyOut75 x} in x'))--pParamDecl_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 26# tks) (\x -> happyReturn (let {(HappyWrap76 x') = happyOut76 x} in x'))--pSigmaParam_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 27# tks) (\x -> happyReturn (let {(HappyWrap77 x') = happyOut77 x} in x'))--pListSigmaParam_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 28# tks) (\x -> happyReturn (let {(HappyWrap78 x') = happyOut78 x} in x'))--pRestriction_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 29# tks) (\x -> happyReturn (let {(HappyWrap79 x') = happyOut79 x} in x'))--pListRestriction_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 30# tks) (\x -> happyReturn (let {(HappyWrap80 x') = happyOut80 x} in x'))--pModality_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 31# tks) (\x -> happyReturn (let {(HappyWrap81 x') = happyOut81 x} in x'))--pModComp_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 32# tks) (\x -> happyReturn (let {(HappyWrap82 x') = happyOut82 x} in x'))--pModalColon_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 33# tks) (\x -> happyReturn (let {(HappyWrap83 x') = happyOut83 x} in x'))--pTerm7_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 34# tks) (\x -> happyReturn (let {(HappyWrap84 x') = happyOut84 x} in x'))--pTerm5_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 35# tks) (\x -> happyReturn (let {(HappyWrap85 x') = happyOut85 x} in x'))--pTerm4_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 36# tks) (\x -> happyReturn (let {(HappyWrap86 x') = happyOut86 x} in x'))--pTerm3_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 37# tks) (\x -> happyReturn (let {(HappyWrap87 x') = happyOut87 x} in x'))--pTerm2_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 38# tks) (\x -> happyReturn (let {(HappyWrap88 x') = happyOut88 x} in x'))--pTerm6_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 39# tks) (\x -> happyReturn (let {(HappyWrap89 x') = happyOut89 x} in x'))--pTerm1_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 40# tks) (\x -> happyReturn (let {(HappyWrap90 x') = happyOut90 x} in x'))--pTerm_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 41# tks) (\x -> happyReturn (let {(HappyWrap91 x') = happyOut91 x} in x'))--pListTerm_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 42# tks) (\x -> happyReturn (let {(HappyWrap92 x') = happyOut92 x} in x'))--happySeq = happyDontSeq---type Err = Either String--happyError :: [Token] -> Err a-happyError ts = Left $-  "syntax error at " ++ tokenPos ts ++-  case ts of-    []      -> []-    [Err _] -> " due to lexer error"-    t:_     -> " before `" ++ (prToken t) ++ "'"--myLexer :: Data.Text.Text -> [Token]-myLexer = tokens---- Entrypoints--pModule :: [Token] -> Err Language.Rzk.Syntax.Abs.Module-pModule = fmap snd . pModule_internal--pHoleIdent :: [Token] -> Err Language.Rzk.Syntax.Abs.HoleIdent-pHoleIdent = fmap snd . pHoleIdent_internal--pVarIdent :: [Token] -> Err Language.Rzk.Syntax.Abs.VarIdent-pVarIdent = fmap snd . pVarIdent_internal--pListVarIdent :: [Token] -> Err [Language.Rzk.Syntax.Abs.VarIdent]-pListVarIdent = fmap snd . pListVarIdent_internal--pLanguageDecl :: [Token] -> Err Language.Rzk.Syntax.Abs.LanguageDecl-pLanguageDecl = fmap snd . pLanguageDecl_internal--pLanguage :: [Token] -> Err Language.Rzk.Syntax.Abs.Language-pLanguage = fmap snd . pLanguage_internal--pCommand :: [Token] -> Err Language.Rzk.Syntax.Abs.Command-pCommand = fmap snd . pCommand_internal--pListCommand :: [Token] -> Err [Language.Rzk.Syntax.Abs.Command]-pListCommand = fmap snd . pListCommand_internal--pDeclUsedVars :: [Token] -> Err Language.Rzk.Syntax.Abs.DeclUsedVars-pDeclUsedVars = fmap snd . pDeclUsedVars_internal--pSectionName :: [Token] -> Err Language.Rzk.Syntax.Abs.SectionName-pSectionName = fmap snd . pSectionName_internal--pDataSort :: [Token] -> Err Language.Rzk.Syntax.Abs.DataSort-pDataSort = fmap snd . pDataSort_internal--pDataBody :: [Token] -> Err Language.Rzk.Syntax.Abs.DataBody-pDataBody = fmap snd . pDataBody_internal--pConstructor :: [Token] -> Err Language.Rzk.Syntax.Abs.Constructor-pConstructor = fmap snd . pConstructor_internal--pListConstructor :: [Token] -> Err [Language.Rzk.Syntax.Abs.Constructor]-pListConstructor = fmap snd . pListConstructor_internal--pConstructorType :: [Token] -> Err Language.Rzk.Syntax.Abs.ConstructorType-pConstructorType = fmap snd . pConstructorType_internal--pDataElim :: [Token] -> Err Language.Rzk.Syntax.Abs.DataElim-pDataElim = fmap snd . pDataElim_internal--pListDataElim :: [Token] -> Err [Language.Rzk.Syntax.Abs.DataElim]-pListDataElim = fmap snd . pListDataElim_internal--pMatchBranch :: [Token] -> Err Language.Rzk.Syntax.Abs.MatchBranch-pMatchBranch = fmap snd . pMatchBranch_internal--pListMatchBranch :: [Token] -> Err [Language.Rzk.Syntax.Abs.MatchBranch]-pListMatchBranch = fmap snd . pListMatchBranch_internal--pPattern :: [Token] -> Err Language.Rzk.Syntax.Abs.Pattern-pPattern = fmap snd . pPattern_internal--pListPattern :: [Token] -> Err [Language.Rzk.Syntax.Abs.Pattern]-pListPattern = fmap snd . pListPattern_internal--pPattern1 :: [Token] -> Err Language.Rzk.Syntax.Abs.Pattern-pPattern1 = fmap snd . pPattern1_internal--pListPattern1 :: [Token] -> Err [Language.Rzk.Syntax.Abs.Pattern]-pListPattern1 = fmap snd . pListPattern1_internal--pParam :: [Token] -> Err Language.Rzk.Syntax.Abs.Param-pParam = fmap snd . pParam_internal--pListParam :: [Token] -> Err [Language.Rzk.Syntax.Abs.Param]-pListParam = fmap snd . pListParam_internal--pBind :: [Token] -> Err Language.Rzk.Syntax.Abs.Bind-pBind = fmap snd . pBind_internal--pParamDecl :: [Token] -> Err Language.Rzk.Syntax.Abs.ParamDecl-pParamDecl = fmap snd . pParamDecl_internal--pSigmaParam :: [Token] -> Err Language.Rzk.Syntax.Abs.SigmaParam-pSigmaParam = fmap snd . pSigmaParam_internal--pListSigmaParam :: [Token] -> Err [Language.Rzk.Syntax.Abs.SigmaParam]-pListSigmaParam = fmap snd . pListSigmaParam_internal--pRestriction :: [Token] -> Err Language.Rzk.Syntax.Abs.Restriction-pRestriction = fmap snd . pRestriction_internal--pListRestriction :: [Token] -> Err [Language.Rzk.Syntax.Abs.Restriction]-pListRestriction = fmap snd . pListRestriction_internal--pModality :: [Token] -> Err Language.Rzk.Syntax.Abs.Modality-pModality = fmap snd . pModality_internal--pModComp :: [Token] -> Err Language.Rzk.Syntax.Abs.ModComp-pModComp = fmap snd . pModComp_internal--pModalColon :: [Token] -> Err Language.Rzk.Syntax.Abs.ModalColon-pModalColon = fmap snd . pModalColon_internal--pTerm7 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term-pTerm7 = fmap snd . pTerm7_internal--pTerm5 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term-pTerm5 = fmap snd . pTerm5_internal--pTerm4 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term-pTerm4 = fmap snd . pTerm4_internal--pTerm3 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term-pTerm3 = fmap snd . pTerm3_internal--pTerm2 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term-pTerm2 = fmap snd . pTerm2_internal--pTerm6 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term-pTerm6 = fmap snd . pTerm6_internal--pTerm1 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term-pTerm1 = fmap snd . pTerm1_internal+  , pTerm8+  , pTerm5+  , pTerm4+  , pTerm3+  , pTerm2+  , pTerm6+  , pTerm1+  , pTerm7+  , pTerm+  , pListTerm+  ) where++import Prelude++import qualified Language.Rzk.Syntax.Abs+import Language.Rzk.Syntax.Lex+import qualified Data.Text+import qualified Control.Monad as Happy_Prelude+import qualified Data.Bool as Happy_Prelude+import qualified Data.Function as Happy_Prelude+import qualified Data.Int as Happy_Prelude+import qualified Data.List as Happy_Prelude+import qualified Data.Maybe as Happy_Prelude+import qualified Data.String as Happy_Prelude+import qualified Data.Tuple as Happy_Prelude+import qualified GHC.Err as Happy_Prelude+import qualified GHC.Num as Happy_Prelude+import qualified Text.Show as Happy_Prelude+import qualified Data.Array as Happy_Data_Array+import qualified Data.Bits as Bits+import qualified GHC.Exts as Happy_GHC_Exts+import Control.Applicative(Applicative(..))+import Control.Monad (ap)++-- parser produced by Happy Version 2.2++newtype HappyAbsSyn  = HappyAbsSyn HappyAny+#if __GLASGOW_HASKELL__ >= 607+type HappyAny = Happy_GHC_Exts.Any+#else+type HappyAny = forall a . a+#endif+newtype HappyWrap48 = HappyWrap48 ((Language.Rzk.Syntax.Abs.BNFC'Position, String))+happyIn48 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, String)) -> (HappyAbsSyn )+happyIn48 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap48 x)+{-# INLINE happyIn48 #-}+happyOut48 :: (HappyAbsSyn ) -> HappyWrap48+happyOut48 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut48 #-}+newtype HappyWrap49 = HappyWrap49 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.VarIdentToken))+happyIn49 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.VarIdentToken)) -> (HappyAbsSyn )+happyIn49 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap49 x)+{-# INLINE happyIn49 #-}+happyOut49 :: (HappyAbsSyn ) -> HappyWrap49+happyOut49 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut49 #-}+newtype HappyWrap50 = HappyWrap50 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.HoleIdentToken))+happyIn50 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.HoleIdentToken)) -> (HappyAbsSyn )+happyIn50 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap50 x)+{-# INLINE happyIn50 #-}+happyOut50 :: (HappyAbsSyn ) -> HappyWrap50+happyOut50 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut50 #-}+newtype HappyWrap51 = HappyWrap51 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Module))+happyIn51 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Module)) -> (HappyAbsSyn )+happyIn51 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap51 x)+{-# INLINE happyIn51 #-}+happyOut51 :: (HappyAbsSyn ) -> HappyWrap51+happyOut51 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut51 #-}+newtype HappyWrap52 = HappyWrap52 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.HoleIdent))+happyIn52 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.HoleIdent)) -> (HappyAbsSyn )+happyIn52 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap52 x)+{-# INLINE happyIn52 #-}+happyOut52 :: (HappyAbsSyn ) -> HappyWrap52+happyOut52 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut52 #-}+newtype HappyWrap53 = HappyWrap53 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.VarIdent))+happyIn53 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.VarIdent)) -> (HappyAbsSyn )+happyIn53 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap53 x)+{-# INLINE happyIn53 #-}+happyOut53 :: (HappyAbsSyn ) -> HappyWrap53+happyOut53 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut53 #-}+newtype HappyWrap54 = HappyWrap54 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.VarIdent]))+happyIn54 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.VarIdent])) -> (HappyAbsSyn )+happyIn54 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap54 x)+{-# INLINE happyIn54 #-}+happyOut54 :: (HappyAbsSyn ) -> HappyWrap54+happyOut54 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut54 #-}+newtype HappyWrap55 = HappyWrap55 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.LanguageDecl))+happyIn55 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.LanguageDecl)) -> (HappyAbsSyn )+happyIn55 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap55 x)+{-# INLINE happyIn55 #-}+happyOut55 :: (HappyAbsSyn ) -> HappyWrap55+happyOut55 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut55 #-}+newtype HappyWrap56 = HappyWrap56 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Language))+happyIn56 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Language)) -> (HappyAbsSyn )+happyIn56 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap56 x)+{-# INLINE happyIn56 #-}+happyOut56 :: (HappyAbsSyn ) -> HappyWrap56+happyOut56 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut56 #-}+newtype HappyWrap57 = HappyWrap57 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Command))+happyIn57 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Command)) -> (HappyAbsSyn )+happyIn57 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap57 x)+{-# INLINE happyIn57 #-}+happyOut57 :: (HappyAbsSyn ) -> HappyWrap57+happyOut57 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut57 #-}+newtype HappyWrap58 = HappyWrap58 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Command]))+happyIn58 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Command])) -> (HappyAbsSyn )+happyIn58 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap58 x)+{-# INLINE happyIn58 #-}+happyOut58 :: (HappyAbsSyn ) -> HappyWrap58+happyOut58 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut58 #-}+newtype HappyWrap59 = HappyWrap59 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.DeclUsedVars))+happyIn59 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.DeclUsedVars)) -> (HappyAbsSyn )+happyIn59 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap59 x)+{-# INLINE happyIn59 #-}+happyOut59 :: (HappyAbsSyn ) -> HappyWrap59+happyOut59 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut59 #-}+newtype HappyWrap60 = HappyWrap60 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.SectionName))+happyIn60 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.SectionName)) -> (HappyAbsSyn )+happyIn60 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap60 x)+{-# INLINE happyIn60 #-}+happyOut60 :: (HappyAbsSyn ) -> HappyWrap60+happyOut60 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut60 #-}+newtype HappyWrap61 = HappyWrap61 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.DataSort))+happyIn61 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.DataSort)) -> (HappyAbsSyn )+happyIn61 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap61 x)+{-# INLINE happyIn61 #-}+happyOut61 :: (HappyAbsSyn ) -> HappyWrap61+happyOut61 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut61 #-}+newtype HappyWrap62 = HappyWrap62 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.DataBody))+happyIn62 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.DataBody)) -> (HappyAbsSyn )+happyIn62 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap62 x)+{-# INLINE happyIn62 #-}+happyOut62 :: (HappyAbsSyn ) -> HappyWrap62+happyOut62 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut62 #-}+newtype HappyWrap63 = HappyWrap63 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Constructor))+happyIn63 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Constructor)) -> (HappyAbsSyn )+happyIn63 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap63 x)+{-# INLINE happyIn63 #-}+happyOut63 :: (HappyAbsSyn ) -> HappyWrap63+happyOut63 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut63 #-}+newtype HappyWrap64 = HappyWrap64 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Constructor]))+happyIn64 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Constructor])) -> (HappyAbsSyn )+happyIn64 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap64 x)+{-# INLINE happyIn64 #-}+happyOut64 :: (HappyAbsSyn ) -> HappyWrap64+happyOut64 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut64 #-}+newtype HappyWrap65 = HappyWrap65 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ConstructorType))+happyIn65 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ConstructorType)) -> (HappyAbsSyn )+happyIn65 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap65 x)+{-# INLINE happyIn65 #-}+happyOut65 :: (HappyAbsSyn ) -> HappyWrap65+happyOut65 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut65 #-}+newtype HappyWrap66 = HappyWrap66 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.DataElim))+happyIn66 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.DataElim)) -> (HappyAbsSyn )+happyIn66 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap66 x)+{-# INLINE happyIn66 #-}+happyOut66 :: (HappyAbsSyn ) -> HappyWrap66+happyOut66 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut66 #-}+newtype HappyWrap67 = HappyWrap67 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.DataElim]))+happyIn67 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.DataElim])) -> (HappyAbsSyn )+happyIn67 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap67 x)+{-# INLINE happyIn67 #-}+happyOut67 :: (HappyAbsSyn ) -> HappyWrap67+happyOut67 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut67 #-}+newtype HappyWrap68 = HappyWrap68 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.MatchBranch))+happyIn68 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.MatchBranch)) -> (HappyAbsSyn )+happyIn68 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap68 x)+{-# INLINE happyIn68 #-}+happyOut68 :: (HappyAbsSyn ) -> HappyWrap68+happyOut68 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut68 #-}+newtype HappyWrap69 = HappyWrap69 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.MatchBranch]))+happyIn69 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.MatchBranch])) -> (HappyAbsSyn )+happyIn69 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap69 x)+{-# INLINE happyIn69 #-}+happyOut69 :: (HappyAbsSyn ) -> HappyWrap69+happyOut69 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut69 #-}+newtype HappyWrap70 = HappyWrap70 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Pattern))+happyIn70 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Pattern)) -> (HappyAbsSyn )+happyIn70 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap70 x)+{-# INLINE happyIn70 #-}+happyOut70 :: (HappyAbsSyn ) -> HappyWrap70+happyOut70 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut70 #-}+newtype HappyWrap71 = HappyWrap71 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Pattern]))+happyIn71 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Pattern])) -> (HappyAbsSyn )+happyIn71 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap71 x)+{-# INLINE happyIn71 #-}+happyOut71 :: (HappyAbsSyn ) -> HappyWrap71+happyOut71 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut71 #-}+newtype HappyWrap72 = HappyWrap72 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Pattern))+happyIn72 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Pattern)) -> (HappyAbsSyn )+happyIn72 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap72 x)+{-# INLINE happyIn72 #-}+happyOut72 :: (HappyAbsSyn ) -> HappyWrap72+happyOut72 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut72 #-}+newtype HappyWrap73 = HappyWrap73 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Pattern]))+happyIn73 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Pattern])) -> (HappyAbsSyn )+happyIn73 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap73 x)+{-# INLINE happyIn73 #-}+happyOut73 :: (HappyAbsSyn ) -> HappyWrap73+happyOut73 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut73 #-}+newtype HappyWrap74 = HappyWrap74 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Param))+happyIn74 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Param)) -> (HappyAbsSyn )+happyIn74 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap74 x)+{-# INLINE happyIn74 #-}+happyOut74 :: (HappyAbsSyn ) -> HappyWrap74+happyOut74 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut74 #-}+newtype HappyWrap75 = HappyWrap75 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Param]))+happyIn75 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Param])) -> (HappyAbsSyn )+happyIn75 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap75 x)+{-# INLINE happyIn75 #-}+happyOut75 :: (HappyAbsSyn ) -> HappyWrap75+happyOut75 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut75 #-}+newtype HappyWrap76 = HappyWrap76 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Bind))+happyIn76 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Bind)) -> (HappyAbsSyn )+happyIn76 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap76 x)+{-# INLINE happyIn76 #-}+happyOut76 :: (HappyAbsSyn ) -> HappyWrap76+happyOut76 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut76 #-}+newtype HappyWrap77 = HappyWrap77 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ParamDecl))+happyIn77 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ParamDecl)) -> (HappyAbsSyn )+happyIn77 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap77 x)+{-# INLINE happyIn77 #-}+happyOut77 :: (HappyAbsSyn ) -> HappyWrap77+happyOut77 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut77 #-}+newtype HappyWrap78 = HappyWrap78 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.SigmaParam))+happyIn78 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.SigmaParam)) -> (HappyAbsSyn )+happyIn78 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap78 x)+{-# INLINE happyIn78 #-}+happyOut78 :: (HappyAbsSyn ) -> HappyWrap78+happyOut78 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut78 #-}+newtype HappyWrap79 = HappyWrap79 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.SigmaParam]))+happyIn79 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.SigmaParam])) -> (HappyAbsSyn )+happyIn79 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap79 x)+{-# INLINE happyIn79 #-}+happyOut79 :: (HappyAbsSyn ) -> HappyWrap79+happyOut79 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut79 #-}+newtype HappyWrap80 = HappyWrap80 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Restriction))+happyIn80 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Restriction)) -> (HappyAbsSyn )+happyIn80 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap80 x)+{-# INLINE happyIn80 #-}+happyOut80 :: (HappyAbsSyn ) -> HappyWrap80+happyOut80 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut80 #-}+newtype HappyWrap81 = HappyWrap81 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Restriction]))+happyIn81 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Restriction])) -> (HappyAbsSyn )+happyIn81 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap81 x)+{-# INLINE happyIn81 #-}+happyOut81 :: (HappyAbsSyn ) -> HappyWrap81+happyOut81 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut81 #-}+newtype HappyWrap82 = HappyWrap82 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Modality))+happyIn82 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Modality)) -> (HappyAbsSyn )+happyIn82 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap82 x)+{-# INLINE happyIn82 #-}+happyOut82 :: (HappyAbsSyn ) -> HappyWrap82+happyOut82 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut82 #-}+newtype HappyWrap83 = HappyWrap83 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ModComp))+happyIn83 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ModComp)) -> (HappyAbsSyn )+happyIn83 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap83 x)+{-# INLINE happyIn83 #-}+happyOut83 :: (HappyAbsSyn ) -> HappyWrap83+happyOut83 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut83 #-}+newtype HappyWrap84 = HappyWrap84 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ModalColon))+happyIn84 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ModalColon)) -> (HappyAbsSyn )+happyIn84 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap84 x)+{-# INLINE happyIn84 #-}+happyOut84 :: (HappyAbsSyn ) -> HappyWrap84+happyOut84 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut84 #-}+newtype HappyWrap85 = HappyWrap85 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))+happyIn85 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )+happyIn85 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap85 x)+{-# INLINE happyIn85 #-}+happyOut85 :: (HappyAbsSyn ) -> HappyWrap85+happyOut85 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut85 #-}+newtype HappyWrap86 = HappyWrap86 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))+happyIn86 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )+happyIn86 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap86 x)+{-# INLINE happyIn86 #-}+happyOut86 :: (HappyAbsSyn ) -> HappyWrap86+happyOut86 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut86 #-}+newtype HappyWrap87 = HappyWrap87 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))+happyIn87 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )+happyIn87 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap87 x)+{-# INLINE happyIn87 #-}+happyOut87 :: (HappyAbsSyn ) -> HappyWrap87+happyOut87 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut87 #-}+newtype HappyWrap88 = HappyWrap88 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))+happyIn88 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )+happyIn88 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap88 x)+{-# INLINE happyIn88 #-}+happyOut88 :: (HappyAbsSyn ) -> HappyWrap88+happyOut88 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut88 #-}+newtype HappyWrap89 = HappyWrap89 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))+happyIn89 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )+happyIn89 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap89 x)+{-# INLINE happyIn89 #-}+happyOut89 :: (HappyAbsSyn ) -> HappyWrap89+happyOut89 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut89 #-}+newtype HappyWrap90 = HappyWrap90 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))+happyIn90 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )+happyIn90 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap90 x)+{-# INLINE happyIn90 #-}+happyOut90 :: (HappyAbsSyn ) -> HappyWrap90+happyOut90 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut90 #-}+newtype HappyWrap91 = HappyWrap91 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))+happyIn91 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )+happyIn91 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap91 x)+{-# INLINE happyIn91 #-}+happyOut91 :: (HappyAbsSyn ) -> HappyWrap91+happyOut91 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut91 #-}+newtype HappyWrap92 = HappyWrap92 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))+happyIn92 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )+happyIn92 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap92 x)+{-# INLINE happyIn92 #-}+happyOut92 :: (HappyAbsSyn ) -> HappyWrap92+happyOut92 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut92 #-}+newtype HappyWrap93 = HappyWrap93 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))+happyIn93 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )+happyIn93 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap93 x)+{-# INLINE happyIn93 #-}+happyOut93 :: (HappyAbsSyn ) -> HappyWrap93+happyOut93 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut93 #-}+newtype HappyWrap94 = HappyWrap94 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Term]))+happyIn94 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Term])) -> (HappyAbsSyn )+happyIn94 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap94 x)+{-# INLINE happyIn94 #-}+happyOut94 :: (HappyAbsSyn ) -> HappyWrap94+happyOut94 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut94 #-}+happyInTok :: (Token) -> (HappyAbsSyn )+happyInTok x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyInTok #-}+happyOutTok :: (HappyAbsSyn ) -> (Token)+happyOutTok x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOutTok #-}+++{-# NOINLINE happyTokenStrings #-}+happyTokenStrings = ["'#assume'","'#check'","'#compute'","'#compute-nf'","'#compute-whnf'","'#data'","'#def'","'#define'","'#end'","'#lang'","'#postulate'","'#section'","'#set-option'","'#unset-option'","'#variable'","'#variables'","'$extract$'","'('","')'","'*'","'*_1'","'*\8321'","','","'->'","'/'","'/\\\\'","'0_2'","'0_I'","'0\7522'","'0\8322'","'1'","'1_2'","'1_I'","'1\7522'","'1\8322'","'2'","':'","':='","':_#'","':_b'","':_id'","':_op'","':\7506\7510'","':\9837'","':\9839'","';'","'<='","'='","'==='","'=>'","'=_{'","'BOT'","'CUBE'","'II'","'Sigma'","'TOP'","'TOPE'","'U'","'Unit'","'['","'\\\\'","'\\\\/'","']'","'_#'","'_b'","'_id'","'_op'","'as'","'compute'","'eliminate'","'first'","'flip_op'","'flip\7506\7510'","'idJ'","'in'","'inf'","'into'","'inv_op'","'inv\7506\7510'","'let'","'match'","'mod'","'recBOT'","'recOR'","'refl'","'refl_{'","'rzk-1'","'second'","'sup'","'unflip_op'","'unflip\7506\7510'","'uninv_op'","'uninv\7506\7510'","'unit'","'uses'","'with'","'|'","'|->'","'}'","'\215'","'\931'","'\960\8321'","'\960\8322'","'\7506\7510'","'\8594'","'\8614'","'\8658'","'\8721'","'\8743'","'\8744'","'\8801'","'\8804'","'\8851'","'\8852'","'\8868'","'\8869'","'\9837'","'\9839'","'\120128'","L_quoted","L_VarIdentToken","L_HoleIdentToken","%eof"]++happyActOffsets :: HappyAddr+happyActOffsets = HappyA# "\xff\xff\xff\xff\x9d\xff\xff\xff\xa9\xff\xff\xff\xa9\xff\xff\xff\x23\x00\x00\x00\xdd\xff\xff\xff\xee\x0c\x00\x00\xee\x0c\x00\x00\xdb\xff\xff\xff\xd5\xff\xff\xff\x39\x00\x00\x00\x3b\x00\x00\x00\xfa\xff\xff\xff\xfa\xff\xff\xff\x61\x00\x00\x00\xbd\xff\xff\xff\xbd\xff\xff\xff\x1d\x00\x00\x00\x1d\x00\x00\x00\x41\x00\x00\x00\x41\x00\x00\x00\x41\x00\x00\x00\x41\x00\x00\x00\xc4\x00\x00\x00\xc4\x00\x00\x00\xd4\x00\x00\x00\x59\x00\x00\x00\xd4\x00\x00\x00\xd4\x00\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\x8f\x01\x00\x00\x8f\x01\x00\x00\x77\x0a\x00\x00\x93\x02\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xef\xff\xff\xff\xf7\x01\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\xff\xff\xff\xf7\x01\x00\x00\x00\x00\x00\x00\x91\x01\x00\x00\xed\xff\xff\xff\xd8\xff\xff\xff\x54\x00\x00\x00\x43\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x92\x00\x00\x00\x35\x00\x00\x00\x8f\x01\x00\x00\xef\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\x01\x00\x00\xf7\x01\x00\x00\xf7\x01\x00\x00\xcc\x00\x00\x00\xf7\x01\x00\x00\xf7\x01\x00\x00\xf7\x01\x00\x00\x82\x02\x00\x00\x45\x02\x00\x00\x8f\x01\x00\x00\x00\x00\x00\x00\xe2\x00\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\xf7\x01\x00\x00\xf7\x01\x00\x00\xf7\x01\x00\x00\xf7\x01\x00\x00\xf7\x01\x00\x00\xf7\x01\x00\x00\x00\x00\x00\x00\xe5\x00\x00\x00\xf7\x01\x00\x00\xf7\x01\x00\x00\x00\x00\x00\x00\xf7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb1\x00\x00\x00\xb1\x00\x00\x00\xef\xff\xff\xff\xfb\xff\xff\xff\xb1\x00\x00\x00\xf5\x00\x00\x00\xb1\x00\x00\x00\xa9\x01\x00\x00\xb1\x00\x00\x00\xb1\x00\x00\x00\x0d\x00\x00\x00\xb1\x00\x00\x00\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x01\x00\x00\xbe\x00\x00\x00\xbe\x00\x00\x00\x27\x01\x00\x00\xd6\x00\x00\x00\x33\x00\x00\x00\xd6\x00\x00\x00\x00\x00\x00\x00\xda\x0c\x00\x00\x35\x01\x00\x00\xdc\x00\x00\x00\x13\x01\x00\x00\x00\x00\x00\x00\xdc\x00\x00\x00\xdc\x00\x00\x00\xa9\x01\x00\x00\x37\x01\x00\x00\xfa\x00\x00\x00\x00\x00\x00\x00\x22\x01\x00\x00\xfa\x00\x00\x00\x2a\x01\x00\x00\xfa\x00\x00\x00\x00\x00\x00\x00\x86\x01\x00\x00\x24\x01\x00\x00\x24\x01\x00\x00\x2a\x01\x00\x00\x24\x01\x00\x00\x24\x01\x00\x00\x48\x01\x00\x00\x46\x01\x00\x00\x53\x01\x00\x00\x53\x01\x00\x00\xbd\xff\xff\xff\x53\x01\x00\x00\x74\x01\x00\x00\x8d\x01\x00\x00\x6b\x01\x00\x00\x6b\x01\x00\x00\xef\xff\xff\xff\xf4\xff\xff\xff\xa7\x01\x00\x00\x6c\x01\x00\x00\x6c\x01\x00\x00\x6c\x01\x00\x00\x95\x01\x00\x00\x94\x01\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\x94\x01\x00\x00\x94\x01\x00\x00\xfe\x01\x00\x00\xf9\x01\x00\x00\xb3\x01\x00\x00\xba\x01\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\xba\x01\x00\x00\xba\x01\x00\x00\xba\x01\x00\x00\xba\x01\x00\x00\xba\x01\x00\x00\xba\x01\x00\x00\xbc\x01\x00\x00\xbc\x01\x00\x00\xc4\x01\x00\x00\xc4\x01\x00\x00\xca\x01\x00\x00\xca\x01\x00\x00\x00\x00\x00\x00\xca\x01\x00\x00\xde\x01\x00\x00\xd6\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\x00\x00\xee\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x02\x00\x00\x34\x02\x00\x00\x39\x02\x00\x00\x00\x00\x00\x00\x3f\x02\x00\x00\x00\x00\x00\x00\x18\x02\x00\x00\x00\x00\x00\x00\x18\x02\x00\x00\x18\x02\x00\x00\x18\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x5d\x02\x00\x00\xee\x0c\x00\x00\x0a\x02\x00\x00\x00\x00\x00\x00\xbd\xff\xff\xff\x0a\x02\x00\x00\x00\x00\x00\x00\x5f\x02\x00\x00\x00\x00\x00\x00\x17\x02\x00\x00\x17\x02\x00\x00\x00\x00\x00\x00\x17\x02\x00\x00\xe6\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\x00\x00\x00\x00\x2a\x01\x00\x00\x09\x00\x00\x00\xe3\x0c\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\xef\xff\xff\xff\x7b\x02\x00\x00\x2a\x01\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\x8f\x01\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xef\xff\xff\xff\x79\x00\x00\x00\x2a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\x01\x00\x00\x00\x00\x00\x00\xf5\xff\xff\xff\xef\xff\xff\xff\xf7\x01\x00\x00\x93\x02\x00\x00\x02\x00\x00\x00\x71\x02\x00\x00\x85\x00\x00\x00\x8f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\x01\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x2a\x01\x00\x00\x89\x0c\x00\x00\xf7\x01\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xde\x00\x00\x00\xde\x00\x00\x00\xde\x00\x00\x00\xde\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\xec\x0c\x00\x00\x8d\x02\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\x95\x02\x00\x00\x00\x00\x00\x00\x2a\x01\x00\x00\x9a\x02\x00\x00\x8f\x01\x00\x00\xef\xff\xff\xff\x56\x02\x00\x00\x93\x02\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\xc4\x02\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xf5\x0c\x00\x00\xcb\x02\x00\x00\xfe\x0c\x00\x00\xd4\x02\x00\x00\x92\x02\x00\x00\x00\x00\x00\x00\xa9\x01\x00\x00\xa9\x01\x00\x00\xa9\x01\x00\x00\xa9\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\x2a\x01\x00\x00\xbb\x02\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\x00\x00\x00\x00\xe3\x02\x00\x00\xe4\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x03\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\x60\x00\x00\x00\xc8\x00\x00\x00\x15\x01\x00\x00\x16\x01\x00\x00\xa6\x02\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfa\x02\x00\x00\xef\xff\xff\xff\x00\x03\x00\x00\xef\xff\xff\xff\x02\x03\x00\x00\xef\xff\xff\xff\x05\x03\x00\x00\x2a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\xc1\x00\x00\x00\xa7\x00\x00\x00\x2a\x01\x00\x00\xef\xff\xff\xff\x2a\x01\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\xf1\x02\x00\x00\x00\x00\x00\x00\xdc\x02\x00\x00\x93\x02\x00\x00\x4a\x03\x00\x00\x50\x03\x00\x00\x12\x03\x00\x00\x2a\x01\x00\x00\xef\xff\xff\xff\x3f\x03\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x01\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\x22\x00\x00\x00\x5f\x01\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\xef\xff\xff\xff\x53\x03\x00\x00\x55\x03\x00\x00\x6e\x03\x00\x00\x76\x03\x00\x00\xef\xff\xff\xff\x3e\x00\x00\x00\x44\x03\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\x19\x03\x00\x00\x83\x03\x00\x00\x85\x03\x00\x00\x00\x00\x00\x00\x87\x03\x00\x00\x88\x03\x00\x00\x8e\x03\x00\x00\x8f\x03\x00\x00\x91\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x01\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x70\x03\x00\x00\x00\x00\x00\x00\x78\x03\x00\x00\xef\xff\xff\xff\x7d\x03\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\x80\x03\x00\x00\xef\xff\xff\xff\x96\x03\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\xa6\x03\x00\x00\xac\x03\x00\x00\xb8\x03\x00\x00\x92\x03\x00\x00\xb9\x03\x00\x00\xbc\x03\x00\x00\xbd\x03\x00\x00\xbe\x03\x00\x00\x00\x00\x00\x00\x58\x03\x00\x00\xc3\x03\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\xf8\x00\x00\x00\xef\xff\xff\xff\xc1\x03\x00\x00\xc2\x03\x00\x00\xc5\x03\x00\x00\xcc\x03\x00\x00\xcd\x03\x00\x00\xd1\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\xca\x03\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\xc4\x03\x00\x00\x00\x00\x00\x00\x09\x01\x00\x00\x00\x00\x00\x00\xf4\x03\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\xef\xff\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\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\xec\x03\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x03\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\xed\x03\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\xef\xff\xff\xff\xfd\x03\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\x04\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#++happyGotoOffsets :: HappyAddr+happyGotoOffsets = HappyA# "\x06\x01\x00\x00\xa3\x00\x00\x00\xa0\x01\x00\x00\x1f\x01\x00\x00\x39\x04\x00\x00\x09\x04\x00\x00\x38\x04\x00\x00\x14\x00\x00\x00\x3d\x04\x00\x00\x3c\x02\x00\x00\x5b\x04\x00\x00\x37\x04\x00\x00\x40\x01\x00\x00\x4e\x02\x00\x00\x58\x04\x00\x00\x5e\x04\x00\x00\xda\x00\x00\x00\xdc\x01\x00\x00\xd1\x00\x00\x00\xae\x01\x00\x00\xe2\x03\x00\x00\xc7\x0c\x00\x00\x8a\x02\x00\x00\xce\x03\x00\x00\xa9\x0c\x00\x00\x9a\x01\x00\x00\x36\x0c\x00\x00\x7c\x03\x00\x00\xd3\x01\x00\x00\x9c\x03\x00\x00\x20\x03\x00\x00\x4f\x04\x00\x00\x60\x01\x00\x00\x51\x04\x00\x00\x5c\x00\x00\x00\x48\x0c\x00\x00\x1c\x0c\x00\x00\xf0\x0b\x00\x00\x93\x0b\x00\x00\xe8\x03\x00\x00\x6a\x0a\x00\x00\x72\x02\x00\x00\xc9\x03\x00\x00\xd8\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\xd8\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x01\x00\x00\xda\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x05\x00\x00\x68\x05\x00\x00\x98\x05\x00\x00\x00\x00\x00\x00\xc8\x05\x00\x00\xf8\x05\x00\x00\x28\x06\x00\x00\x87\x01\x00\x00\xd5\x01\x00\x00\x56\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x03\x00\x00\x58\x06\x00\x00\x88\x06\x00\x00\xb8\x06\x00\x00\xe8\x06\x00\x00\x18\x07\x00\x00\x48\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x78\x07\x00\x00\xa8\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x07\x00\x00\x00\x00\x00\x00\xd8\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd2\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbb\x0c\x00\x00\x00\x00\x00\x00\x12\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x04\x00\x00\x8e\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9c\x02\x00\x00\x00\x00\x00\x00\x3a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x02\x00\x00\x59\x04\x00\x00\x6a\x04\x00\x00\x89\x04\x00\x00\x9a\x04\x00\x00\xad\x01\x00\x00\xb0\x01\x00\x00\xee\x01\x00\x00\xe1\x02\x00\x00\xf4\x01\x00\x00\x60\x03\x00\x00\x99\x04\x00\x00\xa0\x04\x00\x00\x42\x02\x00\x00\x24\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9d\x04\x00\x00\xdf\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\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\x96\x04\x00\x00\x00\x00\x00\x00\xbd\x04\x00\x00\xbe\x04\x00\x00\xc5\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\x01\x00\x00\x29\x03\x00\x00\x00\x00\x00\x00\xc9\x01\x00\x00\x22\x03\x00\x00\x00\x00\x00\x00\x97\x04\x00\x00\x00\x00\x00\x00\x91\x02\x00\x00\xc6\x02\x00\x00\x00\x00\x00\x00\x78\x02\x00\x00\x00\x00\x00\x00\xb9\x04\x00\x00\xca\x04\x00\x00\x00\x00\x00\x00\x38\x0c\x00\x00\xa2\x04\x00\x00\xad\x04\x00\x00\x00\x00\x00\x00\xe9\x04\x00\x00\x00\x00\x00\x00\x4d\x03\x00\x00\x00\x00\x00\x00\x21\x02\x00\x00\xfa\x04\x00\x00\x19\x05\x00\x00\x2a\x05\x00\x00\x49\x05\x00\x00\x5e\x03\x00\x00\xb3\x04\x00\x00\x18\x04\x00\x00\x48\x04\x00\x00\x78\x04\x00\x00\xa8\x04\x00\x00\xb2\x0b\x00\x00\x5a\x05\x00\x00\x00\x00\x00\x00\x90\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xba\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8b\x03\x00\x00\x38\x08\x00\x00\x50\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x03\x00\x00\xb6\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x08\x00\x00\x79\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x0c\x00\x00\xd4\x04\x00\x00\x98\x08\x00\x00\xef\x02\x00\x00\x89\x0a\x00\x00\xc2\x0b\x00\x00\xd1\x0b\x00\x00\xfd\x0b\x00\x00\x0a\x0c\x00\x00\x55\x0c\x00\x00\x62\x0c\x00\x00\x74\x0c\x00\x00\x81\x0c\x00\x00\x00\x00\x00\x00\x99\x0a\x00\x00\xb8\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x05\x00\x00\x00\x00\x00\x00\xa9\x05\x00\x00\xba\x05\x00\x00\xd5\x04\x00\x00\x00\x00\x00\x00\xc8\x0a\x00\x00\xe7\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x03\x00\x00\x00\x00\x00\x00\xc7\x04\x00\x00\xd9\x05\x00\x00\xbd\x02\x00\x00\xd2\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xea\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdc\x04\x00\x00\x00\x00\x00\x00\xdd\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\x08\x00\x00\xc8\x08\x00\x00\xc8\x08\x00\x00\xc8\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x06\x00\x00\x1a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x06\x00\x00\x4a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x06\x00\x00\x7a\x06\x00\x00\xab\x0c\x00\x00\xc6\x0c\x00\x00\xc8\x0c\x00\x00\xcf\x0c\x00\x00\x05\x05\x00\x00\x99\x06\x00\x00\xaa\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc9\x06\x00\x00\x00\x00\x00\x00\xda\x06\x00\x00\x00\x00\x00\x00\xf9\x06\x00\x00\xf4\x04\x00\x00\xfb\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x07\x00\x00\x29\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\x0b\x00\x00\x26\x02\x00\x00\x3a\x07\x00\x00\x89\x02\x00\x00\x59\x07\x00\x00\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xda\x02\x00\x00\x57\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x93\x03\x00\x00\x89\x07\x00\x00\x00\x00\x00\x00\x9a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x03\x00\x00\xb9\x07\x00\x00\xca\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\x07\x00\x00\x00\x00\x00\x00\x0e\x03\x00\x00\x00\x00\x00\x00\xfa\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x08\x00\x00\x00\x00\x00\x00\xf4\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd6\x0c\x00\x00\x00\x00\x00\x00\x49\x08\x00\x00\x00\x00\x00\x00\x5a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x08\x00\x00\x00\x00\x00\x00\x8a\x08\x00\x00\x00\x00\x00\x00\xa9\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xba\x08\x00\x00\x00\x00\x00\x00\xd9\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xea\x08\x00\x00\x09\x09\x00\x00\x1a\x09\x00\x00\x00\x00\x00\x00\x39\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\x0a\x00\x00\x16\x0b\x00\x00\x26\x0b\x00\x00\x00\x00\x00\x00\x4a\x09\x00\x00\x69\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x0b\x00\x00\x55\x0b\x00\x00\x74\x0b\x00\x00\x84\x0b\x00\x00\xa3\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x09\x00\x00\x00\x00\x00\x00\x99\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaa\x09\x00\x00\xc9\x09\x00\x00\xda\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x0a\x00\x00\x00\x00\x00\x00\x3a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#++happyDefActions :: HappyAddr+happyDefActions = HappyA# "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb6\xff\xff\xff\xb3\xff\xff\xff\xb2\xff\xff\xff\xaf\xff\xff\xff\xad\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xa7\xff\xff\xff\x00\x00\x00\x00\xa4\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd3\xff\xff\xff\xce\xff\xff\xff\xcf\xff\xff\xff\x56\xff\xff\xff\x55\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x0d\xff\xff\xff\x44\xff\xff\xff\x40\xff\xff\xff\x3d\xff\xff\xff\x1b\xff\xff\xff\x48\xff\xff\xff\x0b\xff\xff\xff\x2e\xff\xff\xff\x0a\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\xff\xff\xff\x69\xff\xff\xff\x52\xff\xff\xff\x4f\xff\xff\xff\x64\xff\xff\xff\x67\xff\xff\xff\x6a\xff\xff\xff\x51\xff\xff\xff\x4e\xff\xff\xff\x63\xff\xff\xff\x66\xff\xff\xff\x68\xff\xff\xff\x4c\xff\xff\xff\x6c\xff\xff\xff\x50\xff\xff\xff\x00\x00\x00\x00\x4d\xff\xff\xff\x6b\xff\xff\xff\x6d\xff\xff\xff\x5e\xff\xff\xff\x00\x00\x00\x00\x7a\xff\xff\xff\x7c\xff\xff\xff\x77\xff\xff\xff\x78\xff\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\x60\xff\xff\xff\x00\x00\x00\x00\x5a\xff\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\x5b\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\xff\xff\xff\x00\x00\x00\x00\x62\xff\xff\xff\x61\xff\xff\xff\x7d\xff\xff\xff\x7b\xff\xff\xff\x65\xff\xff\xff\xd2\xff\xff\xff\xd1\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\xff\xff\xff\x70\xff\xff\xff\x71\xff\xff\xff\x6e\xff\xff\xff\x72\xff\xff\xff\x74\xff\xff\xff\x73\xff\xff\xff\x76\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x7f\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\xff\xff\xff\x00\x00\x00\x00\x83\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x9c\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x8a\xff\xff\xff\x8c\xff\xff\xff\x00\x00\x00\x00\x93\xff\xff\xff\x8e\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xff\xff\xff\x95\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x98\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9e\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xa4\xff\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\xa7\xff\xff\xff\xaa\xff\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\xb1\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb2\xff\xff\xff\x00\x00\x00\x00\xb2\xff\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\xca\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xcd\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb6\xff\xff\xff\xd0\xff\xff\xff\xcc\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\xff\xff\x00\x00\x00\x00\xbe\xff\xff\xff\xb3\xff\xff\xff\xbd\xff\xff\xff\xb3\xff\xff\xff\xb3\xff\xff\xff\xb3\xff\xff\xff\xc5\xff\xff\xff\xc4\xff\xff\xff\xc6\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xb6\xff\xff\xff\x00\x00\x00\x00\xb0\xff\xff\xff\xa4\xff\xff\xff\x00\x00\x00\x00\xab\xff\xff\xff\xa7\xff\xff\xff\xa8\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xa3\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\xff\xff\xff\x00\x00\x00\x00\x98\xff\xff\xff\x00\x00\x00\x00\x8d\xff\xff\xff\x00\x00\x00\x00\x32\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2f\xff\xff\xff\x30\xff\xff\xff\x00\x00\x00\x00\x39\xff\xff\xff\x38\xff\xff\xff\x35\xff\xff\xff\x34\xff\xff\xff\x00\x00\x00\x00\x2a\xff\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\x3b\xff\xff\xff\x3a\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x37\xff\xff\xff\x36\xff\xff\xff\x2b\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x29\xff\xff\xff\x1a\xff\xff\xff\x45\xff\xff\xff\x46\xff\xff\xff\x43\xff\xff\xff\x42\xff\xff\xff\x41\xff\xff\xff\x3f\xff\xff\xff\x3e\xff\xff\xff\x3c\xff\xff\xff\x0c\xff\xff\xff\x09\xff\xff\xff\x31\xff\xff\xff\x00\x00\x00\x00\x54\xff\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\x2c\xff\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\x13\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x59\xff\xff\xff\x2d\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\xff\xff\xff\x4a\xff\xff\xff\x49\xff\xff\xff\x4b\xff\xff\xff\x47\xff\xff\xff\x75\xff\xff\xff\x7e\xff\xff\xff\x81\xff\xff\xff\x80\xff\xff\xff\x85\xff\xff\xff\x84\xff\xff\xff\x82\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x8b\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x94\xff\xff\xff\xa1\xff\xff\xff\x9f\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x9d\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xac\xff\xff\xff\xa9\xff\xff\xff\xae\xff\xff\xff\x00\x00\x00\x00\xb5\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xaf\xff\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\xcb\xff\xff\xff\xbf\xff\xff\xff\xc0\xff\xff\xff\xc9\xff\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\xad\xff\xff\xff\xaf\xff\xff\xff\xc7\xff\xff\xff\xc1\xff\xff\xff\xb4\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xa2\xff\xff\xff\xa0\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x33\xff\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\x5f\xff\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\x22\xff\xff\xff\x16\xff\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\x87\xff\xff\xff\x00\x00\x00\x00\x5d\xff\xff\xff\x00\x00\x00\x00\x89\xff\xff\xff\x00\x00\x00\x00\x85\xff\xff\xff\x84\xff\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\x11\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\xff\xff\xff\x85\xff\xff\xff\x84\xff\xff\xff\x00\x00\x00\x00\x85\xff\xff\xff\x00\x00\x00\x00\x25\xff\xff\xff\x9a\xff\xff\xff\x00\x00\x00\x00\x90\xff\xff\xff\x00\x00\x00\x00\x92\xff\xff\xff\x00\x00\x00\x00\xa5\xff\xff\xff\xa6\xff\xff\xff\xad\xff\xff\xff\xb7\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc2\xff\xff\xff\x00\x00\x00\x00\xc3\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\xff\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\x0f\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x23\xff\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\x00\x00\x86\xff\xff\xff\x5c\xff\xff\xff\x88\xff\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\x21\xff\xff\xff\x00\x00\x00\x00\x10\xff\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\x99\xff\xff\xff\x8f\xff\xff\xff\x91\xff\xff\xff\xb9\xff\xff\xff\x00\x00\x00\x00\xbb\xff\xff\xff\x00\x00\x00\x00\xbc\xff\xff\xff\xba\xff\xff\xff\x14\xff\xff\xff\x15\xff\xff\xff\x26\xff\xff\xff\x27\xff\xff\xff\x28\xff\xff\xff\x0e\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\xff\xff\xff\x00\x00\x00\x00\x17\xff\xff\xff\x18\xff\xff\xff\x19\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x1e\xff\xff\xff\x00\x00\x00\x00\x1f\xff\xff\xff\x00\x00\x00\x00\x1d\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x1c\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x57\xff\xff\xff"#++happyCheck :: HappyAddr+happyCheck = HappyA# "\xff\xff\xff\xff\x12\x00\x00\x00\x13\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x13\x00\x00\x00\x1b\x00\x00\x00\x19\x00\x00\x00\x0b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x13\x00\x00\x00\x13\x00\x00\x00\x3f\x00\x00\x00\x7b\x00\x00\x00\x33\x00\x00\x00\x26\x00\x00\x00\x26\x00\x00\x00\x13\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x00\x00\x14\x00\x00\x00\x19\x00\x00\x00\x18\x00\x00\x00\x15\x00\x00\x00\x7a\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x31\x00\x00\x00\x3e\x00\x00\x00\x0b\x00\x00\x00\x34\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x14\x00\x00\x00\x58\x00\x00\x00\x14\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x60\x00\x00\x00\x4d\x00\x00\x00\x14\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x6f\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\x00\x00\x5d\x00\x00\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x7a\x00\x00\x00\x4e\x00\x00\x00\x4e\x00\x00\x00\x6c\x00\x00\x00\x5f\x00\x00\x00\x13\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x68\x00\x00\x00\x69\x00\x00\x00\x64\x00\x00\x00\x6a\x00\x00\x00\x6e\x00\x00\x00\x6d\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x26\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x27\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x5f\x00\x00\x00\x7a\x00\x00\x00\x7b\x00\x00\x00\x12\x00\x00\x00\x13\x00\x00\x00\x62\x00\x00\x00\x7a\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x6a\x00\x00\x00\x65\x00\x00\x00\x13\x00\x00\x00\x7a\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x72\x00\x00\x00\x73\x00\x00\x00\x25\x00\x00\x00\x62\x00\x00\x00\x7a\x00\x00\x00\x62\x00\x00\x00\x31\x00\x00\x00\x26\x00\x00\x00\x26\x00\x00\x00\x34\x00\x00\x00\x7c\x00\x00\x00\x4c\x00\x00\x00\x62\x00\x00\x00\x4e\x00\x00\x00\x14\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x18\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x63\x00\x00\x00\x7a\x00\x00\x00\x13\x00\x00\x00\x45\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x6b\x00\x00\x00\x79\x00\x00\x00\x5f\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x02\x00\x00\x00\x4d\x00\x00\x00\x04\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x18\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x7c\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\x00\x00\x5d\x00\x00\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x12\x00\x00\x00\x13\x00\x00\x00\x7a\x00\x00\x00\x13\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x5f\x00\x00\x00\x67\x00\x00\x00\x68\x00\x00\x00\x69\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x01\x00\x00\x00\x7a\x00\x00\x00\x7b\x00\x00\x00\x14\x00\x00\x00\x05\x00\x00\x00\x13\x00\x00\x00\x53\x00\x00\x00\x18\x00\x00\x00\x7a\x00\x00\x00\x13\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x13\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x5f\x00\x00\x00\x14\x00\x00\x00\x15\x00\x00\x00\x13\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x12\x00\x00\x00\x13\x00\x00\x00\x26\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x15\x00\x00\x00\x4d\x00\x00\x00\x13\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x13\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x7a\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\x00\x00\x5d\x00\x00\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x13\x00\x00\x00\x13\x00\x00\x00\x03\x00\x00\x00\x13\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x07\x00\x00\x00\x67\x00\x00\x00\x68\x00\x00\x00\x69\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x01\x00\x00\x00\x7a\x00\x00\x00\x7b\x00\x00\x00\x5f\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x13\x00\x00\x00\x5f\x00\x00\x00\x13\x00\x00\x00\x13\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x7c\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x5f\x00\x00\x00\x1a\x00\x00\x00\x13\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x7c\x00\x00\x00\x26\x00\x00\x00\x26\x00\x00\x00\x13\x00\x00\x00\x7a\x00\x00\x00\x18\x00\x00\x00\x4b\x00\x00\x00\x01\x00\x00\x00\x7a\x00\x00\x00\x65\x00\x00\x00\x4c\x00\x00\x00\x05\x00\x00\x00\x4e\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x18\x00\x00\x00\x7a\x00\x00\x00\x0f\x00\x00\x00\x72\x00\x00\x00\x73\x00\x00\x00\x7c\x00\x00\x00\x5f\x00\x00\x00\x5f\x00\x00\x00\x4c\x00\x00\x00\x13\x00\x00\x00\x4e\x00\x00\x00\x7c\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x13\x00\x00\x00\x19\x00\x00\x00\x26\x00\x00\x00\x69\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x7a\x00\x00\x00\x7a\x00\x00\x00\x7b\x00\x00\x00\x7c\x00\x00\x00\x5f\x00\x00\x00\x14\x00\x00\x00\x5f\x00\x00\x00\x5f\x00\x00\x00\x7c\x00\x00\x00\x18\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x33\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x5f\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x01\x00\x00\x00\x5f\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x05\x00\x00\x00\x7a\x00\x00\x00\x4b\x00\x00\x00\x7a\x00\x00\x00\x7a\x00\x00\x00\x12\x00\x00\x00\x13\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x01\x00\x00\x00\x7a\x00\x00\x00\x16\x00\x00\x00\x18\x00\x00\x00\x05\x00\x00\x00\x7c\x00\x00\x00\x01\x00\x00\x00\x5f\x00\x00\x00\x1c\x00\x00\x00\x7a\x00\x00\x00\x05\x00\x00\x00\x15\x00\x00\x00\x5f\x00\x00\x00\x62\x00\x00\x00\x22\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x00\x00\x69\x00\x00\x00\x6a\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x16\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x05\x00\x00\x00\x6c\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x13\x00\x00\x00\x7a\x00\x00\x00\x7b\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x30\x00\x00\x00\x7a\x00\x00\x00\x32\x00\x00\x00\x16\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x7c\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x01\x00\x00\x00\x61\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x12\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x05\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x7c\x00\x00\x00\x7c\x00\x00\x00\x16\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x61\x00\x00\x00\x01\x00\x00\x00\x14\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x05\x00\x00\x00\x4b\x00\x00\x00\x01\x00\x00\x00\x65\x00\x00\x00\x22\x00\x00\x00\x69\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x70\x00\x00\x00\x71\x00\x00\x00\x72\x00\x00\x00\x73\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x01\x00\x00\x00\x5f\x00\x00\x00\x62\x00\x00\x00\x13\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x7a\x00\x00\x00\x7c\x00\x00\x00\x13\x00\x00\x00\x69\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x01\x00\x00\x00\x7a\x00\x00\x00\x7b\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x2f\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x05\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x7c\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x7a\x00\x00\x00\x79\x00\x00\x00\x58\x00\x00\x00\x16\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x16\x00\x00\x00\x01\x00\x00\x00\x7a\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x05\x00\x00\x00\x4b\x00\x00\x00\x01\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x7c\x00\x00\x00\x05\x00\x00\x00\x0c\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x01\x00\x00\x00\x7a\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x5f\x00\x00\x00\x7c\x00\x00\x00\x13\x00\x00\x00\x2f\x00\x00\x00\x26\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x0f\x00\x00\x00\x10\x00\x00\x00\x26\x00\x00\x00\x69\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x31\x00\x00\x00\x7a\x00\x00\x00\x7b\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x60\x00\x00\x00\x01\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x05\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x26\x00\x00\x00\x26\x00\x00\x00\x7a\x00\x00\x00\x26\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x14\x00\x00\x00\x15\x00\x00\x00\x05\x00\x00\x00\x05\x00\x00\x00\x4b\x00\x00\x00\x7a\x00\x00\x00\x01\x00\x00\x00\x18\x00\x00\x00\x22\x00\x00\x00\x13\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x27\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x01\x00\x00\x00\x2c\x00\x00\x00\x16\x00\x00\x00\x16\x00\x00\x00\x05\x00\x00\x00\x18\x00\x00\x00\x19\x00\x00\x00\x5f\x00\x00\x00\x18\x00\x00\x00\x13\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x0f\x00\x00\x00\x10\x00\x00\x00\x18\x00\x00\x00\x69\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x01\x00\x00\x00\x7a\x00\x00\x00\x7b\x00\x00\x00\x27\x00\x00\x00\x05\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x01\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x05\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x7a\x00\x00\x00\x14\x00\x00\x00\x15\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x53\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x14\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x4b\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x5f\x00\x00\x00\x01\x00\x00\x00\x18\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x05\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x69\x00\x00\x00\x18\x00\x00\x00\x0c\x00\x00\x00\x14\x00\x00\x00\x15\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x5f\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1d\x00\x00\x00\x64\x00\x00\x00\x25\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x22\x00\x00\x00\x40\x00\x00\x00\x7a\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x26\x00\x00\x00\x26\x00\x00\x00\x78\x00\x00\x00\x1d\x00\x00\x00\x7a\x00\x00\x00\x7b\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x14\x00\x00\x00\x79\x00\x00\x00\x26\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x26\x00\x00\x00\x05\x00\x00\x00\x26\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x1d\x00\x00\x00\x27\x00\x00\x00\x05\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x22\x00\x00\x00\x0f\x00\x00\x00\x10\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x1d\x00\x00\x00\x16\x00\x00\x00\x01\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x26\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x16\x00\x00\x00\x64\x00\x00\x00\x7a\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x1c\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x13\x00\x00\x00\x4c\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x14\x00\x00\x00\x05\x00\x00\x00\x27\x00\x00\x00\x14\x00\x00\x00\x16\x00\x00\x00\x14\x00\x00\x00\x1d\x00\x00\x00\x27\x00\x00\x00\x0c\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x05\x00\x00\x00\x14\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x18\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x16\x00\x00\x00\x7a\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x13\x00\x00\x00\x27\x00\x00\x00\x05\x00\x00\x00\x14\x00\x00\x00\x1e\x00\x00\x00\x14\x00\x00\x00\x14\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x27\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x14\x00\x00\x00\x14\x00\x00\x00\x27\x00\x00\x00\x14\x00\x00\x00\x16\x00\x00\x00\x27\x00\x00\x00\x1d\x00\x00\x00\x16\x00\x00\x00\x18\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x1e\x00\x00\x00\x1c\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\x14\x00\x00\x00\x01\x00\x00\x00\x20\x00\x00\x00\x27\x00\x00\x00\x22\x00\x00\x00\x05\x00\x00\x00\x14\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x16\x00\x00\x00\x18\x00\x00\x00\x7a\x00\x00\x00\x05\x00\x00\x00\x18\x00\x00\x00\x18\x00\x00\x00\x18\x00\x00\x00\x14\x00\x00\x00\x1e\x00\x00\x00\x18\x00\x00\x00\x18\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x18\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x14\x00\x00\x00\x14\x00\x00\x00\x18\x00\x00\x00\x01\x00\x00\x00\x16\x00\x00\x00\x14\x00\x00\x00\x1d\x00\x00\x00\x05\x00\x00\x00\x1a\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x14\x00\x00\x00\x18\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x4c\x00\x00\x00\x08\x00\x00\x00\x2a\x00\x00\x00\x01\x00\x00\x00\x2c\x00\x00\x00\x18\x00\x00\x00\x1d\x00\x00\x00\x05\x00\x00\x00\x14\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x4c\x00\x00\x00\x4c\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x07\x00\x00\x00\x09\x00\x00\x00\x2a\x00\x00\x00\x01\x00\x00\x00\x2c\x00\x00\x00\x0e\x00\x00\x00\x1d\x00\x00\x00\x05\x00\x00\x00\x0b\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x0d\x00\x00\x00\x11\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x12\x00\x00\x00\x22\x00\x00\x00\x2a\x00\x00\x00\x01\x00\x00\x00\x2c\x00\x00\x00\x24\x00\x00\x00\x1d\x00\x00\x00\x05\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x2a\x00\x00\x00\x01\x00\x00\x00\x2c\x00\x00\x00\x08\x00\x00\x00\x1d\x00\x00\x00\x05\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x0b\x00\x00\x00\x0b\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x0b\x00\x00\x00\x24\x00\x00\x00\x2a\x00\x00\x00\x01\x00\x00\x00\x2c\x00\x00\x00\x22\x00\x00\x00\x1d\x00\x00\x00\x05\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\x16\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x24\x00\x00\x00\x24\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x24\x00\x00\x00\x24\x00\x00\x00\x0e\x00\x00\x00\x01\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x1d\x00\x00\x00\x05\x00\x00\x00\x0d\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\x16\x00\x00\x00\x0e\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x00\x00\x01\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x05\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\x14\x00\x00\x00\x15\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x04\x00\x00\x00\x05\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\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x14\x00\x00\x00\x15\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\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\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\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\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\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\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\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\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\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\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\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\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\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\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\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\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\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\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\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\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\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\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\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\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\xff\xff\xff\xff\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\xff\xff\xff\xff\x2c\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\xff\xff\xff\xff\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\xff\xff\xff\xff\x2c\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\xff\xff\xff\xff\x2c\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\xff\xff\xff\xff\x2a\x00\x00\x00\xff\xff\xff\xff\x2c\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\xff\xff\xff\xff\x2a\x00\x00\x00\xff\xff\xff\xff\x2c\x00\x00\x00\x01\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\xff\xff\xff\xff\x2a\x00\x00\x00\xff\xff\xff\xff\x2c\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x05\x00\x00\x00\x22\x00\x00\x00\x16\x00\x00\x00\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\x00\x00\x1e\x00\x00\x00\x2c\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\x16\x00\x00\x00\xff\xff\xff\xff\x18\x00\x00\x00\x19\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\x00\x00\xff\xff\xff\xff\x2c\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\x00\x00\xff\xff\xff\xff\x2c\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\x00\x00\xff\xff\xff\xff\x2c\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\x00\x00\xff\xff\xff\xff\x2c\x00\x00\x00\x01\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x14\x00\x00\x00\x2a\x00\x00\x00\x11\x00\x00\x00\x2c\x00\x00\x00\x18\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\x16\x00\x00\x00\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x2a\x00\x00\x00\x01\x00\x00\x00\x2c\x00\x00\x00\x05\x00\x00\x00\x26\x00\x00\x00\x05\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x0d\x00\x00\x00\x01\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x16\x00\x00\x00\x05\x00\x00\x00\x16\x00\x00\x00\xff\xff\xff\xff\x1a\x00\x00\x00\x1b\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\xff\xff\xff\xff\x05\x00\x00\x00\x05\x00\x00\x00\x05\x00\x00\x00\x16\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x16\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x05\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x05\x00\x00\x00\x16\x00\x00\x00\x16\x00\x00\x00\x16\x00\x00\x00\x18\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\xff\xff\xff\xff\x16\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x00\x00\x1b\x00\x00\x00\xff\xff\xff\xff\x16\x00\x00\x00\xff\xff\xff\xff\x18\x00\x00\x00\x19\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x00\x00\xff\xff\xff\xff\x0c\x00\x00\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x0f\x00\x00\x00\x10\x00\x00\x00\x11\x00\x00\x00\x26\x00\x00\x00\xff\xff\xff\xff\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x26\x00\x00\x00\xff\xff\xff\xff\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x26\x00\x00\x00\xff\xff\xff\xff\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x26\x00\x00\x00\xff\xff\xff\xff\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x26\x00\x00\x00\xff\xff\xff\xff\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x00\x00\x3f\x00\x00\x00\x40\x00\x00\x00\xb3\x00\x00\x00\xb4\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\xa4\x00\x00\x00\x39\x01\x00\x00\x40\x01\x00\x00\xd9\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x5d\x01\x00\x00\xb0\x01\x00\x00\x37\x01\x00\x00\x7a\x00\x00\x00\x7e\x01\x00\x00\xb7\x00\x00\x00\x62\x01\x00\x00\x9a\x00\x00\x00\xc3\x00\x00\x00\xc4\x00\x00\x00\xde\x01\x00\x00\x55\x01\x00\x00\x76\x01\x00\x00\x11\x01\x00\x00\x79\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x15\x01\x00\x00\x55\x00\x00\x00\xd9\x00\x00\x00\x16\x01\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x59\x00\x00\x00\xdc\x01\x00\x00\xd7\x00\x00\x00\xc5\x01\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\x00\x00\x5d\x00\x00\x00\xc3\x00\x00\x00\x5e\x00\x00\x00\xc1\x01\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x61\x00\x00\x00\x62\x00\x00\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x38\x01\x00\x00\x68\x00\x00\x00\x69\x00\x00\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x00\x00\x6e\x00\x00\x00\x79\x00\x00\x00\x5e\x01\x00\x00\xb1\x01\x00\x00\x7f\x01\x00\x00\x9b\x00\x00\x00\x9a\x00\x00\x00\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\x00\x00\x72\x00\x00\x00\x63\x01\x00\x00\x41\x01\x00\x00\x3a\x01\x00\x00\x73\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\xbf\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\xbd\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x9b\x00\x00\x00\x79\x00\x00\x00\x7a\x00\x00\x00\x3f\x00\x00\x00\x40\x00\x00\x00\xdf\x01\x00\x00\x79\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x56\x01\x00\x00\x12\x01\x00\x00\xa4\x00\x00\x00\x79\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x13\x01\x00\x00\x14\x01\x00\x00\x85\x00\x00\x00\xdd\x01\x00\x00\x79\x00\x00\x00\xc6\x01\x00\x00\x15\x01\x00\x00\xbf\x00\x00\x00\xb7\x00\x00\x00\x16\x01\x00\x00\xff\xff\xff\xff\xfd\x01\x00\x00\xc2\x01\x00\x00\xfe\x01\x00\x00\x50\x01\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x51\x01\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x0d\x01\x00\x00\x79\x00\x00\x00\x9a\x00\x00\x00\x36\x01\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x59\x00\x00\x00\x0e\x01\x00\x00\x2e\x00\x00\x00\x9b\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\x00\x00\x5d\x00\x00\x00\x2f\x00\x00\x00\x5e\x00\x00\x00\xdc\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x35\x01\x00\x00\x62\x00\x00\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\xff\xff\xff\xff\x68\x00\x00\x00\x69\x00\x00\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x00\x00\x6e\x00\x00\x00\x3f\x00\x00\x00\x7d\x00\x00\x00\x79\x00\x00\x00\x32\x01\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x9b\x00\x00\x00\x70\x00\x00\x00\x71\x00\x00\x00\x72\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x2e\x00\x00\x00\x79\x00\x00\x00\x7a\x00\x00\x00\xda\x01\x00\x00\xac\x00\x00\x00\xa4\x00\x00\x00\x5b\x01\x00\x00\xdb\x01\x00\x00\x79\x00\x00\x00\xa4\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x2d\x01\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x9b\x00\x00\x00\xad\x00\x00\x00\xae\x00\x00\x00\x9a\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x59\x00\x00\x00\xb0\x00\x00\x00\xb1\x00\x00\x00\x9a\x01\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\x00\x00\x5d\x00\x00\x00\x11\x01\x00\x00\x5e\x00\x00\x00\x23\x01\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x1b\x01\x00\x00\x62\x00\x00\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x79\x00\x00\x00\x68\x00\x00\x00\x69\x00\x00\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x00\x00\x6e\x00\x00\x00\xa4\x00\x00\x00\x7d\x00\x00\x00\xdd\x00\x00\x00\x18\x01\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\xde\x00\x00\x00\x70\x00\x00\x00\x71\x00\x00\x00\x72\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x2e\x00\x00\x00\x79\x00\x00\x00\x7a\x00\x00\x00\x9b\x00\x00\x00\xd9\x00\x00\x00\xda\x00\x00\x00\x9a\x00\x00\x00\x9b\x00\x00\x00\xa4\x00\x00\x00\xa4\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\xff\xff\xff\xff\x51\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x08\x01\x00\x00\x9b\x00\x00\x00\x10\x01\x00\x00\xa4\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x59\x00\x00\x00\xff\xff\xff\xff\x98\x01\x00\x00\x96\x01\x00\x00\x9a\x00\x00\x00\x79\x00\x00\x00\x0f\x01\x00\x00\x5d\x00\x00\x00\x2e\x00\x00\x00\x79\x00\x00\x00\x12\x01\x00\x00\x0e\x02\x00\x00\xb7\x00\x00\x00\x0f\x02\x00\x00\x62\x00\x00\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x0a\x01\x00\x00\x79\x00\x00\x00\xba\x00\x00\x00\x13\x01\x00\x00\x14\x01\x00\x00\xff\xff\xff\xff\x9b\x00\x00\x00\x6e\x00\x00\x00\x29\x02\x00\x00\x7d\x00\x00\x00\x2a\x02\x00\x00\xff\xff\xff\xff\x41\x00\x00\x00\x42\x00\x00\x00\x9a\x00\x00\x00\x8a\xff\xff\xff\x06\x01\x00\x00\x72\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x79\x00\x00\x00\x79\x00\x00\x00\x7a\x00\x00\x00\xff\xff\xff\xff\x9b\x00\x00\x00\xc3\x01\x00\x00\x9b\x00\x00\x00\x9b\x00\x00\x00\xff\xff\xff\xff\xc4\x01\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\xff\x00\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x08\x01\x00\x00\x9b\x00\x00\x00\x8e\x00\x00\x00\x8f\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x59\x00\x00\x00\x2e\x00\x00\x00\x9b\x00\x00\x00\x8e\x00\x00\x00\x33\x01\x00\x00\x95\x00\x00\x00\x79\x00\x00\x00\x5d\x00\x00\x00\x79\x00\x00\x00\x79\x00\x00\x00\xb0\x00\x00\x00\xfb\x00\x00\x00\xc3\x00\x00\x00\xdf\x00\x00\x00\x62\x00\x00\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x2e\x00\x00\x00\x79\x00\x00\x00\x9e\x00\x00\x00\x02\x01\x00\x00\x95\x00\x00\x00\xff\xff\xff\xff\x2e\x00\x00\x00\x6e\x00\x00\x00\x26\x01\x00\x00\x79\x00\x00\x00\xdb\x00\x00\x00\x11\x01\x00\x00\x9b\x00\x00\x00\xfd\x00\x00\x00\x27\x01\x00\x00\xc3\x00\x00\x00\x86\x01\x00\x00\x72\x00\x00\x00\x8a\xff\xff\xff\x2e\x00\x00\x00\x2e\x00\x00\x00\x9e\x00\x00\x00\x2e\x00\x00\x00\xeb\x00\x00\x00\x95\x00\x00\x00\x00\x01\x00\x00\xea\x00\x00\x00\x9f\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x7d\x00\x00\x00\x79\x00\x00\x00\x7a\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x3b\x01\x00\x00\x79\x00\x00\x00\x3c\x01\x00\x00\xab\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\xff\xff\xff\xff\x56\x00\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x59\x00\x00\x00\x2e\x00\x00\x00\xfb\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x95\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\xb0\x00\x00\x00\x84\x01\x00\x00\x2e\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\xac\x00\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x08\x01\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x59\x00\x00\x00\xfa\x00\x00\x00\x2e\x00\x00\x00\xaf\x00\x00\x00\x97\x00\x00\x00\x98\x00\x00\x00\xe9\x00\x00\x00\x5d\x00\x00\x00\x2e\x00\x00\x00\x12\x01\x00\x00\x24\x01\x00\x00\x72\x00\x00\x00\xe7\x00\x00\x00\x25\x01\x00\x00\x62\x00\x00\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x3d\x01\x00\x00\x3e\x01\x00\x00\x13\x01\x00\x00\x14\x01\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x2e\x00\x00\x00\x6e\x00\x00\x00\xf6\x00\x00\x00\x7d\x00\x00\x00\xd9\x00\x00\x00\xf0\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x79\x00\x00\x00\xff\xff\xff\xff\xf3\x00\x00\x00\x72\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x2e\x00\x00\x00\x79\x00\x00\x00\x7a\x00\x00\x00\x2e\x00\x00\x00\x95\x00\x00\x00\x2e\x00\x00\x00\xf2\x00\x00\x00\xd9\x00\x00\x00\xe2\x00\x00\x00\x95\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\xff\xff\xff\xff\x51\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x79\x00\x00\x00\x2e\x00\x00\x00\xd7\x00\x00\x00\x96\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x59\x00\x00\x00\x96\x00\x00\x00\x2e\x00\x00\x00\x79\x00\x00\x00\x97\x00\x00\x00\x74\x01\x00\x00\xbf\x00\x00\x00\x5d\x00\x00\x00\x2e\x00\x00\x00\x97\x00\x00\x00\xd7\x01\x00\x00\xff\xff\xff\xff\xe3\x00\x00\x00\xc0\x00\x00\x00\x62\x00\x00\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x2e\x00\x00\x00\x79\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\xb7\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x6e\x00\x00\x00\xff\xff\xff\xff\x7d\x00\x00\x00\x91\x01\x00\x00\x90\x01\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\xb8\x00\x00\x00\xb9\x00\x00\x00\x8f\x01\x00\x00\x72\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x8e\x01\x00\x00\x79\x00\x00\x00\x7a\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x5e\x01\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\xc3\x00\x00\x00\x2e\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\xac\x00\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x89\x01\x00\x00\x88\x01\x00\x00\x79\x00\x00\x00\xb7\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x59\x00\x00\x00\x2e\x00\x00\x00\x2e\x00\x00\x00\xad\x00\x00\x00\x7f\x01\x00\x00\x95\x00\x00\x00\x95\x00\x00\x00\x5d\x00\x00\x00\x79\x00\x00\x00\x2e\x00\x00\x00\x76\x01\x00\x00\x33\x00\x00\x00\x9a\x00\x00\x00\x81\x01\x00\x00\x34\x00\x00\x00\x5c\x01\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x2e\x00\x00\x00\x7b\x00\x00\x00\x96\x00\x00\x00\xa5\x00\x00\x00\xb7\x00\x00\x00\xa6\x00\x00\x00\xa7\x00\x00\x00\x6e\x00\x00\x00\xbb\x01\x00\x00\x7d\x00\x00\x00\x97\x00\x00\x00\xd5\x01\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\xb8\x00\x00\x00\xf4\x00\x00\x00\xb8\x01\x00\x00\x72\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x2e\x00\x00\x00\x79\x00\x00\x00\x7a\x00\x00\x00\xb6\x01\x00\x00\xac\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x59\x00\x00\x00\x2e\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x80\x01\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x79\x00\x00\x00\xad\x00\x00\x00\xb2\x01\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x29\x01\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\xaf\x01\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x2e\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x5d\x00\x00\x00\xac\x00\x00\x00\x2e\x00\x00\x00\x9b\x00\x00\x00\x2e\x00\x00\x00\xab\x01\x00\x00\xd9\x00\x00\x00\xe0\x00\x00\x00\xbf\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x72\x00\x00\x00\xa9\x01\x00\x00\xe8\x00\x00\x00\xad\x00\x00\x00\xd1\x01\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x6e\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x32\x00\x00\x00\xa8\x01\x00\x00\xb1\x01\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x33\x00\x00\x00\xa6\x01\x00\x00\x79\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\xa1\x01\x00\x00\xa0\x01\x00\x00\x78\x00\x00\x00\x32\x00\x00\x00\x79\x00\x00\x00\x7a\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x4c\x01\x00\x00\x9f\x01\x00\x00\x2e\x00\x00\x00\xe9\x01\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x2e\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\xe7\x01\x00\x00\xb7\x00\x00\x00\xe5\x01\x00\x00\x2e\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\xbd\x00\x00\x00\x95\x00\x00\x00\xd9\x00\x00\x00\x85\x01\x00\x00\x33\x00\x00\x00\xb8\x00\x00\x00\x83\x01\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x04\x02\x00\x00\x32\x00\x00\x00\x9e\x00\x00\x00\x2e\x00\x00\x00\x91\x00\x00\x00\x92\x00\x00\x00\x33\x00\x00\x00\x95\x00\x00\x00\x59\x01\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x93\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\xbf\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x2e\x00\x00\x00\x9e\x00\x00\x00\xd3\x01\x00\x00\x79\x00\x00\x00\x95\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\xb6\x01\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\xd0\x01\x00\x00\xce\x01\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x2e\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\xcf\x01\x00\x00\xbf\x00\x00\x00\xcb\x01\x00\x00\x03\x02\x00\x00\x96\x00\x00\x00\x02\x02\x00\x00\x32\x00\x00\x00\xfc\x01\x00\x00\xe6\x00\x00\x00\x91\x00\x00\x00\x76\x01\x00\x00\x33\x00\x00\x00\x97\x00\x00\x00\xc8\x01\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x93\x00\x00\x00\x32\x00\x00\x00\xd0\x01\x00\x00\x2e\x00\x00\x00\x91\x00\x00\x00\x6f\x01\x00\x00\x33\x00\x00\x00\x95\x00\x00\x00\x01\x02\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x93\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x02\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x2e\x00\x00\x00\x96\x00\x00\x00\x79\x00\x00\x00\x2e\x00\x00\x00\x95\x00\x00\x00\xf9\x01\x00\x00\xbd\x00\x00\x00\x95\x00\x00\x00\xf8\x01\x00\x00\x9b\x00\x00\x00\xf7\x01\x00\x00\xf6\x01\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\xee\x01\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\xf5\x01\x00\x00\xf4\x01\x00\x00\xec\x01\x00\x00\xf3\x01\x00\x00\x66\x01\x00\x00\x20\x02\x00\x00\x32\x00\x00\x00\x9e\x00\x00\x00\x19\x02\x00\x00\x91\x00\x00\x00\x60\x01\x00\x00\x33\x00\x00\x00\x67\x01\x00\x00\xcc\x01\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x93\x00\x00\x00\x32\x00\x00\x00\x1c\x02\x00\x00\x2e\x00\x00\x00\x94\x00\x00\x00\x1e\x02\x00\x00\x33\x00\x00\x00\x95\x00\x00\x00\x1b\x02\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x93\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x1a\x02\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x2e\x00\x00\x00\x64\x01\x00\x00\x18\x02\x00\x00\x79\x00\x00\x00\x95\x00\x00\x00\x17\x02\x00\x00\x16\x02\x00\x00\x15\x02\x00\x00\x13\x02\x00\x00\x65\x01\x00\x00\x0c\x02\x00\x00\x0b\x02\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x0a\x02\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x09\x02\x00\x00\x08\x02\x00\x00\x2e\x02\x00\x00\x2e\x00\x00\x00\xa0\x00\x00\x00\x07\x02\x00\x00\x32\x00\x00\x00\x95\x00\x00\x00\xa4\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x7a\x00\x00\x00\x32\x00\x00\x00\xa9\x00\x00\x00\xaa\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x32\x01\x00\x00\x28\x02\x00\x00\x39\x02\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x2b\x02\x00\x00\xd5\x00\x00\x00\x7f\x00\x00\x00\x2e\x00\x00\x00\x3b\x00\x00\x00\x3c\x02\x00\x00\x32\x00\x00\x00\x95\x00\x00\x00\x3e\x02\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x21\x01\x00\x00\x32\x00\x00\x00\x02\x01\x00\x00\x03\x01\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x16\x01\x00\x00\x33\x02\x00\x00\x37\x02\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\xd7\x00\x00\x00\xd4\x00\x00\x00\x6d\x01\x00\x00\x2e\x00\x00\x00\x3b\x00\x00\x00\xbb\x00\x00\x00\x32\x00\x00\x00\x95\x00\x00\x00\xc1\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xf8\x00\x00\x00\x32\x00\x00\x00\xa9\x00\x00\x00\x00\x01\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xf3\x00\x00\x00\xbd\x00\x00\x00\xb5\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\xb4\x00\x00\x00\x90\x00\x00\x00\x6c\x01\x00\x00\x2e\x00\x00\x00\x3b\x00\x00\x00\x86\x00\x00\x00\x32\x00\x00\x00\x95\x00\x00\x00\x23\x01\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xef\x00\x00\x00\x32\x00\x00\x00\xa9\x00\x00\x00\xfd\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xee\x00\x00\x00\x0a\x01\x00\x00\xe5\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\xe4\x00\x00\x00\x8c\x01\x00\x00\x6b\x01\x00\x00\x2e\x00\x00\x00\x3b\x00\x00\x00\xe1\x00\x00\x00\x32\x00\x00\x00\x95\x00\x00\x00\x82\x01\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xed\x00\x00\x00\x32\x00\x00\x00\xa9\x00\x00\x00\x00\x01\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xec\x00\x00\x00\x8b\x01\x00\x00\x8a\x01\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x89\x01\x00\x00\x78\x01\x00\x00\x6a\x01\x00\x00\x2e\x00\x00\x00\x3b\x00\x00\x00\x6e\x01\x00\x00\x32\x00\x00\x00\x95\x00\x00\x00\x58\x01\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x7c\x01\x00\x00\x32\x00\x00\x00\x08\x01\x00\x00\xb4\x01\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x7b\x01\x00\x00\x4e\x01\x00\x00\xbb\x01\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\xab\x01\x00\x00\x0a\x01\x00\x00\xe2\x01\x00\x00\x2e\x00\x00\x00\x3e\x01\x00\x00\x93\x01\x00\x00\x32\x00\x00\x00\x95\x00\x00\x00\xe1\x01\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x77\x01\x00\x00\x32\x00\x00\x00\xa6\x01\x00\x00\xee\x01\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x73\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x72\x01\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x71\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x70\x01\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x68\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x56\x01\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xbf\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xbe\x01\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xbd\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xb3\x01\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xad\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xa4\x01\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xa3\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xa2\x01\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xa1\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x9d\x01\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x9c\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x92\x01\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x91\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xe7\x01\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xe5\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xe3\x01\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xdf\x01\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xd6\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xd4\x01\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xd3\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xcb\x01\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xc9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xc7\x01\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xc6\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x05\x02\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x03\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xfe\x01\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xfa\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xf0\x01\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xef\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xec\x01\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xea\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xe9\x01\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x1e\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x01\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x1c\x02\x00\x00\x32\x00\x00\x00\xad\x00\x00\x00\xf9\x01\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x11\x02\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\xac\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\xad\x00\x00\x00\x13\x02\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x10\x02\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x0f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x0c\x02\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x2c\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x2b\x02\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x21\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x20\x02\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x35\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x34\x02\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x33\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x31\x02\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x37\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3a\x02\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x39\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x02\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x7d\x00\x00\x00\x39\x00\x00\x00\x7e\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x88\x00\x00\x00\x89\x00\x00\x00\x8a\x00\x00\x00\x8b\x00\x00\x00\x8c\x00\x00\x00\x8d\x00\x00\x00\x8e\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x7d\x00\x00\x00\x39\x00\x00\x00\x4b\x01\x00\x00\x3b\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x7d\x00\x00\x00\x39\x00\x00\x00\x42\x01\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x7d\x00\x00\x00\x39\x00\x00\x00\x41\x01\x00\x00\x3b\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x7d\x00\x00\x00\x39\x00\x00\x00\xb9\x01\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x7d\x00\x00\x00\x39\x00\x00\x00\xb8\x01\x00\x00\x3b\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x7d\x00\x00\x00\x39\x00\x00\x00\x30\x02\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x7d\x00\x00\x00\x39\x00\x00\x00\x2f\x02\x00\x00\x3b\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x7d\x00\x00\x00\x39\x00\x00\x00\x2e\x02\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x7d\x00\x00\x00\x39\x00\x00\x00\x26\x02\x00\x00\x3b\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x7d\x00\x00\x00\x39\x00\x00\x00\x25\x02\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x7d\x00\x00\x00\x39\x00\x00\x00\x24\x02\x00\x00\x3b\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x7d\x00\x00\x00\x39\x00\x00\x00\x23\x02\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x80\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x7d\x00\x00\x00\x39\x00\x00\x00\x22\x02\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x69\x01\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x4a\x01\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x49\x01\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\xd8\x01\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x82\x00\x00\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x48\x01\x00\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x00\x00\x00\x00\x95\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x47\x01\x00\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x2e\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x95\x00\x00\x00\x33\x00\x00\x00\x52\x01\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x83\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\x00\x00\x00\x53\x01\x00\x00\x3b\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\xa5\x00\x00\x00\x00\x00\x00\x00\xa6\x00\x00\x00\x7a\x01\x00\x00\x00\x00\x00\x00\x9c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9d\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x84\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x46\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x45\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x44\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x01\x00\x00\x81\x00\x00\x00\xf6\x00\x00\x00\x3b\x00\x00\x00\x51\x01\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\xa0\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x43\x01\x00\x00\xa1\x00\x00\x00\xf7\x00\x00\x00\x2e\x00\x00\x00\x81\x00\x00\x00\x2e\x00\x00\x00\x3b\x00\x00\x00\x95\x00\x00\x00\x52\x01\x00\x00\x95\x00\x00\x00\x88\x00\x00\x00\x89\x00\x00\x00\x8a\x00\x00\x00\x8b\x00\x00\x00\x8c\x00\x00\x00\x8d\x00\x00\x00\x8e\x00\x00\x00\x9a\x01\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x95\x00\x00\x00\x00\x00\x00\x00\xa0\x00\x00\x00\x95\x00\x00\x00\xa0\x00\x00\x00\x00\x00\x00\x00\xa1\x00\x00\x00\xa2\x00\x00\x00\xa1\x00\x00\x00\x9b\x01\x00\x00\x2e\x00\x00\x00\x2e\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x95\x00\x00\x00\x95\x00\x00\x00\x95\x00\x00\x00\xa0\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\xa0\x00\x00\x00\xa1\x00\x00\x00\x30\x01\x00\x00\x95\x00\x00\x00\xa1\x00\x00\x00\x04\x01\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95\x00\x00\x00\xa0\x00\x00\x00\xa5\x00\x00\x00\xa0\x00\x00\x00\xa8\x00\x00\x00\xa1\x00\x00\x00\x98\x01\x00\x00\xa1\x00\x00\x00\x96\x01\x00\x00\x00\x00\x00\x00\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\x00\x00\x00\x94\x01\x00\x00\x00\x00\x00\x00\xa5\x00\x00\x00\x00\x00\x00\x00\xa6\x00\x00\x00\xf1\x01\x00\x00\xc6\x00\x00\x00\xc7\x00\x00\x00\xc8\x00\x00\x00\xc9\x00\x00\x00\xca\x00\x00\x00\xcb\x00\x00\x00\xcc\x00\x00\x00\xcd\x00\x00\x00\xce\x00\x00\x00\x00\x00\x00\x00\xcf\x00\x00\x00\xd0\x00\x00\x00\xd1\x00\x00\x00\xd2\x00\x00\x00\xd3\x00\x00\x00\xd4\x00\x00\x00\x0c\x01\x00\x00\x00\x00\x00\x00\x88\x00\x00\x00\x89\x00\x00\x00\x8a\x00\x00\x00\x8b\x00\x00\x00\x8c\x00\x00\x00\x8d\x00\x00\x00\x8e\x00\x00\x00\x7a\x01\x00\x00\x00\x00\x00\x00\x88\x00\x00\x00\x89\x00\x00\x00\x8a\x00\x00\x00\x8b\x00\x00\x00\x8c\x00\x00\x00\x8d\x00\x00\x00\x8e\x00\x00\x00\xbd\x01\x00\x00\x00\x00\x00\x00\x88\x00\x00\x00\x89\x00\x00\x00\x8a\x00\x00\x00\x8b\x00\x00\x00\x8c\x00\x00\x00\x8d\x00\x00\x00\x8e\x00\x00\x00\xad\x01\x00\x00\x00\x00\x00\x00\x88\x00\x00\x00\x89\x00\x00\x00\x8a\x00\x00\x00\x8b\x00\x00\x00\x8c\x00\x00\x00\x8d\x00\x00\x00\x8e\x00\x00\x00\xaa\x01\x00\x00\x00\x00\x00\x00\x88\x00\x00\x00\x89\x00\x00\x00\x8a\x00\x00\x00\x8b\x00\x00\x00\x8c\x00\x00\x00\x8d\x00\x00\x00\x8e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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 = Happy_Data_Array.array (44, 246) [+        (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)+        ]++happyRuleArr :: HappyAddr+happyRuleArr = HappyA# "\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x03\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x03\x00\x00\x00\x08\x00\x00\x00\x01\x00\x00\x00\x09\x00\x00\x00\x04\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x04\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x06\x00\x00\x00\x09\x00\x00\x00\x05\x00\x00\x00\x09\x00\x00\x00\x04\x00\x00\x00\x09\x00\x00\x00\x04\x00\x00\x00\x09\x00\x00\x00\x04\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x08\x00\x00\x00\x09\x00\x00\x00\x07\x00\x00\x00\x09\x00\x00\x00\x08\x00\x00\x00\x09\x00\x00\x00\x07\x00\x00\x00\x09\x00\x00\x00\x06\x00\x00\x00\x09\x00\x00\x00\x05\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x03\x00\x00\x00\x0b\x00\x00\x00\x04\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x01\x00\x00\x00\x0d\x00\x00\x00\x02\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x03\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x03\x00\x00\x00\x0f\x00\x00\x00\x02\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x10\x00\x00\x00\x03\x00\x00\x00\x11\x00\x00\x00\x02\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x05\x00\x00\x00\x12\x00\x00\x00\x05\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00\x15\x00\x00\x00\x01\x00\x00\x00\x15\x00\x00\x00\x03\x00\x00\x00\x16\x00\x00\x00\x01\x00\x00\x00\x16\x00\x00\x00\x01\x00\x00\x00\x16\x00\x00\x00\x05\x00\x00\x00\x16\x00\x00\x00\x07\x00\x00\x00\x17\x00\x00\x00\x01\x00\x00\x00\x17\x00\x00\x00\x02\x00\x00\x00\x18\x00\x00\x00\x01\x00\x00\x00\x19\x00\x00\x00\x01\x00\x00\x00\x19\x00\x00\x00\x03\x00\x00\x00\x1a\x00\x00\x00\x01\x00\x00\x00\x1a\x00\x00\x00\x05\x00\x00\x00\x1a\x00\x00\x00\x07\x00\x00\x00\x1a\x00\x00\x00\x05\x00\x00\x00\x1a\x00\x00\x00\x07\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x02\x00\x00\x00\x1c\x00\x00\x00\x01\x00\x00\x00\x1c\x00\x00\x00\x03\x00\x00\x00\x1d\x00\x00\x00\x01\x00\x00\x00\x1d\x00\x00\x00\x05\x00\x00\x00\x1d\x00\x00\x00\x07\x00\x00\x00\x1d\x00\x00\x00\x05\x00\x00\x00\x1d\x00\x00\x00\x07\x00\x00\x00\x1e\x00\x00\x00\x03\x00\x00\x00\x1e\x00\x00\x00\x03\x00\x00\x00\x1f\x00\x00\x00\x01\x00\x00\x00\x1f\x00\x00\x00\x03\x00\x00\x00\x20\x00\x00\x00\x03\x00\x00\x00\x20\x00\x00\x00\x03\x00\x00\x00\x21\x00\x00\x00\x01\x00\x00\x00\x21\x00\x00\x00\x03\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x23\x00\x00\x00\x01\x00\x00\x00\x23\x00\x00\x00\x03\x00\x00\x00\x24\x00\x00\x00\x01\x00\x00\x00\x24\x00\x00\x00\x01\x00\x00\x00\x24\x00\x00\x00\x01\x00\x00\x00\x24\x00\x00\x00\x01\x00\x00\x00\x24\x00\x00\x00\x01\x00\x00\x00\x24\x00\x00\x00\x01\x00\x00\x00\x24\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x07\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x03\x00\x00\x00\x25\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x0e\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x03\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x26\x00\x00\x00\x03\x00\x00\x00\x26\x00\x00\x00\x03\x00\x00\x00\x26\x00\x00\x00\x03\x00\x00\x00\x26\x00\x00\x00\x01\x00\x00\x00\x26\x00\x00\x00\x03\x00\x00\x00\x27\x00\x00\x00\x03\x00\x00\x00\x27\x00\x00\x00\x03\x00\x00\x00\x27\x00\x00\x00\x01\x00\x00\x00\x27\x00\x00\x00\x03\x00\x00\x00\x27\x00\x00\x00\x03\x00\x00\x00\x28\x00\x00\x00\x03\x00\x00\x00\x28\x00\x00\x00\x01\x00\x00\x00\x28\x00\x00\x00\x03\x00\x00\x00\x29\x00\x00\x00\x03\x00\x00\x00\x29\x00\x00\x00\x01\x00\x00\x00\x29\x00\x00\x00\x03\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x04\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x03\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x01\x00\x00\x00\x2a\x00\x00\x00\x03\x00\x00\x00\x2a\x00\x00\x00\x03\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2b\x00\x00\x00\x03\x00\x00\x00\x2b\x00\x00\x00\x08\x00\x00\x00\x2b\x00\x00\x00\x08\x00\x00\x00\x2b\x00\x00\x00\x08\x00\x00\x00\x2b\x00\x00\x00\x05\x00\x00\x00\x2b\x00\x00\x00\x03\x00\x00\x00\x2b\x00\x00\x00\x06\x00\x00\x00\x2b\x00\x00\x00\x04\x00\x00\x00\x2b\x00\x00\x00\x07\x00\x00\x00\x2b\x00\x00\x00\x08\x00\x00\x00\x2b\x00\x00\x00\x09\x00\x00\x00\x2b\x00\x00\x00\x09\x00\x00\x00\x2b\x00\x00\x00\x0a\x00\x00\x00\x2b\x00\x00\x00\x0b\x00\x00\x00\x2b\x00\x00\x00\x01\x00\x00\x00\x2b\x00\x00\x00\x03\x00\x00\x00\x2b\x00\x00\x00\x08\x00\x00\x00\x2b\x00\x00\x00\x08\x00\x00\x00\x2b\x00\x00\x00\x08\x00\x00\x00\x2b\x00\x00\x00\x04\x00\x00\x00\x2b\x00\x00\x00\x08\x00\x00\x00\x2b\x00\x00\x00\x08\x00\x00\x00\x2c\x00\x00\x00\x03\x00\x00\x00\x2c\x00\x00\x00\x02\x00\x00\x00\x2c\x00\x00\x00\x05\x00\x00\x00\x2c\x00\x00\x00\x07\x00\x00\x00\x2c\x00\x00\x00\x06\x00\x00\x00\x2c\x00\x00\x00\x08\x00\x00\x00\x2c\x00\x00\x00\x01\x00\x00\x00\x2d\x00\x00\x00\x03\x00\x00\x00\x2d\x00\x00\x00\x01\x00\x00\x00\x2e\x00\x00\x00\x01\x00\x00\x00\x2e\x00\x00\x00\x03\x00\x00\x00"#++happyCatchStates :: [Happy_Prelude.Int]+happyCatchStates = []++happy_n_terms = 125 :: Happy_Prelude.Int+happy_n_nonterms = 47 :: Happy_Prelude.Int++happy_n_starts = 44 :: Happy_Prelude.Int++happyReduce_44 = happySpecReduce_1  0# happyReduction_44+happyReduction_44 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn48+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), (Data.Text.unpack ((\(PT _ (TL s)) -> s) happy_var_1)))+        )}++happyReduce_45 = happySpecReduce_1  1# happyReduction_45+happyReduction_45 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn49+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.VarIdentToken (tokenText happy_var_1))+        )}++happyReduce_46 = happySpecReduce_1  2# happyReduction_46+happyReduction_46 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn50+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.HoleIdentToken (tokenText happy_var_1))+        )}++happyReduce_47 = happySpecReduce_2  3# happyReduction_47+happyReduction_47 happy_x_2+        happy_x_1+         =  case happyOut55 happy_x_1 of { (HappyWrap55 happy_var_1) -> +        case happyOut58 happy_x_2 of { (HappyWrap58 happy_var_2) -> +        happyIn51+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.Module (fst happy_var_1) (snd happy_var_1) (snd happy_var_2))+        )}}++happyReduce_48 = happySpecReduce_1  4# happyReduction_48+happyReduction_48 happy_x_1+         =  case happyOut50 happy_x_1 of { (HappyWrap50 happy_var_1) -> +        happyIn52+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.HoleIdent (fst happy_var_1) (snd happy_var_1))+        )}++happyReduce_49 = happySpecReduce_1  5# happyReduction_49+happyReduction_49 happy_x_1+         =  case happyOut49 happy_x_1 of { (HappyWrap49 happy_var_1) -> +        happyIn53+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.VarIdent (fst happy_var_1) (snd happy_var_1))+        )}++happyReduce_50 = happySpecReduce_1  6# happyReduction_50+happyReduction_50 happy_x_1+         =  case happyOut53 happy_x_1 of { (HappyWrap53 happy_var_1) -> +        happyIn54+                 ((fst happy_var_1, (:[]) (snd happy_var_1))+        )}++happyReduce_51 = happySpecReduce_2  6# happyReduction_51+happyReduction_51 happy_x_2+        happy_x_1+         =  case happyOut53 happy_x_1 of { (HappyWrap53 happy_var_1) -> +        case happyOut54 happy_x_2 of { (HappyWrap54 happy_var_2) -> +        happyIn54+                 ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_2))+        )}}++happyReduce_52 = happySpecReduce_3  7# happyReduction_52+happyReduction_52 happy_x_3+        happy_x_2+        happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        case happyOut56 happy_x_2 of { (HappyWrap56 happy_var_2) -> +        happyIn55+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.LanguageDecl (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+        )}}++happyReduce_53 = happySpecReduce_1  8# happyReduction_53+happyReduction_53 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn56+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Rzk1 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+        )}++happyReduce_54 = happyReduce 4# 9# happyReduction_54+happyReduction_54 (happy_x_4 `HappyStk`+        happy_x_3 `HappyStk`+        happy_x_2 `HappyStk`+        happy_x_1 `HappyStk`+        happyRest)+         = case happyOutTok happy_x_1 of { happy_var_1 -> +        case happyOut48 happy_x_2 of { (HappyWrap48 happy_var_2) -> +        case happyOut48 happy_x_4 of { (HappyWrap48 happy_var_4) -> +        happyIn57+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandSetOption (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))+        ) `HappyStk` happyRest}}}++happyReduce_55 = happySpecReduce_2  9# happyReduction_55+happyReduction_55 happy_x_2+        happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        case happyOut48 happy_x_2 of { (HappyWrap48 happy_var_2) -> +        happyIn57+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandUnsetOption (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+        )}}++happyReduce_56 = happyReduce 4# 9# happyReduction_56+happyReduction_56 (happy_x_4 `HappyStk`+        happy_x_3 `HappyStk`+        happy_x_2 `HappyStk`+        happy_x_1 `HappyStk`+        happyRest)+         = case happyOutTok happy_x_1 of { happy_var_1 -> +        case happyOut93 happy_x_2 of { (HappyWrap93 happy_var_2) -> +        case happyOut93 happy_x_4 of { (HappyWrap93 happy_var_4) -> +        happyIn57+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandCheck (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))+        ) `HappyStk` happyRest}}}++happyReduce_57 = happySpecReduce_2  9# happyReduction_57+happyReduction_57 happy_x_2+        happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        case happyOut93 happy_x_2 of { (HappyWrap93 happy_var_2) -> +        happyIn57+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandCompute (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+        )}}++happyReduce_58 = happySpecReduce_2  9# happyReduction_58+happyReduction_58 happy_x_2+        happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        case happyOut93 happy_x_2 of { (HappyWrap93 happy_var_2) -> +        happyIn57+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandComputeWHNF (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+        )}}++happyReduce_59 = happySpecReduce_2  9# happyReduction_59+happyReduction_59 happy_x_2+        happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        case happyOut93 happy_x_2 of { (HappyWrap93 happy_var_2) -> +        happyIn57+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandComputeNF (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+        )}}++happyReduce_60 = happyReduce 6# 9# happyReduction_60+happyReduction_60 (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 { happy_var_1 -> +        case happyOut53 happy_x_2 of { (HappyWrap53 happy_var_2) -> +        case happyOut59 happy_x_3 of { (HappyWrap59 happy_var_3) -> +        case happyOut75 happy_x_4 of { (HappyWrap75 happy_var_4) -> +        case happyOut93 happy_x_6 of { (HappyWrap93 happy_var_6) -> +        happyIn57+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandPostulate (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6))+        ) `HappyStk` happyRest}}}}}++happyReduce_61 = happyReduce 5# 9# happyReduction_61+happyReduction_61 (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 { happy_var_1 -> +        case happyOut53 happy_x_2 of { (HappyWrap53 happy_var_2) -> +        case happyOut59 happy_x_3 of { (HappyWrap59 happy_var_3) -> +        case happyOut93 happy_x_5 of { (HappyWrap93 happy_var_5) -> +        happyIn57+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandPostulateNoParams (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_5))+        ) `HappyStk` happyRest}}}}++happyReduce_62 = happyReduce 4# 9# happyReduction_62+happyReduction_62 (happy_x_4 `HappyStk`+        happy_x_3 `HappyStk`+        happy_x_2 `HappyStk`+        happy_x_1 `HappyStk`+        happyRest)+         = case happyOutTok happy_x_1 of { happy_var_1 -> +        case happyOut54 happy_x_2 of { (HappyWrap54 happy_var_2) -> +        case happyOut93 happy_x_4 of { (HappyWrap93 happy_var_4) -> +        happyIn57+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandAssume (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))+        ) `HappyStk` happyRest}}}++happyReduce_63 = happyReduce 4# 9# happyReduction_63+happyReduction_63 (happy_x_4 `HappyStk`+        happy_x_3 `HappyStk`+        happy_x_2 `HappyStk`+        happy_x_1 `HappyStk`+        happyRest)+         = case happyOutTok happy_x_1 of { happy_var_1 -> +        case happyOut53 happy_x_2 of { (HappyWrap53 happy_var_2) -> +        case happyOut93 happy_x_4 of { (HappyWrap93 happy_var_4) -> +        happyIn57+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandVariable (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))+        ) `HappyStk` happyRest}}}++happyReduce_64 = happyReduce 4# 9# happyReduction_64+happyReduction_64 (happy_x_4 `HappyStk`+        happy_x_3 `HappyStk`+        happy_x_2 `HappyStk`+        happy_x_1 `HappyStk`+        happyRest)+         = case happyOutTok happy_x_1 of { happy_var_1 -> +        case happyOut54 happy_x_2 of { (HappyWrap54 happy_var_2) -> +        case happyOut93 happy_x_4 of { (HappyWrap93 happy_var_4) -> +        happyIn57+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandVariables (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))+        ) `HappyStk` happyRest}}}++happyReduce_65 = happySpecReduce_2  9# happyReduction_65+happyReduction_65 happy_x_2+        happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        case happyOut60 happy_x_2 of { (HappyWrap60 happy_var_2) -> +        happyIn57+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandSection (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+        )}}++happyReduce_66 = happySpecReduce_2  9# happyReduction_66+happyReduction_66 happy_x_2+        happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        case happyOut60 happy_x_2 of { (HappyWrap60 happy_var_2) -> +        happyIn57+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandSectionEnd (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+        )}}++happyReduce_67 = happyReduce 8# 9# happyReduction_67+happyReduction_67 (happy_x_8 `HappyStk`+        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 { happy_var_1 -> +        case happyOut53 happy_x_2 of { (HappyWrap53 happy_var_2) -> +        case happyOut59 happy_x_3 of { (HappyWrap59 happy_var_3) -> +        case happyOut75 happy_x_4 of { (HappyWrap75 happy_var_4) -> +        case happyOut93 happy_x_6 of { (HappyWrap93 happy_var_6) -> +        case happyOut93 happy_x_8 of { (HappyWrap93 happy_var_8) -> +        happyIn57+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandDefine (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6) (snd happy_var_8))+        ) `HappyStk` happyRest}}}}}}++happyReduce_68 = happyReduce 7# 9# happyReduction_68+happyReduction_68 (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 { happy_var_1 -> +        case happyOut53 happy_x_2 of { (HappyWrap53 happy_var_2) -> +        case happyOut59 happy_x_3 of { (HappyWrap59 happy_var_3) -> +        case happyOut93 happy_x_5 of { (HappyWrap93 happy_var_5) -> +        case happyOut93 happy_x_7 of { (HappyWrap93 happy_var_7) -> +        happyIn57+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandDefineNoParams (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_5) (snd happy_var_7))+        ) `HappyStk` happyRest}}}}}++happyReduce_69 = happyReduce 8# 9# happyReduction_69+happyReduction_69 (happy_x_8 `HappyStk`+        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 { happy_var_1 -> +        case happyOut53 happy_x_2 of { (HappyWrap53 happy_var_2) -> +        case happyOut59 happy_x_3 of { (HappyWrap59 happy_var_3) -> +        case happyOut75 happy_x_4 of { (HappyWrap75 happy_var_4) -> +        case happyOut93 happy_x_6 of { (HappyWrap93 happy_var_6) -> +        case happyOut93 happy_x_8 of { (HappyWrap93 happy_var_8) -> +        happyIn57+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandDef (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6) (snd happy_var_8))+        ) `HappyStk` happyRest}}}}}}++happyReduce_70 = happyReduce 7# 9# happyReduction_70+happyReduction_70 (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 { happy_var_1 -> +        case happyOut53 happy_x_2 of { (HappyWrap53 happy_var_2) -> +        case happyOut59 happy_x_3 of { (HappyWrap59 happy_var_3) -> +        case happyOut93 happy_x_5 of { (HappyWrap93 happy_var_5) -> +        case happyOut93 happy_x_7 of { (HappyWrap93 happy_var_7) -> +        happyIn57+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandDefNoParams (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_5) (snd happy_var_7))+        ) `HappyStk` happyRest}}}}}++happyReduce_71 = happyReduce 6# 9# happyReduction_71+happyReduction_71 (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 { happy_var_1 -> +        case happyOut53 happy_x_2 of { (HappyWrap53 happy_var_2) -> +        case happyOut59 happy_x_3 of { (HappyWrap59 happy_var_3) -> +        case happyOut75 happy_x_4 of { (HappyWrap75 happy_var_4) -> +        case happyOut61 happy_x_5 of { (HappyWrap61 happy_var_5) -> +        case happyOut62 happy_x_6 of { (HappyWrap62 happy_var_6) -> +        happyIn57+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandData (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4) (snd happy_var_5) (snd happy_var_6))+        ) `HappyStk` happyRest}}}}}}++happyReduce_72 = happyReduce 5# 9# happyReduction_72+happyReduction_72 (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 { happy_var_1 -> +        case happyOut53 happy_x_2 of { (HappyWrap53 happy_var_2) -> +        case happyOut59 happy_x_3 of { (HappyWrap59 happy_var_3) -> +        case happyOut61 happy_x_4 of { (HappyWrap61 happy_var_4) -> +        case happyOut62 happy_x_5 of { (HappyWrap62 happy_var_5) -> +        happyIn57+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandDataNoParams (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4) (snd happy_var_5))+        ) `HappyStk` happyRest}}}}}++happyReduce_73 = happySpecReduce_0  10# happyReduction_73+happyReduction_73  =  happyIn58+                 ((Language.Rzk.Syntax.Abs.BNFC'NoPosition, [])+        )++happyReduce_74 = happySpecReduce_3  10# happyReduction_74+happyReduction_74 happy_x_3+        happy_x_2+        happy_x_1+         =  case happyOut57 happy_x_1 of { (HappyWrap57 happy_var_1) -> +        case happyOut58 happy_x_3 of { (HappyWrap58 happy_var_3) -> +        happyIn58+                 ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))+        )}}++happyReduce_75 = happyReduce 4# 11# happyReduction_75+happyReduction_75 (happy_x_4 `HappyStk`+        happy_x_3 `HappyStk`+        happy_x_2 `HappyStk`+        happy_x_1 `HappyStk`+        happyRest)+         = case happyOutTok happy_x_1 of { happy_var_1 -> +        case happyOut54 happy_x_3 of { (HappyWrap54 happy_var_3) -> +        happyIn59+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.DeclUsedVars (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3))+        ) `HappyStk` happyRest}}++happyReduce_76 = happySpecReduce_0  11# happyReduction_76+happyReduction_76  =  happyIn59+                 ((Language.Rzk.Syntax.Abs.BNFC'NoPosition, Language.Rzk.Syntax.Abs.noDeclUsedVars Language.Rzk.Syntax.Abs.BNFC'NoPosition)+        )++happyReduce_77 = happySpecReduce_0  12# happyReduction_77+happyReduction_77  =  happyIn60+                 ((Language.Rzk.Syntax.Abs.BNFC'NoPosition, Language.Rzk.Syntax.Abs.NoSectionName Language.Rzk.Syntax.Abs.BNFC'NoPosition)+        )++happyReduce_78 = happySpecReduce_1  12# happyReduction_78+happyReduction_78 happy_x_1+         =  case happyOut53 happy_x_1 of { (HappyWrap53 happy_var_1) -> +        happyIn60+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.SomeSectionName (fst happy_var_1) (snd happy_var_1))+        )}++happyReduce_79 = happySpecReduce_2  13# happyReduction_79+happyReduction_79 happy_x_2+        happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        case happyOut93 happy_x_2 of { (HappyWrap93 happy_var_2) -> +        happyIn61+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.SomeDataSort (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+        )}}++happyReduce_80 = happySpecReduce_0  13# happyReduction_80+happyReduction_80  =  happyIn61+                 ((Language.Rzk.Syntax.Abs.BNFC'NoPosition, Language.Rzk.Syntax.Abs.NoDataSort Language.Rzk.Syntax.Abs.BNFC'NoPosition)+        )++happyReduce_81 = happySpecReduce_3  14# happyReduction_81+happyReduction_81 happy_x_3+        happy_x_2+        happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        case happyOut64 happy_x_2 of { (HappyWrap64 happy_var_2) -> +        case happyOut67 happy_x_3 of { (HappyWrap67 happy_var_3) -> +        happyIn62+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.SomeDataBody (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3))+        )}}}++happyReduce_82 = happySpecReduce_0  14# happyReduction_82+happyReduction_82  =  happyIn62+                 ((Language.Rzk.Syntax.Abs.BNFC'NoPosition, Language.Rzk.Syntax.Abs.NoDataBody Language.Rzk.Syntax.Abs.BNFC'NoPosition)+        )++happyReduce_83 = happySpecReduce_3  15# happyReduction_83+happyReduction_83 happy_x_3+        happy_x_2+        happy_x_1+         =  case happyOut53 happy_x_1 of { (HappyWrap53 happy_var_1) -> +        case happyOut75 happy_x_2 of { (HappyWrap75 happy_var_2) -> +        case happyOut65 happy_x_3 of { (HappyWrap65 happy_var_3) -> +        happyIn63+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.Constructor (fst happy_var_1) (snd happy_var_1) (snd happy_var_2) (snd happy_var_3))+        )}}}++happyReduce_84 = happySpecReduce_2  15# happyReduction_84+happyReduction_84 happy_x_2+        happy_x_1+         =  case happyOut53 happy_x_1 of { (HappyWrap53 happy_var_1) -> +        case happyOut65 happy_x_2 of { (HappyWrap65 happy_var_2) -> +        happyIn63+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.constructorNoParams (fst happy_var_1) (snd happy_var_1) (snd happy_var_2))+        )}}++happyReduce_85 = happySpecReduce_1  16# happyReduction_85+happyReduction_85 happy_x_1+         =  case happyOut63 happy_x_1 of { (HappyWrap63 happy_var_1) -> +        happyIn64+                 ((fst happy_var_1, (:[]) (snd happy_var_1))+        )}++happyReduce_86 = happySpecReduce_3  16# happyReduction_86+happyReduction_86 happy_x_3+        happy_x_2+        happy_x_1+         =  case happyOut63 happy_x_1 of { (HappyWrap63 happy_var_1) -> +        case happyOut64 happy_x_3 of { (HappyWrap64 happy_var_3) -> +        happyIn64+                 ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))+        )}}++happyReduce_87 = happySpecReduce_2  17# happyReduction_87+happyReduction_87 happy_x_2+        happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        case happyOut93 happy_x_2 of { (HappyWrap93 happy_var_2) -> +        happyIn65+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.SomeConstructorType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+        )}}++happyReduce_88 = happySpecReduce_0  17# happyReduction_88+happyReduction_88  =  happyIn65+                 ((Language.Rzk.Syntax.Abs.BNFC'NoPosition, Language.Rzk.Syntax.Abs.NoConstructorType Language.Rzk.Syntax.Abs.BNFC'NoPosition)+        )++happyReduce_89 = happyReduce 5# 18# happyReduction_89+happyReduction_89 (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 { happy_var_1 -> +        case happyOut53 happy_x_3 of { (HappyWrap53 happy_var_3) -> +        case happyOut93 happy_x_5 of { (HappyWrap93 happy_var_5) -> +        happyIn66+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.DataElim (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5))+        ) `HappyStk` happyRest}}}++happyReduce_90 = happyReduce 5# 18# happyReduction_90+happyReduction_90 (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 { happy_var_1 -> +        case happyOut53 happy_x_3 of { (HappyWrap53 happy_var_3) -> +        case happyOut93 happy_x_5 of { (HappyWrap93 happy_var_5) -> +        happyIn66+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.DataCompute (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5))+        ) `HappyStk` happyRest}}}++happyReduce_91 = happySpecReduce_0  19# happyReduction_91+happyReduction_91  =  happyIn67+                 ((Language.Rzk.Syntax.Abs.BNFC'NoPosition, [])+        )++happyReduce_92 = happySpecReduce_2  19# happyReduction_92+happyReduction_92 happy_x_2+        happy_x_1+         =  case happyOut66 happy_x_1 of { (HappyWrap66 happy_var_1) -> +        case happyOut67 happy_x_2 of { (HappyWrap67 happy_var_2) -> +        happyIn67+                 ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_2))+        )}}++happyReduce_93 = happyReduce 4# 20# happyReduction_93+happyReduction_93 (happy_x_4 `HappyStk`+        happy_x_3 `HappyStk`+        happy_x_2 `HappyStk`+        happy_x_1 `HappyStk`+        happyRest)+         = case happyOut53 happy_x_1 of { (HappyWrap53 happy_var_1) -> +        case happyOut71 happy_x_2 of { (HappyWrap71 happy_var_2) -> +        case happyOut93 happy_x_4 of { (HappyWrap93 happy_var_4) -> +        happyIn68+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.MatchBranch (fst happy_var_1) (snd happy_var_1) (snd happy_var_2) (snd happy_var_4))+        ) `HappyStk` happyRest}}}++happyReduce_94 = happySpecReduce_3  20# happyReduction_94+happyReduction_94 happy_x_3+        happy_x_2+        happy_x_1+         =  case happyOut53 happy_x_1 of { (HappyWrap53 happy_var_1) -> +        case happyOut93 happy_x_3 of { (HappyWrap93 happy_var_3) -> +        happyIn68+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.matchBranchNoParams (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+        )}}++happyReduce_95 = happyReduce 4# 20# happyReduction_95+happyReduction_95 (happy_x_4 `HappyStk`+        happy_x_3 `HappyStk`+        happy_x_2 `HappyStk`+        happy_x_1 `HappyStk`+        happyRest)+         = case happyOut53 happy_x_1 of { (HappyWrap53 happy_var_1) -> +        case happyOut71 happy_x_2 of { (HappyWrap71 happy_var_2) -> +        case happyOut93 happy_x_4 of { (HappyWrap93 happy_var_4) -> +        happyIn68+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.ascii_MatchBranch (fst happy_var_1) (snd happy_var_1) (snd happy_var_2) (snd happy_var_4))+        ) `HappyStk` happyRest}}}++happyReduce_96 = happySpecReduce_3  20# happyReduction_96+happyReduction_96 happy_x_3+        happy_x_2+        happy_x_1+         =  case happyOut53 happy_x_1 of { (HappyWrap53 happy_var_1) -> +        case happyOut93 happy_x_3 of { (HappyWrap93 happy_var_3) -> +        happyIn68+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.ascii_matchBranchNoParams (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+        )}}++happyReduce_97 = happySpecReduce_1  21# happyReduction_97+happyReduction_97 happy_x_1+         =  case happyOut68 happy_x_1 of { (HappyWrap68 happy_var_1) -> +        happyIn69+                 ((fst happy_var_1, (:[]) (snd happy_var_1))+        )}++happyReduce_98 = happySpecReduce_3  21# happyReduction_98+happyReduction_98 happy_x_3+        happy_x_2+        happy_x_1+         =  case happyOut68 happy_x_1 of { (HappyWrap68 happy_var_1) -> +        case happyOut69 happy_x_3 of { (HappyWrap69 happy_var_3) -> +        happyIn69+                 ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))+        )}}++happyReduce_99 = happySpecReduce_1  22# happyReduction_99+happyReduction_99 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn70+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.PatternUnit (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+        )}++happyReduce_100 = happySpecReduce_1  22# happyReduction_100+happyReduction_100 happy_x_1+         =  case happyOut53 happy_x_1 of { (HappyWrap53 happy_var_1) -> +        happyIn70+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.PatternVar (fst happy_var_1) (snd happy_var_1))+        )}++happyReduce_101 = happyReduce 5# 22# happyReduction_101+happyReduction_101 (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 { happy_var_1 -> +        case happyOut70 happy_x_2 of { (HappyWrap70 happy_var_2) -> +        case happyOut70 happy_x_4 of { (HappyWrap70 happy_var_4) -> +        happyIn70+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.PatternPair (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))+        ) `HappyStk` happyRest}}}++happyReduce_102 = happyReduce 7# 22# happyReduction_102+happyReduction_102 (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 { happy_var_1 -> +        case happyOut70 happy_x_2 of { (HappyWrap70 happy_var_2) -> +        case happyOut70 happy_x_4 of { (HappyWrap70 happy_var_4) -> +        case happyOut73 happy_x_6 of { (HappyWrap73 happy_var_6) -> +        happyIn70+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.PatternTuple (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))+        ) `HappyStk` happyRest}}}}++happyReduce_103 = happySpecReduce_1  23# happyReduction_103+happyReduction_103 happy_x_1+         =  case happyOut70 happy_x_1 of { (HappyWrap70 happy_var_1) -> +        happyIn71+                 ((fst happy_var_1, (:[]) (snd happy_var_1))+        )}++happyReduce_104 = happySpecReduce_2  23# happyReduction_104+happyReduction_104 happy_x_2+        happy_x_1+         =  case happyOut70 happy_x_1 of { (HappyWrap70 happy_var_1) -> +        case happyOut71 happy_x_2 of { (HappyWrap71 happy_var_2) -> +        happyIn71+                 ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_2))+        )}}++happyReduce_105 = happySpecReduce_1  24# happyReduction_105+happyReduction_105 happy_x_1+         =  case happyOut70 happy_x_1 of { (HappyWrap70 happy_var_1) -> +        happyIn72+                 ((fst happy_var_1, (snd happy_var_1))+        )}++happyReduce_106 = happySpecReduce_1  25# happyReduction_106+happyReduction_106 happy_x_1+         =  case happyOut72 happy_x_1 of { (HappyWrap72 happy_var_1) -> +        happyIn73+                 ((fst happy_var_1, (:[]) (snd happy_var_1))+        )}++happyReduce_107 = happySpecReduce_3  25# happyReduction_107+happyReduction_107 happy_x_3+        happy_x_2+        happy_x_1+         =  case happyOut72 happy_x_1 of { (HappyWrap72 happy_var_1) -> +        case happyOut73 happy_x_3 of { (HappyWrap73 happy_var_3) -> +        happyIn73+                 ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))+        )}}++happyReduce_108 = happySpecReduce_1  26# happyReduction_108+happyReduction_108 happy_x_1+         =  case happyOut70 happy_x_1 of { (HappyWrap70 happy_var_1) -> +        happyIn74+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.ParamPattern (fst happy_var_1) (snd happy_var_1))+        )}++happyReduce_109 = happyReduce 5# 26# happyReduction_109+happyReduction_109 (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 { happy_var_1 -> +        case happyOut71 happy_x_2 of { (HappyWrap71 happy_var_2) -> +        case happyOut93 happy_x_4 of { (HappyWrap93 happy_var_4) -> +        happyIn74+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamPatternType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))+        ) `HappyStk` happyRest}}}++happyReduce_110 = happyReduce 7# 26# happyReduction_110+happyReduction_110 (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 { happy_var_1 -> +        case happyOut71 happy_x_2 of { (HappyWrap71 happy_var_2) -> +        case happyOut93 happy_x_4 of { (HappyWrap93 happy_var_4) -> +        case happyOut93 happy_x_6 of { (HappyWrap93 happy_var_6) -> +        happyIn74+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamPatternShape (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))+        ) `HappyStk` happyRest}}}}++happyReduce_111 = happyReduce 5# 26# happyReduction_111+happyReduction_111 (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 { happy_var_1 -> +        case happyOut71 happy_x_2 of { (HappyWrap71 happy_var_2) -> +        case happyOut84 happy_x_3 of { (HappyWrap84 happy_var_3) -> +        case happyOut93 happy_x_4 of { (HappyWrap93 happy_var_4) -> +        happyIn74+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamPatternModalType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4))+        ) `HappyStk` happyRest}}}}++happyReduce_112 = happyReduce 7# 26# happyReduction_112+happyReduction_112 (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 { happy_var_1 -> +        case happyOut71 happy_x_2 of { (HappyWrap71 happy_var_2) -> +        case happyOut84 happy_x_3 of { (HappyWrap84 happy_var_3) -> +        case happyOut93 happy_x_4 of { (HappyWrap93 happy_var_4) -> +        case happyOut93 happy_x_6 of { (HappyWrap93 happy_var_6) -> +        happyIn74+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamPatternModalShape (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6))+        ) `HappyStk` happyRest}}}}}++happyReduce_113 = happySpecReduce_1  27# happyReduction_113+happyReduction_113 happy_x_1+         =  case happyOut74 happy_x_1 of { (HappyWrap74 happy_var_1) -> +        happyIn75+                 ((fst happy_var_1, (:[]) (snd happy_var_1))+        )}++happyReduce_114 = happySpecReduce_2  27# happyReduction_114+happyReduction_114 happy_x_2+        happy_x_1+         =  case happyOut74 happy_x_1 of { (HappyWrap74 happy_var_1) -> +        case happyOut75 happy_x_2 of { (HappyWrap75 happy_var_2) -> +        happyIn75+                 ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_2))+        )}}++happyReduce_115 = happySpecReduce_1  28# happyReduction_115+happyReduction_115 happy_x_1+         =  case happyOut70 happy_x_1 of { (HappyWrap70 happy_var_1) -> +        happyIn76+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.BindPattern (fst happy_var_1) (snd happy_var_1))+        )}++happyReduce_116 = happySpecReduce_3  28# happyReduction_116+happyReduction_116 happy_x_3+        happy_x_2+        happy_x_1+         =  case happyOut70 happy_x_1 of { (HappyWrap70 happy_var_1) -> +        case happyOut93 happy_x_3 of { (HappyWrap93 happy_var_3) -> +        happyIn76+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.BindPatternType (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+        )}}++happyReduce_117 = happySpecReduce_1  29# happyReduction_117+happyReduction_117 happy_x_1+         =  case happyOut90 happy_x_1 of { (HappyWrap90 happy_var_1) -> +        happyIn77+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.ParamType (fst happy_var_1) (snd happy_var_1))+        )}++happyReduce_118 = happyReduce 5# 29# happyReduction_118+happyReduction_118 (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 { happy_var_1 -> +        case happyOut93 happy_x_2 of { (HappyWrap93 happy_var_2) -> +        case happyOut93 happy_x_4 of { (HappyWrap93 happy_var_4) -> +        happyIn77+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamTermType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))+        ) `HappyStk` happyRest}}}++happyReduce_119 = happyReduce 7# 29# happyReduction_119+happyReduction_119 (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 { happy_var_1 -> +        case happyOut93 happy_x_2 of { (HappyWrap93 happy_var_2) -> +        case happyOut93 happy_x_4 of { (HappyWrap93 happy_var_4) -> +        case happyOut93 happy_x_6 of { (HappyWrap93 happy_var_6) -> +        happyIn77+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamTermShape (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))+        ) `HappyStk` happyRest}}}}++happyReduce_120 = happyReduce 5# 29# happyReduction_120+happyReduction_120 (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 { happy_var_1 -> +        case happyOut93 happy_x_2 of { (HappyWrap93 happy_var_2) -> +        case happyOut84 happy_x_3 of { (HappyWrap84 happy_var_3) -> +        case happyOut93 happy_x_4 of { (HappyWrap93 happy_var_4) -> +        happyIn77+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamTermModalType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4))+        ) `HappyStk` happyRest}}}}++happyReduce_121 = happyReduce 7# 29# happyReduction_121+happyReduction_121 (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 { happy_var_1 -> +        case happyOut93 happy_x_2 of { (HappyWrap93 happy_var_2) -> +        case happyOut84 happy_x_3 of { (HappyWrap84 happy_var_3) -> +        case happyOut93 happy_x_4 of { (HappyWrap93 happy_var_4) -> +        case happyOut93 happy_x_6 of { (HappyWrap93 happy_var_6) -> +        happyIn77+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamTermModalShape (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6))+        ) `HappyStk` happyRest}}}}}++happyReduce_122 = happySpecReduce_3  30# happyReduction_122+happyReduction_122 happy_x_3+        happy_x_2+        happy_x_1+         =  case happyOut70 happy_x_1 of { (HappyWrap70 happy_var_1) -> +        case happyOut93 happy_x_3 of { (HappyWrap93 happy_var_3) -> +        happyIn78+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.SigmaParam (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+        )}}++happyReduce_123 = happySpecReduce_3  30# happyReduction_123+happyReduction_123 happy_x_3+        happy_x_2+        happy_x_1+         =  case happyOut70 happy_x_1 of { (HappyWrap70 happy_var_1) -> +        case happyOut84 happy_x_2 of { (HappyWrap84 happy_var_2) -> +        case happyOut93 happy_x_3 of { (HappyWrap93 happy_var_3) -> +        happyIn78+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.SigmaParamModal (fst happy_var_1) (snd happy_var_1) (snd happy_var_2) (snd happy_var_3))+        )}}}++happyReduce_124 = happySpecReduce_1  31# happyReduction_124+happyReduction_124 happy_x_1+         =  case happyOut78 happy_x_1 of { (HappyWrap78 happy_var_1) -> +        happyIn79+                 ((fst happy_var_1, (:[]) (snd happy_var_1))+        )}++happyReduce_125 = happySpecReduce_3  31# happyReduction_125+happyReduction_125 happy_x_3+        happy_x_2+        happy_x_1+         =  case happyOut78 happy_x_1 of { (HappyWrap78 happy_var_1) -> +        case happyOut79 happy_x_3 of { (HappyWrap79 happy_var_3) -> +        happyIn79+                 ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))+        )}}++happyReduce_126 = happySpecReduce_3  32# happyReduction_126+happyReduction_126 happy_x_3+        happy_x_2+        happy_x_1+         =  case happyOut93 happy_x_1 of { (HappyWrap93 happy_var_1) -> +        case happyOut93 happy_x_3 of { (HappyWrap93 happy_var_3) -> +        happyIn80+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.Restriction (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+        )}}++happyReduce_127 = happySpecReduce_3  32# happyReduction_127+happyReduction_127 happy_x_3+        happy_x_2+        happy_x_1+         =  case happyOut93 happy_x_1 of { (HappyWrap93 happy_var_1) -> +        case happyOut93 happy_x_3 of { (HappyWrap93 happy_var_3) -> +        happyIn80+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_Restriction (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+        )}}++happyReduce_128 = happySpecReduce_1  33# happyReduction_128+happyReduction_128 happy_x_1+         =  case happyOut80 happy_x_1 of { (HappyWrap80 happy_var_1) -> +        happyIn81+                 ((fst happy_var_1, (:[]) (snd happy_var_1))+        )}++happyReduce_129 = happySpecReduce_3  33# happyReduction_129+happyReduction_129 happy_x_3+        happy_x_2+        happy_x_1+         =  case happyOut80 happy_x_1 of { (HappyWrap80 happy_var_1) -> +        case happyOut81 happy_x_3 of { (HappyWrap81 happy_var_3) -> +        happyIn81+                 ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))+        )}}++happyReduce_130 = happySpecReduce_1  34# happyReduction_130+happyReduction_130 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn82+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Flat (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+        )}++happyReduce_131 = happySpecReduce_1  34# happyReduction_131+happyReduction_131 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn82+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Flat (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+        )}++happyReduce_132 = happySpecReduce_1  34# happyReduction_132+happyReduction_132 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn82+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Sharp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+        )}++happyReduce_133 = happySpecReduce_1  34# happyReduction_133+happyReduction_133 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn82+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Sharp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+        )}++happyReduce_134 = happySpecReduce_1  34# happyReduction_134+happyReduction_134 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn82+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Op (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+        )}++happyReduce_135 = happySpecReduce_1  34# happyReduction_135+happyReduction_135 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn82+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Op (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+        )}++happyReduce_136 = happySpecReduce_1  34# happyReduction_136+happyReduction_136 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn82+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Id (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+        )}++happyReduce_137 = happySpecReduce_1  35# happyReduction_137+happyReduction_137 happy_x_1+         =  case happyOut82 happy_x_1 of { (HappyWrap82 happy_var_1) -> +        happyIn83+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.Single (fst happy_var_1) (snd happy_var_1))+        )}++happyReduce_138 = happySpecReduce_3  35# happyReduction_138+happyReduction_138 happy_x_3+        happy_x_2+        happy_x_1+         =  case happyOut82 happy_x_1 of { (HappyWrap82 happy_var_1) -> +        case happyOut82 happy_x_3 of { (HappyWrap82 happy_var_3) -> +        happyIn83+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.Comp (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+        )}}++happyReduce_139 = happySpecReduce_1  36# happyReduction_139+happyReduction_139 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn84+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ModalColonFlat (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+        )}++happyReduce_140 = happySpecReduce_1  36# happyReduction_140+happyReduction_140 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn84+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ModalColonSharp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+        )}++happyReduce_141 = happySpecReduce_1  36# happyReduction_141+happyReduction_141 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn84+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ModalColonOp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+        )}++happyReduce_142 = happySpecReduce_1  36# happyReduction_142+happyReduction_142 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn84+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ModalColonId (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+        )}++happyReduce_143 = happySpecReduce_1  36# happyReduction_143+happyReduction_143 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn84+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_ModalColonFlat (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+        )}++happyReduce_144 = happySpecReduce_1  36# happyReduction_144+happyReduction_144 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn84+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_ModalColonSharp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+        )}++happyReduce_145 = happySpecReduce_1  36# happyReduction_145+happyReduction_145 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn84+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_ModalColonOp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+        )}++happyReduce_146 = happySpecReduce_1  37# happyReduction_146+happyReduction_146 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn85+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Universe (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+        )}++happyReduce_147 = happySpecReduce_1  37# happyReduction_147+happyReduction_147 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn85+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.UniverseCube (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+        )}++happyReduce_148 = happySpecReduce_1  37# happyReduction_148+happyReduction_148 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn85+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.UniverseTope (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+        )}++happyReduce_149 = happySpecReduce_1  37# happyReduction_149+happyReduction_149 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn85+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeUnit (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+        )}++happyReduce_150 = happySpecReduce_1  37# happyReduction_150+happyReduction_150 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn85+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeUnitStar (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+        )}++happyReduce_151 = happySpecReduce_1  37# happyReduction_151+happyReduction_151 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn85+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Cube2 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+        )}++happyReduce_152 = happySpecReduce_1  37# happyReduction_152+happyReduction_152 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn85+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Cube2_0 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+        )}++happyReduce_153 = happySpecReduce_1  37# happyReduction_153+happyReduction_153 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn85+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Cube2_1 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+        )}++happyReduce_154 = happySpecReduce_1  37# happyReduction_154+happyReduction_154 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn85+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeI (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+        )}++happyReduce_155 = happySpecReduce_1  37# happyReduction_155+happyReduction_155 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn85+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeI_0 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+        )}++happyReduce_156 = happySpecReduce_1  37# happyReduction_156+happyReduction_156 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn85+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeI_1 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+        )}++happyReduce_157 = happySpecReduce_1  37# happyReduction_157+happyReduction_157 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn85+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TopeTop (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+        )}++happyReduce_158 = happySpecReduce_1  37# happyReduction_158+happyReduction_158 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn85+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TopeBottom (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+        )}++happyReduce_159 = happySpecReduce_1  37# happyReduction_159+happyReduction_159 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn85+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.RecBottom (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+        )}++happyReduce_160 = happyReduce 4# 37# happyReduction_160+happyReduction_160 (happy_x_4 `HappyStk`+        happy_x_3 `HappyStk`+        happy_x_2 `HappyStk`+        happy_x_1 `HappyStk`+        happyRest)+         = case happyOutTok happy_x_1 of { happy_var_1 -> +        case happyOut81 happy_x_3 of { (HappyWrap81 happy_var_3) -> +        happyIn85+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.RecOr (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3))+        ) `HappyStk` happyRest}}++happyReduce_161 = happySpecReduce_1  37# happyReduction_161+happyReduction_161 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn85+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TypeUnit (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+        )}++happyReduce_162 = happyReduce 5# 37# happyReduction_162+happyReduction_162 (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 { happy_var_1 -> +        case happyOut93 happy_x_2 of { (HappyWrap93 happy_var_2) -> +        case happyOut93 happy_x_4 of { (HappyWrap93 happy_var_4) -> +        happyIn85+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Pair (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))+        ) `HappyStk` happyRest}}}++happyReduce_163 = happyReduce 7# 37# happyReduction_163+happyReduction_163 (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 { happy_var_1 -> +        case happyOut93 happy_x_2 of { (HappyWrap93 happy_var_2) -> +        case happyOut93 happy_x_4 of { (HappyWrap93 happy_var_4) -> +        case happyOut94 happy_x_6 of { (HappyWrap94 happy_var_6) -> +        happyIn85+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Tuple (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))+        ) `HappyStk` happyRest}}}}++happyReduce_164 = happySpecReduce_1  37# happyReduction_164+happyReduction_164 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn85+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Unit (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+        )}++happyReduce_165 = happySpecReduce_1  37# happyReduction_165+happyReduction_165 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn85+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Refl (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+        )}++happyReduce_166 = happySpecReduce_3  37# happyReduction_166+happyReduction_166 happy_x_3+        happy_x_2+        happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        case happyOut93 happy_x_2 of { (HappyWrap93 happy_var_2) -> +        happyIn85+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ReflTerm (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+        )}}++happyReduce_167 = happyReduce 5# 37# happyReduction_167+happyReduction_167 (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 { happy_var_1 -> +        case happyOut93 happy_x_2 of { (HappyWrap93 happy_var_2) -> +        case happyOut93 happy_x_4 of { (HappyWrap93 happy_var_4) -> +        happyIn85+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ReflTermType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))+        ) `HappyStk` happyRest}}}++happyReduce_168 = happyReduce 14# 37# happyReduction_168+happyReduction_168 (happy_x_14 `HappyStk`+        happy_x_13 `HappyStk`+        happy_x_12 `HappyStk`+        happy_x_11 `HappyStk`+        happy_x_10 `HappyStk`+        happy_x_9 `HappyStk`+        happy_x_8 `HappyStk`+        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 { happy_var_1 -> +        case happyOut93 happy_x_3 of { (HappyWrap93 happy_var_3) -> +        case happyOut93 happy_x_5 of { (HappyWrap93 happy_var_5) -> +        case happyOut93 happy_x_7 of { (HappyWrap93 happy_var_7) -> +        case happyOut93 happy_x_9 of { (HappyWrap93 happy_var_9) -> +        case happyOut93 happy_x_11 of { (HappyWrap93 happy_var_11) -> +        case happyOut93 happy_x_13 of { (HappyWrap93 happy_var_13) -> +        happyIn85+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.IdJ (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_7) (snd happy_var_9) (snd happy_var_11) (snd happy_var_13))+        ) `HappyStk` happyRest}}}}}}}++happyReduce_169 = happySpecReduce_1  37# happyReduction_169+happyReduction_169 happy_x_1+         =  case happyOut52 happy_x_1 of { (HappyWrap52 happy_var_1) -> +        happyIn85+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.Hole (fst happy_var_1) (snd happy_var_1))+        )}++happyReduce_170 = happySpecReduce_1  37# happyReduction_170+happyReduction_170 happy_x_1+         =  case happyOut53 happy_x_1 of { (HappyWrap53 happy_var_1) -> +        happyIn85+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.Var (fst happy_var_1) (snd happy_var_1))+        )}++happyReduce_171 = happySpecReduce_3  37# happyReduction_171+happyReduction_171 happy_x_3+        happy_x_2+        happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        case happyOut93 happy_x_2 of { (HappyWrap93 happy_var_2) -> +        happyIn85+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), (snd happy_var_2))+        )}}++happyReduce_172 = happySpecReduce_1  37# happyReduction_172+happyReduction_172 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn85+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_CubeUnitStar (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+        )}++happyReduce_173 = happySpecReduce_1  37# happyReduction_173+happyReduction_173 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn85+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Cube2_0 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+        )}++happyReduce_174 = happySpecReduce_1  37# happyReduction_174+happyReduction_174 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn85+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Cube2_1 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+        )}++happyReduce_175 = happySpecReduce_1  37# happyReduction_175+happyReduction_175 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn85+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_CubeI (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+        )}++happyReduce_176 = happySpecReduce_1  37# happyReduction_176+happyReduction_176 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn85+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_CubeI_0 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+        )}++happyReduce_177 = happySpecReduce_1  37# happyReduction_177+happyReduction_177 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn85+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_CubeI_1 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+        )}++happyReduce_178 = happySpecReduce_1  37# happyReduction_178+happyReduction_178 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn85+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_TopeTop (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+        )}++happyReduce_179 = happySpecReduce_1  37# happyReduction_179+happyReduction_179 happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        happyIn85+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_TopeBottom (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+        )}++happyReduce_180 = happySpecReduce_3  38# happyReduction_180+happyReduction_180 happy_x_3+        happy_x_2+        happy_x_1+         =  case happyOut86 happy_x_1 of { (HappyWrap86 happy_var_1) -> +        case happyOut90 happy_x_3 of { (HappyWrap90 happy_var_3) -> +        happyIn86+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.CubeProduct (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+        )}}++happyReduce_181 = happySpecReduce_3  38# happyReduction_181+happyReduction_181 happy_x_3+        happy_x_2+        happy_x_1+         =  case happyOut86 happy_x_1 of { (HappyWrap86 happy_var_1) -> +        case happyOut90 happy_x_3 of { (HappyWrap90 happy_var_3) -> +        happyIn86+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.CubeSup (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+        )}}++happyReduce_182 = happySpecReduce_3  38# happyReduction_182+happyReduction_182 happy_x_3+        happy_x_2+        happy_x_1+         =  case happyOut86 happy_x_1 of { (HappyWrap86 happy_var_1) -> +        case happyOut90 happy_x_3 of { (HappyWrap90 happy_var_3) -> +        happyIn86+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.CubeInf (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+        )}}++happyReduce_183 = happySpecReduce_1  38# happyReduction_183+happyReduction_183 happy_x_1+         =  case happyOut90 happy_x_1 of { (HappyWrap90 happy_var_1) -> +        happyIn86+                 ((fst happy_var_1, (snd happy_var_1))+        )}++happyReduce_184 = happySpecReduce_3  38# happyReduction_184+happyReduction_184 happy_x_3+        happy_x_2+        happy_x_1+         =  case happyOut86 happy_x_1 of { (HappyWrap86 happy_var_1) -> +        case happyOut90 happy_x_3 of { (HappyWrap90 happy_var_3) -> +        happyIn86+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.ascii_CubeProduct (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+        )}}++happyReduce_185 = happySpecReduce_3  39# happyReduction_185+happyReduction_185 happy_x_3+        happy_x_2+        happy_x_1+         =  case happyOut86 happy_x_1 of { (HappyWrap86 happy_var_1) -> +        case happyOut86 happy_x_3 of { (HappyWrap86 happy_var_3) -> +        happyIn87+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.TopeEQ (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+        )}}++happyReduce_186 = happySpecReduce_3  39# happyReduction_186+happyReduction_186 happy_x_3+        happy_x_2+        happy_x_1+         =  case happyOut86 happy_x_1 of { (HappyWrap86 happy_var_1) -> +        case happyOut86 happy_x_3 of { (HappyWrap86 happy_var_3) -> +        happyIn87+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.TopeLEQ (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+        )}}++happyReduce_187 = happySpecReduce_1  39# happyReduction_187+happyReduction_187 happy_x_1+         =  case happyOut86 happy_x_1 of { (HappyWrap86 happy_var_1) -> +        happyIn87+                 ((fst happy_var_1, (snd happy_var_1))+        )}++happyReduce_188 = happySpecReduce_3  39# happyReduction_188+happyReduction_188 happy_x_3+        happy_x_2+        happy_x_1+         =  case happyOut86 happy_x_1 of { (HappyWrap86 happy_var_1) -> +        case happyOut86 happy_x_3 of { (HappyWrap86 happy_var_3) -> +        happyIn87+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_TopeEQ (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+        )}}++happyReduce_189 = happySpecReduce_3  39# happyReduction_189+happyReduction_189 happy_x_3+        happy_x_2+        happy_x_1+         =  case happyOut86 happy_x_1 of { (HappyWrap86 happy_var_1) -> +        case happyOut86 happy_x_3 of { (HappyWrap86 happy_var_3) -> +        happyIn87+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_TopeLEQ (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+        )}}++happyReduce_190 = happySpecReduce_3  40# happyReduction_190+happyReduction_190 happy_x_3+        happy_x_2+        happy_x_1+         =  case happyOut87 happy_x_1 of { (HappyWrap87 happy_var_1) -> +        case happyOut88 happy_x_3 of { (HappyWrap88 happy_var_3) -> +        happyIn88+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.TopeAnd (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+        )}}++happyReduce_191 = happySpecReduce_1  40# happyReduction_191+happyReduction_191 happy_x_1+         =  case happyOut87 happy_x_1 of { (HappyWrap87 happy_var_1) -> +        happyIn88+                 ((fst happy_var_1, (snd happy_var_1))+        )}++happyReduce_192 = happySpecReduce_3  40# happyReduction_192+happyReduction_192 happy_x_3+        happy_x_2+        happy_x_1+         =  case happyOut87 happy_x_1 of { (HappyWrap87 happy_var_1) -> +        case happyOut88 happy_x_3 of { (HappyWrap88 happy_var_3) -> +        happyIn88+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_TopeAnd (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+        )}}++happyReduce_193 = happySpecReduce_3  41# happyReduction_193+happyReduction_193 happy_x_3+        happy_x_2+        happy_x_1+         =  case happyOut88 happy_x_1 of { (HappyWrap88 happy_var_1) -> +        case happyOut89 happy_x_3 of { (HappyWrap89 happy_var_3) -> +        happyIn89+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.TopeOr (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+        )}}++happyReduce_194 = happySpecReduce_1  41# happyReduction_194+happyReduction_194 happy_x_1+         =  case happyOut88 happy_x_1 of { (HappyWrap88 happy_var_1) -> +        happyIn89+                 ((fst happy_var_1, (snd happy_var_1))+        )}++happyReduce_195 = happySpecReduce_3  41# happyReduction_195+happyReduction_195 happy_x_3+        happy_x_2+        happy_x_1+         =  case happyOut88 happy_x_1 of { (HappyWrap88 happy_var_1) -> +        case happyOut89 happy_x_3 of { (HappyWrap89 happy_var_3) -> +        happyIn89+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_TopeOr (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+        )}}++happyReduce_196 = happySpecReduce_2  42# happyReduction_196+happyReduction_196 happy_x_2+        happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        case happyOut92 happy_x_2 of { (HappyWrap92 happy_var_2) -> +        happyIn90+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TopeInv (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+        )}}++happyReduce_197 = happySpecReduce_2  42# happyReduction_197+happyReduction_197 happy_x_2+        happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        case happyOut92 happy_x_2 of { (HappyWrap92 happy_var_2) -> +        happyIn90+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ascii_TopeInv (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+        )}}++happyReduce_198 = happySpecReduce_2  42# happyReduction_198+happyReduction_198 happy_x_2+        happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        case happyOut92 happy_x_2 of { (HappyWrap92 happy_var_2) -> +        happyIn90+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TopeUninv (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+        )}}++happyReduce_199 = happySpecReduce_2  42# happyReduction_199+happyReduction_199 happy_x_2+        happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        case happyOut92 happy_x_2 of { (HappyWrap92 happy_var_2) -> +        happyIn90+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ascii_TopeUninv (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+        )}}++happyReduce_200 = happySpecReduce_2  42# happyReduction_200+happyReduction_200 happy_x_2+        happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        case happyOut92 happy_x_2 of { (HappyWrap92 happy_var_2) -> +        happyIn90+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeFlip (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+        )}}++happyReduce_201 = happySpecReduce_2  42# happyReduction_201+happyReduction_201 happy_x_2+        happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        case happyOut92 happy_x_2 of { (HappyWrap92 happy_var_2) -> +        happyIn90+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ascii_CubeFlip (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+        )}}++happyReduce_202 = happySpecReduce_2  42# happyReduction_202+happyReduction_202 happy_x_2+        happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        case happyOut92 happy_x_2 of { (HappyWrap92 happy_var_2) -> +        happyIn90+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeUnflip (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+        )}}++happyReduce_203 = happySpecReduce_2  42# happyReduction_203+happyReduction_203 happy_x_2+        happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        case happyOut92 happy_x_2 of { (HappyWrap92 happy_var_2) -> +        happyIn90+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ascii_CubeUnflip (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+        )}}++happyReduce_204 = happyReduce 4# 42# happyReduction_204+happyReduction_204 (happy_x_4 `HappyStk`+        happy_x_3 `HappyStk`+        happy_x_2 `HappyStk`+        happy_x_1 `HappyStk`+        happyRest)+         = case happyOut90 happy_x_1 of { (HappyWrap90 happy_var_1) -> +        case happyOut81 happy_x_3 of { (HappyWrap81 happy_var_3) -> +        happyIn90+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.TypeRestricted (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+        ) `HappyStk` happyRest}}++happyReduce_205 = happySpecReduce_2  42# happyReduction_205+happyReduction_205 happy_x_2+        happy_x_1+         =  case happyOut90 happy_x_1 of { (HappyWrap90 happy_var_1) -> +        case happyOut92 happy_x_2 of { (HappyWrap92 happy_var_2) -> +        happyIn90+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.App (fst happy_var_1) (snd happy_var_1) (snd happy_var_2))+        )}}++happyReduce_206 = happySpecReduce_3  42# happyReduction_206+happyReduction_206 happy_x_3+        happy_x_2+        happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        case happyOut83 happy_x_2 of { (HappyWrap83 happy_var_2) -> +        case happyOut92 happy_x_3 of { (HappyWrap92 happy_var_3) -> +        happyIn90+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ModExtract (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3))+        )}}}++happyReduce_207 = happySpecReduce_2  42# happyReduction_207+happyReduction_207 happy_x_2+        happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        case happyOut92 happy_x_2 of { (HappyWrap92 happy_var_2) -> +        happyIn90+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.First (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+        )}}++happyReduce_208 = happySpecReduce_2  42# happyReduction_208+happyReduction_208 happy_x_2+        happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        case happyOut92 happy_x_2 of { (HappyWrap92 happy_var_2) -> +        happyIn90+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Second (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+        )}}++happyReduce_209 = happySpecReduce_1  42# happyReduction_209+happyReduction_209 happy_x_1+         =  case happyOut92 happy_x_1 of { (HappyWrap92 happy_var_1) -> +        happyIn90+                 ((fst happy_var_1, (snd happy_var_1))+        )}++happyReduce_210 = happySpecReduce_3  42# happyReduction_210+happyReduction_210 happy_x_3+        happy_x_2+        happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        case happyOut92 happy_x_2 of { (HappyWrap92 happy_var_2) -> +        case happyOut92 happy_x_3 of { (HappyWrap92 happy_var_3) -> +        happyIn90+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ascii_CubeSup (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3))+        )}}}++happyReduce_211 = happySpecReduce_3  42# happyReduction_211+happyReduction_211 happy_x_3+        happy_x_2+        happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        case happyOut92 happy_x_2 of { (HappyWrap92 happy_var_2) -> +        case happyOut92 happy_x_3 of { (HappyWrap92 happy_var_3) -> +        happyIn90+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ascii_CubeInf (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3))+        )}}}++happyReduce_212 = happySpecReduce_2  42# happyReduction_212+happyReduction_212 happy_x_2+        happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        case happyOut92 happy_x_2 of { (HappyWrap92 happy_var_2) -> +        happyIn90+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_First (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+        )}}++happyReduce_213 = happySpecReduce_2  42# happyReduction_213+happyReduction_213 happy_x_2+        happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        case happyOut92 happy_x_2 of { (HappyWrap92 happy_var_2) -> +        happyIn90+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Second (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+        )}}++happyReduce_214 = happySpecReduce_3  43# happyReduction_214+happyReduction_214 happy_x_3+        happy_x_2+        happy_x_1+         =  case happyOut77 happy_x_1 of { (HappyWrap77 happy_var_1) -> +        case happyOut91 happy_x_3 of { (HappyWrap91 happy_var_3) -> +        happyIn91+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.TypeFun (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+        )}}++happyReduce_215 = happyReduce 8# 43# happyReduction_215+happyReduction_215 (happy_x_8 `HappyStk`+        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 { happy_var_1 -> +        case happyOut70 happy_x_3 of { (HappyWrap70 happy_var_3) -> +        case happyOut93 happy_x_5 of { (HappyWrap93 happy_var_5) -> +        case happyOut91 happy_x_8 of { (HappyWrap91 happy_var_8) -> +        happyIn91+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TypeSigma (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))+        ) `HappyStk` happyRest}}}}++happyReduce_216 = happyReduce 8# 43# happyReduction_216+happyReduction_216 (happy_x_8 `HappyStk`+        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 { happy_var_1 -> +        case happyOut70 happy_x_3 of { (HappyWrap70 happy_var_3) -> +        case happyOut84 happy_x_4 of { (HappyWrap84 happy_var_4) -> +        case happyOut93 happy_x_5 of { (HappyWrap93 happy_var_5) -> +        case happyOut91 happy_x_8 of { (HappyWrap91 happy_var_8) -> +        happyIn91+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TypeSigmaModal (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_4) (snd happy_var_5) (snd happy_var_8))+        ) `HappyStk` happyRest}}}}}++happyReduce_217 = happyReduce 8# 43# happyReduction_217+happyReduction_217 (happy_x_8 `HappyStk`+        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 { happy_var_1 -> +        case happyOut78 happy_x_3 of { (HappyWrap78 happy_var_3) -> +        case happyOut79 happy_x_5 of { (HappyWrap79 happy_var_5) -> +        case happyOut91 happy_x_8 of { (HappyWrap91 happy_var_8) -> +        happyIn91+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TypeSigmaTuple (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))+        ) `HappyStk` happyRest}}}}++happyReduce_218 = happyReduce 5# 43# happyReduction_218+happyReduction_218 (happy_x_5 `HappyStk`+        happy_x_4 `HappyStk`+        happy_x_3 `HappyStk`+        happy_x_2 `HappyStk`+        happy_x_1 `HappyStk`+        happyRest)+         = case happyOut89 happy_x_1 of { (HappyWrap89 happy_var_1) -> +        case happyOut93 happy_x_3 of { (HappyWrap93 happy_var_3) -> +        case happyOut89 happy_x_5 of { (HappyWrap89 happy_var_5) -> +        happyIn91+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.TypeId (fst happy_var_1) (snd happy_var_1) (snd happy_var_3) (snd happy_var_5))+        ) `HappyStk` happyRest}}}++happyReduce_219 = happySpecReduce_3  43# happyReduction_219+happyReduction_219 happy_x_3+        happy_x_2+        happy_x_1+         =  case happyOut89 happy_x_1 of { (HappyWrap89 happy_var_1) -> +        case happyOut89 happy_x_3 of { (HappyWrap89 happy_var_3) -> +        happyIn91+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.TypeIdSimple (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+        )}}++happyReduce_220 = happyReduce 6# 43# happyReduction_220+happyReduction_220 (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 { happy_var_1 -> +        case happyOut76 happy_x_2 of { (HappyWrap76 happy_var_2) -> +        case happyOut93 happy_x_4 of { (HappyWrap93 happy_var_4) -> +        case happyOut93 happy_x_6 of { (HappyWrap93 happy_var_6) -> +        happyIn91+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Let (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))+        ) `HappyStk` happyRest}}}}++happyReduce_221 = happyReduce 4# 43# happyReduction_221+happyReduction_221 (happy_x_4 `HappyStk`+        happy_x_3 `HappyStk`+        happy_x_2 `HappyStk`+        happy_x_1 `HappyStk`+        happyRest)+         = case happyOutTok happy_x_1 of { happy_var_1 -> +        case happyOut75 happy_x_2 of { (HappyWrap75 happy_var_2) -> +        case happyOut91 happy_x_4 of { (HappyWrap91 happy_var_4) -> +        happyIn91+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Lambda (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))+        ) `HappyStk` happyRest}}}++happyReduce_222 = happyReduce 7# 43# happyReduction_222+happyReduction_222 (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 { happy_var_1 -> +        case happyOut82 happy_x_2 of { (HappyWrap82 happy_var_2) -> +        case happyOut76 happy_x_3 of { (HappyWrap76 happy_var_3) -> +        case happyOut93 happy_x_5 of { (HappyWrap93 happy_var_5) -> +        case happyOut93 happy_x_7 of { (HappyWrap93 happy_var_7) -> +        happyIn91+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.LetModBind (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_5) (snd happy_var_7))+        ) `HappyStk` happyRest}}}}}++happyReduce_223 = happyReduce 8# 43# happyReduction_223+happyReduction_223 (happy_x_8 `HappyStk`+        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 { happy_var_1 -> +        case happyOut82 happy_x_3 of { (HappyWrap82 happy_var_3) -> +        case happyOut76 happy_x_4 of { (HappyWrap76 happy_var_4) -> +        case happyOut93 happy_x_6 of { (HappyWrap93 happy_var_6) -> +        case happyOut93 happy_x_8 of { (HappyWrap93 happy_var_8) -> +        happyIn91+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.LetMod (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6) (snd happy_var_8))+        ) `HappyStk` happyRest}}}}}++happyReduce_224 = happyReduce 9# 43# happyReduction_224+happyReduction_224 (happy_x_9 `HappyStk`+        happy_x_8 `HappyStk`+        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 { happy_var_1 -> +        case happyOut82 happy_x_2 of { (HappyWrap82 happy_var_2) -> +        case happyOut82 happy_x_4 of { (HappyWrap82 happy_var_4) -> +        case happyOut76 happy_x_5 of { (HappyWrap76 happy_var_5) -> +        case happyOut93 happy_x_7 of { (HappyWrap93 happy_var_7) -> +        case happyOut93 happy_x_9 of { (HappyWrap93 happy_var_9) -> +        happyIn91+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.LetModFramed (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_5) (snd happy_var_7) (snd happy_var_9))+        ) `HappyStk` happyRest}}}}}}++happyReduce_225 = happyReduce 9# 43# happyReduction_225+happyReduction_225 (happy_x_9 `HappyStk`+        happy_x_8 `HappyStk`+        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 { happy_var_1 -> +        case happyOut82 happy_x_2 of { (HappyWrap82 happy_var_2) -> +        case happyOut76 happy_x_3 of { (HappyWrap76 happy_var_3) -> +        case happyOut93 happy_x_5 of { (HappyWrap93 happy_var_5) -> +        case happyOut93 happy_x_7 of { (HappyWrap93 happy_var_7) -> +        case happyOut93 happy_x_9 of { (HappyWrap93 happy_var_9) -> +        happyIn91+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.LetModBindInto (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_5) (snd happy_var_7) (snd happy_var_9))+        ) `HappyStk` happyRest}}}}}}++happyReduce_226 = happyReduce 10# 43# happyReduction_226+happyReduction_226 (happy_x_10 `HappyStk`+        happy_x_9 `HappyStk`+        happy_x_8 `HappyStk`+        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 { happy_var_1 -> +        case happyOut82 happy_x_3 of { (HappyWrap82 happy_var_3) -> +        case happyOut76 happy_x_4 of { (HappyWrap76 happy_var_4) -> +        case happyOut93 happy_x_6 of { (HappyWrap93 happy_var_6) -> +        case happyOut93 happy_x_8 of { (HappyWrap93 happy_var_8) -> +        case happyOut93 happy_x_10 of { (HappyWrap93 happy_var_10) -> +        happyIn91+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.LetModInto (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6) (snd happy_var_8) (snd happy_var_10))+        ) `HappyStk` happyRest}}}}}}++happyReduce_227 = happyReduce 11# 43# happyReduction_227+happyReduction_227 (happy_x_11 `HappyStk`+        happy_x_10 `HappyStk`+        happy_x_9 `HappyStk`+        happy_x_8 `HappyStk`+        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 { happy_var_1 -> +        case happyOut82 happy_x_2 of { (HappyWrap82 happy_var_2) -> +        case happyOut82 happy_x_4 of { (HappyWrap82 happy_var_4) -> +        case happyOut76 happy_x_5 of { (HappyWrap76 happy_var_5) -> +        case happyOut93 happy_x_7 of { (HappyWrap93 happy_var_7) -> +        case happyOut93 happy_x_9 of { (HappyWrap93 happy_var_9) -> +        case happyOut93 happy_x_11 of { (HappyWrap93 happy_var_11) -> +        happyIn91+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.LetModFramedInto (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_5) (snd happy_var_7) (snd happy_var_9) (snd happy_var_11))+        ) `HappyStk` happyRest}}}}}}}++happyReduce_228 = happySpecReduce_1  43# happyReduction_228+happyReduction_228 happy_x_1+         =  case happyOut89 happy_x_1 of { (HappyWrap89 happy_var_1) -> +        happyIn91+                 ((fst happy_var_1, (snd happy_var_1))+        )}++happyReduce_229 = happySpecReduce_3  43# happyReduction_229+happyReduction_229 happy_x_3+        happy_x_2+        happy_x_1+         =  case happyOut77 happy_x_1 of { (HappyWrap77 happy_var_1) -> +        case happyOut91 happy_x_3 of { (HappyWrap91 happy_var_3) -> +        happyIn91+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_TypeFun (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+        )}}++happyReduce_230 = happyReduce 8# 43# happyReduction_230+happyReduction_230 (happy_x_8 `HappyStk`+        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 { happy_var_1 -> +        case happyOut70 happy_x_3 of { (HappyWrap70 happy_var_3) -> +        case happyOut93 happy_x_5 of { (HappyWrap93 happy_var_5) -> +        case happyOut91 happy_x_8 of { (HappyWrap91 happy_var_8) -> +        happyIn91+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_TypeSigma (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))+        ) `HappyStk` happyRest}}}}++happyReduce_231 = happyReduce 8# 43# happyReduction_231+happyReduction_231 (happy_x_8 `HappyStk`+        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 { happy_var_1 -> +        case happyOut70 happy_x_3 of { (HappyWrap70 happy_var_3) -> +        case happyOut84 happy_x_4 of { (HappyWrap84 happy_var_4) -> +        case happyOut93 happy_x_5 of { (HappyWrap93 happy_var_5) -> +        case happyOut91 happy_x_8 of { (HappyWrap91 happy_var_8) -> +        happyIn91+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ascii_TypeSigmaModal (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_4) (snd happy_var_5) (snd happy_var_8))+        ) `HappyStk` happyRest}}}}}++happyReduce_232 = happyReduce 8# 43# happyReduction_232+happyReduction_232 (happy_x_8 `HappyStk`+        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 { happy_var_1 -> +        case happyOut78 happy_x_3 of { (HappyWrap78 happy_var_3) -> +        case happyOut79 happy_x_5 of { (HappyWrap79 happy_var_5) -> +        case happyOut91 happy_x_8 of { (HappyWrap91 happy_var_8) -> +        happyIn91+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_TypeSigmaTuple (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))+        ) `HappyStk` happyRest}}}}++happyReduce_233 = happyReduce 4# 43# happyReduction_233+happyReduction_233 (happy_x_4 `HappyStk`+        happy_x_3 `HappyStk`+        happy_x_2 `HappyStk`+        happy_x_1 `HappyStk`+        happyRest)+         = case happyOutTok happy_x_1 of { happy_var_1 -> +        case happyOut75 happy_x_2 of { (HappyWrap75 happy_var_2) -> +        case happyOut91 happy_x_4 of { (HappyWrap91 happy_var_4) -> +        happyIn91+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Lambda (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))+        ) `HappyStk` happyRest}}}++happyReduce_234 = happyReduce 8# 43# happyReduction_234+happyReduction_234 (happy_x_8 `HappyStk`+        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 { happy_var_1 -> +        case happyOut70 happy_x_3 of { (HappyWrap70 happy_var_3) -> +        case happyOut93 happy_x_5 of { (HappyWrap93 happy_var_5) -> +        case happyOut91 happy_x_8 of { (HappyWrap91 happy_var_8) -> +        happyIn91+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.unicode_TypeSigmaAlt (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))+        ) `HappyStk` happyRest}}}}++happyReduce_235 = happyReduce 8# 43# happyReduction_235+happyReduction_235 (happy_x_8 `HappyStk`+        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 { happy_var_1 -> +        case happyOut78 happy_x_3 of { (HappyWrap78 happy_var_3) -> +        case happyOut79 happy_x_5 of { (HappyWrap79 happy_var_5) -> +        case happyOut91 happy_x_8 of { (HappyWrap91 happy_var_8) -> +        happyIn91+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.unicode_TypeSigmaTupleAlt (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))+        ) `HappyStk` happyRest}}}}++happyReduce_236 = happySpecReduce_3  44# happyReduction_236+happyReduction_236 happy_x_3+        happy_x_2+        happy_x_1+         =  case happyOutTok happy_x_1 of { happy_var_1 -> +        case happyOut82 happy_x_2 of { (HappyWrap82 happy_var_2) -> +        case happyOut92 happy_x_3 of { (HappyWrap92 happy_var_3) -> +        happyIn92+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ModApp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3))+        )}}}++happyReduce_237 = happySpecReduce_2  44# happyReduction_237+happyReduction_237 happy_x_2+        happy_x_1+         =  case happyOut82 happy_x_1 of { (HappyWrap82 happy_var_1) -> +        case happyOut92 happy_x_2 of { (HappyWrap92 happy_var_2) -> +        happyIn92+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.ModType (fst happy_var_1) (snd happy_var_1) (snd happy_var_2))+        )}}++happyReduce_238 = happyReduce 5# 44# 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 { happy_var_1 -> +        case happyOut85 happy_x_2 of { (HappyWrap85 happy_var_2) -> +        case happyOut69 happy_x_4 of { (HappyWrap69 happy_var_4) -> +        happyIn92+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Match (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))+        ) `HappyStk` happyRest}}}++happyReduce_239 = happyReduce 7# 44# happyReduction_239+happyReduction_239 (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 { happy_var_1 -> +        case happyOut85 happy_x_2 of { (HappyWrap85 happy_var_2) -> +        case happyOut85 happy_x_4 of { (HappyWrap85 happy_var_4) -> +        case happyOut69 happy_x_6 of { (HappyWrap69 happy_var_6) -> +        happyIn92+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.MatchInto (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))+        ) `HappyStk` happyRest}}}}++happyReduce_240 = happyReduce 6# 44# happyReduction_240+happyReduction_240 (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 { happy_var_1 -> +        case happyOut82 happy_x_2 of { (HappyWrap82 happy_var_2) -> +        case happyOut85 happy_x_3 of { (HappyWrap85 happy_var_3) -> +        case happyOut69 happy_x_5 of { (HappyWrap69 happy_var_5) -> +        happyIn92+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.MatchModal (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_5))+        ) `HappyStk` happyRest}}}}++happyReduce_241 = happyReduce 8# 44# happyReduction_241+happyReduction_241 (happy_x_8 `HappyStk`+        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 { happy_var_1 -> +        case happyOut82 happy_x_2 of { (HappyWrap82 happy_var_2) -> +        case happyOut85 happy_x_3 of { (HappyWrap85 happy_var_3) -> +        case happyOut85 happy_x_5 of { (HappyWrap85 happy_var_5) -> +        case happyOut69 happy_x_7 of { (HappyWrap69 happy_var_7) -> +        happyIn92+                 ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.MatchModalInto (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_5) (snd happy_var_7))+        ) `HappyStk` happyRest}}}}}++happyReduce_242 = happySpecReduce_1  44# happyReduction_242+happyReduction_242 happy_x_1+         =  case happyOut85 happy_x_1 of { (HappyWrap85 happy_var_1) -> +        happyIn92+                 ((fst happy_var_1, (snd happy_var_1))+        )}++happyReduce_243 = happySpecReduce_3  45# happyReduction_243+happyReduction_243 happy_x_3+        happy_x_2+        happy_x_1+         =  case happyOut89 happy_x_1 of { (HappyWrap89 happy_var_1) -> +        case happyOut91 happy_x_3 of { (HappyWrap91 happy_var_3) -> +        happyIn93+                 ((fst happy_var_1, Language.Rzk.Syntax.Abs.TypeAsc (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+        )}}++happyReduce_244 = happySpecReduce_1  45# happyReduction_244+happyReduction_244 happy_x_1+         =  case happyOut91 happy_x_1 of { (HappyWrap91 happy_var_1) -> +        happyIn93+                 ((fst happy_var_1, (snd happy_var_1))+        )}++happyReduce_245 = happySpecReduce_1  46# happyReduction_245+happyReduction_245 happy_x_1+         =  case happyOut93 happy_x_1 of { (HappyWrap93 happy_var_1) -> +        happyIn94+                 ((fst happy_var_1, (:[]) (snd happy_var_1))+        )}++happyReduce_246 = happySpecReduce_3  46# happyReduction_246+happyReduction_246 happy_x_3+        happy_x_2+        happy_x_1+         =  case happyOut93 happy_x_1 of { (HappyWrap93 happy_var_1) -> +        case happyOut94 happy_x_3 of { (HappyWrap94 happy_var_3) -> +        happyIn94+                 ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))+        )}}++happyTerminalToTok term = case term of {+        PT _ (TS _ 1) -> 2#;+        PT _ (TS _ 2) -> 3#;+        PT _ (TS _ 3) -> 4#;+        PT _ (TS _ 4) -> 5#;+        PT _ (TS _ 5) -> 6#;+        PT _ (TS _ 6) -> 7#;+        PT _ (TS _ 7) -> 8#;+        PT _ (TS _ 8) -> 9#;+        PT _ (TS _ 9) -> 10#;+        PT _ (TS _ 10) -> 11#;+        PT _ (TS _ 11) -> 12#;+        PT _ (TS _ 12) -> 13#;+        PT _ (TS _ 13) -> 14#;+        PT _ (TS _ 14) -> 15#;+        PT _ (TS _ 15) -> 16#;+        PT _ (TS _ 16) -> 17#;+        PT _ (TS _ 17) -> 18#;+        PT _ (TS _ 18) -> 19#;+        PT _ (TS _ 19) -> 20#;+        PT _ (TS _ 20) -> 21#;+        PT _ (TS _ 21) -> 22#;+        PT _ (TS _ 22) -> 23#;+        PT _ (TS _ 23) -> 24#;+        PT _ (TS _ 24) -> 25#;+        PT _ (TS _ 25) -> 26#;+        PT _ (TS _ 26) -> 27#;+        PT _ (TS _ 27) -> 28#;+        PT _ (TS _ 28) -> 29#;+        PT _ (TS _ 29) -> 30#;+        PT _ (TS _ 30) -> 31#;+        PT _ (TS _ 31) -> 32#;+        PT _ (TS _ 32) -> 33#;+        PT _ (TS _ 33) -> 34#;+        PT _ (TS _ 34) -> 35#;+        PT _ (TS _ 35) -> 36#;+        PT _ (TS _ 36) -> 37#;+        PT _ (TS _ 37) -> 38#;+        PT _ (TS _ 38) -> 39#;+        PT _ (TS _ 39) -> 40#;+        PT _ (TS _ 40) -> 41#;+        PT _ (TS _ 41) -> 42#;+        PT _ (TS _ 42) -> 43#;+        PT _ (TS _ 43) -> 44#;+        PT _ (TS _ 44) -> 45#;+        PT _ (TS _ 45) -> 46#;+        PT _ (TS _ 46) -> 47#;+        PT _ (TS _ 47) -> 48#;+        PT _ (TS _ 48) -> 49#;+        PT _ (TS _ 49) -> 50#;+        PT _ (TS _ 50) -> 51#;+        PT _ (TS _ 51) -> 52#;+        PT _ (TS _ 52) -> 53#;+        PT _ (TS _ 53) -> 54#;+        PT _ (TS _ 54) -> 55#;+        PT _ (TS _ 55) -> 56#;+        PT _ (TS _ 56) -> 57#;+        PT _ (TS _ 57) -> 58#;+        PT _ (TS _ 58) -> 59#;+        PT _ (TS _ 59) -> 60#;+        PT _ (TS _ 60) -> 61#;+        PT _ (TS _ 61) -> 62#;+        PT _ (TS _ 62) -> 63#;+        PT _ (TS _ 63) -> 64#;+        PT _ (TS _ 64) -> 65#;+        PT _ (TS _ 65) -> 66#;+        PT _ (TS _ 66) -> 67#;+        PT _ (TS _ 67) -> 68#;+        PT _ (TS _ 68) -> 69#;+        PT _ (TS _ 69) -> 70#;+        PT _ (TS _ 70) -> 71#;+        PT _ (TS _ 71) -> 72#;+        PT _ (TS _ 72) -> 73#;+        PT _ (TS _ 73) -> 74#;+        PT _ (TS _ 74) -> 75#;+        PT _ (TS _ 75) -> 76#;+        PT _ (TS _ 76) -> 77#;+        PT _ (TS _ 77) -> 78#;+        PT _ (TS _ 78) -> 79#;+        PT _ (TS _ 79) -> 80#;+        PT _ (TS _ 80) -> 81#;+        PT _ (TS _ 81) -> 82#;+        PT _ (TS _ 82) -> 83#;+        PT _ (TS _ 83) -> 84#;+        PT _ (TS _ 84) -> 85#;+        PT _ (TS _ 85) -> 86#;+        PT _ (TS _ 86) -> 87#;+        PT _ (TS _ 87) -> 88#;+        PT _ (TS _ 88) -> 89#;+        PT _ (TS _ 89) -> 90#;+        PT _ (TS _ 90) -> 91#;+        PT _ (TS _ 91) -> 92#;+        PT _ (TS _ 92) -> 93#;+        PT _ (TS _ 93) -> 94#;+        PT _ (TS _ 94) -> 95#;+        PT _ (TS _ 95) -> 96#;+        PT _ (TS _ 96) -> 97#;+        PT _ (TS _ 97) -> 98#;+        PT _ (TS _ 98) -> 99#;+        PT _ (TS _ 99) -> 100#;+        PT _ (TS _ 100) -> 101#;+        PT _ (TS _ 101) -> 102#;+        PT _ (TS _ 102) -> 103#;+        PT _ (TS _ 103) -> 104#;+        PT _ (TS _ 104) -> 105#;+        PT _ (TS _ 105) -> 106#;+        PT _ (TS _ 106) -> 107#;+        PT _ (TS _ 107) -> 108#;+        PT _ (TS _ 108) -> 109#;+        PT _ (TS _ 109) -> 110#;+        PT _ (TS _ 110) -> 111#;+        PT _ (TS _ 111) -> 112#;+        PT _ (TS _ 112) -> 113#;+        PT _ (TS _ 113) -> 114#;+        PT _ (TS _ 114) -> 115#;+        PT _ (TS _ 115) -> 116#;+        PT _ (TS _ 116) -> 117#;+        PT _ (TS _ 117) -> 118#;+        PT _ (TS _ 118) -> 119#;+        PT _ (TS _ 119) -> 120#;+        PT _ (TL _) -> 121#;+        PT _ (T_VarIdentToken _) -> 122#;+        PT _ (T_HoleIdentToken _) -> 123#;+        _ -> -1#;+        }+{-# NOINLINE happyTerminalToTok #-}++happyLex kend  _kmore []       = kend notHappyAtAll []+happyLex _kend kmore  (tk:tks) = kmore (happyTerminalToTok tk) tk tks+{-# INLINE happyLex #-}++happyNewToken action sts stk = happyLex (\tk -> happyDoAction 124# notHappyAtAll action sts stk) (\i tk -> happyDoAction i tk action sts stk)++happyReport 124# tk explist resume tks = happyReport' tks explist resume+happyReport _ tk explist resume tks = happyReport' (tk:tks) explist (\tks -> resume (Happy_Prelude.tail tks))+++happyThen :: () => (Err a) -> (a -> (Err b)) -> (Err b)+happyThen = ((>>=))+happyReturn :: () => a -> (Err a)+happyReturn = (return)+happyThen1 m k tks = ((>>=)) m (\a -> k a tks)+happyFmap1 f m tks = happyThen (m tks) (\a -> happyReturn (f a))+happyReturn1 :: () => a -> b -> (Err a)+happyReturn1 = \a tks -> (return) a+happyReport' :: () => [(Token)] -> [Happy_Prelude.String] -> ([(Token)] -> (Err a)) -> (Err a)+happyReport' = (\tokens expected resume -> happyError tokens)++happyAbort :: () => [(Token)] -> (Err a)+happyAbort = Happy_Prelude.error "Called abort handler in non-resumptive parser"++pModule_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 0# tks) (\x -> happyReturn (let {(HappyWrap51 x') = happyOut51 x} in x'))++pHoleIdent_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 1# tks) (\x -> happyReturn (let {(HappyWrap52 x') = happyOut52 x} in x'))++pVarIdent_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 2# tks) (\x -> happyReturn (let {(HappyWrap53 x') = happyOut53 x} in x'))++pListVarIdent_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 3# tks) (\x -> happyReturn (let {(HappyWrap54 x') = happyOut54 x} in x'))++pLanguageDecl_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 4# tks) (\x -> happyReturn (let {(HappyWrap55 x') = happyOut55 x} in x'))++pLanguage_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 5# tks) (\x -> happyReturn (let {(HappyWrap56 x') = happyOut56 x} in x'))++pCommand_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 6# tks) (\x -> happyReturn (let {(HappyWrap57 x') = happyOut57 x} in x'))++pListCommand_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 7# tks) (\x -> happyReturn (let {(HappyWrap58 x') = happyOut58 x} in x'))++pDeclUsedVars_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 8# tks) (\x -> happyReturn (let {(HappyWrap59 x') = happyOut59 x} in x'))++pSectionName_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 9# tks) (\x -> happyReturn (let {(HappyWrap60 x') = happyOut60 x} in x'))++pDataSort_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 10# tks) (\x -> happyReturn (let {(HappyWrap61 x') = happyOut61 x} in x'))++pDataBody_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 11# tks) (\x -> happyReturn (let {(HappyWrap62 x') = happyOut62 x} in x'))++pConstructor_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 12# tks) (\x -> happyReturn (let {(HappyWrap63 x') = happyOut63 x} in x'))++pListConstructor_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 13# tks) (\x -> happyReturn (let {(HappyWrap64 x') = happyOut64 x} in x'))++pConstructorType_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 14# tks) (\x -> happyReturn (let {(HappyWrap65 x') = happyOut65 x} in x'))++pDataElim_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 15# tks) (\x -> happyReturn (let {(HappyWrap66 x') = happyOut66 x} in x'))++pListDataElim_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 16# tks) (\x -> happyReturn (let {(HappyWrap67 x') = happyOut67 x} in x'))++pMatchBranch_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 17# tks) (\x -> happyReturn (let {(HappyWrap68 x') = happyOut68 x} in x'))++pListMatchBranch_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 18# tks) (\x -> happyReturn (let {(HappyWrap69 x') = happyOut69 x} in x'))++pPattern_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 19# tks) (\x -> happyReturn (let {(HappyWrap70 x') = happyOut70 x} in x'))++pListPattern_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 20# tks) (\x -> happyReturn (let {(HappyWrap71 x') = happyOut71 x} in x'))++pPattern1_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 21# tks) (\x -> happyReturn (let {(HappyWrap72 x') = happyOut72 x} in x'))++pListPattern1_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 22# tks) (\x -> happyReturn (let {(HappyWrap73 x') = happyOut73 x} in x'))++pParam_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 23# tks) (\x -> happyReturn (let {(HappyWrap74 x') = happyOut74 x} in x'))++pListParam_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 24# tks) (\x -> happyReturn (let {(HappyWrap75 x') = happyOut75 x} in x'))++pBind_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 25# tks) (\x -> happyReturn (let {(HappyWrap76 x') = happyOut76 x} in x'))++pParamDecl_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 26# tks) (\x -> happyReturn (let {(HappyWrap77 x') = happyOut77 x} in x'))++pSigmaParam_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 27# tks) (\x -> happyReturn (let {(HappyWrap78 x') = happyOut78 x} in x'))++pListSigmaParam_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 28# tks) (\x -> happyReturn (let {(HappyWrap79 x') = happyOut79 x} in x'))++pRestriction_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 29# tks) (\x -> happyReturn (let {(HappyWrap80 x') = happyOut80 x} in x'))++pListRestriction_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 30# tks) (\x -> happyReturn (let {(HappyWrap81 x') = happyOut81 x} in x'))++pModality_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 31# tks) (\x -> happyReturn (let {(HappyWrap82 x') = happyOut82 x} in x'))++pModComp_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 32# tks) (\x -> happyReturn (let {(HappyWrap83 x') = happyOut83 x} in x'))++pModalColon_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 33# tks) (\x -> happyReturn (let {(HappyWrap84 x') = happyOut84 x} in x'))++pTerm8_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 34# tks) (\x -> happyReturn (let {(HappyWrap85 x') = happyOut85 x} in x'))++pTerm5_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 35# tks) (\x -> happyReturn (let {(HappyWrap86 x') = happyOut86 x} in x'))++pTerm4_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 36# tks) (\x -> happyReturn (let {(HappyWrap87 x') = happyOut87 x} in x'))++pTerm3_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 37# tks) (\x -> happyReturn (let {(HappyWrap88 x') = happyOut88 x} in x'))++pTerm2_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 38# tks) (\x -> happyReturn (let {(HappyWrap89 x') = happyOut89 x} in x'))++pTerm6_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 39# tks) (\x -> happyReturn (let {(HappyWrap90 x') = happyOut90 x} in x'))++pTerm1_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 40# tks) (\x -> happyReturn (let {(HappyWrap91 x') = happyOut91 x} in x'))++pTerm7_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 41# tks) (\x -> happyReturn (let {(HappyWrap92 x') = happyOut92 x} in x'))++pTerm_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 42# tks) (\x -> happyReturn (let {(HappyWrap93 x') = happyOut93 x} in x'))++pListTerm_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 43# tks) (\x -> happyReturn (let {(HappyWrap94 x') = happyOut94 x} in x'))++happySeq = happyDontSeq+++type Err = Either String++happyError :: [Token] -> Err a+happyError ts = Left $+  "syntax error at " ++ tokenPos ts +++  case ts of+    []      -> []+    [Err _] -> " due to lexer error"+    t:_     -> " before `" ++ (prToken t) ++ "'"++myLexer :: Data.Text.Text -> [Token]+myLexer = tokens++-- Entrypoints++pModule :: [Token] -> Err Language.Rzk.Syntax.Abs.Module+pModule = fmap snd . pModule_internal++pHoleIdent :: [Token] -> Err Language.Rzk.Syntax.Abs.HoleIdent+pHoleIdent = fmap snd . pHoleIdent_internal++pVarIdent :: [Token] -> Err Language.Rzk.Syntax.Abs.VarIdent+pVarIdent = fmap snd . pVarIdent_internal++pListVarIdent :: [Token] -> Err [Language.Rzk.Syntax.Abs.VarIdent]+pListVarIdent = fmap snd . pListVarIdent_internal++pLanguageDecl :: [Token] -> Err Language.Rzk.Syntax.Abs.LanguageDecl+pLanguageDecl = fmap snd . pLanguageDecl_internal++pLanguage :: [Token] -> Err Language.Rzk.Syntax.Abs.Language+pLanguage = fmap snd . pLanguage_internal++pCommand :: [Token] -> Err Language.Rzk.Syntax.Abs.Command+pCommand = fmap snd . pCommand_internal++pListCommand :: [Token] -> Err [Language.Rzk.Syntax.Abs.Command]+pListCommand = fmap snd . pListCommand_internal++pDeclUsedVars :: [Token] -> Err Language.Rzk.Syntax.Abs.DeclUsedVars+pDeclUsedVars = fmap snd . pDeclUsedVars_internal++pSectionName :: [Token] -> Err Language.Rzk.Syntax.Abs.SectionName+pSectionName = fmap snd . pSectionName_internal++pDataSort :: [Token] -> Err Language.Rzk.Syntax.Abs.DataSort+pDataSort = fmap snd . pDataSort_internal++pDataBody :: [Token] -> Err Language.Rzk.Syntax.Abs.DataBody+pDataBody = fmap snd . pDataBody_internal++pConstructor :: [Token] -> Err Language.Rzk.Syntax.Abs.Constructor+pConstructor = fmap snd . pConstructor_internal++pListConstructor :: [Token] -> Err [Language.Rzk.Syntax.Abs.Constructor]+pListConstructor = fmap snd . pListConstructor_internal++pConstructorType :: [Token] -> Err Language.Rzk.Syntax.Abs.ConstructorType+pConstructorType = fmap snd . pConstructorType_internal++pDataElim :: [Token] -> Err Language.Rzk.Syntax.Abs.DataElim+pDataElim = fmap snd . pDataElim_internal++pListDataElim :: [Token] -> Err [Language.Rzk.Syntax.Abs.DataElim]+pListDataElim = fmap snd . pListDataElim_internal++pMatchBranch :: [Token] -> Err Language.Rzk.Syntax.Abs.MatchBranch+pMatchBranch = fmap snd . pMatchBranch_internal++pListMatchBranch :: [Token] -> Err [Language.Rzk.Syntax.Abs.MatchBranch]+pListMatchBranch = fmap snd . pListMatchBranch_internal++pPattern :: [Token] -> Err Language.Rzk.Syntax.Abs.Pattern+pPattern = fmap snd . pPattern_internal++pListPattern :: [Token] -> Err [Language.Rzk.Syntax.Abs.Pattern]+pListPattern = fmap snd . pListPattern_internal++pPattern1 :: [Token] -> Err Language.Rzk.Syntax.Abs.Pattern+pPattern1 = fmap snd . pPattern1_internal++pListPattern1 :: [Token] -> Err [Language.Rzk.Syntax.Abs.Pattern]+pListPattern1 = fmap snd . pListPattern1_internal++pParam :: [Token] -> Err Language.Rzk.Syntax.Abs.Param+pParam = fmap snd . pParam_internal++pListParam :: [Token] -> Err [Language.Rzk.Syntax.Abs.Param]+pListParam = fmap snd . pListParam_internal++pBind :: [Token] -> Err Language.Rzk.Syntax.Abs.Bind+pBind = fmap snd . pBind_internal++pParamDecl :: [Token] -> Err Language.Rzk.Syntax.Abs.ParamDecl+pParamDecl = fmap snd . pParamDecl_internal++pSigmaParam :: [Token] -> Err Language.Rzk.Syntax.Abs.SigmaParam+pSigmaParam = fmap snd . pSigmaParam_internal++pListSigmaParam :: [Token] -> Err [Language.Rzk.Syntax.Abs.SigmaParam]+pListSigmaParam = fmap snd . pListSigmaParam_internal++pRestriction :: [Token] -> Err Language.Rzk.Syntax.Abs.Restriction+pRestriction = fmap snd . pRestriction_internal++pListRestriction :: [Token] -> Err [Language.Rzk.Syntax.Abs.Restriction]+pListRestriction = fmap snd . pListRestriction_internal++pModality :: [Token] -> Err Language.Rzk.Syntax.Abs.Modality+pModality = fmap snd . pModality_internal++pModComp :: [Token] -> Err Language.Rzk.Syntax.Abs.ModComp+pModComp = fmap snd . pModComp_internal++pModalColon :: [Token] -> Err Language.Rzk.Syntax.Abs.ModalColon+pModalColon = fmap snd . pModalColon_internal++pTerm8 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term+pTerm8 = fmap snd . pTerm8_internal++pTerm5 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term+pTerm5 = fmap snd . pTerm5_internal++pTerm4 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term+pTerm4 = fmap snd . pTerm4_internal++pTerm3 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term+pTerm3 = fmap snd . pTerm3_internal++pTerm2 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term+pTerm2 = fmap snd . pTerm2_internal++pTerm6 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term+pTerm6 = fmap snd . pTerm6_internal++pTerm1 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term+pTerm1 = fmap snd . pTerm1_internal++pTerm7 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term+pTerm7 = fmap snd . pTerm7_internal  pTerm :: [Token] -> Err Language.Rzk.Syntax.Abs.Term pTerm = fmap snd . pTerm_internal
src/Language/Rzk/Syntax/Print.hs view
@@ -321,22 +321,22 @@  instance Print (Language.Rzk.Syntax.Abs.Term' a) where   prt i = \case-    Language.Rzk.Syntax.Abs.Universe _ -> prPrec i 7 (concatD [doc (showString "U")])-    Language.Rzk.Syntax.Abs.UniverseCube _ -> prPrec i 7 (concatD [doc (showString "CUBE")])-    Language.Rzk.Syntax.Abs.UniverseTope _ -> prPrec i 7 (concatD [doc (showString "TOPE")])-    Language.Rzk.Syntax.Abs.CubeUnit _ -> prPrec i 7 (concatD [doc (showString "1")])-    Language.Rzk.Syntax.Abs.CubeUnitStar _ -> prPrec i 7 (concatD [doc (showString "*\8321")])-    Language.Rzk.Syntax.Abs.Cube2 _ -> prPrec i 7 (concatD [doc (showString "2")])-    Language.Rzk.Syntax.Abs.Cube2_0 _ -> prPrec i 7 (concatD [doc (showString "0\8322")])-    Language.Rzk.Syntax.Abs.Cube2_1 _ -> prPrec i 7 (concatD [doc (showString "1\8322")])-    Language.Rzk.Syntax.Abs.CubeI _ -> prPrec i 7 (concatD [doc (showString "\120128")])-    Language.Rzk.Syntax.Abs.CubeI_0 _ -> prPrec i 7 (concatD [doc (showString "0\7522")])-    Language.Rzk.Syntax.Abs.CubeI_1 _ -> prPrec i 7 (concatD [doc (showString "1\7522")])+    Language.Rzk.Syntax.Abs.Universe _ -> prPrec i 8 (concatD [doc (showString "U")])+    Language.Rzk.Syntax.Abs.UniverseCube _ -> prPrec i 8 (concatD [doc (showString "CUBE")])+    Language.Rzk.Syntax.Abs.UniverseTope _ -> prPrec i 8 (concatD [doc (showString "TOPE")])+    Language.Rzk.Syntax.Abs.CubeUnit _ -> prPrec i 8 (concatD [doc (showString "1")])+    Language.Rzk.Syntax.Abs.CubeUnitStar _ -> prPrec i 8 (concatD [doc (showString "*\8321")])+    Language.Rzk.Syntax.Abs.Cube2 _ -> prPrec i 8 (concatD [doc (showString "2")])+    Language.Rzk.Syntax.Abs.Cube2_0 _ -> prPrec i 8 (concatD [doc (showString "0\8322")])+    Language.Rzk.Syntax.Abs.Cube2_1 _ -> prPrec i 8 (concatD [doc (showString "1\8322")])+    Language.Rzk.Syntax.Abs.CubeI _ -> prPrec i 8 (concatD [doc (showString "\120128")])+    Language.Rzk.Syntax.Abs.CubeI_0 _ -> prPrec i 8 (concatD [doc (showString "0\7522")])+    Language.Rzk.Syntax.Abs.CubeI_1 _ -> prPrec i 8 (concatD [doc (showString "1\7522")])     Language.Rzk.Syntax.Abs.CubeProduct _ term1 term2 -> prPrec i 5 (concatD [prt 5 term1, doc (showString "\215"), prt 6 term2])     Language.Rzk.Syntax.Abs.CubeSup _ term1 term2 -> prPrec i 5 (concatD [prt 5 term1, doc (showString "\8852"), prt 6 term2])     Language.Rzk.Syntax.Abs.CubeInf _ term1 term2 -> prPrec i 5 (concatD [prt 5 term1, doc (showString "\8851"), prt 6 term2])-    Language.Rzk.Syntax.Abs.TopeTop _ -> prPrec i 7 (concatD [doc (showString "\8868")])-    Language.Rzk.Syntax.Abs.TopeBottom _ -> prPrec i 7 (concatD [doc (showString "\8869")])+    Language.Rzk.Syntax.Abs.TopeTop _ -> prPrec i 8 (concatD [doc (showString "\8868")])+    Language.Rzk.Syntax.Abs.TopeBottom _ -> prPrec i 8 (concatD [doc (showString "\8869")])     Language.Rzk.Syntax.Abs.TopeEQ _ term1 term2 -> prPrec i 4 (concatD [prt 5 term1, doc (showString "\8801"), prt 5 term2])     Language.Rzk.Syntax.Abs.TopeLEQ _ term1 term2 -> prPrec i 4 (concatD [prt 5 term1, doc (showString "\8804"), prt 5 term2])     Language.Rzk.Syntax.Abs.TopeAnd _ term1 term2 -> prPrec i 3 (concatD [prt 4 term1, doc (showString "\8743"), prt 3 term2])@@ -345,21 +345,21 @@     Language.Rzk.Syntax.Abs.TopeUninv _ term -> prPrec i 6 (concatD [doc (showString "uninv\7506\7510"), prt 7 term])     Language.Rzk.Syntax.Abs.CubeFlip _ term -> prPrec i 6 (concatD [doc (showString "flip\7506\7510"), prt 7 term])     Language.Rzk.Syntax.Abs.CubeUnflip _ term -> prPrec i 6 (concatD [doc (showString "unflip\7506\7510"), prt 7 term])-    Language.Rzk.Syntax.Abs.RecBottom _ -> prPrec i 7 (concatD [doc (showString "recBOT")])-    Language.Rzk.Syntax.Abs.RecOr _ restrictions -> prPrec i 7 (concatD [doc (showString "recOR"), doc (showString "("), prt 0 restrictions, doc (showString ")")])+    Language.Rzk.Syntax.Abs.RecBottom _ -> prPrec i 8 (concatD [doc (showString "recBOT")])+    Language.Rzk.Syntax.Abs.RecOr _ restrictions -> prPrec i 8 (concatD [doc (showString "recOR"), doc (showString "("), prt 0 restrictions, doc (showString ")")])     Language.Rzk.Syntax.Abs.TypeFun _ paramdecl term -> prPrec i 1 (concatD [prt 0 paramdecl, doc (showString "\8594"), prt 1 term])     Language.Rzk.Syntax.Abs.TypeSigma _ pattern_ term1 term2 -> prPrec i 1 (concatD [doc (showString "\931"), doc (showString "("), prt 0 pattern_, doc (showString ":"), prt 0 term1, doc (showString ")"), doc (showString ","), prt 1 term2])     Language.Rzk.Syntax.Abs.TypeSigmaModal _ pattern_ modalcolon term1 term2 -> prPrec i 1 (concatD [doc (showString "\931"), doc (showString "("), prt 0 pattern_, prt 0 modalcolon, prt 0 term1, doc (showString ")"), doc (showString ","), prt 1 term2])     Language.Rzk.Syntax.Abs.TypeSigmaTuple _ sigmaparam sigmaparams term -> prPrec i 1 (concatD [doc (showString "\931"), doc (showString "("), prt 0 sigmaparam, doc (showString ","), prt 0 sigmaparams, doc (showString ")"), doc (showString ","), prt 1 term])-    Language.Rzk.Syntax.Abs.TypeUnit _ -> prPrec i 7 (concatD [doc (showString "Unit")])+    Language.Rzk.Syntax.Abs.TypeUnit _ -> prPrec i 8 (concatD [doc (showString "Unit")])     Language.Rzk.Syntax.Abs.TypeId _ term1 term2 term3 -> prPrec i 1 (concatD [prt 2 term1, doc (showString "=_{"), prt 0 term2, doc (showString "}"), prt 2 term3])     Language.Rzk.Syntax.Abs.TypeIdSimple _ term1 term2 -> prPrec i 1 (concatD [prt 2 term1, doc (showString "="), prt 2 term2])     Language.Rzk.Syntax.Abs.TypeRestricted _ term restrictions -> prPrec i 6 (concatD [prt 6 term, doc (showString "["), prt 0 restrictions, doc (showString "]")])     Language.Rzk.Syntax.Abs.Let _ bind term1 term2 -> prPrec i 1 (concatD [doc (showString "let"), prt 0 bind, doc (showString ":="), prt 0 term1, doc (showString "in"), prt 0 term2])     Language.Rzk.Syntax.Abs.App _ term1 term2 -> prPrec i 6 (concatD [prt 6 term1, prt 7 term2])     Language.Rzk.Syntax.Abs.Lambda _ params term -> prPrec i 1 (concatD [doc (showString "\\"), prt 0 params, doc (showString "\8594"), prt 1 term])-    Language.Rzk.Syntax.Abs.Pair _ term1 term2 -> prPrec i 7 (concatD [doc (showString "("), prt 0 term1, doc (showString ","), prt 0 term2, doc (showString ")")])-    Language.Rzk.Syntax.Abs.Tuple _ term1 term2 terms -> prPrec i 7 (concatD [doc (showString "("), prt 0 term1, doc (showString ","), prt 0 term2, doc (showString ","), prt 0 terms, doc (showString ")")])+    Language.Rzk.Syntax.Abs.Pair _ term1 term2 -> prPrec i 8 (concatD [doc (showString "("), prt 0 term1, doc (showString ","), prt 0 term2, doc (showString ")")])+    Language.Rzk.Syntax.Abs.Tuple _ term1 term2 terms -> prPrec i 8 (concatD [doc (showString "("), prt 0 term1, doc (showString ","), prt 0 term2, doc (showString ","), prt 0 terms, doc (showString ")")])     Language.Rzk.Syntax.Abs.ModApp _ modality term -> prPrec i 7 (concatD [doc (showString "mod"), prt 0 modality, prt 7 term])     Language.Rzk.Syntax.Abs.ModType _ modality term -> prPrec i 7 (concatD [prt 0 modality, prt 7 term])     Language.Rzk.Syntax.Abs.ModExtract _ modcomp term -> prPrec i 6 (concatD [doc (showString "$extract$"), prt 0 modcomp, prt 7 term])@@ -371,24 +371,26 @@     Language.Rzk.Syntax.Abs.LetModFramedInto _ modality1 modality2 bind term1 term2 term3 -> prPrec i 1 (concatD [doc (showString "let"), prt 0 modality1, doc (showString "mod"), prt 0 modality2, prt 0 bind, doc (showString ":="), prt 0 term1, doc (showString "into"), prt 0 term2, doc (showString "in"), prt 0 term3])     Language.Rzk.Syntax.Abs.First _ term -> prPrec i 6 (concatD [doc (showString "\960\8321"), prt 7 term])     Language.Rzk.Syntax.Abs.Second _ term -> prPrec i 6 (concatD [doc (showString "\960\8322"), prt 7 term])-    Language.Rzk.Syntax.Abs.Unit _ -> prPrec i 7 (concatD [doc (showString "unit")])-    Language.Rzk.Syntax.Abs.Refl _ -> prPrec i 7 (concatD [doc (showString "refl")])-    Language.Rzk.Syntax.Abs.ReflTerm _ term -> prPrec i 7 (concatD [doc (showString "refl_{"), prt 0 term, doc (showString "}")])-    Language.Rzk.Syntax.Abs.ReflTermType _ term1 term2 -> prPrec i 7 (concatD [doc (showString "refl_{"), prt 0 term1, doc (showString ":"), prt 0 term2, doc (showString "}")])-    Language.Rzk.Syntax.Abs.IdJ _ term1 term2 term3 term4 term5 term6 -> prPrec i 7 (concatD [doc (showString "idJ"), doc (showString "("), prt 0 term1, doc (showString ","), prt 0 term2, doc (showString ","), prt 0 term3, doc (showString ","), prt 0 term4, doc (showString ","), prt 0 term5, doc (showString ","), prt 0 term6, doc (showString ")")])-    Language.Rzk.Syntax.Abs.Match _ term matchbranchs -> prPrec i 7 (concatD [doc (showString "match"), prt 7 term, doc (showString "("), prt 0 matchbranchs, doc (showString ")")])-    Language.Rzk.Syntax.Abs.MatchInto _ term1 term2 matchbranchs -> prPrec i 7 (concatD [doc (showString "match"), prt 7 term1, doc (showString "into"), prt 7 term2, doc (showString "("), prt 0 matchbranchs, doc (showString ")")])-    Language.Rzk.Syntax.Abs.Hole _ holeident -> prPrec i 7 (concatD [prt 0 holeident])-    Language.Rzk.Syntax.Abs.Var _ varident -> prPrec i 7 (concatD [prt 0 varident])+    Language.Rzk.Syntax.Abs.Unit _ -> prPrec i 8 (concatD [doc (showString "unit")])+    Language.Rzk.Syntax.Abs.Refl _ -> prPrec i 8 (concatD [doc (showString "refl")])+    Language.Rzk.Syntax.Abs.ReflTerm _ term -> prPrec i 8 (concatD [doc (showString "refl_{"), prt 0 term, doc (showString "}")])+    Language.Rzk.Syntax.Abs.ReflTermType _ term1 term2 -> prPrec i 8 (concatD [doc (showString "refl_{"), prt 0 term1, doc (showString ":"), prt 0 term2, doc (showString "}")])+    Language.Rzk.Syntax.Abs.IdJ _ term1 term2 term3 term4 term5 term6 -> prPrec i 8 (concatD [doc (showString "idJ"), doc (showString "("), prt 0 term1, doc (showString ","), prt 0 term2, doc (showString ","), prt 0 term3, doc (showString ","), prt 0 term4, doc (showString ","), prt 0 term5, doc (showString ","), prt 0 term6, doc (showString ")")])+    Language.Rzk.Syntax.Abs.Match _ term matchbranchs -> prPrec i 7 (concatD [doc (showString "match"), prt 8 term, doc (showString "("), prt 0 matchbranchs, doc (showString ")")])+    Language.Rzk.Syntax.Abs.MatchInto _ term1 term2 matchbranchs -> prPrec i 7 (concatD [doc (showString "match"), prt 8 term1, doc (showString "into"), prt 8 term2, doc (showString "("), prt 0 matchbranchs, doc (showString ")")])+    Language.Rzk.Syntax.Abs.MatchModal _ modality term matchbranchs -> prPrec i 7 (concatD [doc (showString "match"), prt 0 modality, prt 8 term, doc (showString "("), prt 0 matchbranchs, doc (showString ")")])+    Language.Rzk.Syntax.Abs.MatchModalInto _ modality term1 term2 matchbranchs -> prPrec i 7 (concatD [doc (showString "match"), prt 0 modality, prt 8 term1, doc (showString "into"), prt 8 term2, doc (showString "("), prt 0 matchbranchs, doc (showString ")")])+    Language.Rzk.Syntax.Abs.Hole _ holeident -> prPrec i 8 (concatD [prt 0 holeident])+    Language.Rzk.Syntax.Abs.Var _ varident -> prPrec i 8 (concatD [prt 0 varident])     Language.Rzk.Syntax.Abs.TypeAsc _ term1 term2 -> prPrec i 0 (concatD [prt 2 term1, doc (showString "as"), prt 1 term2])-    Language.Rzk.Syntax.Abs.ASCII_CubeUnitStar _ -> prPrec i 7 (concatD [doc (showString "*_1")])-    Language.Rzk.Syntax.Abs.ASCII_Cube2_0 _ -> prPrec i 7 (concatD [doc (showString "0_2")])-    Language.Rzk.Syntax.Abs.ASCII_Cube2_1 _ -> prPrec i 7 (concatD [doc (showString "1_2")])-    Language.Rzk.Syntax.Abs.ASCII_CubeI _ -> prPrec i 7 (concatD [doc (showString "II")])-    Language.Rzk.Syntax.Abs.ASCII_CubeI_0 _ -> prPrec i 7 (concatD [doc (showString "0_I")])-    Language.Rzk.Syntax.Abs.ASCII_CubeI_1 _ -> prPrec i 7 (concatD [doc (showString "1_I")])-    Language.Rzk.Syntax.Abs.ASCII_TopeTop _ -> prPrec i 7 (concatD [doc (showString "TOP")])-    Language.Rzk.Syntax.Abs.ASCII_TopeBottom _ -> prPrec i 7 (concatD [doc (showString "BOT")])+    Language.Rzk.Syntax.Abs.ASCII_CubeUnitStar _ -> prPrec i 8 (concatD [doc (showString "*_1")])+    Language.Rzk.Syntax.Abs.ASCII_Cube2_0 _ -> prPrec i 8 (concatD [doc (showString "0_2")])+    Language.Rzk.Syntax.Abs.ASCII_Cube2_1 _ -> prPrec i 8 (concatD [doc (showString "1_2")])+    Language.Rzk.Syntax.Abs.ASCII_CubeI _ -> prPrec i 8 (concatD [doc (showString "II")])+    Language.Rzk.Syntax.Abs.ASCII_CubeI_0 _ -> prPrec i 8 (concatD [doc (showString "0_I")])+    Language.Rzk.Syntax.Abs.ASCII_CubeI_1 _ -> prPrec i 8 (concatD [doc (showString "1_I")])+    Language.Rzk.Syntax.Abs.ASCII_TopeTop _ -> prPrec i 8 (concatD [doc (showString "TOP")])+    Language.Rzk.Syntax.Abs.ASCII_TopeBottom _ -> prPrec i 8 (concatD [doc (showString "BOT")])     Language.Rzk.Syntax.Abs.ASCII_TopeEQ _ term1 term2 -> prPrec i 4 (concatD [prt 5 term1, doc (showString "==="), prt 5 term2])     Language.Rzk.Syntax.Abs.ASCII_TopeLEQ _ term1 term2 -> prPrec i 4 (concatD [prt 5 term1, doc (showString "<="), prt 5 term2])     Language.Rzk.Syntax.Abs.ASCII_TopeAnd _ term1 term2 -> prPrec i 3 (concatD [prt 4 term1, doc (showString "/\\"), prt 3 term2])
src/Language/Rzk/VSCode/ReferenceIndex.hs view
@@ -453,6 +453,10 @@   Rzk.Match _ scrut bs          -> goTerm file env scrut ++ concatMap (matchBranchScope file env) bs   Rzk.MatchInto _ scrut motive bs ->     goTerm file env scrut ++ goTerm file env motive ++ concatMap (matchBranchScope file env) bs+  Rzk.MatchModal _ _ scrut bs ->+    goTerm file env scrut ++ concatMap (matchBranchScope file env) bs+  Rzk.MatchModalInto _ _ scrut motive bs ->+    goTerm file env scrut ++ goTerm file env motive ++ concatMap (matchBranchScope file env) bs   Rzk.TypeAsc _ a b             -> goTerm file env a ++ goTerm file env b    Rzk.Universe{}           -> []
src/Language/Rzk/VSCode/Tokenize.hs view
@@ -313,6 +313,15 @@         [ go scrut         , go motive         , foldMap tokenizeMatchBranch branches ]+      MatchModal _loc md scrut branches -> concat+        [ tokenizeModality md+        , go scrut+        , foldMap tokenizeMatchBranch branches ]+      MatchModalInto _loc md scrut motive branches -> concat+        [ tokenizeModality md+        , go scrut+        , go motive+        , foldMap tokenizeMatchBranch branches ]        ModType _loc md type_ -> concat [tokenizeModality md, go type_]       ModApp _loc md te -> concat [tokenizeModality md, go te]
src/Rzk/Diagnostic.hs view
@@ -7,14 +7,15 @@ -- pre-formatted string. The core library produces these; the LSP maps them to -- LSP diagnostics, and the CLI can emit them as JSON (@rzk typecheck --json@). ----- Locations are line-level: rzk currently retains only file + line at the point--- an error is produced (the column is discarded, and core terms keep no--- per-node position), so diagnostics point at the enclosing command's line.+-- Locations give the source node's line and column when available, otherwise+-- the nearest enclosing position retained by the checker. module Rzk.Diagnostic where +import           Data.List                (intercalate) import           Data.Aeson           (ToJSON (..), Value (String), object,                                        (.=)) +import           Language.Rzk.Foil.Names (TModality (Id)) import           Rzk.TypeCheck  -- | Diagnostic severity, mirroring the usual LSP levels.@@ -35,7 +36,7 @@ -- -- > { "severity": "error" | "warning" | "information" | "hint" -- > , "code":     <string>           -- "hole", or a TypeError tag (e.g. "TypeErrorUnify")--- > , "location": { "file": <string|null>, "line": <int|null> } | null+-- > , "location": { "file": <string|null>, "line": <int|null>, "column": <int|null> } | null -- > , "message":  <string>           -- human-facing prose (the CLI/LSP display text) -- > , "hole":     <HoleData> | null  -- present only for hole diagnostics (see 'HoleData') -- > }@@ -46,7 +47,7 @@ data Diagnostic = Diagnostic   { diagnosticSeverity :: Severity   , diagnosticCode     :: String            -- ^ stable category, e.g. @\"TypeErrorUnify\"@ or @\"hole\"@-  , diagnosticLocation :: Maybe LocationInfo -- ^ file + line (line-level granularity)+  , diagnosticLocation :: Maybe LocationInfo -- ^ file, line and column when available   , diagnosticMessage  :: String   , diagnosticHole     :: Maybe HoleData     -- ^ structured hole payload ('Nothing' for type errors)   } deriving (Eq, Show)@@ -61,11 +62,18 @@ -- > { "name":     <string|null>                 -- the ?name, if the hole was named -- > , "goal":     <string>                       -- the expected type (the goal) -- > , "shape":    { "binder": <string>, "tope": <string> } | null--- > , "termVars": [ { "name": <string>, "type": <string> }, ... ]--- > , "cubeVars": [ { "name": <string>, "type": <string> }, ... ]--- > , "topes":    [ <string>, ... ]              -- local tope assumptions (excludes ⊤)+-- > , "termVars": [ <entry>, ... ]+-- > , "cubeVars": [ <entry>, ... ]+-- > , "topes":    [ <string>, ... ]              -- tope assumptions in force (excludes ⊤)+-- > , "topeInfo": [ { "tope": <string>, <modal> }, ... ]  -- all tope assumptions -- > } --+-- where an @<entry>@ is @{ "name": <string>, "type": <string>, <modal> }@ and+-- @<modal>@ is @"modality": <string>, "locks": <string>, "accessible": <bool>@:+-- the declared modality, the locks accumulated since, and whether the entry+-- can be used at the hole. An inaccessible tope is not in force, so it appears+-- in @topeInfo@ but not in @topes@.+-- -- Notes for consumers: -- -- * @shape@ is non-null only for a shape-restricted /argument/ goal, where the@@ -78,11 +86,28 @@   { holeDataName     :: Maybe String           -- ^ the @?name@, if named   , holeDataGoal     :: String                 -- ^ the goal (expected type)   , holeDataShape    :: Maybe (String, String) -- ^ (binder, tope) for a shape-argument goal-  , holeDataTermVars :: [(String, String)]     -- ^ local hypotheses: (name, type)-  , holeDataCubeVars :: [(String, String)]     -- ^ local cube variables: (name, type)-  , holeDataTopes    :: [String]               -- ^ local tope assumptions (excluding ⊤)+  , holeDataTermVars :: [HoleDataEntry]+  , holeDataCubeVars :: [HoleDataEntry]+  , holeDataTopes    :: [HoleDataTope]   } deriving (Eq, Show) +data HoleDataEntry = HoleDataEntry+  { holeDataEntryName :: String+  , holeDataEntryType :: String+  , holeDataEntryMode :: HoleModalData+  } deriving (Eq, Show)++data HoleDataTope = HoleDataTope+  { holeDataTopeValue :: String+  , holeDataTopeMode  :: HoleModalData+  } deriving (Eq, Show)++data HoleModalData = HoleModalData+  { holeModalModality   :: String+  , holeModalLocks      :: String+  , holeModalAccessible :: Bool+  } deriving (Eq, Show)+ instance ToJSON Severity where   toJSON = String . \case     SeverityError       -> "error"@@ -115,17 +140,32 @@     , "shape"    .= fmap shapeToJSON holeDataShape     , "termVars" .= map entryToJSON holeDataTermVars     , "cubeVars" .= map entryToJSON holeDataCubeVars-    , "topes"    .= holeDataTopes+    , "topes"    .= [ holeDataTopeValue t | t <- holeDataTopes+                    , holeModalAccessible (holeDataTopeMode t) ]+    , "topeInfo" .= map topeToJSON holeDataTopes     ]     where       shapeToJSON (binder, tope) = object [ "binder" .= binder, "tope" .= tope ]-      entryToJSON (name, ty)     = object [ "name" .= name, "type" .= ty ]+      entryToJSON HoleDataEntry{..} = object+        [ "name" .= holeDataEntryName, "type" .= holeDataEntryType+        , "modality" .= holeModalModality holeDataEntryMode+        , "locks" .= holeModalLocks holeDataEntryMode+        , "accessible" .= holeModalAccessible holeDataEntryMode+        ]+      topeToJSON HoleDataTope{..} = object+        [ "tope" .= holeDataTopeValue+        , "modality" .= holeModalModality holeDataTopeMode+        , "locks" .= holeModalLocks holeDataTopeMode+        , "accessible" .= holeModalAccessible holeDataTopeMode+        ]  -- | A stable tag for a type error, used as its diagnostic code. Independent of -- the variable type, so it survives the scoped-error unfolding. typeErrorTag :: TypeError n -> String typeErrorTag = \case   TypeErrorOther{}                 -> "TypeErrorOther"+  TypeErrorRSTT{}                  -> "TypeErrorRSTT"+  TypeErrorSchematic{}             -> "TypeErrorSchematic"   TypeErrorUnify{}                 -> "TypeErrorUnify"   TypeErrorUnifyTerms{}            -> "TypeErrorUnifyTerms"   TypeErrorNotPair{}               -> "TypeErrorNotPair"@@ -213,6 +253,80 @@   , diagnosticHole     = Nothing   } +diagnoseCheckWarning (RSTTScopeWarning extension feature loc) = Diagnostic+  { diagnosticSeverity = SeverityWarning+  , diagnosticCode = case extension of+      RSTTModal -> "RSTTModalWarning"+      RSTTInterval -> "RSTTIntervalWarning"+      RSTTInductive -> "RSTTInductiveWarning"+      RSTTShapeDependency -> "RSTTShapeDependencyWarning"+      RSTTUnsupported -> "RSTTSyntaxWarning"+      RSTTSchematic -> "RSTTSchematicWarning"+  , diagnosticLocation = loc+  , diagnosticMessage = feature <> " is outside RSTT"+  , diagnosticHole = Nothing+  }+diagnoseCheckWarning (RSTTIncompleteWarning reason loc) = Diagnostic+  { diagnosticSeverity = SeverityWarning+  , diagnosticCode = "RSTTIncompleteWarning"+  , diagnosticLocation = loc+  , diagnosticMessage = reason+  , diagnosticHole = Nothing+  }+diagnoseCheckWarning (RSTTHoleWarning loc) = Diagnostic+  { diagnosticSeverity = SeverityWarning+  , diagnosticCode = "RSTTHoleWarning"+  , diagnosticLocation = loc+  , diagnosticMessage = "RSTT fragment check has an unfinished obligation"+  , diagnosticHole = Nothing+  }+diagnoseCheckWarning (OverhangWarning what tope topes loc) = Diagnostic+  { diagnosticSeverity = SeverityWarning+  , diagnosticCode     = "OverhangWarning"+  , diagnosticLocation = loc+  , diagnosticMessage  =+      what <> " overhangs the local tope context: " <> tope+        <> " does not entail " <> intercalate " ∧ " topes+  , diagnosticHole     = Nothing+  }++diagnoseCheckWarning (TopeFamilyDomainWarning family domain loc) = Diagnostic+  { diagnosticSeverity = SeverityWarning+  , diagnosticCode     = "TopeFamilyDomainWarning"+  , diagnosticLocation = loc+  , diagnosticMessage  =+      "tope family " <> family+        <> " is not included in its declared domain " <> domain+        <> "; it is read as its intersection with the domain"+  , diagnosticHole     = Nothing+  }++diagnoseCheckWarning (FreeStandingRestrictionWarning defName ty use loc) = Diagnostic+  { diagnosticSeverity = SeverityWarning+  , diagnosticCode     = "FreeStandingRestrictionWarning"+  , diagnosticLocation = loc+  , diagnosticMessage  =+      "free-standing restriction assumed at " <> place <> ": " <> ty+        <> " (in " <> show defName <> ")"+  , diagnosticHole     = Nothing+  }+  where+    place = case use of+      UseBinder    -> "a binder"+      UseMotive    -> "an eliminator motive"+      UseData      -> "a type passed as data"+      UseIdentity  -> "the type of an identity type"+      UseConcluded -> "a concluded type, off the spine of codomains"+diagnoseCheckWarning (MetaBinderWarning defName varName ty loc) = Diagnostic+  { diagnosticSeverity = SeverityWarning+  , diagnosticCode     = "MetaBinderWarning"+  , diagnosticLocation = loc+  , diagnosticMessage  =+      "schematic binder inside a term: " <> show varName <> " : " <> ty+        <> " is bound below the parameter prefix (in " <> show defName <> ")"+  , diagnosticHole     = Nothing+  }+ -- | A checker warning as a human-readable line (the CLI). ppCheckWarning :: CheckWarning -> String ppCheckWarning = ("Warning: " <>) . diagnosticMessage . diagnoseCheckWarning@@ -248,10 +362,23 @@   , holeDataShape    = fmap (\(s, tope) -> (show s, show tope)) holeGoalShape   , holeDataTermVars = map entry holeTermVars   , holeDataCubeVars = map entry holeCubeVars-  , holeDataTopes    = map show holeTopes+  , holeDataTopes    = map topeEntry holeTopes   }   where-    entry e = (show (holeEntryName e), show (holeEntryType e))+    entry e = HoleDataEntry+      { holeDataEntryName = show (holeEntryName e)+      , holeDataEntryType = show (holeEntryType e)+      , holeDataEntryMode = modalData (holeEntryMode e)+      }+    topeEntry e = HoleDataTope+      { holeDataTopeValue = show (holeTopeValue e)+      , holeDataTopeMode = modalData (holeTopeMode e)+      }+    modalData mode = HoleModalData+      { holeModalModality = ppModality (holeItemModality mode)+      , holeModalLocks = ppModality (holeItemLocks mode)+      , holeModalAccessible = holeItemAccessible mode+      }  -- | Render a hole's goal and local context (the structured query) for display, -- separating term variables, cube variables, and tope assumptions.@@ -266,7 +393,10 @@   <> section "cube variables" holeCubeVars   <> (if null holeTopes         then []-        else "  tope context:" : [ "    " <> show t | t <- holeTopes ])+        else "  tope context:"+          : [ "    " <> availability (holeItemAccessible (holeTopeMode entry))+                <> show (holeTopeValue entry) <> modalSuffix (holeTopeMode entry)+            | entry <- holeTopes ])   where     -- a shape goal reads (binder : cube | tope); otherwise just the type     goalStr = case holeGoalShape of@@ -275,8 +405,17 @@     section title entries       | null entries = []       | otherwise = ("  " <> title <> ":")-          : [ "    " <> show (holeEntryName e) <> " : " <> show (holeEntryType e)+          : [ "    " <> availability (holeItemAccessible (holeEntryMode e))+                <> show (holeEntryName e) <> " : " <> show (holeEntryType e)+                <> modalSuffix (holeEntryMode e)             | e <- entries ]+    availability True  = ""+    availability False = "× "+    modalSuffix mode+      | holeItemModality mode == Id && holeItemLocks mode == Id = ""+      | otherwise =+          "  [modality: " <> ppModality (holeItemModality mode)+            <> ", locks: " <> ppModality (holeItemLocks mode) <> "]"  ppLocationInfo :: LocationInfo -> String ppLocationInfo (LocationInfo mpath mline mcol) =
src/Rzk/TypeCheck/Context.hs view
@@ -9,32 +9,14 @@ {-# LANGUAGE RecordWildCards     #-} {-# LANGUAGE ScopedTypeVariables #-} --- | The typing context on free-foil.------ The successor of @Rzk.TypeCheck@'s @Context var@. Two things change, and they--- are the point of the migration.------ [A variable is a name, and so is a top-level entry.] A free-foil term refers to--- a variable by 'Foil.Name' (an @Int@), and by nothing else: there is no way to--- put a 'VarIdent' inside a term. So a top-level definition is a name too, bound--- in the outermost scope with no binder above it, and the hypotheses — global and--- local alike — are one 'Foil.NameMap', looked up in constant time. The old--- context was an association list keyed by a @var@ whose equality walked an--- @S@-chain; @lookupVarInfo@ alone was 11.5% of the checker's time. The surface--- name of an entry is resolved through 'ctxNamed'.------ This also gives sections their natural shape. A @#assume@d assumption is an--- ordinary binder, so the definitions of a section are checked in its scope, and--- closing the section abstracts the assumption by pairing its binder with the--- body — no rewrite of the elaborated terms (see @Rzk.TypeCheck.Decl@).+-- | The typing context for the free-foil core. Local hypotheses and top-level+-- entries are keyed by 'Foil.Name'; separate fields retain surface identifiers+-- and binding order for elaboration and display. ----- [Entering a binder rebuilds nothing.] 'enterBinder' extends the scope and--- sinks the rest of the context by coercion, so it costs O(1) rather than a walk--- of the context. The old @enterScopeContext@ mapped @S \<$\>@ over the whole--- context, rebuilding every elaborated term it held; the heap profile showed--- those forced copies retaining most of the live heap, and @GlobalScopeInfo@ /--- @globalEmbed@ (PR #277) exist only to keep that shift off the ~1500 top-level--- entries. All of that machinery is gone.+-- Entering a binder carries scoped terms into the extended scope by coercion+-- and records the new entry. Section assumptions are ordinary bindings;+-- closing a section abstracts dependencies and rewrites uses of the resulting+-- parameterised definitions (see "Rzk.TypeCheck.Decl"). module Rzk.TypeCheck.Context where  import           Control.Monad.Foil          (DExt, Distinct, NameBinder,@@ -90,9 +72,14 @@   Nothing          -> loc   Just (line, col) -> loc { locationLine = Just line, locationColumn = Just col } +-- | Schematic validation is cached separately from ordinary typechecking.+data SchematicStatus = SchematicUnchecked | SchematicChecked | SchematicRejected+  deriving (Eq)+ -- | What is known about a hypothesis, local or top-level. data VarInfo n = VarInfo-  { varType                :: TermT n+  { varSchematicStatus     :: SchematicStatus+  , varType                :: TermT n   , varValue               :: Maybe (TermT n)   , varModality            :: TModality   , varModAccum            :: TModality@@ -137,7 +124,7 @@     -- after the parameters, and the 0-based positions of its recursive     -- fields (each contributes an induction hypothesis right after the     -- field in the method)-  | DataElimKind Int Int ElimKind+  | DataElimKind TModality Int Int ElimKind     -- ^ an eliminator: the number of methods (one per constructor, in     -- declaration order) and the number of indices of the family; the     -- spine is parameters, motive, methods, indices, scrutinee@@ -263,18 +250,36 @@   , ctxHintLemmas          :: [VarIdent]     -- ^ Named top-level definitions a hole's candidate list may draw on, beyond     -- the local hypotheses (see 'withHintLemmas').+  , ctxRSTTSafe            :: RSTTSafeMode+    -- ^ Off by default: the fragment checks multiply the checking time of a+    -- large development several times over. Set with+    -- @#set-option "rstt-safe" = "warn" | "error" | "off"@ or @--rstt-safe@.+  , ctxRSTTSafeOverride    :: Maybe RSTTSafeMode+    -- ^ A CLI selection applies throughout the run, despite source options.   , ctxWarnOverhang        :: Bool-    -- ^ When 'True', a restriction face or @recOR@ guard that overhangs the-    -- local tope context (is not entailed by it, while still overlapping it)-    -- is reported with a non-fatal hint. Off by default: deciding the-    -- overhang costs a solver entailment per face and guard, and the overhang-    -- is legitimate (see @happy-restrict-face-not-contained@). Enabled with-    -- @#set-option "warn-overhang" "yes"@. The /disjointness/ error next to-    -- it is unaffected: a vacuous face is always rejected.+    -- ^ Warn when a face or guard overlaps but does not entail the local tope+    -- context. Off by default; disjoint faces remain errors.   , ctxMetaPrefixSensitivity :: MetaPrefixSensitivity     -- ^ How sensitively the meta-parameter layer check classifies use     -- positions (see "Rzk.TypeCheck.MetaPrefix"). Strict by default; set     -- with @#set-option "warn-meta-prefix" = "off" | "structural" | "strict"@.+  , ctxWarnTopeFamilyDomain :: Bool+    -- ^ When 'True' (the default), a tope family checked against a domain+    -- type that it is not included in is reported with a warning: the+    -- checker reads it as its intersection with the domain (see the λ case of+    -- 'typecheck'), so the family checked differs from the family written.+    -- Costs nothing beyond the entailment that decides the intersection.+    -- Disabled with @#set-option "warn-tope-family-domain" = "no"@.+  , ctxStandaloneWarnFreeStandingRestriction :: Bool+    -- ^ Standalone restriction check, disabled by default.+    -- RSTT-safe mode enables the check regardless of this setting.+  , ctxStandaloneWarnShapeDependency :: Bool+    -- ^ Standalone shape-dependency check, disabled by default: it is the+    -- costly part of the fragment checks.+    -- RSTT-safe mode enables the check regardless of this setting.+  , ctxStandaloneWarnMetaBinder :: Bool+    -- ^ Standalone schematic-binder check, disabled by default.+    -- RSTT-safe mode enables the check regardless of this setting.   }  -- | The sensitivity levels of the meta-parameter layer check.@@ -319,8 +324,14 @@   , ctxHolesAreErrors = True   , ctxDeferHoleMismatches = True   , ctxHintLemmas = []+  , ctxRSTTSafe = RSTTSafeOff+  , ctxRSTTSafeOverride = Nothing   , ctxWarnOverhang = False   , ctxMetaPrefixSensitivity = MetaPrefixStrict+  , ctxWarnTopeFamilyDomain = True+  , ctxStandaloneWarnFreeStandingRestriction = False+  , ctxStandaloneWarnShapeDependency = False+  , ctxStandaloneWarnMetaBinder = False   }  -- | The tope context of an empty context: @⊤@ holds under every modality.@@ -530,6 +541,10 @@ isAccessible :: ModalTope n -> Bool isAccessible mt = coe (tModVar mt) (tModAccum mt) +isVarAccessible :: VarInfo n -> Bool+isVarAccessible info =+  varIsTopLevel info || coe (varModality info) (varModAccum info)+ filterAccessible :: [ModalTope n] -> [ModalTope n] filterAccessible = filter isAccessible @@ -562,3 +577,33 @@ -- than being deferred (see 'ctxDeferHoleMismatches'). structuralHoleUnify :: Context n -> Context n structuralHoleUnify ctx = ctx { ctxDeferHoleMismatches = False }++-- | Policy for reporting RSTT fragment violations.+data RSTTSafeMode = RSTTSafeOff | RSTTSafeWarn | RSTTSafeError+  deriving (Eq, Show, Read)++rsttSafeMode :: Context n -> RSTTSafeMode+rsttSafeMode ctx = case ctxRSTTSafeOverride ctx of+  Just mode -> mode+  Nothing   -> ctxRSTTSafe ctx++rsttSafeEnabled :: Context n -> Bool+rsttSafeEnabled ctx = rsttSafeMode ctx /= RSTTSafeOff++-- | Whether to check free-standing restrictions, including RSTT-safe requirements.+ctxWarnFreeStandingRestriction :: Context n -> Bool+ctxWarnFreeStandingRestriction ctx =+  rsttSafeEnabled ctx || ctxStandaloneWarnFreeStandingRestriction ctx++-- | Whether to check shape dependencies, including RSTT-safe requirements.+ctxWarnShapeDependency :: Context n -> Bool+ctxWarnShapeDependency ctx = rsttSafeEnabled ctx || ctxStandaloneWarnShapeDependency ctx++-- | Whether to check schematic binders, including RSTT-safe requirements.+ctxWarnMetaBinder :: Context n -> Bool+ctxWarnMetaBinder ctx = rsttSafeEnabled ctx || ctxStandaloneWarnMetaBinder ctx++effectiveMetaPrefixSensitivity :: Context n -> MetaPrefixSensitivity+effectiveMetaPrefixSensitivity ctx+  | rsttSafeEnabled ctx = MetaPrefixStrict+  | otherwise = ctxMetaPrefixSensitivity ctx
src/Rzk/TypeCheck/Decl.hs view
@@ -29,6 +29,8 @@ import           Data.Data                 (Data, cast, gmapQ) import           Control.Monad.Reader      (ask, asks, local) import           Data.List                 (intercalate)+import qualified Data.IntMap.Strict as IntMap+import qualified Data.IntSet              as IntSet import qualified Data.Map                  as Map import qualified Data.Text                 as T import           Debug.Trace               (trace)@@ -50,6 +52,8 @@ import           Rzk.TypeCheck.Error import           Rzk.TypeCheck.Eval import           Rzk.TypeCheck.Judgements+import qualified Rzk.TypeCheck.Fragment.RSTT as RSTT+import           Rzk.TypeCheck.Schematic (recordSchematicDeclaration) import           Rzk.TypeCheck.MetaPrefix import           Rzk.TypeCheck.Monad import           Rzk.TypeCheck.Render@@ -127,6 +131,10 @@   checkTopLevelDuplicate name   metaPrefix <- metaPrefixOf ty   recordMetaPrefixUses name ty mval+  -- Postulates and failed definitions supply assumptions, so require ext-style types.+  RSTT.recordFragmentUses name ty mval+    (isAssumption || maybe True (const False) mval)+  schematicStatus <- recordSchematicDeclaration name ty mval   ctx <- ask   Foil.withFresh (ctxScope ctx) $ \binder -> do     let info = VarInfo@@ -140,6 +148,7 @@           , varDeclaredAssumptions = usedVars           , varLocation = ctxLocation ctx           , varDataRole = mrole+          , varSchematicStatus = schematicStatus           , varMetaPrefix = metaPrefix           }         ctx' = recordInSection (Foil.nameOf binder) (enterBinder binder info [] ctx)@@ -200,6 +209,8 @@       tolerateUnused = lenient && sectionHasHole    (kept0, errs') <- collectSectionDecls tolerateUnused errs [] infos+  -- Section abstraction changes dependency signatures and applications.+  modifyLog $ \log -> log { logSchematicCache = IntSet.empty, logSchematicObjectFamilies = IntMap.empty }    -- Abstracting over the section's assumptions rewrote the entries' types,   -- which can change their meta-parameter prefix (an assumption such as@@ -295,16 +306,15 @@   | otherwise =       collectSectionDecls tolerate errs (entry : recent) rest --- | Abstract one assumption out of the definitions that come after it.------ A definition that mentions the assumption gains it as an explicit parameter, and--- every later definition that mentions /that/ definition is rewritten to apply it--- to the assumption. A definition that mentions it without declaring it in its--- @uses@ clause is an implicit assumption, and an error. -- | Whether an assumption was taken up by (abstracted into) any definition -- that followed it in its section. data AssumptionUse = AssumptionUsed | AssumptionUnused +-- | Abstract an assumption out of the definitions that depend on it, and+-- rewrite later uses of those definitions to supply the assumption.+-- Dependencies present only through other names' types need @uses@;+-- explicit occurrences in the written type or body need no such clause.+-- Datatype formers abstracted with their family are exempt from this check. makeAssumptionExplicit   :: forall n. Distinct n   => (Foil.Name n, VarInfo n)@@ -372,7 +382,8 @@   :: Distinct n   => Foil.Scope n -> Foil.Name n -> VarInfo n -> VarInfo n -> VarInfo n abstractOver scope a aInfo info = info-  { varType = newType+  { varSchematicStatus = SchematicUnchecked+  , varType = newType   , varValue = fmap abstractValue (varValue info)   , varModality = Id   , varModAccum = Id@@ -400,7 +411,8 @@ applyToAssumption scope a (defName, defInfo) info   | varIsAssumption info = info   | otherwise = info-      { varType = rewrite (varType info)+      { varSchematicStatus = SchematicUnchecked+      , varType = rewrite (varType info)       , varValue = rewrite <$> varValue info       }   where@@ -433,8 +445,12 @@   "no"  -> localHideTerm False   _ -> const $     issueTypeError $ TypeErrorOther "unknown value for \"render-hide-term\" (use \"yes\" or \"no\")"--- The overhang hint costs a solver entailment per restriction face and recOR--- guard, so it is off by default and opted into per module (or scope).+setOption "rstt-safe" = \case+  "warn" -> local $ \ctx -> ctx { ctxRSTTSafe = RSTTSafeWarn }+  "error" -> local $ \ctx -> ctx { ctxRSTTSafe = RSTTSafeError }+  "off" -> local $ \ctx -> ctx { ctxRSTTSafe = RSTTSafeOff }+  _ -> const $ issueTypeError $ TypeErrorOther "unknown rstt-safe mode (use warn, error, or off)"+-- Opt-in: overhang checking adds a solver query per face or guard. setOption "warn-overhang" = \case   "yes" -> localWarnOverhang True   "no"  -> localWarnOverhang False@@ -448,6 +464,29 @@   "strict"     -> localMetaPrefixSensitivity MetaPrefixStrict   _ -> const $     issueTypeError $ TypeErrorOther "unknown value for \"warn-meta-prefix\" (use \"off\", \"structural\", or \"strict\")"+-- A tope family not included in its declared domain is read as the+-- intersection with the domain; the warning says so. On by default.+setOption "warn-tope-family-domain" = \case+  "yes" -> localWarnTopeFamilyDomain True+  "no"  -> localWarnTopeFamilyDomain False+  _ -> const $+    issueTypeError $ TypeErrorOther "unknown value for \"warn-tope-family-domain\" (use \"yes\" or \"no\")"+-- Standalone fragment settings; active safe mode enables these checks.+setOption "warn-free-standing-restriction" = \case+  "yes" -> localWarnFreeStandingRestriction True+  "no"  -> localWarnFreeStandingRestriction False+  _ -> const $+    issueTypeError $ TypeErrorOther "unknown value for \"warn-free-standing-restriction\" (use \"yes\" or \"no\")"+setOption "warn-shape-dependency" = \case+  "yes" -> localWarnShapeDependency True+  "no"  -> localWarnShapeDependency False+  _ -> const $+    issueTypeError $ TypeErrorOther "unknown value for \"warn-shape-dependency\" (use \"yes\" or \"no\")"+setOption "warn-meta-binder" = \case+  "yes" -> localWarnMetaBinder True+  "no"  -> localWarnMetaBinder False+  _ -> const $+    issueTypeError $ TypeErrorOther "unknown value for \"warn-meta-binder\" (use \"yes\" or \"no\")" setOption optionName = const $ const $   issueTypeError $ TypeErrorOther ("unknown option " <> show optionName) @@ -455,9 +494,18 @@ unsetOption "verbosity" = localVerbosity (ctxVerbosity emptyContext) unsetOption "render" = localRenderBackend (ctxRenderBackend emptyContext) unsetOption "render-hide-term" = localHideTerm (ctxRenderHideTerm emptyContext)+unsetOption "rstt-safe" = local $ \ctx -> ctx { ctxRSTTSafe = ctxRSTTSafe emptyContext } unsetOption "warn-overhang" = localWarnOverhang (ctxWarnOverhang emptyContext) unsetOption "warn-meta-prefix" =   localMetaPrefixSensitivity (ctxMetaPrefixSensitivity emptyContext)+unsetOption "warn-tope-family-domain" =+  localWarnTopeFamilyDomain (ctxWarnTopeFamilyDomain emptyContext)+unsetOption "warn-free-standing-restriction" =+  localWarnFreeStandingRestriction (ctxStandaloneWarnFreeStandingRestriction emptyContext)+unsetOption "warn-shape-dependency" =+  localWarnShapeDependency (ctxStandaloneWarnShapeDependency emptyContext)+unsetOption "warn-meta-binder" =+  localWarnMetaBinder (ctxStandaloneWarnMetaBinder emptyContext) unsetOption optionName = const $   issueTypeError $ TypeErrorOther ("unknown option " <> show optionName) @@ -488,8 +536,8 @@ -- terms by hand. -- -- The declaration grammar already covers the later stages; this checker--- rejects what it does not support (cube/shape and modal constructor--- fields, function-typed recursive fields).+-- rejects what it does not support (cube and shape parameters and indices,+-- modal type fields, function-typed recursive fields).  -- | The index telescope of the sort. The sort must be @U@ (no indices) or a -- Π-telescope of plain types ending in @U@.@@ -514,6 +562,74 @@       p -> issueTypeError $ TypeErrorOther $         "an index of a #data sort must be a plain type, got " <> Rzk.printTree p +-- | The layer rule for the sort, on the elaborated form: every parameter and+-- index of a @#data@ must be a type. A cube point @(t : I)@ and a shape+-- point, in either spelling — named @(t : Φ)@ or inline @(t : I | φ)@ — are+-- rejected.+--+-- The surface checks in 'dataParamVars' and 'dataSortIndices' reject the+-- inline spelling only, because the other two are not recognisable+-- syntactically: @(t : Φ)@ looks exactly like a type-valued binder until @Φ@+-- is resolved. This check therefore walks the elaborated Π-telescope of the+-- sort, where a named shape has become the restricted binder @(t : I | Φ t)@+-- and a cube domain is recognisable by its sort, so the rule does not depend+-- on the spelling. The cube and tope /universes/ pass: a parameter of type+-- @CUBE@ or @I → TOPE@ ranges over cubes or shapes themselves, not over+-- their points, and the generic realisation+-- @#data Shape (I : CUBE) (phi : I → TOPE)@ depends on both.+--+-- The rule per position ('DomainKind' has the fine classification):+-- /parameters/ may be types, @CUBE@, @TOPE@, or plain tope families —+-- exactly the kinds of the meta-theoretic parameter layer of the Rzk paper+-- (a bare tope @(phi : TOPE)@ means the family @(phi : 1 → TOPE)@), which the+-- generic realisation @#data Shape (I : CUBE) (phi : I → TOPE)@ depends+-- on; /indices/ must be types, full stop. A family indexed by the cube+-- universe or by tope families is internal quantification over the+-- cube\/tope layers, which no written metatheory covers. The modal kinds+-- (@ᵒᵖ TOPE@, @♭ CUBE@, @♯ (I → TOPE)@, families into them, …) are+-- parameters too, as in a @#define@. This is part of the experimental+-- modal layer: the parameter layer has no modal account yet, but the+-- parameters are uniform, so the generated eliminators only abstract over+-- them, as a @#define@ with the same parameters would.+--+-- Rejecting is deliberate, not an accident of implementation. The generated+-- eliminators for a cube parameter or index are pointwise and look+-- plausible, but no metatheory is written down for an inductive family over+-- a shape — unlike shape /fields/, which are the representability rule of+-- Kudasov's 2021 note — and a family over a shape is what extension types+-- are for. A rejection can be relaxed later; an acceptance cannot be+-- revoked.+checkDataSortLayers+  :: Distinct n => [Rzk.ParamDecl] -> [SortIndex] -> TermT n -> TypeCheck n ()+checkDataSortLayers paramDecls sortIndices = go positions+  where+    positions =+      [ (True, spelledParam p) | p <- paramDecls ]+        <> [ (False, Rzk.printTree (sortIndexType si)) | si <- sortIndices ]+    spelledParam = \case+      Rzk.ParamTermType _ _ ty -> Rzk.printTree ty+      p                        -> Rzk.printTree p+    go :: Distinct m => [(Bool, String)] -> TermT m -> TypeCheck m ()+    go [] _ = pure ()+    go ((isParam, spelled) : rest) ty = whnfT ty >>= \case+      TypeFunT _ty orig md param mtope ret -> do+        let position+              | isParam   = "a parameter of a #data must be a type, CUBE, TOPE, or a tope family, got "+              | otherwise = "an index of a #data sort must be a type, got "+            reject kind = issueTypeError $ TypeErrorOther $+              position <> kind <> ": " <> spelled+        case mtope of+          Just _  -> reject "a shape"+          Nothing -> classifyDomain param >>= \case+            DomainType         -> pure ()+            DomainCubeUniverse | isParam -> pure ()+            DomainTopeUniverse | isParam -> pure ()+            DomainTopeFamily   | isParam -> pure ()+            DomainModalTope    | isParam -> pure ()+            kind               -> reject (domainKindName kind)+        inScope orig md param ret (go rest)+      _ -> panicImpossible "#data sort has fewer Π binders than parameters and indices"+ dataBodyParts :: Rzk.DataBody -> ([Rzk.Constructor], [Rzk.DataElim]) dataBodyParts = \case   Rzk.NoDataBody _              -> ([], [])@@ -534,24 +650,138 @@         "a parameter of a #data must be a typed variable (x : A), got "           <> Rzk.printTree p --- | A constructor field: a typed parameter, with cube/shape fields rejected--- (over a directed interval they would declare directed cells, out of scope--- for M3) and modal fields deferred (crisp induction).+-- | A constructor field.+--+-- Plain typed fields @(x : A)@ and cube and shape fields are accepted, in+-- every spelling and also under a modality (@(t :♭ I | φ)@, @(t :♭ I)@,+-- @(t :♭ Φ)@); modal /type/ fields are not, and since that distinction is+-- not recognisable on the surface it is decided by+-- 'checkDataConFieldLayers' after elaboration. What a shape field means,+-- and why it is sound, is worth stating precisely, because the+-- neighbouring constructions are not.+--+-- A shape is a predicate on a cube, spelled @I -> TOPE@ as @Δ¹@ and @Λ²₁@ are,+-- and a field may name one (@(t : Φ)@), give a bare cube (@(t : I)@, the shape+-- whose tope is @⊤@), or write the shape inline (@(t : I | φ)@). The first two+-- were already accepted here; the third was rejected, with a message claiming+-- it would declare a directed cell. It does not: a cell needs face equations,+-- and the @#data@ grammar has no syntax for them. All three are the same+-- thing, so all three are accepted.+--+-- A shape field makes the declared type the /shape realisation/ @⌈{t : I | φ}⌉@:+-- @#data D := c (t : I | φ)@ is freely generated by a Φ-indexed family of+-- points with no identifications between them, and the generated recursor+--+-- > rec-D : (C : U) → ((t : I | φ) → C) → D → C+--+-- is exactly the representability rule of Kudasov's 2021 note, §4 "Shapes as+-- types" (<https://fizruk.github.io/files/%5Bnotes%5D%20N.Kudasov.%20Booleans%2C%20coproducts%20and%20shape%20types%20in%20type%20theory%20for%20synthetic%20%E2%88%9E-categories.pdf Booleans, coproducts and shape types in type theory for synthetic ∞-categories>):+-- elimination into an /extension type/, with strict computation+-- @rec-D C m (c p) ≡ m p@ on a syntactic point. Nothing is asked of @C@, so+-- no Segal or covariance condition appears, and nothing here produces a cube+-- term from type-layer data: a point goes /into/ a constructor and the+-- eliminator maps only /out/ into types. 'Rzk.Match' on such a constructor+-- binds the cube variable and brings φ into the branch's context, which is+-- where a tope belongs.+--+-- Three neighbouring things are deliberately /not/ enabled by this, and each+-- is blocked somewhere else rather than here:+--+-- * __Face equations__ on a field, which would declare a directed cell (the+--   directed circle and friends). Their eliminator needs a Segal or covariant+--   target and the metatheory is open. They are unreachable because the+--   @#data@ grammar has no syntax for them, not because of a check.+-- * __Modal type fields__, below.+--+-- Cube and shape /parameters/ and /indices/ go the other way: rejected in+-- every spelling. The inline spelling falls to the surface checks in+-- 'dataParamVars' and 'dataSortIndices'; the named and bare-cube spellings+-- look like type-valued binders on the surface and are caught by+-- 'checkDataSortLayers' on the elaborated sort, so the rule does not depend+-- on the spelling. dataFieldToParamDecl :: Distinct n => Rzk.VarIdent -> Rzk.Param -> TypeCheck n [Rzk.ParamDecl] dataFieldToParamDecl cname = \case   p@Rzk.ParamPatternType{} -> paramToParamDecl p+  p@Rzk.ParamPatternShape{} -> paramToParamDecl p+  p@Rzk.ParamPatternModalShape{} -> paramToParamDecl p+  -- Not rejected here: whether a modal binder is a (fine) cube or shape+  -- field or a (rejected) modal type field is not recognisable on the+  -- surface — @(t :♭ Δ¹)@ looks exactly like @(x :♭ A)@ — so the decision+  -- is made by 'checkDataConFieldLayers' on the elaborated constructor type.+  p@Rzk.ParamPatternModalType{} -> paramToParamDecl p   Rzk.ParamPattern _ pat -> issueTypeError $ TypeErrorOther $     "untyped field " <> Rzk.printTree pat <> " in constructor " <> Rzk.printTree cname-  Rzk.ParamPatternShape{} -> issueTypeError $ TypeErrorOther $-    "constructor " <> Rzk.printTree cname-      <> " takes a cube or shape argument; over the directed interval this would declare a directed cell, which is not supported"-  Rzk.ParamPatternModalType{} -> modalFieldError cname-  Rzk.ParamPatternModalShape{} -> modalFieldError cname +-- | Modal /type/ fields are deferred; modal /cube/ and /shape/ fields are+-- accepted. The line between them is drawn by recursion, not by \"crisp+-- induction\".+--+-- A modal field of any kind is an ordinary constructor argument sitting+-- under a lock; the ordinary eliminator suffices for it, binding the field+-- with its modality so the lock discipline applies inside a branch, and no+-- new principle is involved. /Crisp induction/ — eliminating a crisp+-- @x :♭ D@ by cases — is a separate principle that @#data@ does not+-- provide either way.+--+-- What does distinguish the kinds is that a type field can be /recursive/,+-- and the recursion and positivity bookkeeping ('dataConSurface' collects+-- @fieldTypes@ and the probe from plain 'Rzk.ParamTermType' declarations+-- only) does not see through a modal binder: a modal recursive field would+-- silently evade the positivity probe and the induction-hypothesis+-- machinery. A cube or shape field cannot be recursive — its domain is not+-- a type — so nothing is evaded, and the modal form is as safe as the+-- plain one. modalFieldError :: Distinct n => Rzk.VarIdent -> TypeCheck n a modalFieldError cname = issueTypeError $ TypeErrorOther $-  "modal fields are not supported yet in constructor " <> Rzk.printTree cname+  "modal type fields are not supported yet in constructor " <> Rzk.printTree cname +-- | The field rule, on the elaborated form: a constructor field must be a+-- type, a cube point, or a shape. That is the realisation fragment of+-- Kudasov's 2021 note — points go /into/ constructors and the eliminator+-- maps out into types — and nothing beyond it: a field of the cube universe,+-- of a tope-family kind, or of a modal cube or tope kind would /store/ a cube- or+-- tope-layer citizen inside type-layer data, which no written metatheory+-- covers ('DomainKind' names the rejected kinds).+--+-- The modal spelling adds one distinction the surface cannot make:+-- @(t :♭ Δ¹)@ and @(x :♭ A)@ are the same surface form+-- ('Rzk.ParamPatternModalType'), and only elaboration tells a named shape+-- from a type. A modal binder with a cube or shape domain is an ordinary+-- (modal) cube or shape field; with a type domain it is rejected+-- ('modalFieldError'). The check walks the elaborated constructor+-- Π-telescope past the parameters, exactly as 'checkDataSortLayers' does+-- for the sort.+checkDataConFieldLayers+  :: Distinct n+  => Rzk.VarIdent -> Int -> [Rzk.ParamDecl] -> TermT n -> TypeCheck n ()+checkDataConFieldLayers cname numParams fieldDecls =+  go (replicate numParams Nothing <> map fieldInfo fieldDecls)+  where+    fieldInfo d = Just (isModalTypeSpelling d, spelledField d)+    isModalTypeSpelling = \case+      Rzk.ParamTermModalType{} -> True+      _                        -> False+    spelledField = \case+      Rzk.ParamTermType _ _ ty -> Rzk.printTree ty+      d                        -> Rzk.printTree d+    go :: Distinct m => [Maybe (Bool, String)] -> TermT m -> TypeCheck m ()+    go [] _ = pure ()+    go (checkInfo : rest) ty = whnfT ty >>= \case+      TypeFunT _ty orig md param mtope ret -> do+        forM_ checkInfo $ \(modalSpelled, spelled) -> case mtope of+          Just _  -> pure ()   -- a shape field, in any spelling and modality+          Nothing -> classifyDomain param >>= \case+            DomainCubePoint -> pure ()+            DomainType+              | modalSpelled -> modalFieldError cname+              | otherwise    -> pure ()+            kind -> issueTypeError $ TypeErrorOther $+              "a field of constructor " <> Rzk.printTree cname+                <> " must be a type, a cube point, or a shape, got "+                <> domainKindName kind <> ": " <> spelled+        inScope orig md param ret (go rest)+      _ -> panicImpossible "constructor type has fewer Π binders than parameters and fields"+ dataConSurface   :: Distinct n   => Rzk.VarIdent -> [Rzk.VarIdent] -> [Rzk.ParamDecl] -> Int -> Rzk.Constructor@@ -616,12 +846,22 @@     , dataConSort = sort     }   where+    -- A shape field binds a cube variable, so it contributes a field variable+    -- and a field pattern exactly as a plain typed field does. Without these+    -- cases the field's type reaches the constructor but its binder does not,+    -- and 'conApplied' applies the constructor to too few arguments.     fieldVars = \case-      Rzk.ParamPatternType _ pats _ -> concatMap surfacePatternVars pats-      _                             -> []+      Rzk.ParamPatternType _ pats _           -> concatMap surfacePatternVars pats+      Rzk.ParamPatternShape _ pats _ _        -> concatMap surfacePatternVars pats+      Rzk.ParamPatternModalType _ pats _ _    -> concatMap surfacePatternVars pats+      Rzk.ParamPatternModalShape _ pats _ _ _ -> concatMap surfacePatternVars pats+      _                                       -> []     fieldPats = \case-      Rzk.ParamPatternType _ pats _ -> map patternToTerm pats-      _                             -> []+      Rzk.ParamPatternType _ pats _           -> map patternToTerm pats+      Rzk.ParamPatternShape _ pats _ _        -> map patternToTerm pats+      Rzk.ParamPatternModalType _ pats _ _    -> map patternToTerm pats+      Rzk.ParamPatternModalShape _ pats _ _ _ -> map patternToTerm pats+      _                                       -> []     isIdentity = \case       Rzk.TypeId{}       -> True       Rzk.TypeIdSimple{} -> True@@ -685,6 +925,10 @@   -> (forall l. (DExt n l, Distinct l) => [Decl l] -> TypeCheck l r)   -> TypeCheck n r withDataDecls path used name paramVars paramDecls sortIndices consData elims k = do+  safe <- asks rsttSafeEnabled+  when safe $ do+    loc <- asks ctxLocation+    recordCheckWarning $ RSTTScopeWarning RSTTInductive "inductive declaration" loc   -- The type former's type spells the sort as written: params → indices → U.   let sortTerm = foldr wrapIndex (Rzk.Universe Nothing) sortIndices       wrapIndex (SortIndex mv ty) body = case mv of@@ -692,6 +936,7 @@         Nothing -> surfaceArrow ty body   dTyTerm <- elaborate (addParamDecls paramDecls sortTerm)   dTy <- memoizeWHNF =<< typecheck dTyTerm universeT+  checkDataSortLayers paramDecls sortIndices dTy   dDeps <- assumptionDepsOf dTy   withTopLevel (varIdentAt path name) dTy Nothing False     (nubNames (used <> dDeps)) Nothing $ \dBinder dDecl ->@@ -741,6 +986,7 @@           loc       conTyTerm <- elaborate (dataConType con)       conTy <- memoizeWHNF =<< typecheck conTyTerm universeT+      checkDataConFieldLayers (dataConName con) numParams (dataConFields con) conTy       conDeps <- assumptionDepsOf conTy       let conSort = case dataConSort con of             DataConPoint  -> PointCon@@ -864,37 +1110,51 @@       -- The surface types of the eliminators and the path computation rules       -- (see "Rzk.TypeCheck.Decl.Data"), pushed through the ordinary       -- elaborator below just like any user-written type.-      let spec = ElimSpec-            { esName = name, esParamVars = paramVars, esParamDecls = paramDecls+      let spec md = ElimSpec+            { esName = name, esModality = md+            , esParamVars = paramVars, esParamDecls = paramDecls             , esIndexVars = indexVars, esIndexDecls = indexDecls, esMotiveV = motiveV             , esScrutV = scrutV, esIhNames = ihNames, esMethodVars = methodVars             , esEndpointV = endpointV, esPathV = pathV, esTransportV = transportV             , esConsData = consData, esPathData = pathData }-          et = elimTerms spec-          indName = prefixedIdent "ind-" name-          recName = prefixedIdent "rec-" name-      (mindTy, mrecTy, computeReasc) <- splitClauses indName recName (map fst (computeRules et))-      indTyT <- elaborate (indTypeTerm et)-      indCanonical <- memoizeWHNF =<< typecheck indTyT universeT-      indTy' <- reascribe indName indCanonical mindTy-      indDeps <- assumptionDepsOf indTy'-      withTopLevel (varIdentAt path indName) indTy' Nothing False-        (nubNames (usedHere <> indDeps))-        (Just (DataRole dName numParams (DataElimKind numMethods indexArity ElimInd))) $ \_ indDecl -> do-          recTyT <- elaborate (recTypeTerm et)-          recCanonical <- memoizeWHNF =<< typecheck recTyT universeT-          recTy' <- reascribe recName recCanonical mrecTy-          recDeps <- assumptionDepsOf recTy'-          let usedAtInd = Foil.sink1 usedHere-          withTopLevel (varIdentAt path recName) recTy' Nothing False-            (nubNames (usedAtInd <> recDeps))-            (Just (DataRole (Foil.sink dName) numParams (DataElimKind numMethods indexArity ElimRec))) $ \_ recDecl ->-              bindComputes-                (Foil.sink1 usedAtInd)-                computeReasc-                (computeRules et)-                (sinkDecls (sinkDecls declsAcc <> [indDecl]) <> [recDecl])+          -- Modal eliminators are crisp induction (Shulman 2018, §5), valid+          -- for the left adjoints ♭ and ᵒᵖ. There is none for ♯: a right+          -- adjoint does not preserve coproducts or initial algebras (MTT,+          -- §10.5), and rec-sharp-Bool would retract ♯ Bool onto Bool.+          modalities = if hasPaths then [Id] else [Id, Op, Flat]+          modalTerms = [ (md, elimTerms (spec md)) | md <- modalities ]+          generated = concat+            [ [ (md, ElimInd, elimIdent "ind" md name, indTypeTerm et)+              , (md, ElimRec, elimIdent "rec" md name, recTypeTerm et) ]+            | (md, et) <- modalTerms ]+          computes = concatMap (computeRules . snd) modalTerms+      (elimReasc, computeReasc) <- splitClauses+        [ n | (_, _, n, _) <- generated ] (map fst computes)+      bindEliminators dName usedHere elimReasc computeReasc computes generated declsAcc +    bindEliminators+      :: forall m. DExt n m+      => Foil.Name m -> [Foil.Name m]+      -> [(Rzk.VarIdentToken, Rzk.Term)]+      -> [(Rzk.VarIdentToken, Rzk.Term)]+      -> [(Rzk.VarIdent, Rzk.Term)]+      -> [(TModality, ElimKind, Rzk.VarIdent, Rzk.Term)]+      -> [Decl m]+      -> TypeCheck m r+    bindEliminators _dName usedHere _elimReasc computeReasc computes [] acc =+      bindComputes usedHere computeReasc computes acc+    bindEliminators dName usedHere elimReasc computeReasc computes+        ((md, kind, elimName, elimTy) : rest) acc = do+      tyT <- elaborate elimTy+      canonical <- memoizeWHNF =<< typecheck tyT universeT+      ty' <- reascribe elimName canonical (lookup (identTokenOf elimName) elimReasc)+      deps <- assumptionDepsOf ty'+      withTopLevel (varIdentAt path elimName) ty' Nothing False+        (nubNames (usedHere <> deps))+        (Just (DataRole dName numParams (DataElimKind md numMethods indexArity kind))) $ \_ decl ->+          bindEliminators (Foil.sink dName) (Foil.sink1 usedHere)+            elimReasc computeReasc computes rest (sinkDecls acc <> [decl])+     -- | Bind the generated @compute-@ lemmas (one @ind@/@rec@ pair per     -- path constructor), re-ascribing the ones a @compute with@ clause     -- names, then hand the accumulated declarations to the continuation of@@ -915,37 +1175,29 @@           bindComputes (Foil.sink1 usedHere) reasc rest             (sinkDecls acc <> [decl]) -    -- | Split the re-ascription clauses among the generated entries: the-    -- two eliminators (@eliminate with@) and the computation rules of the-    -- path constructors (@compute with@). A clause must name an entry of-    -- the matching kind, at most once each.     splitClauses       :: Distinct m-      => Rzk.VarIdent -> Rzk.VarIdent -> [Rzk.VarIdent]+      => [Rzk.VarIdent] -> [Rzk.VarIdent]       -> TypeCheck m-           (Maybe Rzk.Term, Maybe Rzk.Term, [(Rzk.VarIdentToken, Rzk.Term)])-    splitClauses indName recName computeNames = go (Nothing, Nothing, []) elims+           ([(Rzk.VarIdentToken, Rzk.Term)], [(Rzk.VarIdentToken, Rzk.Term)])+    splitClauses elimNames computeNames = go ([], []) elims       where         go acc [] = pure acc-        go (mind, mrec, mcomp) (Rzk.DataElim _loc elimName ty : rest)-          | sameIdent elimName indName =-              case mind of-                Nothing -> go (Just ty, mrec, mcomp) rest-                Just _  -> duplicate elimName-          | sameIdent elimName recName =-              case mrec of-                Nothing -> go (mind, Just ty, mcomp) rest-                Just _  -> duplicate elimName+        go (melims, mcomp) (Rzk.DataElim _loc elimName ty : rest)+          | any (sameIdent elimName) elimNames =+              if identTokenOf elimName `elem` map fst melims+                then duplicate elimName+                else go (melims <> [(identTokenOf elimName, ty)], mcomp) rest           | otherwise = issueTypeError $ TypeErrorOther $               "eliminate with clause for " <> Rzk.printTree elimName                 <> ", which is not an eliminator of " <> Rzk.printTree name-                <> " (the eliminators are " <> Rzk.printTree indName-                <> " and " <> Rzk.printTree recName <> ")"-        go (mind, mrec, mcomp) (Rzk.DataCompute _loc ruleName ty : rest)+                <> " (the eliminators are "+                <> intercalate ", " (map Rzk.printTree elimNames) <> ")"+        go (melims, mcomp) (Rzk.DataCompute _loc ruleName ty : rest)           | any (sameIdent ruleName) computeNames =               if identTokenOf ruleName `elem` map fst mcomp                 then duplicate ruleName-                else go (mind, mrec, mcomp <> [(identTokenOf ruleName, ty)]) rest+                else go (melims, mcomp <> [(identTokenOf ruleName, ty)]) rest           | otherwise = issueTypeError $ TypeErrorOther $               "compute with clause for " <> Rzk.printTree ruleName                 <> ", which is not a computation rule of " <> Rzk.printTree name@@ -1117,6 +1369,13 @@         Nothing -> Hole (Just (markUnresolved name))   pure (toTerm (ctxScope ctx) env term) +-- Check user syntax; generated inductive declarations are already excluded.+elaborateChecked :: Distinct n => Rzk.Term -> TypeCheck n (Term n)+elaborateChecked term = do+  core <- elaborate term+  atSurface term $ RSTT.recordSyntaxUses core+  pure core+ -- | Is a surface identifier defined at the top level? checkDefined :: Distinct n => VarIdent -> TypeCheck n (Foil.Name n) checkDefined name = asks (lookupNamed name) >>= \case@@ -1179,7 +1438,7 @@         typeResult <- tryCheck $ do           used <- mapM (checkDefined . varIdentAt path) vars           paramDecls <- concat <$> mapM paramToParamDecl params-          tyTerm <- elaborate (addParamDecls paramDecls ty)+          tyTerm <- elaborateChecked (addParamDecls paramDecls ty)           ty' <- atSurface ty $ memoizeWHNF =<< typecheck tyTerm universeT           pure (used, ty')         case typeResult of@@ -1191,8 +1450,15 @@             -- against it and its own errors and holes reported, instead of the             -- run stopping at this one.             result <- tryCheck $ do-              valTerm <- elaborate (addParams params term)-              atSurface term $ memoizeWHNF =<< typecheck valTerm ty'+              valTerm <- elaborateChecked (addParams params term)+              val' <- atSurface term $ memoizeWHNF =<< typecheck valTerm ty'+              -- A definition at type U must define a type: a body that is a+              -- universe kind would be a synonym smuggling the kind into+              -- every position that accepts U.+              whnfT ty' >>= \case+                UniverseT{} -> ensureTypeAtU "a definition at type U" val'+                _           -> pure ()+              pure val'             let (mvalue, bodyErrors) = case result of                   Right term'  -> (Just term', [])                   Left bodyErr -> (Nothing, [bodyErr])@@ -1229,7 +1495,7 @@         typeResult <- tryCheck $ do           used <- mapM (checkDefined . varIdentAt path) vars           paramDecls <- concat <$> mapM paramToParamDecl params-          tyTerm <- elaborate (addParamDecls paramDecls ty)+          tyTerm <- elaborateChecked (addParamDecls paramDecls ty)           ty' <- atSurface ty $ memoizeWHNF =<< typecheck tyTerm universeT           pure (used, ty')         case typeResult of@@ -1244,7 +1510,7 @@         <> intercalate " " [ Rzk.printTree name | name <- names ]) $       withCommand command k $ do         typeResult <- tryCheck $ do-          tyTerm <- elaborate ty+          tyTerm <- elaborateChecked ty           atSurface ty $ typecheck tyTerm universeT         case typeResult of           Left typeError -> skippingCommand typeError path i total more k@@ -1259,10 +1525,13 @@         -- A #check declares nothing, so its failure costs the rest of the file         -- nothing either.         result <- tryCheck $ do-          tyTerm <- elaborate ty-          ty' <- atSurface ty $ typecheck tyTerm universeT >>= whnfT-          termTerm <- elaborate term-          _term' <- atSurface term $ typecheck termTerm ty'+          tyTerm <- elaborateChecked ty+          ty' <- atSurface ty $ typecheck tyTerm universeT+          termTerm <- elaborateChecked term+          term' <- atSurface term $ typecheck termTerm ty'+          recordMetaPrefixUses "#check" ty' (Just term')+          RSTT.recordFragmentUses "#check" ty' (Just term') False+          _ <- recordSchematicDeclaration "#check" ty' (Just term')           pure ()         case result of           Left err -> skippingCommand err path i total more k@@ -1275,8 +1544,12 @@     announce (" Computing NF for " <> Rzk.printTree term) $       withCommand command k $ do         result <- tryCheck $ do-          term' <- atSurface term $ elaborate term >>= infer >>= nfT-          ppInContext term'+          term' <- atSurface term $ elaborateChecked term >>= infer+          ty' <- typeOfUncomputed term'+          recordMetaPrefixUses "#compute-nf" ty' (Just term')+          RSTT.recordFragmentUses "#compute-nf" ty' (Just term') False+          _ <- recordSchematicDeclaration "#compute-nf" ty' (Just term')+          nfT term' >>= ppInContext         case result of           Left err -> skippingCommand err path i total more k           Right shown -> traceTypeCheck Normal ("  " <> shown) $@@ -1286,8 +1559,12 @@     announce (" Computing WHNF for " <> Rzk.printTree term) $       withCommand command k $ do         result <- tryCheck $ do-          term' <- atSurface term $ elaborate term >>= infer >>= whnfT-          ppInContext term'+          term' <- atSurface term $ elaborateChecked term >>= infer+          ty' <- typeOfUncomputed term'+          recordMetaPrefixUses "#compute" ty' (Just term')+          RSTT.recordFragmentUses "#compute" ty' (Just term') False+          _ <- recordSchematicDeclaration "#compute" ty' (Just term')+          whnfT term' >>= ppInContext         case result of           Left err -> skippingCommand err path i total more k           Right shown -> traceTypeCheck Normal ("  " <> shown) $
src/Rzk/TypeCheck/Decl/Data.hs view
@@ -19,7 +19,12 @@ import           Data.Data          (Data, cast, gmapQ) import qualified Data.Text          as T +import           Language.Rzk.Foil.Names (TModality (..),+                                           fromMod,+                                           fromTModalityToModalColon,+                                           modalColonToTModality) import qualified Language.Rzk.Syntax as Rzk+import           Rzk.TypeCheck.Context (ModeTheory (comp)) import           Rzk.TypeCheck.Display (panicImpossible)  -- * Surface-syntax builders and preprocessed forms@@ -166,6 +171,46 @@ prefixedIdent p (Rzk.VarIdent pos (Rzk.VarIdentToken t)) =   Rzk.VarIdent pos (Rzk.VarIdentToken (p <> t)) +modalityPrefix :: TModality -> T.Text+modalityPrefix = \case+  Id    -> ""+  Op    -> "op-"+  Flat  -> "b-"+  Sharp -> "sharp-"++elimIdent :: T.Text -> TModality -> Rzk.VarIdent -> Rzk.VarIdent+elimIdent kind md = prefixedIdent (kind <> "-" <> modalityPrefix md)++modalizeParamDecl :: TModality -> Rzk.ParamDecl -> Rzk.ParamDecl+modalizeParamDecl Id param = param+modalizeParamDecl md param = case param of+  Rzk.ParamType loc ty ->+    Rzk.ParamTermModalType loc (surfaceVar underscoreIdent)+      (fromTModalityToModalColon md) ty+  Rzk.ParamTermType loc pat ty ->+    Rzk.ParamTermModalType loc pat (fromTModalityToModalColon md) ty+  Rzk.ParamTermShape loc pat cube tope ->+    Rzk.ParamTermModalShape loc pat (fromTModalityToModalColon md) cube+      (Rzk.ModType Nothing (fromMod md) tope)+  Rzk.ParamTermModalType loc pat mc ty ->+    Rzk.ParamTermModalType loc pat+      (fromTModalityToModalColon (comp md (modalColonToTModality mc))) ty+  Rzk.ParamTermModalShape loc pat mc cube tope ->+    Rzk.ParamTermModalShape loc pat+      (fromTModalityToModalColon (comp md (modalColonToTModality mc))) cube+      (Rzk.ModType Nothing (fromMod md) tope)++surfaceArrowModal :: TModality -> Rzk.Term -> Rzk.Term -> Rzk.Term+surfaceArrowModal Id = surfaceArrow+surfaceArrowModal md = surfacePiModal md underscoreIdent++surfacePiModal :: TModality -> Rzk.VarIdent -> Rzk.Term -> Rzk.Term -> Rzk.Term+surfacePiModal Id v ty ret = surfacePi v ty ret+surfacePiModal md v ty ret =+  Rzk.TypeFun Nothing+    (Rzk.ParamTermModalType Nothing (surfaceVar v)+      (fromTModalityToModalColon md) ty) ret+ -- | Index into a list that is long enough by construction, panicking with a -- label instead of the opaque @Prelude.!!@ message if that invariant is ever -- broken. Used where an index is derived from the same data as the list (the@@ -191,6 +236,7 @@ -- validated. data ElimSpec = ElimSpec   { esName       :: Rzk.VarIdent+  , esModality   :: TModality   , esParamVars  :: [Rzk.VarIdent]   , esParamDecls :: [Rzk.ParamDecl]   , esIndexVars  :: [Rzk.VarIdent]@@ -225,7 +271,8 @@     }   where     ElimSpec-      { esName = name, esParamVars = paramVars, esParamDecls = paramDecls+      { esName = name, esModality = elimMd+      , esParamVars = paramVars, esParamDecls = paramDecls       , esIndexVars = indexVars, esIndexDecls = indexDecls, esMotiveV = motiveV       , esScrutV = scrutV, esIhNames = ihNames, esMethodVars = methodVars       , esEndpointV = endpointV, esPathV = pathV, esTransportV = transportV@@ -236,9 +283,9 @@     -- The motive abstracts over the indices (and, dependently, the     -- scrutinee); a method's hypotheses and codomain instantiate it     -- at the relevant index terms.-    motiveSort dependent = addParamDecls indexDecls $+    motiveSort dependent = addParamDecls (map (modalizeParamDecl elimMd) indexDecls) $       if dependent-        then surfaceArrow dAppliedIx (Rzk.Universe Nothing)+        then surfaceArrowModal elimMd dAppliedIx (Rzk.Universe Nothing)         else Rzk.Universe Nothing     -- The constructor applied to the parameters and its own fields     -- (for a path constructor, this is the declared identification).@@ -277,17 +324,17 @@             | otherwise -> Rzk.TypeIdSimple Nothing iL iR         wrapFields nRec ((j, (fieldDecl, fpat)) : more)           | Just fieldIxs <- lookup j (dataConRecursive con) =-              Rzk.TypeFun Nothing fieldDecl $+              Rzk.TypeFun Nothing (modalizeParamDecl elimMd fieldDecl) $                 surfacePi (nthByConstruction "induction hypotheses" ihNames nRec)                   (surfaceApps motive (fieldIxs <> [ fpat | dependent ]))                   (wrapFields (nRec + 1) more)           | otherwise =-              Rzk.TypeFun Nothing fieldDecl (wrapFields nRec more)-    elimTail dependent = addParamDecls indexDecls $+              Rzk.TypeFun Nothing (modalizeParamDecl elimMd fieldDecl) (wrapFields nRec more)+    elimTail dependent = addParamDecls (map (modalizeParamDecl elimMd) indexDecls) $       if dependent-        then surfacePi scrutV dAppliedIx $+        then surfacePiModal elimMd scrutV dAppliedIx $           surfaceApps motive (map surfaceVar indexVars <> [surfaceVar scrutV])-        else surfaceArrow dAppliedIx $+        else surfaceArrowModal elimMd dAppliedIx $           surfaceApps motive (map surfaceVar indexVars)     conWithPath = zip consData pathData     methodsPis dependent inner = case methodVars of@@ -295,11 +342,11 @@       Just ms -> foldr         (\(m, cp) rest -> surfacePi m (methodTy dependent cp) rest)         inner (zip ms conWithPath)-    elimTy dependent = addParamDecls paramDecls $+    elimTy dependent = addParamDecls (map (modalizeParamDecl elimMd) paramDecls) $       surfacePi motiveV (motiveSort dependent) $         methodsPis dependent (elimTail dependent)-    indName = prefixedIdent "ind-" name-    recName = prefixedIdent "rec-" name+    indName = elimIdent "ind" elimMd name+    recName = elimIdent "rec" elimMd name     -- The propositional β-lemma per path constructor and eliminator:     -- the section's action on the constructor's path (ap/apd, spelled     -- through idJ) equals the path method at the fields, with the@@ -312,10 +359,10 @@       [ fpat : [ Rzk.App Nothing f fpat | j `elem` recPositionsOf con ]       | (j, fpat) <- zip [0 :: Int ..] (dataConFieldPats con) ]     computeTy dependent elimIdent m con l r =-      addParamDecls paramDecls $+      addParamDecls (map (modalizeParamDecl elimMd) paramDecls) $         surfacePi motiveV (motiveSort dependent) $           methodsPis dependent $-            addParamDecls (dataConFields con) $+            addParamDecls (map (modalizeParamDecl elimMd) (dataConFields con)) $               let f = sectionOf elimIdent                   fAt = Rzk.App Nothing f                   -- apd (dependent) or ap: the motive of the outer@@ -332,17 +379,18 @@                     (Rzk.Refl Nothing) r (conApplied con)                   rhs = surfaceApps (surfaceVar m) (methodArgs f con)                in Rzk.TypeIdSimple Nothing lhs rhs-    computeNameFor pfx con =+    computeNameFor kind con =       let Rzk.VarIdent pos (Rzk.VarIdentToken d) = name           Rzk.VarIdentToken c = identTokenOf (dataConName con)-       in Rzk.VarIdent pos (Rzk.VarIdentToken (pfx <> d <> "-" <> c))+       in Rzk.VarIdent pos+            (Rzk.VarIdentToken ("compute-" <> kind <> "-" <> modalityPrefix elimMd <> d <> "-" <> c))     computes = case methodVars of       Nothing -> []       Just ms ->         [ entry         | (m, (con, Just ((l, r), _))) <- zip ms conWithPath         , entry <--            [ ( computeNameFor "compute-ind-" con+            [ ( computeNameFor "ind" con               , computeTy True indName m con l r )-            , ( computeNameFor "compute-rec-" con+            , ( computeNameFor "rec" con               , computeTy False recName m con l r ) ] ]
src/Rzk/TypeCheck/Error.hs view
@@ -23,21 +23,27 @@ import           Data.List                (intercalate)  import           Language.Rzk.Foil.Syntax-import           Language.Rzk.Foil.Names (TModality (..), VarIdent, getVarIdent,+import           Language.Rzk.Foil.Names (Binder, TModality (..), VarIdent,+                                           binderDisplayName, getVarIdent,                                            ppVarIdentWithLocation) import qualified Language.Rzk.Syntax      as Rzk import           Rzk.TypeCheck.Context import           Rzk.TypeCheck.Display +data SchematicProblem = SchematicKindMismatch | SchematicUnsupported | SchematicDependency+  deriving (Eq)+ data TypeError n   = TypeErrorOther String+  | TypeErrorRSTT String+  | TypeErrorSchematic SchematicProblem String   | TypeErrorUnify (TermT n) (TermT n) (TermT n)   | TypeErrorUnifyTerms (TermT n) (TermT n)   | TypeErrorNotPair (TermT n) (TermT n)-  | TypeErrorNotModal (Term n) TModality (TermT n)-  | TypeErrorModalityMismatch TModality TModality (Term n)+  | TypeErrorNotModal ModalTypeExpectation (Term n) TModality (TermT n)+  | TypeErrorModalityMismatch ModalityMismatchSite TModality TModality (Maybe (Term n))   | TypeErrorUnaccessibleVar (Foil.Name n) TModality TModality-  | TypeErrorNotTypeInModal (TermT n)+  | TypeErrorNotTypeInModal TModality (Term n) (TermT n)   | TypeErrorNotFunction (TermT n) (TermT n)   | TypeErrorUnexpectedLambda (Term n) (TermT n)   | TypeErrorUnexpectedPair (Term n) (TermT n)@@ -65,6 +71,18 @@   | TypeErrorMatchBranchArity VarIdent Int Int   | TypeErrorReascribedTypeMismatch VarIdent (TermT n) (TermT n) +data ModalTypeExpectation+  = ModalTypeForIntroduction+  | ModalTypeForElimination++data ModalityMismatchSite+  = MismatchLambdaParameter Binder+  | MismatchModalIntroduction+  | MismatchModalElimination+  | MismatchFunctionType+  | MismatchSigmaType+  | MismatchLambda+ -- | An error, together with the context it was raised in. -- -- The scope index is existential: an error raised under a binder is /already/@@ -99,6 +117,8 @@ ppTypeError :: Naming n -> TypeError n -> String ppTypeError naming = \case   TypeErrorOther msg -> msg+  TypeErrorSchematic _ msg -> "schematic declaration: " <> msg+  TypeErrorRSTT msg -> "RSTT-safe mode: " <> msg   TypeErrorUnify term expected actual -> block TopDown     [ "cannot unify expected type"     , "  " <> ppU (untyped expected)@@ -121,28 +141,35 @@         TypeFunT{} -> "\nPerhaps the term is applied to too few arguments?"         _          -> ""     ]-  TypeErrorNotModal term m ty -> block TopDown-    [ "expected modal type " <> ppModality m <> " ?"-    , "but got type"-    , "  " <> ppU (untyped ty)-    , "for term"-    , "  " <> ppU term+  TypeErrorNotModal expectation term modality ty -> block TopDown $+    case expectation of+      ModalTypeForIntroduction ->+        [ "cannot check modal introduction against a non-modal type"+        , "  term: " <> ppU term+        , "  expected type: " <> ppU (untyped ty)+        , "the expected type must have the form " <> ppModality modality <> " T"+        ]+      ModalTypeForElimination ->+        [ "cannot eliminate a non-modal value with `let mod " <> ppModality modality <> "`"+        , "  value: " <> ppU term+        , "  type:  " <> ppU (untyped ty)+        , "the value's type must have the form " <> ppModality modality <> " T"+        ]+  TypeErrorModalityMismatch site expected actual mterm -> block TopDown $+    mismatchLines site expected actual+      <> maybe [] (\term -> ["in term", "  " <> ppU term]) mterm+  TypeErrorUnaccessibleVar var varMod locks -> block TopDown+    [ "variable " <> ppVar var <> " is inaccessible in the current modal context"+    , "  declared modality: " <> ppModality varMod+    , "  current locks:      " <> ppModality locks     ]-  TypeErrorModalityMismatch expected actual term -> block TopDown-    [ "modality mismatch"-    , "  expected " <> ppModality expected-    , "  but got  " <> ppModality actual-    , "for term"+  TypeErrorNotTypeInModal modality term ty -> block TopDown+    [ "cannot form modal type " <> ppModality modality <> " " <> ppU term+    , "the expression"     , "  " <> ppU term-    ]-  TypeErrorUnaccessibleVar _var varMod locks -> block TopDown-    [ "unaccessible var with modality " <> ppModality varMod-    , "  under locks " <> ppModality locks-    ]-  TypeErrorNotTypeInModal ty -> block TopDown-    [ "expected a type inside modal type"-    , "but got"+    , "has type"     , "  " <> ppU (untyped ty)+    , "but its type must be U, CUBE, or TOPE"     ]    TypeErrorUnexpectedLambda term ty -> block TopDown@@ -301,6 +328,37 @@     ppU = ppTerm naming     ppTyped = ppTermT naming     ppVar = ppName naming+    mismatchLines site expected actual = case site of+      MismatchLambdaParameter binder ->+        [ "modality mismatch in lambda parameter " <> show (binderDisplayName binder)+        , "  expected from function type: " <> ppModality expected+        , "  written on parameter:        " <> ppModality actual+        ]+      MismatchModalIntroduction ->+        [ "modality mismatch in modal introduction"+        , "  expected by result type: " <> ppModality expected+        , "  written after `mod`:     " <> ppModality actual+        ]+      MismatchModalElimination ->+        [ "modality mismatch in modal elimination"+        , "  expected by `let mod`: " <> ppModality expected+        , "  value's modality:     " <> ppModality actual+        ]+      MismatchFunctionType ->+        [ "cannot unify function types with different parameter modalities"+        , "  expected: " <> ppModality expected+        , "  actual:   " <> ppModality actual+        ]+      MismatchSigmaType ->+        [ "cannot unify dependent pair types with different parameter modalities"+        , "  expected: " <> ppModality expected+        , "  actual:   " <> ppModality actual+        ]+      MismatchLambda ->+        [ "cannot unify lambda abstractions with different parameter modalities"+        , "  expected: " <> ppModality expected+        , "  actual:   " <> ppModality actual+        ]  ppAction :: Naming n -> Int -> Action n -> String ppAction naming n = unlines . map (replicate (2 * n) ' ' <>) . \case@@ -418,10 +476,12 @@         Nothing -> "  Error occurred outside of any command!"     ]   , ""-  , case filter (not . isTopeTop) (availableTopes ctx) of+  , case filter (not . isTopeTop . tTope) ctxTopes of       [] -> "Local tope context is unrestricted (⊤)."       topes -> namedBlock TopDown "Local tope context:"-        [ "  " <> ppU (untyped tope)+        [ "  " <> availability (isAccessible tope)+            <> ppU (untyped (tTope tope))+            <> modalSuffix (tModVar tope) (tModAccum tope)         | tope <- topes ]   , ""   , block dir@@ -429,12 +489,20 @@     | action <- ctxActionStack ]   , namedBlock TopDown "Definitions in context:"     [ block dir-      [ ppName naming name <> " : " <> ppU (untyped (varType info))+      [ availability  (isVarAccessible info)+          <> ppName naming name <> " : " <> ppU (untyped (varType info))+          <> modalSuffix (varModality info) (varModAccum info)       | (name, info) <- reverse (varsInScope ctx) ] ]   ]   where     naming = namingOfContext ctx     ppU = ppTerm naming+    availability True  = ""+    availability False = "× "+    modalSuffix Id Id = ""+    modalSuffix modality locks =+      "  [modality: " <> ppModality modality+        <> ", locks: " <> ppModality locks <> "]"     isTopeTop TopeTopT{} = True     isTopeTop _          = False 
src/Rzk/TypeCheck/Eval.hs view
@@ -78,6 +78,40 @@ typeOf :: Distinct n => TermT n -> TypeCheck n (TermT n) typeOf t = typeOfUncomputed t >>= whnfT +typeUnderModal :: TModality -> TermT n -> Maybe (TermT n)+typeUnderModal m ty = case stripTypeRestrictions ty of+  TypeModalT _ m' inner | m' == m -> Just inner+  _                               -> Nothing++valueUnderModal :: TModality -> TermT n -> Maybe (TermT n)+valueUnderModal m = \case+  ModAppT _ m' t | m' == m -> Just t+  _                        -> Nothing++requireTypeUnderModal :: Distinct n => TModality -> TermT n -> TypeCheck n (TermT n)+requireTypeUnderModal m t = do+  ty <- typeOf t+  case typeUnderModal m ty of+    Just inner -> pure inner+    Nothing    -> do+      ctx <- ask+      let naming = namingOfContext ctx+      panicImpossible $ unlines+        [ "not modal in letmod"+        , "term: " <> ppTermT naming t+        , "type: " <> ppTermT naming ty+        , "expected modality: " <> show m+        , "action stack:"+        , concatMap (ppAction naming 0) (take 16 (ctxActionStack ctx))+        ]++extractModal :: Distinct n => TModality -> TModality -> TermT n -> TypeCheck n (Maybe (TermT n))+extractModal app inn t+  | isRA inn = do+      bty <- requireTypeUnderModal inn t+      pure (Just (modExtractT bty app inn t))+  | otherwise = pure Nothing+ -- | The free variables of a typed term, including those that occur only in the -- /types/ of the variables it mentions. --@@ -157,6 +191,7 @@   , varDeclaredAssumptions = []   , varLocation = loc   , varDataRole = Nothing+  , varSchematicStatus = SchematicUnchecked   , varMetaPrefix = 0   } @@ -762,7 +797,9 @@       | goal `elemT` topes -> return True       | solveRHS topes (topeEQT l r) -> return True       | solveRHS topes (topeEQT l cube2_0T) -> return True+      | solveRHS topes (topeEQT l cubeI_0T) -> return True       | solveRHS topes (topeEQT r cube2_1T) -> return True+      | solveRHS topes (topeEQT r cubeI_1T) -> return True     TopeLEQT _ty (CubeSupT _ a b) r ->       solveRHSM modalTopes (topeAndT (topeLEQT a r) (topeLEQT b r))     TopeLEQT _ty l (CubeInfT _ a b) ->@@ -831,7 +868,9 @@       | eqT l r -> True       | solveRHS topes (topeEQT l r) -> True       | solveRHS topes (topeEQT l cube2_0T) -> True+      | solveRHS topes (topeEQT l cubeI_0T) -> True       | solveRHS topes (topeEQT r cube2_1T) -> True+      | solveRHS topes (topeEQT r cubeI_1T) -> True     TopeAndT _ l r -> solveRHS topes l && solveRHS topes r     TopeOrT  _ l r -> solveRHS topes l || solveRHS topes r     _ -> tope `elemT` topes@@ -919,10 +958,10 @@ --   * DISJOINT — the tope and a consistent context have empty overlap (their --     conjunction is ⊥). The face or branch is then vacuous everywhere, so this is --     a hard error.---   * OVERHANG — the tope is not entailed by the context but still overlaps it.+--   * OVERHANG — the tope does not entail the context but still overlaps it. --     This is allowed and often intentional (splitting or restricting with an --     already-defined shape, whose faces live on the whole cube rather than being---     relativised to the context), so we only emit a non-fatal hint.+--     relativised to the context), so we only emit a non-fatal warning. --   * CONTAINED — the tope entails the context: nothing to report. checkTopeAgainstContext :: Distinct n => String -> TermT n -> TypeCheck n () checkTopeAgainstContext what tope = do@@ -944,13 +983,10 @@           entailed <- checkTopeEntails tope   -- tope |- AND(accessible context)           unless entailed $ do             naming <- asks namingOfContext-            traceTypeCheck Normal-              (intercalate "\n" $-                [ "Warning: " <> what <> " overhangs the local tope context"-                , "  " <> ppTerm naming (untyped tope)-                , "is not entailed by the local context (normalised)"-                ] <> map (("  " <>) . ppTerm naming . untyped) topes)-              (return ())+            loc <- asks ctxLocation+            recordCheckWarning $ OverhangWarning what+              (ppTerm naming (untyped tope))+              (map (ppTerm naming . untyped) topes) loc  -- * Restrictions and η @@ -1035,6 +1071,99 @@  -- * Layers +-- | The kind of a binder domain or of a term standing at type @U@. The+-- layers a domain can inhabit are finer than type\/cube\/shape: the+-- universes @CUBE@ and @TOPE@ and the tope-family kinds are all @U@-sorted+-- today (a shipped convenience), so they look like types until inspected.+-- This classification implements the layer discipline: the @#data@ checks+-- in "Rzk.TypeCheck.Decl" decide what each declaration position may take,+-- and 'ensureTypeAtU' rejects the universe kinds where an ordinary type is+-- required (Σ components, identity carriers, type arguments), so that a+-- cube- or tope-layer citizen cannot be stored as type-layer data by any+-- direct spelling.+data DomainKind+  = DomainType+    -- ^ an ordinary type (including @U@, families, extension types)+  | DomainCubePoint+    -- ^ a cube: the domain's sort is @CUBE@, as in @(t : 2)@+  | DomainCubeUniverse+    -- ^ @CUBE@ itself, as in @(I : CUBE)@+  | DomainCubeFamily+    -- ^ a function into @CUBE@, which is no parameter kind of the+    -- meta-theoretic parameter layer+  | DomainTopeUniverse+    -- ^ @TOPE@ itself, a bare tope parameter, as in @(phi : TOPE)@+  | DomainTopeFamily+    -- ^ a tope family @{I | ψ} → TOPE@ (every Π-binder a cube or shape),+    -- the Rzk paper's parameter kind+  | DomainOtherTopeFamily+    -- ^ a function into @TOPE@ over a non-cube domain — not the paper's kind+  | DomainModalTope+    -- ^ a modal type over @TOPE@ or a family into one (@ᵒᵖ TOPE@,+    -- @I → ᵒᵖ TOPE@, …) or over @CUBE@ (@♭ CUBE@): a parameter kind of the+    -- experimental modal layer (Π binders, @#assume@, @#data@ parameters),+    -- closed in every other position++-- | Classify an elaborated binder domain. Restricted binders (shapes) never+-- reach this: callers dispatch on the binder's tope first.+classifyDomain :: Distinct n => TermT n -> TypeCheck n DomainKind+classifyDomain ty = typeOf ty >>= \case+  UniverseCubeT{} -> pure DomainCubePoint+  _ -> whnfT ty >>= \case+    UniverseCubeT{} -> pure DomainCubeUniverse+    UniverseTopeT{} -> pure DomainTopeUniverse+    TypeModalT _ty _md inner -> classifyDomain inner >>= \case+      DomainType      -> pure DomainType+      DomainCubePoint -> pure DomainType   -- unreachable: @(x :_µ I)@ parses as a modal binder+      _               -> pure DomainModalTope+    TypeFunT _ty orig md param mtope ret -> do+      cubeDom <- case mtope of+        Just _  -> pure True+        Nothing -> typeOf param >>= \case+          UniverseCubeT{} -> pure True+          _               -> pure False+      inner <- inScope orig md param ret classifyDomain+      pure $ case inner of+        DomainTopeUniverse+          | cubeDom   -> DomainTopeFamily+          | otherwise -> DomainOtherTopeFamily+        DomainTopeFamily+          | cubeDom   -> DomainTopeFamily+          | otherwise -> DomainOtherTopeFamily+        DomainOtherTopeFamily -> DomainOtherTopeFamily+        DomainModalTope       -> DomainModalTope+        DomainCubeUniverse    -> DomainCubeFamily+        DomainCubeFamily      -> DomainCubeFamily+        _                     -> DomainType+    _ -> pure DomainType++-- | The printed name of a rejected kind, for error messages.+domainKindName :: DomainKind -> String+domainKindName = \case+  DomainType            -> "a type"+  DomainCubePoint       -> "a cube"+  DomainCubeUniverse    -> "the cube universe"+  DomainCubeFamily      -> "a cube family"+  DomainTopeUniverse    -> "the tope universe"+  DomainTopeFamily      -> "a tope family"+  DomainOtherTopeFamily -> "a tope family over a non-cube domain"+  DomainModalTope       -> "a modal cube or tope kind"++-- | Reject a universe kind standing where an ordinary type is required.+-- The check is on the weak head normal form, so a synonym+-- (@#define A : U := TOPE@) meets the same rule as the spelled-out kind.+-- This closes the /direct/ spellings only: a kind can still travel through+-- a @U@-polymorphic definition (@(X : U) → …@ applied to @TOPE@ is caught+-- at the application, but a kind reaching a variable another way is not),+-- and the complete closure — the universe kinds leaving @U@ — is a+-- separate, larger change.+ensureTypeAtU :: Distinct n => String -> TermT n -> TypeCheck n ()+ensureTypeAtU position t = classifyDomain t >>= \case+  DomainType      -> pure ()+  DomainCubePoint -> pure ()   -- cannot stand at type U; rejected by its sort+  kind -> issueTypeError $ TypeErrorOther $+    position <> " must be a type, got " <> domainKindName kind+ inCubeLayer :: Distinct n => TermT n -> TypeCheck n Bool inCubeLayer = \case   RecBottomT{}    -> pure False@@ -1175,17 +1304,15 @@              LetT _ty _orig _mparam val body ->               instantiate body val >>= whnfT-            LetModT ty orig app inn mparam mmotive val body ->-              (enterModality app $ whnfT val) >>= \case-                ModAppT _ md t | md == inn -> do-                  val' <- enterModality md $ whnfT t+            LetModT ty orig app inn mparam mmotive val body -> do+              b' <- enterModality app (whnfT val)+              case valueUnderModal inn b' of+                Just t -> do+                  val' <- enterModality inn (whnfT t)                   instantiate body val' >>= whnfT-                b' | isRA inn -> do-                  bty <- typeOf b' >>= \case-                    TypeModalT _ _ t -> pure t-                    _ -> panicImpossible "not modal in letmod"-                  instantiate body (modExtractT bty app inn b') >>= whnfT-                _ -> pure (LetModT ty orig app inn mparam mmotive val body)+                Nothing -> extractModal app inn b' >>= \case+                  Just v  -> instantiate body v >>= whnfT+                  Nothing -> pure (LetModT ty orig app inn mparam mmotive val body)             FirstT ty t ->               whnfT t >>= \case                 PairT _ l _r -> whnfT l@@ -1292,7 +1419,7 @@   -> [(TypeInfo (TermT n), TermT n)]  -- ^ the collected spine arguments   -> TypeCheck n (Maybe (TermT n)) tryDataElimStep (Var v) pairs = asks (varDataRole . lookupVarInfo v) >>= \case-  Just (DataRole dataType numParams (DataElimKind numMethods numIndices _elimKind))+  Just (DataRole dataType numParams (DataElimKind _md numMethods numIndices _elimKind))     -- The spine is parameters, motive, methods, indices, scrutinee. The     -- index arguments are dropped on a step: the scrutinee determines them.     | (beforeIndices, rest) <- splitAt (numParams + 1 + numMethods) pairs@@ -1374,9 +1501,12 @@ applyWhnfFun :: Distinct n => TypeInfo (TermT n) -> TermT n -> TermT n -> TypeCheck n (TermT n) applyWhnfFun ty f' x = typeOf f' >>= \case   TypeFunT _ty _orig md _param (Just tope) (ScopedAST _ UniverseTopeT{}) -> do+    -- The application is marked as a normal form, so that normalising it again+    -- does not insert the side condition again; its head must then be normal too.+    f'' <- nfT f'     x' <- enterModality md $ nfT x     sideCondition <- instantiate tope x' >>= nfT-    pure (topeAndT (AppT ty f' x') sideCondition)+    pure (topeAndT (termIsNF (AppT ty f'' x')) sideCondition)   -- FIXME: this seems to be a hack, and will not work in all   -- situations! FIXME: for now, it seems to add ~2x slowdown   TypeFunT info _orig md _param _mtope ret@(ScopedAST _ TypeRestrictedT{})@@ -1502,69 +1632,52 @@   TopeLEQT ty l r -> TopeLEQT ty <$> nfTope l <*> nfTope r    TopeInvT ty t ->-    -- Match And/Or on the *unnormalised* input: nfTope of a shape-restricted App-    -- produces a TopeAnd via shape-side-condition propagation, and distributing-    -- inv over that synthetic conjunction loops forever, because the recursive-    -- topeInvT renormalises the same App back into a TopeAnd.-    case t of-      TopeTopT _ -> pure $ modAppT topeT Op topeTopT-      TopeBottomT _ -> pure $ modAppT topeT Op topeBottomT+    nfTope t >>= \case+      TopeUninvT _ phi -> pure phi+      TopeTopT _ -> pure (underOp topeTopT)+      TopeBottomT _ -> pure (underOp topeBottomT)       TopeLEQT _ x y -> invOf topeLEQT x y       TopeEQT _ x y -> invOf topeEQT x y-      TopeAndT _ phi psi -> nfTope $-        modAppT (typeModalT universeT Op topeT) Op-          (topeAndT-            (modExtractT topeT Id Op (topeInvT phi))-            (modExtractT topeT Id Op (topeInvT psi)))-      TopeOrT _ phi psi -> nfTope $-        modAppT (typeModalT universeT Op topeT) Op-          (topeOrT-            (modExtractT topeT Id Op (topeInvT phi))-            (modExtractT topeT Id Op (topeInvT psi)))-      _ ->-        nfTope t >>= \case-          TopeTopT _       -> pure topeTopT-          TopeBottomT _    -> pure topeBottomT-          TopeUninvT _ phi -> pure phi-          TopeLEQT _ x y   -> invOf topeLEQT x y-          TopeEQT _ x y    -> invOf topeEQT x y-          t'               -> pure (TopeInvT ty t')+      TopeAndT _ phi psi -> distribute topeAndT phi psi+      TopeOrT _ phi psi -> distribute topeOrT phi psi+      t' -> pure (TopeInvT ty t')     where+      underOp phi = modAppT (typeModalT universeT Op topeT) Op phi+      extractInv phi = modExtractT topeT Id Op (topeInvT phi)+      distribute mk phi psi =+        nfTope (underOp (mk (extractInv phi) (extractInv psi)))+       invOf mk x y = do         xTy <- typeOf x         yTy <- typeOf y-        nfTope $-          modAppT (typeModalT universeT Op topeT) Op-            (mk (modExtractT topeT Id Op (cubeFlipT xTy y))-                (modExtractT topeT Id Op (cubeFlipT yTy x)))+        nfTope $ underOp $+          mk (modExtractT topeT Id Op (cubeFlipT xTy y))+             (modExtractT topeT Id Op (cubeFlipT yTy x))    TopeUninvT ty t ->-    case t of-      ModAppT _ Op inner -> case inner of+    nfTope t >>= \case+      TopeInvT _ phi -> pure phi+      ModAppT _ Op inner -> uninvNF inner+      t' -> pure (TopeUninvT ty t')+    where+      underOp phi = modAppT (typeModalT universeT Op topeT) Op phi++      uninvNF inner = case inner of         TopeTopT _ -> pure topeTopT         TopeBottomT _ -> pure topeBottomT-        TopeAndT _ phi psi ->-          nfTope (topeAndT (topeUninvT phi) (topeUninvT psi))-        TopeOrT _ phi psi ->-          nfTope (topeOrT (topeUninvT phi) (topeUninvT psi))-        _ ->-          nfTope t >>= \case-            TopeTopT _ -> pure topeTopT-            TopeBottomT _ -> pure topeBottomT-            TopeInvT _ phi -> pure phi-            ModAppT _ Op inner'' -> case inner'' of-              TopeLEQT _ x y -> uninvOf topeLEQT x y-              TopeEQT _ x y -> uninvOf topeEQT x y-              inner' ->-                pure $ TopeUninvT ty-                  (modAppT (typeModalT universeT Op topeT) Op inner')-            t' -> pure (TopeUninvT ty t')-      _ ->-        nfTope t >>= \case-          TopeInvT _ phi -> pure phi-          t'@(ModAppT _ Op _) -> nfTope (TopeUninvT ty t')-          t' -> pure (TopeUninvT ty t')-    where+        TopeAndT _ phi psi -> andNF <$> uninvNF phi <*> uninvNF psi+        TopeOrT _ phi psi -> orNF <$> uninvNF phi <*> uninvNF psi+        TopeLEQT _ x y -> uninvOf topeLEQT x y+        TopeEQT _ x y -> uninvOf topeEQT x y+        _ -> pure (TopeUninvT ty (underOp inner))++      andNF TopeBottomT{} _ = topeBottomT+      andNF _ TopeBottomT{} = topeBottomT+      andNF l r             = topeAndT l r+      orNF TopeBottomT{} r  = r+      orNF l TopeBottomT{}  = l+      orNF l r              = topeOrT l r+       uninvOf mk x y = do         xTy <- typeOf x         yTy <- typeOf y@@ -1585,7 +1698,7 @@         TypeFunT _ty _orig md _param (Just tope) (ScopedAST _ UniverseTopeT{}) -> do           x' <- enterModality md $ nfTope x           sideCondition <- instantiate tope x' >>= nfTope-          pure (topeAndT (AppT ty f' x') sideCondition)+          pure (topeAndT (termIsNF (AppT ty f' x')) sideCondition)         _ -> AppT ty f' <$> nfTope x    FirstT ty t ->@@ -1614,22 +1727,17 @@     (enterModality app $ nfTope b) >>= \case       ModAppT _ md t | inn == md -> pure t       b' -> pure $ ModExtractT ty app inn b'-  LetModT ty orig app inn mparam mmotive val body ->-    (enterModality app $ nfTope val) >>= \case-      ModAppT _ md t | md == inn ->-        instantiate body t >>= nfTope-      b' | isRA inn -> do-        bty <- typeOf b' >>= \case-          TypeModalT _ _ t -> pure t-          _ -> panicImpossible "not modal in letmod"-        instantiate body (modExtractT bty app inn b') >>= nfTope-      b' -> do-        bty <- typeOf b' >>= \case-          TypeModalT _ _ t -> pure t-          _ -> panicImpossible "not modal in letmod"-        val' <- enterModality app $ nfTope b'-        body' <- underScope orig (comp app inn) bty Nothing body nfTope-        pure (LetModT ty orig app inn mparam mmotive val' body')+  LetModT ty orig app inn mparam mmotive val body -> do+    b' <- enterModality app (nfTope val)+    case valueUnderModal inn b' of+      Just t -> instantiate body t >>= nfTope+      Nothing -> extractModal app inn b' >>= \case+        Just v -> instantiate body v >>= nfTope+        Nothing -> do+          bty <- requireTypeUnderModal inn b'+          val' <- enterModality app (nfTope b')+          body' <- underScope orig (comp app inn) bty Nothing body nfTope+          pure (LetModT ty orig app inn mparam mmotive val' body')    TypeModalT ty md inner -> TypeModalT ty md <$> (enterModality md $ nfTope inner)   LetT _ty _orig _mparam val body -> instantiate body val >>= nfTope@@ -1726,9 +1834,12 @@               instantiate body x >>= nfT             f' -> typeOf f' >>= \case               TypeFunT _ty _orig md _param (Just tope) (ScopedAST _ UniverseTopeT{}) -> do+                -- marked as a normal form, as in 'applyWhnfFun', so the head is+                -- normalised too+                f'' <- nfT f'                 x' <- enterModality md $ nfT x                 sideCondition <- instantiate tope x' >>= nfT-                pure (topeAndT (AppT ty f' x') sideCondition)+                pure (topeAndT (termIsNF (AppT ty f'' x')) sideCondition)               _ -> do                 -- The ι-redex of a generated eliminator only exists at the                 -- node holding the full spine, which the recursion above@@ -1739,23 +1850,19 @@                   Nothing      -> AppT ty <$> nfT f' <*> nfT x         LetT _ty _orig _mparam val body ->           instantiate body val >>= nfT-        LetModT ty orig app inn mparam mmotive val body ->-          (enterModality app $ whnfT val) >>= \case-            ModAppT _ md t | md == inn -> do-              val' <- enterModality md $ nfT t+        LetModT ty orig app inn mparam mmotive val body -> do+          b' <- enterModality app (whnfT val)+          case valueUnderModal inn b' of+            Just t -> do+              val' <- enterModality inn (nfT t)               instantiate body val' >>= nfT-            b' | isRA inn -> do-              bty <- typeOf b' >>= \case-                TypeModalT _ _ t -> pure t-                _ -> panicImpossible "not modal in letmod"-              instantiate body (modExtractT bty app inn b') >>= nfT-            b' -> do-              bty <- typeOf b' >>= \case-                TypeModalT _ _ t -> pure t-                _ -> panicImpossible "not modal in letmod"-              val' <- enterModality app $ nfT b'-              body' <- underScope orig (comp app inn) bty Nothing body nfT-              pure (LetModT ty orig app inn mparam mmotive val' body')+            Nothing -> extractModal app inn b' >>= \case+              Just v -> instantiate body v >>= nfT+              Nothing -> do+                bty <- requireTypeUnderModal inn b'+                val' <- enterModality app (nfT b')+                body' <- underScope orig (comp app inn) bty Nothing body nfT+                pure (LetModT ty orig app inn mparam mmotive val' body')         LambdaT ty orig _mparam body ->           case stripTypeRestrictions (infoType ty) of             TypeFunT _ty _orig md param mtope _ret -> do
+ src/Rzk/TypeCheck/Fragment/RSTT.hs view
@@ -0,0 +1,535 @@+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}+{-# LANGUAGE DataKinds           #-}+{-# LANGUAGE FlexibleContexts    #-}+{-# LANGUAGE GADTs               #-}+{-# LANGUAGE LambdaCase          #-}+{-# LANGUAGE OverloadedStrings   #-}+{-# LANGUAGE PatternSynonyms     #-}+{-# LANGUAGE RankNTypes          #-}+{-# LANGUAGE ScopedTypeVariables #-}++-- | Diagnostics for declarations outside the RSTT fragment.+--+-- For RSTT, see Riehl and Shulman,+-- <https://arxiv.org/abs/1705.07442 RS17> (2017), Figure 4 and Appendix A.2 for extension types.+-- For the fragment conditions, see Kudasov, Sim and Ahrens,+-- <https://arxiv.org/abs/2607.12207 KSA26> (2026), §5.+--+-- * Free-standing restrictions in assumptions, motives, and types passed as data.+-- * Cube domains, shape conditions, and assumed boundaries depending on outer points.+-- * Schematic variables bound inside terms below the parameter prefix.+-- * Modal constructs, auxiliary intervals, and involutions.+-- * Inductive constructors and eliminators.+-- * Any syntax outside the explicit RSTT allow-list.+--+-- Free-standing restrictions along concluded codomains are allowed.+-- Assumptions and postulates remain trusted; universe levels are not checked.+module Rzk.TypeCheck.Fragment.RSTT (+  fragmentHead,+  recordFragmentUses,+  recordSyntaxUses,+) where++import           Control.Applicative      ((<|>))+import           Control.Monad            (forM_, unless, when)+import           Control.Monad.Except     (catchError)+import           Control.Monad.Reader     (asks, local)+import           Data.Bifoldable          (bifoldMap)+import           Data.List                (intercalate)+import           Data.Maybe               (fromMaybe)+import qualified Data.IntSet              as IntSet+import qualified Control.Monad.Foil       as Foil++import           Control.Monad.Foil       (Distinct)+import           Control.Monad.Free.Foil  (AST (Node, Var), ScopedAST (..))++import           Control.Monad.Free.Foil.Annotated (AnnSig (..))+import           Language.Rzk.Foil.Names  (Binder, TModality (..),+                                           TypeInfo (..), VarIdent, binderName)+import           Language.Rzk.Foil.Syntax+import           Rzk.TypeCheck.Context+import           Rzk.TypeCheck.Display+import           Rzk.TypeCheck.Eval+import           Rzk.TypeCheck.Error+import           Rzk.TypeCheck.MetaPrefix (isMetaType)+import           Rzk.TypeCheck.Monad++-- Distinguish concluded types, assumed types, and terms (including type-valued data).+data CheckedPosition+  = InTail+  | InAssumption FragmentUse+  | InTerm PrefixPosition++-- A schematic argument may have its own parameter prefix.+data PrefixPosition = InParameterPrefix | OutsideParameterPrefix+  deriving (Eq)++-- | Report restriction and schematic-binder violations in a declaration.+-- Violations are errors when @rstt-safe = "error"@.+recordFragmentUses+  :: forall n. Distinct n+  => VarIdent          -- ^ the declaration+  -> TermT n           -- ^ its type+  -> Maybe (TermT n)   -- ^ its value, for a definition+  -> Bool              -- ^ does it supply an assumption rather than a proof?+  -> TypeCheck n ()+recordFragmentUses defName ty mval isAssumption = do+  restrictions <- asks ctxWarnFreeStandingRestriction+  binders <- asks ctxWarnMetaBinder+  shapes <- asks ctxWarnShapeDependency+  when (restrictions || binders || shapes) $+    localVerbosity Silent $+      forM_ [SourceTypes, ComputedTypes] $ \view ->+        checkFragmentUses view defName ty mval isAssumption `catchError`+          reportIncompleteRSTTCheck ("RSTT fragment check incomplete in " <> show defName)++-- Keep source checks even when reduction discards an argument or annotation.+data FragmentView = SourceTypes | ComputedTypes+  deriving (Eq)++checkFragmentUses+  :: forall n. Distinct n+  => FragmentView -> VarIdent -> TermT n -> Maybe (TermT n) -> Bool -> TypeCheck n ()+checkFragmentUses view defName ty mval isAssumption = do+  go (if isAssumption then InAssumption UseBinder else InTail) ty+  mapM_ (go (InTerm InParameterPrefix)) mval+  where+    go :: forall l. Distinct l => CheckedPosition -> TermT l -> TypeCheck l ()+    go (InTerm prefixPosition) t = goTerm prefixPosition t+    go InTail t = goTail t+    go (InAssumption use) t = goAssumed use t++    expose :: forall l. Distinct l => TermT l -> TypeCheck l (TermT l)+    expose = case view of+      SourceTypes -> pure+      ComputedTypes -> fragmentHead 256++    -- Allow restrictions along the spine of concluded codomains.+    goTail :: forall l. Distinct l => TermT l -> TypeCheck l ()+    goTail original = expose original >>= \t -> case t of+      TypeRestrictedT _ ty' rs -> do+        goTail ty'+        forM_ rs $ \(tope, term) -> do+          goTerm OutsideParameterPrefix tope+          goTerm OutsideParameterPrefix term+      TypeFunT _ orig md param mtope ret -> do+        checkShapeDependencies InTail t+        goAssumed UseBinder param+        checkDomain orig md param mtope+        inScope orig md param ret goTail+      RecOrT _ rs -> forM_ rs $ \(tope, term) -> do+        goTerm OutsideParameterPrefix tope+        goTail term+      _ -> goAssumed UseConcluded t++    -- Assumed restrictions must sit directly under a shape-Π.+    goAssumed :: forall l. Distinct l => FragmentUse -> TermT l -> TypeCheck l ()+    goAssumed = goAssumedAt OutsideParameterPrefix++    goAssumedAt+      :: forall l. Distinct l+      => PrefixPosition -> FragmentUse -> TermT l -> TypeCheck l ()+    goAssumedAt prefixPosition use original = expose original >>= \t -> case t of+      TypeRestrictedT _ ty' rs -> do+        reportFreeStanding use t+        goAssumed use ty'+        forM_ rs $ \(tope, term) -> do+          goTerm OutsideParameterPrefix tope+          goTerm OutsideParameterPrefix term+      TypeFunT _ orig md param mtope ret -> do+        checkShapeDependencies (InAssumption use) t+        goAssumed UseBinder param+        checkDomain orig md param mtope+        shape <- isShapeBinder (maybe False (const True) mtope) param+        inScope orig md param ret $+          if shape then goExtCodomain use else goAssumed use+      TypeSigmaT _ orig md a b -> do+        goAssumed UseBinder a+        inScope orig md a b (goAssumed use)+      -- Identity-type arguments must be ext-style; endpoints remain terms.+      TypeIdT _ a mtA b -> do+        goTerm OutsideParameterPrefix a+        mapM_ (goAssumed UseIdentity) mtA+        goTerm OutsideParameterPrefix b+      LambdaT info orig mparam body -> do+        md <- case mparam of+          Just (LambdaParam md param mtope) -> do+            goAssumed UseBinder param+            checkDomain orig md param mtope+            when (prefixPosition == OutsideParameterPrefix) $ reportMetaBinder orig param+            pure md+          Nothing -> pure Id+        dom <- binderType info mparam+        inScope orig md dom body (goAssumedAt prefixPosition use)+      -- recordSyntaxUses reports modal syntax; descend here for restriction checks.+      TypeModalT _ _ ty' -> goAssumed use ty'+      RecOrT _ rs -> forM_ rs $ \(tope, term) -> do+        goTerm OutsideParameterPrefix tope+        goAssumed use term+      Var{} -> pure ()+      _ -> goTerm OutsideParameterPrefix t++    -- Direct shape codomains admit boundary clipping to the binder's domain.+    goExtCodomain+      :: forall l. Distinct l => FragmentUse -> TermT l -> TypeCheck l ()+    goExtCodomain use original = expose original >>= \t -> case t of+      TypeRestrictedT _ ty' rs -> do+        goAssumed use ty'+        forM_ rs $ \(face, term) -> do+          goTerm OutsideParameterPrefix face+          goTerm OutsideParameterPrefix term+      _ -> goAssumed use t++    -- Topes may contain applications with their own binders and assumed types.+    checkDomain+      :: forall l. Distinct l+      => Binder -> TModality -> TermT l -> Maybe (ScopedTermT l) -> TypeCheck l ()+    checkDomain orig md param =+      mapM_ (\tope -> inScope orig md param tope (goTerm OutsideParameterPrefix))++    -- RS17 Appendix A.2 requires shapes independent of ambient cube points.+    -- Schematic families are judgements over cube contexts, not extension types.+    checkShapeDependencies :: forall l. Distinct l => CheckedPosition -> TermT l -> TypeCheck l ()+    checkShapeDependencies position t = do+      enabled <- asks ctxWarnShapeDependency+      when enabled $ case t of+        TypeFunT _ orig md param mtope ret -> do+          schematic <- isMetaType t+          shape <- isShapeBinder (maybe False (const True) mtope) param+          when shape $ do+            scope <- asks ctxScope+            let check :: forall k. Distinct k => Foil.Name k -> TermT k -> TermT k -> TypeCheck k ()+                check point cube original = do+                  reportShapeDependency "cube domain" point cube+                  unless schematic $ expose original >>= \body -> case (position, body) of+                    (InAssumption _, TypeRestrictedT _ _ rs) ->+                      forM_ rs $ \(face, _) -> reportShapeDependency "restriction boundary" point face+                    _ -> pure ()+            case mtope of+              Nothing -> withScopedT scope ret $ \binder body ->+                underBinder binder orig md param Nothing $ check (Foil.nameOf binder) (Foil.sink param) body+              Just tope -> withScopedT2 scope tope ret $ \binder domain body ->+                underBinder binder orig md param Nothing $ do+                  unless schematic $+                    reportShapeDependency "shape domain" (Foil.nameOf binder) domain+                  check (Foil.nameOf binder) (Foil.sink param) body+        _ -> pure ()++    reportShapeDependency+      :: forall l. Distinct l => String -> Foil.Name l -> TermT l -> TypeCheck l ()+    reportShapeDependency what point tope = do+      points <- outerPoints point tope+      unless (null points) $ do+        naming <- asks namingOfContext+        loc <- asks ctxLocation+        let render = ppTerm naming . untyped+        recordCheckWarning $ RSTTScopeWarning RSTTShapeDependency+          ("context-dependent " <> what <> " " <> render tope+            <> " (outer cube points: " <> intercalate ", " (map (render . Var) points)+            <> "; in " <> show defName <> ")") loc++    -- Follow aliases and variable types without reducing away dependencies.+    outerPoints :: forall l. Distinct l => Foil.Name l -> TermT l -> TypeCheck l [Foil.Name l]+    outerPoints point t = go (IntSet.singleton (Foil.nameId point)) (freeVarsOfTermT t)+      where+        go _ [] = pure []+        go seen (v : vs)+          | Foil.nameId v `IntSet.member` seen = go seen vs+          | otherwise = do+              ty <- typeOfVar v+              value <- valueOfVar v+              cube <- typeOfUncomputed ty >>= whnfT+              let here = case (value, cube) of+                    (Nothing, UniverseCubeT{}) -> [v]+                    _ -> []+                  dependencies = freeVarsOfTermT ty <> foldMap freeVarsOfTermT value+              rest <- go (IntSet.insert (Foil.nameId v) seen) (dependencies <> vs)+              pure (here <> rest)++    -- Check term binders and route type-valued bodies through goData.+    goTerm :: forall l. Distinct l => PrefixPosition -> TermT l -> TypeCheck l ()+    goTerm InParameterPrefix t | not (isLambda t) = goDataAt InParameterPrefix t+    goTerm prefixPosition t = case t of+      Var{} -> pure ()++      -- Function types returned by lets or branches still introduce shapes.+      TypeFunT{} -> goAssumed UseData t++      -- The stored type is synthesised by elaboration; it is not assumed.+      ReflT _ mx -> forM_ mx $ \(x, _mxty) -> goTerm OutsideParameterPrefix x++      TypeAscT _ term' ty' -> do+        goTerm OutsideParameterPrefix term'+        goTail ty'++      LambdaT info orig mparam body -> do+        checkShapeDependencies InTail (infoType info)+        md <- case mparam of+          Just (LambdaParam md param mtope) -> do+            goAssumed UseBinder param+            checkDomain orig md param mtope+            when (prefixPosition == OutsideParameterPrefix) $ reportMetaBinder orig param+            pure md+          Nothing -> pure Id+        dom <- binderType info mparam+        inScope orig md dom body (goTerm prefixPosition)++      AppT{} -> do+        let (h, args) = collectSpine t []+        goTerm OutsideParameterPrefix h+        forM_ args $ \(fnode, arg) -> do+          -- Substitution can create a forbidden type in a later argument domain.+          when (view == ComputedTypes) $+            typeOfUncomputed fnode >>= funDomain >>= mapM_ (goAssumed UseBinder)+          -- Schema arguments may bind their own schematic parameters.+          plumbing <- domainIsMeta fnode+          if plumbing then goTerm InParameterPrefix arg else goData arg++      -- The motive is assumed: the eliminator binds its variables at it.+      IdJT _ tA a tC d x p -> do+        goData tA+        goTerm OutsideParameterPrefix a+        goAssumed UseMotive tC+        goTerm OutsideParameterPrefix d+        goTerm OutsideParameterPrefix x+        goTerm OutsideParameterPrefix p++      -- Preserve prefix status for parameters bound after a schematic split.+      MatchT _ _md scrut mmotive branches -> do+        goTerm OutsideParameterPrefix scrut+        mapM_ (goAssumed UseMotive) mmotive+        forM_ branches $ \(_con, branch) -> goTerm prefixPosition branch++      PairT _ l r -> do+        goData l+        goData r++      -- The let annotation records the value's concluded type.+      LetT _ orig manno value body -> do+        mapM_ goTail manno+        goData value+        let dom = fromMaybe universeT (manno <|> valueType value)+        inScopeWith orig Id dom (Just value) body (goTerm OutsideParameterPrefix)++      LetModT _ orig _nu mu manno mmotive value body -> do+        mapM_ goTail manno+        mapM_ (goAssumed UseMotive) mmotive+        goData value+        inScope orig mu (fromMaybe universeT (manno <|> valueType value)) body+          (goTerm OutsideParameterPrefix)++      Node (AnnSig _ f) ->+        mapM_ (goTerm OutsideParameterPrefix) (bifoldMap (const []) (:[]) f)++    -- Type-valued data may later become binder or motive types. A proof+    -- quantified over a universe must still be walked as a term.+    goData :: forall l. Distinct l => TermT l -> TypeCheck l ()+    goData = goDataAt OutsideParameterPrefix++    goDataAt :: forall l. Distinct l => PrefixPosition -> TermT l -> TypeCheck l ()+    goDataAt prefixPosition t = do+      isType <- landsInUniverse t+      if isType then goAssumedAt prefixPosition UseData t else goTerm OutsideParameterPrefix t++    isLambda :: forall l. TermT l -> Bool+    isLambda LambdaT{} = True+    isLambda _         = False++    valueType :: forall l. TermT l -> Maybe (TermT l)+    valueType value = infoType <$> typeInfoOf value++    binderType+      :: forall l. Distinct l+      => TypeInfo (TermT l) -> Maybe (LambdaParam (ScopedTermT l) (TermT l))+      -> TypeCheck l (TermT l)+    binderType _info (Just (LambdaParam _ param _mtope)) = pure param+    binderType info Nothing = fromMaybe universeT <$> funDomain (infoType info)++    -- A cube domain without a tope denotes the unrestricted shape.+    isShapeBinder :: forall l. Distinct l => Bool -> TermT l -> TypeCheck l Bool+    isShapeBinder True _ = pure True+    isShapeBinder False param =+      typeOfUncomputed param >>= whnfT >>= \case+        UniverseCubeT{} -> pure True+        _               -> pure False++    -- Is the Π-domain of this function node schematic?+    domainIsMeta :: forall l. Distinct l => TermT l -> TypeCheck l Bool+    domainIsMeta f = do+      tf <- typeOfUncomputed f+      whnfT (stripTypeRestrictions tf) >>= \case+        TypeFunT _ _ _ dom _ _ -> isMetaType dom+        _                      -> pure False++    -- Recognise types and type families by their final codomain.+    landsInUniverse :: forall l. Distinct l => TermT l -> TypeCheck l Bool+    landsInUniverse t =+      typeOfUncomputed t >>= go+      where+        go :: forall k. Distinct k => TermT k -> TypeCheck k Bool+        go ty = whnfT (stripTypeRestrictions ty) >>= \case+          UniverseT{}     -> pure True+          UniverseCubeT{} -> pure True+          UniverseTopeT{} -> pure True+          TypeFunT _ orig md param _mtope ret -> inScope orig md param ret go+          _               -> pure False++    funDomain :: forall l. Distinct l => TermT l -> TypeCheck l (Maybe (TermT l))+    funDomain tf =+      whnfT (stripTypeRestrictions tf) >>= \case+        TypeFunT _ _ _ dom _ _ -> pure (Just dom)+        _                      -> pure Nothing++    reportMetaBinder :: forall l. Distinct l => Binder -> TermT l -> TypeCheck l ()+    reportMetaBinder orig param = do+      enabled <- asks ctxWarnMetaBinder+      when enabled $ do+        meta <- isMetaType param+        when meta $ do+          naming <- asks namingOfContext+          loc <- asks ctxLocation+          recordCheckWarning $ MetaBinderWarning+            defName+            (fromMaybe "_" (binderName orig))+            (ppTerm naming (untyped param))+            loc++    reportFreeStanding :: forall l. Distinct l => FragmentUse -> TermT l -> TypeCheck l ()+    reportFreeStanding use t = do+      enabled <- asks ctxWarnFreeStandingRestriction+      when enabled $ do+        naming <- asks namingOfContext+        loc <- asks ctxLocation+        recordCheckWarning $+          FreeStandingRestrictionWarning defName (ppTerm naming (untyped t)) use loc++-- Expose type constructors without consulting cached normal forms or simplifying+-- their guards. Keep this reducer in step with the object-level rules in Eval.+fragmentHead :: Distinct n => Int -> TermT n -> TypeCheck n (TermT n)+fragmentHead fuel t+  | fuel <= 0 = issueTypeError (TypeErrorOther "RSTT fragment reduction limit reached")+  | otherwise = case t of+      Var v -> valueOfVar v >>= maybe (neutral t) step+      AppT info f x -> step f >>= \case+        LambdaT _ _ _ body -> instantiate body x >>= step+        f' -> neutral (AppT info f' x)+      LetT _ _ _ value body -> instantiate body value >>= step+      TypeAscT _ value _ -> step value+      FirstT info pair -> step pair >>= \case+        PairT _ a _ -> step a+        pair' -> neutral (FirstT info pair')+      SecondT info pair -> step pair >>= \case+        PairT _ _ b -> step b+        pair' -> neutral (SecondT info pair')+      IdJT info a x motive d y proof -> step proof >>= \case+        ReflT{} -> step d+        proof' -> neutral (IdJT info a x motive d y proof')+      RecOrT _ rs -> firstMatching rs >>= maybe (pure t) step+      -- In particular, stop at TypeRestrictedT before reducing its topes.+      _ -> pure t+  where+    step = fragmentHead (fuel - 1)+    neutral term = do+      ty <- typeOfUncomputed term >>= step+      tryRestriction ty >>= maybe (pure term) step++-- TODO: Share this application-spine helper with MetaPrefix in the syntax layer.+collectSpine :: TermT n -> [(TermT n, TermT n)] -> (TermT n, [(TermT n, TermT n)])+collectSpine (AppT _ f x) acc = collectSpine f ((f, x) : acc)+collectSpine h acc            = (h, acc)++-- | Check explicit syntax before typechecking erases source positions and sugars.+-- Report each outermost forbidden node at its nearest available source position.+recordSyntaxUses :: forall n. Distinct n => Term n -> TypeCheck n ()+recordSyntaxUses term = do+  enabled <- asks rsttSafeEnabled+  when enabled $ do+    roles <- mapM (\v -> (,) (Foil.nameId v) <$> infoOfVar varDataRole v)+      (freeVarsOfTerm term)+    let inductive = IntSet.fromList [v | (v, Just _) <- roles]+    loc <- asks ctxLocation+    forM_ (go inductive loc term) $ \warning ->+      local (\ctx -> ctx { ctxLocation = warningLocation warning }) $+        recordCheckWarning warning+  where+    -- Free names retain their identities under binders; bound names are fresh.+    go :: forall l. IntSet.IntSet -> Maybe LocationInfo -> Term l -> [CheckWarning]+    go inductive loc (Var v)+      | Foil.nameId v `IntSet.member` inductive =+          [RSTTScopeWarning RSTTInductive "inductive constructor or eliminator" loc]+      | otherwise = []+    go inductive loc t@(Node (AnnSig _ sig)) =+      let here = case positionOfTerm t of+            Nothing -> loc+            Just pos -> atPosition pos <$> loc+      in if allowedNode sig+        then bifoldMap (\(ScopedAST _ body) -> go inductive here body)+                       (go inductive here) sig+        else let (extension, feature) = syntaxExtension sig+             in [RSTTScopeWarning extension feature here]++-- New constructors are forbidden until explicitly admitted here.+allowedNode :: TermSig scope term -> Bool+allowedNode = \case+  UniverseF -> True+  UniverseCubeF -> True+  UniverseTopeF -> True+  CubeUnitF -> True+  CubeUnitStarF -> True+  Cube2F -> True+  Cube2_0F -> True+  Cube2_1F -> True+  CubeProductF{} -> True+  TopeTopF -> True+  TopeBottomF -> True+  TopeEQF{} -> True+  TopeLEQF{} -> True+  TopeAndF{} -> True+  TopeOrF{} -> True+  RecBottomF -> True+  RecOrF{} -> True+  TypeFunF _ Id _ _ _ -> True+  TypeSigmaF _ Id _ _ -> True+  TypeIdF{} -> True+  AppF{} -> True+  LetF{} -> True+  LambdaF _ Nothing _ -> True+  LambdaF _ (Just (LambdaParam Id _ _)) _ -> True+  PairF{} -> True+  FirstF{} -> True+  SecondF{} -> True+  ReflF{} -> True+  IdJF{} -> True+  UnitF -> True+  TypeUnitF -> True+  TypeAscF{} -> True+  TypeRestrictedF{} -> True+  -- Hole checking also handles unresolved identifiers and unfinished obligations.+  HoleF{} -> True+  _ -> False++-- Classification improves diagnostics; it never grants admission.+syntaxExtension :: TermSig scope term -> (RSTTExtension, String)+syntaxExtension = \case+  TypeFunF{} -> modal "modal function binder"+  TypeSigmaF{} -> modal "modal pair binder"+  LambdaF{} -> modal "modal lambda binder"+  TypeModalF{} -> modal "modal type"+  ModAppF{} -> modal "modal introduction"+  ModExtractF{} -> modal "modal extraction"+  LetModF{} -> modal "modal let binding"+  CubeIF -> interval "auxiliary interval II"+  CubeI_0F -> interval "auxiliary interval endpoint 0_I"+  CubeI_1F -> interval "auxiliary interval endpoint 1_I"+  CubeFlipF{} -> interval "interval flip"+  CubeUnflipF{} -> interval "interval unflip"+  TopeInvF{} -> interval "tope involution"+  TopeUninvF{} -> interval "inverse tope involution"+  MatchF{} -> (RSTTInductive, "inductive match")+  MatchArmF{} -> (RSTTInductive, "inductive match arm")+  CubeSupF{} -> (RSTTUnsupported, "cube supremum (sup)")+  CubeInfF{} -> (RSTTUnsupported, "cube infimum (inf)")+  _ -> (RSTTUnsupported, "unrecognised syntax")+  where+    modal = (,) RSTTModal+    interval = (,) RSTTInterval
src/Rzk/TypeCheck/Judgements.hs view
@@ -135,10 +135,13 @@   pure $ map snd $ sortOn fst     [ (order, (v, role))     | v <- ctxBound ctx-    , Just role@(DataRole d' _ (DataElimKind _ _ elimKind)) <-+    , Just role@(DataRole d' _ (DataElimKind md _ _ elimKind)) <-         [varDataRole (lookupVarInfo v ctx)]     , Foil.nameId d' == Foil.nameId d-    , let order = case elimKind of ElimInd -> 0 :: Int; ElimRec -> 1+    , let modalOrder = case md of+            Id -> 0 :: Int; Op -> 1; Flat -> 2; Sharp -> 3+          elimOrder = case elimKind of ElimInd -> 0 :: Int; ElimRec -> 1+          order = modalOrder * 2 + elimOrder     ]  -- | A term of the given type built as λ-binders over a single typed hole@@ -173,7 +176,7 @@   => Context n -> Set.Set VarIdent -> Foil.Scope n   -> Int -> [Foil.Name n] -> TermT n -> TermT n matchHoleOf ctx taken scope numParams cons term =-  MatchT anyInfo term Nothing+  MatchT anyInfo Id term Nothing     [ (name, armChain scope (branchBinders c))     | c <- cons     , Just name <- [binderName (varOrig (lookupVarInfo c ctx))]@@ -392,7 +395,7 @@                   applyPlan atMotive                     (Just motive : replicate numMethods Nothing                       <> map Just indexArgs <> [Just term]))-              | (e, DataRole _ numParams (DataElimKind numMethods _numIndices _)) <- elims ]+              | (e, DataRole _ numParams (DataElimKind Id numMethods _numIndices _)) <- elims ]         pure (matchMoves <> elimSpines)       _ -> pure [] @@ -474,15 +477,18 @@ --   * an identity type by @refl@, but only when its two endpoints already agree --     (otherwise @refl@ would not typecheck); --   * the unit type by @unit@;+--   * the directed interval by either endpoint, and the unit cube by its point;+--   * the type universe by type formers and declared datatypes;+--   * a datatype by constructors whose result type fits the goal; --   * the tope universe by each tope constructor — @TOP@, @BOT@, @? ≡ ?@, @? ≤ ?@, --     @? ∧ ?@, @? ∨ ?@ — so a shape (a hole of type @TOPE@) can be built up by --     tapping. ----- Unlike 'allEliminationsInto' this does not search: a type has at most one--- introduction form (the tope universe is the one exception), read off its head--- constructor. Outer restrictions are stripped first, so an extension type is--- introduced by the form of its underlying type (its boundary is met by later--- refinement of the holes, not by the choice of constructor).+-- The goal's head determines the forms offered: usually one for an ordinary+-- type former, but several for the directed interval, universes, and datatypes.+-- Datatype constructors are filtered by whether their result type fits the goal.+-- Outer restrictions are stripped; their boundaries are met when the holes+-- are filled. -- -- The λ binder of a Π-introduction is freshened against the names already visible -- at the hole, so introducing over a type whose own definition reuses an in-scope@@ -779,7 +785,7 @@       isUnitBinder BinderUnit = True       isUnitBinder _          = False   cubeFlags <- mapM (fmap isCubeType . whnfT . varType . snd) shownLocals-  topes     <- asks (filter (not . eqT topeTopT) . availableTopes)+  topes     <- asks (filter (not . eqT topeTopT . tTope) . ctxTopes)   loc       <- asks ctxLocation   naming    <- asks namingOfContext @@ -845,7 +851,14 @@       entryName v = case displayOf naming v of         (_, binder) | binderIsCompound binder -> binderDisplayName binder         (x, _)                                -> x-      entries = [ HoleEntry (entryName v) (render (varType info)) | (v, info) <- shownLocals ]+      entries =+        [ HoleEntry (entryName v) (render (varType info))+            (HoleModalInfo+              (varModality info)+              (varModAccum info)+              (isVarAccessible info))+        | (v, info) <- shownLocals+        ]       flagged = zip cubeFlags entries    -- The goal shape, rendered under the shape's own binder. The name is read back@@ -878,7 +891,11 @@     , holeGoalShape     = goalShape     , holeTermVars      = [ e | (False, e) <- flagged ]     , holeCubeVars      = [ e | (True,  e) <- flagged ]-    , holeTopes         = map render topes+    , holeTopes         =+        [ HoleTopeEntry (render (tTope tope))+            (HoleModalInfo (tModVar tope) (tModAccum tope) (isAccessible tope))+        | tope <- topes+        ]     , holeCandidates    = candidateMoves     , holeIntroductions = introductionMoves     , holeDiagram       = diagram@@ -997,7 +1014,8 @@                Just (LambdaParam md param Nothing) -> do                 when (md /= md') $-                  issueTypeError (TypeErrorModalityMismatch md' md term)+                  issueTypeError (TypeErrorModalityMismatch+                    (MismatchLambdaParameter orig) md' md (Just term))                 paramType <- enterModality md $ infer param                 -- an argument can be a shape, which is a function into TOPE; the                 -- domain is then its cube, and its tope is the λ's shape tope.@@ -1013,13 +1031,15 @@                   Just _ ->                     withBinder orig md param' $ \binder -> do                       -- eta expand the shape into a tope over the bound variable-                      let etaTope = appT topeT (Foil.sink paramType) (Var (Foil.nameOf binder))+                      let etaTope = modalizeTope md $+                            appT topeT (Foil.sink paramType) (Var (Foil.nameOf binder))                       expected <- maybe (pure topeTopT) (openScoped binder) mtope'                       unifyTerms expected etaTope                Just (LambdaParam md param (Just tope)) -> do                 when (md /= md') $-                  issueTypeError (TypeErrorModalityMismatch md' md term)+                  issueTypeError (TypeErrorModalityMismatch+                    (MismatchLambdaParameter orig) md' md (Just term))                 param'' <- enterModality md $ typecheck param =<< typeOf param'                 unifyTerms param' param''                 mapM_ checkNameShadowing (binderLeaves orig)@@ -1029,11 +1049,36 @@                   unifyTerms expected tope''              mapM_ checkNameShadowing (binderLeaves orig)+            naming <- asks namingOfContext             body' <- elaborateUnder orig md' param' Nothing body $ \binder bodyTerm -> do               mtopeIn <- traverse (openScoped binder) mtope'               maybe id localTope mtopeIn $ do                 retIn <- openScoped binder ret-                typecheck bodyTerm retIn+                bodyIn <- typecheck bodyTerm retIn+                -- A tope family checked against @{t : I | ψ} → TOPE@ carries its+                -- domain: the body becomes @ψ t ∧ φ t@. The checker reads an applied+                -- family variable together with its domain (see 'applyWhnfFun'), so a+                -- concrete family must satisfy the domain as well, or the two readings+                -- disagree (regression: ill-tope-family-domain-non-instance). The+                -- conjunct is omitted when the body already entails the domain;+                -- otherwise the checked family differs from the written one,+                -- which is reported as a warning.+                case (retIn, mtopeIn) of+                  (UniverseTopeT{}, Just domainIn) -> do+                    bodyNF <- nfT bodyIn+                    domainNF <- nfT domainIn+                    included <- [plainTope bodyNF] `entailM` domainNF+                    if included then pure bodyIn else do+                      warn <- asks ctxWarnTopeFamilyDomain+                      when warn $ do+                        namingIn <- asks namingOfContext+                        loc <- asks ctxLocation+                        recordCheckWarning $ TopeFamilyDomainWarning+                          (ppTerm naming term)+                          (ppTerm namingIn (untyped domainNF))+                          loc+                      pure (topeAndT domainIn bodyIn)+                  _ -> pure bodyIn             return (lambdaT ty' orig (Just (LambdaParam md' param' mtope')) body')            _ -> issueTypeError $ TypeErrorUnexpectedLambda term ty@@ -1060,16 +1105,16 @@             bindType' <- infer bindType             bindUniv <- typeOf bindType'             enterModality app $ typecheck val (typeModalT bindUniv inn bindType')-        bindTy <- typeOf val' >>= \case-          o@(TypeModalT _ty md t) ->-            if md == inn-              then return t-              else issueTypeError $ TypeErrorNotModal (untyped o) inn val'-          o -> issueTypeError $ TypeErrorNotModal (untyped o) inn val'-        bindVal <- whnfT val' >>= \case-          ModAppT _ty _m t -> pure (Just t)-          o | isRA inn -> pure (Just (modExtractT bindTy app inn o))-          _ -> pure Nothing+        valTy <- typeOf val'+        bindTy <- case stripTypeRestrictions valTy of+          TypeModalT _ty md t+            | md == inn -> pure t+            | otherwise -> issueTypeError $ TypeErrorModalityMismatch+                MismatchModalElimination inn md (Just val)+          _ -> issueTypeError $+            TypeErrorNotModal ModalTypeForElimination val inn valTy+        o <- whnfT val'+        bindVal <- maybe (extractModal app inn o) (pure . Just) (valueUnderModal inn o)         body' <- elaborateUnder orig (comp app inn) bindTy bindVal body $ \_binder bodyTerm ->           typecheck bodyTerm (Foil.sink ty')         return (letModT ty' orig app inn (Just bindTy) Nothing val' body')@@ -1082,6 +1127,9 @@             return (pairT ty' l' r')           TypeSigmaT _ty _orig md a b -> do             l' <- enterModality md $ typecheck l a+            whnfT a >>= \case+              UniverseT{} -> ensureTypeAtU "a pair component at type U" l'+              _           -> pure ()             bAt <- instantiate b l'             r' <- typecheck r bAt             return (pairT ty' l' r')@@ -1108,10 +1156,12 @@       ModApp md body -> case ty' of         TypeModalT _ty md' tpe -> do           when (md /= md') $ issueTypeError $-            TypeErrorModalityMismatch md' md term+            TypeErrorModalityMismatch+              MismatchModalIntroduction md' md (Just term)           body' <- enterModality md $ typecheck body tpe           return $ modAppT ty' md body'-        _ -> issueTypeError $ TypeErrorNotModal term md ty'+        _ -> issueTypeError $+          TypeErrorNotModal ModalTypeForIntroduction term md ty'        -- In checking position the common type is already known, so we push it into       -- every branch instead of inferring each one and unifying. This is what lets a@@ -1125,7 +1175,7 @@           TypeErrorOther "a recOR cannot be used as a tope"         _ -> checkRecOrAgainst ty' rs -      Match scrut mmotive branches -> checkMatch term scrut mmotive branches (Just ty')+      Match md scrut mmotive branches -> checkMatch term md scrut mmotive branches (Just ty')        -- A neutral term is inferred, then its type unified with the expected one. In       -- lenient (hole-checking) mode a term that still carries an unfilled hole is a@@ -1169,18 +1219,25 @@ checkMatch   :: Distinct n   => Term n                 -- ^ the whole match, for error messages+  -> TModality   -> Term n                 -- ^ the scrutinee   -> Maybe (Term n)         -- ^ the @into@ motive, if written   -> [(VarIdent, Term n)]   -- ^ branches: constructor name, arm chain   -> Maybe (TermT n)        -- ^ the goal, in checking position   -> TypeCheck n (TermT n)-checkMatch term scrut mmotive branches mgoal = do-  scrut' <- infer scrut+checkMatch term matchMd scrut mmotive branches mgoal = do+  scrut' <- enterModality matchMd $ infer scrut   scrutTy <- stripTypeRestrictions <$> (typeOf scrut' >>= whnfT)   d <- case collectAppSpine scrutTy of     (Var d, _) -> pure d     _          -> issueTypeError (TypeErrorMatchScrutineeNotData scrut' scrutTy)   elims <- dataEliminatorsOf d+  ctx <- ask+  cons <- dataConstructorsOf d+  let hasPathConstructor = any isPathConstructor cons+      isPathConstructor c = case varDataRole (lookupVarInfo c ctx) of+        Just (DataRole _ _ (DataConKind PathCon _ _ _)) -> True+        _                                                -> False   -- The eliminator to elaborate into: @ind-D@ when the motive genuinely   -- depends on the scrutinee (an @into@ motive, or a variable scrutinee   -- occurring in the goal); @rec-D@ otherwise. The choice matters for path@@ -1197,16 +1254,23 @@         MatchRec   -> ElimRec         MatchInd{} -> ElimInd   (e, numParams) <- case-      [ er | er@(_, DataRole _ _ (DataElimKind _ _ ek)) <- elims, ek == wantedKind ] of+      [ er+      | er@(_, DataRole _ _ (DataElimKind md _ _ ek)) <- elims+      , md == matchMd+      , ek == wantedKind ] of     (e, DataRole _ numParams _) : _ -> pure (e, numParams)+    [] | matchMd == Sharp ->+      issueTypeError $ TypeErrorOther+        "modal match is not supported for ♯: ♯ does not preserve coproducts or recursion"+    [] | matchMd /= Id && hasPathConstructor ->+      issueTypeError $ TypeErrorOther+        "modal match is not supported for higher inductive types"     [] -> issueTypeError (TypeErrorMatchScrutineeNotData scrut' scrutTy)   let dargs = case collectAppSpine scrutTy of         (_, args) -> map snd args       (paramArgs, indexArgs) = splitAt numParams dargs    -- The bijection between branches and constructors, with per-branch arity.-  ctx <- ask-  cons <- dataConstructorsOf d   let conIdent c = case binderName (varOrig (lookupVarInfo c ctx)) of         Just x  -> x         Nothing -> panicImpossible "a constructor entry with no name"@@ -1236,19 +1300,15 @@   -- The spine: parameters, motive, methods (each branch checked against its   -- method's Π-type), indices, scrutinee.   atParams <- applyPlan (Var e) (map Just paramArgs)+  scope <- asks ctxScope+  motiveTy <- typeOf atParams >>= whnfT >>= \case+    TypeFunT _ _ _ ty _ _ -> pure ty+    _ -> panicImpossible "an eliminator's type has no motive parameter"   motive' <- case mmotive of-    Just motive -> do-      motiveTy <- typeOf atParams >>= whnfT >>= \case-        TypeFunT _ _ _ mty _ _ -> pure mty-        _ -> panicImpossible "an eliminator's type has no motive parameter"-      typecheck motive motiveTy+    Just motive -> typecheck motive motiveTy     Nothing -> case mgoal of       Nothing -> issueTypeError (TypeErrorMatchCannotInfer term)       Just goal -> do-        motiveTy <- typeOf atParams >>= whnfT >>= \case-          TypeFunT _ _ _ mty _ _ -> pure mty-          _ -> panicImpossible "an eliminator's type has no motive parameter"-        scope <- asks ctxScope         -- Under @rec-D@ the motive type has no scrutinee binder, so there         -- is nothing to substitute (and the goal does not mention the         -- scrutinee variable anyway — that is what chose @rec-D@). The@@ -1285,7 +1345,9 @@ -- of the method's Π-type, and the elaborated arm becomes the method's λ under -- the same binder. Holes inside the branch body therefore see the branch -- binders as ordinary hypotheses, under the user's names.-checkMatchArms :: Distinct n => Term n -> TermT n -> TypeCheck n (TermT n)+checkMatchArms+  :: Distinct n+  => Term n -> TermT n -> TypeCheck n (TermT n) checkMatchArms (MatchArm orig scoped) ty = whnfT ty >>= \case   ty'@(TypeFunT _ _orig' md' param0 mtope' ret) -> do     -- an induction hypothesis's type is the motive at a field, so it carries@@ -1327,12 +1389,14 @@   | x `elem` xs = Just x   | otherwise   = firstDuplicate xs +modalizeTope :: TModality -> TermT n -> TermT n+modalizeTope Id tope = tope+modalizeTope md tope = typeModalT topeT md tope+ -- | A motive built from the goal: λ-binders along the motive's Π-type (the -- family's indices, then the scrutinee), whose body is the goal — with the -- scrutinee variable replaced by the motive's own scrutinee binder, when the -- scrutinee is a variable. A non-variable scrutinee gives a constant family.--- (The motive types the eliminator generator builds are literal Π-chains, so--- matching them structurally is enough; cf. 'lambdaHoleOf'.) motiveFromGoal   :: Distinct n   => Foil.Scope n -> TermT n -> Maybe (Foil.Name n) -> TermT n -> TermT n@@ -1361,6 +1425,41 @@   unifyTypes ty expectedKind kind   return term' +-- | Infer a cube point used by @≡@. A bare hole in this position does not+-- determine its cube, so ordinary inference rejects it. In lenient mode,+-- record it instead with an as-yet-unknown cube as its goal.+inferPoint :: Distinct n => Term n -> TypeCheck n (TermT n)+inferPoint term@(Hole (Just name))+  | Just x <- unmarkUnresolved name =+      performing (ActionInfer term) $+        issueTypeError (TypeErrorUndefined x)+inferPoint term@(Hole mname) = performing (ActionInfer term) $ do+  reject <- asks ctxHolesAreErrors+  if reject+    then issueTypeError (TypeErrorCannotInferHole term)+    else do+      let cube = holeT cubeT Nothing+      recordHole mname cube+      pure (holeT cube mname)+inferPoint term = inferAs cubeT term++-- | Infer a point of one of the directed cubes, @2@ or @𝕀@, for use by+-- @≤@. A point hole in lenient mode is retained with an unknown cube; a known+-- point of any other cube is rejected here rather than after both endpoints+-- have been inferred.+inferDirectedPoint :: Distinct n => Term n -> TypeCheck n (TermT n)+inferDirectedPoint term = performing (ActionInfer term) $ do+  point <- inferPoint term+  typeOf point >>= \case+    HoleT{}  -> pure point+    Cube2T{} -> pure point+    CubeIT{} -> pure point+    ty -> do+      tyStr <- ppInContext ty+      issueTypeError $ TypeErrorOther $+        "the (t ≤ s) tope expects a point in a directed cube (2 or 𝕀); got "+          <> tyStr+ infer :: Distinct n => Term n -> TypeCheck n (TermT n) infer tt = performing (ActionInfer tt) $ case tt of   Hole (Just name) | Just x <- unmarkUnresolved name ->@@ -1497,17 +1596,24 @@   TopeBottom -> pure topeBottomT    TopeEQ l r -> do-    l' <- inferAs cubeT l+    l' <- inferPoint l     lt <- typeOf l'     r' <- typecheck r lt     return (topeEQT l' r')    TopeLEQ l r -> do-    l' <- inferAs cubeT l-    r' <- inferAs cubeT r+    l' <- inferDirectedPoint l+    r' <- inferDirectedPoint r     lTy <- typeOf l'     rTy <- typeOf r'     case (lTy, rTy) of+      -- A point hole in lenient mode has an unknown directed cube. Keep the+      -- relation as an incomplete sketch until that cube is known.+      (HoleT{}, HoleT{})  -> return (topeLEQT l' r')+      (HoleT{}, Cube2T{}) -> return (topeLEQT l' r')+      (HoleT{}, CubeIT{}) -> return (topeLEQT l' r')+      (Cube2T{}, HoleT{}) -> return (topeLEQT l' r')+      (CubeIT{}, HoleT{}) -> return (topeLEQT l' r')       (Cube2T{}, Cube2T{}) -> return (topeLEQT l' r')       (CubeIT{}, CubeIT{}) -> return (topeLEQT l' r')       (CubeIT{}, Cube2T{}) -> do@@ -1566,17 +1672,13 @@   TypeFun orig md a Nothing b -> do     a' <- enterModality md $ infer a     typeOf a' >>= \case-      -- an argument can be a type-      UniverseT{} ->-        case a' of-          -- except if it is the TOPE universe-          UniverseTopeT{} ->-            issueTypeError $ TypeErrorOther "tope params are illegal"-          _ -> do-            mapM_ checkNameShadowing (binderLeaves orig)-            b' <- elaborateUnder orig md a' Nothing b $ \_binder bTerm ->-              typecheck bTerm universeT-            return (typeFunT orig md a' Nothing b')+      -- an argument can be a type, including TOPE: a bare tope parameter+      -- (phi : TOPE) means the same as the tope family (phi : 1 -> TOPE)+      UniverseT{} -> do+        mapM_ checkNameShadowing (binderLeaves orig)+        b' <- elaborateUnder orig md a' Nothing b $ \_binder bTerm ->+          typecheck bTerm universeT+        return (typeFunT orig md a' Nothing b')       -- an argument can be a cube       UniverseCubeT{} -> do         mapM_ checkNameShadowing (binderLeaves orig)@@ -1588,7 +1690,8 @@         mapM_ checkNameShadowing (binderLeaves orig)         (tope', b') <- checkUnder orig md cube b $ \binder bTerm -> do           -- eta expand a' into a tope over the bound variable-          let etaTope = appT topeT (Foil.sink a') (Var (Foil.nameOf binder))+          let etaTope = modalizeTope md $+                appT topeT (Foil.sink a') (Var (Foil.nameOf binder))           tope' <- case mtope of             Nothing     -> pure etaTope             Just tope'' -> do@@ -1611,13 +1714,17 @@    TypeSigma orig md a b -> do     a' <- enterModality md $ typecheck a universeT+    ensureTypeAtU "a Σ component" a'     mapM_ checkNameShadowing (binderLeaves orig)-    b' <- elaborateUnder orig md a' Nothing b $ \_binder bTerm ->-      typecheck bTerm universeT+    b' <- elaborateUnder orig md a' Nothing b $ \_binder bTerm -> do+      bTyped <- typecheck bTerm universeT+      ensureTypeAtU "a Σ component" bTyped+      pure bTyped     return (typeSigmaT orig md a' b')    TypeId x (Just tA) y -> do     tA' <- typecheck tA universeT+    ensureTypeAtU "the carrier of an identity type" tA'     x' <- typecheck x tA'     y' <- typecheck y tA'     return (typeIdT x' (Just tA') y')@@ -1625,6 +1732,7 @@   TypeId x Nothing y -> do     x' <- inferAs universeT x     tA <- typeOf x'+    ensureTypeAtU "the carrier of an identity type" tA     y' <- typecheck y tA     return (typeIdT x' (Just tA) y') @@ -1637,6 +1745,9 @@         x' <- enterModality md $ case (x, mtope) of           (Hole mname, Just tope) -> checkHoleAgainstShape mname orig a tope           _                       -> typecheck x a+        whnfT a >>= \case+          UniverseT{} -> ensureTypeAtU "a type argument" x'+          _           -> pure ()         bAt <- instantiate b x'         let result = appT bAt f' x'         case b of@@ -1660,13 +1771,8 @@   Lambda orig (Just (LambdaParam md ty Nothing)) body -> do     ty' <- enterModality md $ infer ty     mcube <- typeOf ty' >>= \case-      -- an argument can be a type-      UniverseT{} ->-        case ty' of-          -- except if it is the TOPE universe-          UniverseTopeT{} ->-            issueTypeError $ TypeErrorOther "tope params are illegal"-          _ -> return Nothing+      -- an argument can be a type, including TOPE (a bare tope parameter)+      UniverseT{} -> return Nothing       -- an argument can be a cube       UniverseCubeT{} -> return Nothing       -- an argument can be a shape@@ -1687,7 +1793,8 @@       Just _ -> do         (tope', body', ret) <- checkUnder orig md param body $ \binder bodyTerm -> do           -- eta expand the shape into a tope over the bound variable-          let etaTope = appT topeT (Foil.sink ty') (Var (Foil.nameOf binder))+          let etaTope = modalizeTope md $+                appT topeT (Foil.sink ty') (Var (Foil.nameOf binder))           body' <- localTope etaTope $ infer bodyTerm           ret <- typeOf body'           pure (ScopedAST binder etaTope, ScopedAST binder body', ScopedAST binder ret)@@ -1728,34 +1835,39 @@         bindUniv <- typeOf bindType'         enterModality app $ typecheck val (typeModalT bindUniv inn bindType')     valTy <- typeOf val'-    bindTy <- case valTy of-      TypeModalT _ty md t | md == inn -> return t-      o -> issueTypeError $ TypeErrorNotModal (untyped o) inn val'-    bindVal <- whnfT val' >>= \case-      ModAppT _ty _m t -> pure (Just t)-      o | isRA inn -> pure (Just (modExtractT bindTy app inn o))-      _ -> pure Nothing+    bindTy <- case stripTypeRestrictions valTy of+      TypeModalT _ty md t+        | md == inn -> pure t+        | otherwise -> issueTypeError $ TypeErrorModalityMismatch+            MismatchModalElimination inn md (Just val)+      _ -> issueTypeError $+        TypeErrorNotModal ModalTypeForElimination val inn valTy+    o <- whnfT val'+    bindVal <- maybe (extractModal app inn o) (pure . Just) (valueUnderModal inn o)     -- The motive is a family over the modal value, @(z :^app ⟨inn|A⟩) → U@, so its     -- binder stands for the whole @val@ and not for the let-bound @orig : A@; it is     -- left anonymous rather than reusing @orig@, which would show the wrong role in     -- goals and hovers. Only @U@ is supported as the codomain for now: a motive-    -- landing in @CUBE@ or @TOPE@ cannot be written.+    -- landing in @CUBE@ or @TOPE@ cannot be written. The motive ranges over the+    -- modal type without the restrictions of @val@'s type, because the body is+    -- checked at a generic @mod inn y@, which need not satisfy them.+    let modalTy = stripTypeRestrictions valTy     univScope <- constScope universeT     mmotive' <- forM mmotive $ \motive ->-      typecheck motive (typeFunT (BinderVar Nothing) app valTy Nothing univScope)+      typecheck motive (typeFunT (BinderVar Nothing) app modalTy Nothing univScope)     case mmotive' of       Just motive' -> do         body' <- elaborateUnder orig (comp app inn) bindTy bindVal body $ \binder bodyTerm ->           typecheck bodyTerm             (appT universeT (Foil.sink motive')-              (modAppT (Foil.sink valTy) inn (Var (Foil.nameOf binder))))+              (modAppT (Foil.sink modalTy) inn (Var (Foil.nameOf binder))))         return (letModT (appT universeT motive' val') orig app inn (Just bindTy) mmotive' val' body')       Nothing -> do         (body', ret) <- checkUnderWith orig (comp app inn) bindTy bindVal body $ \binder bodyTerm -> do           body' <- infer bodyTerm           ret <- typeOf body'           pure (ScopedAST binder body', ScopedAST binder ret)-        retAt <- instantiate ret val'+        retAt <- instantiate ret (maybe val' id bindVal)         return (letModT retAt orig app inn (Just bindTy) Nothing val' body')    Refl Nothing -> issueTypeError $ TypeErrorCannotInferBareRefl tt@@ -1810,7 +1922,8 @@       UniverseT{}     -> pure universeTy       UniverseCubeT{} -> pure universeTy       UniverseTopeT{} -> pure universeTy-      _               -> issueTypeError $ TypeErrorNotTypeInModal universeTy+      _               -> issueTypeError $+        TypeErrorNotTypeInModal md ty universeTy     return (typeModalT universeTy md ty')    ModApp md term -> do@@ -1823,7 +1936,7 @@    -- A match infers only through its "into" motive; 'checkMatch' rejects it   -- otherwise, since there is no goal to build the motive from.-  Match scrut mmotive branches -> checkMatch tt scrut mmotive branches Nothing+  Match md scrut mmotive branches -> checkMatch tt md scrut mmotive branches Nothing   MatchArm{} -> panicImpossible "a match arm outside of a match branch"  -- | The type of the motive of a path induction: @(z : A) → (a =_A z) → U@.
src/Rzk/TypeCheck/MetaPrefix.hs view
@@ -8,56 +8,16 @@ {-# LANGUAGE RankNTypes          #-} {-# LANGUAGE ScopedTypeVariables #-} --- | The meta-parameter layer check.------ The type theory implemented in rzk separates a /meta-theoretic parameter--- layer/ from the object theory (RSTT proper): see §3.2 of the Rzk paper--- (Kudasov, Sim, Ahrens, \"Rzk: a Proof Assistant for Synthetic--- ∞-Categories\", <https://arxiv.org/abs/2607.12207 arXiv:2607.12207>),--- where a statement is abstracted over a context of schematic cube, tope,--- and type parameters. The checker did not enforce responsible use of--- this layer. Per declaration, the /meta prefix/ is the--- parameter prefix up to and including the last parameter whose type lives--- outside RSTT proper: a universe, @CUBE@, @TOPE@, or a Π-type quantifying--- over or landing in one of those. Interleaved object parameters are swept--- in, which only strengthens the check.------ The discipline: the meta prefix must be fully supplied wherever the--- declaration is used at an object-level position; unsaturated use at a--- meta-typed position is legitimate macro-level plumbing and stays allowed.--- Then the development reads as a family of object-theory definitions, one--- per meta instantiation.------ Positions are classified structurally, on the elaborated term:+-- | Diagnostics for unsaturated schematic parameters. ----- - the root of a declaration's type and value is meta (a definition may---   alias a schema), and a λ-body inherits its λ's position (the value's---   leading λs are the declaration's own parameters);--- - an application argument is meta when the function's Π-domain at that---   position is meta-shaped (the receiver declared a schema parameter);--- - the components of type formers are meta (types are the schema layer),---   except the endpoints of an identity type, which are terms;--- - everything else (pair components, projections, @recOR@ branches, a---   @let@-bound value, …) is an object position.+-- A declaration's /meta prefix/ ends at its last schematic parameter:+-- a universe, @CUBE@, @TOPE@, or a function quantifying over or into one. ----- The strict rule (the default, see 'MetaPrefixSensitivity') additionally--- requires an unsaturated schema argument to sit within a /top-level/--- receiver's meta prefix. This also polices meta-shaped domains that only--- arise by instantiating a receiver's object parameters with large types--- (as in composing schema-level implications with a generic @comp@); such--- uses are emitted with the distinct code 'MetaPrefixStrictOnly', so the--- structural sensitivity can silence them without losing the rest.+-- * Structural checking requires the full prefix at object-level uses.+-- * Strict checking confines schema arguments to a top-level receiver's meta prefix. ----- Known blind spot: under type-in-type, an impredicative instantiation can--- forge a meta-shaped argument domain out of an object parameter — with--- @g : (X : U) → X → X@, in @g ((X : U) → X → X) my-id@ the second--- domain is meta-shaped only because @X@ was instantiated with a large--- type. The structural sensitivity reads such a position as meta and stays--- silent. The strict default flags it when the argument falls outside the--- receiver's meta prefix (as here), but a forgery landing /within/ the--- prefix, or behind a λ-bound receiver, still passes: deciding whether an--- instantiation is genuinely impredicative is level inference, a separate--- (planned) analysis, not this check.+-- Strict checking is the default. Neither check establishes universe+-- levels; the Hurkens construction still passes these checks. module Rzk.TypeCheck.MetaPrefix (   metaPrefixOf,   isMetaType,@@ -84,14 +44,10 @@  -- * Classifying types --- | Does this type live outside RSTT proper — is it a universe, @CUBE@,--- @TOPE@, or a Π-type that quantifies over or lands in one of those? This--- covers a family into a universe (@A → U@, a tope family) and a schematic--- type such as @(X : U) → X → X@ (predicatively both are large). A--- parameter of such a type is a meta parameter. Never throws; an--- unanswerable probe reads as object.+-- | Recognise universes and functions quantifying over or into universes.+-- Includes @CUBE@ and @TOPE@; propagates classification failures. isMetaType :: Distinct n => TermT n -> TypeCheck n Bool-isMetaType t = flip catchError (\_ -> pure False) $ do+isMetaType t = do   t' <- headView t   case t' of     UniverseT{}     -> pure True@@ -104,11 +60,14 @@         else inScope orig md param ret isMetaType     _               -> pure False --- | The length of the meta prefix of a declaration with this type: the--- number of leading parameters up to and including the last meta one--- (0 when there is none). Never throws.+-- | Count parameters through the last schematic one.+-- An incomplete classification is reported when meta-prefix checking is enabled. metaPrefixOf :: Distinct n => TermT n -> TypeCheck n Int-metaPrefixOf ty = flip catchError (\_ -> pure 0) $ go 1 0 ty+metaPrefixOf ty = go 1 0 ty `catchError` \err -> do+  sensitivity <- asks effectiveMetaPrefixSensitivity+  when (sensitivity /= MetaPrefixOff) $+    reportIncompleteRSTTCheck "RSTT meta-prefix classification incomplete" err+  pure 0   where     go :: Distinct l => Int -> Int -> TermT l -> TypeCheck l Int     go pos acc t = headView t >>= \case@@ -118,10 +77,7 @@         inScope orig md param ret (go (pos + 1) acc')       _ -> pure acc --- | The head of a type, for classification: syntactically if the head is--- already informative, through WHNF otherwise (a defined name such as--- @FunExt@ must unfold). Restrictions are stripped either way; a boundary--- does not change which layer a type lives in.+-- Strip restrictions and unfold only when the head needs classification. headView :: Distinct n => TermT n -> TypeCheck n (TermT n) headView t = case stripTypeRestrictions t of   t'@UniverseT{}     -> pure t'@@ -148,19 +104,18 @@ typePositions   = Positions MetaPos MetaPos objectPositions = Positions ObjectPos ObjectPos --- | Walk a declaration's elaborated type and value, warning about every--- use of a top-level name that supplies fewer arguments than its meta--- prefix at an object-level position. Advisory: never throws, and runs--- silently so WHNF probes do not trace.+-- | Report uses that supply too few schematic arguments.+-- Violations are errors when @rstt-safe = "error"@. recordMetaPrefixUses   :: forall n. Distinct n   => VarIdent -> TermT n -> Maybe (TermT n) -> TypeCheck n () recordMetaPrefixUses defName ty mval =-  asks ctxMetaPrefixSensitivity >>= \case+  asks effectiveMetaPrefixSensitivity >>= \case     MetaPrefixOff -> pure ()-    _ -> localVerbosity Silent $ flip catchError (\_ -> pure ()) $ do-      go rootPositions ty-      mapM_ (go rootPositions) mval+    _ -> localVerbosity Silent $+      flip catchError (reportIncompleteRSTTCheck ("RSTT meta-parameter check incomplete in " <> show defName)) $ do+        go rootPositions ty+        mapM_ (go rootPositions) mval   where     go :: forall l. Distinct l => Positions -> TermT l -> TypeCheck l ()     go pos t = case t of@@ -186,8 +141,9 @@        LambdaT info orig mparam body -> do         (mdom, md) <- case mparam of-          Just (LambdaParam m ty' _mtope) -> do+          Just (LambdaParam m ty' mtope) -> do             go typePositions ty'+            forM_ mtope $ \tope -> inScope orig m ty' tope (go objectPositions)             pure (Just ty', m)           -- A bare λ: the domain of its own Π-type.           Nothing -> do@@ -195,8 +151,9 @@             pure (dom, Id)         inScope orig md (fromMaybe universeT mdom) body (go pos) -      TypeFunT _ orig md param _mtope ret -> do+      TypeFunT _ orig md param mtope ret -> do         go typePositions param+        forM_ mtope $ \tope -> inScope orig md param tope (go objectPositions)         inScope orig md param ret (go typePositions)        TypeSigmaT _ orig md a bscope -> do@@ -212,7 +169,9 @@        TypeRestrictedT _ ty' rs -> do         go typePositions ty'-        forM_ rs $ \(_tope, term) -> go objectPositions term+        forM_ rs $ \(tope, term) -> do+          go objectPositions tope+          go objectPositions term        LetT _ orig manno value body -> do         mapM_ (go typePositions) manno@@ -236,13 +195,13 @@      -- An unsaturated top-level head at an object position warns; at a     -- position only the strict rule rejects, the warning is marked so.-    checkHead :: forall l. Positions -> Foil.Name l -> Int -> TypeCheck l ()+    checkHead :: forall l. Distinct l => Positions -> Foil.Name l -> Int -> TypeCheck l ()     checkHead pos v nargs = do       ctx <- ask       let info = lookupVarInfo v ctx           k = varMetaPrefix info       when (varIsTopLevel info && k > nargs) $ do-        sensitivity <- asks ctxMetaPrefixSensitivity+        sensitivity <- asks effectiveMetaPrefixSensitivity         let mrule = case (posStructural pos, posStrict pos) of               (ObjectPos, _) -> Just MetaPrefixBoth               (MetaPos, ObjectPos)@@ -260,20 +219,20 @@      -- Is the Π-domain of this function node meta-shaped?     domainIsMeta :: forall l. Distinct l => TermT l -> TypeCheck l Bool-    domainIsMeta f = flip catchError (\_ -> pure False) $ do+    domainIsMeta f = do       tf <- typeOfUncomputed f       headView tf >>= \case         TypeFunT _ _ _ dom _ _ -> isMetaType dom         _                      -> pure False      funDomain :: forall l. Distinct l => TermT l -> TypeCheck l (Maybe (TermT l))-    funDomain tf = flip catchError (\_ -> pure Nothing) $+    funDomain tf =       headView tf >>= \case         TypeFunT _ _ _ dom _ _ -> pure (Just dom)         _                      -> pure Nothing      modalDomain :: forall l. TermT l -> TypeCheck l (Maybe (TermT l))-    modalDomain tv = flip catchError (\_ -> pure Nothing) $+    modalDomain tv =       pure $ case stripTypeRestrictions tv of         TypeModalT _ _ a -> Just a         _                -> Nothing
src/Rzk/TypeCheck/Monad.hs view
@@ -15,7 +15,7 @@ -- @closeScope@ had to wrap the error one binder deeper and re-emit the holes. module Rzk.TypeCheck.Monad where -import           Control.Monad            (unless)+import           Control.Monad            (unless, when) import           Control.Monad.Except     (ExceptT,                                            MonadError (catchError, throwError),                                            runExceptT)@@ -23,12 +23,14 @@ import           Control.Monad.Trans      (lift) import           Control.Monad.Trans.State.Strict (State, get, modify', put,                                            runState)+import qualified Data.IntMap.Strict       as IntMap+import qualified Data.IntSet              as IntSet import           Debug.Trace              (trace)  import           Control.Monad.Foil       (Distinct) import qualified Control.Monad.Foil       as Foil -import           Language.Rzk.Foil.Names (VarIdent)+import           Language.Rzk.Foil.Names (TModality, VarIdent) import           Language.Rzk.Foil.Syntax (positionOfTerm) import           Rzk.TypeCheck.Context import           Rzk.TypeCheck.Display@@ -39,8 +41,20 @@ data HoleEntry = HoleEntry   { holeEntryName :: VarIdent   , holeEntryType :: Rendered+  , holeEntryMode :: HoleModalInfo   } deriving (Eq, Show) +data HoleModalInfo = HoleModalInfo+  { holeItemModality   :: TModality+  , holeItemLocks      :: TModality+  , holeItemAccessible :: Bool+  } deriving (Eq, Show)++data HoleTopeEntry = HoleTopeEntry+  { holeTopeValue :: Rendered+  , holeTopeMode  :: HoleModalInfo+  } deriving (Eq, Show)+ -- | The structured goal and context at a hole, recorded in lenient mode (see -- 'allowHoles'). Everything is rendered to user-facing names at record time, so -- 'HoleInfo' is independent of the scope it came from. Local hypotheses are split@@ -58,10 +72,10 @@     -- restricted type in 'holeGoal'.)   , holeTermVars      :: [HoleEntry]    -- ^ local hypotheses whose type is not a cube   , holeCubeVars      :: [HoleEntry]    -- ^ local cube variables (type is a cube)-  , holeTopes         :: [Rendered]     -- ^ local tope assumptions (excluding ⊤)+  , holeTopes         :: [HoleTopeEntry] -- ^ local tope assumptions (excluding ⊤)   , holeCandidates    :: [Rendered]-    -- ^ elimination spines over the local hypotheses whose type fits the goal,-    -- with applied arguments left as holes. Already rendered, like the rest.+    -- ^ Rendered moves from local hypotheses, allow-listed top-level lemmas,+    -- and tope-context elimination; missing subterms remain holes.   , holeIntroductions :: [Rendered]     -- ^ introduction forms for the goal type, built from its head constructor     -- with the constituents left as holes. Already rendered, like the rest.@@ -71,10 +85,7 @@   , holeLocation      :: Maybe LocationInfo   } deriving (Eq, Show) --- | A non-fatal finding of the checker, recorded on the writer channel--- beside the holes and carried out of a run in @Checked@. Structured, so--- the CLI, the LSP, and (later) safe mode each decide how to present or--- escalate it.+-- | A structured checker diagnostic. Safe error mode rejects fragment violations. data CheckWarning   = LargeInductiveTypeWarning       VarIdent              -- ^ the data type@@ -87,12 +98,60 @@       Int                   -- ^ the length of the meta prefix       MetaPrefixRule       (Maybe LocationInfo)+  | RSTTScopeWarning RSTTExtension String (Maybe LocationInfo)+  | RSTTHoleWarning (Maybe LocationInfo)+  | RSTTIncompleteWarning String (Maybe LocationInfo)+  | OverhangWarning+      String                -- ^ restriction face or recOR branch guard+      String                -- ^ the face or guard, rendered+      [String]              -- ^ the local tope context, rendered+      (Maybe LocationInfo)+  | TopeFamilyDomainWarning+      String                -- ^ the family, rendered where it was checked+      String                -- ^ its declared domain, rendered under the family's binder+      (Maybe LocationInfo)+  | FreeStandingRestrictionWarning+      VarIdent              -- ^ the declaration+      String                -- ^ the restricted type, rendered+      FragmentUse           -- ^ what assumes it+      (Maybe LocationInfo)+  | MetaBinderWarning+      VarIdent              -- ^ the declaration+      VarIdent              -- ^ the variable bound inside a term+      String                -- ^ its type, rendered+      (Maybe LocationInfo)   deriving (Eq, Show) +-- | Diagnostic categories for constructs outside the RSTT fragment.+data RSTTExtension = RSTTModal | RSTTInterval | RSTTInductive | RSTTShapeDependency | RSTTUnsupported | RSTTSchematic+  deriving (Eq, Show)++-- | What assumes a free-standing restriction (see "Rzk.TypeCheck.Fragment.RSTT"),+-- which conservativity allows to be concluded but not assumed.+data FragmentUse+  = UseBinder+    -- ^ the type of a binder (λ, Π, Σ, or a declaration's parameter)+  | UseMotive+    -- ^ the motive of an eliminator+  | UseData+    -- ^ inside a type passed as data, at a meta-typed argument or component+  | UseIdentity+    -- ^ the type of an identity type, whose endpoints it types+  | UseConcluded+    -- ^ a concluded type, off the spine of codomains (a Σ component, say)+  deriving (Eq, Show)+ -- | Where a warning points, for per-file attribution. warningLocation :: CheckWarning -> Maybe LocationInfo warningLocation (LargeInductiveTypeWarning _ _ loc)  = loc warningLocation (MetaPrefixWarning _ _ _ _ _ loc)    = loc+warningLocation (RSTTScopeWarning _ _ loc)           = loc+warningLocation (RSTTIncompleteWarning _ loc)       = loc+warningLocation (RSTTHoleWarning loc)               = loc+warningLocation (OverhangWarning _ _ _ loc)         = loc+warningLocation (TopeFamilyDomainWarning _ _ loc)    = loc+warningLocation (FreeStandingRestrictionWarning _ _ _ loc) = loc+warningLocation (MetaBinderWarning _ _ _ loc)       = loc  -- | Which candidate rule of the meta-parameter layer check flags a -- 'MetaPrefixWarning' (see "Rzk.TypeCheck.MetaPrefix"): the structural@@ -109,14 +168,17 @@ data CheckLog = CheckLog   { logHolesRev    :: [HoleInfo]   , logWarningsRev :: [CheckWarning]+  , logSchematicCache :: IntSet.IntSet+  -- Nothing records an unsuccessful or ongoing object-family probe.+  , logSchematicObjectFamilies :: IntMap.IntMap (Maybe Int)   }  emptyCheckLog :: CheckLog-emptyCheckLog = CheckLog [] []+emptyCheckLog = CheckLog [] [] IntSet.empty IntMap.empty  -- | What a run recorded, in the order it was recorded. checkLog :: CheckLog -> ([HoleInfo], [CheckWarning])-checkLog (CheckLog holes warnings) = (reverse holes, reverse warnings)+checkLog (CheckLog holes warnings _ _) = (reverse holes, reverse warnings)  -- | The record of a run is kept in the /state/, beneath the error channel, -- rather than on a writer channel above it.@@ -191,6 +253,19 @@ localWarnOverhang :: Bool -> TypeCheck n a -> TypeCheck n a localWarnOverhang warn = local $ \ctx -> ctx { ctxWarnOverhang = warn } +localWarnTopeFamilyDomain :: Bool -> TypeCheck n a -> TypeCheck n a+localWarnTopeFamilyDomain warn = local $ \ctx -> ctx { ctxWarnTopeFamilyDomain = warn }++localWarnFreeStandingRestriction :: Bool -> TypeCheck n a -> TypeCheck n a+localWarnFreeStandingRestriction warn =+  local $ \ctx -> ctx { ctxStandaloneWarnFreeStandingRestriction = warn }++localWarnShapeDependency :: Bool -> TypeCheck n a -> TypeCheck n a+localWarnShapeDependency warn = local $ \ctx -> ctx { ctxStandaloneWarnShapeDependency = warn }++localWarnMetaBinder :: Bool -> TypeCheck n a -> TypeCheck n a+localWarnMetaBinder warn = local $ \ctx -> ctx { ctxStandaloneWarnMetaBinder = warn }+ localMetaPrefixSensitivity :: MetaPrefixSensitivity -> TypeCheck n a -> TypeCheck n a localMetaPrefixSensitivity sensitivity =   local $ \ctx -> ctx { ctxMetaPrefixSensitivity = sensitivity }@@ -275,15 +350,45 @@  -- * Holes -recordHoleInfo :: HoleInfo -> TypeCheck n ()-recordHoleInfo info =+recordHoleInfo :: Distinct n => HoleInfo -> TypeCheck n ()+recordHoleInfo info = do   modifyLog $ \l -> l { logHolesRev = info : logHolesRev l }+  enabled <- asks rsttSafeEnabled+  when enabled $ recordCheckWarning (RSTTHoleWarning (holeLocation info))  -- * Warnings -recordCheckWarning :: CheckWarning -> TypeCheck n ()-recordCheckWarning warning =-  modifyLog $ \l -> l { logWarningsRev = warning : logWarningsRev l }+-- | Record a warning once, rejecting fragment violations in safe error mode.+recordCheckWarning :: Distinct n => CheckWarning -> TypeCheck n ()+recordCheckWarning warning = do+  -- Signature and body elaboration may report the same annotation twice.+  modifyLog $ \l ->+    if warning `elem` logWarningsRev l then l+    else l { logWarningsRev = warning : logWarningsRev l }+  mode <- asks rsttSafeMode+  when (mode == RSTTSafeError) $+    mapM_ (issueTypeError . TypeErrorRSTT) (rsttViolation warning)++-- | Describe a fragment violation; return 'Nothing' for unrelated warnings.+rsttViolation :: CheckWarning -> Maybe String+rsttViolation = \case+  MetaPrefixWarning _ _ _ _ _ _ -> Just "unsaturated schematic parameters"+  FreeStandingRestrictionWarning _ _ _ _ -> Just "free-standing restriction in an assumed position"+  MetaBinderWarning _ _ _ _ -> Just "schematic binder inside a term"+  RSTTScopeWarning _ feature _ -> Just (feature <> " is outside RSTT")+  RSTTHoleWarning _ -> Just "unfinished obligation"+  RSTTIncompleteWarning reason _ -> Just reason+  _ -> Nothing++-- | Report an unfinished fragment check without masking a safe-mode error.+reportIncompleteRSTTCheck :: Distinct n => String -> TypeErrorInScopedContext -> TypeCheck n ()+reportIncompleteRSTTCheck _ err@(TypeErrorInScopedContext _ TypeErrorRSTT{}) = throwError err+reportIncompleteRSTTCheck what (TypeErrorInScopedContext _ err) = do+  loc <- asks ctxLocation+  let reason = case err of+        TypeErrorOther message -> message+        _ -> "could not inspect a type"+  recordCheckWarning $ RSTTIncompleteWarning (what <> ": " <> reason) loc  -- * Locations 
src/Rzk/TypeCheck/NbE.hs view
@@ -4,9 +4,42 @@ {-# LANGUAGE PatternSynonyms     #-} {-# LANGUAGE ScopedTypeVariables #-} --- | Normalisation by evaluation, used as an all-or-nothing fast path for--- conversion checking.+-- | A conversion fast path using normalisation by evaluation. Evaluation keeps+-- neutral spines with lazy unfoldings and compares them with one-step η for+-- functions and pairs. 'Convertible' accepts the comparison; 'DontKnow' leaves+-- it to ordinary unification. --+-- Constructs whose reduction depends on the tope context or modalities, and+-- holes, abort this fast path. Extension types and @recBOT@ are compared+-- structurally. See the conversion, soundness and attribution notes below.+module Rzk.TypeCheck.NbE+  ( Conversion (..)+  , nbeConvertible+    -- * Conversion notes+    -- $conversion+    -- * Soundness+    -- $soundness+    -- * Attribution+    -- $attribution+  ) where++import           Control.Monad.Reader              (asks)+import           Data.Bifoldable                   (bifoldMap)+import           Data.Bifunctor                    (bimap)+import           Data.Monoid                       (All (..))+import           Data.ZipMatchK                    (zipMatch2)++import           Control.Monad.Foil                (NameBinder)+import qualified Control.Monad.Foil                as Foil+import           Control.Monad.Free.Foil           (AST (Node, Var),+                                                    ScopedAST (..))+import           Control.Monad.Free.Foil.Annotated (AnnSig (..))++import           Language.Rzk.Foil.Syntax+import           Rzk.TypeCheck.Context+import           Rzk.TypeCheck.Monad++-- $conversion -- 'nbeConvertible' evaluates both sides into a value domain with closures -- (sharing by construction: a definition's value is evaluated once per -- occurrence, not once per copy, and Haskell's laziness makes the evaluation@@ -19,13 +52,17 @@ -- -- It answers only 'Convertible' or 'DontKnow', never a definite inequality, -- so a caller falls back to the ordinary unification on 'DontKnow'. The two--- cases are not opposites, which is why the answer is not a 'Bool'. The fast--- path can therefore accept more--- than the unification below it, but never less. Note that it does accept--- more. The ordinary path decomposes an application pairwise, which invents--- subgoals that a βδ-equal but structurally different pair need not meet+-- cases are not opposites, which is why the answer is not a 'Bool'. NbE can+-- accept comparisons that ordinary unification rejects: pairwise application+-- decomposition can create subgoals that βδ-equal applications need not meet -- (see 'Rzk.TypeCheck.Unify.unifyViaDecompose'). --+-- The evaluator is a pure function of the 'Context': 'valueOfVar' is a plain+-- reader-only lookup, and fresh variables for comparing closures are de+-- Bruijn levels ('HFresh'), so the foil scope machinery is never extended and+-- no quote function is needed.+--+-- $soundness -- Soundness is a subset argument: 'Convertible' is answered only for terms that are -- βδ-convertible up to α and the one-step η above, with every construct whose -- /reduction/ consults the context — @recOR@ guard selection, holes, the@@ -34,16 +71,10 @@ -- structurally (see the note at their 'eval' case): a structurally identical -- pair of restricted types is also accepted by the ordinary unification, -- through reflexive coverage and the cross-face coherences already proved at--- formation. Every 'Convertible' is therefore also a success of the old--- unification.------ The evaluator is a pure function of the 'Context': 'valueOfVar' is a plain--- reader-only lookup, and fresh variables for comparing closures are de--- Bruijn levels ('HFresh'), so the foil scope machinery is never extended and--- no quote function is needed.------ == Attribution+-- formation. The soundness claim concerns definitional equality, rather than+-- the comparisons accepted by the previous unification algorithm. --+-- $attribution -- None of the underlying techniques are ours. Semantic conversion checking — -- evaluate both sides into a value domain with closures and compare the -- values, applying functions to fresh generic values — is the algorithm of@@ -81,23 +112,6 @@ -- ('Convertible' or 'DontKnow', never refute), and 'VAbort' poisoning of the -- context-sensitive fragment so that the fast path stays sound by a subset -- argument.-module Rzk.TypeCheck.NbE (Conversion (..), nbeConvertible) where--import           Control.Monad.Reader              (asks)-import           Data.Bifoldable                   (bifoldMap)-import           Data.Bifunctor                    (bimap)-import           Data.Monoid                       (All (..))-import           Data.ZipMatchK                    (zipMatch2)--import           Control.Monad.Foil                (NameBinder)-import qualified Control.Monad.Foil                as Foil-import           Control.Monad.Free.Foil           (AST (Node, Var),-                                                    ScopedAST (..))-import           Control.Monad.Free.Foil.Annotated (AnnSig (..))--import           Language.Rzk.Foil.Syntax-import           Rzk.TypeCheck.Context-import           Rzk.TypeCheck.Monad  -- * The value domain 
+ src/Rzk/TypeCheck/Schematic.hs view
@@ -0,0 +1,418 @@+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE GADTs #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE ScopedTypeVariables #-}++-- | Check schematic dRzk declarations without treating universes as object types.+-- Family arguments are checked at their indices. Schematic rules,+-- such as function extensionality, may also be parameters of a declaration.+-- Postulates supply trusted rules; checking their statements does not prove them.+module Rzk.TypeCheck.Schematic+  ( SchematicStatement, CheckedSchematicDeclaration, checkSchematicDeclaration+  , recordSchematicDeclaration+  ) where++import Control.Monad (forM_, unless, void, when)+import Control.Monad.Except (catchError)+import Control.Monad.Reader (asks, local)+import Control.Monad.State.Strict (gets)+import Data.Bifoldable (bifoldMap)+import qualified Data.IntMap.Strict as IntMap+import qualified Data.IntSet as IntSet+import Data.Maybe (isJust)+import Control.Monad.Foil (Distinct)+import qualified Control.Monad.Foil as Foil+import Control.Monad.Free.Foil (AST (..))+import Control.Monad.Free.Foil.Annotated (AnnSig (..))+import Language.Rzk.Foil.Names (TModality (..), TypeInfo (..), VarIdent)+import Language.Rzk.Foil.Syntax+import Rzk.TypeCheck.Context+import Rzk.TypeCheck.Display (namingOfContext, ppTerm)+import Rzk.TypeCheck.Error+import Rzk.TypeCheck.Eval+import Rzk.TypeCheck.Fragment.RSTT (fragmentHead)+import Rzk.TypeCheck.Monad++-- Constructors stay private: a statement alone does not certify its proof.+newtype SchematicStatement n = SchematicStatement (TermT n)+data CheckedSchematicDeclaration n = CheckedSchematicDeclaration+  (SchematicStatement n) (Maybe (TermT n))++-- | Roles of elaborated type and domain expressions in schematic declarations.+-- These are not universe levels. The fragment's formation conditions are+-- checked separately in "Rzk.TypeCheck.Fragment.RSTT".+data Sort+  = ObjectType+    -- ^ Ordinary types that may instantiate @(A : U)@, e.g. @Unit@ or @A -> A@.+  | ParameterKind+    -- ^ Kinds of schematic data: @U@, @CUBE@, @TOPE@, family kinds such as+    -- @A -> U@, and dependent sums containing non-object components.+  | SchematicRule+    -- ^ Function signatures ending in an object type and quantifying over+    -- kinds or rules, e.g. @(A : U) -> A -> A@.+  | Shape+    -- ^ Cube or tope expressions, e.g. @2@ or @TOP@; these are not object types.+  deriving (Eq)++-- | Validate an elaborated declaration and the definitions used by its proof.+-- This supplements dRzk typing with kind checks; it is not a separate RSTT kernel.+checkSchematicDeclaration+  :: Distinct n => TermT n -> Maybe (TermT n)+  -> TypeCheck n (CheckedSchematicDeclaration n)+checkSchematicDeclaration ty value = do+  declaration 256 IntSet.empty ty value+  pure (CheckedSchematicDeclaration (SchematicStatement ty) value)++-- | Apply the selected safe-mode policy and return whether validation succeeded.+recordSchematicDeclaration+  :: Distinct n => VarIdent -> TermT n -> Maybe (TermT n) -> TypeCheck n SchematicStatus+recordSchematicDeclaration name ty value = do+  enabled <- asks rsttSafeEnabled+  if not enabled then pure SchematicUnchecked else+    (checkSchematicDeclaration ty value >> pure SchematicChecked) `catchError` \err -> do+      case err of+        TypeErrorInScopedContext _ (TypeErrorSchematic problem reason) -> do+          loc <- asks ctxLocation+          warnings <- gets logWarningsRev+          -- Source checking already gives more precise locations for these.+          let alreadyReported = problem == SchematicUnsupported && any (sameDeclaration loc) warnings+          unless alreadyReported $ recordCheckWarning (RSTTScopeWarning RSTTSchematic+            (reason <> " (in " <> show name <> ")") loc)+        _ -> reportIncompleteRSTTCheck ("schematic check incomplete in " <> show name) err+      pure SchematicRejected++sameDeclaration :: Maybe LocationInfo -> CheckWarning -> Bool+sameDeclaration loc warning = withinDeclaration && case warning of+  RSTTHoleWarning{} -> True+  RSTTScopeWarning RSTTModal _ _ -> True+  RSTTScopeWarning RSTTInductive _ _ -> True+  RSTTScopeWarning RSTTInterval _ _ -> True+  RSTTScopeWarning RSTTUnsupported _ _ -> True+  _ -> False+  where+    withinDeclaration = case (loc, warningLocation warning) of+      (Just start, Just at) -> locationFilePath start == locationFilePath at &&+        locationLine at >= locationLine start+      _ -> loc == warningLocation warning++invalid :: Distinct n => String -> TermT n -> TypeCheck n a+invalid = schematicError SchematicKindMismatch++schematicError :: Distinct n => SchematicProblem -> String -> TermT n -> TypeCheck n a+schematicError problem reason t = do+  naming <- asks namingOfContext+  issueTypeError (TypeErrorSchematic problem (reason <> ": " <> ppTerm naming (untyped t)))++budget :: Distinct n => Int -> TypeCheck n ()+budget fuel = when (fuel <= 0) $+  issueTypeError (TypeErrorOther "schematic validation limit reached")++-- Check a declaration telescope separately: a definition may name a family kind+-- or a schema, whereas an argument to a type parameter must be an object type.+declaration :: Distinct n => Int -> IntSet.IntSet -> TermT n -> Maybe (TermT n) -> TypeCheck n ()+declaration fuel seen ty value = do+  budget fuel+  -- Check dependencies before reduction can obscure their failures.+  dependencies ty+  signature fuel seen ty+  mapM_ (\t -> dependencies t >> term fuel seen t) value+  where+    dependencies = mapM_ (uses fuel seen . Var) . freeVarsOfTermT++signature :: Distinct n => Int -> IntSet.IntSet -> TermT n -> TypeCheck n ()+signature fuel seen ty = do+  budget fuel+  uses fuel seen ty+  inspectRedex fuel seen ty+  fragmentHead fuel ty >>= \case+    TypeFunT _ orig md dom guard body -> do+      void (classify (fuel - 1) seen dom)+      mapM_ (\g -> inScope orig md dom g (term (fuel - 1) seen)) guard+      inScope orig md dom body (signature (fuel - 1) seen)+    t -> void (classify (fuel - 1) seen t)++-- Check each dependency before using its signature, even if safe mode was off+-- when it was declared. Successful earlier checks are cached in the context.+-- Check variables during traversal instead of rescanning every subtree.+uses :: Distinct n => Int -> IntSet.IntSet -> TermT n -> TypeCheck n ()+uses fuel seen (Var v) = do+  info <- infoOfVar id v+  cached <- gets (IntSet.member (Foil.nameId v) . logSchematicCache)+  when (varIsTopLevel info && varSchematicStatus info /= SchematicChecked && not cached) $ do+    when (varSchematicStatus info == SchematicRejected) $+      schematicError SchematicDependency "dependency failed schematic validation" (Var v)+    when (isJust (varDataRole info)) $+      schematicError SchematicUnsupported "inductive dependency" (Var v)+    budget fuel+    when (IntSet.member (Foil.nameId v) seen) $+      issueTypeError (TypeErrorOther "cyclic schematic dependency")+    -- A caller's tope assumptions cannot justify a reusable dependency check.+    local withoutCallerTopes $ declaration (fuel - 1) (IntSet.insert (Foil.nameId v) seen)+      (varType info) (varValue info)+    modifyLog $ \checkLog' -> checkLog'+      { logSchematicCache = IntSet.insert (Foil.nameId v) (logSchematicCache checkLog') }+uses _ _ _ = pure ()++withoutCallerTopes :: Context n -> Context n+withoutCallerTopes ctx = ctx+  { ctxDiscreteTopes = [], ctxTopes = [], ctxTopesNF = []+  , ctxTopesNFUnion = [[]], ctxTopesEntailBottom = Just False+  , ctxTopesSaturated = SaturationUncached+  }++-- Check erased arguments and annotations before exposing the result.+inspectRedex :: Distinct n => Int -> IntSet.IntSet -> TermT n -> TypeCheck n ()+inspectRedex fuel seen original = case original of+  LetT{} -> term fuel seen original+  TypeAscT{} -> term fuel seen original+  FirstT{} -> term fuel seen original+  SecondT{} -> term fuel seen original+  IdJT{} -> term fuel seen original+  RecOrT{} -> term fuel seen original+  _ -> applications fuel seen original++classify :: Distinct n => Int -> IntSet.IntSet -> TermT n -> TypeCheck n Sort+classify fuel seen original = do+  budget fuel+  uses fuel seen original+  inspectRedex fuel seen original+  knownObjectFamily fuel seen original >>= \case+    True -> pure ObjectType+    False -> classifyHead fuel seen original++classifyHead :: Distinct n => Int -> IntSet.IntSet -> TermT n -> TypeCheck n Sort+classifyHead fuel seen original =+  fragmentHead fuel original >>= \case+    UniverseT{} -> pure ParameterKind+    UniverseCubeT{} -> pure ParameterKind+    UniverseTopeT{} -> pure ParameterKind+    TypeFunT _ orig md dom guard body -> do+      d <- classify (fuel - 1) seen dom+      mapM_ (\g -> inScope orig md dom g (term (fuel - 1) seen)) guard+      r <- inScope orig md dom body (classify (fuel - 1) seen)+      case (d, r) of+        (ObjectType, ObjectType) -> pure ObjectType+        (Shape, ObjectType) -> pure ObjectType+        (_, ParameterKind) -> pure ParameterKind+        (_, Shape) -> invalid "cube or shape family" original+        _ -> pure SchematicRule+    TypeSigmaT _ orig md a b -> do+      d <- classify (fuel - 1) seen a+      r <- inScope orig md a b (classify (fuel - 1) seen)+      pure (if d == ObjectType && r == ObjectType then ObjectType else ParameterKind)+    TypeIdT _ a mt b -> do+      ty <- maybe (schematicTypeOf fuel a) pure mt+      object (fuel - 1) seen ty+      term (fuel - 1) seen a+      term (fuel - 1) seen b+      pure ObjectType+    TypeUnitT{} -> pure ObjectType+    RecBottomT{} -> pure ObjectType+    RecOrT _ branches -> do+      sorts <- mapM (\(p, v) -> localTope p (classify (fuel - 1) seen v)) branches+      case sorts of+        s : rest | all (== s) rest -> pure s+        _ -> invalid "case split between different schematic kinds" original+    TypeRestrictedT _ ty rs -> do+      s <- classify (fuel - 1) seen ty+      forM_ rs $ \(p, v) -> term (fuel - 1) seen p >> argument (fuel - 1) seen ty v+      pure s+    CubeUnitT{} -> pure Shape+    Cube2T{} -> pure Shape+    CubeProductT _ a b -> term (fuel - 1) seen a >> term (fuel - 1) seen b >> pure Shape+    t -> do+      termNeutral (fuel - 1) seen t+      schematicTypeOf fuel t >>= fragmentHead fuel >>= \case+        UniverseT{} -> pure ObjectType+        UniverseCubeT{} -> pure Shape+        UniverseTopeT{} -> pure Shape+        _ -> invalid "expected an object type, parameter kind, or schematic rule" t++-- Reuse only universally object-valued families, after checking actual arguments.+-- Other families retain reduction-based classification in the caller's context.+knownObjectFamily :: Distinct n => Int -> IntSet.IntSet -> TermT n -> TypeCheck n Bool+knownObjectFamily fuel seen = spine 0+  where+    spine arity (AppT _ f _) = spine (arity + 1) f+    spine arity (Var v) = do+      info <- infoOfVar id v+      if not (varIsTopLevel info) then pure False else do+        let key = Foil.nameId v+        cached <- gets (IntMap.lookup key . logSchematicObjectFamilies)+        summary <- case cached of+          Just result -> pure result+          Nothing -> do+            cache key Nothing+            result <- (local withoutCallerTopes $+              objectFamilyArity fuel seen 0 (varType info) (Var v))+              `catchError` \_ -> pure Nothing+            cache key result+            pure result+        pure (summary == Just arity)+    spine _ _ = pure False+    cache key result = modifyLog $ \checkLog' -> checkLog'+      { logSchematicObjectFamilies = IntMap.insert key result (logSchematicObjectFamilies checkLog') }++-- Probe at fresh parameters; never generalise a concrete instance.+objectFamilyArity :: Distinct n => Int -> IntSet.IntSet -> Int -> TermT n -> TermT n -> TypeCheck n (Maybe Int)+objectFamilyArity fuel seen arity ty value = do+  budget fuel+  fragmentHead fuel ty >>= \case+    TypeFunT _ orig md dom _ body ->+      inScope orig md dom body $ \cod -> do+        bound <- asks ctxBound+        case bound of+          v : _ -> objectFamilyArity (fuel - 1) seen (arity + 1) cod+            (appT cod (Foil.sink value) (Var v))+          [] -> issueTypeError (TypeErrorOther "missing schematic index")+    UniverseT{} -> do+      s <- classify (fuel - 1) seen value+      pure (if s == ObjectType then Just arity else Nothing)+    _ -> pure Nothing++object :: Distinct n => Int -> IntSet.IntSet -> TermT n -> TypeCheck n ()+object fuel seen t = do+  s <- classify (fuel - 1) seen t+  unless (s == ObjectType) (invalid "expected an object type" t)++-- A type-family argument is checked pointwise. In particular U, A -> U, and+-- (A : U) -> A cannot instantiate a parameter declared simply as A : U.+argument :: Distinct n => Int -> IntSet.IntSet -> TermT n -> TermT n -> TypeCheck n ()+argument fuel seen dom arg = do+  budget fuel+  functionHead fuel dom >>= \case+    UniverseT{} -> object (fuel - 1) seen arg+    TypeFunT _ orig md a guard body -> do+      s <- classify (fuel - 1) seen dom+      if s == ParameterKind then do+        -- Eta-expand only for checking; the ordinary checker has checked the+        -- argument's type. The body is inspected with the same fresh index.+        inScope orig md a body $ \cod -> do+          ctx <- asks id+          case ctxBound ctx of+            v : _ -> argument (fuel - 1) seen cod (appT cod (Foil.sink arg) (Var v))+            [] -> issueTypeError (TypeErrorOther "missing schematic index")+        mapM_ (\g -> inScope orig md a g (term (fuel - 1) seen)) guard+      else term (fuel - 1) seen arg+    _ -> term (fuel - 1) seen arg++-- Section abstraction can leave application annotations describing an earlier+-- telescope. Derive elimination types from the current signatures instead.+-- TODO: Share this reconstruction with Eval when repairing annotations there.+schematicTypeOf :: Distinct n => Int -> TermT n -> TypeCheck n (TermT n)+schematicTypeOf fuel t = do+  budget fuel+  case t of+    AppT _ f x -> schematicTypeOf (fuel - 1) f >>= functionHead fuel >>= \case+      TypeFunT _ _ _ _ _ ret -> instantiate ret x+      _ -> invalid "application without a function type" f+    FirstT _ p -> schematicTypeOf (fuel - 1) p >>= functionHead fuel >>= \case+      TypeSigmaT _ _ _ a _ -> pure a+      CubeProductT _ a _ -> pure a+      _ -> invalid "projection without a product type" p+    SecondT _ p -> schematicTypeOf (fuel - 1) p >>= functionHead fuel >>= \case+      TypeSigmaT _ _ _ a b -> instantiate b (firstT a p)+      CubeProductT _ _ b -> pure b+      _ -> invalid "projection without a product type" p+    _ -> typeOfUncomputed t++-- Boundaries constrain a function without changing its parameter kinds.+functionHead :: Distinct n => Int -> TermT n -> TypeCheck n (TermT n)+functionHead fuel t = do+  budget fuel+  fragmentHead fuel t >>= \case+    TypeRestrictedT _ base _ -> functionHead (fuel - 1) base+    head' -> pure head'++applications :: Distinct n => Int -> IntSet.IntSet -> TermT n -> TypeCheck n ()+applications fuel seen (AppT _ f x) = do+  budget fuel+  term (fuel - 1) seen f+  schematicTypeOf fuel f >>= functionHead fuel >>= \case+    TypeFunT _ _ _ dom _ _ -> argument (fuel - 1) seen dom x+    _ -> invalid "application without a schematic or object function type" f+applications _ _ _ = pure ()++term :: Distinct n => Int -> IntSet.IntSet -> TermT n -> TypeCheck n ()+term fuel seen t = do+  budget fuel+  uses fuel seen t+  case t of+    TypeFunT{} -> void (classify (fuel - 1) seen t)+    TypeSigmaT{} -> void (classify (fuel - 1) seen t)+    TypeIdT{} -> void (classify (fuel - 1) seen t)+    TypeRestrictedT{} -> void (classify (fuel - 1) seen t)+    LambdaT info orig param body -> do+      (md, dom) <- case param of+        Just (LambdaParam md dom guard) -> do+          mapM_ (\g -> inScope orig md dom g (term (fuel - 1) seen)) guard+          pure (md, dom)+        Nothing -> functionHead fuel (infoType info) >>= \case+          TypeFunT _ _ md dom _ _ -> pure (md, dom)+          _ -> invalid "lambda without a function type" t+      void (classify (fuel - 1) seen dom)+      inScope orig md dom body (term (fuel - 1) seen)+    AppT{} -> applications fuel seen t+    LetT _ orig annotation value body -> do+      mapM_ (signature (fuel - 1) seen) annotation+      term (fuel - 1) seen value+      ty <- maybe (schematicTypeOf fuel value) pure annotation+      inScopeWith orig Id ty (Just value) body (term (fuel - 1) seen)+    TypeAscT _ value ty -> signature (fuel - 1) seen ty >> term (fuel - 1) seen value+    IdJT _ a x motive d y p -> do+      object (fuel - 1) seen a+      -- J eliminates equality into object types, not into schematic kinds.+      motiveType <- schematicTypeOf fuel motive+      argument (fuel - 1) seen motiveType motive+      mapM_ (term (fuel - 1) seen) [x, motive, d, y, p]+    _ -> termNeutral fuel seen t++-- This is deliberately an allow-list. New syntax cannot inherit certification.+termNeutral :: Distinct n => Int -> IntSet.IntSet -> TermT n -> TypeCheck n ()+termNeutral fuel seen t = case t of+  Var{} -> pure ()+  UniverseT{} -> pure ()+  UniverseCubeT{} -> pure ()+  UniverseTopeT{} -> pure ()+  CubeUnitT{} -> pure ()+  CubeUnitStarT{} -> pure ()+  Cube2T{} -> pure ()+  Cube2_0T{} -> pure ()+  Cube2_1T{} -> pure ()+  TypeUnitT{} -> pure ()+  UnitT{} -> pure ()+  TopeTopT{} -> pure ()+  TopeBottomT{} -> pure ()+  CubeProductT{} -> children+  CubeSupT{} -> children+  CubeInfT{} -> children+  TopeEQT{} -> children+  TopeLEQT{} -> children+  TopeAndT{} -> children+  TopeOrT{} -> children+  PairT _ x y -> do+    ty <- schematicTypeOf fuel t+    functionHead fuel ty >>= \case+      TypeSigmaT _ _ _ a b -> do+        argument (fuel - 1) seen a x+        cod <- instantiate b x+        argument (fuel - 1) seen cod y+      CubeProductT{} -> children+      _ -> invalid "pair without a product type" t+  FirstT{} -> children+  SecondT{} -> children+  ReflT _ mx -> forM_ mx $ \(x, mty) -> do+    ty <- maybe (schematicTypeOf fuel x) pure mty+    object (fuel - 1) seen ty+    term (fuel - 1) seen x+  -- Elaboration checks the absurd tope context; recBOT has a cyclic type annotation.+  RecBottomT{} -> pure ()+  RecOrT{} -> children+  AppT{} -> applications fuel seen t+  _ -> schematicError SchematicUnsupported "unsupported schematic expression" t+  where+    children = case t of+      Node (AnnSig _ sig) -> mapM_ (term (fuel - 1) seen) (bifoldMap (const []) (:[]) sig)+      Var{} -> pure ()
src/Rzk/TypeCheck/Unify.hs view
@@ -157,7 +157,16 @@         -- A hole (in lenient mode) stands for a term of the expected type, so it         -- unifies with anything; accept it rather than falling through to the         -- dispatch below (which would panic on an unexpected term).-        Just (expected', actual') | isHoleT expected' || isHoleT actual' -> return ()+        --+        -- The same goes for a term /headed/ by a hole (@?f t@, @π₁ ?@): filling+        -- the head decides its shape, so it has none to mismatch with yet (see+        -- 'unifyStructurally'). It must be accepted here, before the spine is+        -- decomposed: comparing @?f t@ with @α t 0₂@ argument-wise would unify+        -- @t@ with @0₂@ in the cube layer and fail, although @?f := \\ t → α t 0₂@+        -- is a solution. This is what the η-expanded hole of a hole candidate+        -- meets when the goal's argument is a λ into an extension type, e.g. an+        -- edge @\\ t → α t 0₂@ of a square.+        Just (expected', actual') | isHoleHeadedT expected' || isHoleHeadedT actual' -> return ()         Just (expected', actual') -> do           same <- alphaEq expected' actual'           unless same $ dispatch expected' actual'@@ -299,7 +308,8 @@           case actual' of             TypeFunT _ty' orig' md' cube' mtope' ret' -> do               when (md /= md') $-                issueTypeError (TypeErrorOther $ "modality mismatch in function type: expected " <> show md <> " but got " <> show md')+                issueTypeError (TypeErrorModalityMismatch+                  MismatchFunctionType md md' Nothing)               switchVariance $  -- unifying in the negative position!                 unifyTerms cube cube' -- FIXME: unifyCubes               inScope2 orig' md cube' ret ret' $ \binder retBody retBody' -> do@@ -340,7 +350,8 @@           case actual' of             TypeSigmaT _ty' orig' md' a' b' -> do               when (md /= md') $-                issueTypeError (TypeErrorOther $ "modality mismatch in sigma type: expected " <> show md <> " but got " <> show md')+                issueTypeError (TypeErrorModalityMismatch+                  MismatchSigmaType md md' Nothing)               unify Nothing a a'               inScope2 orig' md a' b b' $ \_binder bBody bBody' ->                 unify Nothing bBody bBody'@@ -377,7 +388,8 @@                   case stripTypeRestrictions (infoType ty') of                     TypeFunT _ty' _origF' md' param' mtope' _ret' -> do                       when (md /= md') $-                        issueTypeError (TypeErrorOther $ "modality mismatch in lambda: expected " <> show md <> " but got " <> show md')+                        issueTypeError (TypeErrorModalityMismatch+                          MismatchLambda md md' Nothing)                       unify Nothing param param' -- we (should) have already checked this in types!                       inScope2 orig' md param body body' $ \binder bodyIn bodyIn' -> do                         scope <- asks ctxScope@@ -410,9 +422,7 @@             LetModT _ _ app' inn' _ _mmotive' val' body'               | app == app', inn == inn' -> do                 unify Nothing val val'-                bty <- typeOf val >>= \case-                  TypeModalT _ _ t -> pure t-                  _ -> panicImpossible "not modal in letmod"+                bty <- requireTypeUnderModal inn val                 inScope2 orig (comp app inn) bty body body' $ \_binder bodyIn bodyIn' ->                   unify Nothing bodyIn bodyIn'             _ -> err
test/Rzk/DiagnosticSpec.hs view
@@ -46,6 +46,44 @@           ("goal" `isInfixOf` diagnosticMessage d) `shouldBe` True         ds  -> expectationFailure ("expected one diagnostic, got " <> show (length ds)) +    it "leaves ordinary identity context entries unmarked" $ do+      case diagnose "#lang rzk-1\n#define g : (A : U) -> A -> A\n  := \\ A a -> ?\n" of+        [d] -> do+          diagnosticMessage d `shouldSatisfy` isInfixOf "    A : U"+          diagnosticMessage d `shouldSatisfy` isInfixOf "    a : A"+          diagnosticMessage d `shouldNotSatisfy` isInfixOf "× "+          diagnosticMessage d `shouldNotSatisfy` isInfixOf "[modality:"+        ds  -> expectationFailure ("expected one diagnostic, got " <> show (length ds))++    it "marks inaccessible modal term and cube variables" $ do+      let src = "#lang rzk-1\n\+                \#def g (A : U) (B :_op U) (i :_op 2) : U := ?\n"+      case diagnose src of+        [d] -> do+          diagnosticMessage d `shouldSatisfy` isInfixOf "    A : U"+          diagnosticMessage d `shouldNotSatisfy` isInfixOf "× A : U"+          diagnosticMessage d `shouldSatisfy`+            isInfixOf "    × B : U  [modality: ᵒᵖ, locks: _id]"+          diagnosticMessage d `shouldSatisfy`+            isInfixOf "    × i : 2  [modality: ᵒᵖ, locks: _id]"+        ds  -> expectationFailure ("expected one diagnostic, got " <> show (length ds))++    it "keeps and marks a tope that is unavailable under a modal lock" $ do+      let src = "#lang rzk-1\n\+                \#def g : (i : 2 | i === 0_2) -> _op Unit\n\+                \  := \\ i -> mod _op ?\n"+      case diagnose src of+        [d] -> do+          diagnosticMessage d `shouldSatisfy`+            isInfixOf "    × i : 2  [modality: _id, locks: ᵒᵖ]"+          diagnosticMessage d `shouldSatisfy`+            isInfixOf "    × i ≡ 0₂  [modality: _id, locks: ᵒᵖ]"+          -- the tope is not in force, so it is in topeInfo but not in topes+          let json = BL8.unpack (encode d)+          ("\"topes\":[]" `isInfixOf` json) `shouldBe` True+          ("\"accessible\":false" `isInfixOf` json) `shouldBe` True+        ds  -> expectationFailure ("expected one diagnostic, got " <> show (length ds))+   -- The structured hole payload (Rzk.Diagnostic.HoleData) exposes the goal and   -- local context as separate rendered strings, so consumers (e.g. richer LSP   -- hovers) need not parse the prose `message`. The pair-pattern example is@@ -63,8 +101,8 @@             holeDataName hd `shouldBe` Nothing             holeDataShape hd `shouldBe` Nothing             ("t \8801 s" `isInfixOf` holeDataGoal hd) `shouldBe` True   -- t ≡ s-            map fst (holeDataCubeVars hd) `shouldContain` ["(t, s)"]-            holeDataTopes hd `shouldContain` ["s \8804 t"]              -- s ≤ t+            map holeDataEntryName (holeDataCubeVars hd) `shouldContain` ["(t, s)"]+            map holeDataTopeValue (holeDataTopes hd) `shouldContain` ["s \8804 t"] -- s ≤ t           Nothing -> expectationFailure "expected a structured hole payload"         ds  -> expectationFailure ("expected one diagnostic, got " <> show (length ds)) @@ -76,9 +114,113 @@           ("\"hole\":{" `isInfixOf` json) `shouldBe` True           ("\"goal\":" `isInfixOf` json) `shouldBe` True           ("\"cubeVars\":" `isInfixOf` json) `shouldBe` True-          ("\"topes\":" `isInfixOf` json) `shouldBe` True+          ("\"topes\":[\"" `isInfixOf` json) `shouldBe` True   -- topes stay strings+          ("\"topeInfo\":[{" `isInfixOf` json) `shouldBe` True+          ("\"tope\":" `isInfixOf` json) `shouldBe` True+          ("\"modality\":" `isInfixOf` json) `shouldBe` True+          ("\"locks\":" `isInfixOf` json) `shouldBe` True+          ("\"accessible\":" `isInfixOf` json) `shouldBe` True           -- restored binder names are present in the wire format           ("(t, s)" `isInfixOf` json) `shouldBe` True+        ds  -> expectationFailure ("expected one diagnostic, got " <> show (length ds))++  describe "diagnoseTypeError modal context" $ do+    it "marks available and unavailable variables in an error context" $ do+      let src = "#lang rzk-1\n\+                \#def bad (A : U) (B :_op U) : U := B\n"+      case diagnose src of+        [d] -> do+          diagnosticMessage d `shouldSatisfy` isInfixOf "  A : U"+          diagnosticMessage d `shouldNotSatisfy` isInfixOf "× A : U"+          diagnosticMessage d `shouldSatisfy`+            isInfixOf "× B : U  [modality: ᵒᵖ, locks: _id]"+          diagnosticMessage d `shouldSatisfy`+            isInfixOf "variable B is inaccessible in the current modal context"+          diagnosticMessage d `shouldSatisfy`+            isInfixOf "declared modality: ᵒᵖ"+          diagnosticMessage d `shouldSatisfy`+            isInfixOf "current locks:      _id"+        ds  -> expectationFailure ("expected one diagnostic, got " <> show (length ds))++    it "distinguishes lambda and modal-introduction mismatches" $ do+      let lambdaSrc = "#lang rzk-1\n\+                      \#def bad : (A : U) -> A -> A := \\ (A :_op U) a -> a\n"+          introSrc = "#lang rzk-1\n\+                     \#def bad (A :_b U) (a :_b A) : _b A := mod _op a\n"+      case (diagnose lambdaSrc, diagnose introSrc) of+        ([lambdaErr], [introErr]) -> do+          diagnosticCode lambdaErr `shouldBe` "TypeErrorModalityMismatch"+          diagnosticMessage lambdaErr `shouldSatisfy`+            isInfixOf "modality mismatch in lambda parameter A"+          diagnosticMessage lambdaErr `shouldSatisfy`+            isInfixOf "expected from function type: _id"+          diagnosticMessage introErr `shouldSatisfy`+            isInfixOf "modality mismatch in modal introduction"+          diagnosticMessage introErr `shouldSatisfy`+            isInfixOf "expected by result type: ♭"+          diagnosticMessage introErr `shouldSatisfy`+            isInfixOf "written after `mod`:     ᵒᵖ"+        result -> expectationFailure ("expected one diagnostic for each source, got " <> show result)++    it "reports the value and type for a non-modal let-mod elimination" $ do+      let src = "#lang rzk-1\n\+                \#def bad (A : U) (x : A) : A := let mod _# y := x in y\n"+      case diagnose src of+        [d] -> do+          diagnosticCode d `shouldBe` "TypeErrorNotModal"+          diagnosticMessage d `shouldSatisfy`+            isInfixOf "cannot eliminate a non-modal value with `let mod ♯`"+          diagnosticMessage d `shouldSatisfy` isInfixOf "value: x"+          diagnosticMessage d `shouldSatisfy` isInfixOf "type:  A"+        ds  -> expectationFailure ("expected one diagnostic, got " <> show (length ds))++    it "reports the term and expected type for modal introduction" $ do+      case diagnose "#lang rzk-1\n#def bad : Unit := mod _op unit\n" of+        [d] -> do+          diagnosticCode d `shouldBe` "TypeErrorNotModal"+          diagnosticMessage d `shouldSatisfy`+            isInfixOf "cannot check modal introduction against a non-modal type"+          diagnosticMessage d `shouldSatisfy` isInfixOf "term: mod ᵒᵖ unit"+          diagnosticMessage d `shouldSatisfy` isInfixOf "expected type: Unit"+        ds  -> expectationFailure ("expected one diagnostic, got " <> show (length ds))++    it "reports the expected and actual modalities for let-mod elimination" $ do+      let src = "#lang rzk-1\n\+                \#def bad (A :_op U) (x : _op A) : _op A\n\+                \  := let mod _# a := x in mod _op a\n"+      case diagnose src of+        [d] -> do+          diagnosticCode d `shouldBe` "TypeErrorModalityMismatch"+          diagnosticMessage d `shouldSatisfy`+            isInfixOf "modality mismatch in modal elimination"+          diagnosticMessage d `shouldSatisfy`+            isInfixOf "expected by `let mod`: ♯"+          diagnosticMessage d `shouldSatisfy`+            isInfixOf "value's modality:     ᵒᵖ"+        ds  -> expectationFailure ("expected one diagnostic, got " <> show (length ds))++    it "reports the operand and its type when a modal type is ill-formed" $ do+      case diagnose "#lang rzk-1\n#def bad : U := _op unit\n" of+        [d] -> do+          diagnosticCode d `shouldBe` "TypeErrorNotTypeInModal"+          diagnosticMessage d `shouldSatisfy` isInfixOf "cannot form modal type ᵒᵖ unit"+          diagnosticMessage d `shouldSatisfy` isInfixOf "has type\n  Unit"+          diagnosticMessage d `shouldSatisfy`+            isInfixOf "but its type must be U, CUBE, or TOPE"+        ds  -> expectationFailure ("expected one diagnostic, got " <> show (length ds))++    it "uses the structured modality error when unifying function types" $ do+      let src = "#lang rzk-1\n\+                \#postulate f : ((X : U) -> U) -> Unit\n\+                \#postulate g : (X :_op U) -> U\n\+                \#def bad : Unit := f g\n"+      case diagnose src of+        [d] -> do+          diagnosticCode d `shouldBe` "TypeErrorModalityMismatch"+          diagnosticMessage d `shouldSatisfy`+            isInfixOf "cannot unify function types with different parameter modalities"+          diagnosticMessage d `shouldSatisfy` isInfixOf "expected: _id"+          diagnosticMessage d `shouldSatisfy` isInfixOf "actual:   ᵒᵖ"         ds  -> expectationFailure ("expected one diagnostic, got " <> show (length ds))    describe "JSON encoding" $ do
test/Rzk/FoilCoreSpec.hs view
@@ -64,6 +64,7 @@   , varDeclaredAssumptions = []   , varLocation = Nothing   , varDataRole = Nothing+  , varSchematicStatus = SchematicUnchecked   , varMetaPrefix = 0   } @@ -84,6 +85,9 @@     it_roundTrips "\\ (t, s) -> first (t, s)" "\\ (t, s) → π₁ (t, s)"     it_roundTrips "\\ A -> \\ (x : A) -> refl_{x : A}" "\\ A → \\ (x : A) → refl_{ x : A }"     it_roundTrips "\\ t -> \\ s -> t === s" "\\ t → \\ s → t ≡ s"+    it_roundTrips "\\ x -> match _b x (c a => a)" "\\ x → match ♭ x (c a ⇒ a)"+    it_roundTrips "\\ x -> match _op x into (\\ _ -> Unit) (c => unit)" "\\ x → match ᵒᵖ x into (\\ x₁ → Unit) (c ⇒ unit)"+    it_roundTrips "\\ x -> match (mod _b x) (c => unit)" "\\ x → match (mod ♭ x) (c ⇒ unit)"    describe "α-equivalence ignores binder names" $ do     it "\\ x -> x is \\ y -> y" $
test/Rzk/HolesSpec.hs view
@@ -6,7 +6,7 @@ -- between term variables and cube variables). module Rzk.HolesSpec (spec) where -import           Data.List           (isInfixOf)+import           Data.List           (isInfixOf, isPrefixOf) import           Data.Maybe          (fromMaybe) import qualified Data.Text           as T import qualified Data.Text.IO        as T (readFile)@@ -135,10 +135,43 @@         [h1, h2] -> do           show (holeGoal h1) `shouldBe` "A"           show (holeGoal h2) `shouldBe` "A"-          map show (holeTopes h1) `shouldContain` ["t ≤ s"]-          map show (holeTopes h2) `shouldContain` ["s ≤ t"]+          map (show . holeTopeValue) (holeTopes h1) `shouldContain` ["t ≤ s"]+          map (show . holeTopeValue) (holeTopes h2) `shouldContain` ["s ≤ t"]         hs  -> expectationFailure ("expected exactly two holes, got " <> show (length hs)) +    it "records holes in point positions of a recOR guard" $ do+      let src = "#lang rzk-1\n#define square (A : U) (a : A)\n  : (2 × 2) → A\n  := \\ (t , s) → recOR ( ? ≤ ? ↦ a , ? ↦ a )\n"+          holes = holesOf src+      length (filter ((== "?") . show . holeGoal) holes) `shouldBe` 2+      map (show . holeGoal) holes `shouldContain` ["TOPE"]+      length holes `shouldBe` 3+      let pointLocations =+            [ loc+            | h <- holes+            , show (holeGoal h) == "?"+            , Just loc <- [holeLocation h]+            ]+      case pointLocations of+        [l, r] -> l `shouldNotBe` r+        ls     -> expectationFailure ("expected two point-hole locations, got " <> show ls)++    it "does not treat an undefined point name as a hole" $ do+      let src = "#lang rzk-1\n#define bad : TOPE := missing ≤ 0₂\n"+      holesOf src `shouldBe` []+      errTagsOf src `shouldContain` ["TypeErrorUndefined"]++    it "records holes in equality point positions" $ do+      let holes = holesOf "#lang rzk-1\n#define face : TOPE := ? ≡ ?\n"+      map (show . holeGoal) holes `shouldBe` ["?", "?"]++    it "rejects a general cube point on either side of an order tope" $ do+      let invalidRight = "#lang rzk-1\n#define bad (p : 2 × 2) : TOPE := ? ≤ p\n"+          invalidLeft = "#lang rzk-1\n#define bad (p : 2 × 2) : TOPE := p ≤ ?\n"+      length (holesOf invalidRight) `shouldBe` 1+      errTagsOf invalidRight `shouldContain` ["TypeErrorOther"]+      holesOf invalidLeft `shouldBe` []+      errTagsOf invalidLeft `shouldContain` ["TypeErrorOther"]+     -- When the recOR is checked against an /extension type/, each branch hole     -- reports the boundary it must meet under its tope (the restriction is     -- pushed into the branches), rather than the bare underlying type. So the@@ -151,9 +184,9 @@           ("A [" `isInfixOf` goal1) `shouldBe` True   -- a restricted type, not bare A           ("↦ f t" `isInfixOf` goal1) `shouldBe` True -- the s ≡ 0₂ face is shown           ("↦ a" `isInfixOf` goal1) `shouldBe` True   -- the s ≡ 1₂ face is shown-          map show (holeTopes h1) `shouldContain` ["s ≤ t"]+          map (show . holeTopeValue) (holeTopes h1) `shouldContain` ["s ≤ t"]           show (holeGoal h2) `shouldBe` goal1          -- both branches carry the same boundary-          map show (holeTopes h2) `shouldContain` ["t ≤ s"]+          map (show . holeTopeValue) (holeTopes h2) `shouldContain` ["t ≤ s"]         hs  -> expectationFailure ("expected exactly two holes, got " <> show (length hs))      -- A hole nested inside a larger term (`f ?`) checked against an@@ -249,7 +282,7 @@           let goal = show (holeGoal h)           ("t ≡ s" `isInfixOf` goal) `shouldBe` True           ('π' `elem` goal) `shouldBe` False-          map show (holeTopes h) `shouldContain` ["s ≤ t"]+          map (show . holeTopeValue) (holeTopes h) `shouldContain` ["s ≤ t"]           -- the cube variable is shown as the pattern, not a fresh variable           names (holeCubeVars h) `shouldBe` ["(t, s)"]         hs  -> expectationFailure ("expected exactly one hole, got " <> show (length hs))@@ -262,7 +295,7 @@           let goal = show (holeGoal h)           ("r ≡ t" `isInfixOf` goal) `shouldBe` True           ('π' `elem` goal) `shouldBe` False-          map show (holeTopes h) `shouldContain` ["r ≤ s"]+          map (show . holeTopeValue) (holeTopes h) `shouldContain` ["r ≤ s"]           names (holeCubeVars h) `shouldBe` ["((t, s), r)"]         hs  -> expectationFailure ("expected exactly one hole, got " <> show (length hs)) @@ -284,7 +317,7 @@         [h] -> do           let goal = show (holeGoal h)           ("π₁ p ≡ π₂ p" `isInfixOf` goal) `shouldBe` True-          map show (holeTopes h) `shouldContain` ["π₂ p ≤ π₁ p"]+          map (show . holeTopeValue) (holeTopes h) `shouldContain` ["π₂ p ≤ π₁ p"]         hs  -> expectationFailure ("expected exactly one hole, got " <> show (length hs))    describe "holeCandidates (type-directed elimination candidates)" $ do@@ -496,6 +529,114 @@                 <> "#define goal (A : U) (x y : A) (p : x = y) : y = x := ?\n"       in flip oneHole (holesWithLemmas [] indSrc) $ \h ->            filter (isInfixOf "ind-path") (cands h) `shouldBe` []++  -- Emily Riehl's report on the Yoneda game's square-gives-an-equality level+  -- (2026-09-22): the square lemma was not offered at exactly the holes that+  -- need it. The candidate's type is `comp-is-segal ?A ?is ?x ?y ?z ?f ?g = ?h`+  -- and the goal's two edges are λs whose bodies are applications of the+  -- square, `\ t → α t 0₂`. Matching η-expands the hole to `\ t → ?f t` and+  -- compared the bodies `?f t` and `α t 0₂` spine-wise, so `t` was unified+  -- against `0₂` and failed. A hole-headed application is flexible (filling+  -- the head decides its shape), so it fits any term, as the shaped unifier+  -- already says for a bare mismatch. The rows below are the probe table of+  -- the report: the corners (`α 0₂ 0₂`) are not the obstacle, nor is a λ that+  -- η-reduces to a variable or a constant λ; only a λ whose body is an+  -- application of something other than the bound variable failed.+  describe "holeCandidates against λ arguments into extension types" $ do+    let cands = map show . holeCandidates+        prelude = "#lang rzk-1\n\+          \#def Δ¹ : 2 → TOPE := \\ t → TOP\n\+          \#def Δ² : (2 × 2) → TOPE := \\ (t , s) → s ≤ t\n\+          \#def hom (A : U) (x y : A) : U\n\+          \  := (t : Δ¹) → A [ t ≡ 0₂ ↦ x , t ≡ 1₂ ↦ y ]\n\+          \#def hom2 (A : U) (x y z : A) (f : hom A x y) (g : hom A y z) (h : hom A x z) : U\n\+          \  := ((t , s) : Δ²) → A [ s ≡ 0₂ ↦ f t , t ≡ 1₂ ↦ g s , s ≡ t ↦ h s ]\n\+          \#def is-contr (A : U) : U := Σ (x : A) , (y : A) → x = y\n\+          \#def is-segal (A : U) : U\n\+          \  := (x : A) → (y : A) → (z : A) → (f : hom A x y) → (g : hom A y z)\n\+          \  → is-contr (Σ (h : hom A x z) , (hom2 A x y z f g h))\n\+          \#def comp-is-segal (A : U) (is-segal-A : is-segal A) (x y z : A)\n\+          \  (f : hom A x y) (g : hom A y z) : hom A x z\n\+          \  := first (first (is-segal-A x y z f g))\n\+          \#postulate uniqueness-comp-is-segal (A : U) (is-segal-A : is-segal A) (x y z : A)\n\+          \  (f : hom A x y) (g : hom A y z) (h : hom A x z) (alpha : hom2 A x y z f g h)\n\+          \  : comp-is-segal A is-segal-A x y z f g = h\n"+        -- the lemma's own spine; the idJ spine over it is a separate move+        uniqueness = filter (isPrefixOf "uniqueness-comp-is-segal ") . cands+        offered src = case holesWithLemmas ["uniqueness-comp-is-segal"] (prelude <> src) of+          [h] -> uniqueness h `shouldBe`+                   ["uniqueness-comp-is-segal ?A ?is-segal-A ?x ?y ?z ?f ?g ?h ?alpha"]+          hs  -> expectationFailure ("expected exactly one hole, got " <> show (length hs))++    it "offers the lemma when corners and edges are variables" $+      offered "#def goal (A : U) (is-segal-A : is-segal A) (x y z : A)\n\+              \  (f : hom A x y) (g : hom A y z) (h : hom A x z)\n\+              \  : comp-is-segal A is-segal-A x y z f g = h := ?\n"++    it "offers the lemma when the corners are applications of a square" $+      offered "#def goal (A : U) (is-segal-A : is-segal A) (α : Δ¹ → Δ¹ → A)\n\+              \  (f : hom A (α 0₂ 0₂) (α 1₂ 0₂)) (g : hom A (α 1₂ 0₂) (α 1₂ 1₂))\n\+              \  (h : hom A (α 0₂ 0₂) (α 1₂ 1₂))\n\+              \  : comp-is-segal A is-segal-A (α 0₂ 0₂) (α 1₂ 0₂) (α 1₂ 1₂) f g = h := ?\n"++    it "offers the lemma when an edge is an η-expansion" $+      offered "#def goal (A : U) (is-segal-A : is-segal A) (f' : Δ¹ → A) (z : A)\n\+              \  (g : hom A (f' 1₂) z) (h : hom A (f' 0₂) z)\n\+              \  : comp-is-segal A is-segal-A (f' 0₂) (f' 1₂) z (\\ t → f' t) g = h := ?\n"++    it "offers the lemma when the edges are constant λs" $+      offered "#def goal (A : U) (is-segal-A : is-segal A) (x : A) (h : hom A x x)\n\+              \  : comp-is-segal A is-segal-A x x x (\\ t → x) (\\ t → x) = h := ?\n"++    -- The reported case: both edges are λs whose bodies apply the square to+    -- the bound variable and a constant, so neither η-reduces.+    it "offers the lemma when the edges are λs applying a square" $+      offered "#def goal (A : U) (is-segal-A : is-segal A) (α : Δ¹ → Δ¹ → A)\n\+              \  (h : hom A (α 0₂ 0₂) (α 1₂ 1₂))\n\+              \  : comp-is-segal A is-segal-A (α 0₂ 0₂) (α 1₂ 0₂) (α 1₂ 1₂)\n\+              \      (\\ t → α t 0₂) (\\ s → α 1₂ s) = h := ?\n"++    -- The same with a λ on the right-hand side (the level's actual goal).+    it "offers the lemma when the right-hand side is a λ too" $+      offered "#def goal (A : U) (is-segal-A : is-segal A) (α : Δ¹ → Δ¹ → A)\n\+              \  : comp-is-segal A is-segal-A (α 0₂ 0₂) (α 1₂ 0₂) (α 1₂ 1₂)\n\+              \      (\\ t → α t 0₂) (\\ s → α 1₂ s) = (\\ t → α t t) := ?\n"++    -- Accepting the move means the inserted term, with every argument a+    -- hole, must still check in lenient mode: the move is useless otherwise.+    it "tolerates the lemma applied to holes at the reported goal" $+      errTagsOf (prelude+        <> "#def goal (A : U) (is-segal-A : is-segal A) (α : Δ¹ → Δ¹ → A)\n\+           \  (h : hom A (α 0₂ 0₂) (α 1₂ 1₂))\n\+           \  : comp-is-segal A is-segal-A (α 0₂ 0₂) (α 1₂ 0₂) (α 1₂ 1₂)\n\+           \      (\\ t → α t 0₂) (\\ s → α 1₂ s) = h\n\+           \  := uniqueness-comp-is-segal A ? ? ? ? ? ? ? ?\n")+        `shouldBe` []++    -- Flexibility is the hole's, not the λ's: a λ body that mismatches+    -- rigidly (no hole at its head) still rejects the candidate.+    it "does not offer a lemma whose λ argument mismatches rigidly" $ do+      let src = "#postulate Q (A : U) (e : Δ¹ → A) : U\n\+                \#postulate B : U\n\+                \#postulate c : Δ¹ → Δ¹ → B\n\+                \#postulate lem : Q B (\\ t → c 0₂ t)\n"+          goalAt e = prelude <> src <> "#def goal : Q B (\\ t → " <> e <> ") := ?\n"+          lemAt f e = case holesWithLemmas ["lem"] (goalAt e) of+            [h] -> f (filter (isPrefixOf "lem") (cands h))+            hs  -> expectationFailure ("expected exactly one hole, got " <> show (length hs))+      lemAt (`shouldBe` ["lem"]) "c 0₂ t"+      lemAt (`shouldBe` [])      "c t 0₂"+      lemAt (`shouldBe` [])      "c t 1₂"++    -- The flexible side may be on either side of the comparison: here the+    -- goal's edge is a variable and the lemma's is the λ.+    it "offers a lemma whose own λ argument meets a variable edge" $ do+      let src = "#postulate Q (A : U) (e : Δ¹ → A) : U\n\+                \#postulate lem (A : U) (α : Δ¹ → Δ¹ → A) : Q A (\\ t → α t 0₂)\n\+                \#def goal (A : U) (e : Δ¹ → A) : Q A e := ?\n"+      case holesWithLemmas ["lem"] (prelude <> src) of+        [h] -> filter (isPrefixOf "lem") (cands h) `shouldBe` ["lem ?A ?α"]+        hs  -> expectationFailure ("expected exactly one hole, got " <> show (length hs))    describe "holeCandidates under shadowing" $ do     let cands = map show . holeCandidates
+ test/Rzk/RSTTSafeSpec.hs view
@@ -0,0 +1,286 @@+{-# LANGUAGE OverloadedStrings #-}+module Rzk.RSTTSafeSpec (spec) where++import qualified Data.Text as T+import qualified Language.Rzk.Syntax as Syntax+import Rzk.Diagnostic (checkWarningTag, typeErrorTagInScopedContext)+import Rzk.TypeCheck+import Rzk.TypeCheck.MetaPrefix (isMetaType, metaPrefixOf)+import Language.Rzk.Foil.Syntax (typeAscT, universeT)+import Test.Hspec++-- Exercise the public driver used by the CLI and incremental editor clients.+-- The source fixtures cover the individual fragment conditions.+run :: Maybe RSTTSafeMode -> [T.Text] -> ([String], [String], Int)+run override sources =+  let (errors, warnings, holes) = runDetails override sources+  in (errors, map checkWarningTag warnings, holes)++runDetails :: Maybe RSTTSafeMode -> [T.Text] -> ([String], [CheckWarning], Int)+runDetails override sources =+  case traverse Syntax.parseModule sources of+    Left err -> error (T.unpack err)+    Right modules -> case checkedModules (zip (map show [1 :: Int ..]) modules)+      ((allowHoles emptyContext) { ctxRSTTSafeOverride = override, ctxVerbosity = Silent }) of+        Left err -> ([typeErrorTagInScopedContext err], [], 0)+        Right (checked, holes) ->+          ( map typeErrorTagInScopedContext (checkedErrors checked)+          , checkedWarnings checked+          , length holes+          )++nested :: T.Text+nested = "#def nested (A : U) (a : A) : A := (\\ (B : U) (b : B) → b) A a\n"++spec :: Spec+spec = describe "RSTT-safe run policy" $ do+  it "reports exhausted meta-prefix classification in warn and error modes" $ do+    -- A valid type ascription needs a head reduction; force that inspection+    -- to reach the judgement limit without an enormous source fixture.+    let inspect mode = runTypeCheckWith+          (emptyContext { ctxRSTTSafeOverride = Just mode+                        , ctxVerbosity = Silent+                        , ctxActionStackDepth = maxActionStackDepth })+          (metaPrefixOf (typeAscT universeT universeT))+        (warnResult, (_, warnWarnings)) = inspect RSTTSafeWarn+        (errorResult, (_, errorWarnings)) = inspect RSTTSafeError+    either (const Nothing) Just warnResult `shouldBe` Just 0+    map checkWarningTag warnWarnings `shouldBe` ["RSTTIncompleteWarning"]+    either (Just . typeErrorTagInScopedContext) (const Nothing) errorResult+      `shouldBe` Just "TypeErrorRSTT"+    map checkWarningTag errorWarnings `shouldBe` ["RSTTIncompleteWarning"]++  it "does not classify an inspection failure as an object type" $ do+    let (result, _) = runTypeCheckWith+          (emptyContext { ctxVerbosity = Silent+                        , ctxActionStackDepth = maxActionStackDepth })+          (isMetaType (typeAscT universeT universeT))+    either (Just . typeErrorTagInScopedContext) (const Nothing) result+      `shouldBe` Just "TypeErrorOther"++  it "classifies a reducible universe when inspection succeeds" $ do+    let (result, (_, warnings)) = runTypeCheckWith+          (emptyContext { ctxVerbosity = Silent })+          (isMetaType (typeAscT universeT universeT))+    either (const Nothing) Just result `shouldBe` Just True+    map checkWarningTag warnings `shouldBe` []++  it "keeps a CLI error selection despite source attempts to disable checks" $ do+    let (errors, _, _) = run (Just RSTTSafeError)+          ["#lang rzk-1\n#set-option \"rstt-safe\" = \"off\"\n#set-option \"warn-meta-binder\" = \"no\"\n" <> nested]+    errors `shouldBe` ["TypeErrorRSTT"]+  it "keeps a CLI warning selection despite a source error selection" $ do+    let (errors, warnings, _) = run (Just RSTTSafeWarn)+          ["#lang rzk-1\n#set-option \"rstt-safe\" = \"error\"\n" <> nested]+    errors `shouldBe` []+    warnings `shouldBe` ["MetaBinderWarning"]+  it "applies the CLI selection to subsequent modules" $ do+    let (errors, _, _) = run (Just RSTTSafeError)+          ["#lang rzk-1\n#def id (A : U) (a : A) : A := a\n",+           "#lang rzk-1\n#set-option \"rstt-safe\" = \"off\"\n" <> nested]+    errors `shouldBe` ["TypeErrorRSTT"]+  it "keeps restriction checks enabled by the CLI despite source options" $ do+    let source = "#lang rzk-1\n#set-option \"rstt-safe\" = \"off\"\n#set-option \"warn-free-standing-restriction\" = \"no\"\n#postulate restricted (A : U) (a : A) : A [TOP ↦ a]\n"+        (errors, _, _) = run (Just RSTTSafeError) [source]+        (warnErrors, warnings, _) = run (Just RSTTSafeWarn) [source]+    errors `shouldBe` ["TypeErrorRSTT"]+    warnErrors `shouldBe` []+    warnings `shouldBe` ["FreeStandingRestrictionWarning"]+  it "keeps outer-point dependency checks enabled by the CLI" $ do+    let source = "#lang rzk-1\n#set-option \"rstt-safe\" = \"off\"\n#set-option \"warn-shape-dependency\" = \"no\"\n#postulate mixed (A : U) (a : A) (s : 2) (f : (t : 2) → A [t === s ↦ a]) : Unit\n"+        (errors, _, _) = run (Just RSTTSafeError) [source]+        (warnErrors, warnings, _) = run (Just RSTTSafeWarn) [source]+    errors `shouldBe` ["TypeErrorRSTT"]+    warnErrors `shouldBe` []+    warnings `shouldBe` ["RSTTShapeDependencyWarning"]+  it "does not check shape dependencies by default" $ do+    run Nothing+      ["#lang rzk-1\n#postulate mixed (A : U) (a : A) (s : 2) (f : (t : 2) → A [t === s ↦ a]) : Unit\n"]+      `shouldBe` ([], [], 0)+  it "warns about shape dependencies when the standalone option is on" $ do+    run Nothing+      ["#lang rzk-1\n#set-option \"warn-shape-dependency\" = \"yes\"\n#postulate mixed (A : U) (a : A) (s : 2) (f : (t : 2) → A [t === s ↦ a]) : Unit\n"]+      `shouldBe` ([], ["RSTTShapeDependencyWarning"], 0)+  it "restores the standalone shape-dependency default on unset" $ do+    run Nothing+      ["#lang rzk-1\n#set-option \"warn-shape-dependency\" = \"yes\"\n#unset-option \"warn-shape-dependency\"\n#postulate mixed (A : U) (a : A) (s : 2) (f : (t : 2) → A [t === s ↦ a]) : Unit\n"]+      `shouldBe` ([], [], 0)+  it "restores an explicit shape-dependency opt-out after safe mode" $ do+    run Nothing+      ["#lang rzk-1\n#set-option \"warn-shape-dependency\" = \"no\"\n#set-option \"rstt-safe\" = \"error\"\n#set-option \"rstt-safe\" = \"off\"\n#postulate mixed (A : U) (a : A) (s : 2) (f : (t : 2) → A [t === s ↦ a]) : Unit\n"]+      `shouldBe` ([], [], 0)+  it "keeps shape-dependency checks enabled by source safe mode" $ do+    let (errors, _, _) = run Nothing+          ["#lang rzk-1\n#set-option \"rstt-safe\" = \"error\"\n#set-option \"warn-shape-dependency\" = \"no\"\n#postulate mixed (A : U) (a : A) (s : 2) (f : (t : 2) → A [t === s ↦ a]) : Unit\n"]+    errors `shouldBe` ["TypeErrorRSTT"]+  it "keeps restriction checks enabled by source safe mode" $ do+    let (errors, _, _) = run Nothing+          ["#lang rzk-1\n#set-option \"rstt-safe\" = \"error\"\n#set-option \"warn-free-standing-restriction\" = \"no\"\n#postulate restricted (A : U) (a : A) : A [TOP ↦ a]\n"]+    errors `shouldBe` ["TypeErrorRSTT"]+  it "restores standalone restriction settings when safe mode is turned off" $ do+    run Nothing+      ["#lang rzk-1\n#set-option \"warn-free-standing-restriction\" = \"no\"\n#set-option \"rstt-safe\" = \"warn\"\n#set-option \"rstt-safe\" = \"off\"\n#postulate restricted (A : U) (a : A) : A [TOP ↦ a]\n"]+      `shouldBe` ([], [], 0)+  it "resets the standalone binder default even while safe mode is active" $ do+    run Nothing+      ["#lang rzk-1\n#set-option \"warn-meta-binder\" = \"yes\"\n#unset-option \"warn-meta-binder\"\n#set-option \"rstt-safe\" = \"off\"\n" <> nested]+      `shouldBe` ([], [], 0)+  it "rejects a hole even when the API allows unfinished terms" $ do+    let (errors, warnings, count) = run (Just RSTTSafeError)+          ["#lang rzk-1\n#def unfinished : Unit := ?\n"]+    errors `shouldBe` ["TypeErrorRSTT"]+    warnings `shouldBe` ["RSTTHoleWarning"]+    count `shouldBe` 1+  it "reports unfinished obligations without failing in warning mode" $ do+    run (Just RSTTSafeWarn) ["#lang rzk-1\n#def unfinished : Unit := ?\n"]+      `shouldBe` ([], ["RSTTHoleWarning"], 1)++  it "rejects outer-point capture introduced by an instantiated type family" $ do+    let source = T.unlines+          [ "#lang rzk-1"+          , "#def extension (φ : 2 → TOPE) (A : U) (a : A) : U :="+          , "  (t : 2) → A [φ t ↦ a]"+          , "#def at-point (A : U) (a : A) (s : 2)"+          , "  (f : extension (\\ t → t === s) A a) : A := f s"+          ]+        (errors, warnings, _) = run (Just RSTTSafeError) [source]+    errors `shouldBe` ["TypeErrorRSTT"]+    warnings `shouldBe` ["RSTTShapeDependencyWarning"]++  it "exposes shapes behind lets and both projections" $ do+    let shape = "(t : 2) → A [φ t ↦ a]"+        bodies =+          [ "let X : U := " <> shape <> " in X"+          , "first ((" <> shape <> "), unit)"+          , "second (unit, (" <> shape <> "))"+          ]+    mapM_ (\body -> do+      let source = T.unlines+            [ "#lang rzk-1"+            , "#def extension (φ : 2 → TOPE) (A : U) (a : A) : U := " <> body+            , "#postulate bad (A : U) (a : A) (s : 2)"+            , "  (f : extension (\\ t → t === s) A a) : Unit"+            ]+          (errors, warnings, _) = run (Just RSTTSafeError) [source]+      errors `shouldBe` ["TypeErrorRSTT"]+      warnings `shouldBe` ["RSTTShapeDependencyWarning"]) bodies++  it "checks argument domains created by earlier schematic arguments" $ do+    let source = T.unlines+          [ "#lang rzk-1"+          , "#postulate schema (φ : 2 → TOPE) (A : U) (a : A)"+          , "  (f : (t : 2) → A [φ t ↦ a]) : Unit"+          , "#def bad (A : U) (a : A) (s : 2) : Unit :="+          , "  schema (\\ t → t === s) A a (\\ t → a)"+          ]+        (errors, warnings, _) = run (Just RSTTSafeError) [source]+    errors `shouldBe` ["TypeErrorRSTT"]+    warnings `shouldBe` ["RSTTShapeDependencyWarning"]++  it "allows independent shapes after unfolding and beta reduction" $ do+    run (Just RSTTSafeError) [T.unlines+      [ "#lang rzk-1"+      , "#def extension (φ : 2 → TOPE) (A : U) (a : A) : U :="+      , "  (t : 2) → A [φ t ↦ a]"+      , "#def at-point (A : U) (a : A) (s : 2)"+      , "  (f : extension (\\ t → t === 0_2) A a) : A := f s"+      ]] `shouldBe` ([], [], 0)++  it "finds contextual domains after instantiation, let reduction and projection" $ do+    let source = T.unlines+          [ "#lang rzk-1"+          , "#def shape (φ : 2 → TOPE) (A : U) : U := (t : 2 | φ t) → A"+          , "#postulate bad (A : U) (s : 2)"+          , "  (f : first ((let X := shape (\\ t → t <= s) A in X), unit)) : Unit"+          ]+        (errors, warnings, _) = run (Just RSTTSafeWarn) [source]+    errors `shouldBe` []+    warnings `shouldSatisfy` elem "RSTTShapeDependencyWarning"++  it "preserves dependencies even when a guard simplifies to top" $ do+    let source = T.unlines+          [ "#lang rzk-1"+          , "#def extension (φ : 2 → TOPE) (A : U) (a : A) : U :="+          , "  (t : 2) → A [φ t ↦ a]"+          , "#postulate bad (A : U) (a : A) (s : 2)"+          , "  (f : extension (\\ t → s === s) A a) : Unit"+          ]+        (errors, warnings, _) = run (Just RSTTSafeError) [source]+    errors `shouldBe` ["TypeErrorRSTT"]+    warnings `shouldBe` ["RSTTShapeDependencyWarning"]++  it "preserves concluded tails after unfolding" $ do+    let source = T.unlines+          [ "#lang rzk-1"+          , "#set-option \"rstt-safe\" = \"off\""+          , "#def restricted (A : U) (a : A) : U := A [TOP ↦ a]"+          , "#set-option \"rstt-safe\" = \"error\""+          , "#def good (A : U) (a : A) : restricted A a := a"+          ]+    run Nothing [source] `shouldBe` ([], [], 0)++  it "reports an incomplete audit instead of silently accepting a reduction limit" $ do+    let source = T.unlines $ ["#lang rzk-1", "#def T0 : U := Unit"] <>+          [ "#def T" <> T.pack (show i) <> " : U := T" <> T.pack (show (i - 1))+          | i <- [1 .. 260 :: Int] ]+        (errors, warnings, _) = run (Just RSTTSafeWarn) [source]+        (strictErrors, _, _) = run (Just RSTTSafeError) [source]+    errors `shouldBe` []+    warnings `shouldSatisfy` elem "RSTTIncompleteWarning"+    strictErrors `shouldSatisfy` elem "TypeErrorRSTT"++  it "audits computed argument types in standalone commands" $ do+    let declarations = T.unlines+          [ "#lang rzk-1"+          , "#postulate schema (φ : 2 → TOPE) (A : U) (a : A)"+          , "  (f : (t : 2) → A [φ t ↦ a]) : Unit"+          ]+        application = "(\\ (s : 2) → schema (\\ t → t === s) Unit unit (\\ t → unit))"+    mapM_ (\command -> do+      let (errors, warnings, _) = run (Just RSTTSafeError) [declarations <> command]+      errors `shouldBe` ["TypeErrorRSTT"]+      warnings `shouldBe` ["RSTTShapeDependencyWarning"])+      [ "#check " <> application <> " : 2 → Unit"+      , "#compute " <> application+      , "#compute-nf " <> application+      ]++  it "locates unsupported syntax below binders before it can reduce away" $ do+    let source = "#lang rzk-1\n#def discard (i : 2) : Unit :=\n  (\\ (j : 2) → unit) (sup i 1_2)\n"+        (errors, warnings, _) = runDetails (Just RSTTSafeWarn) [source]+    errors `shouldBe` []+    map checkWarningTag warnings `shouldBe` ["RSTTSyntaxWarning"]+    map warningLocation warnings `shouldBe`+      [Just (LocationInfo (Just "1") (Just 3) (Just 23))]+  it "checks standalone commands as well as declarations" $ do+    let (errors, warnings, _) = run (Just RSTTSafeError)+          ["#lang rzk-1\n#check (\\ (j : 2) → unit) (sup 0_2 1_2) : Unit\n"]+    errors `shouldBe` ["TypeErrorRSTT"]+    warnings `shouldBe` ["RSTTSyntaxWarning"]+  it "locates modal syntax inside an otherwise allowed term" $ do+    let (errors, warnings, _) = runDetails (Just RSTTSafeWarn)+          ["#lang rzk-1\n#def modal : U :=\n  (_# Unit)\n"]+    errors `shouldBe` []+    map checkWarningTag warnings `shouldBe` ["RSTTModalWarning"]+    map warningLocation warnings `shouldBe`+      [Just (LocationInfo (Just "1") (Just 3) (Just 4))]+  it "locates match before elaboration turns it into an eliminator" $ do+    let (errors, warnings, _) = runDetails (Just RSTTSafeWarn)+          ["#lang rzk-1\n#data bool := false | true\n#def choose (b : bool) : bool :=\n  match b (false ⇒ true | true ⇒ false)\n"]+    errors `shouldBe` []+    map checkWarningTag warnings `shouldBe`+      ["RSTTInductiveWarning", "RSTTInductiveWarning"]+    map warningLocation warnings `shouldBe`+      [ Just (LocationInfo (Just "1") (Just 2) (Just 1))+      , Just (LocationInfo (Just "1") (Just 4) (Just 3)) ]+  it "still rejects direct constructor uses when safe mode is re-enabled" $ do+    let (errors, warnings, _) = runDetails Nothing+          ["#lang rzk-1\n#set-option \"rstt-safe\" = \"off\"\n#data bool := false | true\n#set-option \"rstt-safe\" = \"warn\"\n#def yes : bool := true\n"]+    errors `shouldBe` []+    map checkWarningTag warnings `shouldBe` ["RSTTInductiveWarning"]+    map warningLocation warnings `shouldBe`+      [Just (LocationInfo (Just "1") (Just 5) (Just 20))]+  it "allows local binders that shadow constructor names" $ do+    run Nothing+      ["#lang rzk-1\n#set-option \"rstt-safe\" = \"off\"\n#data bool := false | true\n#set-option \"rstt-safe\" = \"warn\"\n#def shadow (false : Unit) : Unit := false\n"]+      `shouldBe` ([], [], 0)
test/Rzk/RefIndexSpec.hs view
@@ -146,6 +146,21 @@     it "does not occlude the type name with the derived entries" $       -- hovering the declaration's own `bool` must hit `bool`, not ind-bool       RI.bindingName (bindingAt riData "data.rzk" (1, 6)) `shouldBe` "bool"++  describe "modal match" $ do+    let matchSrc = T.unlines+          [ "#lang rzk-1"                                  -- 0+          , "#data D := c (a : Unit)"                      -- 1+          , "#define f (x : D) (m : D -> U) : U"           -- 2+          , "  := match _b x into m (c a => a)"            -- 3+          ]+        riMatch = indexOf [("match.rzk", matchSrc)]++    it "indexes the scrutinee, motive, constructor, and branch binder" $ do+      defPos (bindingAt riMatch "match.rzk" (3, 14)) `shouldBe` ("match.rzk", 2, 11)+      defPos (bindingAt riMatch "match.rzk" (3, 21)) `shouldBe` ("match.rzk", 2, 19)+      defPos (bindingAt riMatch "match.rzk" (3, 24)) `shouldBe` ("match.rzk", 1, 11)+      defPos (bindingAt riMatch "match.rzk" (3, 31)) `shouldBe` ("match.rzk", 3, 26) #else spec :: Spec spec = describe "reference index" (pure ())
+ test/Rzk/SchematicSpec.hs view
@@ -0,0 +1,233 @@+{-# LANGUAGE OverloadedStrings #-}+module Rzk.SchematicSpec (spec) where++import qualified Data.Text as T+import qualified Language.Rzk.Syntax as Syntax+import Rzk.Diagnostic (checkWarningTag, typeErrorTagInScopedContext)+import Rzk.TypeCheck+import Test.Hspec++check :: Maybe RSTTSafeMode -> [T.Text] -> ([String], [String])+check mode sources = case traverse Syntax.parseModule sources of+  Left err -> error (T.unpack err)+  Right modules -> case checkedModules (zip (map show [1 :: Int ..]) modules)+    (emptyContext { ctxRSTTSafeOverride = mode, ctxVerbosity = Silent }) of+      Left err -> ([typeErrorTagInScopedContext err], [])+      Right (checked, _) ->+        (map typeErrorTagInScopedContext (checkedErrors checked),+         map checkWarningTag (checkedWarnings checked))++source :: [T.Text] -> T.Text+source declarations = T.unlines ("#lang rzk-1" : declarations)++identity :: T.Text+identity = "#def id (A : U) (a : A) : A := a"++accepts :: [T.Text] -> Expectation+accepts ds = check (Just RSTTSafeError) [source ds] `shouldBe` ([], [])++rejects :: [T.Text] -> Expectation+rejects ds = do+  let (errors, warnings) = check (Just RSTTSafeError) [source ds]+  errors `shouldBe` ["TypeErrorRSTT"]+  warnings `shouldSatisfy` elem "RSTTSchematicWarning"++spec :: Spec+spec = describe "Schematic declarations" $ do+  it "accepts ordinary type and family arguments" $ accepts+    [ identity+    , "#def apply (A : U) (B : A → U) (f : (a : A) → B a) (a : A) : B a := f a"+    , "#def good : Unit := apply Unit (\\ x → Unit) (\\ x → id Unit x) unit"+    ]++  it "keeps schematic statements distinct from proofs" $ accepts+    [ "#def Bottom : U := (A : U) → A"+    , "#postulate trusted : Bottom"+    ]++  it "accepts schematic rule aliases and their instances" $ accepts+    [ "#def Rule : U := (A : U) → A → A"+    , "#def apply-rule (rule : Rule) (A : U) (a : A) : A := rule A a"+    , "#def good : Unit := apply-rule (\\ A a → a) Unit unit"+    ]++  it "checks every universe instantiation before beta reduction" $+    rejects [identity, "#def bad : U := id U Unit"]++  it "leaves CUBE and TOPE type arguments to the layer discipline" $+    mapM_ (\(arg, value) ->+      fst (check (Just RSTTSafeError)+             [source [identity, "#def bad : " <> arg <> " := id " <> arg <> " " <> value]])+        `shouldBe` ["TypeErrorOther"])+      [("CUBE", "2"), ("TOPE", "TOP")]++  it "rejects families and rules passed as ordinary types" $+    mapM_ (\(ty, value) -> rejects [identity, "#def bad : " <> ty <> " := id (" <> ty <> ") (" <> value <> ")"])+      [("U → U", "\\ x → x"), ("(A : U) → A → A", "\\ A a → a")]++  it "rejects the predicate-of-predicates step of Hurkens" $ rejects+    [ "#def P (A : U) : U := A → U"+    , "#def bad (X : U) : U := P (P X)"+    ]++  it "checks family arguments pointwise" $ rejects+    [ "#def receive (F : Unit → U) : U := F unit"+    , "#def bad : U := receive (\\ x → U)"+    ]++  it "checks higher-order family arguments pointwise" $ rejects+    [ "#def receive (F : U → U) : U := F Unit"+    , "#def bad : U := receive (\\ A → U)"+    ]++  it "allows higher-order meta functions with object-valued instances" $ accepts+    [ "#def receive (F : U → U) : U := F Unit"+    , "#def good : U := receive (\\ A → A → A)"+    ]++  it "allows meta computations through pairs" $ accepts+    [ "#def T : U := first (Unit, unit)"+    , "#def good : T := unit"+    ]++  it "rejects a product containing schematic data as an object type" $ rejects+    [ identity+    , "#def bad : Σ (A : U), A := id (Σ (A : U), A) (Unit, unit)"+    ]++  it "rejects object equality between types" $ rejects+    [ "#postulate bad : Unit =_{U} Unit" ]++  it "rejects equality elimination into the universe" $ rejects+    [ "#def bad : U := idJ (Unit, unit, (\\ _ _ → U), Unit, unit, refl)" ]++  it "rechecks used dependencies introduced with safe mode off" $ do+    let ds = [ "#set-option \"rstt-safe\" = \"off\"", identity+             , "#def bad : U := id U Unit"+             , "#set-option \"rstt-safe\" = \"error\""+             , "#def use : U := bad" ]+        (errors, warnings) = check Nothing [source ds]+    errors `shouldBe` ["TypeErrorRSTT"]+    warnings `shouldSatisfy` elem "RSTTSchematicWarning"++  it "does not recheck unused dependencies" $+    check Nothing [source+      [ "#set-option \"rstt-safe\" = \"off\"", identity+      , "#def bad : U := id U Unit"+      , "#set-option \"rstt-safe\" = \"error\""+      , "#def good : Unit := unit" ]] `shouldBe` ([], [])++  it "keeps the additional check off in ordinary mode" $+    check (Just RSTTSafeOff) [source [identity, "#def bad : U := id U Unit"]]+      `shouldBe` ([], [])++  it "reports kind confusion in warning mode" $+    check (Just RSTTSafeWarn) [source [identity, "#def bad : U := id U Unit"]]+      `shouldBe` ([], ["RSTTSchematicWarning"])++  it "checks standalone commands" $+    mapM_ (\command -> rejects [identity, command])+      ["#check id U Unit : U", "#compute id U Unit", "#compute-nf id U Unit"]++  it "preserves valid section abstraction and checks later instances" $ do+    let section = ["#section S", "#assume A : U", "#def local-id (a : A) : A := a", "#end S"]+    accepts (section <> ["#def good : Unit := local-id Unit unit"])+    rejects (section <> ["#def bad : U := local-id U Unit"])++  it "reconstructs applications after section parameters become explicit" $ accepts+    [ "#def product (X Y : U) : U := Σ (x : X), Y"+    , "#section S", "#assume A B : U"+    , "#def F (f : A → B) : U := A"+    , "#def G (f : A → B) : U := product (F f) (F f)"+    , "#end S"+    , "#postulate test (A B : U) (f : A → B) : G A B f"+    ]++  it "rejects a universe hidden in a neutral case split" $ rejects+    [ "#def mixed (i : 2 | i === 0_2 ∨ i === 1_2) : U :="+    , "  recOR (i === 0_2 ↦ Unit, i === 1_2 ↦ U)"+    , "#postulate receive (A : U) : Unit"+    , "#def bad (i : 2 | i === 0_2 ∨ i === 1_2) : Unit := receive (mixed i)"+    ]++  it "accepts object types selected by a neutral case split" $ accepts+    [ "#def mixed (i : 2 | i === 0_2 ∨ i === 1_2) : U :="+    , "  recOR (i === 0_2 ↦ Unit, i === 1_2 ↦ Unit → Unit)"+    , "#postulate receive (A : U) : Unit"+    , "#def good (i : 2 | i === 0_2 ∨ i === 1_2) : Unit := receive (mixed i)"+    ]++  it "accepts ex falso under an empty shape without following its cyclic annotation" $ accepts+    [ "#def empty-shape (A : U) (t : 2 | BOT) : A := recBOT" ]++  it "checks erased type arguments in declaration signatures" $ rejects+    [ identity, "#postulate bad : id U Unit" ]++  it "checks the kinds of boundary values on a universe" $ do+    rejects ["#def bad : U [TOP ↦ U] := U"]+    accepts ["#def good : U [TOP ↦ Unit] := Unit"]++  it "checks actual type arguments after reusing an object family" $ do+    let ds =+          [ identity+          , "#def Family (A : U) : U := A → A"+          , "#def good : Family Unit := id (Family Unit) (\\ x → x)"+          ]+    accepts ds+    rejects (ds <> ["#def bad : Family U := id (Family U) (\\ x → x)"])++  it "checks actual family arguments after reusing an object family" $ do+    let ds =+          [ identity+          , "#def at (F : Unit → U) : U := F unit"+          , "#def good : at (\\ _ → Unit) := id (at (\\ _ → Unit)) unit"+          ]+    accepts ds+    rejects (ds <> ["#def bad : at (\\ _ → U) := id (at (\\ _ → U)) Unit"])++  it "does not generalise an object instance of a mixed-kind family" $ do+    let ds =+          [ "#def mixed (i : 2 | i === 0_2 ∨ i === 1_2) : U :="+          , "  recOR (i === 0_2 ↦ Unit, i === 1_2 ↦ U)"+          , "#postulate receive (A : U) : Unit"+          , "#def good : Unit := receive (mixed 0_2)"+          ]+    accepts ds+    rejects (ds <> ["#def bad : Unit := receive (mixed 1_2)"])++  it "preserves family checks when section telescopes change" $ do+    let ds =+          [ identity, "#section S", "#assume A : U", "#assume a : A"+          , "#def Family : U := A"+          , "#def first-use uses (A) : Family := id Family a"+          , "#end S"+          , "#def good : Family Unit := id (Family Unit) unit"+          ]+    accepts ds+    rejects (ds <> ["#def bad : Family U := id (Family U) Unit"])++  it "checks dependencies in arguments erased by reduction" $ do+    let ds =+          [ "#set-option \"rstt-safe\" = \"off\"", identity+          , "#def bad : Unit := id (U → Unit) (\\ _ → unit) Unit"+          , "#set-option \"rstt-safe\" = \"error\""+          , "#def discard (x : Unit) : Unit := unit"+          , "#def use : Unit := discard bad"+          ]+        (errors, warnings) = check Nothing [source ds]+    errors `shouldBe` ["TypeErrorRSTT"]+    warnings `shouldSatisfy` elem "RSTTSchematicWarning"++  it "does not cache a family classification justified by a caller's tope" $ do+    let ds =+          [ "#def mixed (i : 2 | i === 0_2 ∨ i === 1_2) : U :="+          , "  recOR (i === 0_2 ↦ Unit, i === 1_2 ↦ U)"+          , "#postulate receive (A : U) : Unit"+          , "#def good (i : 2 | i === 0_2 ∨ i === 1_2) : Unit :="+          , "  receive (recOR (i === 0_2 ↦ mixed i, i === 1_2 ↦ Unit))"+          ]+    accepts ds+    rejects (ds <>+      [ "#def bad (i : 2 | i === 0_2 ∨ i === 1_2) : Unit :="+      , "  receive (recOR (i === 0_2 ↦ Unit, i === 1_2 ↦ mixed i))"+      ])
test/Rzk/SemanticTokensSpec.hs view
@@ -180,6 +180,13 @@       tokenizeSyntaxSymbols "#lang rzk-1\n#define broken (x : A) := ?\n"         `shouldSatisfy` any ((== SemanticTokenTypes_Regexp) . _tokenType) +    it "marks a modal match modality as a decorator" $ do+      let mtoks = tokensOf $ T.unlines+            [ "#lang rzk-1"+            , "#define f (x : D) : D := match _b x (c a => a)"+            ]+      tokenAt mtoks (1, 31) `shouldBe` Just SemanticTokenTypes_Decorator+   describe "formatSignature" $ do     let fmt name src = case parseTerm (T.pack src) of           Left err -> error ("parse error: " <> T.unpack err)
test/typecheck/cases/happy-data-bool.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ -- The simplest inductive type: booleans, with computation through the -- generated eliminators. #data bool := false | true
test/typecheck/cases/happy-data-circle.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ -- The circle: one point constructor and one path constructor. The path -- methods refer to the point methods, so the generated eliminator types -- bind their methods by name (m-base, m-loop); transport is spelled
test/typecheck/cases/happy-data-coprod.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ -- A parameterised inductive type, with an explicit return type on one -- constructor (it must be the declared type applied to the parameters). #data coprod
test/typecheck/cases/happy-data-eliminator-reascription.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ -- An "eliminate with" re-ascription clause stores the user's spelling of a -- generated eliminator's type, after checking that it is definitionally -- equal to the canonical one (with the type former and constructors in
test/typecheck/cases/happy-data-empty.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ -- The empty family: no := at all, and the eliminator is ex falso. #data empty 
test/typecheck/cases/happy-data-eta-short.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ -- A definition whose value is an under-applied eliminator (no binder): -- the ι-rule must fire through the neutral-application head. #data bool := false | true
test/typecheck/cases/happy-data-hit-reascription.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ -- The re-ascription clauses give the generated eliminators and -- computation rules readable spellings through a library transport/ap/apd -- (each definable from idJ before any declaration).
test/typecheck/cases/happy-data-hottbook-nat.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ -- HoTT book §2.13 (natural numbers), drafted against #data stage 2.  #data empty
test/typecheck/cases/happy-data-indices-edge.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ #data nat := zero | suc (n : nat)  -- two indices, a constructor pinning them equal
test/typecheck/cases/happy-data-interval-funext.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ -- Function extensionality is provable from the interval higher inductive -- type, following Lemma 6.3.2 of the HoTT book: a pointwise identification -- α makes a map A → interval → B whose two ends are f and g, and ap of its
test/typecheck/cases/happy-data-large-warning.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ -- A constructor field storing a universe makes the type large: under -- type-in-type this is a paradox amplifier, so the declaration is accepted -- with a warning (and will be rejected under safe mode).
test/typecheck/cases/happy-data-list.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ #data nat := zero | suc (n : nat)  #data list
+ test/typecheck/cases/happy-data-modal-kind-param.expect.yaml view
@@ -0,0 +1,3 @@+status: ok+regression_for:+  - data-modal-kind-parameter
+ test/typecheck/cases/happy-data-modal-kind-param.rzk view
@@ -0,0 +1,29 @@+#lang rzk-1++-- The modal kinds are #data parameters, as they are #define parameters.+-- Parameters are uniform, so the eliminators only abstract over them.+#data P-op (psi : _op TOPE) (A : U) := c-op (a : A)+#data P-op-family (psi : 2 -> _op TOPE) := c-op-family+#data P-flat-cube (I : _b CUBE) := c-flat-cube+#data P-flat (psi : _b TOPE) := c-flat+#data P-sharp-family (psi : _# (2 -> TOPE)) := c-sharp-family++#define iota-rec-P-op+  ( psi : _op TOPE) (A : U) (C : U) (f : A -> C) (a : A)+  : rec-P-op psi A C f (c-op psi A a) = f a+  := refl++#define iota-ind-P-op+  ( psi : _op TOPE) (A : U) (C : P-op psi A -> U)+  ( f : (a : A) -> C (c-op psi A a)) (a : A)+  : ind-P-op psi A C f (c-op psi A a) = f a+  := refl++#define inst-P-op (A : U) (a : A) : P-op (mod _op TOP) A := c-op (mod _op TOP) A a++#define inst-P-flat-cube : P-flat-cube (mod _b 2) := c-flat-cube (mod _b 2)++-- A shape field whose tope comes from a modal-tope parameter.+#data R (psi : _op TOPE) := pt (t : 2 | uninv_op psi)++#define pt-top (t : 2) : R (mod _op TOP) := pt (mod _op TOP) t
+ test/typecheck/cases/happy-data-modal-shape-field.expect.yaml view
@@ -0,0 +1,4 @@+status: ok+warnings: []+regression_for:+  - data-shape-fields-modal-shape-field
+ test/typecheck/cases/happy-data-modal-shape-field.rzk view
@@ -0,0 +1,33 @@+#lang rzk-1++-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"++-- A modal shape field: an ordinary shape point sitting under a lock. The+-- eliminator binds it with the field's modality, so the lock discipline of+-- the modal layer applies inside a branch exactly as it does for a modal+-- Π-binder. No crisp induction is involved here; that is the separate+-- principle of eliminating a crisp x :_b D by cases (ind-b-D, match _b).+#data FlatArr := fa (t :_b 2 | ⊤)++#define f0 : FlatArr := fa 0_2++#define fam (A :_b (t : 2) -> U) (x : FlatArr) : U+  := match x (fa t ⇒ A t)++-- Strict β through the lock: the match computes on a syntactic point.+#define beta (A :_b (t : 2) -> U) (s :_b 2) : fam A (fa s) = A s+  := refl++-- The other two spellings of a modal shape field agree with the inline one:+-- a bare modal cube and a named modal shape are decided by the elaborated+-- domain, not the surface form.+#define Delta1 : 2 -> TOPE := \ t -> ⊤++#data FlatCube := fc (t :_b 2)+#data FlatByName := fn (t :_b Delta1)++#define fc0 : FlatCube := fc 0_2+#define fam-fc (A :_b (t : 2) -> U) (x : FlatCube) : U := match x (fc t ⇒ A t)+#define beta-fc (A :_b (t : 2) -> U) (s :_b 2) : fam-fc A (fc s) = A s := refl+#define fam-fn (A :_b (t : 2) -> U) (x : FlatByName) : U := match x (fn t ⇒ A t)
test/typecheck/cases/happy-data-nat.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ #data nat := zero | suc (n : nat)  #check ind-nat
+ test/typecheck/cases/happy-data-path-shape-field.expect.yaml view
@@ -0,0 +1,4 @@+status: ok+warnings: []+regression_for:+  - data-shape-fields-path-constructor-shape-field
+ test/typecheck/cases/happy-data-path-shape-field.rzk view
@@ -0,0 +1,33 @@+#lang rzk-1++-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"++-- A path constructor may take a cube or shape field: a Φ-indexed family of+-- *undirected* cells, i.e. identity paths. This cannot express a directed+-- cell: the return type of a path constructor is an identity type, not a+-- hom, and there is no syntax for face equations, so the directed-cell+-- boundary holds. Deliberately kept and pinned here; the metatheoretic+-- status is by analogy with an ordinary field of the realisation type+-- (merid over ⌈Φ⌉), not by a written rule.++#data Loops := base | turn (t : 2 | ⊤) : base =_{Loops} base++#define rec-Loops-type+  : (C : U) -> (m : C) -> ((t : 2 | ⊤) -> m =_{C} m) -> Loops -> C+  := rec-Loops++-- Endpoints may mention the variable a shape field of the same declaration+-- binds: the undirected cone over the realisation.+#data Cone := apex | pt (t : 2 | ⊤) | edge (t : 2 | ⊤) : pt t =_{Cone} apex++#define rec-Cone-type+  : (C : U) -> (m-apex : C) -> (m-pt : (t : 2 | ⊤) -> C)+      -> ((t : 2 | ⊤) -> m-pt t =_{C} m-apex) -> Cone -> C+  := rec-Cone++-- The point methods still compute strictly on a syntactic point.+#define collapse : Cone -> Unit+  := rec-Cone Unit unit (\ _ -> unit) (\ _ -> refl)++#define collapse-pt : collapse (pt 0_2) = unit := refl
test/typecheck/cases/happy-data-prop-trunc.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ -- The propositional truncation: the path constructor's endpoints are its -- own recursive fields, so their images in the method types are the -- induction hypotheses.
test/typecheck/cases/happy-data-pushout.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ -- The pushout: the path constructor's endpoints apply point constructors -- to datatype-free terms (f c and g c), which the endpoint images leave -- untouched.
test/typecheck/cases/happy-data-rec-section.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ #data nat := zero | suc (n : nat)  #section counted
test/typecheck/cases/happy-data-section.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ -- A #data inside a #section closes over the used assumptions uniformly: -- the type former, the constructors, and the eliminators all gain the -- section parameter, and the ι-rule keeps computing afterwards.
+ test/typecheck/cases/happy-data-shape-realisation.expect.yaml view
@@ -0,0 +1,1 @@+status: ok
+ test/typecheck/cases/happy-data-shape-realisation.rzk view
@@ -0,0 +1,69 @@+#lang rzk-1++-- A constructor may take a shape point. The declared type is then the shape+-- realisation of that shape, and the generated recursor is the+-- representability rule: mapping out of it is giving an extension-type+-- section. See Kudasov 2021, "Booleans, coproducts and shape types in type+-- theory for synthetic ∞-categories", §4 "Shapes as types":+-- https://fizruk.github.io/files/%5Bnotes%5D%20N.Kudasov.%20Booleans%2C%20coproducts%20and%20shape%20types%20in%20type%20theory%20for%20synthetic%20%E2%88%9E-categories.pdf++-- The general realisation ⌈Φ⌉, generic in the cube and in the tope. A shape+-- is a predicate on a cube, so it is a parameter of type `I → TOPE`, exactly+-- as `Δ¹` and `Λ²₁` are written.+#data Shape (I : CUBE) (phi : I -> TOPE) := point (t : phi)++#define rec-Shape-type+  : (I : CUBE) -> (phi : I -> TOPE) -> (C : U)+      -> ((t : I | phi t) -> C) -> Shape I phi -> C+  := rec-Shape++#define ind-Shape-type+  : (I : CUBE) -> (phi : I -> TOPE) -> (C : Shape I phi -> U)+      -> ((t : I | phi t) -> C (point I phi t)) -> (x : Shape I phi) -> C x+  := ind-Shape++#define rec-op-Shape-type+  (I :_op CUBE)+  (phi :_op I -> TOPE)+  (x :_op Shape I phi)+  : Unit+  := rec-op-Shape I phi Unit (\ _ -> unit) x++#define match-op-Shape+  (I :_op CUBE)+  (phi :_op I -> TOPE)+  (x :_op Shape I phi)+  : Unit+  := match _op x into (\ (_ :_op Shape I phi) -> Unit)+       (point _ => unit)++-- Strict computation on a syntactic point: rec(Point p) ≡ a[p/t].+#define shape-beta+  ( I : CUBE) (phi : I -> TOPE)+  ( C : U)+  ( m : (t : I | phi t) -> C)+  ( p : I | phi p)+  : rec-Shape I phi C m (point I phi p) = m p+  := refl++-- Instances: the walking arrow and the (2,1)-horn.+#define Delta1 : 2 -> TOPE := \ t -> ⊤+#define Lambda21 : (2 * 2) -> TOPE := \ (t, s) -> (s === 0_2) \/ (t === 1_2)++#define arr : U := Shape 2 Delta1+#define horn : U := Shape (2 * 2) Lambda21++#define arr-0 : arr := point 2 Delta1 0_2++-- The three spellings of a shape field agree. The first two were already+-- accepted; the inline one is what this change adds.+#data ByCube := byCube (t : 2)+#data ByName := byName (t : Delta1)+#data Inline := inline (t : 2 | ⊤)++#define rec-ByCube-type : (C : U) -> ((t : 2 | ⊤) -> C) -> ByCube -> C+  := rec-ByCube+#define rec-ByName-type : (C : U) -> ((t : 2 | ⊤) -> C) -> ByName -> C+  := rec-ByName+#define rec-Inline-type : (C : U) -> ((t : 2 | ⊤) -> C) -> Inline -> C+  := rec-Inline
+ test/typecheck/cases/happy-data-shape-tope.expect.yaml view
@@ -0,0 +1,1 @@+status: ok
+ test/typecheck/cases/happy-data-shape-tope.rzk view
@@ -0,0 +1,25 @@+#lang rzk-1++-- The tope of a shape field is available inside a match branch: the+-- eliminator brings it into the branch's context, so it is discharged in the+-- tope layer rather than escaping as a cube term.++#data Bd := bd (t : 2 | (t === 0_2) \/ (t === 1_2))++#define at-bd+  ( A : U) (a : A)+  : (j : 2 | (j === 0_2) \/ (j === 1_2)) -> A+  := \ j -> a++#define bd-carries-its-tope (A : U) (a : A) (s : Bd) : A+  := match s (bd t ⇒ at-bd A a t)++-- A shape field may be followed by fields mentioning the cube variable it+-- binds: this is the total space Σ_{t : Δ¹} A(t), which has no other spelling.+#data Total (A : (t : 2) -> U) := tot (t : 2 | ⊤) (a : A t)++#define total-fst (A : (t : 2) -> U) (w : Total A) : U+  := match w (tot t a ⇒ A t)++-- A subshape of a product cube: the 2-simplex as a type.+#data Tri := tri (t : 2 * 2 | second t <= first t)
+ test/typecheck/cases/happy-data-tope-param.expect.yaml view
@@ -0,0 +1,3 @@+status: ok+regression_for:+  - bare-tope-parameter
+ test/typecheck/cases/happy-data-tope-param.rzk view
@@ -0,0 +1,6 @@+#lang rzk-1++-- TOPE is a parameter kind of #data, like CUBE and tope families.+#data Real (I : CUBE) (psi : TOPE) := pt (t : I | psi)++#define pt-top (I : CUBE) (t : I) : Real I TOP := pt I TOP t
test/typecheck/cases/happy-data-vec.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ #data nat := zero | suc (n : nat)  #data vec
+ test/typecheck/cases/happy-ext-style-restrictions.expect.yaml view
@@ -0,0 +1,5 @@+status: ok+warnings: []+regression_for:+  - free-standing-restriction-warning+  - synthesised-types-are-concluded
+ test/typecheck/cases/happy-ext-style-restrictions.rzk view
@@ -0,0 +1,36 @@+#lang rzk-1++-- Ext-style restrictions, and free-standing ones in concluded positions+-- only: the fragment conservativity covers. Companion of+-- warn-free-standing-restriction-assumed.++-- On the codomain of a shape-Π, also with the shape tope left implicit.+#def ext-type (A : 2 → U) (a : (t : 2 | t ≡ 0₂) → A t) : U+  := (t : 2) → A t [t ≡ 0₂ ↦ a t]++-- A tail type: the restriction sits under an ordinary Π, which is+-- free-standing, but it is concluded rather than assumed.+#def nested-tail+  ( I : CUBE) (ψ : I → TOPE) (ϕ : ψ → TOPE) (X : U) (Y : ψ → X → U)+  ( f : (t : ϕ) → (x : X) → Y t x)+  ( g : (x : X) → (t : ψ) → (Y t x) [ϕ t ↦ f t x])+  : (t : ψ) → (x : X) → (Y t x) [ϕ t ↦ f t x]+  := \ t x → g x t++-- A motive whose restriction is ext-style: the unit-cube encoding of RSTT.+#def rstt-motive (A : U) (x : A) (p : x =_{A} x) : (t : 1) → A [TOP ↦ x]+  := idJ (A , x , (\ _ _ → (t : 1) → A [TOP ↦ x]) , (\ t → x) , x , p)++-- A section of an extension type applied at a point carries a restriction by+-- instantiation. That type is concluded, so naming it, binding it by let, or+-- forming refl at it stays silent: the types the elaborator synthesises for a+-- let annotation and for a refl's element are not assumed positions.+#def at-point (I : CUBE) (ψ : I → TOPE) (ϕ : ψ → TOPE) (A : ψ → U)+  ( a : (t : ϕ) → A t) (f : (t : ψ) → A t [ϕ t ↦ a t]) (s : ψ)+  : A s+  := let z := f s in z++#def refl-at-point (I : CUBE) (ψ : I → TOPE) (ϕ : ψ → TOPE) (A : ψ → U)+  ( a : (t : ϕ) → A t) (f : (t : ψ) → A t [ϕ t ↦ a t]) (s : ψ)+  : (f s) =_{A s} (f s)+  := refl
test/typecheck/cases/happy-flip-unflip.rzk view
@@ -1,29 +1,35 @@ #lang rzk-1 --- Test: _op (flip(i) === 0_2) is equivalent to (i === 1_2)--- Verified via propositional equality of topes under _op+-- Test: _op (flip(i) === 0_2) is equivalent to (i === 1_2).+-- The topes cannot be compared by an identity type (TOPE is not a type),+-- so each law is observed as definitional equality of the extension types+-- the two topes carve out of the unit cube, over an arbitrary type A+-- (op-bound, so it is accessible under the _op lock).  #def test-flip-tope-equiv+  (A :_op U)   (i : 2)   : let mod _op q := inv_op (i === 1_2) in     let mod _op fi := flip_op i in-    _op (q = (fi === 0_2))+    _op (((t : 1 | q) -> A) = ((t : 1 | fi === 0_2) -> A))   := mod _op refl  -- Symmetric case: _op (flip(i) === 1_2) is equivalent to (i === 0_2)  #def test-flip-tope-equiv-sym+  (A :_op U)   (i : 2)   : let mod _op q := inv_op (i === 0_2) in     let mod _op fi := flip_op i in-    _op (q = (fi === 1_2))+    _op (((t : 1 | q) -> A) = ((t : 1 | fi === 1_2) -> A))   := mod _op refl  -- flip/unflip with 2: inv roundtrip  #def test-flip-inv-roundtrip-2+  (A :_op U)   (i : 2)   : let mod _op q := inv_op (i === 0_2) in     let mod _op fi := flip_op i in-    _op (q = (fi === 1_2))+    _op (((t : 1 | q) -> A) = ((t : 1 | fi === 1_2) -> A))   := mod _op refl
+ test/typecheck/cases/happy-interval-endpoint-entailment.expect.yaml view
@@ -0,0 +1,3 @@+status: ok+regression_for:+  - interval-endpoint-entailment-through-equality
+ test/typecheck/cases/happy-interval-endpoint-entailment.rzk view
@@ -0,0 +1,19 @@+#lang rzk-1++#def simplex+  : (II * II) -> TOPE+  := \ (t , s) -> s <= t++#def horn+  : (II * II) -> TOPE+  := \ (t , s) -> t === 1_I \/ s === 0_I++#def restrict-simplex+  (A : U)+  (a : simplex -> A)+  : horn -> A+  := \ (t , s) ->+    recOR(+        t === 1_I |-> a (t , s)+      , s === 0_I |-> a (t , s)+    )
test/typecheck/cases/happy-match-basics.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ #data bool := false | true  #data nat := zero | suc (n : nat)
test/typecheck/cases/happy-match-case-vec.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ #data nat := zero | suc (n : nat)  #data vec (A : U) : nat → U
test/typecheck/cases/happy-match-indexed.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ #data nat := zero | suc (n : nat)  #data vec (A : U) : nat → U
+ test/typecheck/cases/happy-match-modal.expect.yaml view
@@ -0,0 +1,9 @@+status: ok+warnings: []+regression_for:+  - modal-match-scrutinee-accessibility+  - modal-match-composes-constructor-argument-modalities+  - modal-match-explicit-motive+  - modal-match-composition-order-op-op+  - modal-match-keeps-induction-hypothesis-modality+  - modal-data-eliminators-are-generated
+ test/typecheck/cases/happy-match-modal.rzk view
@@ -0,0 +1,83 @@+#lang rzk-1++-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"++-- A modal match checks the scrutinee under its modality. Every constructor+-- argument is then bound under the composition of that modality and the+-- argument's own modality: Flat ∘ Id = Flat and Flat ∘ Op = Flat here.+#data ModalMatch := mm (plain : 2) (op :_op 2)++#define modal-match-flat+  (f :_b (i : 2) -> (j : 2) -> Unit)+  (x :_b ModalMatch)+  : _b Unit+  := match _b x+       (mm plain op => mod _b (f plain op))++-- The modal spelling also supports an explicit motive.+#define modal-match-flat-into+  (f :_b (i : 2) -> (j : 2) -> Unit)+  (x :_b ModalMatch)+  : _b Unit+  := match _b x into (\ (_ :_b ModalMatch) -> _b Unit)+       (mm plain op => mod _b (f plain op))++#data Tagged : Unit -> U := tagged : Tagged unit++#define modal-match-indexed-motive+  (x :_b Tagged unit)+  : _b Unit+  := match _b x into (\ (i :_b Unit) (_ :_b Tagged i) -> _b Unit)+       (tagged => mod _b unit)++-- Composition is ordered: Op · Op = Id, so an op field of a value matched+-- under Op becomes available in the plain context.+#data OpField := op-field (point :_op 2)++#define modal-match-op-op+  (f : (i : 2) -> Unit)+  (x :_op OpField)+  : Unit+  := match _op x+       (op-field point => f point)++#data Nat := zero | suc (pred : Nat)++#check ind-Nat+  : (C : Nat -> U)+  -> C zero+  -> ((pred : Nat) -> (ih : C pred) -> C (suc pred))+  -> (n : Nat)+  -> C n+#check rec-Nat+  : (C : U) -> C -> ((pred : Nat) -> C -> C) -> Nat -> C+#check ind-op-Nat+  : (C : (n :_op Nat) -> U)+  -> C zero+  -> ((pred :_op Nat) -> (ih : C pred) -> C (suc pred))+  -> (n :_op Nat)+  -> C n+#check rec-op-Nat+  : (C : U) -> C -> ((pred :_op Nat) -> C -> C) -> (n :_op Nat) -> C+#check ind-b-Nat+  : (C : (n :_b Nat) -> U)+  -> C zero+  -> ((pred :_b Nat) -> (ih : C pred) -> C (suc pred))+  -> (n :_b Nat)+  -> C n+#check rec-b-Nat+  : (C : U) -> C -> ((pred :_b Nat) -> C -> C) -> (n :_b Nat) -> C++#define modal-predecessor-generated+  (n :_b Nat)+  : _b Nat+  := rec-b-Nat (_b Nat) (mod _b zero)+       (\ pred _ -> mod _b pred) n++#define modal-match-recursive+  (x :_b Nat)+  : Unit+  := match _b x+       ( zero => unit+       | suc pred ih => ih)
test/typecheck/cases/happy-meta-prefix-option-off.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ #set-option "warn-meta-prefix" = "off"  #define my-id (X : U) (x : X) : X := x
test/typecheck/cases/happy-meta-prefix-plumbing.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ #define my-id (X : U) (x : X) : X := x  -- Aliasing a schema at the root of a definition is macro-level plumbing.
test/typecheck/cases/happy-modal-inv.rzk view
@@ -2,55 +2,146 @@  #compute-nf inv_op (0_2 === 0_2) +-- The inv/uninv laws are observed as definitional equality of the extension+-- types the topes carve out of the unit cube, over an arbitrary type A:+-- TOPE is not a type, so the topes themselves cannot be compared by an+-- identity type. Under an _op lock the type is op-bound (A :_op U).+ -- inv flips endpoint: inv_op(i === 0) = mod _op (flip(i) === 1) #def test-lt-mod-inv+  (A :_op U)   ( i : 2)-  : let mod _op q := invᵒᵖ (i ≡ 0₂) in let mod _op fi := flip_op i in _op (q = (fi === 1_2))+  : let mod _op q := invᵒᵖ (i ≡ 0₂) in let mod _op fi := flip_op i in+    _op (((t : 1 | q) -> A) = ((t : 1 | fi === 1_2) -> A))   := mod _op refl  #def test-inv-endpoint-one+  (A :_op U)   (i : 2)   : let mod _op q := inv_op (i === 1_2) in     let mod _op fi := flip_op i in-    _op (q = (fi === 0_2))+    _op (((t : 1 | q) -> A) = ((t : 1 | fi === 0_2) -> A))   := mod _op refl  -- uninv(inv(phi)) = phi #def test-inv-uninv-cancel+  (A : U)   (i : 2)-  : uninv_op (inv_op (i === 0_2)) = (i === 0_2)+  : ((t : 1 | uninv_op (inv_op (i === 0_2))) -> A) = ((t : 1 | i === 0_2) -> A)   := refl  -- inv(uninv(mod _op phi)) = mod _op phi #def test-uninv-inv-cancel+  (A :_op U)   (i : 2)   : let mod _op fi := flip_op i in-    inv_op (uninv_op (mod _op (fi === 0_2))) = mod _op (fi === 0_2)-  := refl+    let mod _op a := inv_op (uninv_op (mod _op (fi === 0_2))) in+    _op (((t : 1 | a) -> A) = ((t : 1 | fi === 0_2) -> A))+  := mod _op refl  -- inv distributes over conjunction #def test-inv-distributes-and+  (A :_op U)   (i j : 2)   : let mod _op q := inv_op ((i === 0_2) /\ (j === 1_2)) in     let mod _op fi := flip_op i in     let mod _op fj := flip_op j in-    _op (q = ((fi === 1_2) /\ (fj === 0_2)))+    _op (((t : 1 | q) -> A) = ((t : 1 | (fi === 1_2) /\ (fj === 0_2)) -> A))   := mod _op refl  -- inv/uninv on TOP and BOT (bug catchers: stuck without nfTope fix)  #def test-inv-top-  : let mod _op q := (inv_op TOP) in _op (q = TOP)+  (A :_op U)+  : let mod _op q := (inv_op TOP) in+    _op (((t : 1 | q) -> A) = ((t : 1 | TOP) -> A))   := mod _op refl  #def test-inv-bot-  : let mod _op q := inv_op BOT in _op (q = BOT)+  (A :_op U)+  : let mod _op q := inv_op BOT in+    _op (((t : 1 | q) -> A) = ((t : 1 | BOT) -> A))   := mod _op refl  #def test-uninv-top-  : uninv_op (mod _op TOP) = TOP+  (A : U)+  : ((t : 1 | uninv_op (mod _op TOP)) -> A) = ((t : 1 | TOP) -> A)   := refl  #def test-uninv-bot-  : uninv_op (mod _op BOT) = BOT+  (A : U)+  : ((t : 1 | uninv_op (mod _op BOT)) -> A) = ((t : 1 | BOT) -> A)   := refl++-- inv is precomposition with the order-reversing flip, so it commutes with+-- /\, \/, TOP and BOT, and reverses <=.++-- inv distributes over disjunction+#define test-inv-distributes-or+  (A :_op U)+  (i j : 2)+  : let mod _op q := inv_op ((i === 0_2) \/ (j === 1_2)) in+    let mod _op fi := flip_op i in+    let mod _op fj := flip_op j in+    _op (((t : 1 | q) -> A) = ((t : 1 | (fi === 1_2) \/ (fj === 0_2)) -> A))+  := mod _op refl++-- inv reverses an inequality: inv(i <= j) = (fj <= fi)+#define test-inv-leq+  (A :_op U)+  (i j : 2)+  : let mod _op q := inv_op (i <= j) in+    let mod _op fi := flip_op i in+    let mod _op fj := flip_op j in+    _op (((t : 1 | q) -> A) = ((t : 1 | fj <= fi) -> A))+  := mod _op refl++-- uninv distributes over disjunction, via cancellation+#define test-uninv-or+  (A : U)+  (i j : 2)+  : ((t : 1 | uninv_op (inv_op ((i === 0_2) \/ (j === 1_2)))) -> A)+  = ((t : 1 | (i === 0_2) \/ (j === 1_2)) -> A)+  := refl++-- uninv over conjunction, with a nested stuck conjunct+#define test-uninv-and-mixed+  (A : U)+  (i j : 2)+  : ((t : 1 | uninv_op (inv_op ((i <= j) /\ (j === 1_2)))) -> A)+  = ((t : 1 | (i <= j) /\ (j === 1_2)) -> A)+  := refl++-- BOT absorbs under uninv (i must be op-bound to be used under mod _op)+#define test-uninv-and-bot+  (A : U)+  (i :_op 2)+  : ((t : 1 | uninv_op (mod _op ((i === 0_2) /\ BOT))) -> A)+  = ((t : 1 | BOT) -> A)+  := refl++-- inv on the lattice interval endpoints (I_0 / I_1)+#define test-inv-I-endpoint+  (A :_op U)+  (i : 𝕀)+  : let mod _op q := inv_op (i === 0ᵢ) in+    let mod _op fi := flip_op i in+    _op (((t : 1 | q) -> A) = ((t : 1 | fi === 1ᵢ) -> A))+  := mod _op refl++-- inv of a conjunction with BOT first normalises to mod _op BOT+#define test-inv-and-bot+  (A :_op U)+  (i : 2)+  : let mod _op q := inv_op (BOT /\ (i === 0_2)) in+    _op (((t : 1 | q) -> A) = ((t : 1 | BOT) -> A))+  := mod _op refl++-- inv of a let-bound tope variable normalises through the variable+#define test-inv-through-let+  (A :_op U)+  (i : 2)+  : let mod _op q := inv_op (let phi := (i === 0_2) in phi) in+    let mod _op fi := flip_op i in+    _op (((t : 1 | q) -> A) = ((t : 1 | fi === 1_2) -> A))+  := mod _op refl
+ test/typecheck/cases/happy-modal-let-dependent-payload.expect.yaml view
@@ -0,0 +1,4 @@+status: ok+warnings: []+regression_for:+  - let-mod-infers-a-dependent-type-at-the-payload
+ test/typecheck/cases/happy-modal-let-dependent-payload.rzk view
@@ -0,0 +1,27 @@+#lang rzk-1++-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"++-- A motive-free let mod in inference position whose body type depends on the+-- bound variable: the inferred type is instantiated with the payload of x,+-- not with x itself, for the right adjoints _#, _op and _id. The projection+-- forces the let through inference.++#define dep-sharp+  (A : U)+  (x : _# A)+  : x = x+  := first (let mod _# a := x in (refl_{mod _# a}, unit))++#define dep-op+  (A :_op U)+  (x : _op A)+  : x = x+  := first (let mod _op a := x in (refl_{mod _op a}, unit))++#define dep-id+  (A : U)+  (x : _id A)+  : x = x+  := first (let mod _id a := x in (refl_{mod _id a}, unit))
+ test/typecheck/cases/happy-modal-let-restricted.expect.yaml view
@@ -0,0 +1,5 @@+status: ok+warnings: []+regression_for:+  - let-mod-eliminates-an-outer-restricted-modal-type+  - let-mod-into-infers-an-outer-restricted-modal-type
+ test/typecheck/cases/happy-modal-let-restricted.rzk view
@@ -0,0 +1,71 @@+#lang rzk-1++-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"++-- A restriction is a refinement of the whole modal type, not an obstacle to+-- modal elimination. `let mod` must look through the outer restriction when+-- finding the modal payload type.+#define unwrap-restricted-modal+  (A :_b U)+  (a :_b A)+  (i : 2)+  (x : (_b A) [ i === 0_2 |-> mod _b a ])+  : _b A+  := let mod _b y := x in mod _b y++-- An explicit motive takes the inference path through the elaborator.+#define unwrap-restricted-modal-into+  (A :_b U)+  (a :_b A)+  (i : 2)+  (x : (_b A) [ i === 0_2 |-> mod _b a ])+  : _b A+  := let mod _b y := x into (\ _ -> _b A) in mod _b y++-- On the face, the let computes to the boundary value.+#define restricted-flat-boundary+  (A :_b U)+  (a :_b A)+  (i : 2)+  (x : (_b A) [ i === 0_2 |-> mod _b a ])+  : (_b A) [ i === 0_2 |-> mod _b a ]+  := let mod _b y := x in mod _b y++-- For a right adjoint, η identifies the let with x.+#define restricted-op-eta+  (A :_op U)+  (a :_op A)+  (i : 2)+  (x : (_op A) [ i === 0_2 |-> mod _op a ])+  : (let mod _op y := x in mod _op y) = x+  := refl++-- A restriction with two faces.+#define restricted-sharp-two-faces+  (A : U)+  (a b : A)+  (i : 2)+  (x : (_# A) [ i === 0_2 |-> mod _# a , i === 1_2 |-> mod _# b ])+  : (_# A) [ i === 0_2 |-> mod _# a , i === 1_2 |-> mod _# b ]+  := let mod _# y := x in mod _# y++-- A restriction nested twice around the modal type.+#define restricted-twice+  (A :_b U)+  (a :_b A)+  (i j : 2)+  (x : ((_b A) [ i === 0_2 |-> mod _b a ]) [ j === 0_2 |-> mod _b a ])+  : _b A+  := let mod _b y := x in mod _b y++-- Dependent motive on a restricted value, outside any face.+#define into-restricted-dependent+  (A :_b U)+  (a :_b A)+  (C : (_b A) -> U)+  (c : (y :_b A) -> C (mod _b y))+  (i : 2)+  (x : (_b A) [ i === 0_2 |-> mod _b a ])+  : C x+  := let mod _b y := x into C in c y
test/typecheck/cases/happy-modal-tope-unwrap.rzk view
@@ -6,10 +6,11 @@ --    given _op phi we can derive uninv_op(phi), and vice versa.  #def test-op-unwrap-to-uninv+  (A :_op U)   (i : 2)   : let mod _op q := inv_op (i === 0_2) in     let mod _op fi := flip_op i in-    _op (q = (fi === 1_2))+    _op (((t : 1 | q) -> A) = ((t : 1 | fi === 1_2) -> A))   := mod _op refl  -- 2. _b phi implies phi:
+ test/typecheck/cases/happy-modal-uninv-shape-restricted.expect.yaml view
@@ -0,0 +1,3 @@+status: ok+regression_for:+  - "nfTope: uninv distributes over the conjunction that a shape-restricted application normalises to, so each conjunct reaches the tope context"
+ test/typecheck/cases/happy-modal-uninv-shape-restricted.rzk view
@@ -0,0 +1,26 @@+#lang rzk-1++-- Under an _op lock a plain assumption uninv_op (mod _op phi) must make phi+-- available in the op-context: that is what un-inversion means. The control+-- below (an unrestricted phi) works; the case that matters is a phi which is+-- itself shape-restricted, as in sHoTT's op-ext-flip-2-fwd. There the normal+-- form of (phi ft) carries the ambient shape (psi ft) as a side condition, so+-- the assumption un-inverts to a conjunction, and both conjuncts have to become+-- available separately: the domain of x is (psi ft) /\ (phi ft).++#postulate uninv-under-op-unrestricted+  ( phi :_op (2 -> TOPE))+  ( A :_op (t : 2) -> U)+  ( x :_op (t : 2 | phi t) -> A t)+  : ( t : 2) ->+    let mod _op ft := flip_op t in+    (_op (A ft)) [ uninv_op (mod _op (phi ft)) |-> mod _op (x ft) ]++#postulate uninv-under-op-shape-restricted+  ( psi :_op (2 -> TOPE))+  ( phi :_op ((t : 2 | psi t) -> TOPE))+  ( A :_op (t : 2 | psi t) -> U)+  ( x :_op (t : 2 | phi t) -> A t)+  : ( t : 2 | let mod _op ft := flip_op t in _op (psi ft)) ->+    let mod _op ft := flip_op t in+    (_op (A ft)) [ uninv_op (mod _op (phi ft)) |-> mod _op (x ft) ]
test/typecheck/cases/happy-restrict-face-not-contained.rzk view
@@ -3,8 +3,8 @@ -- Restriction faces need not lie within the local tope context. The checker -- constrains the term only on `context ∧ face`, so a face that overhangs the -- context (extends beyond it while still overlapping) is allowed. Following--- Riehl–Shulman, there is no requirement that the face be contained in (entailed--- by) the context. Overhang only triggers a non-fatal warning.+-- Riehl–Shulman, there is no requirement that the face be contained in the context+-- (entail it). Overhang only triggers a non-fatal warning. -- -- (A face *disjoint* from the context is a different matter: it is vacuous and is -- rejected — see `ill-restrict-face-disjoint`.)
+ test/typecheck/cases/happy-rstt-awareness.expect.yaml view
@@ -0,0 +1,6 @@+status: ok+warnings:+  - OverhangWarning+  - TopeFamilyDomainWarning+regression_for:+  - rstt-safe-mode
+ test/typecheck/cases/happy-rstt-awareness.rzk view
@@ -0,0 +1,7 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+#set-option "warn-overhang" = "yes"+#def concluded (t : 2 | t === 0_2) : Unit [TOP ↦ unit] := unit+#def family (I : CUBE) (φ : I → TOPE) (χ : φ → TOPE) (A : U) : U := (t : χ) → A+#def clip (A : U) : U := family 2 (\ t → BOT) (\ t → TOP) A
+ test/typecheck/cases/happy-rstt-bare-tope-param.expect.yaml view
@@ -0,0 +1,5 @@+status: ok+warnings: []+regression_for:+  - rstt-safe-mode+  - bare-tope-parameter
+ test/typecheck/cases/happy-rstt-bare-tope-param.rzk view
@@ -0,0 +1,18 @@+#lang rzk-1++-- A bare tope parameter is a tope parameter of the meta-theoretic parameter+-- layer, like the family (psi : 1 -> TOPE): RSTT-safe mode accepts both.+#set-option "rstt-safe" = "error"++#define const-on+  ( psi : TOPE) (A : U) (a : A)+  : (t : 2 | psi) -> A+  := \ _ -> a++#define use (A : U) (a : A) : (t : 2 | TOP) -> A := const-on TOP A a++#section s+#assume chi : TOPE+#variable B : U+#define r (b : B) : (t : 2) -> B [chi |-> b] := \ _ -> b+#end s
+ test/typecheck/cases/happy-rstt-boundary-error.expect.yaml view
@@ -0,0 +1,4 @@+status: ok+warnings: []+regression_for:+  - rstt-safe-mode
+ test/typecheck/cases/happy-rstt-boundary-error.rzk view
@@ -0,0 +1,4 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+#postulate overhang (f : (t : 2 | t === 0_2) → Unit [TOP ↦ unit]) : Unit
+ test/typecheck/cases/happy-rstt-boundary-multicube.expect.yaml view
@@ -0,0 +1,4 @@+status: ok+warnings: []+regression_for:+  - rstt-safe-mode
+ test/typecheck/cases/happy-rstt-boundary-multicube.rzk view
@@ -0,0 +1,40 @@+#lang rzk-1++#set-option "rstt-safe" = "error"++-- A product cube binds all its coordinates together.+#def clip+  (I J : CUBE) (ψ φ : (I * J) → TOPE)+  (A : (p : I * J | ψ p) → U)+  (a : (p : I * J | ψ p) → A p)+  (f : (p : I * J | ψ p) → A p [φ p ↦ a p])+  : (p : I * J | ψ p) → A p [ψ p /\ φ p ↦ a p]+  := \ p → f p++#def unclip+  (I J : CUBE) (ψ φ : (I * J) → TOPE)+  (A : (p : I * J | ψ p) → U)+  (a : (p : I * J | ψ p) → A p)+  (f : (p : I * J | ψ p) → A p [ψ p /\ φ p ↦ a p])+  : (p : I * J | ψ p) → A p [φ p ↦ a p]+  := \ p → f p++-- Boundary values may depend on outer points; the face must not.+#postulate outer-value (A : U) (a : 2 → A) (s : 2)+  (f : (t : 2 | t === 0_2) → A [TOP ↦ a s]) : Unit++#postulate product-boundary (A : U) (a : A)+  (f : ((t, u) : 2 * 2 | t <= u) → A [t === 0_2 \/ u === 1_2 ↦ a])+  : Unit++-- A concluded tail restriction can be erased in the back-translation.+#def tail (s t : 2) : Unit [s === t ↦ unit] := unit++-- Contextual tope/type families are schematic judgements, not extension types.+#postulate families+  (χ : (s : 2) → (t : 2 | t <= s) → TOPE)+  (A : (s : 2) → (t : 2 | t <= s) → U) : Unit++#def is-zero : 2 → TOPE := \ t → t === 0_2+#postulate closed-alias (A : U) (a : A)+  (f : (t : 2) → A [is-zero t ↦ a]) : Unit
+ test/typecheck/cases/happy-rstt-boundary-warn.expect.yaml view
@@ -0,0 +1,4 @@+status: ok+warnings: []+regression_for:+  - rstt-safe-mode
+ test/typecheck/cases/happy-rstt-boundary-warn.rzk view
@@ -0,0 +1,4 @@+#lang rzk-1++-- Boundary obligations are interpreted within the binder's shape.+#postulate overhang (f : (t : 2 | t === 0_2) → Unit [TOP ↦ unit]) : Unit
+ test/typecheck/cases/happy-rstt-boundary.expect.yaml view
@@ -0,0 +1,4 @@+status: ok+warnings: []+regression_for:+  - rstt-safe-mode
+ test/typecheck/cases/happy-rstt-boundary.rzk view
@@ -0,0 +1,10 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+-- Overhang along a concluded codomain remains a tail type.+#def concluded (t : 2 | t === 0_2) : Unit [TOP ↦ unit] := unit+-- An ambient constraint is not part of the immediate shape binder.+#postulate ambient (s : 2 | s === 0_2)+  (f : (t : 2) → Unit [t === 0_2 ↦ unit]) : Unit+-- A boundary included in its own shape is ext-style.+#postulate contained (f : (t : 2 | t === 0_2) → Unit [t === 0_2 ↦ unit]) : Unit
+ test/typecheck/cases/happy-rstt-independent-cubes.expect.yaml view
@@ -0,0 +1,4 @@+status: ok+warnings: []+regression_for:+  - rstt-safe-mode
+ test/typecheck/cases/happy-rstt-independent-cubes.rzk view
@@ -0,0 +1,9 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+#def independent (I : CUBE) (s : 2) (f : (t : I) → Unit) : Unit := unit+#def at-endpoint (I : 2 → CUBE) (s : 2)+  (f : (t : I 0_2) → Unit) : Unit := unit+#def product (I J : CUBE) ((s, t) : I × J) : Unit := unit+#def functions (I : CUBE) : U := (t : I) → Unit+#def instance (I : CUBE) (s : 2) (f : functions I) : Unit := unit
+ test/typecheck/cases/happy-rstt-off.expect.yaml view
@@ -0,0 +1,4 @@+status: ok+warnings: []+regression_for:+  - rstt-safe-mode
+ test/typecheck/cases/happy-rstt-off.rzk view
@@ -0,0 +1,5 @@+#lang rzk-1++#set-option "rstt-safe" = "off"+#def nested (A : U) (a : A) : A+  := (\ (B : U) (b : B) → b) A a
+ test/typecheck/cases/happy-rstt-schema-parameters.expect.yaml view
@@ -0,0 +1,4 @@+status: ok+warnings: []+regression_for:+  - rstt-safe-mode
+ test/typecheck/cases/happy-rstt-schema-parameters.rzk view
@@ -0,0 +1,8 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+#def family (A : U) : U := A+#def alias : U → U := family+#def receive (F : U → U) (A : U) : U := F A+#def supply (A : U) : U := receive (\ B → B) A+#def ordinary (A : U) : Σ (f : A → A), Unit := ((\ a → a), unit)
+ test/typecheck/cases/happy-rstt-shape-dependency-off.expect.yaml view
@@ -0,0 +1,4 @@+status: ok+warnings: []+regression_for:+  - rstt-safe-mode
+ test/typecheck/cases/happy-rstt-shape-dependency-off.rzk view
@@ -0,0 +1,7 @@+#lang rzk-1++#set-option "rstt-safe" = "off"+#set-option "warn-shape-dependency" = "no"+#set-option "warn-free-standing-restriction" = "yes"+#postulate mixed (A : U) (a : A) (s : 2)+  (f : (t : 2 | t <= s) → A [t === s ↦ a]) : Unit
+ test/typecheck/cases/happy-rstt-tail-nested.expect.yaml view
@@ -0,0 +1,4 @@+status: ok+warnings: []+regression_for:+  - rstt-paper-worked-examples
+ test/typecheck/cases/happy-rstt-tail-nested.rzk view
@@ -0,0 +1,27 @@+#lang rzk-1+#set-option "rstt-safe" = "error"++-- Paper example: src/nested-restriction.rzk+++#def nested-lemma+  ( I : CUBE)+  ( ψ : I → TOPE)+  ( ϕ : ψ → TOPE)+  ( X : U)+  ( Y : ψ → X → U)+  ( f : (t : ϕ) → (x : X) → Y t x)+  ( g : (x : X) → (t : ψ) → (Y t x) [ϕ t ↦ f t x])+  : (t : ψ) → (x : X) → (Y t x) [ϕ t ↦ f t x]+  := \ t x → g x t++#def flip-via-nested+  ( I : CUBE)+  ( ψ : I → TOPE)+  ( ϕ : ψ → TOPE)+  ( X : U)+  ( Y : ψ → X → U)+  ( f : (t : ϕ) → (x : X) → Y t x)+  ( g : (x : X) → (t : ψ) → (Y t x) [ϕ t ↦ f t x])+  : (t : ψ) → ((x : X) → Y t x) [ϕ t ↦ f t]+  := \ t x → nested-lemma I ψ ϕ X Y f g t x
+ test/typecheck/cases/happy-rstt-tau-flip.expect.yaml view
@@ -0,0 +1,4 @@+status: ok+warnings: []+regression_for:+  - rstt-paper-worked-examples
+ test/typecheck/cases/happy-rstt-tau-flip.rzk view
@@ -0,0 +1,56 @@+#lang rzk-1+#set-option "rstt-safe" = "error"++-- Paper example: src/context-hott.rzk+++-- Non-displayed context for the code snippets included in the paper.+-- These definitions mirror the sHoTT library (hott/* modules).++#define product+  ( A B : U)+  : U+  := Σ (a : A) , B++#define has-section+  ( A B : U)+  ( f : A → B)+  : U+  := Σ (s : B → A) , ((b : B) → f (s b) = b)++#define has-retraction+  ( A B : U)+  ( f : A → B)+  : U+  := Σ (r : B → A) , ((a : A) → r (f a) = a)++#define is-equiv+  ( A B : U)+  ( f : A → B)+  : U+  := product (has-retraction A B f) (has-section A B f)++#define Equiv+  ( A B : U)+  : U+  := Σ (f : A → B) , is-equiv A B f++-- Paper example: src/flip-ext-fun.rzk+++#define flip-ext-fun+  ( I : CUBE)+  ( ψ : I → TOPE)+  ( φ : ψ → TOPE)+  ( X : U)+  ( Y : ψ → X → U)+  ( f : (t : φ) → (x : X) → Y t x)+  : Equiv+      ( (t : ψ) → ((x : X) → Y t x) [φ t ↦ f t])+      ( (x : X) → (t : ψ) → Y t x [φ t ↦ f t x])+  :=+    ( \ g x t → g t x ,+      ( ( \ h t x → (h x) t ,+          \ g → refl) ,+        ( \ h t x → (h x) t ,+          \ h → refl)))
+ test/typecheck/cases/happy-rstt-tope-terms.expect.yaml view
@@ -0,0 +1,4 @@+status: ok+warnings: []+regression_for:+  - rstt-safe-mode
+ test/typecheck/cases/happy-rstt-tope-terms.rzk view
@@ -0,0 +1,15 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+#def ordinary (A : U) (a : A)+  : (t : 2 | ((\ (x : A) → 0_2) a) === 0_2) → A+  := \ t → a++#def face (A : U) (a : A)+  : (t : 2) → A [t === ((\ (x : A) → 0_2) a) ↦ a]+  := \ t → a++#def tope-id (φ : 2 → TOPE) : 2 → TOPE := φ+#def schema (A : U) (a : A)+  : (t : 2 | tope-id (\ u → u === 0_2) t) → A+  := \ t → a
+ test/typecheck/cases/happy-rstt-trusted-postulate.expect.yaml view
@@ -0,0 +1,4 @@+status: ok+warnings: []+regression_for:+  - rstt-safe-mode
+ test/typecheck/cases/happy-rstt-trusted-postulate.rzk view
@@ -0,0 +1,6 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+-- Fragment membership does not establish consistency of postulates.+#postulate arbitrary (A : U) : A+#def conditional (A : U) : A := arbitrary A
test/typecheck/cases/happy-set-option-warn-overhang.expect.yaml view
@@ -2,3 +2,5 @@ regression_for:   - warn-overhang-option   - checkTopeAgainstContext-opt-in-hint+warnings:+  - OverhangWarning
+ test/typecheck/cases/happy-tope-assume.expect.yaml view
@@ -0,0 +1,3 @@+status: ok+regression_for:+  - bare-tope-assumption
+ test/typecheck/cases/happy-tope-assume.rzk view
@@ -0,0 +1,12 @@+#lang rzk-1++-- A bare tope assumption closes to a bare tope parameter.+#section bare-tope+#assume psi : TOPE+#variable A : U+#define restrict-const (a : A) : (t : 2) -> A [psi |-> a] := \ _ -> a+#end bare-tope++#define closed+  : (psi : TOPE) -> (A : U) -> (a : A) -> (t : 2) -> A [psi |-> a]+  := restrict-const
+ test/typecheck/cases/happy-tope-family-domain-instance.expect.yaml view
@@ -0,0 +1,6 @@+status: ok+warnings:+  - TopeFamilyDomainWarning+  - TopeFamilyDomainWarning+regression_for:+  - tope-family-domain-conjunct-elaboration
+ test/typecheck/cases/happy-tope-family-domain-instance.rzk view
@@ -0,0 +1,28 @@+#lang rzk-1++-- A concrete family checked against a domain type carries the domain:+-- `\ t → TOP` at {t : I | ⊥} → TOPE becomes `\ t → ⊥ ∧ ⊤`. So it is read as+-- its intersection with the domain, also through a parameter with a wider+-- domain. Companion of ill-tope-family-domain-non-instance. Each family that+-- is not included in its domain is reported (warn-tope-family-domain-*).++#def wider     (I : CUBE) (φ : I → TOPE) (A : U) : U := (t : φ) → A+#def via-wider (I : CUBE) (ψ : I → TOPE) (χ : ψ → TOPE) (A : U) : U := wider I χ A++-- The family ⊤ over the domain ⊥ selects the empty shape, also through `wider`.+#def into-clipped (I : CUBE) (A : U) (g : (t : I | BOT) → A)+  : via-wider I (\ t → BOT) (\ t → TOP) A+  := g++#def from-clipped (I : CUBE) (A : U) (f : via-wider I (\ t → BOT) (\ t → TOP) A)+  : (t : I | BOT) → A+  := f++-- A family that entails its domain is left unchanged.+#def endpoint (A : U) (a : A)+  : via-wider 2 (\ t → TOP) (\ t → t ≡ 0₂) A+  := \ t → a++#def use-endpoint (A : U) (h : via-wider 2 (\ t → TOP) (\ t → t ≡ 0₂) A)+  : A+  := h 0₂
+ test/typecheck/cases/happy-tope-param.expect.yaml view
@@ -0,0 +1,3 @@+status: ok+regression_for:+  - bare-tope-parameter
+ test/typecheck/cases/happy-tope-param.rzk view
@@ -0,0 +1,39 @@+#lang rzk-1++-- A bare tope parameter (psi : TOPE) means the same as the tope family+-- (psi : 1 -> TOPE): it can restrict a shape or an extension type, it is+-- instantiated with any tope in scope, and the two spellings convert.++#define const-on+  ( psi : TOPE) (A : U) (a : A)+  : (t : 2 | psi) -> A+  := \ _ -> a++#define ext-at+  ( psi : TOPE) (A : U) (a : A)+  : (t : 2) -> A [psi |-> a]+  := \ _ -> a++#define use-top (A : U) (a : A) : (t : 2 | TOP) -> A := const-on TOP A a++#define use-point+  ( s : 2) (A : U) (a : A)+  : (t : 2 | s === 0_2) -> A+  := const-on (s === 0_2) A a++#define weaken+  ( psi chi : TOPE) (A : U) (f : (t : 2 | psi \/ chi) -> A)+  : (t : 2 | psi) -> A+  := \ t -> f t++#define to-family+  ( f : (psi : TOPE) -> (A : U) -> (a : A) -> (t : 2 | psi) -> A)+  : (psi : 1 -> TOPE) -> (A : U) -> (a : A) -> (t : 2 | psi *_1) -> A+  := \ psi -> f (psi *_1)++#define from-family+  ( g : (psi : 1 -> TOPE) -> (A : U) -> (a : A) -> (t : 2 | psi *_1) -> A)+  : (psi : TOPE) -> (A : U) -> (a : A) -> (t : 2 | psi) -> A+  := \ psi -> g (\ _ -> psi)++#define lam : (psi : TOPE) -> U := \ (psi : TOPE) -> (t : 2 | psi) -> Unit
+ test/typecheck/cases/ill-data-cube-index.expect.yaml view
@@ -0,0 +1,7 @@+status: error+error_tag: TypeErrorOther+message_contains:+  - "an index of a #data sort must be a type, got a cube: 2"+line: 7+regression_for:+  - data-shape-fields-reject-cube-index
+ test/typecheck/cases/ill-data-cube-index.rzk view
@@ -0,0 +1,7 @@+#lang rzk-1++-- A cube index is rejected on the elaborated sort. A cube is an unrestricted+-- shape, so it goes the same way as shape indices: a family varying over a+-- shape is what extension types are for, and no metatheory is written down+-- for an inductive family over one.+#data Fam : 2 -> U := at (t : 2) : Fam t
+ test/typecheck/cases/ill-data-cube-param.expect.yaml view
@@ -0,0 +1,7 @@+status: error+error_tag: TypeErrorOther+message_contains:+  - "a parameter of a #data must be a type, CUBE, TOPE, or a tope family, got a cube: 2"+line: 9+regression_for:+  - data-shape-fields-reject-cube-param
+ test/typecheck/cases/ill-data-cube-param.rzk view
@@ -0,0 +1,9 @@+#lang rzk-1++-- A #data cannot be parametrised by a cube point, in any spelling: the+-- inline shape spelling is rejected on the surface form, and the bare-cube+-- and named-shape spellings are rejected on the elaborated sort, so the rule+-- does not depend on how the binder is written. Parameters of type CUBE or+-- I → TOPE range over cubes and shapes themselves and remain accepted (see+-- happy-data-shape-realisation).+#data P (t : 2) := c
+ test/typecheck/cases/ill-data-cube-universe-field.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+  - "a field of constructor c must be a type, a cube point, or a shape, got the cube universe: CUBE"+regression_for:+  - data-shape-fields-b-prime-layer-rules
+ test/typecheck/cases/ill-data-cube-universe-field.rzk view
@@ -0,0 +1,6 @@+#lang rzk-1++-- A field may not store a cube itself: a CUBE-valued field puts a cube-layer+-- citizen inside type-layer data, which no written metatheory covers. (A+-- CUBE *parameter* stays legal: the generic Shape realisation depends on it.)+#data F := c (I : CUBE)
+ test/typecheck/cases/ill-data-cube-universe-index.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+  - "an index of a #data sort must be a type, got the cube universe: CUBE"+regression_for:+  - data-shape-fields-b-prime-layer-rules
+ test/typecheck/cases/ill-data-cube-universe-index.rzk view
@@ -0,0 +1,5 @@+#lang rzk-1++-- An index must be a type, full stop: a family over the cube universe is+-- internal quantification over the cube layer.+#data X : CUBE -> U
test/typecheck/cases/ill-data-eliminator-unknown.expect.yaml view
@@ -2,7 +2,7 @@ error_tag: TypeErrorOther message_contains:   - "eliminate with clause for elim-d"-  - "the eliminators are ind-d and rec-d"+  - "the eliminators are ind-d, rec-d, ind-op-d, rec-op-d, ind-b-d, rec-b-d)" line: 4 regression_for:   - data-eliminator-reascription-clause
test/typecheck/cases/ill-data-eliminator-unknown.rzk view
@@ -1,5 +1,5 @@ #lang rzk-1 --- An eliminate with clause must name one of the two generated eliminators.+-- An eliminate with clause must name one of the generated eliminators. #data d := c   eliminate with elim-d : (C : d → U) → C c → (x : d) → C x
+ test/typecheck/cases/ill-data-modal-cube-field.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+  - "got a modal cube or tope kind: _b CUBE"+regression_for:+  - layer-discipline-kind-names
+ test/typecheck/cases/ill-data-modal-cube-field.rzk view
@@ -0,0 +1,5 @@+#lang rzk-1++-- A field of a modal cube kind is rejected like one of a modal tope kind,+-- and the error names the kind.+#data F := c (I : _b CUBE)
+ test/typecheck/cases/ill-data-modal-kind-param-lock.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorUnaccessibleVar+message_contains:+  - "variable J is inaccessible in the current modal context"+regression_for:+  - data-modal-kind-parameter
+ test/typecheck/cases/ill-data-modal-kind-param-lock.rzk view
@@ -0,0 +1,7 @@+#lang rzk-1++#data P-flat-cube (I : _b CUBE) := c-flat-cube++-- A modal parameter is instantiated under its lock: a plain cube variable is+-- not available under _b.+#define bad (J : CUBE) : U := P-flat-cube (mod _b J)
+ test/typecheck/cases/ill-data-modal-kind-param-point.expect.yaml view
@@ -0,0 +1,4 @@+status: error+error_tag: TypeErrorTopeNotSatisfied+regression_for:+  - data-modal-kind-parameter
+ test/typecheck/cases/ill-data-modal-kind-param-point.rzk view
@@ -0,0 +1,6 @@+#lang rzk-1++#data R (psi : _op TOPE) := pt (t : 2 | uninv_op psi)++-- The shape field keeps its tope: there is no point of R (mod _op BOT).+#define bad : R (mod _op BOT) := pt (mod _op BOT) 0_2
+ test/typecheck/cases/ill-data-modal-shape-field-lock.expect.yaml view
@@ -0,0 +1,8 @@+status: error+error_tag: TypeErrorUnaccessibleVar+message_contains:+  - "variable s is inaccessible"+  - "declared modality: _id"+  - "current locks:      ♭"+regression_for:+  - data-shape-fields-modal-shape-field-lock
+ test/typecheck/cases/ill-data-modal-shape-field-lock.rzk view
@@ -0,0 +1,13 @@+#lang rzk-1++-- The lock discipline is enforced for a modal shape field: the branch binds+-- the cube variable under the field's modality, so applying a family to it+-- demands the matching accessibility. An unannotated (s : 2) is not+-- accessible under the ♭ lock.+#data FlatArr := fa (t :_b 2 | ⊤)++#define fam (A :_b (t : 2) -> U) (x : FlatArr) : U+  := match x (fa t ⇒ A t)++#define bad (A :_b (t : 2) -> U) (s : 2) : fam A (fa s) = A s+  := refl
+ test/typecheck/cases/ill-data-modal-tope-field.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+  - "a field of constructor c must be a type, a cube point, or a shape, got a modal cube or tope kind: _op TOPE"+regression_for:+  - data-shape-fields-b-prime-layer-rules
+ test/typecheck/cases/ill-data-modal-tope-field.rzk view
@@ -0,0 +1,6 @@+#lang rzk-1++-- A field of a modal tope kind would store a tope-layer citizen, seen+-- through a modality, inside type-layer data. The modal kinds are+-- parameters only.+#data F := c (psi : _op TOPE)
+ test/typecheck/cases/ill-data-modal-tope-index.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+  - "an index of a #data sort must be a type, got a modal cube or tope kind: _op TOPE"+regression_for:+  - data-shape-fields-b-prime-layer-rules
+ test/typecheck/cases/ill-data-modal-tope-index.rzk view
@@ -0,0 +1,5 @@+#lang rzk-1++-- An index of a modal tope kind is internal quantification over the tope+-- layer through a modality; an index must be a type.+#data X : (_op TOPE) -> U
+ test/typecheck/cases/ill-data-modal-type-field.expect.yaml view
@@ -0,0 +1,7 @@+status: error+error_tag: TypeErrorOther+message_contains:+  - "modal type fields are not supported yet"+line: 8+regression_for:+  - data-shape-fields-reject-modal-type-field
+ test/typecheck/cases/ill-data-modal-type-field.rzk view
@@ -0,0 +1,8 @@+#lang rzk-1++-- A modal field whose domain is a type is rejected: unlike a cube or shape+-- field, a type field can be recursive, and the recursion and positivity+-- bookkeeping does not see through a modal binder. The decision is made on+-- the elaborated constructor type (checkDataConFieldLayers), since on the+-- surface (x :_b Unit) is indistinguishable from a named modal shape field.+#data Wrap := wrap (x :_b Unit)
+ test/typecheck/cases/ill-data-no-sharp-eliminator.expect.yaml view
@@ -0,0 +1,4 @@+status: error+error_tag: TypeErrorUndefined+regression_for:+  - modal-data-no-sharp-eliminators
+ test/typecheck/cases/ill-data-no-sharp-eliminator.rzk view
@@ -0,0 +1,6 @@+#lang rzk-1++-- A #data generates no ♯ eliminators (see ill-match-modal-sharp).+#data Bool := false | true++#define retract : (z :_# Bool) -> Bool := rec-sharp-Bool Bool false true
− test/typecheck/cases/ill-data-shape-field.expect.yaml
@@ -1,7 +0,0 @@-status: error-error_tag: TypeErrorOther-message_contains:-  - "directed cell"-line: 5-regression_for:-  - data-stage1-reject-shape-fields
− test/typecheck/cases/ill-data-shape-field.rzk
@@ -1,5 +0,0 @@-#lang rzk-1---- A constructor with a cube or shape argument would declare a directed--- cell over rzk's simplicial interval; rejected in all M3 stages.-#data d := arrow (t : 2 | TOP)
+ test/typecheck/cases/ill-data-shape-index-named.expect.yaml view
@@ -0,0 +1,7 @@+status: error+error_tag: TypeErrorOther+message_contains:+  - "an index of a #data sort must be a type, got a shape: Delta1"+line: 9+regression_for:+  - data-shape-fields-reject-shape-index
+ test/typecheck/cases/ill-data-shape-index-named.rzk view
@@ -0,0 +1,9 @@+#lang rzk-1++-- The named spelling of a shape index is rejected on the elaborated sort:+-- (Delta1 used as an index type) elaborates to a restricted binder, the same+-- form the inline spelling (see ill-data-shape-index) would produce, so both+-- spellings meet the same rule.+#define Delta1 : 2 -> TOPE := \ t -> ⊤++#data Fam : Delta1 -> U := at (t : Delta1) : Fam t
+ test/typecheck/cases/ill-data-shape-index.expect.yaml view
@@ -0,0 +1,7 @@+status: error+error_tag: TypeErrorOther+message_contains:+  - "index of a #data sort must be a plain type"+line: 7+regression_for:+  - data-shape-fields-reject-shape-index
+ test/typecheck/cases/ill-data-shape-index.rzk view
@@ -0,0 +1,8 @@+#lang rzk-1++-- The inline spelling of a shape index is rejected on the surface form.+-- The named spelling `#data Fam : D1 → U` for `D1 : 2 → TOPE` is rejected+-- too, on the elaborated sort (see ill-data-shape-index-named), so the two+-- spellings of one thing meet the same rule.+#data Fam : (t : 2 | ⊤) → U+  := at (t : 2 | ⊤) : Fam t
+ test/typecheck/cases/ill-data-shape-param.expect.yaml view
@@ -0,0 +1,7 @@+status: error+error_tag: TypeErrorOther+message_contains:+  - "a parameter of a #data must be a type, CUBE, TOPE, or a tope family, got a shape: D1"+line: 9+regression_for:+  - data-shape-fields-reject-shape-param
+ test/typecheck/cases/ill-data-shape-param.rzk view
@@ -0,0 +1,9 @@+#lang rzk-1++-- The named spelling of a shape parameter is rejected on the elaborated+-- sort: (t : D1) elaborates to the restricted binder (t : 2 | D1 t), the+-- same form the inline spelling would produce, so both spellings meet the+-- same rule.+#define D1 : 2 -> TOPE := \ t -> ⊤++#data P (t : D1) := c
+ test/typecheck/cases/ill-data-tope-family-field.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+  - "a field of constructor c must be a type, a cube point, or a shape, got a tope family: 2 -> TOPE"+regression_for:+  - data-shape-fields-b-prime-layer-rules
+ test/typecheck/cases/ill-data-tope-family-field.rzk view
@@ -0,0 +1,6 @@+#lang rzk-1++-- A field may not store a tope family. Cube and shape *points* are the+-- realisation fragment and stay; the family itself is a parameter kind, not+-- data.+#data F := c (phi : 2 -> TOPE)
+ test/typecheck/cases/ill-data-tope-family-index.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+  - "an index of a #data sort must be a type, got a tope family: 2 -> TOPE"+regression_for:+  - data-shape-fields-b-prime-layer-rules
+ test/typecheck/cases/ill-data-tope-family-index.rzk view
@@ -0,0 +1,5 @@+#lang rzk-1++-- A family indexed by tope families is internal quantification over the+-- tope layer; families over shapes are what extension types are for.+#data X : (2 -> TOPE) -> U
+ test/typecheck/cases/ill-data-tope-field.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+  - "a field of constructor box must be a type, a cube point, or a shape, got the tope universe"+regression_for:+  - layer-discipline-tope-universe
+ test/typecheck/cases/ill-data-tope-field.rzk view
@@ -0,0 +1,4 @@+#lang rzk-1++-- TOPE is a parameter kind, not a field: a field would store a tope as data.+#data Boxed := box (psi : TOPE)
+ test/typecheck/cases/ill-data-tope-index.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+  - "an index of a #data sort must be a type, got the tope universe"+regression_for:+  - layer-discipline-tope-universe
+ test/typecheck/cases/ill-data-tope-index.rzk view
@@ -0,0 +1,4 @@+#lang rzk-1++-- An index of a #data sort must be a type.+#data OverTopes : TOPE -> U := at-top : OverTopes TOP
+ test/typecheck/cases/ill-hole-recor-guard-point.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorCannotInferHole+message_contains:+  - "cannot infer the type of a hole"+regression_for:+  - holes-point-inference-position
+ test/typecheck/cases/ill-hole-recor-guard-point.rzk view
@@ -0,0 +1,8 @@+#lang rzk-1++-- The points in a tope relation are in inference position. Strict mode cannot+-- guess their cube and therefore rejects a bare hole. Lenient mode records the+-- same term as an incomplete sketch; this is covered by Rzk.HolesSpec.+#define square (A : U) (a : A)+  : ( 2 × 2) → A+  := \ (t , s) → recOR (? ≤ ? ↦ a , ? ↦ a)
+ test/typecheck/cases/ill-kind-app-argument-tope.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+  - "a type argument must be a type, got the tope universe"+regression_for:+  - layer-discipline-direct-guards
+ test/typecheck/cases/ill-kind-app-argument-tope.rzk view
@@ -0,0 +1,6 @@+#lang rzk-1++-- A universe kind cannot be passed where a type is expected: the guard is+-- at the application, since at formation time the parameter is opaque.+#define diag (X : U) : U := Σ (p : X) , Unit+#define bad : U := diag TOPE
+ test/typecheck/cases/ill-kind-define-tope.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+  - "a definition at type U must be a type, got the tope universe"+regression_for:+  - layer-discipline-direct-guards
+ test/typecheck/cases/ill-kind-define-tope.rzk view
@@ -0,0 +1,5 @@+#lang rzk-1++-- A definition at type U must define a type; a universe-kind body would be+-- a synonym smuggling the kind into every position that accepts U.+#define A : U := TOPE
+ test/typecheck/cases/ill-kind-id-carrier-tope.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+  - "the carrier of an identity type must be a type, got the tope universe"+regression_for:+  - layer-discipline-direct-guards
+ test/typecheck/cases/ill-kind-id-carrier-tope.rzk view
@@ -0,0 +1,4 @@+#lang rzk-1++-- No identity types over the tope universe: TOPE is not a type.+#define e : U := (TOP /\ TOP) =_{TOPE} TOP
+ test/typecheck/cases/ill-kind-sigma-body-tope.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+  - "a Σ component must be a type, got the tope universe"+regression_for:+  - layer-discipline-direct-guards
+ test/typecheck/cases/ill-kind-sigma-body-tope.rzk view
@@ -0,0 +1,4 @@+#lang rzk-1++-- The second component is checked too.+#define A : U := Σ (x : Unit) , TOPE
+ test/typecheck/cases/ill-kind-sigma-cube-universe.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+  - "a Σ component must be a type, got the cube universe"+regression_for:+  - layer-discipline-direct-guards
+ test/typecheck/cases/ill-kind-sigma-cube-universe.rzk view
@@ -0,0 +1,4 @@+#lang rzk-1++-- The cube universe cannot be a Σ component.+#define A : U := Σ (I : CUBE) , Unit
+ test/typecheck/cases/ill-kind-sigma-tope-family.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+  - "a Σ component must be a type, got a tope family"+regression_for:+  - layer-discipline-direct-guards
+ test/typecheck/cases/ill-kind-sigma-tope-family.rzk view
@@ -0,0 +1,4 @@+#lang rzk-1++-- A tope family cannot be a Σ component.+#define A : U := Σ (phi : 2 -> TOPE) , Unit
+ test/typecheck/cases/ill-kind-sigma-tope.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+  - "a Σ component must be a type, got the tope universe"+regression_for:+  - layer-discipline-direct-guards
+ test/typecheck/cases/ill-kind-sigma-tope.rzk view
@@ -0,0 +1,4 @@+#lang rzk-1++-- The tope universe cannot be a Σ component: it would store topes as data.+#define A : U := Σ (p : TOPE) , Unit
+ test/typecheck/cases/ill-match-modal-hit.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+  - "modal match is not supported for higher inductive types"+regression_for:+  - modal-match-rejects-higher-inductive-types
+ test/typecheck/cases/ill-match-modal-hit.rzk view
@@ -0,0 +1,8 @@+#lang rzk-1++#data S1 := base | loop : base =_{S1} base++#define modal-match-hit (x :_b S1) : Unit+  := match _b x+       (base => unit+       | loop => unit)
+ test/typecheck/cases/ill-match-modal-ih-remodalized.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorUnaccessibleVar+message_contains:+  - ih+regression_for:+  - a modal match changes constructor-field modalities but not the modality of an induction hypothesis
+ test/typecheck/cases/ill-match-modal-ih-remodalized.rzk view
@@ -0,0 +1,10 @@+#lang rzk-1++#data Nat := zero | suc (pred : Nat)++#define modal-match-ih-remodalized+  (x :_b Nat)+  : Unit+  := match _b x+       ( zero => unit+       | suc pred ih => let _b copy := ih in unit)
+ test/typecheck/cases/ill-match-modal-inaccessible.expect.yaml view
@@ -0,0 +1,8 @@+status: error+error_tag: TypeErrorUnaccessibleVar+message_contains:+  - "variable x is inaccessible"+  - "declared modality: _id"+  - "current locks:      ♭"+regression_for:+  - modal-match-scrutinee-accessibility
+ test/typecheck/cases/ill-match-modal-inaccessible.rzk view
@@ -0,0 +1,8 @@+#lang rzk-1++#data ModalMatch := mm (point : 2)++-- A plain variable is not available under Flat, so it cannot be the+-- scrutinee of `match _b`.+#define modal-match-inaccessible (x : ModalMatch) : Unit+  := match _b x (mm point => unit)
+ test/typecheck/cases/ill-match-modal-motive.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorModalityMismatch+message_contains:+  - "modality mismatch"+regression_for:+  - modal-match-motive-binder-modality
+ test/typecheck/cases/ill-match-modal-motive.rzk view
@@ -0,0 +1,9 @@+#lang rzk-1++#data D := c++#define bad-modal-motive+  (x :_b D)+  : Unit+  := match _b x into (\ (_ : D) -> Unit)+       (c => unit)
+ test/typecheck/cases/ill-match-modal-sharp.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+  - "modal match is not supported for ♯"+regression_for:+  - modal-data-no-sharp-eliminators
+ test/typecheck/cases/ill-match-modal-sharp.rzk view
@@ -0,0 +1,8 @@+#lang rzk-1++-- There is no modal match for ♯: as a right adjoint it does not preserve+-- coproducts, and an eliminator rec-sharp-Bool would retract ♯ Bool onto Bool.+#data Bool := false | true++#define retract (b :_# Bool) : Bool+  := match _# b (false => false | true => true)
test/typecheck/cases/ill-modal-b-no-dist.expect.yaml view
@@ -1,4 +1,4 @@ status: error error_tag: TypeErrorUnaccessibleVar message_contains:-  - "unaccessible var with modality"+  - "is inaccessible in the current modal context"
test/typecheck/cases/ill-modal-not-modal.expect.yaml view
@@ -1,4 +1,6 @@ status: error error_tag: TypeErrorNotModal message_contains:-  - "expected modal type"+  - "cannot eliminate a non-modal value"+  - "value: x"+  - "type:  A"
+ test/typecheck/cases/ill-rstt-auxiliary-interval.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorRSTT+message_contains:+  - auxiliary interval+regression_for:+  - rstt-excludes-auxiliary-interval
+ test/typecheck/cases/ill-rstt-auxiliary-interval.rzk view
@@ -0,0 +1,3 @@+#lang rzk-1+#set-option "rstt-safe" = "error"+#def auxiliary : CUBE := II
+ test/typecheck/cases/ill-rstt-boundary-obligation.expect.yaml view
@@ -0,0 +1,4 @@+status: error+error_tag: TypeErrorUnifyTerms+regression_for:+  - rstt-safe-mode
+ test/typecheck/cases/ill-rstt-boundary-obligation.rzk view
@@ -0,0 +1,5 @@+#lang rzk-1+#set-option "rstt-safe" = "error"+#def boundary-obligation (A : U) (a b : A)+  ((s, t) : 2 * 2 | s === 0_2 /\ t === 0_2)+  : A [s === t ↦ a] := b
+ test/typecheck/cases/ill-rstt-dependent-cube-family.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorRSTT+message_contains:+  - cube domain+regression_for:+  - rstt-safe-mode
+ test/typecheck/cases/ill-rstt-dependent-cube-family.rzk view
@@ -0,0 +1,5 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+#def dependent (I : 2 → CUBE) (s : 2)+  (A : (t : I s) → U) : Unit := unit
+ test/typecheck/cases/ill-rstt-dependent-cube-instance.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorRSTT+message_contains:+  - cube domain+regression_for:+  - rstt-safe-mode
+ test/typecheck/cases/ill-rstt-dependent-cube-instance.rzk view
@@ -0,0 +1,6 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+#def functions (I : CUBE) : U := (t : I) → Unit+#def dependent (I : 2 → CUBE) (s : 2)+  (f : functions (I s)) : Unit := unit
+ test/typecheck/cases/ill-rstt-dependent-cube.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorRSTT+message_contains:+  - cube domain+regression_for:+  - rstt-safe-mode
+ test/typecheck/cases/ill-rstt-dependent-cube.rzk view
@@ -0,0 +1,5 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+#def dependent (I : 2 → CUBE) (s : 2)+  (f : (t : I s) → Unit) : Unit := unit
+ test/typecheck/cases/ill-rstt-false-bottom.expect.yaml view
@@ -0,0 +1,4 @@+status: error+error_tag: TypeErrorTopeNotSatisfied+regression_for:+  - rstt-safe-mode
+ test/typecheck/cases/ill-rstt-false-bottom.rzk view
@@ -0,0 +1,4 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+#def false-proof (A : U) : A := recBOT
+ test/typecheck/cases/ill-rstt-false-refl.expect.yaml view
@@ -0,0 +1,4 @@+status: error+error_tag: TypeErrorUnifyTerms+regression_for:+  - rstt-safe-mode
+ test/typecheck/cases/ill-rstt-false-refl.rzk view
@@ -0,0 +1,4 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+#def false-path (A : U) (a b : A) : a = b := refl
+ test/typecheck/cases/ill-rstt-inductive.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorRSTT+message_contains:+  - inductive declaration+regression_for:+  - rstt-safe-mode
+ test/typecheck/cases/ill-rstt-inductive.rzk view
@@ -0,0 +1,4 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+#data bool := false | true
+ test/typecheck/cases/ill-rstt-meta-binder-in-face.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorRSTT+message_contains:+  - schematic binder+regression_for:+  - rstt-safe-mode
+ test/typecheck/cases/ill-rstt-meta-binder-in-face.rzk view
@@ -0,0 +1,6 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+#def missed (A : U) (a : A)+  : (t : 2) → A [t === ((\ (B : U) → 0_2) A) ↦ a]+  := \ t → a
+ test/typecheck/cases/ill-rstt-meta-binder.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorRSTT+message_contains:+  - schematic binder+regression_for:+  - rstt-safe-mode
+ test/typecheck/cases/ill-rstt-meta-binder.rzk view
@@ -0,0 +1,5 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+#def nested (A : U) (a : A) : A+  := (\ (B : U) (b : B) → b) A a
+ test/typecheck/cases/ill-rstt-meta-prefix.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorRSTT+message_contains:+  - unsaturated schematic parameters+regression_for:+  - rstt-error-propagates-through-meta-prefix-traversal
+ test/typecheck/cases/ill-rstt-meta-prefix.rzk view
@@ -0,0 +1,5 @@+#lang rzk-1+#set-option "rstt-safe" = "error"+#set-option "warn-meta-prefix" = "off"+#def my-id (X : U) (x : X) : X := x+#def stash : Σ (h : (X : U) → X → X), Unit := (my-id, unit)
+ test/typecheck/cases/ill-rstt-modal.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorRSTT+message_contains:+  - modal type+regression_for:+  - rstt-safe-mode
+ test/typecheck/cases/ill-rstt-modal.rzk view
@@ -0,0 +1,4 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+#def sharp-pure (A : U) (a : A) : _# A := mod _# a
+ test/typecheck/cases/ill-rstt-option.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+  - unknown rstt-safe mode+regression_for:+  - rstt-safe-mode
+ test/typecheck/cases/ill-rstt-option.rzk view
@@ -0,0 +1,3 @@+#lang rzk-1++#set-option "rstt-safe" = "yes"
+ test/typecheck/cases/ill-rstt-packed-cube-family.expect.yaml view
@@ -0,0 +1,7 @@+status: error+error_tag: TypeErrorOther+message_contains:+  - "a Σ component must be a type, got a cube family"+regression_for:+  - rstt-safe-mode+  - layer-discipline-direct-guards
+ test/typecheck/cases/ill-rstt-packed-cube-family.rzk view
@@ -0,0 +1,6 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+-- The layer discipline rejects a cube family as a Σ component in every mode,+-- before RSTT-safe mode sees the binder.+#def pack : Σ (F : CUBE → CUBE), Unit := ((\ I → I), unit)
+ test/typecheck/cases/ill-rstt-packed-type-family.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorRSTT+message_contains:+  - schematic binder+regression_for:+  - rstt-safe-mode
+ test/typecheck/cases/ill-rstt-packed-type-family.rzk view
@@ -0,0 +1,4 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+#def pack : Σ (F : U → U), Unit := ((\ A → A), unit)
+ test/typecheck/cases/ill-rstt-postulate.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorRSTT+message_contains:+  - free-standing restriction+regression_for:+  - rstt-postulate-is-an-assumption
+ test/typecheck/cases/ill-rstt-postulate.rzk view
@@ -0,0 +1,3 @@+#lang rzk-1+#set-option "rstt-safe" = "error"+#postulate restricted (A : U) (a : A) : A [TOP ↦ a]
+ test/typecheck/cases/ill-rstt-restriction-in-domain.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorRSTT+message_contains:+  - free-standing restriction+regression_for:+  - rstt-safe-mode
+ test/typecheck/cases/ill-rstt-restriction-in-domain.rzk view
@@ -0,0 +1,6 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+#def missed (A : U) (a : A)+  : (t : 2 | ((\ (x : A [TOP ↦ a]) → 0_2) a) === 0_2) → A+  := \ t → a
+ test/typecheck/cases/ill-rstt-restriction.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorRSTT+message_contains:+  - free-standing restriction+regression_for:+  - rstt-safe-mode
+ test/typecheck/cases/ill-rstt-restriction.rzk view
@@ -0,0 +1,5 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+#set-option "warn-free-standing-restriction" = "no"+#def assumed (A : U) (a : A) (f : (A [TOP ↦ a]) → A) : A := f a
+ test/typecheck/cases/ill-rstt-shape-boundary.expect.yaml view
@@ -0,0 +1,7 @@+status: error+error_tag: TypeErrorRSTT+message_contains:+  - restriction boundary+  - outer cube points+regression_for:+  - rstt-safe-mode
+ test/typecheck/cases/ill-rstt-shape-boundary.rzk view
@@ -0,0 +1,5 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+#postulate mixed (A : U) (a : A) (s : 2)+  (f : (t : 2) → A [t === s ↦ a]) : Unit
+ test/typecheck/cases/ill-rstt-shape-domain.expect.yaml view
@@ -0,0 +1,7 @@+status: error+error_tag: TypeErrorRSTT+message_contains:+  - shape domain+  - outer cube points+regression_for:+  - rstt-safe-mode
+ test/typecheck/cases/ill-rstt-shape-domain.rzk view
@@ -0,0 +1,4 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+#def mixed (s : 2) : (t : 2 | t <= s) → Unit := \ t → unit
+ test/typecheck/cases/ill-rstt-uncovered-endpoints.expect.yaml view
@@ -0,0 +1,4 @@+status: error+error_tag: TypeErrorTopeNotSatisfied+regression_for:+  - rstt-safe-mode
+ test/typecheck/cases/ill-rstt-uncovered-endpoints.rzk view
@@ -0,0 +1,5 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+#def uncovered (A : U) (a : A) (t : 2) : A :=+  recOR (t === 0_2 ↦ a, t === 1_2 ↦ a)
+ test/typecheck/cases/ill-rstt-unsupported.expect.yaml view
@@ -0,0 +1,8 @@+status: error+error_tag: TypeErrorRSTT+message_contains:+  - cube supremum (sup)+line: 4+column: 23+regression_for:+  - rstt-safe-syntax-allow-list
+ test/typecheck/cases/ill-rstt-unsupported.rzk view
@@ -0,0 +1,4 @@+#lang rzk-1+#set-option "rstt-safe" = "error"+#def discard (i : 2) : Unit :=+  (\ (j : 2) → unit) (sup i 1_2)
+ test/typecheck/cases/ill-shape-dependency-option.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+  - unknown value for "warn-shape-dependency"+regression_for:+  - rstt-safe-mode
+ test/typecheck/cases/ill-shape-dependency-option.rzk view
@@ -0,0 +1,3 @@+#lang rzk-1++#set-option "warn-shape-dependency" = "off"
+ test/typecheck/cases/ill-tope-family-domain-non-instance.expect.yaml view
@@ -0,0 +1,8 @@+status: error+error_tag: TypeErrorTopeNotSatisfied+message_contains:+  - "local context"+  - "entails"+line: 17+regression_for:+  - tope-family-domain-conjunct-elaboration
+ test/typecheck/cases/ill-tope-family-domain-non-instance.rzk view
@@ -0,0 +1,17 @@+#lang rzk-1++-- A family χ : ψ → TOPE is read together with its domain where it is applied:+-- the binder (t : χ) carries ψ t ∧ χ t. Passed to `wider`, it is read without+-- the domain. For a family variable the two readings agree, so `coerce` is+-- accepted. The instantiation ψ := ⊥, χ := ⊤ violates the inclusion, and+-- without the domain conjunct on the concrete family `bad` inhabited every+-- type. It must be rejected.++#def wider (I : CUBE) (φ : I → TOPE) (A : U) : U := (t : φ) → A++#def coerce (I : CUBE) (ψ : I → TOPE) (χ : ψ → TOPE) (A : U) (f : (t : χ) → A)+  : wider I χ A+  := f++#def bad (A : U) : A+  := coerce 2 (\ t → BOT) (\ t → TOP) A (\ t → recBOT) 0₂
+ test/typecheck/cases/ill-tope-family-domain-same-domain.expect.yaml view
@@ -0,0 +1,5 @@+status: error+error_tag: TypeErrorTopeNotSatisfied+line: 14+regression_for:+  - tope-family-domain-conjunct-elaboration
+ test/typecheck/cases/ill-tope-family-domain-same-domain.rzk view
@@ -0,0 +1,14 @@+#lang rzk-1++-- Control for ill-tope-family-domain-non-instance: with a callee parameter of+-- the same domain ψ, both readings carry ψ t ∧ φ t, and `bad` is rejected+-- independently of the domain conjunct on concrete families.++#def same (I : CUBE) (ψ : I → TOPE) (φ : ψ → TOPE) (A : U) : U := (t : φ) → A++#def coerce (I : CUBE) (ψ : I → TOPE) (χ : ψ → TOPE) (A : U) (f : (t : χ) → A)+  : same I ψ χ A+  := f++#def bad (A : U) : A+  := coerce 2 (\ t → BOT) (\ t → TOP) A (\ t → recBOT) 0₂
+ test/typecheck/cases/ill-tope-param-entailment.expect.yaml view
@@ -0,0 +1,4 @@+status: error+error_tag: TypeErrorTopeNotSatisfied+regression_for:+  - bare-tope-parameter
+ test/typecheck/cases/ill-tope-param-entailment.rzk view
@@ -0,0 +1,7 @@+#lang rzk-1++-- Bare tope parameters are opaque: psi does not entail an unrelated chi.+#define bad+  ( psi chi : TOPE) (A : U) (f : (t : 2 | chi) -> A)+  : (t : 2 | psi) -> A+  := \ t -> f t
+ test/typecheck/cases/ill-tope-param-instance.expect.yaml view
@@ -0,0 +1,4 @@+status: error+error_tag: TypeErrorTopeNotSatisfied+regression_for:+  - bare-tope-parameter
+ test/typecheck/cases/ill-tope-param-instance.rzk view
@@ -0,0 +1,7 @@+#lang rzk-1++-- Instantiating a bare tope parameter keeps the restriction: a function on+-- the shape t === 0_2 cannot be applied at an arbitrary point.+#define const-on (psi : TOPE) (A : U) (a : A) : (t : 2 | psi) -> A := \ _ -> a++#define bad (A : U) (a : A) (t : 2) : A := const-on (t === 0_2) A a t
− test/typecheck/cases/ill-tope-param-lambda.expect.yaml
@@ -1,6 +0,0 @@-status: error-error_tag: TypeErrorOther-message_contains:-  - "tope params are illegal"-regression_for:-  - lambda-TOPE-param-forbidden
− test/typecheck/cases/ill-tope-param-lambda.rzk
@@ -1,3 +0,0 @@-#lang rzk-1--#define bad : (p : TOPE) -> U := \ p -> U
− test/typecheck/cases/ill-tope-param-typefun.expect.yaml
@@ -1,6 +0,0 @@-status: error-error_tag: TypeErrorOther-message_contains:-  - "tope params are illegal"-regression_for:-  - TypeFun-TOPE-domain-forbidden
− test/typecheck/cases/ill-tope-param-typefun.rzk
@@ -1,3 +0,0 @@-#lang rzk-1--#define bad (phi : TOPE) : U := U
+ test/typecheck/cases/warn-free-standing-restriction-assumed.expect.yaml view
@@ -0,0 +1,13 @@+status: ok+warnings:+  - FreeStandingRestrictionWarning+  - FreeStandingRestrictionWarning+  - FreeStandingRestrictionWarning+  - FreeStandingRestrictionWarning+  - FreeStandingRestrictionWarning+  - FreeStandingRestrictionWarning+  - FreeStandingRestrictionWarning+  - FreeStandingRestrictionWarning+  - FreeStandingRestrictionWarning+regression_for:+  - free-standing-restriction-warning
+ test/typecheck/cases/warn-free-standing-restriction-assumed.rzk view
@@ -0,0 +1,41 @@+#lang rzk-1++-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+#set-option "warn-free-standing-restriction" = "yes"++-- A restriction is ext-style when it sits on the codomain of a shape-Π.+-- Conservativity over RSTT covers the derivations that conclude a+-- free-standing restriction but never assume one, so the checker reports the+-- assumed positions: a binder, an eliminator motive, a type passed as data.++#def at-binder (A : U) (x : A) (f : (A [TOP ↦ x]) → A) : A+  := f x++-- The motive of idJ: the eliminator binds its variables at it.+#def at-motive (A : U) (x : A) (p : x =_{A} x) : A [TOP ↦ x]+  := idJ (A , x , (\ _ _ → A [TOP ↦ x]) , x , x , p)++-- Passed as data at a U-valued parameter, then substituted into a motive.+#def generic-J (A : U) (x : A) (C : (z : A) → (x =_{A} z) → U) (d : C x refl)+  ( y : A) (p : x =_{A} y)+  : C y p+  := idJ (A , x , C , d , y , p)++#def at-data (A : U) (x : A) (p : x =_{A} x) : A [TOP ↦ x]+  := generic-J A x (\ _ _ → A [TOP ↦ x]) x x p++-- A definition at U whose body is a type: data as well.+#def at-universe (A : U) (x : A) : U+  := A [TOP ↦ x]++-- The type of an identity type, which types its endpoints: Def. 5.7 of the+-- paper does not reach a restriction there.+#def at-identity (A : U) (x : A) (y : A [TOP ↦ x]) : U+  := y =_{A [TOP ↦ x]} y++-- The motive of a generated eliminator, passed at its U-valued parameter.+#data bool := false | true++#def at-eliminator (A : U) (x : A) (b : bool) : A [TOP ↦ x]+  := ind-bool (\ _ → A [TOP ↦ x]) x x b
+ test/typecheck/cases/warn-free-standing-restriction-option.expect.yaml view
@@ -0,0 +1,5 @@+status: ok+warnings:+  - FreeStandingRestrictionWarning+regression_for:+  - free-standing-restriction-warning
+ test/typecheck/cases/warn-free-standing-restriction-option.rzk view
@@ -0,0 +1,20 @@+#lang rzk-1++-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"++-- The report is controlled by warn-free-standing-restriction; what the+-- checker accepts does not change.++#def quietly (A : U) (x : A) : U+  := A [TOP ↦ x]++#set-option "warn-free-standing-restriction" = "yes"++#def reported (A : U) (x : A) : U+  := A [TOP ↦ x]++#unset-option "warn-free-standing-restriction"++#def reset-quietly (A : U) (x : A) : U+  := A [TOP ↦ x]
+ test/typecheck/cases/warn-meta-binder-inside-term.expect.yaml view
@@ -0,0 +1,7 @@+status: ok+warnings:+  - MetaBinderWarning+  - MetaBinderWarning+  - MetaBinderWarning+regression_for:+  - meta-binder-warning
+ test/typecheck/cases/warn-meta-binder-inside-term.rzk view
@@ -0,0 +1,45 @@+#lang rzk-1++-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"++-- Schematic parameters are bound in a declaration's parameter prefix, so+-- that a declaration is a family of object-theory statements, one per+-- instantiation. A λ inside a term that binds a universe, a cube or a tope+-- family is outside that reading; it is reported when asked for.++#set-option "warn-meta-binder" = "yes"++-- Leading λs are the declaration's own parameters: silent.+#def my-id : (X : U) → X → X+  := \ X x → x++#def at-universe (A : U) (a : A) : A+  := (\ (B : U) → \ (b : B) → b) A a++#def at-cube (A : U) (a : A) : A+  := (\ (J : CUBE) → a) 2++#def at-tope-family (I : CUBE) (A : U) (a : A) : A+  := (\ (φ : I → TOPE) → a) (\ t → TOP)++-- A schema defined by recursion on a schematic index: the case split has to+-- come first, so the remaining parameters are bound in its branches. Both the+-- index and the universe are in the meta prefix, so uses supply them; silent.+#data nat := zero | suc (n : nat)++#def Schematic (n : nat) : U+  := ( A : U) → A → A++#def by-index (n : nat) : Schematic n+  := match n+     ( zero ⇒ \ A a → a+     | suc _ ih ⇒ \ A a → ih (A → A) (\ x → x) a)++-- Supplying a schema at a schematic parameter is the plumbing the+-- meta-prefix check allows; silent.+#def takes-schema (h : (A : U) → A → A) (B : U) (b : B) : B+  := h B b++#def supplies-schema (B : U) (b : B) : B+  := takes-schema (\ A a → a) B b
test/typecheck/cases/warn-meta-prefix-object-position.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ -- my-id has meta prefix X (a universe parameter). #define my-id (X : U) (x : X) : X := x 
test/typecheck/cases/warn-meta-prefix-option-structural.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ #set-option "warn-meta-prefix" = "structural"  #define my-id (X : U) (x : X) : X := x
test/typecheck/cases/warn-meta-prefix-section.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ -- Closing the section abstracts T out of use-T, whose type becomes -- (T : U) → U: the meta prefix must be recomputed at #end. #section sec
test/typecheck/cases/warn-meta-prefix-strict-only.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ #define my-id (X : U) (x : X) : X := x  -- Passing the unsaturated schema to a local parameter whose declared type
+ test/typecheck/cases/warn-overhang-controls.expect.yaml view
@@ -0,0 +1,7 @@+status: ok+warnings:+  - OverhangWarning+regression_for:+  - structured-overhang-recOR-silent-verbosity+  - warn-overhang-disable-and-reset+  - overhang-entailment-direction
+ test/typecheck/cases/warn-overhang-controls.rzk view
@@ -0,0 +1,13 @@+#lang rzk-1++-- Disabling and unsetting restore silence; a contained face stays silent.+#set-option "warn-overhang" = "yes"+#set-option "verbosity" = "silent"+#def contained (t : 2 | t === 0_2) : Unit [t === 0_2 |-> unit] := unit+#def split (t : 2 | t === 0_2) : Unit+  := recOR ((t === 0_2) \/ (t === 1_2) |-> unit)+#set-option "warn-overhang" = "no"+#def disabled (t : 2 | t === 0_2) : Unit [TOP |-> unit] := unit+#set-option "warn-overhang" = "yes"+#unset-option "warn-overhang"+#def reset (t : 2 | t === 0_2) : Unit [TOP |-> unit] := unit
+ test/typecheck/cases/warn-rstt-bare-tope-binder-in-term.expect.yaml view
@@ -0,0 +1,7 @@+status: ok+warnings:+  - MetaBinderWarning+  - MetaBinderWarning+regression_for:+  - rstt-safe-mode+  - bare-tope-parameter
+ test/typecheck/cases/warn-rstt-bare-tope-binder-in-term.rzk view
@@ -0,0 +1,11 @@+#lang rzk-1++-- A TOPE binder inside a term is a meta binder in an object position, as+-- for a tope family: once inside data, once in a redex.+#set-option "rstt-safe" = "warn"++#define in-pair (A : U) (a : A) : A+  := first ((a , \ psi -> a) as Σ (x : A) , ((psi : TOPE) -> A))++#define in-redex (A : U) (a : A) : A+  := (\ (psi : TOPE) -> a) TOP
+ test/typecheck/cases/warn-rstt-bare-tope-object-point.expect.yaml view
@@ -0,0 +1,6 @@+status: ok+warnings:+  - RSTTShapeDependencyWarning+regression_for:+  - rstt-safe-mode+  - bare-tope-parameter
+ test/typecheck/cases/warn-rstt-bare-tope-object-point.rzk view
@@ -0,0 +1,10 @@+#lang rzk-1++-- A bare tope parameter is a meta parameter, like (psi : 1 -> TOPE): an+-- instance that mentions an object-level point is outside RSTT.+#set-option "rstt-safe" = "warn"++#define const-on (psi : TOPE) (A : U) (a : A) : (t : 2 | psi) -> A := \ _ -> a++#define at-point (s : 2) (A : U) (a : A) : (t : 2 | s === 0_2) -> A+  := const-on (s === 0_2) A a
+ test/typecheck/cases/warn-rstt-default.expect.yaml view
@@ -0,0 +1,4 @@+status: ok+warnings: []+regression_for:+  - rstt-safe-mode
+ test/typecheck/cases/warn-rstt-default.rzk view
@@ -0,0 +1,8 @@+#lang rzk-1++-- RSTT-safe mode is off by default: the schematic binder inside the body+-- passes silently.+#set-option "warn-meta-binder" = "no"+#set-option "warn-meta-prefix" = "off"+#def nested (A : U) (a : A) : A+  := (\ (B : U) (b : B) → b) A a
+ test/typecheck/cases/warn-rstt-escape-beta.expect.yaml view
@@ -0,0 +1,5 @@+status: ok+warnings:+  - FreeStandingRestrictionWarning+regression_for:+  - rstt-restriction-escape-beta
+ test/typecheck/cases/warn-rstt-escape-beta.rzk view
@@ -0,0 +1,6 @@+#lang rzk-1++-- Audit S2 alone: report the introduction, not an unfolded use site.+#set-option "rstt-safe" = "off"+#set-option "warn-free-standing-restriction" = "yes"+#def beta (A : U) (a : A) : U := (\ (X : U) → X) (A [TOP ↦ a])
+ test/typecheck/cases/warn-rstt-escape-iota.expect.yaml view
@@ -0,0 +1,5 @@+status: ok+warnings:+  - FreeStandingRestrictionWarning+regression_for:+  - rstt-restriction-escape-iota
+ test/typecheck/cases/warn-rstt-escape-iota.rzk view
@@ -0,0 +1,8 @@+#lang rzk-1++-- Audit S2 alone: report the introduction, not an unfolded use site.+#set-option "rstt-safe" = "off"+#set-option "warn-free-standing-restriction" = "yes"+#data nat := zero | suc (n : nat)+#def via-match (A : U) (a : A) (n : nat) : U+ := match n (zero ⇒ Unit | suc k ih ⇒ A [TOP ↦ a])
+ test/typecheck/cases/warn-rstt-escape-let.expect.yaml view
@@ -0,0 +1,5 @@+status: ok+warnings:+  - FreeStandingRestrictionWarning+regression_for:+  - rstt-restriction-escape-let
+ test/typecheck/cases/warn-rstt-escape-let.rzk view
@@ -0,0 +1,6 @@+#lang rzk-1++-- Audit S2 alone: report the introduction, not an unfolded use site.+#set-option "rstt-safe" = "off"+#set-option "warn-free-standing-restriction" = "yes"+#def via-let (A : U) (a : A) : U := let X := A [TOP ↦ a] in X
+ test/typecheck/cases/warn-rstt-escape-pair.expect.yaml view
@@ -0,0 +1,5 @@+status: ok+warnings:+  - FreeStandingRestrictionWarning+regression_for:+  - rstt-restriction-escape-pair
+ test/typecheck/cases/warn-rstt-escape-pair.rzk view
@@ -0,0 +1,6 @@+#lang rzk-1++-- Audit S2 alone: report the introduction, not an unfolded use site.+#set-option "rstt-safe" = "off"+#set-option "warn-free-standing-restriction" = "yes"+#def via-pair (A : U) (a : A) : U := first ((A [TOP ↦ a], unit) as Σ (X : U), Unit)
+ test/typecheck/cases/warn-rstt-escape-section.expect.yaml view
@@ -0,0 +1,5 @@+status: ok+warnings:+  - FreeStandingRestrictionWarning+regression_for:+  - rstt-restriction-escape-section
+ test/typecheck/cases/warn-rstt-escape-section.rzk view
@@ -0,0 +1,11 @@+#lang rzk-1++-- Audit S2 alone: report the introduction, not an unfolded use site.+#set-option "rstt-safe" = "off"+#set-option "warn-free-standing-restriction" = "yes"+#section assumptions+#assume A : U+#assume a : A+#assume x : A [TOP ↦ a]+#def use uses (a) : A := x+#end assumptions
+ test/typecheck/cases/warn-rstt-escape-tope-family.expect.yaml view
@@ -0,0 +1,5 @@+status: ok+warnings:+  - FreeStandingRestrictionWarning+regression_for:+  - rstt-restriction-escape-tope-family
+ test/typecheck/cases/warn-rstt-escape-tope-family.rzk view
@@ -0,0 +1,6 @@+#lang rzk-1++-- Audit S2 alone: report the introduction, not an unfolded use site.+#set-option "rstt-safe" = "off"+#set-option "warn-free-standing-restriction" = "yes"+#def family (A : U) (a : A) : 2 → U := \ t → A [t === 0_2 ↦ a]
+ test/typecheck/cases/warn-rstt-escape-unfolding.expect.yaml view
@@ -0,0 +1,6 @@+status: ok+warnings:+  - FreeStandingRestrictionWarning+  - FreeStandingRestrictionWarning+regression_for:+  - rstt-restriction-escape-unfolding
+ test/typecheck/cases/warn-rstt-escape-unfolding.rzk view
@@ -0,0 +1,7 @@+#lang rzk-1++-- Audit S2 alone: report both the introduction and its unfolded use.+#set-option "rstt-safe" = "off"+#set-option "warn-free-standing-restriction" = "yes"+#def restricted (A : U) (a : A) : U := A [TOP ↦ a]+#postulate use (A : U) (a : A) (x : restricted A a) : A
+ test/typecheck/cases/warn-rstt-inductive.expect.yaml view
@@ -0,0 +1,6 @@+status: ok+warnings:+  - RSTTInductiveWarning+  - RSTTInductiveWarning+regression_for:+  - rstt-safe-mode
+ test/typecheck/cases/warn-rstt-inductive.rzk view
@@ -0,0 +1,6 @@+#lang rzk-1++#set-option "rstt-safe" = "warn"++#data bool := false | true+#def choose (b : bool) : bool := match b (false ⇒ true | true ⇒ false)
+ test/typecheck/cases/warn-rstt-modal.expect.yaml view
@@ -0,0 +1,8 @@+status: ok+warnings:+  - RSTTModalWarning+  - RSTTModalWarning+  - RSTTModalWarning+  - RSTTModalWarning+regression_for:+  - rstt-safe-mode
+ test/typecheck/cases/warn-rstt-modal.rzk view
@@ -0,0 +1,6 @@+#lang rzk-1++#set-option "rstt-safe" = "warn"++#def sharp-pure (A : U) (a : A) : _# A := mod _# a+#def crisp (A :_b U) (a :_b A) : A := a
+ test/typecheck/cases/warn-rstt-reset.expect.yaml view
@@ -0,0 +1,4 @@+status: ok+warnings: []+regression_for:+  - rstt-safe-mode
+ test/typecheck/cases/warn-rstt-reset.rzk view
@@ -0,0 +1,6 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+#unset-option "rstt-safe"+#def nested (A : U) (a : A) : A+  := (\ (B : U) (b : B) → b) A a
+ test/typecheck/cases/warn-rstt-shape-dependency.expect.yaml view
@@ -0,0 +1,11 @@+status: ok+warnings:+  - RSTTShapeDependencyWarning+  - RSTTShapeDependencyWarning+  - RSTTShapeDependencyWarning+  - RSTTShapeDependencyWarning+  - RSTTShapeDependencyWarning+  - RSTTShapeDependencyWarning+  - RSTTShapeDependencyWarning+regression_for:+  - rstt-safe-mode
+ test/typecheck/cases/warn-rstt-shape-dependency.rzk view
@@ -0,0 +1,27 @@+#lang rzk-1++#set-option "rstt-safe" = "warn"++-- A mixed face fails even when the inner domain is the whole cube.+#postulate mixed-boundary (A : U) (a : A) (s : 2)+  (f : (t : 2) → A [t === s ↦ a]) : Unit++-- An outer point in the domain is forbidden even without a restriction.+#postulate mixed-domain (A : U) (s : 2)+  (f : (t : 2 | t <= s) → A) : Unit++-- Different cubes can be related by a schematic tope family.+#postulate distinct-cubes (I J : CUBE) (φ : I → J → TOPE)+  (s : I) (f : (t : J) → Unit [φ s t ↦ unit]) : Unit++-- A product-pattern binder does not hide its dependency from an inner binder.+#postulate outer-product (A : U) (a : A) ((s, u) : 2 * 2)+  (f : (t : 2) → A [t === s ↦ a]) : Unit++-- A domain may occur only in a nested lambda's inferred type.+#def nested (s : 2) : Unit := (\ (t : 2 | t <= s) → unit) 0_2++-- A local tope-family alias must not hide an outer cube point.+#def alias (s : 2) : U :=+  let face : 2 → TOPE := \ t → t === s in+  (t : 2) → Unit [face t ↦ unit]
+ test/typecheck/cases/warn-rstt-warn-overrides-standalone.expect.yaml view
@@ -0,0 +1,5 @@+status: ok+warnings:+  - MetaBinderWarning+regression_for:+  - rstt-safe-mode
+ test/typecheck/cases/warn-rstt-warn-overrides-standalone.rzk view
@@ -0,0 +1,7 @@+#lang rzk-1++#set-option "rstt-safe" = "warn"+#set-option "warn-meta-binder" = "no"+#set-option "warn-meta-prefix" = "off"+#def nested (A : U) (a : A) : A+  := (\ (B : U) (b : B) → b) A a
+ test/typecheck/cases/warn-tope-family-domain-non-instance.expect.yaml view
@@ -0,0 +1,6 @@+status: ok+warnings:+  - TopeFamilyDomainWarning+  - TopeFamilyDomainWarning+regression_for:+  - tope-family-domain-warning
+ test/typecheck/cases/warn-tope-family-domain-non-instance.rzk view
@@ -0,0 +1,22 @@+#lang rzk-1++-- A concrete family not included in its declared domain is read as its+-- intersection with the domain (happy-tope-family-domain-instance), so the+-- family checked differs from the family written, and the checker says so.++#def over-domain (I : CUBE) (ψ : I → TOPE) (χ : ψ → TOPE) (A : U) : U+  := (t : χ) → A++-- ⊤ over the domain ⊥ is read as ⊥ ∧ ⊤.+#def instantiate (I : CUBE) (A : U) : U+  := over-domain I (\ t → BOT) (\ t → TOP) A++-- In a parameter type, the family is elaborated twice and reported once.+#def from-instantiated (I : CUBE) (A : U) (f : over-domain I (\ t → BOT) (\ t → TOP) A)+  : (t : I | BOT) → A+  := f++-- t ≡ 0₂ over the domain t ≡ 0₂ ∨ t ≡ 1₂ is included; silent.+#def endpoint (A : U) (a : A)+  : over-domain 2 (\ t → t ≡ 0₂ ∨ t ≡ 1₂) (\ t → t ≡ 0₂) A+  := \ t → a
+ test/typecheck/cases/warn-tope-family-domain-option.expect.yaml view
@@ -0,0 +1,5 @@+status: ok+warnings:+  - TopeFamilyDomainWarning+regression_for:+  - tope-family-domain-warning
+ test/typecheck/cases/warn-tope-family-domain-option.rzk view
@@ -0,0 +1,19 @@+#lang rzk-1++-- The warning is controlled by warn-tope-family-domain. The family is read as+-- its intersection with the domain either way.++#def over-domain (I : CUBE) (ψ : I → TOPE) (χ : ψ → TOPE) (A : U) : U+  := (t : χ) → A++#set-option "warn-tope-family-domain" = "no"++-- Silent.+#def instantiate-quietly (I : CUBE) (A : U) : U+  := over-domain I (\ t → BOT) (\ t → TOP) A++#unset-option "warn-tope-family-domain"++-- Reported again.+#def instantiate (I : CUBE) (A : U) : U+  := over-domain I (\ t → BOT) (\ t → TOP) A