xP      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Safe Helper that encodes and packs a  into a "Helper that unpacks and decodes a  into a Character to use when  or  fail for a byte.BEncode a Haskell String to a list of Word8 values, in UTF8 format.KDecode a UTF8 string packed into a list of Word8 values, directly to String|(c) Simon Marlow 2003-2006, David Waern 2006-2009, Mateusz Kowalczyk 2013BSD-likehaddock@projects.haskellorg experimentalportableSafe234-With the advent of (, we may want to start attaching more meta-data to comments. We make a structure for this ahead of time so we don't have to gut half the core each time we want to add such info.1  !"#$%&'()*+,-./01  !"#$%&'()*+,-./01-./)*+,0($%&' !"#    !"#$%&'()*+,-./0SafeI Concat using L.JLike H but also joins the - info.KWe do something perhaps unexpected here and join the meta info in reverse : this results in the metadata from the latest  paragraphs taking precedence.L'This is not a monoidal append, it uses  for the /. HIJKLMNOHIJKLMNOONHJKMLI HIJKLMNOBryan O'Sullivan 2007-2014BSD3bos@serpentine.com experimentalunknownSafe0iA numeric type that can represent integers accurately, and floating point numbers to the precision of a .NoteT: this type is deprecated, and will be removed in the next major release. Use the  type instead.   None!"BOTvJust like unsafePerformIO, but we inline it. Big performance gains as it exposes lots of things to further inlining.  Very unsafe@. In particular, you should do no memory allocation inside an  block. On Hugs this is just unsafePerformIO. Bryan O'Sullivan 2007-2014BSD3bos@serpentine.com experimentalunknownNoneBmThe lower bound on the size of a lookup table. We choose this to balance table density against performance. Create a set.Check the set for membership.zCheck the set for membership. Only works with 8-bit characters: characters above code point 255 will give wrong answers.  Bryan O'Sullivan 2007-2014BSD3bos@serpentine.com experimentalGHCNone The initial v has no mutable zone, so we can avoid all copies in the (hopefully) common case of no further input being fed to us.  Bryan O'Sullivan 2007-2014BSD3bos@serpentine.com experimentalunknownNone !"DIORT $A common interface for input chunks.Test if the chunk is empty.Append chunk to a buffer.?Position at the end of a buffer. The first argument is ignored.FReturn the buffer element at the given position along with its length.PMap an element to the corresponding character. The first argument is ignored.!Have we read all available input?<The core parser type. This is parameterised over the types i of string being processed and t" of internal state representation.2This type is an instance of the following classes:, where ; throws an exception (i.e. fails) with an error message. and %, which follow the usual definitions., where & fails (with no error message) and  executes the right-hand parser if the left-hand one fails. When the parser on the right executes, the input is reset to the same state as the parser on the left started with. (In other words, attoparsec is a backtracking parser that supports arbitrary lookahead.), which follows .<The result of a parse. This is parameterised over the type i of string that was processed.This type is an instance of , where  transforms the value in a  result.The parse failed. The iY parameter is the input that had not yet been consumed when the failure occurred. The []: is a list of contexts in which the error occurred. The . is the message describing the error, if any.Supply this continuation with more input so that the parser can resume. To indicate that no more input is available, pass an empty string to the continuation.Note: if you get a 6 result, do not call its continuation more than once.The parse succeeded. The iZ parameter is the input that had not yet been consumed (if any) when the parse succeeded.% Bryan O'Sullivan 2007-2014BSD3bos@serpentine.com experimentalunknownNoneT Compare two  values for equality.If both s are , the result will be ^, as they are incomplete and hence their equality cannot be known. (This is why there is no  instance for .)kAsk for input. If we receive any, pass it to a success continuation, otherwise to a failure continuation.$Immediately demand more input via a  continuation result.)This parser always succeeds. It returns  A if any input is available either immediately or on demand, and  + if the end of all input has been reached. *Match only if all input has been consumed. CReturn an indication of whether the end of input has been reached.  The parser  satisfyElem p9 succeeds for any chunk element for which the predicate p returns  /. Returns the element that is actually parsed.         1Daan Leijen 1999-2001, Bryan O'Sullivan 2007-2014BSD3bos@serpentine.com experimentalportableNonecAttempt a parse, and if it fails, rewind the input so that no input appears to have been consumed.kThis combinator is provided for compatibility with Parsec. attoparsec parsers always backtrack on failure.(Name the parser, in case failure occurs.P choice ps( tries to apply the actions in the list psT in order, until one of them succeeds. Returns the value of the succeeding action.Q option x p tries to apply action p. If p6 fails without consuming input, it returns the value x#, otherwise the value returned by p. +priority = option 0 (digitToInt <$> digit) A version of liftM23 that is strict in the result of its first action.Rmany' p applies the action p zero: or more times. Returns a list of the returned values of p. The value returned by p is forced to WHNF.  word = many' letterSmany1 p applies the action p one: or more times. Returns a list of the returned values of p.  word = many1 letterTmany1' p applies the action p one: or more times. Returns a list of the returned values of p. The value returned by p is forced to WHNF.  word = many1' letterU sepBy p sep applies zero or more occurrences of p, separated by sep+. Returns a list of the values returned by p. $commaSep p = p `sepBy` (symbol ",")V sepBy' p sep applies zero or more occurrences of p, separated by sep+. Returns a list of the values returned by p. The value returned by p is forced to WHNF. %commaSep p = p `sepBy'` (symbol ",")W sepBy1 p sep applies one or more occurrences of p, separated by sep+. Returns a list of the values returned by p. %commaSep p = p `sepBy1` (symbol ",")X sepBy1' p sep applies one or more occurrences of p, separated by sep+. Returns a list of the values returned by p. The value returned by p is forced to WHNF. &commaSep p = p `sepBy1'` (symbol ",")YmanyTill p end applies action p zero or more times until action end7 succeeds, and returns the list of values returned by p%. This can be used to scan comments: C simpleComment = string "<!--" *> manyTill anyChar (string "-->")(Note the overlapping parsers anyChar and  string "-->"\. While this will work, it is not very efficient, as it will cause a lot of backtracking.)ZmanyTill' p end applies action p zero or more times until action end7 succeeds, and returns the list of values returned by p%. This can be used to scan comments: D simpleComment = string "<!--" *> manyTill' anyChar (string "-->")(Note the overlapping parsers anyChar and  string "-->"\. While this will work, it is not very efficient, as it will cause a lot of backtracking.)The value returned by p is forced to WHNF.[)Skip zero or more instances of an action.\(Skip one or more instances of an action.]:Apply the given action repeatedly, returning every result.^Combine two alternatives.If a parser has returned a $ result, supply it with more input. the name to use if parsing failsPQRSTUVWXYZ[\]^   PQRSTUVWXYZ[\]^PQRSTUVWXYZ[\]^0Bryan O'Sullivan 2007-2014BSD3bos@serpentine.com experimentalunknownNone!"%& The parser  satisfy p0 succeeds for any byte for which the predicate p returns  ,. Returns the byte that is actually parsed. @digit = satisfy isDigit where isDigit w = w >= 48 && w <= 57 The parser skip p0 succeeds for any byte for which the predicate p returns  . AskipDigit = skip isDigit where isDigit w = w >= 48 && w <= 57 The parser satisfyWith f p3 transforms a byte, and succeeds if the predicate p returns  T on the transformed value. The parser returns the transformed byte that was parsed.Consume n< bytes of input, but succeed only if the predicate returns  .Consume exactly n bytes of input.string s4 parses a sequence of bytes that identically match s". Returns the parsed string (i.e. sI). This parser consumes no input if it fails (even if a partial match).Note: The behaviour of this parser is different to that of the similarly-named parser in Parsec, as this one is all-or-nothing. To illustrate the difference, the following parser will fail under Parsec given an input of "for": string "foo" <|> string "for"fThe reason for its failure is that the first branch is a partial match, and will consume the letters 'f' and 'o'8 before failing. In attoparsec, the above parser will succeedF on that input, because the failed first branch will consume nothing.5Skip past input for as long as the predicate returns  ./Consume input as long as the predicate returns   (i.e. until it returns  !), and return the consumed input.UThis parser does not fail. It will return an empty string if the predicate returns   on the first byte of input.NoteM: Because this parser does not fail, do not use it with combinators such as i, because such parsers loop until a failure occurs. Careless use will thus result in an infinite loop./Consume input as long as the predicate returns  !, and return the consumed input.UThis parser does not fail. It will return an empty string if the predicate returns   on the first byte of input.NoteM: Because this parser does not fail, do not use it with combinators such as i, because such parsers loop until a failure occurs. Careless use will thus result in an infinite loop.=Consume all remaining input and return it as a single string.=Consume all remaining input and return it as a single string.A stateful scanner. The predicate consumes and transforms a state argument, and each transformed state is passed to successive invocations of the predicate on each byte of the input until one returns  or the input ends.UThis parser does not fail. It will return an empty string if the predicate returns  on the first byte of input.NoteM: Because this parser does not fail, do not use it with combinators such as i, because such parsers loop until a failure occurs. Careless use will thus result in an infinite loop.Like <, but generalized to return the final state of the scanner. /Consume input as long as the predicate returns  !, and return the consumed input.zThis parser requires the predicate to succeed on at least one byte of input: it will fail if the predicate never returns   or if there is no input left.!Match any byte in a set. vowel = inClass "aeiou"Range notation is supported. halfAlphabet = inClass "a-nA-N"To add a literal '-'; to a set, place it at the beginning or end of the string."Match any byte not in a set.#Match any byte.$Match a specific byte.%$Match any byte except the given one.&.Match any byte, to perform lookahead. Returns ? if end of input has been reached. Does not consume any input.NoteM: Because this parser does not fail, do not use it with combinators such as i, because such parsers loop until a failure occurs. Careless use will thus result in an infinite loop.'sMatch any byte, to perform lookahead. Does not consume any input, but will fail if end of input has been reached.((Match either a single newline character '\n'8, or a carriage return followed by a newline character "\r\n".)Terminal failure continuation.*Terminal success continuation.+ Run a parser.,-Run a parser that cannot be resupplied via a  result.This function does not force a parser to consume all of its input. Instead, any residual input will be discarded. To force a parser to consume all of its input, use something like this: , (myParser   ) - If at least nL elements of input are available, return the current input, otherwise fail..lReturn both the result of a parse and the portion of the input that was consumed while it was being parsed.-/012345678 !"#$%&'()*+,9:;<=-.>?  3456 !"#$%&'(+,.,/012345678 !"#$%&'()*+,9:;<=-.>?Bryan O'Sullivan 2007-2014BSD3bos@serpentine.com experimentalunknownNone@5Run a parser and print its result to standard output.AfRun a parser with an initial input string, and a monadic action that can supply more input if needed.B Convert a 3 value to a C value. A  result is treated as failure.D Convert a 3 value to an E value. A  result is treated as failure.@ArAn action that will be executed to provide the parser with more input, if necessary. The action must return an F. string when there is no more input available.Initial input for the parser.BD5  PQRSTUVWXYZ[\]^34 !"#$%&'+,.@ABD@ABDBryan O'Sullivan 2007-2014BSD3bos@serpentine.com experimentalunknownNone %&9;DR!G(Satisfy a literal string, ignoring case.H/Consume input as long as the predicate returns  !, and return the consumed input.zThis parser requires the predicate to succeed on at least one byte of input: it will fail if the predicate never returns   or if there is no input left.I The parser  satisfy p0 succeeds for any byte for which the predicate p returns  ,. Returns the byte that is actually parsed. Bdigit = satisfy isDigit where isDigit c = c >= '0' && c <= '9'J,Match a letter, in the ISO-8859-15 encoding.K&Match a letter, in the ASCII encoding._8A fast alphabetic predicate for the ISO-8859-15 encodingNote~: For all character encodings other than ISO-8859-15, and almost all Unicode code points above U+00A3, this predicate gives  wrong answers.`2A fast alphabetic predicate for the ASCII encodingNotex: For all character encodings other than ASCII, and almost all Unicode code points above U+007F, this predicate gives  wrong answers.LParse a single digit.aA fast digit predicate.bA fast digit predicate.MMatch any character.N3Match any character, to perform lookahead. Returns ? if end of input has been reached. Does not consume any input.NoteM: Because this parser does not fail, do not use it with combinators such as manyh, because such parsers loop until a failure occurs. Careless use will thus result in an infinite loop.OxMatch any character, to perform lookahead. Does not consume any input, but will fail if end of input has been reached.c3Fast predicate for matching ASCII space characters.Note: This predicate only gives correct answers for the ASCII encoding. For instance, it does not recognise U+00A0 (non-breaking space) as a space character, even though it is a valid ISO-8859-15 byte. For a Unicode-aware and only slightly slower predicate, use dFast P/ predicate for matching ASCII space characters.QParse a space character.Note: This parser only gives correct answers for the ASCII encoding. For instance, it does not recognise U+00A0 (non-breaking space) as a space character, even though it is a valid ISO-8859-15 byte.RMatch a specific character.S+Match a specific character, but return its P value.T)Match any character except the given one.eMatch any character in a set. vowel = inClass "aeiou"Range notation is supported. halfAlphabet = inClass "a-nA-N"OTo add a literal '-' to a set, place it at the beginning or end of the string.f!Match any character not in a set.U/Consume input as long as the predicate returns  !, and return the consumed input.UThis parser does not fail. It will return an empty string if the predicate returns   on the first byte of input.NoteM: Because this parser does not fail, do not use it with combinators such as manyh, because such parsers loop until a failure occurs. Careless use will thus result in an infinite loop.VA stateful scanner. The predicate consumes and transforms a state argument, and each transformed state is passed to successive invocations of the predicate on each byte of the input until one returns  or the input ends.UThis parser does not fail. It will return an empty string if the predicate returns  on the first byte of input.NoteM: Because this parser does not fail, do not use it with combinators such as manyh, because such parsers loop until a failure occurs. Careless use will thus result in an infinite loop.W/Consume input as long as the predicate returns   (i.e. until it returns  !), and return the consumed input.UThis parser does not fail. It will return an empty string if the predicate returns   on the first byte of input.NoteM: Because this parser does not fail, do not use it with combinators such as manyh, because such parsers loop until a failure occurs. Careless use will thus result in an infinite loop.X5Skip past input for as long as the predicate returns  .YSkip over white space.ZObsolete . A type-specialized version of [ for . Use [ instead.\Obsolete . A type-specialized version of ] for . Use ] instead.g2A predicate that matches either a carriage return '\r' or newline '\n' character.h(A predicate that matches either a space ' ' or horizontal tab '\t' character.^BParse and decode an unsigned hexadecimal number. The hex digits 'a' through 'f' may be upper or lower case.&This parser does not accept a leading "0x" string._,Parse and decode an unsigned decimal number.`(Parse a number with an optional leading '+' or '-' sign character.#aGHIJK_`LabMNOcdQRSTefUVWXYZ\gh^_`bK  PQRSTUVWXYZ[\]^34(+,.@ABDGHIJK_`LabMNOcdQRSTefUVWXYZ\gh^_`#aGHIJK_`LabMNOcdQRSTefUVWXYZ\gh^_`bNoneDIR&ijklmnopqrstuvwxyz{|}~>PQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~?klmnijopqrstuvwxyz{|}~ab_`cdefghP]QRSTYZUVWX[\^#ijklmnopqrstuvwxyz{|}~K(c) Mateusz Kowalczyk 2013-2014, Simon Hengel 2013BSD-likehaddock@projects.haskell.org experimentalportableNonec*Remove all leading and trailing whitespaced!Remove escapes from given string.GOnly do this if you do not process (read: parse) the input any further.cefgdhicefgdhcefgdhK(c) Mateusz Kowalczyk 2013-2014, Simon Hengel 2013BSD-likehaddock@projects.haskell.org experimentalportableNone$*GIdentifier string surrounded with opening and closing quotes/backticks.TDrops the quotes/backticks around all identifiers, as if they were valid but still s. Maps over s over  with potentially failing conversion using user-supplied function. If the conversion fails, the identifier is deemed to not be valid and is treated as a regular string.SMain entry point to the parser. Appends the newline character to the input string.5Parse a text paragraph. Actually just a wrapper over jF which drops leading whitespace and encodes the string to UTF8 first.kParses and processes 9https://en.wikipedia.org/wiki/Numeric_character_referenceNumeric character referencesparseString "&#65;" DocString "A"lList of characters that we use to delimit any special markup. Once we have checked for any of these and tried to parse the relevant markup, we can assume they are used as regular text.mPlain, regular parser for text. Called as one of the last parsers to ensure that we have already given a chance to more meaningful parsers before capturing their characers.nSkips a single special character and treats it as a plain string. This is done to skip over any special characters belonging to other elements but which were not deemed meaningful at their positions.oEmphasis parser.parseString "/Hello world/"%DocEmphasis (DocString "Hello world")p Bold parser.parseString "__Hello world__"!DocBold (DocString "Hello world")qLike ., but unconditionally take escaped characters.rLike ., but unconditionally take escaped characters.sEText anchors to allow for jumping around the generated documentation.parseString "#Hello world#"DocAName "Hello world"tMonospaced strings.parseString "@cruel@"!DocMonospaced (DocString "cruel")uModule names: we try our reasonable best to only allow valid Haskell module names, with caveat about not matching on technically valid unicode symbols.v[Picture parser, surrounded by << and >>. It's possible to specify a title for the picture.parseString "<<hello.png>>"CDocPic (Picture {pictureUri = "hello.png", pictureTitle = Nothing})!parseString "<<hello.png world>>"HDocPic (Picture {pictureUri = "hello.png", pictureTitle = Just "world"})w,Inline math parser, surrounded by \( and \).IparseString "\\(\\int_{-\\infty}^{\\infty} e^{-x^2/2} = \\sqrt{2\\pi}\\)"EDocMathInline "\\int_{-\\infty}^{\\infty} e^{-x^2/2} = \\sqrt{2\\pi}"x-Display math parser, surrounded by \[ and \].IparseString "\\[\\int_{-\\infty}^{\\infty} e^{-x^2/2} = \\sqrt{2\\pi}\\]"FDocMathDisplay "\\int_{-\\infty}^{\\infty} e^{-x^2/2} = \\sqrt{2\\pi}"yParagraph parser, called by .z(Headers inside the comment denoted with = signs, up to 6 levels deep."snd <$> parseOnly header "= Hello"MRight (DocHeader (Header {headerLevel = 1, headerTitle = DocString "Hello"}))#snd <$> parseOnly header "== World"MRight (DocHeader (Header {headerLevel = 2, headerTitle = DocString "World"})){ Parses unordered (bullet) lists.|*Parses ordered lists (numbered or dashed).}Generic function collecting any further lines belonging to the list entry and recursively collecting any further lists in the same paragraph. Usually used as >someListFunction = listBeginning *> innerList someListFunction~Parses definition lists.Drops all trailing newlines.Main worker for } and ~. We need the Eu here to be able to tell in the respective functions whether we're dealing with the next list or a nested paragraph.Used by } and ~ to parse any nested paragraphs.5Attempts to fetch the next list if possibly. Used by } and ~G to recursively grab lists that aren't separated by a whole paragraph. Helper for } and ~Q which simply takes a line of text and attempts to parse more list content with .;Parses an indented paragraph. The indentation is 4 spaces.1Grab as many fully indented paragraphs as we can.-Takes a non-empty, not fully whitespace line.%Doesn't discard the trailing newline.*Takes indentation of first non-empty line.More precisely: skips all whitespace-only lines and returns indentation (horizontal space, might be empty) of that non-empty line.Blocks of text of the form: > foo > bar > bazzParses examples. Examples are a paragraph level entitity (separated by an empty line). Consecutive examples are accepted.Property parser..snd <$> parseOnly property "prop> hello world"!Right (DocProperty "hello world")WParagraph level codeblock. Anything between the two delimiting @ is parsed for markup.[Looks for URL-like things to automatically hyperlink even if they weren't marked as links.Parses strings between identifier delimiters. Consumes all input that it deems to be valid in an identifier. Note that it simply blindly consumes characters and does no actual validation itself.,Parses UTF8 strings from ByteString streams. Parses identifiers with help of . Asks GHC for  from the string it deems valid.;String to parsejklmnopqrstuvwxyz{|}~;jklmnopqrstuvwxyz{|}~Bryan O'Sullivan 2007-2014BSD3bos@serpentine.com experimentalunknownNone5  PQRSTUVWXYZ[\]^34 !"#$%&'+,.@ABD !"#$%&'()*+,-./0123345667899:;<<=>?@@ABCCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}}~~          }           }                    !"yz#$%&'()*+,-}./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstu*vwxyz{|}~,haddock-library-1.4.3-7rEGzge05s5BxGssFs5tiBDocumentation.Haddock.TypesDocumentation.Haddock.Doc"Documentation.Haddock.Parser.MonadDocumentation.Haddock.ParserDocumentation.Haddock.Utf8Data.Attoparsec.NumberData.Scientific Scientific Data.Attoparsec.Internal.Fhthagn"Data.Attoparsec.ByteString.FastSet!Data.Attoparsec.ByteString.BufferData.Attoparsec.Internal.TypesData.Attoparsec.InternalData.Attoparsec.CombinatorTPartial#Data.Attoparsec.ByteString.InternalControl.Applicativemany<*Data.Attoparsec.ByteString Data.Attoparsec.ByteString.Char8 Data.CharisSpace!Documentation.Haddock.Parser.UtilData.AttoparsecDocHDocEmpty DocAppend DocString DocParagraph DocIdentifierDocIdentifierUnchecked DocModule DocWarning DocEmphasis DocMonospacedDocBoldDocUnorderedListDocOrderedList DocDefList DocCodeBlock DocHyperlinkDocPic DocMathInlineDocMathDisplayDocAName DocProperty DocExamples DocHeaderExampleexampleExpression exampleResultHeader headerLevel headerTitlePicture pictureUri pictureTitle Hyperlink hyperlinkUrlhyperlinkLabelVersionMetaDoc_meta_docMeta_versionoverDoc$fEqMeta $fShowMeta $fEqHyperlink$fShowHyperlink $fEqPicture $fShowPicture $fEqHeader $fShowHeader$fFunctorHeader$fFoldableHeader$fTraversableHeader $fEqExample $fShowExample$fEqDocH $fShowDocH $fFunctorDocH$fFoldableDocH$fTraversableDocH $fEqMetaDoc $fShowMetaDoc$fFunctorMetaDoc$fFoldableMetaDoc$fTraversableMetaDoc docConcat metaConcat metaDocConcat metaDocAppend metaAppend emptyMetaDoc docAppend docParagraphchoiceoptionmany'many1many1'sepBysepBy'sepBy1sepBy1'manyTill manyTill'skipMany skipMany1counteitherPisAlpha_iso8859_15 isAlpha_asciiisDigit isDigit_w8 isSpace_w8inClass notInClass isEndOfLineisHorizontalSpaceParser ParserStateparserStateSinceinitialParserState parseOnlyliftsetParserStatesetSincecharchar8anyCharnotCharsatisfypeekChar peekChar'digitletter_iso8859_15 letter_asciispacestringstringCI skipSpace skipWhiletakescan takeWhile takeWhile1takeTilltakeByteStringtakeLazyByteString endOfLinedecimal hexadecimal endOfInputatEnd$fIsStringParser$fEqParserState$fShowParserState$fFunctorParser$fApplicativeParser$fAlternativeParser $fMonadParser$fMonadPlusParser Identifier toRegularoverIdentifier parseParas parseString encodeUtf8baseGHC.BaseStringbytestring-0.10.8.1Data.ByteString.Internal ByteString decodeUtf8replacementCharacterencodedecode<|> emptyMeta docCodeBlockNumberghc-prim GHC.TypesDoubleIDbinop$fRealFracNumber$fFractionalNumber $fRealNumber $fNumNumber $fOrdNumber $fEqNumber$fNFDataNumber $fShowNumberinlinePerformIO tableCutoffset memberWord8 memberCharFastSetSortedTablefromSetfromListshiftRshiftLindexmkTable charClass $fShowFastSetbufferBufferBuf_fp_off_len_cap_genunbufferpappendappendlength unsafeIndex substring unsafeDrop$fMonoidBuffer $fShowBufferChunk nullChunk pappendChunk atBufferEnd bufferElemAtchunkElemToCharMoreMonadfailFunctor Applicative MonadPlusmzeromplus AlternativeIResultfmapDoneFail ChunkElemComplete IncompleteSuccessFailureState runParserPosfromPosplusapP<>$fChunkByteString$fMonoidParser $fMonoidMore$fFunctorIResult$fNFDataIResult $fShowIResultcompareResultsNothing GHC.ClassesEqprompt demandInput wantInputTrueFalse satisfyElemsatisfySuspendedtryliftM2'feedskip satisfyWithtakeWith runScanneranyWord8word8notWord8 peekWord8 peekWord8'failKsuccessKparseensurematchResultstorablestringTransformtakeRestscan_get endOfChunkinputSpansChunksadvanceensureSuspended lengthAtLeast parseTest parseWith maybeResultMaybe eitherResult Data.EitherEitherData.ByteStringemptyGHC.WordWord8.*>*><*.signedtoLowerstrip removeEscapesskipHorizontalSpacetakeHorizontalSpace makeLabeled takeUntilData.ByteString.Char8unsnoc parseStringBS encodedChar specialCharstring'skipSpecialCharemphasisbold takeWhile_ takeWhile1_anchor monospace moduleNamepicture mathInline mathDisplay paragraphheader unorderedList orderedList innerListdefinitionListdropNLsmoreinnerParagraphs moreListItems moreContentindentedParagraphsdropFrontOfParatakeNonEmptyLine takeIndent birdtracksexamplesproperty codeblockautoUrl parseValid utf8String identifierparseParasStateparseParagraphsdisallowNewline markdownImagesince textParagraph'textParagraphThatStartsWithMarkdownLinknonSpace stripSpace nonEmptyLinetakeLine hyperlink markdownLink linkParser