
    dd`W                       d dl mZ d dlmZmZmZmZmZmZm	Z	 d dl
mZ d dlmZ ddlmZ ddlmZ ddlmZ dd	lmZmZmZmZ dd
lmZ ddlmZ ddlmZ ddlm Z  ddl!m"Z" ddl#m$Z$m%Z% ddl&m'Z' ddl(m)Z)m*Z*  G d d          Z+ G d de+          Z, G d de+          Z- G d de-          Z. G d de-          Z/ G d de-          Z0 G d de-          Z1 G d  d!e+          Z2 G d" d#e+          Z3 G d$ d%e-          Z4 G d& d'e-          Z5 G d( d)e-          Z6 G d* d+          Z7 G d, d-e          Z8e9d.k    r-d d/l:Z:d d/l;Z; e:j<        d01          Z=e=>                    d2d3d45           e=>                    d6d7d8d9d/d:;           e=>                    d<d=d>d?d@A           e=>                    dBdCdDd/dDA           e=>                    dEdFdGd9dHI           e=>                    dJdKe?dLd/dMN           e=>                    dOdPdQd9dRI           e=>                    dSdTdUd9dVI           e=@                                ZAd dWlBmZ eAjC        dXk    re;jD        E                                ZFn? eGeAjC        dYdZ[          5 ZHeHE                                ZFd/d/d/           n# 1 swxY w Y    e8eFeAjI        rd\nd]eAjJ        eAjK        eAjL        ^          ZMeAjN        rhd d/lOZOd d/lPZP eOjQ                    ZR eeReAjS        eAjT        _          ZeU                    eM            ePjV        eRW                                           d/S  eeAjS        eAjT        d`a          ZeU                    eM           d/S d/S )b    )annotations)ClassVarDictIterableListOptionalTypeUnion)
MarkdownIt)Token   )box)
loop_first)Stack)ConsoleConsoleOptionsJustifyMethodRenderResult)Renderables)JupyterMixin)Panel)Rule)Segment)Style
StyleStack)Syntax)TextTextTypec                  ^    e Zd ZU dZded<   edd
            ZddZddZddZ	d dZ
d!dZdS )"MarkdownElementTzClassVar[bool]new_linemarkdown
'Markdown'tokenr   return'MarkdownElement'c                     |             S )zFactory to create markdown element,

        Args:
            markdown (Markdown): The parent Markdown object.
            token (Token): A node from markdown-it.

        Returns:
            MarkdownElement: A new markdown element
         clsr"   r$   s      -lib/python3.11/site-packages/rich/markdown.pycreatezMarkdownElement.create   s     suu    context'MarkdownContext'Nonec                    dS )zuCalled when the node is entered.

        Args:
            context (MarkdownContext): The markdown context.
        Nr(   selfr.   s     r+   on_enterzMarkdownElement.on_enter&         r-   textr   c                    dS )zpCalled when text is parsed.

        Args:
            context (MarkdownContext): The markdown context.
        Nr(   r3   r.   r6   s      r+   on_textzMarkdownElement.on_text-   r5   r-   c                    dS )zwCalled when the parser leaves the element.

        Args:
            context (MarkdownContext): [description]
        Nr(   r2   s     r+   on_leavezMarkdownElement.on_leave4   r5   r-   childboolc                    dS )a|  Called when a child element is closed.

        This method allows a parent element to take over rendering of its children.

        Args:
            context (MarkdownContext): The markdown context.
            child (MarkdownElement): The child markdown element.

        Returns:
            bool: Return True to render the element, or False to not render the element.
        Tr(   r3   r.   r<   s      r+   on_child_closezMarkdownElement.on_child_close;   s	     tr-   console	'Console'options'ConsoleOptions''RenderResult'c                    dS )Nr(   r(   r3   rA   rC   s      r+   __rich_console__z MarkdownElement.__rich_console__K   s	     rr-   Nr"   r#   r$   r   r%   r&   r.   r/   r%   r0   r.   r/   r6   r   r%   r0   r.   r/   r<   r&   r%   r=   )rA   rB   rC   rD   r%   rE   )__name__
__module____qualname__r!   __annotations__classmethodr,   r4   r9   r;   r@   rH   r(   r-   r+   r    r       s         #H####
 
 
 [
                  r-   r    c                      e Zd ZdZdS )UnknownElementzAn unknown element.

    Hopefully there will be no unknown elements, and we will have a MarkdownElement for
    everything in the document.

    N)rM   rN   rO   __doc__r(   r-   r+   rS   rS   Q   s           r-   rS   c                  .    e Zd ZdZdZddZdd
ZddZdS )TextElementz)Base class for elements that render text.noner.   r/   r%   r0   c                n    |                     | j                  | _        t          d          | _        d S Nleftjustify)enter_style
style_namestyler   r6   r2   s     r+   r4   zTextElement.on_enter_   s/    ((99
(((			r-   r6   r   c                t    | j                             |t          |t                    r|j        nd            d S N)r6   append
isinstancestrcurrent_styler8   s      r+   r9   zTextElement.on_textc   s8    	
48M8MWw44SWXXXXXr-   c                .    |                                  d S ra   )leave_styler2   s     r+   r;   zTextElement.on_leavef   s    r-   NrJ   rK   )rM   rN   rO   rT   r^   r4   r9   r;   r(   r-   r+   rV   rV   Z   s_        33J) ) ) )Y Y Y Y     r-   rV   c                  J    e Zd ZU dZdZded<   edd            ZddZddZ	dS )	ParagraphzA Paragraph.zmarkdown.paragraphr   r\   r"   r#   r$   r   r%   'Paragraph'c                (     | |j         pd          S rY   r[   r)   s      r+   r,   zParagraph.createp   s    s8+5v6666r-   r0   c                    || _         d S ra   r[   )r3   r\   s     r+   __init__zParagraph.__init__t   s    r-   rA   r   rC   r   r   c              #  >   K   | j         | j        _         | j        V  d S ra   )r\   r6   rG   s      r+   rH   zParagraph.__rich_console__w   s#       !L	ir-   N)r"   r#   r$   r   r%   rj   )r\   r   r%   r0   rA   r   rC   r   r%   r   )
rM   rN   rO   rT   r^   rP   rQ   r,   rm   rH   r(   r-   r+   ri   ri   j   ss         %J7 7 7 [7        r-   ri   c                  L     e Zd ZdZedd            ZddZd fdZddZ xZ	S )Headingz
A heading.r"   r#   r$   r   r%   	'Heading'c                "     | |j                   S ra   )tagr)   s      r+   r,   zHeading.create   s    s59~~r-   r.   r/   r0   c                `    t                      | _        |                    | j                   d S ra   )r   r6   r]   r^   r2   s     r+   r4   zHeading.on_enter   s)    FF	DO,,,,,r-   rt   rd   c                j    || _         d| | _        t                                                       d S )N	markdown.)rt   r^   superrm   )r3   rt   	__class__s     r+   rm   zHeading.__init__   s5    +c++r-   rA   r   rC   r   r   c              #     K   | j         }d|_        | j        dk    r t          |t          j        d          V  d S | j        dk    rt          d          V  |V  d S )Ncenterh1zmarkdown.h1.border)r   r_   h2 )r6   r\   rt   r   r   HEAVYr   )r3   rA   rC   r6   s       r+   rH   zHeading.__rich_console__   s       y8tI*        x42hhJJJJJr-   )r"   r#   r$   r   r%   rr   rJ   )rt   rd   r%   r0   ro   )
rM   rN   rO   rT   rQ   r,   r4   rm   rH   __classcell__ry   s   @r+   rq   rq   ~   s           [- - - -     
       r-   rq   c                  >    e Zd ZdZdZedd	            ZddZddZdS )	CodeBlockz&A code block with syntax highlighting.zmarkdown.code_blockr"   r#   r$   r   r%   'CodeBlock'c                p    |j         pd}|                    d          d         } | |pd|j                  S )Nr~    r   default)info	partition
code_theme)r*   r"   r$   	node_info
lexer_names        r+   r,   zCodeBlock.create   s@    J$"	((--a0
s:*H,?@@@r-   r   rd   themer0   c                "    || _         || _        d S ra   )r   r   )r3   r   r   s      r+   rm   zCodeBlock.__init__   s    $


r-   rA   r   rC   r   r   c              #     K   t          | j                                                  }t          || j        | j        dd          }|V  d S )NTr   )r   	word_wrappadding)rd   r6   rstripr   r   r   )r3   rA   rC   codesyntaxs        r+   rH   zCodeBlock.__rich_console__   sS       49~~$$&&$/tQ
 
 
 r-   N)r"   r#   r$   r   r%   r   )r   rd   r   rd   r%   r0   ro   )	rM   rN   rO   rT   r^   rQ   r,   rm   rH   r(   r-   r+   r   r      si        00&JA A A [A
        r-   r   c                  .    e Zd ZdZdZddZddZddZdS )
BlockQuotezA block quote.zmarkdown.block_quoter%   r0   c                ,    t                      | _        d S ra   r   elementsr3   s    r+   rm   zBlockQuote.__init__       %0]]r-   r.   r/   r<   r&   r=   c                :    | j                             |           dS NFr   rb   r?   s      r+   r@   zBlockQuote.on_child_close        	U###ur-   rA   r   rC   r   r   c              #     K   |                     |j        dz
            }|                    | j        || j                  }| j        }t          d          }t          d|          }|D ]}|V  |E d {V  |V  d S )N   widthr_   
u   ▌ )update	max_widthrender_linesr   r_   r   )	r3   rA   rC   render_optionslinesr_   r!   r   lines	            r+   rH   zBlockQuote.__rich_console__   s       !g.?!.CDD$$T]N$*$UU
4==&%(( 	 	DMMMOOOOOOONNNN	 	r-   Nr%   r0   rL   ro   )rM   rN   rO   rT   r^   rm   r@   rH   r(   r-   r+   r   r      s[        'J3 3 3 3        r-   r   c                      e Zd ZdZdZdd	Zd
S )HorizontalRulez%A horizontal rule to divide sections.FrA   r   rC   r   r%   r   c              #  \   K   |                     dd          }t          |          V  d S )Nzmarkdown.hrrW   r   r   )	get_styler   )r3   rA   rC   r_   s       r+   rH   zHorizontalRule.__rich_console__   s=       !!-!@@r-   Nro   )rM   rN   rO   rT   r!   rH   r(   r-   r+   r   r      s3        //H           r-   r   c                  B    e Zd ZdZedd            ZddZddZddZdS ) ListElementzA list element.r"   r#   r$   r   r%   'ListElement'c           	     p     | |j         t          |j                            dd                              S )Nstartr   )typeintattrsgetr)   s      r+   r,   zListElement.create   s.    s5:s5;??7A#>#>??@@@r-   	list_typerd   
list_start
int | Noner0   c                0    g | _         || _        || _        d S ra   )itemsr   r   )r3   r   r   s      r+   rm   zListElement.__init__   s    %'
"$r-   r.   r/   r<   r&   r=   c                h    t          |t                    sJ | j                            |           dS r   )rc   ListItemr   rb   r?   s      r+   r@   zListElement.on_child_close   s5     %*****
%   ur-   rA   r   rC   r   r   c              #  4  K   | j         dk    r(| j        D ]}|                    ||          E d {V  d S | j        dn| j        }|t	          | j                  z   }t          | j                  D ]&\  }}|                    ||||z   |          E d {V  'd S )Nbullet_list_openr   )r   r   render_bulletr   len	enumeraterender_number)r3   rA   rC   itemnumberlast_numberindexs          r+   rH   zListElement.__rich_console__   s       >///
 @ @--gw??????????@ @ /1QQtF 3tz??2K(44  t--Wfunk          r-   N)r"   r#   r$   r   r%   r   )r   rd   r   r   r%   r0   rL   ro   )	rM   rN   rO   rT   rQ   r,   rm   r@   rH   r(   r-   r+   r   r      sx        A A A [A% % % %
        r-   r   c                  6    e Zd ZdZdZddZddZddZddZdS )r   zAn item in a list.zmarkdown.itemr%   r0   c                ,    t                      | _        d S ra   r   r   s    r+   rm   zListItem.__init__	  r   r-   r.   r/   r<   r&   r=   c                :    | j                             |           dS r   r   r?   s      r+   r@   zListItem.on_child_close  r   r-   rA   r   rC   r   r   c              #  h  K   |                     |j        dz
            }|                    | j        || j                  }|                    dd          }t          d|          }t          d|          }t          d	          }t          |          D ]\  }	}
|	r|n|V  |
E d {V  |V  d S )
N   r   r   zmarkdown.item.bulletrW   r   u    • z   r   )r   r   r   r   r_   r   r   r   )r3   rA   rC   r   r   bullet_stylebulletr   r!   firstr   s              r+   r   zListItem.render_bullet  s       g.?!.CDD$$T]N$*$UU(()?(PP,//'<004==%e,, 	 	KE4!.&&w...OOOOOOONNNN	 	r-   r   r   r   c              #    K   t          t          |                    dz   }|                    |j        |z
            }|                    | j        || j                  }|                    dd          }t          d          }	t          d|z  |          }
t          | 	                    |d	z
            dz   |          }t          |          D ]\  }}|r|n|
V  |E d {V  |	V  d S )
N   r   r   zmarkdown.item.numberrW   r   r   r   r   )r   rd   r   r   r   r   r_   r   r   rjustr   )r3   rA   rC   r   r   number_widthr   r   number_styler!   r   numeralr   r   s                 r+   r   zListItem.render_number  s      3{++,,q0 g.?,.NOO$$T]N$*$UU(()?(PP4==#,l;;V+++L1,<==C\RR%e,, 	 	KE4"/''///OOOOOOONNNN	 	r-   Nr   rL   ro   )
rA   r   rC   r   r   r   r   r   r%   r   )	rM   rN   rO   rT   r^   rm   r@   r   r   r(   r-   r+   r   r     so         J3 3 3 3           r-   r   c                  .    e Zd Zedd            ZddZdS )Linkr"   r#   r$   r   r%   r&   c                t    |j                             dd          } | |j        t          |                    S )Nhref#)r   r   contentrd   )r*   r"   r$   urls       r+   r,   zLink.create1  s1    koofc**s5=#c((+++r-   r6   rd   r   c                <    t          |          | _        || _        d S ra   )r   r6   r   )r3   r6   r   s      r+   rm   zLink.__init__6  s    JJ				r-   NrI   )r6   rd   r   rd   )rM   rN   rO   rQ   r,   rm   r(   r-   r+   r   r   0  sF        , , , [,     r-   r   c                  T     e Zd ZdZdZedd	            Zd fdZd fdZddZ	 xZ
S )	ImageItemz#Renders a placeholder for an image.Fr"   r#   r$   r   r%   r&   c                p     | t          |j                            dd                    |j                  S )zFactory to create markdown element,

        Args:
            markdown (Markdown): The parent Markdown object.
            token (Any): A token from markdown-it.

        Returns:
            MarkdownElement: A new markdown element
        srcr~   )rd   r   r   
hyperlinksr)   s      r+   r,   zImageItem.create@  s1     s3u{ub1122H4GHHHr-   destinationrd   r   r=   r0   c                r    || _         || _        d | _        t                                                       d S ra   )r   r   linkrx   rm   )r3   r   r   ry   s      r+   rm   zImageItem.__init__M  s5    &$#'	r-   r.   r/   c                    |j         j        | _        t          d          | _        t	                                          |           d S rY   )re   r   r   r6   rx   r4   )r3   r.   ry   s     r+   r4   zImageItem.on_enterS  s@    ).	(((	!!!!!r-   rA   r   rC   r   r   c              #  F  K   t          | j        p| j        pd           }| j        p@t	          | j                            d                              dd          d                   }| j        r|                    |           t	          j	        d|dd          }|V  d S )	Nr   /r   u   🌆 r   r~   )end)
r   r   r   r6   r   striprsplitr   stylizeassemble)r3   rA   rC   
link_styletitler6   s         r+   rH   zImageItem.__rich_console__X  s       	 ET-= EFFF
	QT$"2"8"8"="="D"DS!"L"LR"PQQ? 	&MM*%%%}WeSb999




r-   rI   )r   rd   r   r=   r%   r0   rJ   ro   )rM   rN   rO   rT   r!   rQ   r,   rm   r4   rH   r   r   s   @r+   r   r   ;  s        --H
I 
I 
I [
I     " " " " " "
       r-   r   c                  P    e Zd ZdZ	 	 dddZedd            ZddZddZddZ	dS )MarkdownContextz!Manages the console render state.NmonokairA   r   rC   r   r_   r   inline_code_lexerOptional[str]inline_code_themerd   r%   r0   c                    || _         || _        t          |          | _        t	                      | _        d | _        |t          d||          | _        d S d S )Nr~   )r   )rA   rC   r   style_stackr   stack_syntaxr   )r3   rA   rC   r_   r   r   s         r+   rm   zMarkdownContext.__init__f  s^     '1%'8'8-2WW
)-(!"&7?PQQQDLLL )(r-   c                    | j         j        S )z>Current style which is the product of all styles on the stack.)r   currentr   s    r+   re   zMarkdownContext.current_stylew  s     ''r-   r6   	node_typec                8   |dv ru| j         n| j                             |          }|                                 | j        j                            | t          j        || j        j	                             dS | j        j                            | |           dS )z#Called when the parser visits text.>   fencecode_inlineNr   )
r   	highlightr   r   topr9   r   r   r   r  )r3   r6   r  highlight_texts       r+   r9   zMarkdownContext.on_text|  s    000T\5M!\33D99N!!###JN""dmN$:J:RSSS     JN""4.....r-   r^   Union[str, Style]c                |    | j                             |d          }| j                            |           | j        S )zEnter a style context.rW   r   )rA   r   r   pushre   )r3   r^   r_   s      r+   r]   zMarkdownContext.enter_style  s<    &&z6&BBe$$$!!r-   c                8    | j                                         }|S )zLeave a style context.)r   pop)r3   r_   s     r+   rg   zMarkdownContext.leave_style  s     $$&&r-   )Nr   )rA   r   rC   r   r_   r   r   r   r   rd   r%   r0   )r%   r   )r6   rd   r  rd   r%   r0   )r^   r	  r%   r   )
rM   rN   rO   rT   rm   propertyre   r9   r]   rg   r(   r-   r+   r   r   c  s        ++ ,0!*R R R R R" ( ( ( X(	/ 	/ 	/ 	/" " " "     r-   r   c                  f    e Zd ZU dZeeeeeee	e	e
ed
Zded<   h dZ	 	 	 	 	 	 d"d#dZd$dZd%d!ZdS )&Markdowna  A Markdown renderable.

    Args:
        markup (str): A string containing markdown.
        code_theme (str, optional): Pygments theme for code blocks. Defaults to "monokai".
        justify (JustifyMethod, optional): Justify value for paragraphs. Defaults to None.
        style (Union[str, Style], optional): Optional style to apply to markdown.
        hyperlinks (bool, optional): Enable hyperlinks. Defaults to ``True``.
        inline_code_lexer: (str, optional): Lexer to use if inline code highlighting is
            enabled. Defaults to None.
        inline_code_theme: (Optional[str], optional): Pygments theme for inline code
            highlighting, or None for no highlighting. Defaults to None.
    )
paragraph_openheading_openr  
code_blockblockquote_openhrr   ordered_list_openlist_item_openimagez*ClassVar[Dict[str, Type[MarkdownElement]]]r   >   semr   strongr   NrW   Tmarkuprd   r   r\   Optional[JustifyMethod]r_   r	  r   r=   r   r   r   r%   r0   c                    t                                          d          }|| _        |                    |          | _        || _        || _        || _        || _        || _	        |p|| _
        d S )Nstrikethrough)r   enabler  parseparsedr   r\   r_   r   r   r   )	r3   r  r   r\   r_   r   r   r   parsers	            r+   rm   zMarkdown.__init__  sl     $$_55ll6**$07
$!2!2!@jr-   tokensIterable[Token]c              #     K   |D ]H}|j         dk    }|j        dk    }|j        r%|s#|s!|                     |j                  E d{V  D|V  IdS )zFlattens the token stream.r  imgN)r   rt   children_flatten_tokens)r3   r$  r$   is_fenceis_images        r+   r)  zMarkdown._flatten_tokens  s       	 	EzW,HyE)H~ x 8 //??????????	 	r-   rA   r   rC   r   r   c              #  \
  K   |                     | j        d          }|                    d          }t          |||| j        | j                  }| j        }| j        }d}t          j	                    }| 
                    |          D ]}	|	j        }
|	j        }|	j        dk    }|	j        dk    }|	j        d	k    }|
d
k    r|                    |	j        |
           T|
dk    r|                    d|
           q|
dk    r|                    d|
           |
dk    rt!          |	j                            dd                    }| j        rA|                     dd          }|t)          |          z  }|                    |           |j                            t0                              | |	                     9|
dk    r6| j        r|                                 ]|j                                        }t9          |t0                    sJ |                     dd          }|                    |           |                    |j        j        |
           |                                 |                    d|
           |                     dd          }|                    |           |                    |j        |
           |                                 |                    d|
           v||v r|
dk    r|
dk    r|r|                    d|            |r|                                 |                    d|            |	j        r|                    |	j        |
           |                                 
| j                             |	j                  ptB          }|                    | |	          }|s|r/|j                            |           |"                    |           |rr|j                                        }|j         p&|j        o|j        j#        $                    ||          }|r'|r|V  |%                    ||j&                  E d{V  n|r|j                                         |	j        }||                    ||           |j         p&|j        o|j        j#        $                    ||          }|r'|r|V  |%                    ||j&                  E d{V  |s|r|'                    |           |j(        }dS )zRender markdown to the console.rW   r   N)height)r   r   Fr   r   r   r6   	hardbreakr   	softbreakr   	link_openr   r~   zmarkdown.link_urlr   
link_closezmarkdown.linkz ()r  r  rw   ))r   r_   r   r   r   r   r"  inlinesr   r   r)  r   rt   nestingr9   r   rd   r   r   r   r   r]   r   r  r   r,   rg   r  rc   r6   plainr   r   rS   r4   r  r@   renderrC   r;   r!   )r3   rA   rC   r_   r.   r$  inline_style_tagsr!   _new_line_segmentr$   r  rt   enteringexitingself_closingr   r   elementlink_url_styleelement_classshould_renderr6   s                         r+   rH   zMarkdown.__rich_console__  s      !!$*f!==...--!"4"4
 
 
  L#LNN))&11 b	0 b	0E
I)C})Hmr)G =A-LF""y9999k))i0000k))Y////k))5;??626677? A!(!2!23FPV!2!W!WJ%T"2"2"22J''
3333M&&t{{4'?'?@@@@l**? 4''))))%m//11G%gt44444!(!2!2?F!2!S!SJ''
333OOGL$6	BBB'')))OOD)444%,%6%6+V &7 & &N ''777OOGL)<<<'')))OOC3333(((((-- * ''(9C(9(9:::: 	* '')))) ''(9C(9(9:::} ByAAA'')))) !% 1 1%* = = O'..tU;; .| .M&&w///$$W--- L%m//11G(/$5 % O#M-<<WgNN "
 % L# 4"3333#*>>'7?#K#KKKKKKKK! LM%%''' =D'666 $M) O"= O#M-<<WgNN "
 % L# 4"3333#*>>'7?#K#KKKKKKKK 0l 0$$W---&/HEb	0 b	0r-   )r   NrW   TNN)r  rd   r   rd   r\   r  r_   r	  r   r=   r   r   r   r   r%   r0   )r$  r%  r%   r%  ro   )rM   rN   rO   rT   ri   rq   r   r   r   r   r   r   r   rP   r3  rm   r)  rH   r(   r-   r+   r  r    s           $%'("< <H     ,++G
 $+/#)+/+/A A A A A(   t0 t0 t0 t0 t0 t0r-   r  __main__Nz(Render Markdown to the console with Rich)descriptionpathPATHz%path to markdown file, or - for stdin)metavarhelpz-cz--force-colorforce_color
store_truezforce color for non-terminals)destactionr   rE  z-tz--code-themer   r   zpygments code theme)rH  r   rE  z-iz--inline-code-lexerr   z-yz--hyperlinksr   zenable hyperlinks)rH  rI  rE  z-wz--widthr   z*width of output (default will auto-detect))r   rH  r   rE  z-jz	--justifyr\   zenable full text justifyz-pz--pagepagezuse pager to scroll output)r   -rtzutf-8)encodingfullrZ   )r\   r   r   r   )fileforce_terminalr   T)rP  r   record)X
__future__r   typingr   r   r   r   r   r	   r
   markdown_itr   markdown_it.tokenr   r~   r   _loopr   _stackr   rA   r   r   r   r   
containersr   jupyterr   panelr   ruler   segmentr   r_   r   r   r   r   r6   r   r   r    rS   rV   ri   rq   r   r   r   r   r   r   r   r   r  rM   argparsesysArgumentParserr#  add_argumentr   
parse_argsargsrich.consolerB  stdinreadmarkdown_bodyopenmarkdown_filer\   r   r   r   r"   rJ  iopydocStringIOfileiorF  r   printpagergetvaluer(   r-   r+   <module>rp     s+   " " " " " " H H H H H H H H H H H H H H H H H H " " " " " " # # # # # #                   I I I I I I I I I I I I # # # # # # ! ! ! ! ! !                   $ $ $ $ $ $ $ $                      8 8 8 8 8 8 8 8v    _       /           (         k      F       2       8	  	  	  	  	 _ 	  	  	     /   D) ) ) ) ){ ) ) )X    ;   % % % % % % % %P- - - - - - - -`p0 p0 p0 p0 p0| p0 p0 p0f zOOOJJJ$X$>  F 4    
 ,     "                  9     '     )     D$$$$$$yC	((T$)TG444 	1)..00M	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1x,2F??0  H y  			'(8

 
 
 	hFOO%%&&&&& '+4:d
 
 
 	h s   ;JJ #J 