X?Z      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXY E(c) 2011, 2012 Bryan O'Sullivan (c) 2011 MailRank, Inc.Apache%Bryan O'Sullivan <bos@serpentine.com> experimentalportableNone+BHM7Specifies how to encode constructors of a sum datatype.|A constructor will be encoded to a 2-element array where the first element is the tag of the constructor (modified by the  B) and the second element the encoded contents of the constructor.rA constructor will be encoded to an object with a single field named after the constructor tag (modified by the  9) which maps to the encoded contents of the constructor.9A constructor will be encoded to an object with a field 7 which specifies the constructor tag (modified by the  ). If the constructor is a record the encoded record fields will be unpacked into this object. So make sure that your record doesn't have a field with the same label as the . Otherwise the tag gets overwritten by the encoded value of that field! If the constructor is not a record the encoded constructor contents will be stored under the  field.EOptions that specify how to encode/decode your datatype to/from JSON.YFunction applied to field labels. Handy for removing common record prefixes for example. ]Function applied to constructor tags which could be handy for lower-casing them for example. If Z& the constructors of a datatype, with allW nullary constructors, will be encoded to just a string with the constructor tag. If [& the encoding will always follow the  . If Z record fields with a \6 value will be omitted from the resulting object. If [< the resulting object will include those fields mapping to null. 7Specifies how to encode constructors of a sum datatype. A key/value pair for an .A newtype wrapper for ]P that uses the same non-standard serialization format as Microsoft .NET, whose System.DateTimeD type is by default serialized to JSON as in the following example: /Date(1302547608878)/8The number represents milliseconds since the Unix epoch.,A JSON value represented as a Haskell value.A JSON "array" (sequence). A JSON "object" (key/value map).!A continuation-based parser type.^Success continuation._Failure continuation.The result of running a .The empty array.`Determines if the  is an empty . Note that:  isEmptyArray .The empty object. Run a .!Run a  with a a result type."Run a  with an b result type.# Create a  from a list of name/value  Ks. If duplicate keys arise, earlier keys and their associated values win.$ If the inner Parser failed, modify the failure message using the provided function. This allows you to create more descriptive error messages. For example: pparseJSON (Object o) = modifyFailure ("Parsing of the Foo value failed: " ++) (Foo <$> o .: "someField") Since 0.6.2.0%Default encoding :  {  = id ,   = id ,   = True ,   = False ,   = & } &Default   options: defaultTaggedObject =  { & = "tag" , & = "contents" } 'Converts from CamelCase to another lower case, interspersing the character between all capital letters and their previous entries, except those capital letters that appear together, like API.(For use by Aeson template haskell calls. .camelTo '_' 'CamelCaseAPI' == "camel_case_api"? cd^_ef` !"#$%&'ghijklmnopqrstuv) ` !"#$%&'( cd^_ef` !"#$%&'ghijklmnopqrstuvD(c) 2011-2013 Bryan O'Sullivan (c) 2011 MailRank, Inc.Apache%Bryan O'Sullivan <bos@serpentine.com> experimentalportableNone13(IA type that can be converted from JSON, with the possibility of failure.When writing an instance, use empty, mzero, or w( to make a conversion fail, e.g. if an ? is missing a required key, or the value is of the wrong type.An example type and instance: {-# LANGUAGE OverloadedStrings #-} data Coord = Coord { x :: Double, y :: Double } instance FromJSON Coord where parseJSON ( v) = Coord <$> v .: "x" <*> v .: "y" -- A non-$ value is of the wrong type, so use mzero# to fail. parseJSON _ = mzero Note the use of the OverloadedStrings# language extension which enables Text) values to be written as string literals.!Instead of manually writing your (; instance, there are three options to do it automatically: Data.Aeson.TH provides template-haskell functions which will derive an instance at compile-time. The generated instance is optimized for your type so will probably be more efficient than the following two options:Data.Aeson.Generic provides a generic fromJSON; function that parses to any type which is an instance of Data.%If your compiler has support for the  DeriveGeneric and DefaultSignatures language extensions,  parseJSON- will have a default generic implementation.To use this, simply add a  deriving x( clause to your datatype and declare a FromJSON= instance for your datatype without giving a definition for  parseJSON.;For example the previous example can be simplified to just: {-# LANGUAGE DeriveGeneric #-} import GHC.Generics data Coord = Coord { x :: Double, y :: Double } deriving Generic instance FromJSON Coord Note that, instead of using DefaultSignaturesA, it's also possible to parameterize the generic decoding using 1$ applied to your encoding/decoding : .instance FromJSON Coord where parseJSON = 1 % *%A type that can be converted to JSON.An example type and instance:#@{-# LANGUAGE OverloadedStrings #-}/data Coord = Coord { x :: Double, y :: Double }4instance ToJSON Coord where toJSON (Coord x y) = # ["x" .= x, "y" .= y] @Note the use of the OverloadedStrings# language extension which enables Text) values to be written as string literals.!Instead of manually writing your *; instance, there are three options to do it automatically: Data.Aeson.TH provides template-haskell functions which will derive an instance at compile-time. The generated instance is optimized for your type so will probably be more efficient than the following two options:Data.Aeson.Generic provides a generic toJSON9 function that accepts any type which is an instance of Data.%If your compiler has support for the  DeriveGeneric and DefaultSignatures+ language extensions (GHC 7.2 and newer), toJSON, will have a default generic implementation.'To use the latter option, simply add a  deriving x( clause to your datatype and declare a ToJSON= instance for your datatype without giving a definition for toJSON.;For example the previous example can be simplified to just:@{-# LANGUAGE DeriveGeneric #-}import GHC.Generics@data Coord = Coord { x :: Double, y :: Double } deriving Genericinstance ToJSON Coord @Note that, instead of using DefaultSignaturesA, it's also possible to parameterize the generic encoding using 0$ applied to your encoding/decoding : )instance ToJSON Coord where toJSON = 0 % ,'Class of generic representation types (y") that can be converted from JSON.-This method (applied to %4) is used as the default generic implementation of )..'Class of generic representation types (y ) that can be converted to JSON./This method (applied to %4) is used as the default generic implementation of +.0?A configurable generic JSON encoder. This function applied to % is used as the default for +" when the type is an instance of x.1?A configurable generic JSON decoder. This function applied to % is used as the default for )" when the type is an instance of x. ()*+,-./01 ()*+,-./01()*+,-./01 E(c) 2011, 2012 Bryan O'Sullivan (c) 2011 MailRank, Inc.Apache%Bryan O'Sullivan <bos@serpentine.com> experimentalportable Safe-Inferredz Transform a { into a | while transforming the keys.} Transform a { into a | while transforming the keys.~#Transform the keys and values of a |.Transform the keys of a |.z}~z}~z}~ D(c) 2011-2013 Bryan O'Sullivan (c) 2011 MailRank, Inc.Apache%Bryan O'Sullivan <bos@serpentine.com> experimentalportableNone  +1234B2withObject expected f value applies f to the  when value is an Object and fails using = expected otherwise.3withText expected f value applies f to the  when value is a String and fails using = expected otherwise.4withArray expected f value applies f to the  when value is an Array and fails using = expected otherwise.5withNumber expected f value applies f to the  when value is a . and fails using = expected otherwise.6withScientific expected f value applies f to the  number when value is a . and fails using = expected otherwise.7withBool expected f value applies f to the  when value is a Bool and fails using = expected otherwise.8 Construct a   from a key and a value.9=Convert a value from JSON, failing if the types do not match.:7Retrieve the value associated with the given key of an . The result is Q if the key is not present or the value cannot be converted to the desired type.2This accessor is appropriate if the key and value mustg be present in an object for it to be valid. If the key and value are optional, use '(.:?)' instead.;7Retrieve the value associated with the given key of an . The result is \ if the key is not present, or 7 if the value cannot be converted to the desired type.This accessor is most useful if the key and value can be absent from an object without affecting its validity. If the key and value are mandatory, use '(.:)' instead.<#Helper for use in combination with ;< to provide default values for optional JSON object fields.This combinator is most useful if the key and value can be absent from an object without affecting its validity and we know a default value to assign in that case. If the key and value are mandatory, use '(.:)' instead.Example usage:  v1 <- o ;1 "opt_field_with_dfl" .!= "default_val" v2 <- o : "mandatory_field" v3 <- o ; "opt_field2" =@Fail parsing due to a type mismatch, with a descriptive message.WARNING: Only parse Integers from trusted input since an attacker could easily fill up the memory of the target system by specifying a scientific number with a big exponent like  1e1000000000.WARNING: Only parse fixed-precision numbers from trusted input since an attacker could easily fill up the memory of the target system by specifying a scientific number with a big exponent like  1e1000000000.23456789:;<=-The name of the type you are trying to parse.The actual value encountered.     ()*+,-./0123456789:;<=23456789:;<=      i(c) 2012 Bryan O'Sullivan (c) 2011, 2012 Bas Van Dijk (c) 2011 MailRank, Inc.Apache%Bryan O'Sullivan <bos@serpentine.com> experimentalportableNone 123468<=FJKM2Get the name of the constructor of a sum datatype.} !"#$%&'()*+,-./01234indexlength56789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~d !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~E(c) 2011, 2012 Bryan O'Sullivan (c) 2011 MailRank, Inc.Apache%Bryan O'Sullivan <bos@serpentine.com> experimentalportableNone>  !"#$%&'()*+,-./0123456789:;<=> =()9 "!*+$,-./012345678:;<# '%& O(c) 2011 MailRank, Inc. (c) 2013 Simon Meier <iridcode@gmail.com>Apache%Bryan O'Sullivan <bos@serpentine.com> experimentalportableNone>-Efficiently serialize a JSON value as a lazy .?$Encode a JSON value to a ByteString [. Use this function if you must prepend or append further bytes to the encoded JSON value.@This function is an alias for ?. >?@>?@ >?@ E(c) 2011, 2012 Bryan O'Sullivan (c) 2011 MailRank, Inc.Apache%Bryan O'Sullivan <bos@serpentine.com> experimentalportableNoneAParse a top-level JSON value.The conversion of a parsed value to a Haskell value is deferred until the Haskell value is needed. This may improve performance if only a subset of the results of conversions are needed, but at a cost in thunk allocation.This function is an alias for Cr. In aeson 0.8 and earlier, it parsed only object or array types, in conformance with the now-obsolete RFC 4627.BParse a top-level JSON value.This is a strict version of A which avoids building up thunks during parsing; it performs all conversions immediately. Prefer this version if most of the JSON data needs to be accessed.This function is an alias for Dr. In aeson 0.8 and earlier, it parsed only object or array types, in conformance with the now-obsolete RFC 4627.C*Parse any JSON value. You should usually Ah in preference to this function, as this function relaxes the object-or-array requirement of RFC 4627.In particular, be careful in using this function if you think your code might interoperate with Javascript. A nave Javascript library that parses JSON data using eval is vulnerable to attack unless the encoded data represents an object or an array. JSON implementations in other languages conform to that same restriction to preserve interoperability and security.DStrict version of C . See also B.EParse a quoted JSON string.'Parse a string without a leading quote.[Parse a top-level JSON value followed by optional whitespace and end-of-input. See also: A.[Parse a top-level JSON value followed by optional whitespace and end-of-input. See also: B.ABCDE ABCDEABCDE?(c) 2012 Bryan O'Sullivan (c) 2011 MailRank, Inc.Apache%Bryan O'Sullivan <bos@serpentine.com> experimentalportableNoneABCDEACEBD?(c) 2012 Bryan O'Sullivan (c) 2011 MailRank, Inc.Apache%Bryan O'Sullivan <bos@serpentine.com> experimentalportableNoneFEncode a JSON  to a  Data.Text >, which can be embedded efficiently in a text-based protocol.FG>?@FG>?@FGFG{(c) 2011, 2012, 2013 Bryan O'Sullivan (c) 2011 MailRank, Inc. (c) 2008, 2009 Lennart AugustssonBSD3%Bryan O'Sullivan <bos@serpentine.com> DEPRECATEDportableNoneFHM The type constructor for readers The type constructor for queriesH-Efficiently serialize a JSON value as a lazy .I1Efficiently deserialize a JSON value from a lazy 5. If this fails due to incomplete or invalid input, \ is returned.?This function parses immediately, but defers conversion. See A for details.J1Efficiently deserialize a JSON value from a lazy 5. If this fails due to incomplete or invalid input, \ is returned.@This function parses and performs conversion immediately. See B for details.Flexible type extension/Type extension of queries for type constructors/Type extension of readers for type constructorsHIJKLHIJKLIJHLKHIJKLE(c) 2011, 2012 Bryan O'Sullivan (c) 2011 MailRank, Inc.Apache%Bryan O'Sullivan <bos@serpentine.com> experimentalportableNoneM1Efficiently deserialize a JSON value from a lazy 5. If this fails due to incomplete or invalid input, \ is returned._The input must consist solely of a JSON document, with no trailing data except for whitespace.?This function parses immediately, but defers conversion. See A for details.N3Efficiently deserialize a JSON value from a strict 5. If this fails due to incomplete or invalid input, \ is returned._The input must consist solely of a JSON document, with no trailing data except for whitespace.?This function parses immediately, but defers conversion. See A for details.O1Efficiently deserialize a JSON value from a lazy 5. If this fails due to incomplete or invalid input, \ is returned.The input must consist solely of a JSON document, with no trailing data except for whitespace. This restriction is necessary to ensure that if data is being lazily read from a file handle, the file handle will be closed in a timely fashion once the document has been parsed.@This function parses and performs conversion immediately. See B for details.P1Efficiently deserialize a JSON value from a lazy 5. If this fails due to incomplete or invalid input, \ is returned._The input must consist solely of a JSON document, with no trailing data except for whitespace.@This function parses and performs conversion immediately. See B for details.QLike M2 but returns an error message when decoding fails.RLike N2 but returns an error message when decoding fails.SLike O2 but returns an error message when decoding fails.TLike P2 but returns an error message when decoding fails.MNOPQRST0#()*+,-./0123456789:;<>ABMNOPQRST0MOQS>NPRT()9*+,-./012345678:;<#ABMNOPQRSTD(c) 2011, 2012 Bryan O'Sullivan (c) 2011 MailRank, Inc.Apache experimentalportableNone24UGenerates both * and (0 instance declarations for the given data type.EThis is a convienience function which is equivalent to calling both V and X.V Generates a *. instance declaration for the given data type.WHGenerates a lambda expression which encodes the given data type as JSON.Helper function used by both V and Wz. Generates code to generate the JSON encoding of a number of constructors. All constructors must be from the same type.If constructor is nullary.EGenerates code to generate the JSON encoding of a single constructor.X Generates a (. instance declaration for the given data type.YUGenerates a lambda expression which parses the JSON encoding of the given data type.Helper function used by both X and Yw. Generates code to parse the JSON encoding of a number of constructors. All constructors must be from the same type.BGenerates code to parse the JSON encoding of a single constructor.CGenerates code to parse the JSON encoding of an n-ary constructor."Boilerplate for top level splices. The given  must be from a type constructor. Furthermore, the type constructor must be either a data type or a newtype. Any other value will result in an exception.%Extracts the name from a constructor..Extracts the name from a type variable binder.<Makes a string literal expression from a constructor's name.>Creates a string literal expression from a record field label.The name of the outermost  constructor.,UEncoding options.'Name of the type for which to generate * and ( instances.VEncoding options.)Name of the type for which to generate a * instance declaration.WEncoding options.Name of the type to encode.Encoding options.8Constructors for which to generate JSON generating code.XEncoding options.)Name of the type for which to generate a ( instance declaration.YEncoding options.Name of the encoded type.2Name of the type to which the constructors belong.Encoding options5Constructors for which to generate JSON parsing code.2Name of the type to which the constructor belongs.Encoding options.4Constructor for which to generate JSON parsing code.0Left (valFieldName, objName) or Right valName2Name of the type to which the constructor belongs.structor name.structor arity.Function that generates the actual code. Will be applied to the type variable binders and constructors extracted from the given .Resulting value in the  uasi monad.Encoding options %&UVWXY %&UVXWY+UVWXY !"#"#$%&'()*+,-./0123456789:; < = > ? @ A B C D E F G H I J K L M N OPQHRS5CRTSUVWXYZ[\]^_`a_`bcdefgh&ijcdkclm$nopqrstuvwxyz{|}~ccc   _`c                                  ! " # $ % % & ' ' ( ) b a * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A  B C D E F G H I J  K L M N  O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                -                        3J/L3 aeson-0.9.0.1Data.Aeson.TypesData.Aeson.EncodeData.Aeson.ParserData.Aeson.Generic Data.Aeson Data.Aeson.THData.Aeson.Types.InternalData.Aeson.Types.ClassData.Aeson.FunctionsData.Aeson.Types.InstancesData.Aeson.Types.GenericData.Aeson.Encode.ByteStringData.Aeson.Parser.Internal SumEncoding TwoElemArrayObjectWithSingleField TaggedObject tagFieldNamecontentsFieldNameOptionsfieldLabelModifierconstructorTagModifierallNullaryToStringTagomitNothingFields sumEncodingPair DotNetTimefromDotNetTimeValueNullBoolNumberStringArrayObjectParserResultSuccessError emptyArray emptyObjectparse parseMaybe parseEitherobject modifyFailuredefaultOptionsdefaultTaggedObjectcamelToFromJSON parseJSONToJSONtoJSON GFromJSON gParseJSONGToJSONgToJSON genericToJSONgenericParseJSON withObjectwithText withArray withNumberwithScientificwithBool.=fromJSON.:.:?.!= typeMismatchencodeencodeToBuilderencodeToByteStringBuilderjsonjson'valuevalue'jstringencodeToTextBuilder fromValuedecodedecode' decodeStrict decodeStrict' eitherDecodeeitherDecodeStrict eitherDecode'eitherDecodeStrict' deriveJSON deriveToJSONmkToJSONderiveFromJSON mkParseJSONghc-prim GHC.TypesTrueFalsebase Data.MaybeNothing time-1.4.2Data.Time.Clock.UTCUTCTimeFailure isEmptyArrayMaybe Data.EitherEither runParserapP hashValue$fHashableValue$fIsStringValue $fNFDataValue$fMonoidParser$fMonadPlusParser$fAlternativeParser$fApplicativeParser$fFunctorParser $fMonadParser$fMonoidResult$fAlternativeResult$fMonadPlusResult$fApplicativeResult $fMonadResult$fFunctorResult$fNFDataResultGHC.Basefail GHC.GenericsGenericRep mapHashKeyValcontainers-0.5.5.1 Data.Map.BaseMapunordered-containers-0.2.5.1Data.HashMap.BaseHashMap hashMapKey mapKeyValmapKey text-1.2.1.0Data.Text.InternalTextattoparsec-0.13.0.0Data.Attoparsec.Numberscientific-0.3.3.8Data.Scientific ScientificControl.Applicativeempty$fFromJSONInteger$fFromJSONFixedleftright vectorToJSONvectorParseJSON formatMillisformatSubsecondsrealFloatToJSONscientificToNumberparseRealFloat parseIntegral$fFromJSONLast $fToJSONLast$fFromJSONFirst $fToJSONFirst$fFromJSONDual $fToJSONDual$fFromJSON(,,,,,,,,,,,,,,)$fToJSON(,,,,,,,,,,,,,,)$fFromJSON(,,,,,,,,,,,,,)$fToJSON(,,,,,,,,,,,,,)$fFromJSON(,,,,,,,,,,,,)$fToJSON(,,,,,,,,,,,,)$fFromJSON(,,,,,,,,,,,)$fToJSON(,,,,,,,,,,,)$fFromJSON(,,,,,,,,,,)$fToJSON(,,,,,,,,,,)$fFromJSON(,,,,,,,,,)$fToJSON(,,,,,,,,,)$fFromJSON(,,,,,,,,)$fToJSON(,,,,,,,,)$fFromJSON(,,,,,,,)$fToJSON(,,,,,,,)$fFromJSON(,,,,,,)$fToJSON(,,,,,,)$fFromJSON(,,,,,)$fToJSON(,,,,,)$fFromJSON(,,,,)$fToJSON(,,,,)$fFromJSON(,,,) $fToJSON(,,,)$fFromJSON(,,) $fToJSON(,,) $fFromJSON(,) $fToJSON(,)$fFromJSONUTCTime$fToJSONUTCTime$fFromJSONZonedTime$fToJSONZonedTime$fFromJSONDotNetTime$fToJSONDotNetTime$fFromJSONValue $fToJSONValue$fFromJSONTree $fToJSONTree$fFromJSONHashMap$fToJSONHashMap$fFromJSONHashMap0$fToJSONHashMap0$fFromJSONHashMap1$fToJSONHashMap1 $fFromJSONMap $fToJSONMap$fFromJSONMap0 $fToJSONMap0$fFromJSONMap1 $fToJSONMap1$fFromJSONIntMap$fToJSONIntMap$fFromJSONIntSet$fToJSONIntSet$fFromJSONHashSet$fToJSONHashSet $fFromJSONSet $fToJSONSet$fFromJSONVector$fToJSONVector$fFromJSONVector0$fToJSONVector0$fFromJSONVector1$fToJSONVector1$fFromJSONVector2$fToJSONVector2 $fFromJSONSeq $fToJSONSeq $fFromJSON[] $fToJSON[]$fFromJSONText $fToJSONText$fFromJSONText0 $fToJSONText0$fFromJSONWord64$fToJSONWord64$fFromJSONWord32$fToJSONWord32$fFromJSONWord16$fToJSONWord16$fFromJSONWord8 $fToJSONWord8$fFromJSONWord $fToJSONWord$fFromJSONInt64 $fToJSONInt64$fFromJSONInt32 $fToJSONInt32$fFromJSONInt16 $fToJSONInt16$fFromJSONInt8 $fToJSONInt8$fToJSONInteger $fFromJSONInt $fToJSONInt $fToJSONFixed$fFromJSONRatio $fToJSONRatio$fFromJSONFloat $fToJSONFloat$fFromJSONNumber$fToJSONNumber$fFromJSONDouble$fToJSONDouble$fFromJSONScientific$fToJSONScientific$fFromJSONChar $fToJSONChar $fFromJSON[]0 $fToJSON[]0 $fFromJSON() $fToJSON()$fFromJSONBool $fToJSONBool$fFromJSONEither$fToJSONEither$fFromJSONMaybe $fToJSONMaybe$fFromJSONIdentity$fToJSONIdentity GetConNameTagged2 unTagged2TaggedunTaggedAnd AllNullaryIsRecordFromPair parsePair FromProduct parseProduct ProductSize productSize FromRecord parseRecord ConsFromJSON'consParseJSON' ConsFromJSON consParseJSONFromTaggedObject''parseFromTaggedObject''FromTaggedObject'parseFromTaggedObject'FromTaggedObjectparseFromTaggedObject SumFromStringparseSumFromStringParseSumparseSumobjectWithSingleField WriteProduct writeProduct RecordToPairs recordToPairs ConsToJSON' consToJSON' ConsToJSON consToJSON twoElemArray getConName TaggedObject' taggedObject' taggedObject SumToJSON sumToJSONnonAllNullarySumToJSON fieldToPairparseAllNullarySumparseNonAllNullarySumnotFound$fAndTrueFalseFalse$fAndFalseTrueFalse$fAndFalseFalseFalse$fAndTrueTrueTrue$fAllNullaryU1True$fAllNullaryK1False$fAllNullary:*:False$fAllNullaryM1allNullary$fAllNullary:+:allNullary$fIsRecordU1False$fIsRecordK1True$fIsRecordM1isRecord$fIsRecordM1False$fIsRecord:*:isRecord $fFromPairM1 $fFromPair:+:$fFromProductM1$fFromProduct:*:$fProductSizeM1$fProductSize:*:$fFromRecordM1$fFromRecordM10$fFromRecord:*:$fConsFromJSON'fFalse$fConsFromJSON'fTrue$fConsFromJSONf$fFromTaggedObject''fFalse$fFromTaggedObject''fTrue$fFromTaggedObject'f$fFromTaggedObjectM1$fFromTaggedObject:+:$fSumFromStringM1$fSumFromString:+:$fParseSum:+:False$fParseSum:+:True$fGFromJSON:+:$fGFromJSON:*: $fGFromJSONM1 $fGFromJSONU1 $fGFromJSONK1$fGFromJSONM10$fObjectWithSingleFieldM1$fObjectWithSingleField:+:$fWriteProducta$fWriteProduct:*:$fRecordToPairsM1$fRecordToPairsM10$fRecordToPairs:*:$fConsToJSON'fFalse$fConsToJSON'fTrue $fConsToJSONf$fTwoElemArrayM1$fTwoElemArray:+:$fGetConNameM1$fGetConName:+:$fTaggedObject'fFalse$fTaggedObject'fTrue$fTaggedObjectM1$fTaggedObject:+:$fSumToJSONfFalse$fSumToJSONfTrue $fGToJSON:+: $fGToJSON:*: $fGToJSONM1 $fGToJSONU1 $fGToJSONK1 $fGToJSONM10bytestring-0.10.4.0Data.ByteString.Lazy.Internal ByteString Data.ByteString.Builder.InternalBuilder<>nullboolarraystringnumberascii2ascii4ascii5jstring_jsonEOFjsonEOF'object_object_' objectValuesarray_array_'commaSeparated arrayValuesunescapehexQuad decodeWithdecodeStrictWitheitherDecodeWitheitherDecodeStrictWithword8copycharUtf8Data.Text.Internal.BuilderfromScientificRQext2'ext2Q'ext2R'unRunQFTtoJSON_genericparseJSON_genericmodFailmodErrorData.ByteString.Internal isNullary encodeArgs consFromJSON parseArgswithTypetemplate-haskellLanguage.Haskell.TH.SyntaxNametvbName conNameExp fieldLabelExp valueConName LookupField lookupFieldconStrconTxt conStringE encodeSumparseNullaryMatchesparseUnaryMatches getValFieldCon matchFailedparseTypeMismatchunknownFieldFail noArrayFail noObjectFailfirstElemNoStringFailwrongPairCountFail noStringFail noMatchFail not2ElemArrayconNotFoundFail2ElemArray conNotFoundFailObjectSingleFieldconNotFoundFailTaggedObjectparseTypeMismatch'applyCon$fLookupFieldMaybe$fLookupFielda