!U(>k      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc d e f g h i j (c) Ben Gamari 2017-2018BSD3-style (see LICENSE.txt)duncan@community.haskell.org experimentalnon-portable (GHC extensions)NoneDQVkcborgmkByteArray n xs forms a l with contents xs . Note that n must be the precise length of xs.mcborg'A conservative estimate of pinned-ness.ncborgoffsetcborglengthcborgarrayonpqkmr(c) Ben Gamari 2017-2018BSD3-style (see LICENSE.txt)duncan@community.haskell.org experimentalnon-portable (GHC extensions)NoneDFT cborg"Note that this may require a copy.   (c) Ben Gamari 2017-2018BSD3-style (see LICENSE.txt)duncan@community.haskell.org experimentalnon-portable (GHC extensions)None DFQTV  (c) Duncan Coutts 2015-2017BSD3-style (see LICENSE.txt)duncan@community.haskell.org experimentalnon-portable (GHC extensions)NoneDQVKcborgGThe type of a token, which a decoder can ask for at an arbitrary time.8cborglAn action, representing a step for a decoder to taken and a continuation to invoke with the expected value.ocborg_A continuation-based decoder, used for decoding values that were previously encoded using the Codec.CBOR.Encoding module. As o has a s! instance, you can easily write o7s monadically for building your deserialisation logic.pcborgLift an ST action into a Decoder\. Useful for, e.g., leveraging in-place mutation to efficiently build a deserialised value.qcborgGiven a o, give us the 8rcborg Decode a t.scborg Decode a u.tcborg Decode a v.ucborg Decode a w.vcborg Decode a x.wcborgDecode a negative t.xcborgDecode a negative x.ycborg Decode an y.zcborg Decode an z.{cborg Decode an {.|cborg Decode an |.}cborg Decode an }.~cborg%Decode canonical representation of a t.cborg%Decode canonical representation of a u.cborg%Decode canonical representation of a v.cborg%Decode canonical representation of a w.cborg%Decode canonical representation of a x.cborg.Decode canonical representation of a negative t.cborg.Decode canonical representation of a negative x.cborg&Decode canonical representation of an y.cborg&Decode canonical representation of an z.cborg&Decode canonical representation of an {.cborg&Decode canonical representation of an |.cborg&Decode canonical representation of an }.cborg Decode an ~.cborg Decode a .cborg Decode a .cborgDecode a string of bytes as a .cborg:Decode canonical representation of a string of bytes as a .cborgKDecode a token marking the beginning of an indefinite length set of bytes.cborgDecode a string of bytes as a .Also note that this will eagerly copy the content out of the input to ensure that the input does not leak in the event that the  is live but not forced.cborg:Decode canonical representation of a string of bytes as a .Also note that this will eagerly copy the content out of the input to ensure that the input does not leak in the event that the  is live but not forced.cborg&Decode a textual string as a piece of .cborgBDecode canonical representation of a textual string as a piece of .cborgEDecode a token marking the beginning of an indefinite length string.cborg)Decode a textual string as UTF-8 encoded A. Note that the result is not validated to be well-formed UTF-8.Also note that this will eagerly copy the content out of the input to ensure that the input does not leak in the event that the  is live but not forced.cborgFDecode canonical representation of a textual string as UTF-8 encoded @. Note that the result is not validated to be well-formed UTF-8.Also note that this will eagerly copy the content out of the input to ensure that the input does not leak in the event that the  is live but not forced.cborgDecode the length of a list.cborg8Decode canonical representation of the length of a list.cborgEDecode a token marking the beginning of a list of indefinite length.cborgDecode the length of a map.cborg7Decode canonical representation of the length of a map.cborgDDecode a token marking the beginning of a map of indefinite length.cborg+Decode an arbitrary tag and return it as a t.cborg2Decode an arbitrary 64-bit tag and return it as a x.cborgHDecode canonical representation of an arbitrary tag and return it as a t.cborgODecode canonical representation of an arbitrary 64-bit tag and return it as a x.cborgDecode a bool.cborg0Decode a nullary value, and return a unit value.cborg Decode a simple CBOR value and give back a u,. You probably don't ever need to use this.cborg&Decode canonical representation of an ~.cborg4Decode canonical representation of a half-precision .cborg%Decode canonical representation of a .cborg%Decode canonical representation of a .cborg%Decode canonical representation of a simple CBOR value and give back a u+. You probably don't ever need to use this.cborgAttempt to decode a word with r7, and ensure the word is exactly as expected, or fail.cborg&Attempt to decode a list length using :, and ensure it is exactly the specified length, or fail.cborg:Attempt to decode canonical representation of a word with ~7, and ensure the word is exactly as expected, or fail.cborgCAttempt to decode canonical representation of a list length using :, and ensure it is exactly the specified length, or fail.cborg]Attempt to decode a token for the length of a finite, known list, or an indefinite list. If D is returned, then an indefinite length list occurs afterwords. If  x% is returned, then a list of length x is encoded.cborg[Attempt to decode a token for the length of a finite, known map, or an indefinite map. If C is returned, then an indefinite length map occurs afterwords. If  x$ is returned, then a map of length x is encoded.cborgAttempt to decode a Break, token, and if that was successful, return .. If the token was of any other type, return .cborg?Peek at the current token we're about to decode, and return a  specifying what it is.cborgTPeek and return the length of the current buffer that we're running our decoder on.cborg%Decode an indefinite sequence length.cborgDecode a sequence length.cborgcborgcborgcborgcborg"Expected value of the decoded wordcborg"Expected value of the decoded word !"#$%&'()*+,-./012345678mn9:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklopqrstuvwxyz{|}~o8mn9:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklpqrstuvwxyz{|} !"#$%&'()*+,-./01234567~(c) Duncan Coutts 2015-2017BSD3-style (see LICENSE.txt)duncan@community.haskell.org experimentalnon-portable (GHC extensions)None#cborgA flattened representation of a term, which is independent of any underlying binary representation, but which we later serialise into CBOR format.cborg@An intermediate form used during serialisation, specified as a K. It supports efficient concatenation, and is equivalent to a specialised     type.It is used for the stage in serialisation where we flatten out the Haskell data structure but it is independent of any specific external binary or text format.&Traditionally, to build any arbitrary c value, you specify larger structures from smaller ones and append the small ones together using  .cborg Encode a t in a flattened format.cborg Encode a u in a flattened format.cborg Encode a v in a flattened format.cborg Encode a w in a flattened format.cborg Encode a x in a flattened format.cborg Encode an y in a flattened format.cborg Encode an z in a flattened format.cborg Encode an { in a flattened format.cborg Encode an | in a flattened format.cborg Encode an @} in a flattened format.cborgEncode an arbitrarily large @~ in a flattened format.cborgEncode an arbitrary strict  in a flattened format.cborg*Encode a bytestring in a flattened format.cborgEncode a token specifying the beginning of a string of bytes of indefinite length. In reality, this specifies a stream of many occurrences of , each specifying a single chunk of the overall string. After all the bytes desired have been encoded, you should follow it with a break token (see ).cborg Encode a  in a flattened format.cborg-Encode the beginning of an indefinite string.cborgnEncode a UTF-8 string in a flattened format. Note that the contents is not validated to be well-formed UTF-8.cborgcEncode the length of a list, used to indicate that the following tokens represent the list values.cborgEncode a token specifying that this is the beginning of an indefinite list of unknown size. Tokens representing the list are expected afterwords, followed by a break token (see ) when the list has ended.cborgaEncode the length of a Map, used to indicate that the following tokens represent the map values.cborgEncode a token specifying that this is the beginning of an indefinite map of unknown size. Tokens representing the map are expected afterwords, followed by a break token (see ) when the map has ended.cborg[Encode a 'break', used to specify the end of indefinite length objects like maps or lists.cborgEncode an arbitrary t tag.cborgEncode an arbitrary 64-bit x tag.cborg Encode a .cborg Encode an Undef value.cborg Encode a Null value.cborglEncode a 'simple' CBOR token that can be represented with an 8-bit word. You probably don't ever need this.cborgEncode a small 16-bit  in a flattened format.cborgEncode a full precision  in a flattened format.cborg Encode a  in a flattened format.cborgcborg<<(c) Duncan Coutts 2015-2017BSD3-style (see LICENSE.txt)duncan@community.haskell.org experimentalnon-portable (GHC extensions)NoneDQVR cborgA concrete encoding of ) values, one which mirrors the original  type closely.cborgA "flat" representation of an 5 value, useful for round-tripping and writing tests.cborgConvert an arbitrary  into a .cborgFA data type used for tracking the position we're at as we traverse a  and make sure it's valid.cborgGiven a o , decode a 2 back into an ordinary value, or return an error.cborgMap a  to the underlying CBOR cborg Ensure a = is internally consistent and was created in a valid manner.cborgValidate an arbitrary  at an arbitrary location.cborg Do a careful check to ensure an y is in the range of a w.cborg The input .cborgThe resulting .cborgA o for a serialised value.cborgThe serialised .cborg$The deserialised value, or an error.cborg The input cborg if valid,  otherwise.          (c) Duncan Coutts 2015-2017BSD3-style (see LICENSE.txt)duncan@community.haskell.org experimentalnon-portable (GHC extensions)NoneDV~cborg;An efficient, mutable counter. Designed to be used inside A or other primitive monads, hence it carries an abstract rank-2 s type parameter.cborg Grab a 8-bit t given a  to some address.cborgGrab a 16-bit t given a  to some address.cborgGrab a 32-bit t given a  to some address.cborgGrab a 64-bit x given a  to some address.cborgTake the tail of a ^ (i.e. drop the first byte) and read the resulting byte(s) as an 8-bit word value. The input X MUST be at least 2 bytes long: one byte to drop from the front, and one to read as a t[ value. This is not checked, and failure to ensure this will result in undefined behavior.cborgTake the tail of a ^ (i.e. drop the first byte) and read the resulting byte(s) as a 16-bit word value. The input _ MUST be at least 3 bytes long: one byte to drop from the front, and two to read as a 16-bit t[ value. This is not checked, and failure to ensure this will result in undefined behavior. cborgTake the tail of a ^ (i.e. drop the first byte) and read the resulting byte(s) as a 32-bit word value. The input ` MUST be at least 5 bytes long: one byte to drop from the front, and four to read as a 32-bit t[ value. This is not checked, and failure to ensure this will result in undefined behavior.!cborgTake the tail of a ^ (i.e. drop the first byte) and read the resulting byte(s) as a 64-bit word value. The input a MUST be at least 9 bytes long: one byte to drop from the front, and eight to read as a 64-bit x[ value. This is not checked, and failure to ensure this will result in undefined behavior.cborgUnsafely take a  to a  and do unholy things with it."cborg Convert a v to a half-sized .#cborgConvert a half-sized  to a t.$cborgCast a w to a .%cborgCast a x to a .cborg)Cast an unboxed word to an unboxed float.cborg*Cast an unboxed word to an unboxed double./cborgCreate a negative ~ out of a raw .0cborg Create an ~ out of a raw .1cborg%Create a new counter with a starting y value.2cborgRead the current value of a .3cborgWrite a new value into the .4cborg Increment a  by one.5cborg Decrement a  by one.6cborgCopy a  and create a primitive l from it.7cborgCopy a l( at a certain offset and length into a .cborgCopy the data pointed to by a  into a @.cborgCopy a l into a  with a given offset and length.7cborgl to copy from.cborgOffset into the l to start with.cborgLength of the data to copy.cborg to buffer to copy from.cborg to copy into.cborgOffset to start copying from.cborgLength of the data to copy.cborgl to copy.cborgOffset into the l of where to start copying.cborgPointer to destination buffer.cborg7Length of the data to copy into the destination buffer. !"#$%&'()*+,-./01234567 !"#$%'()*+,-.&/01234567(c) Duncan Coutts 2015-2017BSD3-style (see LICENSE.txt)duncan@community.haskell.org experimentalnon-portable (GHC extensions)None 1;<=>?ADQV cborgNote that canonicity information is calculated lazily. This way we don't need to concern ourselves with two distinct paths, while according to benchmarks it doesn't affect performance in the non-canonical case.8cborgSimple alias for }&, used to make types more descriptive.9cborgAn Incremental decoder, used to represent the result of attempting to run a decoder over a given input, and return a value of type a.:cborgRThe decoder has consumed the available input and needs more to continue. Provide ! if more input is available and # otherwise, and you will get a new 9.;cborgThe decoder has successfully finished. Except for the output value you also get any unused input as well as the number of bytes consumed.<cborg8The decoder ran into an error. The decoder either used h or was not provided enough input. Contains any unconsumed input, the number of bytes consumed, and a =; exception describing the reason why the failure occurred.=cborg}An exception type that may be returned (by pure functions) or thrown (by IO actions) that fail to deserialise a given input.?cborgGiven a o and some - representing an encoded CBOR value, return k the decoded CBOR value or an error. In addition to the decoded value return any remaining input content.@cborgGiven a o and some - representing an encoded CBOR value, return  the decoded CBOR value or an error. In addition to the decoded value return any remaining input content and the number of bytes consumed.AcborgRun a o\ incrementally, returning a continuation representing the result of the incremental decode. 89<:;=>?@A ?@A=>9<:;8(c) Duncan Coutts 2015-2017BSD3-style (see LICENSE.txt)duncan@community.haskell.org experimentalnon-portable (GHC extensions)None#8KcborgA general CBOR term, which can be used to serialise or deserialise arbitrary CBOR terms for interoperability or debugging. This type is essentially a direct reflection of the CBOR abstract syntax tree as a Haskell data type.The K type also comes with a  Serialise" instance, so you can easily use decode :: o KX to directly decode any arbitrary CBOR value into Haskell with ease, and likewise with encode.]cborgEncode an arbitrary K into an  for later serialization.^cborg(Decode some arbitrary CBOR value into a K.KLMNOPQRSTUVWXYZ[\]^KLMNOPQRSTUVWXYZ[\]^(c) Duncan Coutts 2015-2017BSD3-style (see LICENSE.txt)duncan@community.haskell.org experimentalnon-portable (GHC extensions)None& (c) Duncan Coutts 2015-2017BSD3-style (see LICENSE.txt)duncan@community.haskell.org experimentalnon-portable (GHC extensions)None3DQV.ccborgTurn an  into a lazy  in CBOR binary format.dcborgTurn an  into a strict  in CBOR binary format.ecborgTurn an  into a   in CBOR binary format.ccborgThe  of a CBOR value.cborgThe encoded CBOR value.dcborgThe  of a CBOR value.cborgThe encoded value.ecborgThe  of a CBOR value.cborgThe encoded value as a .cdeecd (c) Duncan Coutts 2015-2017BSD3-style (see LICENSE.txt)duncan@community.haskell.org experimentalnon-portable (GHC extensions)None03DQV>fcborgPretty prints an  in an annotated, hexadecimal format that maps CBOR values to their types. The output format is similar to the format used on  http://cbor.me/.For example, with the term:  . f . " $ ( True , [1,2,3::Int] , (L [("Hello",True),("World",False)], "This is a long string which wraps") ) You get:  83 # list(3) f5 # bool(true) 9f # list(*) 01 # int(1) 02 # int(2) 03 # int(3) ff # break 82 # list(2) a2 # map(2) 65 48 65 6c 6c 6f # text("Hello") f5 # bool(true) 65 57 6f 72 6c 64 # text("World") f4 # bool(false) 78 21 54 68 69 73 20 69 73 20 61 20 6c 6f 6e 67 20 73 74 72 69 6e 67 20 77 68 69 63 68 20 77 72 61 70 73 # text("This is a long string which wraps") ff !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./01234567~}889:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\ ] ^  _ ` a b c def# g hijk l m nopqijrostosuosvoswijxoyzoy{oy|oy}~ijijopopijijopijooefopoo$cborg-0.2.1.0-ILVOAzlmRpz3rDdzHJ6pFICodec.CBOR.ByteArray.SlicedCodec.CBOR.ByteArrayCodec.CBOR.DecodingCodec.CBOR.EncodingCodec.CBOR.FlatTermCodec.CBOR.MagicCodec.CBOR.ReadCodec.CBOR.TermCodec.CBOR.WriteCodec.CBOR.PrettyCodec.CBOR.ByteArray.Internal Data.MonoidEndomconcat Codec.CBORencodeData.MapfromListSlicedByteArraySBAunSBAoffsetlengthfromShortByteStringfromByteString fromByteArraysizeofSlicedByteArray toByteString toBuilder$fOrdSlicedByteArray$fEqSlicedByteArray$fShowSlicedByteArray$fIsListSlicedByteArray$fIsStringSlicedByteArray ByteArrayBAunBAsizeofByteArraytoShortByteStringtoSliced$fIsListByteArray$fIsStringByteArray$fOrdByteArray $fEqByteArray$fShowByteArray TokenTypeTypeUInt TypeUInt64TypeNInt TypeNInt64 TypeInteger TypeFloat16 TypeFloat32 TypeFloat64 TypeBytesTypeBytesIndef TypeStringTypeStringIndef TypeListLen TypeListLen64TypeListLenIndef TypeMapLen TypeMapLen64TypeMapLenIndefTypeTag TypeTag64TypeBoolTypeNull TypeSimple TypeBreak TypeInvalid DecodeAction ConsumeWord ConsumeWord8 ConsumeWord16 ConsumeWord32ConsumeNegWord ConsumeInt ConsumeInt8 ConsumeInt16 ConsumeInt32ConsumeListLen ConsumeMapLen ConsumeTagConsumeWordCanonicalConsumeWord8CanonicalConsumeWord16CanonicalConsumeWord32CanonicalConsumeNegWordCanonicalConsumeIntCanonicalConsumeInt8CanonicalConsumeInt16CanonicalConsumeInt32CanonicalConsumeListLenCanonicalConsumeMapLenCanonicalConsumeTagCanonicalConsumeInteger ConsumeFloat ConsumeDouble ConsumeBytesConsumeByteArray ConsumeStringConsumeUtf8ByteArray ConsumeBool ConsumeSimpleConsumeIntegerCanonicalConsumeFloat16CanonicalConsumeFloatCanonicalConsumeDoubleCanonicalConsumeBytesCanonicalConsumeByteArrayCanonicalConsumeStringCanonicalConsumeUtf8ByteArrayCanonicalConsumeSimpleCanonicalConsumeBytesIndefConsumeStringIndefConsumeListLenIndefConsumeMapLenIndef ConsumeNullConsumeListLenOrIndefConsumeMapLenOrIndefConsumeBreakOr PeekTokenType PeekAvailableFailDoneDecoderliftSTgetDecodeAction decodeWord decodeWord8 decodeWord16 decodeWord32 decodeWord64 decodeNegWorddecodeNegWord64 decodeInt decodeInt8 decodeInt16 decodeInt32 decodeInt64decodeWordCanonicaldecodeWord8CanonicaldecodeWord16CanonicaldecodeWord32CanonicaldecodeWord64CanonicaldecodeNegWordCanonicaldecodeNegWord64CanonicaldecodeIntCanonicaldecodeInt8CanonicaldecodeInt16CanonicaldecodeInt32CanonicaldecodeInt64Canonical decodeInteger decodeFloat decodeDouble decodeBytesdecodeBytesCanonicaldecodeBytesIndefdecodeByteArraydecodeByteArrayCanonical decodeStringdecodeStringCanonicaldecodeStringIndefdecodeUtf8ByteArraydecodeUtf8ByteArrayCanonical decodeListLendecodeListLenCanonicaldecodeListLenIndef decodeMapLendecodeMapLenCanonicaldecodeMapLenIndef decodeTag decodeTag64decodeTagCanonicaldecodeTag64Canonical decodeBool decodeNull decodeSimpledecodeIntegerCanonicaldecodeFloat16CanonicaldecodeFloatCanonicaldecodeDoubleCanonicaldecodeSimpleCanonical decodeWordOfdecodeListLenOfdecodeWordCanonicalOfdecodeListLenCanonicalOfdecodeListLenOrIndefdecodeMapLenOrIndef decodeBreakOr peekTokenType peekAvailabledecodeSequenceLenIndefdecodeSequenceLenN$fMonadFailDecoder$fMonadDecoder$fApplicativeDecoder$fFunctorDecoder $fEqTokenType$fOrdTokenType$fEnumTokenType$fBoundedTokenType$fShowTokenTypeTokensEncoding TermTokenFlatTerm toFlatTermTkWordTkWord64TkIntTkInt64TkBytes TkBytesBegin TkByteArrayTkStringTkUtf8ByteArray TkStringBegin TkListLen TkListBeginTkMapLen TkMapBeginTkTagTkTag64 TkIntegerTkNullTkUndefTkBoolTkSimple TkFloat16 TkFloat32 TkFloat64TkBreakTkEnd encodeWord encodeWord8 encodeWord16 encodeWord32 encodeWord64 encodeInt encodeInt8 encodeInt16 encodeInt32 encodeInt64 encodeInteger encodeBytesencodeByteArrayencodeBytesIndef encodeStringencodeStringIndefencodeUtf8ByteArray encodeListLenencodeListLenIndef encodeMapLenencodeMapLenIndef encodeBreak encodeTag encodeTag64 encodeBool encodeUndef encodeNull encodeSimple encodeFloat16 encodeFloat encodeDouble$fMonoidEncoding$fSemigroupEncoding$fShowEncoding $fShowTokens $fEqTokens fromFlatTerm validFlatTerm $fEqTermToken$fOrdTermToken$fShowTermToken $fShowLocCounter grabWord8 grabWord16 grabWord32 grabWord64 eatTailWord8 eatTailWord16 eatTailWord32 eatTailWord64 wordToFloat16 floatToWord16 wordToFloat32 wordToFloat64 intToInt64 word8ToWord word16ToWord word32ToWord word64ToWord word8ToInt word16ToInt word32ToInt word64ToIntnintegerFromBytesuintegerFromBytes newCounter readCounter writeCounter incCounter decCountercopyByteStringToByteArraycopyByteArrayToByteString ByteOffsetIDecodePartialDeserialiseFailuredeserialiseFromBytesdeserialiseFromBytesWithSizedeserialiseIncremental$fExceptionDeserialiseFailure$fNFDataDeserialiseFailure$fMonadIncrementalDecoder$fApplicativeIncrementalDecoder$fFunctorIncrementalDecoder$fEqDeserialiseFailure$fShowDeserialiseFailure$fShowDecodedToken$fShowLongTokenTermTIntTIntegerTBytesTBytesITStringTStringITListTListITMapTMapITTaggedTBoolTNullTSimpleTHalfTFloatTDouble encodeTerm decodeTerm$fEqTerm $fOrdTerm $fShowTerm $fReadTermtoLazyByteStringtoStrictByteString prettyHexEnc $fMonadFailPP $fMonadPP$fApplicativePP $fFunctorPP mkByteArray(primitive-0.6.4.0-39Pwmm1zkQX6bM7xFUT3JcData.Primitive.ByteArrayisByteArrayPinnedfoldrByteArrayghc-prim GHC.TypesisTrue# copyToAddr sameByteArraytouchbaseGHC.BaseMonadWordGHC.WordWord8Word16Word32Word64IntGHC.IntInt8Int16Int32Int64 integer-gmpGHC.Integer.TypeIntegerFloatDoublebytestring-0.10.8.2Data.ByteString.Internal ByteString text-1.2.3.0Data.Text.InternalTextNothingJustTrueFalseMonoidBoolLoc tokenTypeOf validateTermintIsValidWord32GHC.STSTGHC.PtrPtr withBsPtrwordToFloat32#wordToFloat64#copyPtrToMutableByteArrayMutableByteArraycopyByteArrayToPtr LongTokenfailData.ByteString.Lazy.Internal Data.EitherEither Data.ByteString.Builder.InternalBuilder System.IOputStrLn