
     IcP                         d Z dZddlZddlZddlZddl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mZ  G d d	e	j        j                  Z G d
 de	j        j                  Z G d de	j        j                  ZdS )a/  
Simple HyperText Markup Language document tree Writer.

The output conforms to the XHTML version 1.0 Transitional DTD
(*almost* strict).  The output contains a minimum of formatting
information.  The cascading style sheet "html4css1.css" is required
for proper viewing with a modern graphical browser.
reStructuredText    N)frontendnodeswritersio)
writer_aux)
_html_base)PILurl2pathnamec                   l   e Zd ZdZ	 dgZdej                            ej                            e	                    ej                            ej        
                    ej                            ej                            e	                    d                    gZej        
                    ej                            ej                            e	                    d          Z ej        ej        j        j        dez  dgedd	fd
d
                    e          z  dgddej        edfdd
                    e          z  dgdej        edfddgd                                dddfddgddej        df          Zed d!d"d#gd$dej        d%fd&d'gd$dej        d%fffz   Zd(Zd)Zd* Zd+S ),Writer)htmlhtml4	html4css1xhtmlxhtml10zhtml4css1.css.html5_polyglotztemplate.txtz-Template file. (UTF-8 encoded, default: "%s")z
--templatez<file>)defaultmetavarzComma separated list of stylesheet paths. Relative paths are expanded if a matching file is found in the --stylesheet-dirs. With --link-stylesheet, the path is rewritten relative to the output HTML file. (default: "%s"),z--stylesheet-pathz<file[,file,...]>
stylesheet)r   	overrides	validatorr   zComma-separated list of directories where stylesheets are found. Used by --stylesheet-path when expanding relative path arguments. (default: "%s")z--stylesheet-dirsz<dir[,dir,...]>)r   r   r   zySpecify the initial header level. Does not affect document title & subtitle (see --no-doc-title). (default: 1 for "<h1>")z--initial-header-levelz1 2 3 4 5 61z<level>)choicesr   r   z&Prepend an XML declaration (default). z--xml-declarationT
store_true)r   actionr   )templatestylesheet_pathstylesheet_dirsinitial_header_levelxml_declarationzHTML4 Writer Options zSpecify the maximum width (in characters) for one-column field names.  Longer field names will span an entire row of the table used to render the field list.  Default is 14 characters.  Use 0 for "no limit".z--field-name-limit   )r   r   r   zSpecify the maximum width (in characters) for options in option lists.  Longer options will span an entire row of the table used to render the option list.  Default is 14 characters.  Use 0 for "no limit".z--option-limitzhtml4css1 writer)r   zhtml writersc                 ,    i | _         t          | _        d S N)partsHTMLTranslatortranslator_classselfs    Clib/python3.11/site-packages/docutils/writers/html4css1/__init__.py__init__zWriter.__init__d   s    
 .    N)__name__
__module____qualname__	supporteddefault_stylesheetsospathabspathdirname__file__joindefault_stylesheet_dirsdefault_templater   filter_settings_specr   r	   r   settings_specvalidate_comma_separated_listsplitvalidate_booleanvalidate_nonnegative_intconfig_sectionconfig_section_dependenciesr.    r/   r-   r   r      ss       BI'*+"!wrwx/H/HII!wrw||#%7??27??83L3L#M#M#305 05  6  6  w||
1122ND D 2H1!/ :<L
L.&8
<
<
> "hh':;;	<
 
) >)+ +
,!hh'>??@ 
' >-/ /	
0K#
$#))++! !
" 3
l 13 3
4A$
 $
 $
MJ "
"  
 Y 9; ;
<" 
Y 9; ;
<	
% M& (N"=/ / / / /r/   r   c                      e Zd ZdZdZdZdZ eej	        j
                  Z
de
d<   dddd	d
Zd Zd Zd Zd ZdjdZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd  Z d! Z!d" Z"d# Z#d$ Z$d% Z%d& Z&d' Z'd( Z(d) Z)dkd+Z*d, Z+d- Z,d. Z-d/ Z.d0 Z/d1 Z0d2 Z1d3 Z2d4 Z3d5 Z4d6 Z5d7 Z6d8 Z7d9 Z8d: Z9d; Z:d< Z;d= Z<d> Z=d? Z>d@ Z?dAdBdCZ@dD ZAdE ZBdF ZCdG ZDdH ZEdI ZFdJ ZGdK ZHdL ZIdM ZJdN ZKdO ZLdP ZMdQ ZNdR ZOdS ZPdT ZQdU ZRdV ZSdW ZTdX ZUdY ZVdZ ZWd[ ZXd\ ZYd] ZZd^ Z[d_ Z\d` Z]da Z^db Z_dc Z`dd Zade Zbdf Zcdg Zddh Zedi ZfdS )lr)   aH  
    The html4css1 writer has been optimized to produce visually compact
    lists (less vertical whitespace).  HTML's mixed content models
    allow list items to contain "<li><p>body elements</p></li>" or
    "<li>just text</li>" or even "<li>text<p>and body
    elements</p>combined</li>", each with different effects.  It would
    be best to stick with strict body elements in list items, but they
    affect vertical spacing in older browsers (although they really
    shouldn't).
    The html5_polyglot writer solves this using CSS2.

    Here is an outline of the optimization:

    - Check for and omit <p> tags in "simple" lists: list items
      contain either a single paragraph, a nested simple list, or a
      paragraph followed by a nested simple list.  This means that
      this list can be compact:

          - Item 1.
          - Item 2.

      But this list cannot be compact:

          - Item 1.

            This second paragraph forces space between list items.

          - Item 2.

    - In non-list contexts, omit <p> tags on a paragraph if that
      paragraph is the only child of its parent (footnotes & citations
      are allowed a label first).

    - Regardless of the above, in definitions, table cells, field bodies,
      option descriptions, and list items, mark the first child with
      'class="first"' and the last child with 'class="last"'.  The stylesheet
      sets the margins (top & bottom respectively) to 0 for these elements.

    The ``no_compact_lists`` setting (``--no-compact-lists`` command-line
    option) disables list whitespace optimization.
    zz<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
zC<meta http-equiv="Content-Type" content="text/html; charset=%s" />
zO<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=%s" />
&nbsp;   )z&mdash;r$   )())r$   r$   )dashparenthesesparensnonec                 b    |                      |dd           |                      |dd           d S )Nfirstr   last)set_class_on_childr,   nodes     r-   set_first_lastzHTMLTranslator.set_first_last   s8    gq111fb11111r/   c                     |                      |dd           | j                            |                     |dd                     d S )NaddressF)metapreCLASS)visit_docinfo_itembodyappendstarttagrT   s     r-   visit_addresszHTMLTranslator.visit_address   sK    ie<<<	tU)DDEEEEEr/   c                 b    | j                             d           |                                  d S Nz
</pre>
)r^   r_   depart_docinfo_itemrT   s     r-   depart_addresszHTMLTranslator.depart_address   s0    	&&&  """""r/   c                     |d                              dd           | j                            |                     |d                     |                     |           d S )Nclassesr   
admonitiondiv)insertr^   r_   r`   rV   rT   s     r-   visit_admonitionzHTMLTranslator.visit_admonition   sZ    Yq,///	tU33444D!!!!!r/   Nc                 :    | j                             d           d S N</div>
r^   r_   rT   s     r-   depart_admonitionz HTMLTranslator.depart_admonition       	$$$$$r/   c                     t          |j        t          j                  r%| j        r| j                            d           d S d S |                     |d           d S )Nz
<br />author)
isinstanceparentr   authorsauthor_in_authorsr^   r_   r]   rT   s     r-   visit_authorzHTMLTranslator.visit_author   sg    dk5=11 	4% -	  ,,,,,- - ##D(33333r/   c                 ~    t          |j        t          j                  r	d| _        d S |                                  d S )NT)rt   ru   r   rv   rw   rd   rT   s     r-   depart_authorzHTMLTranslator.depart_author   s>    dk5=11 	'%)D"""$$&&&&&r/   c                 @    |                      |d           d| _        d S )Nrv   F)r]   rw   rT   s     r-   visit_authorszHTMLTranslator.visit_authors   s&    i000!&r/   c                 .    |                                   d S r'   )rd   rT   s     r-   depart_authorszHTMLTranslator.depart_authors   s      """""r/   c                     | j                             |           |j        j                            |j                            d                     d S )Nstub)colspecsr_   ru   stubs
attributesgetrT   s     r-   visit_colspeczHTMLTranslator.visit_colspec   sG    T"""  !4!4V!<!<=====r/   c           	      Z   t          |                    dd          t          j                  rd S d|j        j        d         v s"d| j        j        v rd|j        j        d         vrd S t          d | j        D                       }| j	        
                    |                     |d                     | j        D ]S}t          |d	         d
z  |z  dz             }| j	        
                    |                     |dd|z                       T| j	        
                    d           d S )NFT)descendsiblingszcolwidths-autorg   zcolwidths-givenc              3   &   K   | ]}|d          V  dS )colwidthNrE   ).0rU   s     r-   	<genexpr>z0HTMLTranslator.depart_colspec.<locals>.<genexpr>   s'      EEt$z*EEEEEEr/   colgroupr   g      Y@g      ?colz%i%%)widthz</colgroup>
)rt   	next_noder   colspecru   settingstable_stylesumr   r^   r_   r`   intemptytag)r,   rU   total_widthr   s       r-   depart_colspeczHTMLTranslator.depart_colspec   sO   dnnUTnBBm% % 	Ft{1)<< 	 99	dk&8&CC	 FEEt}EEEEE	tZ88999M 	E 	ED4
+e3kACGHHHIT]]417(1B + D D E E E E	)))))r/   c                     d|d         v p@| j         j        o4d|d         vo*| j        p#d|j        d         v p|                     |          S )Ncompactrg   opencontents)r   compact_listscompact_simpleru   check_simple_listrT   s     r-   is_compactablezHTMLTranslator.is_compactable   sh    T)_, ;M/ :d9o5:, 9&$+i*@@9 !22488	<r/   c           	          | j                             |                     |dddd                     | j                             d           |                     |           d S )Ntablezdocutils citationvoidrN   r\   framerulesK<colgroup><col class="label" /><col /></colgroup>
<tbody valign="top">
<tr>r^   r_   r`   footnote_backrefsrT   s     r-   visit_citationzHTMLTranslator.visit_citation       	tW-@-36 ' C C 	D 	D 	D 		   	! 	! 	! 	t$$$$$r/   c                 :    | j                             d           d S Nz</td></tr>
</tbody>
</table>
ro   rT   s     r-   depart_citationzHTMLTranslator.depart_citation  +    	 0 	1 	1 	1 	1 	1r/   c           	          d}d|v r||d         z  }nd|v r|| j         j        |d                  z  }| j                            |                     |dd|dg                     d S )N#refidrefnamea[zcitation-reference)suffixhrefrg   )documentnameidsr^   r_   r`   )r,   rU   r   s      r-   visit_citation_referencez'HTMLTranslator.visit_citation_reference  s    d? 	;DM!DD$ 	;DM)$y/::D	tS40D/E ' G G 	H 	H 	H 	H 	Hr/   c                 :    | j                             d           d S )Nz]</a>ro   rT   s     r-   depart_citation_referencez(HTMLTranslator.depart_citation_reference      	!!!!!r/   c                     | j                             d           | j                             |                     |ddd                     d S )Nz- <span class="classifier-delimiter">:</span> spanr$   
classifierr[   r^   r_   r`   rT   s     r-   visit_classifierzHTMLTranslator.visit_classifier  sI    	HIII	tVR|LLMMMMMr/   c                 :    | j                             d           d S )N</span>ro   rT   s     r-   depart_classifierz HTMLTranslator.depart_classifier      	#####r/   c                 d   | j                             |                     |dd                     t          |          dk    rj|d         d                             d           |d         d                             d	           |dd         D ]}|d                             d
           d S d S )Nri   compoundr[      r   rg   zcompound-firstrR   zcompound-lastzcompound-middler^   r_   r`   len)r,   rU   childs      r-   visit_compoundzHTMLTranslator.visit_compound  s    	tU*EEFFFt99q= 	;GI%%&6777HY&&777ad ; ;i ''(9::::		; 	;; ;r/   c                 :    | j                             d           d S rm   ro   rT   s     r-   depart_compoundzHTMLTranslator.depart_compound$  rq   r/   c                     | j                             d           | j                             |                     |dd                     |                     |           d S )Nz</dt>
ddr$   r^   r_   r`   rV   rT   s     r-   visit_definitionzHTMLTranslator.visit_definition(  sX    	###	tT266777D!!!!!r/   c                 :    | j                             d           d S )Nz</dd>
ro   rT   s     r-   depart_definitionz HTMLTranslator.depart_definition-  r   r/   c                 f    | j                             |                     |dd                     d S )Ndldocutilsr[   r   rT   s     r-   visit_definition_listz$HTMLTranslator.visit_definition_list1  s0    	tTDDEEEEEr/   c                 :    | j                             d           d S )Nz</dl>
ro   rT   s     r-   depart_definition_listz%HTMLTranslator.depart_definition_list4  r   r/   c                     d S r'   rE   rT   s     r-   visit_definition_list_itemz)HTMLTranslator.visit_definition_list_item8      r/   c                     d S r'   rE   rT   s     r-   depart_definition_list_itemz*HTMLTranslator.depart_definition_list_item;  r   r/   c                     | j                             |                     |dd                     |                     |           d S )Ntdr$   r   rT   s     r-   visit_descriptionz HTMLTranslator.visit_description?  sB    	tT266777D!!!!!r/   c                 :    | j                             d           d S )Nz</td>ro   rT   s     r-   depart_descriptionz!HTMLTranslator.depart_descriptionC  r   r/   c           	         | j                             t          | j                             | j                            |                     |dddd                     | j                            d           d| _        d S )Nr   docinfor   rN   r   zR<col class="docinfo-name" />
<col class="docinfo-content" />
<tbody valign="top">
T)contextr_   r   r^   r`   
in_docinforT   s     r-   visit_docinfozHTMLTranslator.visit_docinfoG  s    C	NN+++	tW-6-36 ' C C 	D 	D 	D 		 2 	3 	3 	3 r/   c                     | j                             d           d| _        | j                                        }| j         |d          | _        g | _         d S )N</tbody>
</table>
F)r^   r_   r   r   popr   )r,   rU   starts      r-   depart_docinfozHTMLTranslator.depart_docinfoQ  sP    	/000  ""y(			r/   Tc                 r   |rCd|d|                      |                                          d}|                     |           | j                            |                     |dd                     | j                            d| j        j        |         z             t          |          rt          |d         t          j                  r!|d         d                             d	           t          |d
         t          j                  r%|d
         d                             d           d S d S d S )Nz<meta name="z" content="z" />
trr$   z&<th class="docinfo-name">%s:</th>
<td>r   rg   rP   rR   rQ   )attvalastextadd_metar^   r_   r`   languagelabelsr   rt   r   Element)r,   rU   namerY   meta_tags        r-   r]   z!HTMLTranslator.visit_docinfo_itemX  s2    	$ 	$$$DKKMM : : : :<HMM(###	tT266777	B=/56 	7 	7 	7t99 	3$q'5=11 3Q	"))'222$r(EM22 3R#**622222		3 	33 3r/   c                 :    | j                             d           d S )Nz</td></tr>
ro   r+   s    r-   rd   z"HTMLTranslator.depart_docinfo_itemf  s    	(((((r/   c                 f    | j                             |                     |dd                     d S )NrZ   zdoctest-blockr[   r   rT   s     r-   visit_doctest_blockz"HTMLTranslator.visit_doctest_blockj  0    	tU/JJKKKKKr/   c                 :    | j                             d           d S rc   ro   rT   s     r-   depart_doctest_blockz#HTMLTranslator.depart_doctest_blockm      	&&&&&r/   c                     t           j        j                            | |           t	          |          dk    r| j                            d           |                     |           d S )Nr   rG   )r   r	   r)   visit_entryr   r^   r_   rV   rT   s     r-   r  zHTMLTranslator.visit_entryq  s`    )55dDAAAt99> 	'IX&&&D!!!!!r/   c                 h    | j                             | j                                                   d S r'   r^   r_   r   r   rT   s     r-   depart_entryzHTMLTranslator.depart_entryw  ,    	))++,,,,,r/   c                    i }d|v r|d         |d<   d|v r|d         |d<   | j         }| j                            | j         | j        f           d| _        |                     |          | _         | j         r0|s.|                    dd          dz                                   |d<   | j                             | j        |dfi |           dS )z
        The 'start' attribute does not conform to HTML 4.01's strict.dtd, but
        cannot be emulated in CSS1 (HTML 5 reincludes it).
        r   enumtypeclassNr$   z simpleol)	r   r   r_   	compact_pr   r   stripr^   r`   )r,   rU   attsold_compact_simples       r-   visit_enumerated_listz$HTMLTranslator.visit_enumerated_list{  s    
 d? 	* MDM 	- ,DM "0T0$.ABBB"11$77 	H'9 	H!XXgr22Y>EEGGDM	tT::T::;;;;;r/   c                     | j                                         \  | _        | _        | j                            d           d S )Nz</ol>
)r   r   r   r  r^   r_   rT   s     r-   depart_enumerated_listz%HTMLTranslator.depart_enumerated_list  s;    .2l.>.>.@.@+T^	#####r/   c                 h    | j                             |                     |ddd                     d S )Nr   r$   fieldr[   r   rT   s     r-   visit_fieldzHTMLTranslator.visit_field  s2    	tT2WEEFFFFFr/   c                 :    | j                             d           d S N</tr>
ro   rT   s     r-   depart_fieldzHTMLTranslator.depart_field  r   r/   c                    | j                             |                     |ddd                     |                     |dd           |j        }| j        sRt          |j        t          j                  s3|j        	                    |          t          |j                  dz
  k    r|                     |dd	           d S d S )
Nr   r$   z
field-bodyr[   rP   r   r   rQ   rR   )r^   r_   r`   rS   ru   compact_field_listrt   r   r   indexr   )r,   rU   r  s      r-   visit_field_bodyzHTMLTranslator.visit_field_body  s    	tT2\JJKKKgq111# 	6u|U]33	6Lu%%U\):):Q)>>	6 ##D&"55555	6 	6r/   c                 :    | j                             d           d S )Nz</td>
ro   rT   s     r-   depart_field_bodyz HTMLTranslator.depart_field_body  r   r/   c           	         | j                             | j        | j        f           d | _        d|d         v rd| _        n| j        j        rd|d         vrd| _        | j        r|D ]}|d         }t          |t          j                  sJ d |D             }t          |          dk    sHt          |          dk    r,t          |d         t          j
        t          j        f          s	d	| _         n| j                            |                     |d
ddd                     | j                            d           d S )Nr   rg   Tr   rR   c                 F    g | ]}t          |t          j                  |S rE   )rt   r   	Invisibler   ns     r-   
<listcomp>z3HTMLTranslator.visit_field_list.<locals>.<listcomp>  s?     C C C!#-a#A#ACA C C Cr/   r   r   Fr   r   rN   zdocutils field-list)r   r   r\   zK<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
)r   r_   r  r  r   compact_field_listsrt   r   
field_bodyr   	paragraph
line_blockr^   r`   )r,   rU   r  r&  childrens        r-   visit_field_listzHTMLTranslator.visit_field_list  s   T4dnEFFFY' 	+&*D##m/ 	+Y/	+&*D#" 	 
 
"2Y
!*e.>?????C Cz C C CH* H*"8A;$)OU5E#FH H /4D+E	tWF-3-B ' D D 	E 	E 	E 		 2 	3 	3 	3 	3 	3r/   c                     | j                             d           | j                                        \  | _        | _        d S Nr   )r^   r_   r   r   r  r  rT   s     r-   depart_field_listz HTMLTranslator.depart_field_list  s:    	/00026,2B2B2D2D/r/   c           	         i }| j         rd|d<   nd|d<   | j        j        rqt          |                                          | j        j        k    rBd|d<   | j                            d|                     |j        ddd	
          z   dz              n| j                            d           | j	                             | j        |ddfi |           d S )Nzdocinfo-namer	  z
field-name   colspanr  r   r$   r  r[   z<td>&nbsp;</td>th)
r   r   field_name_limitr   r   r   r_   r`   ru   r^   r,   rU   r  s      r-   visit_field_namezHTMLTranslator.visit_field_name  s    ? 	)*DMM(DM]+ 	$T[[]]##dm&DD	$DOL	"&--T26= #0 #? #?!? #4!4 5 5 5 5
 L###	tT2>>>>?????r/   c                     | j                             d           | j                             | j                                                   d S )Nz:</th>r  rT   s     r-   depart_field_namez HTMLTranslator.depart_field_name  sB    	"""	))++,,,,,r/   c           	          | j                             |                     |dddd                     | j                             d           |                     |           d S )Nr   zdocutils footnoter   rN   r   r   r   rT   s     r-   visit_footnotezHTMLTranslator.visit_footnote  r   r/   c                     g }|d         }| j         j        r|rt          |          dk    rX| j                            d           | j                            d           | j                            d|d         z             nt          |d          D ]!\  }}|                    d|d|d           "| j                            d	d
                    |          z             | xj        ddgz  c_        n,| j                            d           | xj        ddgz  c_        t          |          dk    rF|s!|d         d                             d           |d         d                             d           d S d S )Nbackrefsr   r$   </a>z!<a class="fn-backref" href="#%s">r   z<a class="fn-backref" href="#">z<em>(%s)</em> , rg   rP   rR   rQ   )r   footnote_backlinksr   r   r_   	enumerater:   )r,   rU   	backlinksr:  ibackrefs         r-   r   z HTMLTranslator.footnote_backrefs  s   	
#=+ 	% 	%8}}! 
)##B'''##F+++##$G&.qk%2 3 3 3 3 %.h$:$: 5 5LQ$$$(/&4 5 5 5 5##$4tyy7K7K$KLLLR(L###LLRH$LLt99q= 	/  3Q	"))'222HY&&v.....	/ 	/r/   c                 :    | j                             d           d S r   ro   rT   s     r-   depart_footnotezHTMLTranslator.depart_footnote  r   r/   c           	      &   d|d         z   }| j         j        }|dk    rd}| j                            d           n$|dk    sJ d}| j                            d           | j                            |                     |d	|d
|                     d S )Nr   r   bracketsr   ]superscriptz<sup></sup>r   zfootnote-reference)r\   r   )r   footnote_referencesr   r_   r^   r`   )r,   rU   r   formatr   s        r-   visit_footnote_referencez'HTMLTranslator.visit_footnote_reference  s    T']"2Z 	*FL$$$$]****FL)))	tS&-A ' N N 	O 	O 	O 	O 	Or/   c                 n    | j                             | j                                        dz              d S )Nr;  r  rT   s     r-   depart_footnote_referencez(HTMLTranslator.depart_footnote_reference  s1    	))++f455555r/   c                     d S r'   rE   rT   s     r-   visit_generatedzHTMLTranslator.visit_generated  r   r/   zimage/svg+xmlzapplication/x-shockwave-flash)z.svgz.swfc                    i }|d         }t           j                            |          d                                         }|| j        v r||d<   | j        |         |d<   n||d<   |                    d|          |d<   d|v r|d         |d<   d|v r|d         |d<   d	|v ret          rd|v rd|v s| j        j        rt          |          }	 t          j
                            |                    t          j                                        }| j        j                            |                    d
d                     d|vrd|j        d         z  |d<   d|vrd|j        d         z  |d<   ~n# t&          t(          f$ r Y nw xY wdD ]z}||v rtt+          j        d||                   }|sJ t/          |                    d                    t/          |d	                   dz  z  |                    d          ||<   {g }	dD ]U}||v rOt+          j        d||                   r||xx         dz  cc<   |	                    |d||         d           ||= V|	rd                    |	          |d<   t7          |j        t:          j                  sCt7          |j        t:          j                  r't7          |j        j        t:          j                  sd}
nd}
d|v rd|d         z  |d<   || j        v rG| j                              | j!        |ddfi ||                    d|          z   dz   |
z              d S | j                              | j"        |d|
fi |           d S ) Nurir   datatypesrcaltr   heightscale\/z%dpxr   )r   rW  z([0-9.]+)(\S*)$d   r/  z	^[0-9.]+$pxz: ; styler$   
alignalign-%sr	  objectz	</object>img)#r5   r6   splitextlowerobject_image_typesr   r
   r   file_insertion_enabledr   Imager   encodesysgetfilesystemencodingrecord_dependenciesaddreplacesizeIOErrorUnicodeEncodeErrorrematchfloatgroupr_   r:   rt   ru   r   TextElement	referencer^   r`   r   )r,   rU   r  rR  ext	imagepathrd  att_namert  r_  r   s              r-   visit_imagezHTMLTranslator.visit_image#  s   5kgs##A&,,..$)) 	/DL237DLLDK((5#..DKd? 	* MDMt 	,!(^DNd? 	( W_ T1A M8(--	)..%,,S-F-H-HIIK KC
 M599!))$446 6 6d* =(.!(<Wt+ >)/#(1+)=X  !34   D . ( (t# (H%7hHHE LLLekk!nn--tG}1E1E1KLLA&(DN ) 	# 	#H4 #8L$x.99 +NNNd*NNN(((DNNNCDDDN 	,HHUOODMt{E$566 	U_55	DK.0ABB	 FFFd? 	7&g6DM$)) 	II]T]42FFFF!XXeS1124?@BHI J J J J J I]T]4GG$GGHHHHHs   AE3 3FFc                     d S r'   rE   rT   s     r-   depart_imagezHTMLTranslator.depart_imaged  r   r/   c           	          | j                             |                     |dd| j                                        z  d                     d S )Nr   z%s[labelr[   )r^   r_   r`   r   r   rT   s     r-   visit_labelzHTMLTranslator.visit_labeli  sW    	tT54<;K;K;M;M3M-4 ' 6 6 	7 	7 	7 	7 	7r/   c                     | j                             d| j                                        d| j                                                   d S )NrG  z	</td><td>r  rT   s     r-   depart_labelzHTMLTranslator.depart_labelm  sK    	T\-=-=-?-?-?-?AQAQASASASTUUUUUr/   c                     | j                             |                     |dd                     t          |          r#|d         d                             d           d S d S )Nlir$   r   rg   rP   r   rT   s     r-   visit_list_itemzHTMLTranslator.visit_list_itemq  sc    	tT266777t99 	/GI%%g.....	/ 	/r/   c                 :    | j                             d           d S )Nz</li>
ro   rT   s     r-   depart_list_itemzHTMLTranslator.depart_list_itemv  r   r/   c                 b   |d         }d|v r@d |D             |d<   | j                             |                     |dd                     d S | j                             |                     |ddd                     |                                }| j                            |          D ]}|                                ry| j                            |          r1| j                             d| 	                    |          z             a| j                             | 	                    |                     |d	v r| j                             |           | j                             d
t          |          dz
  z  dz              | j                             d           t          j        )Nrg   codec                     g | ]
}|d k    |S )r  rE   )r   clss     r-   r$  z0HTMLTranslator.visit_literal.<locals>.<listcomp>  s!    GGGsGsGGGr/   r$   ttzdocutils literalr[   z<span class="pre">%s</span>)r`  r^  rG   r   r^  </tt>)r^   r_   r`   r   words_and_spacesfindallr  in_word_wrap_pointsearchrj  r   r   SkipNode)r,   rU   rg   texttokens        r-   visit_literalzHTMLTranslator.visit_literal{  s   y/W 	GGgGGGDOIT]]4<<===F	MM$b0BMCC	E 	E 	E{{}}*22488 	D 	DE{{}} D *11%88 9I$$%B'+{{5'9'9&: ; ; ; ; I$$T[[%7%78888+% D	  '''' 	  SZZ!^!<s!BCCCC	!!!nr/   c                 :    | j                             d           d S )Nz</code>ro   rT   s     r-   depart_literalzHTMLTranslator.depart_literal  s    	#####r/   c                 f    | j                             |                     |dd                     d S )NrZ   zliteral-blockr[   r   rT   s     r-   visit_literal_blockz"HTMLTranslator.visit_literal_block  r   r/   c                 :    | j                             d           d S rc   ro   rT   s     r-   depart_literal_blockz#HTMLTranslator.depart_literal_block  r   r/   c                    i }| j         j        rOt          |                                          | j         j        k    r d|d<   | j                            d           n| j                            d           | j                             | j        |dfddi|           | j                            d           | j                            d	           d S )
Nr/  r0  z</tr>
<tr><td>&nbsp;</td>r$   r   r\   zoption-groupz<kbd>r   )r   option_limitr   r   r   r_   r^   r`   r3  s      r-   visit_option_groupz!HTMLTranslator.visit_option_group  s    ]' 	$T[[]]##dm&@@	$DOL <====L###	DM$CCNCdCC	E 	E 	E	!!!Ar/   c                     | j                                          | j                            d           | j                            | j                                                    d S )Nz</kbd></td>
)r   r   r^   r_   rT   s     r-   depart_option_groupz"HTMLTranslator.depart_option_group  sV    	)))	))++,,,,,r/   c           	          | j                             |                     |dddd                     | j                             d           d S )Nr   zdocutils option-listr   rN   r   zH<col class="option" />
<col class="description" />
<tbody valign="top">
r   rT   s     r-   visit_option_listz HTMLTranslator.visit_option_list  si    	mmD'1G"(  8 8	9 	9 	9 		 2 	3 	3 	3 	3 	3r/   c                 :    | j                             d           d S r,  ro   rT   s     r-   depart_option_listz!HTMLTranslator.depart_option_list  s    	/00000r/   c                 d    | j                             |                     |dd                     d S )Nr   r$   r   rT   s     r-   visit_option_list_itemz%HTMLTranslator.visit_option_list_item  s.    	tT26677777r/   c                 :    | j                             d           d S r  ro   rT   s     r-   depart_option_list_itemz&HTMLTranslator.depart_option_list_item  r   r/   c                 B   t          |j        t          j                  st          |j        t          j                  rdS |                                D ]/\  }}|                    |          r|dk    r|g dgdgddgfv s dS 0t          |j        d         t          j                  }|j        j        |d         D ]%}t          |t          j	                  r||u r n dS t          d |j        D                       }| j        s| j        s| j        r|dk    rd	S dS )
zU
        Determine if the <p> tags around paragraph ``node`` can be omitted.
        Frg   rP   rQ   r   Nc                 ^    g | ]*}t          |t          j        t          j        f          (|+S rE   )rt   r   r!  r  r"  s     r-   r$  z>HTMLTranslator.should_be_compact_paragraph.<locals>.<listcomp>  sC     0 0 01:-</ </ 0Q 0 0 0r/   r   T)rt   ru   r   r   r   attlistis_not_defaultr  r)  r!  r   r   r  r  )r,   rU   keyvaluerP   r   parent_lengths          r-   should_be_compact_paragraphz*HTMLTranslator.should_be_compact_paragraph  sj    t{EN33 	t{EN33	 5,,.. 	 	JC##C(( I%*/7)fX/@A+B uu4;q>5;77[)%&&1 	 	E%11 } 55 0 0 0 0 0 1 1  	'		#0A#5	 4ur/   c                     |                      |          r| j                            d           d S | j                            |                     |dd                     | j                            d           d S )Nr$   p</p>
)r  r   r_   r^   r`   rT   s     r-   visit_paragraphzHTMLTranslator.visit_paragraph  sv    ++D11 	*L#####IT]]4b99:::L)))))r/   c                 h    | j                             | j                                                   d S r'   r  rT   s     r-   depart_paragraphzHTMLTranslator.depart_paragraph  r  r/   c                     | j                             |                     |dd                     |                     |           d| _        d S )Nri   sidebarr[   T)r^   r_   r`   rV   
in_sidebarrT   s     r-   visit_sidebarzHTMLTranslator.visit_sidebar  sP    	MM$YM77	9 	9 	9D!!!r/   c                 H    | j                             d           d| _        d S )Nrn   F)r^   r_   r  rT   s     r-   depart_sidebarzHTMLTranslator.depart_sidebar  s#    	$$$r/   c                    t          |j        t          j                  r3| j                            |                     |ddd                     d S | j                            |                     |dd                     d S )Nr   r$   	subscriptr[   subrt   ru   r   literal_blockr^   r_   r`   rT   s     r-   visit_subscriptzHTMLTranslator.visit_subscript  s    dk5#677 	=IT]]41< + > > ? ? ? ? ? IT]]4;;<<<<<r/   c                     t          |j        t          j                  r| j                            d           d S | j                            d           d S )Nr   z</sub>rt   ru   r   r  r^   r_   rT   s     r-   depart_subscriptzHTMLTranslator.depart_subscript  Q    dk5#677 	'IY'''''IX&&&&&r/   c           	      $   t          |j        t          j                  rM| j                            |                     |ddd                     | j                            d           d S t          |j        t          j                  rf| j                            |                     |ddd                     | j                            d           t          | j                  | _
        d S t          |j        t          j                  rd	| j        | j        z   d
z
  z  }| j                            |                     ||dd          |                     i ddd          z              | j                            d|z             d S d S )Nr  r$   zsidebar-subtitler[   r  h2subtitlez</h2>
zh%sr   zsection-subtitler   z</span></%s>
)rt   ru   r   r  r^   r_   r`   r   r   r   in_document_titlesectionsection_levelr"   )r,   rU   tags      r-   visit_subtitlezHTMLTranslator.visit_subtitle  s   dk5=11 	8IT]]4b1C + E E F F FL)))))U^44 		8IT]]4r]LLMMML	***%(^^D"""U]33 	84-0IIAMNCIdC3EFFb&"4FGGHI I I L 03 677777	8 	8r/   c                 J   | j                             | j                                                   | j        rj| j         | j        d         | _        d| _        | j                            | j                    | j                            | j                    | j         d d = d S d S )NrR   r   )	r^   r_   r   r   r  r  body_pre_docinfoextendhtml_subtitlerT   s     r-   depart_subtitlezHTMLTranslator.depart_subtitle  s    	))++,,,! 	 Id&<R&?@DM%&D"!((333%%di000	!!!	 	r/   c                    t          |j        t          j                  r3| j                            |                     |ddd                     d S | j                            |                     |dd                     d S )Nr   r$   rH  r[   supr  rT   s     r-   visit_superscriptz HTMLTranslator.visit_superscript&  s    dk5#677 	=IT]]41> + @ @ A A A A A IT]]4;;<<<<<r/   c                     t          |j        t          j                  r| j                            d           d S | j                            d           d S )Nr   rI  r  rT   s     r-   depart_superscriptz!HTMLTranslator.depart_superscript-  r  r/   c                 ~   | j                             |                     |dd                     | j                             d           d}t          |d                   ri|d         }t          |          dk    rd|d	         z  }nBd}g }|D ]#}|                    d
|d|d           |dz  }$dd                    |          z  }|                    d          rd|d         z  }nd}| j                             d|d         d|d         d|                     |d                   d|d|d           d S )Nri   zsystem-messager[   z <p class="system-message-title">r$   r:  r   z%; <em><a href="#%s">backlink</a></em>r   z
<a href="#r<  r;  z; <em>backlinks: %s</em>r=  linez	, line %szSystem Message: rT  rZ  levelz (<tt class="docutils">sourcer  rJ   r  )r^   r_   r`   r   r:   hasattrrj  )r,   rU   backref_textr:  rA  r@  rB  r  s           r-   visit_system_messagez#HTMLTranslator.visit_system_message4  s   	tU:JKKLLL	;<<<tJ   	8J'H8}}! 
8 G"*1+!. 	'  G$$$www%JKKKFAA :"&))I"6"6!7<< 	f-DDD	 LLL$w--- KKX7777|||M 	N 	N 	N 	N 	Nr/   c                 :    | j                             d           d S rm   ro   rT   s     r-   depart_system_messagez$HTMLTranslator.depart_system_messageN  rq   r/   c           	      V   | j                             | j                   d| _        ddi}d| j        j        g}d|v r|                    d|d         z             d|v rd|d         z  |d	<   | j                             | j        |d
fdd                    |          i|           d S )NTborderr   r   ra  rb  r   z	width: %sr_  r   r\   r^  )r   r_   r  r   r   r^   r`   r:   )r,   rU   r  rg   s       r-   visit_tablezHTMLTranslator.visit_tableR  s    DN+++!}t}89d? 	7NN:W5666d? 	8'$w-7DM	DM$IIsxx/@/@IDII	K 	K 	K 	K 	Kr/   c                 v    | j                                         | _        | j                            d           d S )Nz	</table>
)r   r   r  r^   r_   rT   s     r-   depart_tablezHTMLTranslator.depart_table^  s3    ))++	&&&&&r/   c                 f    | j                             |                     |dd                     d S )Ntbodytopvalignr   rT   s     r-   visit_tbodyzHTMLTranslator.visit_tbodyc  s0    	tWUCCDDDDDr/   c                 :    | j                             d           d S )Nz	</tbody>
ro   rT   s     r-   depart_tbodyzHTMLTranslator.depart_tbodyf  r   r/   c           
          | j                             |                     |dd|j        d         |j        d                              d S )Ndtr$   rg   ids)rg   r  )r^   r_   r`   ru   rT   s     r-   
visit_termzHTMLTranslator.visit_termj  sZ    	tT2/3{9/E+/;u+= ' ? ? 	@ 	@ 	@ 	@ 	@r/   c                     d S r'   rE   rT   s     r-   depart_termzHTMLTranslator.depart_termo  r   r/   c                 f    | j                             |                     |dd                     d S )Ntheadbottomr  r   rT   s     r-   visit_theadzHTMLTranslator.visit_theads  s0    	tWXFFGGGGGr/   c                 :    | j                             d           d S )Nz	</thead>
ro   rT   s     r-   depart_theadzHTMLTranslator.depart_theadv  r   r/   c                    g }| j         | j        z   dz
  }t          |j                  dk    r:t	          |j        d         t
          j                  r|                    d           |dk    r|                    d|z             dt          |d          z  }| 	                    ||d|          }|
                    d          r.i }d	|d
<   d|d         z   |d<   | | j	        i ddfi |z  }d|z  }nd|z  }||fS )Nr   r/  zwith-subtitle   zh%ir$   )rg   r   ztoc-backrefr	  r   r   r   z
</a></%s>
z</%s>
)r  r"   r   ru   rt   r   r  r_   minr`   r  )r,   rU   rg   h_leveltagname	start_tagr  	close_tags           r-   section_title_tagsz!HTMLTranslator.section_title_tags{  s#   $t'@@1D! 	,4;q>5>::	,NN?+++Q; 	,NN57?+++#gq//)MM$WMEE	<<   	,D)DMg.DLr3;;d;;;I%/II!G+I)##r/   r'   )T)gr0   r1   r2   __doc__doctypecontent_typecontent_type_mathmldictr	   r)   special_charactersattribution_formatsrV   ra   re   rk   rp   rx   rz   r|   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r]   rd   r   r   r  r  r  r  r  r  r  r  r*  r-  r4  r6  r8  r   rD  rL  rN  rP  rg  r|  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rE   r/   r-   r)   r)   i   s       ( (\	H <LO j7JKK(t $3*4%/#+- -2 2 2
F F F# # #
" " "
% % % %4 4 4' ' '' ' '# # #> > >
* * *(< < <% % %1 1 1H H H" " "N N N$ $ $; ; ;% % %" " "
$ $ $F F F$ $ $    " " "" " "    3 3 3 3) ) )L L L' ' '" " "- - -< < <($ $ $
G G G$ $ $
6 
6 
6$ $ $3 3 36E E E@ @ @"- - -
% % %/ / /41 1 1
O O O6 6 6   #2!@B B?I ?I ?IB  
7 7 7V V V/ / /
$ $ $
  <$ $ $
L L L' ' '  - - -
3 3 31 1 18 8 8$ $ $
  <* * *- - -       
= = =' ' '8 8 8   = = =' ' 'N N N4% % %
K 
K 
K' ' '
E E E' ' '@ @ @
  H H H' ' '
$ $ $ $ $r/   r)   c                   *    e Zd ZdZd Zd Zd Zd ZdS )SimpleListCheckerz
    Raise `nodes.NodeFound` if non-simple list item is encountered.

    Here "simple" means a list item containing nothing other than a single
    paragraph, a simple list, or a paragraph followed by a simple list.
    c                    g }|j         D ]1}t          |t          j                  s|                    |           2|rtt          |d         t          j                  rTt          |d         t          j                  s t          |d         t          j                  r|                                 t          |          dk    rd S t          j
        )Nr   rR   r   )r)  rt   r   r!  r_   r'  bullet_listenumerated_listr   r   	NodeFound)r,   rU   r)  r   s       r-   r  z!SimpleListChecker.visit_list_item  s    ] 	' 	'EeU_55 '&&& 	HQKAA 	HRL%*;<<	x|U-BCC	 LLNNNx==A 	"F/!r/   c                     t           j        r'   )r   r  rT   s     r-   r  z!SimpleListChecker.visit_paragraph  s
    nr/   c                     t           j        r'   r   r  rT   s     r-   r   z'SimpleListChecker.visit_definition_list  
    or/   c                     t           j        r'   r  rT   s     r-   r   zSimpleListChecker.visit_docinfo  r  r/   N)r0   r1   r2   r  r  r  r   r   rE   r/   r-   r  r    sZ         " " "(        r/   r  )r  __docformat__os.pathr5   rs  rk  r   r   r   r   r   docutils.transformsr   docutils.writersr	   docutils.writers._html_baser
   r   r   r)   r  rE   r/   r-   <module>r     sF    #  				 



  1 1 1 1 1 1 1 1 1 1 1 1 * * * * * * ' ' ' ' ' ' 9 9 9 9 9 9 9 9L/ L/ L/ L/ L/W& L/ L/ L/^d$ d$ d$ d$ d$W'6 d$ d$ d$N$ $ $ $ $*< $ $ $ $ $r/   