XEFwA      !"#$%&'()*+,-./0123456789:;<=>?@Safe0The number of s in a A1. A handy constant to have around when defining A&-based bulk operations on bit vectors.!BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^ BCDEFGHIJKLMNOPQRSTUVWXYZ[\] BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^None<=DRread a word at the given bit offset in little-endian order (i.e., the LSB will correspond to the bit at the given address, the 2's bit will correspond to the address + 1, etc.). If the offset is such that the word extends past the end of the vector, the result is zero-padded.read a word at the given bit offset in little-endian order (i.e., the LSB will correspond to the bit at the given address, the 2's bit will correspond to the address + 1, etc.). If the offset is such that the word extends past the end of the vector, the result is zero-padded.Ewrite a word at the given bit offset in little-endian order (i.e., the LSB will correspond to the bit at the given address, the 2's bit will correspond to the address + 1, etc.). If the offset is such that the word extends past the end of the vector, the word is truncated and as many low-order bits as possible are written. _`abcdef g`h_a abcde_f` Trustworthy The i instance is currently based on integers mod 2, so (+) and (-) are XOR, (*) is AND, and all the unary operations are identities. Saturating operations would also be a sensible alternative.jk jk  Trustworthy: 6Get the length of the vector that would be created by Clone a specified number of bits from a vector of words into a new vector of bits (interpreting the words in little-endian order, as described at c). If there are not enough words for the number of bits requested, the vector will be zero-padded.clone a vector of bits to a new unboxed vector of words. If the bits don't completely fill the words, the last word will be zero-padded.%Map a function over a bit vector one A at a time (S bits at a time). The function will be passed the bit index (which will always be -aligned) and the current value of the corresponding word. The returned word will be written back to the vector. If there is a partial word at the end of the vector, it will be zero-padded when passed to the function and truncated when the result is written back to the array.Same as  but without the index."Flip every bit in the given vector)return the number of ones in a bit vector Returns l" if all bits in the vector are set!Returns l if any bit in the vector is set !"#$%&emnopqrstuvwxyz{|}~gh !"#$%& !#%"$& !"#$%& Trustworthy: (Given a number of bits and a vector of words, concatenate them to a vector of bits (interpreting the words in little-endian order, as described at c). If there are not enough words for the number of bits requested, the vector will be zero-padded.)Given a vector of bits, extract an unboxed vector of words. If the bits don't completely fill the words, the last word will be zero-padded.*zipWords f xs ys = MfromWords (min (length xs) (length ys)) (zipWith f (toWords xs) (toWords ys))(internal) N-ary *m with specified output length. Makes all kinds of assumptions; mainly only valid for union and intersection.1"Flip every bit in the given vector2kGiven a vector of bits and a vector of things, extract those things for which the corresponding bit is set. For example, 1select (V.map (fromBool . p) x) x == V.filter p x.3mGiven a vector of bits and a vector of things, extract those things for which the corresponding bit is unset. For example, :exclude (V.map (fromBool . p) x) x == V.filter (not . p) x.6)return the number of ones in a bit vector8l" if all bits in the vector are set9l if any bit in the vector is set?RReturn the address of the first bit in the vector with the specified value, if any'()*+,-./0123456789:;<=>?@      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\gh]'()*+,-./0123456789:;<=>?@'()*+/,0-.124356789;=:<>?@'()*+,-./0123456789:;<=>?@^      !"#$%&'()*+,-./0123456789:$%&'()*+;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgefhijklm>?neopeoqeoreoseoteoueoveoweoxeoyeozeo{eo|eo}eo~eoeoeoeoeoeoeoeoeoeoeoeoeoeoeoeoeoeoeoeoeoeoeoeoeoeoeoeoeoeoefefefefefefefefefefefefefefefefefefefefefefefefepeqereseteuevewexeye}e|eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee e e e e eeeeeeeeeeeeeeeeeeee e!e"e#e$e%e&e'ee(e)e*e+e,e-e.e/e0e1e2e3e4e5ee6e7eeeeeeeeeeee8e9e:e;e<e=e>e?e@eAeBeCeDeeeEFG%bitvec-0.1.0.2-CzVoEKqfDGT8w5dzZQOJ9bData.BitData.Vector.Unboxed.Mutable.BitData.Vector.Unboxed.BitData.Bit.Internal Data.Vector.Unboxed.Bit.InternalBitfromBooltoBoolwordSize indexWordreadWord writeWordpadWithpad $fBitsBit $fIntegralBit $fRealBit$fNumBit $fReadBit $fShowBit wordLengthcloneFromWords cloneToWordsmapMInPlaceWithIndexmapInPlaceWithIndex mapMInPlace mapInPlace zipInPlace unionInPlaceintersectionInPlacedifferenceInPlacesymDiffInPlace invertInPlaceselectBitsInPlaceexcludeBitsInPlace countBitslistBitsandorallanyallBitsanyBitsreverseInPlace fromWordstoWordszipWordsunion intersection differencesymDiffunions intersectionsinvertselectexclude selectBits excludeBitsreversefirst findIndexghc-prim GHC.TypesWordlg2 lgWordSize wordSizeMask wordSizeMaskC divWordSize modWordSize mulWordSizenWordsnBitsaligned notAlignedalignUp alignDownreadBit extendToWordmaskmaskedisMaskedmeld extractWord spliceWord reverseWordreversePartialWorddiffffs bitsInWord selectWord $fEnumBitBitVecBitMVec cloneWords$fVectorVectorBit$fMVectorMVectorBit $fUnboxBitD:R:VectorBit0D:R:MVectorsBit0&vector-0.11.0.0-6uB77qGCxR6GPLxI2sqsX3Data.Vector.Unboxed.BaseMVectorVectorbaseGHC.NumNum liftBool2liftInt2TrueData.Vector.Unboxed.Mutableunzip6zip6unzip5zip5unzip4zip4unzip3zip3unzipzip unsafeMovemove unsafeCopycopyset unsafeSwap unsafeModify unsafeWrite unsafeReadswapmodifywritereadclear unsafeGrowgrowclone replicateM replicate unsafeNewnewoverlaps unsafeTail unsafeInit unsafeDrop unsafeTake unsafeSlicetailinitsplitAtdroptakeslicenulllengthMV_6MV_5MV_4MV_3MV_2 MV_ComplexMV_BoolMV_Char MV_DoubleMV_Float MV_Word64 MV_Word32 MV_Word16MV_Word8MV_WordMV_Int64MV_Int32MV_Int16MV_Int8MV_IntMV_UnitIOVectorSTVectorUnboxzipManyData.Vector.Unboxedfreezethaw unsafeThaw unsafeFreeze fromListNfromListtoListscanr1'scanr1scanr'scanr postscanr' postscanr prescanr'prescanrscanl1'scanl1scanl'scanl postscanl' postscanl prescanl'prescanlfold1M'_ifoldM'_foldM'_fold1M_ifoldM_foldM_fold1M'ifoldM'foldM'fold1MifoldMfoldM minIndexByminIndex maxIndexBymaxIndex minimumByminimum maximumBymaximumproductsumifoldr'ifoldrifoldl'ifoldlfoldr1'foldr'foldr1foldrfoldl1'foldl'foldl1foldl elemIndices elemIndex findIndicesfindnotElemelembreakspanunstablePartition partition dropWhile takeWhilefilterMifilterfilter izipWithM_ zipWithM_ izipWithMzipWithM izipWith6 izipWith5 izipWith4 izipWith3izipWithzipWith6zipWith5zipWith4zipWith3zipWithforM_forMimapM_mapM_imapMmapM concatMapimapmapindexedunsafeBackpermute backpermuteunsafeAccumulate_unsafeAccumulate unsafeAccum accumulate_ accumulateaccum unsafeUpdate_ unsafeUpdate unsafeUpdupdate_update//forcecreate generateMconcat++snocconsenumFromThenTo enumFromTo enumFromStepN enumFromN constructrN constructNunfoldrNunfoldriterateNgenerate singletonempty unsafeLastM unsafeHeadM unsafeIndexMlastMheadMindexM unsafeLast unsafeHead unsafeIndexlasthead!?!Data.Vector.Genericconvert