
    k7i                       S r SSKJr  SrSSKrSSKrSSKJrJ	r	J
r
  SSKJr  SSKJr   " S S	\
R                  R                  5      r " S
 S\
R                  R                   5      r " S S\
R                  R"                  5      rg)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.
    )annotationsreStructuredTextN)frontendnodeswriters)
_html_base)PILc                     \ rS rSrSr S/rS\R                  R                  \R                  R                  \
5      5      \R                  R                  \R                  R                  \R                  R                  \R                  R                  \
5      5      S5      5      /r\R                  R                  \R                  R                  \R                  R                  \
5      5      S5      r\R                  " \R"                  R$                  R&                  S\-  S/\S	S
.4SSR                  \5      -  S/SS\R(                  \S.4SSR                  \5      -  S/S\R(                  \S.4SS/SR+                  5       SSS.4SS/SS\R,                  S.4S S!/S"S#\R.                  S$.4S%9r\S&S'S(S)/S*S\R0                  S+.4S,S-/S*S\R0                  S+.444-   rS.rS2S/ jrS0rg1)3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   zmMath output format (one of "MathML", "HTML", "MathJax", or "LaTeX") and option(s). (default: "HTML math.css")z--math-outputz<format [option(s)]>zHTML math.css)r   r   r   z&Prepend an XML declaration (default). z--xml-declarationT
store_true)r   actionr   )templatestylesheet_pathstylesheet_dirsinitial_header_levelmath_output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 writerc                (    0 U l         [        U l        g N)partsHTMLTranslatortranslator_classselfs    ]/home/james-whalen/.local/lib/python3.13/site-packages/docutils/writers/html4css1/__init__.py__init__Writer.__init__k   s    
 .    )r(   r*   NreturnNone)__name__
__module____qualname____firstlineno__	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_math_outputvalidate_booleanvalidate_nonnegative_intconfig_sectionr.   __static_attributes__ r0   r-   r   r      sI   BI'*+"!wwrwwx/HI!wwrww||#%77??277??83L#M#305  6! ww||
12ND 11!!//;>NNN(X>@
 !$)< =	>
 !!+,"@@+-	.)+.884K+LM !!)"@@/12M%&%++-#!#	$A.?"779	: 5 !"3356I)
MT "
"  
 Y 99;
<" 
Y 99;
<	%
 
M( (N/r0   r   c                     \ rS rSrSrSrSrSr\R                  R                  R                  5       r
S\
S'   SS	S	S
S.rSnS jrSnS jrSnS jrSnS jrSoSnS jjrSnS jrSnS jrSnS jrSnS jrSnS jrSnS jrS rSnS jrSnS jrSnS jrSnS jrSnS jrSnS jrSnS jrSnS  jr SnS! jr!SnS" jr"SnS# jr#SnS$ jr$SnS% jr%SnS& jr&SnS' jr'SnS( jr(SnS) jr)SnS* jr*SpSnS+ jjr+SnS, jr,SnS- jr-SnS. jr.SnS/ jr/SnS0 jr0SnS1 jr1SnS2 jr2SnS3 jr3SnS4 jr4SnS5 jr5SnS6 jr6SnS7 jr7SnS8 jr8SnS9 jr9SnS: jr:SnS; jr;SnS< jr<SnS= jr=SnS> jr>SnS? jr?SnS@ jr@SASBSCSDSESF.rASnSG jrBSnSH jrCSnSI jrDSnSJ jrESnSK jrFSnSL jrGSM rHSnSN jrISnSO jrJSnSP jrKSnSQ jrLSnSR jrMSnSS jrNSnST jrOSnSU jrPSnSV jrQSqSW jrRSnSX jrSSnSY jrTSnSZ jrUSnS[ jrVSnS\ jrWSnS] jrXSnS^ jrYSnS_ jrZSnS` jr[SnSa jr\SnSb jr]SnSc jr^SnSd jr_SnSe jr`SnSf jraSnSg jrbSnSh jrcSnSi jrdSnSj jreSnSk jrfSl rgSmrhg)rr)   p   a  
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                P    U R                  USS5        U R                  USS5        g )Nfirstr   last)set_class_on_childr,   nodes     r-   set_first_lastHTMLTranslator.set_first_last   s&    gq1fb1r0   c                z    U R                  USSS9  U R                  R                  U R                  USSS95        g )NaddressF)metapreCLASS)visit_docinfo_itembodyappendstarttagr[   s     r-   visit_addressHTMLTranslator.visit_address   s8    ie<		tU)DEr0   c                Z    U R                   R                  S5        U R                  5         g Nz
</pre>
)rf   rg   depart_docinfo_itemr[   s     r-   depart_addressHTMLTranslator.depart_address   s     		&  "r0   c                    US   R                  SS5        U R                  R                  U R                  US5      5        U R	                  U5        g )Nclassesr   
admonitiondiv)insertrf   rg   rh   r]   r[   s     r-   visit_admonitionHTMLTranslator.visit_admonition   sA    Yq,/		tU34D!r0   Nc                :    U R                   R                  S5        g N</div>
rf   rg   r[   s     r-   depart_admonition HTMLTranslator.depart_admonition       		$r0   c                    [        UR                  [        R                  5      (       a.  U R                  (       a  U R
                  R                  S5        g g U R                  US5        g )Nz
<br />author)
isinstanceparentr   authorsauthor_in_authorsrf   rg   re   r[   s     r-   visit_authorHTMLTranslator.visit_author   sI    dkk5==11%%		  , & ##D(3r0   c                    [        UR                  [        R                  5      (       a  SU l        g U R                  5         g )NT)r   r   r   r   r   rm   r[   s     r-   depart_authorHTMLTranslator.depart_author   s+    dkk5==11%)D"$$&r0   c                6    U R                  US5        SU l        g )Nr   F)re   r   r[   s     r-   visit_authorsHTMLTranslator.visit_authors   s    i0!&r0   c                $    U R                  5         g r'   )rm   r[   s     r-   depart_authorsHTMLTranslator.depart_authors   s      "r0   c                    U R                   R                  U5        UR                  R                  R                  UR                  R                  S5      5        g )Nstub)colspecsrg   r   stubs
attributesgetr[   s     r-   visit_colspecHTMLTranslator.visit_colspec   s;    T"  !4!4V!<=r0   c           	        [        UR                  SSS9[        R                  5      (       a  g SUR                  R                  S   ;   d7  SU R
                  R                  ;   a  SUR                  R                  S   ;  a  g [        S U R                   5       5      nU R                  R                  U R                  US5      5        U R                   HI  nUR                  5       S	-  U-  S
-   nU R                  R                  U R                  USSU-  S95        MK     U R                  R                  S5        g )NFTdescendsiblingszcolwidths-autorq   zcolwidths-givenc              3  @   #    U  H  oR                  5       v   M     g 7fr'   )	propwidth).0r\   s     r-   	<genexpr>0HTMLTranslator.depart_colspec.<locals>.<genexpr>   s     E}t..**}s   colgroupg      Y@g      ?colz%i%%)widthz</colgroup>
)r   	next_noder   colspecr   settingstable_stylesumr   rf   rg   rh   r   emptytag)r,   r\   total_widthcolwidths       r-   depart_colspecHTMLTranslator.depart_colspec   s	   dnnUTnBmm% % 2 29 == DMM$=$==%T[[-?-?	-JJEt}}EE		tZ89MMD~~'%/+=CHIIT]]417(1B + D E " 			)r0   c                    SUS   ;   =(       di    U R                   R                  =(       aL    SUS   ;  =(       a=    U R                  =(       d*    SUR                  S   ;   =(       d    U R	                  U5      $ )Ncompactrq   opencontents)r   compact_listscompact_simpler   check_simple_listr[   s     r-   is_compactableHTMLTranslator.is_compactable   so    T)_, ;MM// :d9o5:,, 9&$++i*@@9 !2248	<r0   c           
         U R                   R                  U R                  USSSSS95        U R                   R                  S5        U R                  U5        g )Ntablezdocutils citationvoidrU   rd   framerulesK<colgroup><col class="label" /><col /></colgroup>
<tbody valign="top">
<tr>rf   rg   rh   footnote_backrefsr[   s     r-   visit_citationHTMLTranslator.visit_citation  [    		tW-@-36 ' C 	D 			   	! 	t$r0   c                :    U R                   R                  S5        g Nz</td></tr>
</tbody>
</table>
rz   r[   s     r-   depart_citationHTMLTranslator.depart_citation
      		 0 	1r0   c           
         SnSU;   a  X!S   -  nO$SU;   a  X R                   R                  US      -  nU R                  R                  U R	                  USSUS/S95        g )N#refidrefnamea[zcitation-reference)suffixhrefrq   )documentnameidsrf   rg   rh   )r,   r\   r   s      r-   visit_citation_reference'HTMLTranslator.visit_citation_reference  so    d?M!D$MM))$y/::D		tS40D/E ' G 	Hr0   c                :    U R                   R                  S5        g )Nz]</a>rz   r[   s     r-   depart_citation_reference(HTMLTranslator.depart_citation_reference      		!r0   c           	         U R                   R                  S5        U R                   R                  U R                  USSSS95        g )Nz- <span class="classifier-delimiter">:</span> spanr$   
classifierrc   rf   rg   rh   r[   s     r-   visit_classifierHTMLTranslator.visit_classifier  s8    		HI		tVR|LMr0   c                \    U R                   R                  S5        U R                  U5        g )N</span>)rf   rg   depart_termr[   s     r-   depart_classifier HTMLTranslator.depart_classifier  s"    		#r0   c                   U R                   R                  U R                  USSS95        [        U5      S:  aO  US   S   R                  S5        US   S   R                  S	5        USS  H  nUS   R                  S
5        M     g g )Nrs   compoundrc      r   rq   zcompound-firstrY   zcompound-lastzcompound-middlerf   rg   rh   len)r,   r\   childs      r-   visit_compoundHTMLTranslator.visit_compound$  s    		tU*EFt9q=GI%%&67HY&&7ai ''(9: $ r0   c                :    U R                   R                  S5        g rx   rz   r[   s     r-   depart_compoundHTMLTranslator.depart_compound,  r}   r0   c                ~    U R                   R                  U R                  USS5      5        U R                  U5        g )Nddr$   rf   rg   rh   r]   r[   s     r-   visit_definitionHTMLTranslator.visit_definition0  /    		tT267D!r0   c                :    U R                   R                  S5        g )Nz</dd>
rz   r[   s     r-   depart_definition HTMLTranslator.depart_definition4      		#r0   c                X    U R                   R                  U R                  USSS95        g )Ndldocutilsrc   r   r[   s     r-   visit_definition_list$HTMLTranslator.visit_definition_list8  s#    		tTDEr0   c                :    U R                   R                  S5        g )Nz</dl>
rz   r[   s     r-   depart_definition_list%HTMLTranslator.depart_definition_list;  r   r0   c                    g r'   rK   r[   s     r-   visit_definition_list_item)HTMLTranslator.visit_definition_list_item?      r0   c                    g r'   rK   r[   s     r-   depart_definition_list_item*HTMLTranslator.depart_definition_list_itemB  r  r0   c                ~    U R                   R                  U R                  USS5      5        U R                  U5        g )Ntdr$   r   r[   s     r-   visit_description HTMLTranslator.visit_descriptionF  r   r0   c                :    U R                   R                  S5        g )Nz</td>rz   r[   s     r-   depart_description!HTMLTranslator.depart_descriptionJ  r   r0   c           
         U R                   R                  [        U R                  5      5        U R                  R                  U R	                  USSSSS95        U R                  R                  S5        SU l        g )Nr   docinfor   rU   r   zR<col class="docinfo-name" />
<col class="docinfo-content" />
<tbody valign="top">
T)contextrg   r   rf   rh   
in_docinfor[   s     r-   visit_docinfoHTMLTranslator.visit_docinfoN  sn    C		N+		tW-6-36 ' C 	D 			 2 	3 r0   c                    U R                   R                  S5        SU l        U R                  R	                  5       nU R                   US  U l        / U l         g )N</tbody>
</table>
F)rf   rg   r  r  popr  )r,   r\   starts      r-   depart_docinfoHTMLTranslator.depart_docinfoX  sG    		/0  "yy(	r0   c                b   U(       aC  SU< SU R                  UR                  5       5      < S3nU R                  R                  U5        U R                  R                  U R                  USS5      5        U R                  R                  SU R                  R                  U   -  5        [        U5      (       at  [        US   [        R                  5      (       a  US   S   R                  S	5        [        US
   [        R                  5      (       a  US
   S   R                  S5        g g g )Nz<meta name="z" content="z" />
trr$   z&<th class="docinfo-name">%s:</th>
<td>r   rq   rW   rY   rX   )attvalastextra   rg   rf   rh   languagelabelsr   r   r   Element)r,   r\   namera   meta_tags        r-   re   !HTMLTranslator.visit_docinfo_item_  s    DKKM :<HIIX&		tT267		B==//56 	7t99$q'5==11Q	"))'2$r(EMM22R#**62 3 r0   c                :    U R                   R                  S5        g )Nz</td></tr>
rz   r+   s    r-   rm   "HTMLTranslator.depart_docinfo_itemm  s    		(r0   c                X    U R                   R                  U R                  USSS95        g )Nrb   zdoctest-blockrc   r   r[   s     r-   visit_doctest_block"HTMLTranslator.visit_doctest_blockq  #    		tU/JKr0   c                :    U R                   R                  S5        g rl   rz   r[   s     r-   depart_doctest_block#HTMLTranslator.depart_doctest_blockt      		&r0   c                    [         R                  R                  R                  X5        [	        U5      S:X  a  U R
                  R                  S5        U R                  U5        g )Nr   rN   )r   r   r)   visit_entryr   rf   rg   r]   r[   s     r-   r.  HTMLTranslator.visit_entryx  sG    ))55dAt9>IIX&D!r0   c                j    U R                   R                  U R                  R                  5       5        g r'   rf   rg   r  r  r[   s     r-   depart_entryHTMLTranslator.depart_entry~  s!    		))+,r0   c                   0 nSU;   a  US   US'   SU;   a  US   US'   U R                   nU R                  R                  U R                   U R                  45        SU l        U R	                  U5      U l         U R                   (       a-  U(       d&  UR                  SS5      S-   R                  5       US'   U R                  R                  U R                  " US40 UD65        g)zz
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  rg   	compact_pr   r   striprf   rh   )r,   r\   attsold_compact_simples       r-   visit_enumerated_list$HTMLTranslator.visit_enumerated_list  s    
 d? MDM ,DM "00T00$..AB"11$7'9!XXgr2Y>EEGDM		tT:T:;r0   c                    U R                   R                  5       u  U l        U l        U R                  R                  S5        g )Nz</ol>
)r  r  r   r8  rf   rg   r[   s     r-   depart_enumerated_list%HTMLTranslator.depart_enumerated_list  s0    .2ll.>.>.@+T^		#r0   c           	     Z    U R                   R                  U R                  USSSS95        g )Nr  r$   fieldrc   r   r[   s     r-   visit_fieldHTMLTranslator.visit_field  s%    		tT2WEFr0   c                :    U R                   R                  S5        g N</tr>
rz   r[   s     r-   depart_fieldHTMLTranslator.depart_field  r   r0   c           	        U R                   R                  U R                  USSSS95        U R                  USS5        UR                  nU R
                  (       d^  [        UR                  [        R                  5      (       d5  UR                  R                  U5      [        UR                  5      S-
  :X  a  U R                  USS	5        g g )
Nr  r$   z
field-bodyrc   rW   r   r   rX   rY   )rf   rg   rh   rZ   r   compact_field_listr   r   r  indexr   )r,   r\   rB  s      r-   visit_field_bodyHTMLTranslator.visit_field_body  s    		tT2\JKgq1##%,,66||!!%(C,=,AA ##D&"5	 Br0   c                :    U R                   R                  S5        g )Nz</td>
rz   r[   s     r-   depart_field_body HTMLTranslator.depart_field_body  r   r0   c           
         U R                   R                  U R                  U R                  45        S U l        SUS   ;   a  SU l        O+U R                  R
                  (       a  SUS   ;  a  SU l        U R                  (       a  U H  nUS   n[        U[        R                  5      (       d   eU Vs/ s H&  n[        U[        R                  5      (       a  M$  UPM(     nn[        U5      S:X  a  Mm  [        U5      S:X  a4  [        US   [        R                  [        R                  45      (       a  M  SU l          O   U R                  R                  U R                  US	S
SSS95        U R                  R                  S5        g s  snf )Nr   rq   Tr   rY   r   r   Fr   r   rU   zdocutils field-list)r   r   rd   zK<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
)r  rg   rK  r8  r   compact_field_listsr   r   
field_body	Invisibler   	paragraph
line_blockrf   rh   )r,   r\   rB  rT  nchildrens         r-   visit_field_listHTMLTranslator.visit_field_list  sZ   T44dnnEFY'&*D#mm//Y/&*D#"""2Y
!*e.>.>????'1 Cz!#-a#A z CH*x=A-&x{(-9I9I'JL L.3D+  			tWF-3-B ' D 	E 			 2 	3Cs   5#FFc                    U R                   R                  S5        U R                  R                  5       u  U l        U l        g Nr  )rf   rg   r  r  rK  r8  r[   s     r-   depart_field_list HTMLTranslator.depart_field_list  s1    		/026,,2B2B2D/r0   c           
        0 nU R                   (       a  SUS'   OSUS'   U R                  R                  (       ar  [        UR	                  5       5      U R                  R                  :  aA  SUS'   U R
                  R                  SU R                  UR                  SSS	S
9-   S-   5        OU R
                  R                  S5        U R                  R                  U R                  " USS40 UD65        g )Nzdocinfo-namer6  z
field-name   colspanrG  r  r$   rB  rc   z<td>&nbsp;</td>th)
r  r   field_name_limitr   r  r  rg   rh   r   rf   r,   r\   r:  s      r-   visit_field_nameHTMLTranslator.visit_field_name  s    ??*DM(DMMM**DKKM"T]]%C%CCDOLL	"&--T26= #0 #?!? #4!4 5
 LL#		tT2>>?r0   c                    U R                   R                  S5        U R                   R                  U R                  R                  5       5        g )Nz:</th>r1  r[   s     r-   depart_field_name HTMLTranslator.depart_field_name  s3    		"		))+,r0   c           
         U R                   R                  U R                  USSSSS95        U R                   R                  S5        U R                  U5        g )Nr   zdocutils footnoter   rU   r   r   r   r[   s     r-   visit_footnoteHTMLTranslator.visit_footnote  r   r0   c                   / nUS   nU R                   R                  (       a  U(       a  [        U5      S:X  aX  U R                  R	                  S5        U R                  R	                  S5        U R                  R	                  SUS   -  5        O[        US5       H  u  pEUR	                  SU< SU< S35        M!     U R                  R	                  S	S
R                  U5      -  5        U =R                  SS/-  sl        O2U R                  R	                  S5        U =R                  SS/-  sl        [        U5      S:  a6  U(       d  US   S   R	                  S5        US   S   R	                  S5        g g )Nbackrefsr   r$   </a>z!<a class="fn-backref" href="#%s">r   z<a class="fn-backref" href="#">z<em>(%s)</em> , rq   rW   rY   rX   )r   footnote_backlinksr   r  rg   	enumerater?   )r,   r\   	backlinksro  ibackrefs         r-   r    HTMLTranslator.footnote_backrefs  s:   	
#==++8}!##B'##F+##$G&.qk%2 3 %.h$:LQ$$(/&4 5 %; ##$4tyy7K$KLR(LL#LLRH$Lt9q= Q	"))'2HY&&v. r0   c                :    U R                   R                  S5        g r   rz   r[   s     r-   depart_footnoteHTMLTranslator.depart_footnote  r   r0   c           
     *   SUS   -   nU R                   R                  nUS:X  a  SnU R                  R                  S5        O%US:X  d   eSnU R                  R                  S5        U R                  R                  U R                  US	US
US95        g )Nr   r   bracketsr   ]superscriptz<sup></sup>r   zfootnote-reference)rd   r   )r   footnote_referencesr  rg   rf   rh   )r,   r\   r   formatr   s        r-   visit_footnote_reference'HTMLTranslator.visit_footnote_reference  s    T']"22ZFLL$]***FLL)		tS&-A ' N 	Or0   c                p    U R                   R                  U R                  R                  5       S-   5        g )Nrp  r1  r[   s     r-   depart_footnote_reference(HTMLTranslator.depart_footnote_reference  s&    		))+f45r0   c                    g r'   rK   r[   s     r-   visit_generatedHTMLTranslator.visit_generated  r  r0   zimage/svg+xmlzapplication/x-shockwave-flashz	video/mp4z
video/webmz	video/ogg)z.svgz.swfz.mp4z.webmz.oggc                   0 nUS   n[         R                  R                  U5      S   R                  5       nX@R                  ;   a  X2S'   U R                  U   US'   OX2S'   UR                  SU5      US'   SU;   a  US   US'   SU;   a  US   US'   S	U;   GaB  [        (       a  SU;  d  SU;  a  U R                  R                  (       a   U R                  U5      n[        R                  R                  U5       nUR                  nS S S 5        U R                  R                  R                  UR                  5       5        SU;  a  S
WS   -  US'   SU;  a  S
WS   -  US'   S Ho  n	X;   d  M
  [,        R.                  " SX)   5      n
U
(       d   e[1        U
R3                  S5      5      [1        US	   5      S-  -  < U
R3                  S5      < 3X)'   Mq     / nS HQ  n	X;   d  M
  [,        R.                  " SX)   5      (       a  X)==   S-  ss'   UR5                  U	< SX)   < S35        X)	 MS     U(       a  SR7                  U5      US'   [9        UR:                  [<        R>                  5      (       a\  [9        UR:                  [<        R@                  5      (       a6  [9        UR:                  R:                  [<        R>                  5      (       d  SnOSnSU;   a  SUS   -  US'   X@R                  ;   aH  U RB                  R5                  U RD                  " USS40 UD6UR                  SU5      -   S-   U-   5        g U RB                  R5                  U RF                  " USU40 UD65        g ! , (       d  f       GNn= f! [         ["        [$        4 a3  nU R&                  R(                  R+                  SU 35         S nAGN_S nAff = f)Nurir   datatypesrcaltr   heightscalez%dpxr   zProblem reading image file: )r   r  z([0-9.]+)(\S*)$d   ra  z	^[0-9.]+$pxz: ; style
r$   alignalign-%sr6  objectz	</object>img)$r:   r;   splitextlowerobject_image_typesr   r	   r   file_insertion_enableduri2pathImager   sizerecord_dependenciesaddas_posix
ValueErrorOSErrorUnicodeEncodeErrorr   reporterwarningrematchfloatgrouprg   r?   r   r   r   TextElement	referencerf   rh   r   )r,   r\   r:  r  ext	imagepathr  img_sizeeatt_namer  r  r   s                r-   visit_imageHTMLTranslator.visit_image.  sE   5kggs#A&,,.)))L2237DLK((5#.DKd? MDMt!(^DNd?,0DMM88> $c 2I	2c#&88 3 MM5599):L:L:NOd*(.!(<Wt+)/(1+)=X-#HH%7HE L5ekk!n-tG}1E1KLA&(DN	 . )H88L$.99Nd*N(DNCDN * HHUODM4;;(9(9::$++u77t{{1153D3DEEFFd?&g6DM)))IIT]]42FF#xxs346ABDJK L IIT]]4G$GHU 32"G-?@ <MM**226qc:< <<s0   0N =M1
N 1
N ;N O(OOc                    g r'   rK   r[   s     r-   depart_imageHTMLTranslator.depart_imagen  r  r0   c           	         U R                   R                  U R                  USSU R                  R	                  5       -  SS95        g )Nr  z%s[labelrc   )rf   rg   rh   r  r  r[   s     r-   visit_labelHTMLTranslator.visit_labels  s?    		tT54<<;K;K;M3M-4 ' 6 	7r0   c                    U R                   R                  SU R                  R                  5        SU R                  R                  5        35        g )Nr~  z	</td><td>r1  r[   s     r-   depart_labelHTMLTranslator.depart_labelw  s=    		1T\\--/0	$,,:J:J:L9MNOr0   c                    U R                   R                  U R                  USS5      5        [        U5      (       a  US   S   R                  S5        g g )Nlir$   r   rq   rW   r   r[   s     r-   visit_list_itemHTMLTranslator.visit_list_item{  sF    		tT267t99GI%%g. r0   c                :    U R                   R                  S5        g )Nz</li>
rz   r[   s     r-   depart_list_itemHTMLTranslator.depart_list_item  r   r0   c           	        US   nSU;   aJ  U Vs/ s H  o3S:w  d  M
  UPM     snUS'   U R                   R                  U R                  USS5      5        g U R                   R                  U R                  USSSS95        UR                  5       nU R                  R                  U5       H  nUR                  5       (       a{  U R                  R                  U5      (       a/  U R                   R                  SU R                  U5      -  5        Mg  U R                   R                  U R                  U5      5        M  US;   a  U R                   R                  U5        M  U R                   R                  S	[        U5      S
-
  -  S-   5        M     U R                   R                  S5        [        R                  es  snf )Nrq   coder$   ttzdocutils literalrc   z<span class="pre">%s</span>)r  r  rN   r   r  </tt>)rf   rg   rh   r  words_and_spacesfindallr9  in_word_wrap_pointsearchencoder   r   SkipNode)r,   r\   rq   clstexttokens         r-   visit_literalHTMLTranslator.visit_literal  sj   y/W.5GgssgGDOIIT]]4<=		MM$b0BMC	E{{}**2248E{{}} **11%88II$$%B'+{{5'9&: ; II$$T[[%78+%		  ' 		  SZ!^!<s!BC 9 			!nn/ Hs
   	F>F>c                :    U R                   R                  S5        g )Nz</code>rz   r[   s     r-   depart_literalHTMLTranslator.depart_literal  s    		#r0   c                X    U R                   R                  U R                  USSS95        g )Nrb   zliteral-blockrc   r   r[   s     r-   visit_literal_block"HTMLTranslator.visit_literal_block  r(  r0   c                :    U R                   R                  S5        g rl   rz   r[   s     r-   depart_literal_block#HTMLTranslator.depart_literal_block  r,  r0   c                   0 nU R                   R                  (       aR  [        UR                  5       5      U R                   R                  :  a!  SUS'   U R                  R                  S5        OU R                  R                  S5        U R                  R                  U R                  " US4SS0UD65        U R                  R                  S5        U R                  R                  S	5        g )
Nra  rb  z</tr>
<tr><td>&nbsp;</td>r$   r  rd   zoption-groupz<kbd>r   )r   option_limitr   r  r  rg   rf   rh   re  s      r-   visit_option_group!HTMLTranslator.visit_option_group  s    MM&&DKKM"T]]%?%??DOLL <=LL#		MM$CNCdC	E		!Ar0   c                    U R                   R                  5         U R                  R                  S5        U R                  R                  U R                   R                  5       5        g )Nz</kbd></td>
)r  r  rf   rg   r[   s     r-   depart_option_group"HTMLTranslator.depart_option_group  sC    		)		))+,r0   c           
         U R                   R                  U R                  USSSSS95        U R                   R                  S5        g )Nr   zdocutils option-listr   rU   r   zH<col class="option" />
<col class="description" />
<tbody valign="top">
r   r[   s     r-   visit_option_list HTMLTranslator.visit_option_list  sJ    		mmD'1G"(  8	9 			 2 	3r0   c                :    U R                   R                  S5        g r]  rz   r[   s     r-   depart_option_list!HTMLTranslator.depart_option_list  s    		/0r0   c                \    U R                   R                  U R                  USS5      5        g )Nr  r$   r   r[   s     r-   visit_option_list_item%HTMLTranslator.visit_option_list_item  s!    		tT267r0   c                :    U R                   R                  S5        g rF  rz   r[   s     r-   depart_option_list_item&HTMLTranslator.depart_option_list_item  r   r0   c           
     @   [        UR                  [        R                  5      (       d)  [        UR                  [        R                  5      (       a  gUR                  5        H3  u  p#UR                  U5      (       d  M  US:X  a  U/ S/S/SS/4;   a  M3    g   [        UR                  S   [        R                  5      nUR                  R                  US  H*  n[        U[        R                  5      (       a  M$  XQL a    O  g   [        UR                   Vs/ s H6  n[        U[        R                  [        R                  45      (       a  M4  UPM8     sn5      nU R                  (       d(  U R                  (       d  U R                  (       a  US:X  a  ggs  snf )	zE
Determine if the <p> tags around paragraph ``node`` can be omitted.
Frq   rW   rX   r   Nr   T)r   r   r   r   r   attlistis_not_defaultr  rY  rU  r   r   rK  r8  )r,   r\   keyvaluerW   r   rX  parent_lengths           r-   should_be_compact_paragraph*HTMLTranslator.should_be_compact_paragraph  s?    t{{ENN33$++u~~66,,.JC##C((	)"rG9(.x'61B'D D  ) 4;;q>5;;7[[))%&1E%11} 2  01:-</Q 0 1&&~~-1"40s   3FFc                    U R                  U5      (       a  U R                  R                  S5        g U R                  R                  U R	                  USS5      5        U R                  R                  S5        g )Nr$   p</p>
)r  r  rg   rf   rh   r[   s     r-   visit_paragraphHTMLTranslator.visit_paragraph  sV    ++D11LL#IIT]]4b9:LL)r0   c                    U R                   R                  U R                  R                  5       5        U R	                  U5        g r'   )rf   rg   r  r  report_messagesr[   s     r-   depart_paragraphHTMLTranslator.depart_paragraph  s/    		))+,T"r0   c                    U R                   R                  U R                  USSS95        U R                  U5        SU l        g )Nrs   sidebarrc   T)rf   rg   rh   r]   
in_sidebarr[   s     r-   visit_sidebarHTMLTranslator.visit_sidebar  s;    		MM$YM7	9D!r0   c                H    U R                   R                  S5        SU l        g )Nry   F)rf   rg   r  r[   s     r-   depart_sidebarHTMLTranslator.depart_sidebar  s    		$r0   c           	        [        UR                  [        R                  5      (       a,  U R                  R                  U R                  USSSS95        g U R                  R                  U R                  USS5      5        g )Nr   r$   	subscriptrc   subr   r   r   literal_blockrf   rg   rh   r[   s     r-   visit_subscriptHTMLTranslator.visit_subscript
  se    dkk5#6#677IIT]]41< + > ? IIT]]4;<r0   c                    [        UR                  [        R                  5      (       a  U R                  R                  S5        g U R                  R                  S5        g )Nr   z</sub>r   r   r   r  rf   rg   r[   s     r-   depart_subscriptHTMLTranslator.depart_subscript  =    dkk5#6#677IIY'IIX&r0   c           
     @   [        UR                  [        R                  5      (       aG  U R                  R                  U R                  USSSS95        U R                  R                  S5        g [        UR                  [        R                  5      (       aa  U R                  R                  U R                  USSSS95        U R                  R                  S5        [        U R                  5      U l
        g [        UR                  [        R                  5      (       a{  S	U R                  U R                  -   S
-
  -  nU R                  R                  U R                  XSSS9U R                  0 SSSS9-   5        U R                  R                  SU-  5        g g )Nr  r$   zsidebar-subtitlerc   r  h2subtitlez</h2>
zh%sr   zsection-subtitler   z</span></%s>
)r   r   r   r  rf   rg   rh   r  r   r   in_document_titlesectionsection_levelr!   )r,   r\   tags      r-   visit_subtitleHTMLTranslator.visit_subtitle  sE   dkk5==11IIT]]4b1C + E FLL)U^^44IIT]]4r]LMLL	*%(^D"U]]334--0I0IIAMNCIId3EF--FB6H-IJK LL 03 67 4r0   c                   U R                   R                  U R                  R                  5       5        U R                  (       a  U R                   U R                  S U l        SU l        U R                  R                  U R                   5        U R                  R                  U R                   5        U R                   S S 2	 g g )NrY   r   )	rf   rg   r  r  r  r  body_pre_docinfoextendhtml_subtitler[   s     r-   depart_subtitleHTMLTranslator.depart_subtitle(  s    		))+,!! IId&<&<R@DM%&D"!!((3%%dii0		! "r0   c           	        [        UR                  [        R                  5      (       a,  U R                  R                  U R                  USSSS95        g U R                  R                  U R                  USS5      5        g )Nr   r$   r  rc   supr  r[   s     r-   visit_superscript HTMLTranslator.visit_superscript2  sg    dkk5#6#677IIT]]41> + @ A IIT]]4;<r0   c                    [        UR                  [        R                  5      (       a  U R                  R                  S5        g U R                  R                  S5        g )Nr   r  r  r[   s     r-   depart_superscript!HTMLTranslator.depart_superscript9  r  r0   c                D   U R                   R                  U R                  USSS95        U R                   R                  S5        Sn[        US   5      (       a]  US   n[        U5      S:X  a	  SUS	   -  nO@Sn/ nU H"  nUR                  S
U< SU< S35        US-  nM$     SSR	                  U5      -  nUR                  S5      (       a	  SUS   -  nOSnU R                   R                  SUS   < SUS   < SU R                  US   5      < SU< SU< S35        g )Nrs   zsystem-messagerc   z <p class="system-message-title">r$   ro  r   z%; <em><a href="#%s">backlink</a></em>r   z
<a href="#rq  rp  z; <em>backlinks: %s</em>rr  linez	, line %szSystem Message: r  /levelz (<tt class="docutils">sourcer  rQ   r  )rf   rg   rh   r   r?   hasattrr  )r,   r\   backref_textro  rv  ru  rw  r1  s           r-   visit_system_message#HTMLTranslator.visit_system_message@  s   		tU:JKL		;<tJ  J'H8}! G"*1+!. 	'G$$w%JKFA  ( !;"&))I"6!7<<f-DD		 L$w- KKX7|M 	Nr0   c                :    U R                   R                  S5        g rx   rz   r[   s     r-   depart_system_message$HTMLTranslator.depart_system_messageZ  r}   r0   c           	        U R                   R                  U R                  5        SU l        SS0nSU R                  R                  /nSU;   a  UR                  SUS   -  5        SU;   a  US   nUSS  S	;   a  US
-  nSU 3US'   U R
                  R                  U R                  " US4SSR                  U5      0UD65        g )NTborderr   r   r  r  r   rY   z0123456789.r  zwidth: r  r   rd   r  )r  rg   r8  r   r   rf   rh   r?   )r,   r\   r:  rq   r   s        r-   visit_tableHTMLTranslator.visit_table^  s    DNN+!}t}}889d?NN:W56d?MERSz]*%eW-DM		MM$Isxx/@IDI	Kr0   c                x    U R                   R                  5       U l        U R                  R	                  S5        g )Nz	</table>
)r  r  r8  rf   rg   r[   s     r-   depart_tableHTMLTranslator.depart_tablem  s(    ))+		&r0   c                X    U R                   R                  U R                  USSS95        g )Ntbodytopvalignr   r[   s     r-   visit_tbodyHTMLTranslator.visit_tbodyr  s#    		tWUCDr0   c                :    U R                   R                  S5        g )Nz	</tbody>
rz   r[   s     r-   depart_tbodyHTMLTranslator.depart_tbodyu  r,  r0   c           
         U R                   R                  U R                  USSUR                  S   UR                  S   S95        g )Ndtr$   rq   ids)rq   rO  )rf   rg   rh   r   r[   s     r-   
visit_termHTMLTranslator.visit_termy  sC    		tT2/3{{9/E+/;;u+= ' ? 	@r0   c                    UR                  [        R                  SSS9(       a  g U R                  R	                  S5        g )NFTr   z</dt>
)r   r   r   rf   rg   r[   s     r-   r   HTMLTranslator.depart_term~  s/    >>%**ED>I		#r0   c                X    U R                   R                  U R                  USSS95        g )NtheadbottomrF  r   r[   s     r-   visit_theadHTMLTranslator.visit_thead  s#    		tWXFGr0   c                :    U R                   R                  S5        g )Nz	</thead>
rz   r[   s     r-   depart_theadHTMLTranslator.depart_thead  r,  r0   c                   / nU R                   U R                  -   S-
  n[        UR                  5      S:  a=  [	        UR                  S   [
        R                  5      (       a  UR                  S5        US:  a  UR                  SU-  5        S[        US5      -  nU R                  XSUS9nUR                  S5      (       a1  0 nS	US
'   SUS   -   US'   XPR                  " 0 SS40 UD6-  nSU-  nXW4$ SU-  nXW4$ )Nr   ra  zwith-subtitle   zh%ir$   )rq   r   ztoc-backrefr6  r   r   r   z
</a></%s>
z</%s>
)r  r!   r   r   r   r   r  rg   minrh   r5  )r,   r\   rq   h_leveltagname	start_tagr:  	close_tags           r-   section_title_tags!HTMLTranslator.section_title_tags  s   $$t'@'@@1D!4;;q>5>>::NN?+Q;NN57?+#gq/)MM$WME	<<  D)DMg.DLr3;d;;I%/I ## "G+I##r0   )
r   rf   rK  r8  r   r  r  r  r  r  r1   r'   )T)r2   bool)ir4   r5   r6   r7   __doc__doctypecontent_typecontent_type_mathmlr   r)   special_characterscopyattribution_formatsr]   ri   rn   ru   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   rm   r&  r*  r.  r2  r<  r?  rC  rH  rM  rP  rZ  r^  rf  ri  rl  r   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	  r  r  r  r!  r'  r+  r.  r7  r:  r>  rA  rH  rK  rP  r   rW  rZ  rc  rJ   rK   r0   r-   r)   r)   p   sN   (\	H <LO $22EEJJL't $3*4%/#+-2
F#
"
%4''#>
*(<%1H"N
;%"$F$""3)L'"-<($
G$
6$36E@"-
%/41
O6 #2"A"-#/"-	>I@
7P/
$
<$
L'-
318$
>*#
 
='8 ='N4%K'
E'@
$H'
$r0   r)   c                  0    \ rS rSrSrS rS rS rS rSr	g)	SimpleListCheckeri  z
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                   UR                    Vs/ s H&  n[        U[        R                  5      (       a  M$  UPM(     nnU(       av  [        US   [        R                  5      (       aT  [        US   [        R
                  5      (       d"  [        US   [        R                  5      (       a  UR                  5         [        U5      S::  a  g [        R                  es  snf )Nr   rY   r   )
rY  r   r   rU  rV  bullet_listenumerated_listr  r   	NodeFound)r,   r\   r   rY  s       r-   r  !SimpleListChecker.visit_list_item  s    '+}} ?}e%eU__= } ?HQKAAHRL%*;*;<<x|U-B-BCCLLNx=A//!?s
   #CCc                "    [         R                  er'   )r   r  r[   s     r-   r   !SimpleListChecker.visit_paragraph  s    nnr0   c                "    [         R                  er'   r   rr  r[   s     r-   r   'SimpleListChecker.visit_definition_list      oor0   c                "    [         R                  er'   rw  r[   s     r-   r  SimpleListChecker.visit_docinfo  ry  r0   rK   N)
r4   r5   r6   r7   rf  r  r   r   r  rJ   rK   r0   r-   rn  rn    s    
"$r0   rn  )rf  
__future__r   __docformat__os.pathr:   r  r   r   r   r   docutils.writersr   docutils.writers._html_baser	   r   r)   rn  rK   r0   r-   <module>r     st    #"  	 - - ' +R/W&& R/jo$W''66 o$d"**<< "r0   