!      (c) 2019 Emily Pillmore BSD-style$Emily Pillmore <emilypi@cohomolo.gy> ExperimentalportableNoneF"base64Read  index off alphabet addrbase64Convert Word8's into Word32'sbase64Allocate and fill n bytes with some data(c) 2019 Emily Pillmore BSD-style$Emily Pillmore <emilypi@cohomolo.gy> ExperimentalportableNonek base64QFinalize an encoded bytestring by filling in the remaining bytes and any padding base64IFinalize a bytestring by filling out the remaining bits without padding. (c) 2019-2020 Emily Pillmore BSD-style$Emily Pillmore <emilypi@cohomolo.gy> ExperimentalportableNonek!base64QEncoding inner loop. Packs 3 bytes from src pointer into the first 6 bytes of 4 Word8'#s (using the encoding table, as 2 Word12'&s ), writing these to the dst pointer."base64TUnpadded encoding loop, finalized as a bytestring using the resultant length count.!"(c) 2019-2020 Emily Pillmore BSD-style$Emily Pillmore <emilypi@cohomolo.gy> ExperimentalportableNonek#base64PEncoding inner loop. Packs 6 bytes from src pointer into the first 6 bits of 4 Word12'#s (using the encoding table, as 2 Word12'&s ), writing these to the dst pointer.$base64TUnpadded encoding loop, finalized as a bytestring using the resultant length count.#$ (c) 2019 Emily Pillmore BSD-style$Emily Pillmore <emilypi@cohomolo.gy> ExperimentalportableNoneF`k) %base64A type isomorphic to &. marking support for padding out bytestrings (Pad), or not (Nopad@).'base64Do we pad out the bytestring?(base64!Do we not pad out the bytestring?)base64qOnly the lookup table need be a foreignptr, and then, only so that we can automate some touches to keep it alive*base64Pack an + into an encoding table of ,s-base64Base64url encoding table.base64Base64 std encoding table/base64EGiven a bytestring, check to see that it conforms to a given alphabet0base64&Non-URLsafe b64 decoding table (naive)1base64"URLsafe b64 decoding table (naive)2base64The main decode function. Takes a padding flag, a decoding table, and the input value, producing either an error string on the left, or a decoded value. Note: If %: ~ Pad, then we pad out the input to a multiple of 4. If %R ~ NoPad, then we do not, and fail if the input is not a multiple of 4 in length.3base64decode lookup tablebase64 src pointerbase64 dst pointerbase64end of src ptrbase64 dst foreign ptr (for consing bs)4base64decode lookup tablebase64 src pointerbase64 dst pointerbase64end of src ptrbase64 dst foreign ptr (for consing bs) %'(-./560127(c) 2019 Emily Pillmore BSD-style$Emily Pillmore <emilypi@cohomolo.gy> ExperimentalportableNone<base64 Encode a 8 value as Base64 9 with padding.See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4base64 Encode a 8 value as a Base64 8 value with padding.See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4base64Decode a padded Base64-encoded 8 value.See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4Note:) This function is not RFC compliant, and willj add padding to an unpadded Base64-encoded value for decoding. For strictly RFC-compliant decoding, use decodeBase64Unpadded.base64,Leniently decode an unpadded Base64-encoded 8 value. This function will not generate parse errors. If input data contains padding chars, then the input will be parsed up until the first pad character.Note: This is not RFC 4648-compliant.base64Tell whether a 8 value is base64 encoded.base64Tell whether a 8 value is a valid Base64 format.This will not tell you whether or not this is a correct Base64url representation, only that it conforms to the correct shape. To check whether it is a true Base64 encoded 8 value, use . (c) 2019-2020 Emily Pillmore BSD-style$Emily Pillmore <emilypi@cohomolo.gy> ExperimentalportableNonekC*:base64QEncoding inner loop. Packs 3 bytes from src pointer into the first 6 bytes of 4 Word8'#s (using the encoding table, as 2 Word12'&s ), writing these to the dst pointer.;base64TUnpadded encoding loop, finalized as a bytestring using the resultant length count.:;(c) 2019 Emily Pillmore BSD-style$Emily Pillmore <emilypi@cohomolo.gy> ExperimentalportableNonee base64 Encode a 8 value as a Base64url 9 value with padding.See: -https://tools.ietf.org/html/rfc4648#section-5RFC-4648 section 5base64 Encode a 8 as a Base64url 8 value with padding.See: -https://tools.ietf.org/html/rfc4648#section-5RFC-4648 section 5base64"Decode a padded Base64url encoded 8 value. If its length is not a multiple of 4, then padding chars will be added to fill out the input to a multiple of 4 for safe decoding as Base64url-encoded values are optionally padded.BFor a decoder that fails on unpadded input of incorrect size, use  .See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4 base64 Encode a 8 value as Base64url 9 without padding. Note that for Base64url, padding is optional. If you call this function, you will simply be encoding as Base64url and stripping padding chars from the output.See: /https://tools.ietf.org/html/rfc4648#section-3.2RFC-4648 section 3.2 base64 Encode a 8 value as Base64url without padding. Note that for Base64url, padding is optional. If you call this function, you will simply be encoding as Base64url and stripping padding chars from the output.See: /https://tools.ietf.org/html/rfc4648#section-3.2RFC-4648 section 3.2 base64"Decode a padded Base64url-encoded 8G value. If its length is not a multiple of 4, then padding chars will not4 be added to fill out the input to a multiple of 4.SIn general, unless unpadded Base64url is explicitly required, it is safer to call .See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4 base64/Leniently decode an unpadded Base64url-encoded 8. This function will not generate parse errors. If input data contains padding chars, then the input will be parsed up until the first pad character.Note: This is not RFC 4648-compliant. base64Tell whether a 8 is Base64url-encoded.base64Tell whether a 8 is a valid Base64url format.This will not tell you whether or not this is a correct Base64url representation, only that it conforms to the correct shape. To check whether it is a true Base64 encoded 8 value, use  .    (c) 2019 Emily Pillmore BSD-style$Emily Pillmore <emilypi@cohomolo.gy> ExperimentalportableNonesbase64 Encode a 9 value in Base64 with padding.See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4base64Decode a padded Base64-encoded 9 valueSee: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4base64"Leniently decode a Base64-encoded 9 value. This function will not generate parse errors. If input data contains padding chars, then the input will be parsed up until the first pad character.Note: This is not RFC 4648-compliant.base64Tell whether a 9 value is Base64-encoded.base64Tell whether a 9 value is a valid Base64 format.This will not tell you whether or not this is a correct Base64 representation, only that it conforms to the correct shape. To check whether it is a true Base64 encoded 9 value, use .(c) 2019 Emily Pillmore BSD-style$Emily Pillmore <emilypi@cohomolo.gy> ExperimentalportableNoneFbase64 Encode a 9! value in Base64url with padding.See: -https://tools.ietf.org/html/rfc4648#section-5RFC-4648 section 5base64"Decode a padded Base64url-encoded 9 value. If its length is not a multiple of 4, then padding chars will be added to fill out the input to a multiple of 4 for safe decoding as base64url encodings are optionally padded.BFor a decoder that fails on unpadded input of incorrect size, use .See: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4base64 Encode a 9 value in Base64url without padding. Note that for Base64url, padding is optional. If you call this function, you will simply be encoding as Base64url and stripping padding chars from the output.See: /https://tools.ietf.org/html/rfc4648#section-3.2RFC-4648 section 3.2base64%Decode an unpadded Base64url encoded 9 valueSee: -https://tools.ietf.org/html/rfc4648#section-4RFC-4648 section 4base64/Leniently decode an unpadded Base64url-encoded 9. This function will not generate parse errors. If input data contains padding chars, then the input will be parsed up until the first pad character.Note: This is not RFC 4648-compliant.base64Tell whether a 9 value is Base64url-encoded.base64Tell whether a 9# value is a valid Base64url format.This will not tell you whether or not this is a correct Base64url representation, only that it conforms to the correct shape. To check whether it is a true Base64 encoded 9 value, use .<            !"# $ % & '!()* + , - . / 0 1 2 3 4 56789:;  <#base64-0.4.1-IuQkrC6SmrS2iNcYZE6XkYData.ByteString.Base64Data.ByteString.Base64.URLData.Text.Encoding.Base64Data.Text.Encoding.Base64.URL%Data.ByteString.Base64.Internal.Utils$Data.ByteString.Base64.Internal.Tail(Data.ByteString.Base64.Internal.W32.Loop(Data.ByteString.Base64.Internal.W64.LoopData.ByteString.Base64.Internal'Data.ByteString.Base64.Internal.W8.Loop encodeBase64 encodeBase64' decodeBase64decodeBase64LenientisBase64 isValidBase64encodeBase64UnpaddedencodeBase64Unpadded'decodeBase64Unpadded isBase64UrlisValidBase64UrlaixbaseGHC.WordWord8w32writeNPlainForeignPtrBytesloopTail loopTailNoPad innerLoopinnerLoopNopadPaddingghc-prim GHC.TypesBoolPadNoPad EncodingTable packTableGHC.PrimAddr#Word16base64UrlTable base64TablevalidateBase64decodeB64TabledecodeB64UrlTable decodeBase64_decodeBase64_'decodeBase64Lenient_' encodeBase64_encodeBase64Nopad_decodeBase64Lenient_bytestring-0.10.8.2Data.ByteString.Internal ByteString text-1.2.3.1Data.Text.InternalText