!&!M      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKL(c) Edward Kmett 2013-2014BSD3Edward Kmett <ekmett@gmail.com> experimental non-portable Trustworthy F bitsPCalculate the least significant set bit using a debruijn multiplication table. NB:7 The result of this function is undefined when given 0.bits(Calculate the number of trailing 0 bits.bits&Calculate the number of leading zeros. bits'Calculate the most significant set bit. bits2Shift Right Logical (i.e., without sign extension)NB: When used on negative Ms, hilarity may ensue.   (c) Edward Kmett 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableSafe =?@AHSVXbitsGetq something from byte-aligned storage, starting on the next byte and discarding any left over bits in the buffer.NB: Using any operation from N other than checking O or P( will implicitly perform this operation.bitsGet# a single bit, consuming an entire byte if the bit buffer is emptybits0Emit any remaining contents from the bit buffer. Any use of the combinators from Q (including R) will cause this to happen.bitsPut all the bits without a RbitsPut" a single bit, emitting an entire byte if the bit buffer is full bitsPut a (closed) range of bits!bits %putBitsFrom from b = putBits from 0 b  !  !BSD3 experimental non-portableNoneMX!-bitsEElias Delta codes the position of the most significant bit in Elias ...bits;Elias Gamma codes the position of the most significant in 2./bitsRepresentation for Elias . and - codes. A positive integer n is encoded by encoding the position of its most significant bit, and then the binary representation of the rest of the number.2bitsUnary-coded integers/runPutL . runEncode $ encode (Unary 1) >> flush"\128"/runPutL . runEncode $ encode (Unary 7) >> flush"\254"5bitsUnaligned codes-./0123456879:5687234/01.-9:S      !"#$%&'()*+,-./012344566789:;<=>?@ABCDEFGHIJKLMNOPQRSTUSTVSTWSXYSXZ[!bits-0.5.2-55PoLbft5E5FfanlqmjrI4Data.Bits.ExtrasData.Bits.CodingData.Bits.Codedbase Data.BitszeroBitsRankedlsbranknlzlog2w8w16w32w64msb assignBitoneBitssrl $fRankedInt8 $fRankedInt16 $fRankedInt32 $fRankedInt64 $fRankedWord8$fRankedWord16$fRankedWord32$fRankedWord64Coding runCoding getAlignedgetBitgetBits getBitsFrom putAligned putUnalignedputBitputBits putBitsFrom$fMonadPutCoding$fMonadGetCoding$fMonadReadereCoding$fMonadStatesCoding$fMonadTransCoding$fMonadPlusCoding$fAlternativeCoding$fMonadFailCoding $fMonadCoding$fApplicativeCoding$fFunctorCodingDeltaGammaEliasunEliasUnaryunUnaryCodedencode encodeManydecode runEncode runDecode $fCodedUnary $fCodedElias $fEqUnary $fOrdUnary $fReadUnary $fShowUnary $fNumUnary$fIntegralUnary $fRealUnary $fEnumUnary $fEqElias $fOrdElias $fReadElias $fShowElias $fNumElias $fRealElias$fIntegralElias $fEnumElias integer-gmpGHC.Integer.TypeInteger#bytes-0.15.5-2Ik4mdd1IjJDeqNIPbvGmvData.Bytes.GetMonadGet remainingisEmptyData.Bytes.PutMonadPutflush