ú΀Ãy­E      !"#$%&'()*+,-./0123456789:;<=>?@ABCD NoneSTm*Data type (a :|: b) that behaves all like Either<, except that has no tag in JSON representation as used by FromJSON and ToJSON. Convert to Either datatype. Convert from Either datatype.UDeconstruct the type with two functions corresponding to constructors. This is like either.5Safe ] +Make the first letter of a Text upper case. +Make the first letter of a Text lower case.  None%06V ÝNone16;=>? Union types for JSON values.%Dictionary of types indexed by names.EType alias for HashMap2Make operation on a map to an operation on a Dict. Take all keys from dictionary.! Empty type"&Lookup the Type within the dictionary.# Size of the  term.$xCheck if this is nullable (Maybe) type, or not. Nullable type will always accept TNull or missing key that contains it.%Null-ish types&:Convert any type into union type (even if just singleton).'$Is the top-level constructor a TObj?(#Is it a simple (non-compound) Type?F&Is the top-level constructor a TUnion?)SIs the top-level constructor a TArray? | Check if the given type has non-top TObj.*)Check if the given type has non-top TObj.+9Check if the given type has TObj on top or within array.. !"#$%&'()*+# "!()'&*+$%None)b 9éCompute total number of nodes (and leaves) within the value tree. Each simple JavaScript type (including String) is counted as of size 1, whereas both Array or object types are counted as 1+sum of the sizes of their member values.:&Compute total size of the type of the ValueØ. For: * simple types it is always 1, * for arrays it is just 1+_maximum_ size of the (single) element type, * for objects it is _sum_ of the sizes of fields (since each field type is assumed to be different.);‹Compute total depth of the value. For: * simple types it is 1 * for either Array or Object, it is 1 + maximum of depths of their members<Extract Type from the JSON Value2. Unifying types of array elements, if necessary.=+Type check the value with the derived type.>"Standard unification procedure on Types, with inclusion of Type unions.G;Unify sets of types (sets are union types of alternatives).H"Smart constructor for union types.I•Simplify TUnion's so there is no TUnion directly inside TUnion. If there is only one element of the set, then return this single element as a type.!9:;<=>9:;!<>=Safe0 J¹Generic function for opening file if the filename is not empty nor "-", or using given handle otherwise (probably stdout, stderr, or stdin). TODO: Should it become utility function?KBGeneric function for choosing either file with given name or stdinstdout as inputgoutput. It accepts the function that takes the corresponding handle. Stdin/stdout is selected by "-".JKNone %6<V:LïExplanatory type alias for making declarations First element of the triple is original JSON identifier, second element of the triple is the mapped identifier name in Haskell. third element of the triple shows the type in a formatted wayMgSplits initial type with a given label, into a mapping of object type names and object type structures.NOTopological sorting of splitted types so that it is accepted declaration order.O4Computes all type labels referenced by a given type.PJFor a given splitted types, it returns candidates for extra unifications.Q(Unifies candidates on a give input list.R"Remaps type labels according to a S.MPQ None %6<VUTïExplanatory type alias for making declarations First element of the triple is original JSON identifier, second element of the triple is the mapped identifier name in Haskell. third element of the triple shows the type in a formatted wayUWrap a type alias.VWrap a data type declarationW¯Make ToJSON declaration, given identifier (object name in Haskell) and mapping of its keys from JSON to Haskell identifiers *in the same order* as in *data type declaration*.X Make ToJSON declaration, given identifier (object name in Haskell) and mapping of its keys from JSON to Haskell identifiers in the same order as in declarationY Makes a generic identifier name.Z!Add new type alias for Array type[»Convert a JSON key name given by second argument, from within a dictionary keyed with first argument, into a name of Haskell record field (hopefully distinct from other such selectors.)\kFormat the type within DeclM monad, that records the separate declarations on which this one is dependent.]gSplits initial type with a given label, into a mapping of object type names and object type structures.^.Display an environment of types split by name._ÿ[Normalize type name by: 1. Treating all characters that are not acceptable in Haskell variable name as end of word. 2. Capitalizing each word, but a first (camelCase). 3. Adding underscore if first character is non-alphabetic. 4. Escaping Haskell keywords if the whole identifier is such keyword. 5. If identifier is empty, then substituting  JsonEmptyKey for its name.`OTopological sorting of splitted types so that it is accepted declaration order.a4Computes all type labels referenced by a given type.^_bcde NoneXñfŽDefault output filname is used, when there is no explicit output file path, or it is "-" (stdout). Default module name is consistent with it.g7Write a Haskell module to an output file, or stdout if h filename is given.fgi None %6<Vs jïExplanatory type alias for making declarations First element of the triple is original JSON identifier, second element of the triple is the mapped identifier name in Haskell. third element of the triple shows the type in a formatted waykWrap a type alias.lWrap a data type declarationm°Make Decoder declaration, given identifier (object name in Haskell) and mapping of its keys from JSON to Haskell identifiers *in the same order* as in *data type declaration*.n¡Make Encoder declaration, given identifier (object name in Haskell) and mapping of its keys from JSON to Haskell identifiers in the same order as in declarationo"Join text with other as separator.p Makes a generic identifier name.q!Add new type alias for Array typer»Convert a JSON key name given by second argument, from within a dictionary keyed with first argument, into a name of Haskell record field (hopefully distinct from other such selectors.)skFormat the type within DeclM monad, that records the separate declarations on which this one is dependent.t.Display an environment of types split by name.uÿ[Normalize type name by: 1. Treating all characters that are not acceptable in Haskell variable name as end of word. 2. Capitalizing each word, but a first (camelCase). 3. Adding underscore if first character is non-alphabetic. 4. Escaping Haskell keywords if the whole identifier is such keyword. 5. If identifier is empty, then substituting  JsonEmptyKey for its name.vOTopological sorting of splitted types so that it is accepted declaration order.w4Computes all type labels referenced by a given type.x"Remaps type labels according to a y.tuz{|} Nonet¤~7Write a Haskell module to an output file, or stdout if h filename is given.~€Noneyj?Available output languages.BŽDefault output filname is used, when there is no explicit output file path, or it is "-" (stdout). Default module name is consistent with it.C7Write a Haskell module to an output file, or stdout if h filename is given.DRun module in a given language.?@ABCD?@ACDB?@A  !"#$%&'())*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^Q X _ ` a b c d e f Y g h Z [ i i j k l mnop q X _ ` r s t c d e f g h Z [ ^ Q i i j k u v wx*json-autotype-1.1.2-CeSfnUXbse2KSFjyJZrRH4Data.Aeson.AutoType.AlternativeData.Aeson.AutoType.FormatData.Aeson.AutoType.PrettyData.Aeson.AutoType.TypeData.Aeson.AutoType.ExtractData.Aeson.AutoType.CodeGenData.Aeson.AutoType.UtilData.Aeson.AutoType.Split)Data.Aeson.AutoType.CodeGen.HaskellFormat#Data.Aeson.AutoType.CodeGen.Haskell%Data.Aeson.AutoType.CodeGen.ElmFormatData.Aeson.AutoType.CodeGen.Elm:|:AltLeftAltRighttoEither fromEitheralt $fFromJSON:|: $fToJSON:|: $fShow:|:$fEq:|:$fOrd:|: capitalize uncapitalize $fOutText $fOutHashMap$fOutSet $fOutValue $fOutVector$fOutScientificTypeTNullTBoolTNumTStringTUnionTLabelTObjTArrayDictunDictwithDictkeys emptyTypegettypeSize isNullable emptySetLikes typeAsSetisObjectisSimpleisArray hasNonTopTObjhasTObj$fUniplateType $fOutType $fOrdDict $fShowDict $fOutDict $fShowType$fEqType $fOrdType $fDataType $fGenericType$fEqDict $fDataDict $fGenericDict valueSize valueTypeSize valueDepth extractType typeCheck unifyTypesLangHaskellElmdefaultOutputFilename writeModule runModuleMapisUnion unifyUnionunion simplifyUnionwithFileOrHandlewithFileOrDefaultHandle MappedKeysplitTypeByLabeltoposort allLabelsunificationCandidatesunifyCandidates remapLabels wrapAliaswrapDecl makeFromJSON makeToJSONgenericIdentifiernewAliasnormalizeFieldName formatTypedisplaySplitTypesnormalizeTypeName DeclState_decls_counterdefaultHaskellFilenamewriteHaskellModulebaseGHC.Num-runHaskellModule makeDecoder makeEncoderjoinWithwriteElmModuledefaultElmFilename runElmModule