
    -Ph&                    :   d Z ddlZddlZddlZddlZddlmZ ddlZddlZddl	Z	ddl
mc mZ ddlZddlmZmZmZmZmZ ddlmZ ddlmZ ddlmZ ddlmZmZmZmZmZm Z   G d	 d
ej!                  Z! G d dej"                  Z# G d dej$                  Z%dS )z,common definitions for Docutils HTML writers    N)Path)frontend	languagesnodesutilswriters) length_or_percentage_or_unitless)PIL)
writer_aux)latex2mathml	math2htmltex2mathml_externunichar2texwrap_math_code	MathErrorc                       e Zd ZdZ	 ddddgddifdd	gd
dej        dfddgddej        dfddgdej        dfddgddej        dfddgdddfdd gd!                                d"d#d$fd%d&gd'd(gd(d)d*d+fd,d-gg d.d/d)d$fd0d1gddej        dfd2d3gd4ddfd5d6gddej        dfd7d8gd9ddfd:d;gd<d=ifd>d?gd@ej        dAfdBdCgdDdej        dfdEdFgdGddfdHdIgdej        dJfffZ	dKdLiZ
dMZdNZdOZdPZ fdQZdR ZdS ZdT ZdU Z xZS )VWriter)htmlxhtmlzHTML Writer OptionsNzFSpecify the template file (UTF-8 encoded). (default: writer dependent)z
--templatemetavarz<file>zhComma separated list of stylesheet URLs. Overrides previous --stylesheet and --stylesheet-path settings.z--stylesheetz<URL[,URL,...]>stylesheet_path)r   	overrides	validatorzComma 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: writer dependent)z--stylesheet-pathz<file[,file,...]>
stylesheetzComma-separated list of directories where stylesheets are found. Used by --stylesheet-path when expanding relative path arguments. (default: writer dependent)z--stylesheet-dirsz<dir[,dir,...]>)r   r   zvEmbed the stylesheet(s) in the output HTML file.  The stylesheet files must be accessible during processing. (default)z--embed-stylesheetT
store_true)defaultactionr   z3Link to the stylesheet(s) in the output HTML file. z--link-stylesheetembed_stylesheetstore_false)destr   z}Specify the initial header level. Does not affect document title & subtitle (see --no-doc-title).(default: writer dependent).z--initial-header-levelz1 2 3 4 5 62z<level>)choicesr   r   zYFormat for footnote references: one of "superscript" or "brackets". (default: "brackets")z--footnote-referencessuperscriptbracketsz<format>trim_footnote_reference_space)r"   r   r   r   zyFormat for block quote attributions: one of "dash" (em-dash prefix), "parentheses"/"parens", or "none". (default: "dash")z--attributiondashparenthesesparensnoner'   zgRemove extra vertical whitespace between items of "simple" bullet lists and enumerated lists. (default)z--compact-listsz3Disable compact simple bullet and enumerated lists.z--no-compact-listscompact_listszORemove extra vertical whitespace between items of simple field lists. (default)z--compact-field-listsz#Disable compact simple field lists.z--no-compact-field-listscompact_field_listszAdded to standard table classes. Defined styles: borderless, booktabs, align-left, align-center, align-right, colwidths-auto, colwidths-grid.z--table-styler    zmMath output format (one of "MathML", "HTML", "MathJax", or "LaTeX") and option(s). (default: "HTML math.css")z--math-outputzHTML math.css)r   r   zPrepend an XML declaration. z--xml-declarationFzOmit the XML declaration.z--no-xml-declarationxml_declarationzyObfuscate email addresses to confuse harvesters while still keeping email links usable with standards-compliant browsers.z--cloak-email-addresses)r   r   output_encoding_error_handlerxmlcharrefreplace)templatezhtml base writer)r   zhtml writers)head_prefixheadr   body_prefixbody_pre_docinfodocinfobodybody_suffixtitlesubtitleheaderfootermetafragmenthtml_prolog	html_head
html_titlehtml_subtitle	html_bodyc                 `    t                                                      t          j        gz   S N)superget_transformsr   Admonitions)self	__class__s    [/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/docutils/writers/_html_base.pyrG   zWriter.get_transforms   s$    ww%%'':+A*BBB    c           	          |                      | j                  x| _        }| j                            |           | j        D ]!}t          | |t          ||                     "|                                 | _        d S rE   )	translator_classdocumentvisitor	walkaboutvisitor_attributessetattrgetattrapply_templateoutput)rI   rP   attrs      rK   	translatezWriter.translate   s|    !%!6!6t}!E!EEw(((+ 	8 	8DD$ 6 67777))++rL   c                     t          | j        j        j        d          5 }|                                }d d d            n# 1 swxY w Y   |                                 }||z  S )Nutf-8encoding)openrO   settingsr1   readinterpolation_dict)rI   fpr1   subss       rK   rU   zWriter.apply_template   s    $-(1GDDD 	!wwyyH	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!&&(($s   AA	Ac                     i }| j         j        }| j        D ];}d                    t	          | |                                        d          ||<   <|j        |d<   t          j        |d<   |S )Nr-   
r\   version)	rO   r^   rR   joinrT   rstripoutput_encodingdocutils__version__)rI   rb   r^   rW   s       rK   r`   zWriter.interpolation_dict   sr    =)+ 	C 	CDt!4!455<<TBBDJJ#3Z".YrL   c                     t           j                            |            | j        D ]-}d                    t          | |                    | j        |<   .d S Nr-   )r   r   assemble_partsrR   rf   rT   parts)rI   parts     rK   rm   zWriter.assemble_parts   sY    %%d++++ 	< 	<D!wwwtT':':;;DJt	< 	<rL   )__name__
__module____qualname__	supportedr   validate_comma_separated_listvalidate_booleansplitvalidate_math_outputsettings_specsettings_defaultsrelative_path_settingsconfig_sectionconfig_section_dependenciesrR   rG   rX   rU   r`   rm   __classcell__)rJ   s   @rK   r   r   &   s;       !I' 	(.h

!L
'6G >@ @
A
(
 
) >@ @
A( 
' >@ @	
AB
 l 13 3
4
 @
%
?
?
A) $
$#))++! !	
"."
#$j1j 79 9
: 
???5 5	
62
l 13 3
4
 @
 "m
<
<
>"
#l 13 3
4
 0%
&(M
B
B
D, 
b/
' 
% 57 7	
8 )
| 13 3
4 &!
"$
>
>
@J$
%!0I
J
J
LiX	\
M| 9:MN*'N"=C C C C C, , ,    < < < < < < <rL   r   c                   :   e Zd ZdZdZeZdZdZdej	         dZ
ddd	Zd
ZdZ	 dZdZ ej        d          Z ej        d          ZdZ ed          d ed          d ed          d ed          d ed          diZ	 dZ	 d Zd Z ej        d          fdZd  Zd! Zd" Zd# Zd$ Zdd&Z dd)Z!dd*Z"d+ Z#dd-Z$d. Z%d/ Z&d0 Z'd1 Z(d2 Z)d3 Z*d4 Z+d5 Z,d6 Z-d7 Z.dd8Z/d9d:d:d;d<Z0d= Z1d> Z2d? Z3d@ Z4dA Z5dB Z6dC Z7dD Z8dE Z9dF Z:dG Z;dH Z<dI Z=dJ Z>dK Z?dL Z@dM ZAdN ZBdO ZCdP ZDdQ ZEdR ZF ej        dS          jG        fdTZHdU ZIdV ZJdW ZKdX ZLdY ZMdZ ZNd[ ZOd\ ZPd] ZQd^ ZRd_ ZSd` ZTda ZUdb ZVdc ZWdd ZXde ZYdf ZZdg Z[dh Z\di Z]dj Z^ddlZ_dm Z`dn Zado Zbdp Zcdq Zddr Zeds Zfdt Zgdu Zhdv Zidw Zjdx Zkdy Zldz Zmd{ Znd| Zod} Zpd~ Zqd Zrd Zsd Ztd Zud Zvd Zwd Zxd Zyd Zzd Z{d Z|d Z}d Z~d Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zdddgfdddgfdddgfddg fddddgfdZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdÄ ZdĄ Zdń ZdƄ ZdǄ ZdȄ ZdɄ Zdʄ Zd˄ Zd̄ Zd̈́ Zd΄ Zdτ ZdЄ Zdф Zd҄ Zdӄ ZdԄ ZdՄ Zdք Zdׄ Zd؄ Zdل Zdڄ Zdۄ Zd܄ Zd݄ Zdބ Zd߄ Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd%S )HTMLTranslatorai  
    Generic Docutils to HTML translator.

    See the `html4css1` and `html5_polyglot` writers for full featured
    HTML writers.

    .. IMPORTANT::
      The `visit_*` and `depart_*` methods use a
      heterogeneous stack, `self.context`.
      When subclassing, make sure to be consistent in its use!

      Examples for robust coding:

      a) Override both `visit_*` and `depart_*` methods, don't call the
         parent functions.

      b) Extend both and unconditionally call the parent functions::

           def visit_example(self, node):
               if foo:
                   self.body.append('<div class="foo">')
               html4css1.HTMLTranslator.visit_example(self, node)

           def depart_example(self, node):
               html4css1.HTMLTranslator.depart_example(self, node)
               if foo:
                   self.body.append('</div>')

      c) Extend both, calling the parent functions under the same
         conditions::

           def visit_example(self, node):
               if foo:
                   self.body.append('<div class="foo">
')
               else: # call the parent method
                   _html_base.HTMLTranslator.visit_example(self, node)

           def depart_example(self, node):
               if foo:
                   self.body.append('</div>
')
               else: # call the parent method
                   _html_base.HTMLTranslator.depart_example(self, node)

      d) Extend one method (call the parent), but don't otherwise use the
         `self.context` stack::

           def depart_example(self, node):
               _html_base.HTMLTranslator.depart_example(self, node)
               if foo:
                   # implementation-specific code
                   # that does not use `self.context`
                   self.body.append('</div>
')

      This way, changes in stack use will not bite you.
    z<!DOCTYPE html>
zW<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="%(lang)s" lang="%(lang)s">
<head>
z<meta charset="%s" />
z)<meta name="generator" content="Docutils z': https://docutils.sourceforge.io/" />
divrO   )tagnameCLASSz2<script type="text/javascript" src="%s"></script>
z-file:/usr/share/javascript/mathjax/MathJax.jsz4<link rel="stylesheet" href="%s" type="text/css" />
z%<style type="text/css">

%s
</style>
z[^ \n]+| +|\nz.+\W\W.+|[-?].+lang&z&amp;<z&lt;"z&quot;>z&gt;@&#64;)z	video/mp4z
video/webmz	video/oggc                     t           j                             |           |j        x _        }t	          j        |j        |j                   _        t          |j
                   _
        d}t          |dd           )|j        rd}t          j        d| dt          d           t          |d|           _        t#           j        j        t&                    r(t)          j         j        j                   j        _         j        j        \   _         _        g  _        d	g _        g  _        d
g _        g  _        g  _        g  _        g  _        g  _        g  _         g  _!         j"        g _#        g  _$        g  _%        g  _&         j'        g _(         fdtS          j*        |          D              _+        g  _,        g  _-        |j.        r] j        /                    tS          j.        |j0                              j$        /                    tS          j.        d                     |j0        rE|j0        1                                dk    r( j(        2                    d j"        |j0        z             g  _3        	 d _4        g  _5        d _6        d _7        d _8        d _9        d _:        d _;        d _<        d _=        g  _>        g  _?        d S )Nlinkembed_imagesembedz`The configuration setting "embed_images"
  will be removed in Docutils 2.0. Use "image_loading: z".   )
stacklevelimage_loadingz</head>
<body>
z</body>
</html>
c                 :    g | ]}                     |          S  )stylesheet_call).0pathrI   s     rK   
<listcomp>z+HTMLTranslator.__init__.<locals>.<listcomp>L  s=     L L L#  //55 L L LrL   z%sunicoder   TF)@r   NodeVisitor__init__r^   r   get_languagelanguage_codereporterlanguageintinitial_header_levelrT   r   warningswarnFutureWarningr   
isinstancemath_outputstrr   rw   math_optionsr7   r4   r5   r8   r6   r<   r>   r3   r2   r;   rC   content_typer@   r?   rB   rA   	generatorr=   r   get_stylesheet_listr   r9   r:   r.   appendrh   lowerinsertcontextsection_levelcolspecs	compact_pcompact_simplecompact_field_list
in_docinfo
in_sidebarin_document_title	in_mailtoauthor_in_authorsmath_headermessages)rI   rO   r^   _image_loading_defaults   `   rK   r   zHTMLTranslator.__init__   s)   ""4222#+#44!.$2H4EG G$'(E$F$F!!'8^T22>$ 1)0&M L1GL L L (A7 7 7 7 %X%46LN N dm/55 	G(0(E,0M,E)G )GDM% #m7				 	/0 "01	+,^$	L L L L','@'J'JL L L
# 	-##%h&>??A A A##%d++- - -$ 	N(..00I==IQ 1H4L LMMM 	
 #"'!"!&	 	rL   c                     d                     | j        | j        z   | j        z   | j        z   | j        z   | j        z   | j        z   | j        z             S rl   )	rf   r2   r3   r   r4   r5   r6   r7   r8   rI   s    rK   astextzHTMLTranslator.astextr  sg    wwt'$)3)+/+;<./15> # &*%56 7 7 	7rL   z[
	]c                     |                      |                    d|                    }| j        r8| j        j        r,|                    dd          }|                    dd          }|S )z6Cleanse, HTML encode, and return attribute value text. %40z&#37;&#52;&#48;.z&#46;)encodesubr   r^   cloak_email_addressesreplace)rI   text
whitespaceencodeds       rK   attvalzHTMLTranslator.attvalx  se     ++jnnS$7788> 	4dmA 	4ooe->??Gooc733GrL   c                 Z    |                     dd          }|                     dd          S )z;Try to hide the link text of a email link from harversters.r   z<span>&#64;</span>r   z<span>&#46;</span>r   )rI   addrs     rK   cloak_emailzHTMLTranslator.cloak_email  s-     ||G%9::||C!5666rL   c                 .    |                     dd          S )z*Try to hide a mailto: URL from harvesters.r   r   r   )rI   uris     rK   cloak_mailtozHTMLTranslator.cloak_mailto  s    
 {{3&&&rL   c                 T    t          |          }|                    | j                  S )z-Encode special characters in `text` & return.)r   rX   special_characters)rI   r   s     rK   r   zHTMLTranslator.encode  s$    
 4yy~~d5666rL   c                 *   |                     dd           |                     dd           g}d|v rcd|vsd|vrg }|d         }t          s|                    d           t          j        |          d         | j        v r|                    d           | j        j        s|                    d           |s	 |                     |          }t          j	        
                    |          5 }|j        }d d d            n# 1 swxY w Y   | j        j                            |                    d	d
                     nF# t          t           t"          f$ r,}|                    t%          |                     Y d }~nd }~ww xY w|rWdd| dg|}	| j                            | j        j                            d                    |	          |                     n(t1          d          D ]}
||
         p
d||
         z  ||
<   t3          |d                   dz  }t1          d          D ]d}
||
         rZt5          j        d||
                   }|t3          |                    d                    z  |                    d          ||
<   eg }t;          d          D ]Y\  }
}||
         rLt5          j        d||
                   r||
xx         dz  cc<   |                    | d||
          d           Zd                    |          S )Nwidthheightscaler   z Requires Python Imaging Library.r   zPIL cannot read video images.z Reading external files disabled.\/zCannot scale image!zCould not get size from "z":z
  	base_node   z%dpxd   z([0-9.]+)(\S*)$   r   r   z	^[0-9.]+$pxz: ;r   )getr
   r   	mimetypes
guess_type
videotypesr^   file_insertion_enableduri2imagepathImager]   sizerecord_dependenciesaddr   
ValueErrorOSErrorUnicodeEncodeErrorr   r   rO   r   warningrf   rangefloatrematchgroup	enumerate)rI   noder   reading_problemsr   	imagepathimgimgsizeerrmsgifactorr   size_declarations	dimensions                  rK   
image_sizezHTMLTranslator.image_size  s   
 $''(D)A)ABd??d""hd&:&:#% 5k P$++,NOOO',,Q/4?BB$++,KLLL}; P$++,NOOO' 	::$($6$6s$;$;	 Y^^I66 /#&)hG/ / / / / / / / / / / / / / /
 9==%--dC88: : : : '1CD : : :(//C99999999:
 $ A0>s>>>.,.C M(()?)G)GC((D *H *: *: ; ; ; ; #1XX A A"&q'"@Vgaj-@Q4=))C/F1XX 8 87 8H%7aAAE(.u{{1~~1F1F(F(F(-A8DG%&9:: 	E 	ELAyAw E8L$q'22 $GGGtOGGG!((I)C)Ca)C)C)CDDDxx)***s<   ;4E /D7E DE 
DE F"F  Fc           	         ddd}t          j        d|d                    t          j        d|d                    	 t          j        |                    d                    }nv# t           j        $ rd}| j                            | j        j        	                    d|d          d	| |
                     |                    d          cY d }~S d }~ww xY w|rld |
                    dd                              d          D             }d |D             }|                    dd                    ||gz                        |d         sd|v r|
                    dd                                          }||
                    dg           z  }d|v r|                    d|d                     |                    dd                    |                     d|v rM|                    d|          7t          j        d          }	|d         |	_        |                    d|	           t          j        |d          S )Nzhttp://www.w3.org/2000/svgzhttp://www.w3.org/1999/xlink)r-   xlinkr-   r  rZ   zCannot parse SVG image "r   ":
  r   c                 6    g | ]}|                                 S r   )stripr   ds     rK   r   z.HTMLTranslator.prepare_svg.<locals>.<listcomp>  s     OOO!AGGIIOOOrL   styler   c                 j    g | ]0}||                     d           |                     d          .|1S r   )
startswithr  s     rK   r   z.HTMLTranslator.prepare_svg.<locals>.<listcomp>  sV     < < <! <$%LL$9$9< %&LL$:$:<A < < <rL   z; classesalignclasszalign-r   altr9   r   r   r[   )ETregister_namespace
fromstringdecode
ParseErrorr   r   rO   r   errorr   rv   setrf   findElementr   r   tostring)
rI   r   	imagedatasize_declarationsvg_nssvgr   declarationsr  	svg_titles
             rK   prepare_svgzHTMLTranslator.prepare_svg  st    39; ; 	b&*---
gvg777	--	 0 0 9 9::CC} 	- 	- 	-M  !7!=!=C4;CCcCC "> "  "  ! ! ! ##G,,,,,,,,		-  	IOOswww/C/C/I/I#/N/NOOOL< <| < < <L GGGTYY|5E4F'FGGHHH	? 	0googggr**0022Gtxx	2...G$7W77888GGGSXXg..///D==SXXgv66>
7++I!%[INJJq)$$${33333s   'A% %C4ACCCNc                    |t          | j        j                  }| j        j        r	 t	          |d          5 }|                                }ddd           n# 1 swxY w Y   | j        j                            |           n@# t          $ r3}d| }| j	        j
                            |           d|z  cY d}~S d}~ww xY w| j        |z  S |rt          j        | j        j        |          }| j        |                     |          z  S )z8Return code to reference or embed stylesheet file `path`NrZ   r[   zCannot embed stylesheet: z<--- %s --->
)boolr^   r   r   r]   r_   r   r   r   rO   r   r  embedded_stylesheetr   relative_path_destinationstylesheet_linkr   )rI   r   adjust_pathfcontentr   r   s          rK   r   zHTMLTranslator.stylesheet_call  sg   t}<==K=) 
	6<$111 'QffhhG' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 155d;;;;  . . .7#77&,,S111'#-------. +g55 	I&t}'A4HHD#dkk$&7&777s@   B AB AB "A#B 
C(B>8C>Crd   Fc           
      l   |                                 }g }i }|                                D ]\  }}	|	||                                 <   |                    dg           }
g }|                    dg           |                    dd                                          z   D ]]}|                    d          r |j        |dd                    0|                                r||
vr|
                    |           ^|r|d         || j        <   dt          |t          j                  rfd	|
D             }
|
rd
                    |
          |d<   d|vsJ |                    dg           }|                    |                    dg                      |rl|d         |d<   |dd         D ]V}|s1t          |t          j        t          j        t          j        f          r|                    d|z             N|d|z  z  }Wt!          |                                          }|g}|D ]\  }}	|	J t          |	t"                    r`d |	D             }|                    |                                 d|                     d
                    |                    d           ~|                    |                                 d|                     t'          |	                    d           |rd}nd}d                    |          dd
                    |          |dz   |z   S )z
        Construct and return a start tag given a node (id & class attributes
        are extracted), tag name, and optional attributes.
        r  r  r-   z	language-	   Nr   )colwidths-autocolwidths-givencolwidths-gridc                     g | ]}|v|	S r   r   )r   clsinternals     rK   r   z+HTMLTranslator.starttag.<locals>.<listcomp>"  s#    EEEsH1D1Ds1D1D1DrL   r   ididsr   z<span id="%s"></span>c                 ,    g | ]}t          |          S r   )r   )r   vs     rK   r   z+HTMLTranslator.starttag.<locals>.<listcomp>@  s    000Q#a&&000rL   z="r   z /r   r   )r   itemspopr   rv   r
  r   r  lang_attributer   r   tablerf   extend
Sequentialr6   sortedlistr   r   )rI   r   r   suffixempty
attributesprefixattsnamevaluer  r   r/  r2  r1  attlistrn   valuesinfixr0  s                      @rK   starttagzHTMLTranslator.starttag
  s   
 --//'--// 	' 	'MT5!&D((9b))	88Ir**TXXgr-B-B-H-H-J-JJ 	$ 	$C~~k** $ 	 QRR)))) $G!3!3s### 	5(1!D$%JdEK(( 	FEEEEgEEEG 	.HHW--DM4hhub!!

488E2&&''' 	;QDJ!""g ; ;  ;Jte.>.3m.3k.; < < ; MM"9B">???? 5::FF&&	" 
	D 
	DKD% $$$%&& D00%000$**,,,,*.++chhv6F6F*G*G*G*GI J J J J $**,,,,*.++c%jj*A*A*A*AC D D D D 	EEEwwvSXXe___eee!DDvMMrL   c                 &     | j         |||fddi|S )z1Construct and return an XML-compatible empty tag.r>  T)rG  )rI   r   r   r=  r?  s        rK   emptytagzHTMLTranslator.emptytagL  s%    t}T7FMM$M*MMMrL   c                 
   t          |j        t          j        t          j        f          rd S | j        rN| j                            d          }| j        j        |d         k    r|	                    |            | j        Ld S d S )Nr   level)
r   parentr   system_messageentryr   r6  r^   report_levelrQ   )rI   r   messages      rK   report_messageszHTMLTranslator.report_messagesP  s    dkE$8%+#FGG 	Fm 	(m''**G})WW-===!!$''' m 	( 	( 	( 	( 	(rL   r   c                     d |D             }	 ||         }n# t           $ r Y dS w xY w|d                             |           dS )z
        Set class `class_` on the visible child no. index of `node`.
        Do nothing if node has fewer children than `index`.
        c                 F    g | ]}t          |t          j                  |S r   r   r   	Invisible)r   ns     rK   r   z5HTMLTranslator.set_class_on_child.<locals>.<listcomp>]  s)    JJJ!:a+I+IJAJJJrL   Nr  )
IndexErrorr   )rI   r   class_indexchildrenchilds         rK   set_class_on_childz!HTMLTranslator.set_class_on_childX  si    
 KJtJJJ	UOEE 	 	 	FF	i'''''s    
%%c                    | j         j        pd}t          j                            |          }|j        dvrt          d          t          j                            |j	                  }|
                    d          r9t          | j         j                  }||dd         z                                  }nt          j	                            |          sot          j	                            t          j	                            |                    }t%          j        dt          j	                            ||                    }|S )a  Get filesystem path corresponding to an URI.

        The image directive expects an image URI. Some writers require the
        corresponding image path to read the image size from the file or to
        embed the image in the output.

        Absolute URIs consider the "root_prefix" setting.

        In order to work in the output document, relative image URIs relate
        to the output directory. For access by the writer, the corresponding
        image path must be relative to the current working directory.

        Provisional: the function's location, interface and behaviour
        may change without advance warning.
        r-   )r-   filezCan only read local images.r   r   N)r^   r$  urllibparseurlparseschemer   requesturl2pathnamer   r
  r   root_prefixas_posixosisabsabspathdirnamer   r#  rf   )rI   r   destination	uri_partsr   re  destdirs          rK   r   zHTMLTranslator.uri2imagepathd  s     m06BL))#..	<//:;;;N//	??	$$ 	Nt}899K$Yqrr]2<<>>IIy)) 	Ngoobgook&B&BCCG+D,.GLL),L,LN NIrL   c                     |                                 }|                     |          }| j        r!| j        j        r|                     |          }| j                            |           d S rE   )r   r   r   r^   r   r   r7   r   )rI   r   r   r   s       rK   
visit_TextzHTMLTranslator.visit_Text  se    {{}}++d##> 	0dmA 	0&&w//G	!!!!!rL   c                     d S rE   r   rI   r   s     rK   depart_TextzHTMLTranslator.depart_Text      rL   c                 d    | j                             |                     |dd                     d S )Nabbrr-   r7   r   rG  rq  s     rK   visit_abbreviationz!HTMLTranslator.visit_abbreviation  s.    	tVR8899999rL   c                 :    | j                             d           d S )Nz</abbr>r7   r   rq  s     rK   depart_abbreviationz"HTMLTranslator.depart_abbreviation      	#####rL   c                 d    | j                             |                     |dd                     d S )Nacronymr-   rv  rq  s     rK   visit_acronymzHTMLTranslator.visit_acronym  s.    	tY;;<<<<<rL   c                 :    | j                             d           d S )Nz
</acronym>ry  rq  s     rK   depart_acronymzHTMLTranslator.depart_acronym      	&&&&&rL   c                     |                      |dd           | j                            |                     |ddd                     d S )NaddressFr=   prer-   r=  r   )visit_docinfo_itemr7   r   rG  rq  s     rK   visit_addresszHTMLTranslator.visit_address  sf    ie<<<	tU.0	 ' C C 	D 	D 	D 	D 	DrL   c                 b    | j                             d           |                                  d S Nz
</pre>
)r7   r   depart_docinfo_itemrq  s     rK   depart_addresszHTMLTranslator.depart_address  s0    	&&&  """""rL   c                 h    | j                             |                     |ddg                     d S )Naside
admonitionr  rv  rq  s     rK   visit_admonitionzHTMLTranslator.visit_admonition  s2    	tW|nMMNNNNNrL   c                 :    | j                             d           d S N	</aside>
ry  rq  s     rK   depart_admonitionz HTMLTranslator.depart_admonition  r  rL   )u   —r-   )())r-   r-   r&   c                     | j         | j        j                 \  }}| j                            |           | j                            |                     |d|d                     d S )Npattributionr   )attribution_formatsr^   r  r   r   r7   rG  )rI   r   r@  r=  s       rK   visit_attributionz HTMLTranslator.visit_attribution  sn    1$-2KLF###	MM$V=MAA	C 	C 	C 	C 	CrL   c                 n    | j                             | j                                        dz              d S N</p>
r7   r   r   r6  rq  s     rK   depart_attributionz!HTMLTranslator.depart_attribution  s1    	))++h677777rL   c                     t          |j        t          j                  s|                     |d           | j                            d           d S )Nauthorz<p>)r   rL  r   authorsr  r7   r   rq  s     rK   visit_authorzHTMLTranslator.visit_author  sJ    $+u}55 	4##D(333	rL   c                     | j                             d           t          |j        t          j                  r| j                             d           d S |                                  d S )N</p>rd   )r7   r   r   rL  r   r  r  rq  s     rK   depart_authorzHTMLTranslator.depart_author  sb    	   dk5=11 	'IT"""""$$&&&&&rL   c                 2    |                      |d           d S )Nr  r  rq  s     rK   visit_authorszHTMLTranslator.visit_authors  s    i00000rL   c                 .    |                                   d S rE   r  rq  s     rK   depart_authorszHTMLTranslator.depart_authors        """""rL   c                 b    | j                             |                     |d                     d S )N
blockquoterv  rq  s     rK   visit_block_quotez HTMLTranslator.visit_block_quote  s,    	t\::;;;;;rL   c                 :    | j                             d           d S )Nz</blockquote>
ry  rq  s     rK   depart_block_quotez!HTMLTranslator.depart_block_quote  s    	*+++++rL   c                     t          | j                  }	 |                    |           dS # t          j        $ r Y dS w xY w)z7Check for a simple list that can be rendered compactly.TF)SimpleListCheckerrO   walkr   	NodeFound)rI   r   rP   s      rK   check_simple_listz HTMLTranslator.check_simple_list  sU    #DM22	IIg 4  	 	 	55	s   - A A c                 N   d|d         v rdS d|d         v rdS t          |t          j        t          j        f          r| j        j        sdS t          |t          j        t          j        f          r| j        j        sdS d|j	        d         v rdS | 
                    |          S )Ncompactr  Tr]   Fcontents)r   r   
field_listdefinition_listr^   r,   enumerated_listbullet_listr+   rL  r  rq  s     rK   is_compactablezHTMLTranslator.is_compactable  s    Y''4T)_$$5te.0EFGG 	M5	5te3U5FGHH 	M/	5Y///4%%d+++rL   c                    i }| j         }| j                            | j         | j        f           d | _        |                     |          | _         | j         r|sd|d<   | j                             | j        |dfi |           d S )Nsimpler  ul)r   r   r   r   r  r7   rG  )rI   r   rA  old_compact_simples       rK   visit_bullet_listz HTMLTranslator.visit_bullet_list  s    !0T0$.ABBB"11$77 	%'9 	%$DM	tT::T::;;;;;rL   c                     | j                                         \  | _        | _        | j                            d           d S )Nz</ul>
)r   r6  r   r   r7   r   rq  s     rK   depart_bullet_listz!HTMLTranslator.depart_bullet_list  s;    .2l.>.>.@.@+T^	#####rL   c                 h    | j                             |                     |ddd                     d S )Nr  r-   captionr  rv  rq  s     rK   visit_captionzHTMLTranslator.visit_caption  s2    	tS"IFFGGGGGrL   c                 :    | j                             d           d S r  ry  rq  s     rK   depart_captionzHTMLTranslator.depart_caption      	"""""rL   c                    t          |                                t          |                    s| j                            d           | j                            |                     |d|j        gd                     d S )Nz(<div role="list" class="citation-list">
r   zdoc-biblioentryr  role)r   previous_siblingtyper7   r   rG  r   rq  s     rK   visit_citationzHTMLTranslator.visit_citation  s     $//114::>> 	JIHIII	tUT\N,= ' ? ? 	@ 	@ 	@ 	@ 	@rL   c                     | j                             d           t          |                    dd          t	          |                    s| j                             d           d S d S )N</div>
FTdescendsiblingsr7   r   r   	next_noder  rq  s     rK   depart_citationzHTMLTranslator.depart_citation  sk    	$$$$...FFt**& & 	)IZ(((((	) 	)rL   c           
          d}d|v r||d         z  }nd|v r|| j         j        |d                  z  }| j                            |                     |dd|dgd                     d S )	N#refidrefnamea[zcitation-referencezdoc-biblioref)r=  hrefr  r  )rO   nameidsr7   r   rG  )rI   r   r  s      rK   visit_citation_referencez'HTMLTranslator.visit_citation_reference  s    d??DM!DD$DM)$y/::D 		tS40D/E,; ' = = 	> 	> 	> 	> 	>rL   c                 :    | j                             d           d S )Nz]</a>ry  rq  s     rK   depart_citation_referencez(HTMLTranslator.depart_citation_reference$      	!!!!!rL   c                 h    | j                             |                     |ddd                     d S )Nspanr-   
classifierr  rv  rq  s     rK   visit_classifierzHTMLTranslator.visit_classifier'  s2    	tVR|LLMMMMMrL   c                 d    | j                             d           |                     |           d S N</span>)r7   r   depart_termrq  s     rK   depart_classifierz HTMLTranslator.depart_classifier*  s2    	###rL   c                     | j                             |           |j        j                            |j                            d                     d S )Nstub)r   r   rL  stubsr?  r   rq  s     rK   visit_colspeczHTMLTranslator.visit_colspec.  sG    T"""  !4!4V!<!<=====rL   c           
      6   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 | j                            | 	                    |d                     t          d	 | j        D                       }| j        D ]A}|d
         |z  }| j                            |                     |dd|d                     B| j                            d           d S )NFTr  r+  r  r-  r,  colgroupc              3   &   K   | ]}|d          V  dS )colwidthNr   )r   r   s     rK   	<genexpr>z0HTMLTranslator.depart_colspec.<locals>.<genexpr>=  s'      EEt$z*EEEEEErL   r  colzwidth: z.1%)r  z</colgroup>
)r   r  r   colspecrL  r^   table_styler7   r   rG  sumr   rI  )rI   r   total_widthr  s       rK   depart_colspeczHTMLTranslator.depart_colspec3  s;   dnnUTnBBm% % 	Ft{1)<<<DM$===!);I)FFFF	tZ88999EEt}EEEEEM 	L 	LDJ'+5HIT]]41I81I1I1I + K K L L L L	)))))rL   z-(?=-)c                     | j                             d |d|                                          z             t          j        )z%Escape double-dashes in comment text.z<!-- %s -->
z- )r7   r   r   r   SkipNode)rI   r   r   s      rK   visit_commentzHTMLTranslator.visit_commentD  s;     		33tT[[]]+C+CCDDDnrL   c                 f    | j                             |                     |dd                     d S )Nr   compoundr  rv  rq  s     rK   visit_compoundzHTMLTranslator.visit_compoundK  s0    	tU*EEFFFFFrL   c                 :    | j                             d           d S Nr  ry  rq  s     rK   depart_compoundzHTMLTranslator.depart_compoundN      	$$$$$rL   c                 f    | j                             |                     |dd                     d S )Nr   zdocutils containerr  rv  rq  s     rK   visit_containerzHTMLTranslator.visit_containerQ  sI    	tU-A ' C C 	D 	D 	D 	D 	DrL   c                 :    | j                             d           d S r	  ry  rq  s     rK   depart_containerzHTMLTranslator.depart_containerU  r  rL   c                 6    |                      |dd           d S )NcontactFr  r  rq  s     rK   visit_contactzHTMLTranslator.visit_contactX  #    ie<<<<<rL   c                 .    |                                   d S rE   r  rq  s     rK   depart_contactzHTMLTranslator.depart_contact[  r  rL   c                 2    |                      |d           d S )N	copyrightr  rq  s     rK   visit_copyrightzHTMLTranslator.visit_copyright^  s    k22222rL   c                 .    |                                   d S rE   r  rq  s     rK   depart_copyrightzHTMLTranslator.depart_copyrighta  r  rL   c                 2    |                      |d           d S )Ndater  rq  s     rK   
visit_datezHTMLTranslator.visit_dated  s    f-----rL   c                 .    |                                   d S rE   r  rq  s     rK   depart_datezHTMLTranslator.depart_dateg  r  rL   c                     d S rE   r   rq  s     rK   visit_decorationzHTMLTranslator.visit_decorationj  rs  rL   c                     d S rE   r   rq  s     rK   depart_decorationz HTMLTranslator.depart_decorationm  rs  rL   c                     d|j         j         d         vr1| j                            |                     |dd                     d S d S )Ndetailsr  ddr-   rL  r7   r   rG  rq  s     rK   visit_definitionzHTMLTranslator.visit_definitionp  sK    DK.y999IT]]4r::;;;;; :9rL   c                 f    d|j         j         d         vr| j                            d           d S d S )Nr%  r  </dd>
rL  r7   r   rq  s     rK   depart_definitionz HTMLTranslator.depart_definitiont  s;    DK.y999IY''''' :9rL   c                    d|d         v r0| j                             |                     |d                     d S |                     |          rdgng }| j                             |                     |d|                     d S )Nr%  r  r   r  dlr  )r7   r   rG  r  rI   r   r  s      rK   visit_definition_listz$HTMLTranslator.visit_definition_listx  s    Y''IT]]47788888$($7$7$=$=Exjj2GIT]]4w]GGHHHHHrL   c                     d|d         v r| j                             d           d S | j                             d           d S )Nr%  r  r  </dl>
ry  rq  s     rK   depart_definition_listz%HTMLTranslator.depart_definition_list  sI    Y''IZ(((((IY'''''rL   c                     d|j         d         v r?i }d|j         d         v rd|d<   | j                             | j        |dfi |           d S d S )Nr%  r  r]   r'  rI   r   rA  s      rK   visit_definition_list_itemz)HTMLTranslator.visit_definition_list_item  sn    I...DY///%VI]T]4CCdCCDDDDD	 /.rL   c                 \    d|j         d         v r| j                            d           d S d S )Nr%  r  z</details>
r+  rq  s     rK   depart_definition_list_itemz*HTMLTranslator.depart_definition_list_item  s8    I...I^,,,,, /.rL   c                 d    | j                             |                     |dd                     d S )Nr&  r-   rv  rq  s     rK   visit_descriptionz HTMLTranslator.visit_description  .    	tT26677777rL   c                 :    | j                             d           d S Nr*  ry  rq  s     rK   depart_descriptionz!HTMLTranslator.depart_description  r{  rL   c                    | j                             t          | j                             dg}|                     |          r|                    d           | j                            |                     |d|                     d S )Nr6   r  r.  r  )r   r   lenr7   r  rG  r/  s      rK   visit_docinfozHTMLTranslator.visit_docinfo  s}    C	NN++++t$$ 	%NN8$$$	tT7CCDDDDDrL   c                     | j                             d           | j                                        }| j         |d          | _        g | _         d S Nr2  )r7   r   r   r6  r6   )rI   r   starts      rK   depart_docinfozHTMLTranslator.depart_docinfo  sH    	###  ""y(			rL   Tc           	      Z   |rF| j                             d| d|                     |                                           d           | j                            d| d| j        j        |          d           | j                            |                     |dd|	                     d S )
Nz<meta name="z" content="z" />
z<dt class="">"<span class="colon">:</span></dt>
r&  r-   r  )r=   r   r   r   r7   r   labelsrG  )rI   r   rB  r=   s       rK   r  z!HTMLTranslator.visit_docinfo_item  s     	MI LD L L)-T[[]])C)CL L L M M M	 ?t ? ?t}/CD/I ? ? ? 	@ 	@ 	@	tT2TBBCCCCCrL   c                 :    | j                             d           d S r=  ry  r   s    rK   r  z"HTMLTranslator.depart_docinfo_item  r{  rL   c           	      l    | j                             |                     |ddg d                     d S )Nr  r-   )codepythondoctestr=  r  rv  rq  s     rK   visit_doctest_blockz"HTMLTranslator.visit_doctest_block  sQ    	tU2/L/L/L ' N N 	O 	O 	O 	O 	OrL   c                 :    | j                             d           d S r  ry  rq  s     rK   depart_doctest_blockz#HTMLTranslator.depart_doctest_block  r  rL   c                     |                     d          p&t          j                            |d                   pd}| j                            d|                     |           d           d S )Nr9   sourcezuntitled Docutils documentz<title>z	</title>
)r   rg  r   basenamer3   r   r   )rI   r   r9   s      rK   visit_documentzHTMLTranslator.visit_document  sm    '"" 1bg&6&6tH~&F&F 10 		A4;;u#5#5AAABBBBBrL   c                    | j                             | j        | j        d| j        j        iz  g           | j                            | j                   | j        d d          | j	        z   | _	        dd
                    | j                  v r| j	                            d           | j        rJ| j        dk    r | j	                            | j                   n| j                            | j                   | j                            | j	        dd                     | j                             | j        |fi | j                   | j                            dd| j        d	          d
           | j                            | j                   | j                            | j        dd          | j        z   | j        z   | j        z   | j        d d         z              | j        rJ dt5          | j                               d S )Nr   zname="dcterms.r-   z=<link rel="schema.dcterms" href="http://purl.org/dc/terms/"/>mathjaxr   r   </r   z>
zlen(context) = )r2   r9  doctypehead_prefix_templater^   r   r?   r   r=   r3   rf   r   r   r   r@   r4   rG  documenttag_argsr8   r   r>   r7   rC   r5   r6   r   r@  rq  s     rK   depart_documentzHTMLTranslator.depart_document  s   !%!:"($-*E!F"G!H 	I 	I 	I 	---IaaaL49,	rwwty1111I C D D D 	99,,	  !12222&&t'7888dim,,,d L Ld6K L LMMM#M(=i(H#M#M#MNNNTY'''d.qrr2T5JJ $-/3y9 $ 0" 56 	7 	7 	7 <FF!F3t|3D3D!F!FFFFFFrL   c                 d    | j                             |                     |dd                     d S )Nemr-   rv  rq  s     rK   visit_emphasiszHTMLTranslator.visit_emphasis  r;  rL   c                 :    | j                             d           d S )Nz</em>ry  rq  s     rK   depart_emphasiszHTMLTranslator.depart_emphasis  r  rL   c                 ~   dg i}t          |j        j        t          j                  r|d                             d           |j        j        j        j        |j        j                 r|d                             d           |d         rd}nd}|j        xj        dz  c_        d|v r|d         dz   |d<   d	|v r)|d	         dz   |d
<   |j        xj        |d	         z  c_        | j                             | j        ||dfi |           | j	                            d|
                                z             d S )Nr  r3   r  thtdr   morerowsrowspanmorecolscolspanr-   </%s>
)r   rL  r   theadr   r  columnr7   rG  r   r   )rI   r   rA  r   s       rK   visit_entryzHTMLTranslator.visit_entry  sM   2dk(%+66 	+O""6***;$*4;+=> 	+O""6***	? 	GGGa":.2DO":.2DOK$z"22	tWbAADAABBBI788888rL   c                 h    | j                             | j                                                   d S rE   r  rq  s     rK   depart_entryzHTMLTranslator.depart_entry  ,    	))++,,,,,rL   c                 $   dg i}d|v r|d         |d<   d|v r!|d                              |d                    |                     |          r|d                              d           | j                              | j        |dfi |           d S )Nr  rD  enumtyper  ol)r   r  r7   rG  r5  s      rK   visit_enumerated_listz$HTMLTranslator.visit_enumerated_list  s    2d?? MDMO""4
#3444t$$ 	-O""8,,,	tT::T::;;;;;rL   c                 :    | j                             d           d S )Nz</ol>
ry  rq  s     rK   depart_enumerated_listz%HTMLTranslator.depart_enumerated_list  r{  rL   c                    i }|                     dg           }t          |          D ]d\  }}|                    d          rJ	 t          |dd          d          }n# t          $ r Y  n$w xY wd|z  |d<   |                    |            ne|                    d           |                     |          r|                    d           | j                             | j	        |d	fi |           d S )
Nr  zfield-indent-   r   z--field-indent: %s;r  z
field-listr  r.  )

setdefaultr   r
  r	   r   r6  r   r  r7   rG  )rI   r   rA  r  r   r/  indent_lengths          rK   visit_field_listzHTMLTranslator.visit_field_list  s%   //)R00(( 		 		FAs~~o.. $D8;BCC$%H %HMM!   EE 5 EWA 	|$$$t$$ 	%NN8$$$	tT::T::;;;;;s   A
A*)A*c                 :    | j                             d           d S rC  ry  rq  s     rK   depart_field_listz HTMLTranslator.depart_field_list  r{  rL   c                     |D ]=}t          |t          j                  r!|d                             |d                    >d S )Nr2  )r   r   
field_namer9  )rI   r   r[  s      rK   visit_fieldzHTMLTranslator.visit_field  sO      	1 	1E%!122 1e##DK000	1 	1rL   c                     d S rE   r   rq  s     rK   depart_fieldzHTMLTranslator.depart_field  rs  rL   c           	      ~    | j                             |                     |dd|j        d                              d S )Ndtr-   r  r  )r7   r   rG  rL  rq  s     rK   visit_field_namezHTMLTranslator.visit_field_name  sR    	tT2/3{9/E ' G G 	H 	H 	H 	H 	HrL   c                 :    | j                             d           d S )NrH  ry  rq  s     rK   depart_field_namez HTMLTranslator.depart_field_name!  s    	>?????rL   c           	          | j                             |                     |dd|j        d                              |j        s| j                             d           d S d S )Nr&  r-   r  r  z<p></p>)r7   r   rG  rL  rZ  rq  s     rK   visit_field_bodyzHTMLTranslator.visit_field_body$  sx    	tT2/3{9/E ' G G 	H 	H 	H } 	(IY'''''	( 	(rL   c                 :    | j                             d           d S r=  ry  rq  s     rK   depart_field_bodyz HTMLTranslator.depart_field_body+  r{  rL   c                     ddi}|                     d          rd|d         z  |d<   |                     d          r|dxx         d|d         z   z  cc<   | j                             | j        |dfi |           d S )	Nr  figurer   z	width: %sr  r  z align-r   )r   r7   r   rG  r5  s      rK   visit_figurezHTMLTranslator.visit_figure.  s    "88G 	8'$w-7DM88G 	7MMMYg66MMM	tU;;d;;<<<<<rL   c                 :    | j                             d           d S r	  ry  rq  s     rK   depart_figurezHTMLTranslator.depart_figure6  r  rL   c                 ^    | j                             t          | j                             d S rE   r   r   r@  r7   rq  s     rK   visit_footerzHTMLTranslator.visit_footer9  &    C	NN+++++rL   c                 :   | j                                         }|                     |dd          dg}|                    | j        |d                     |                    d           | j                            |           || j        d d<   | j        |d = d S )Nr   r<   r  z<hr class="footer" />
z
</div>
r   )r   r6  rG  r9  r7   r   r<   r8   )rI   r   rD  r<   s       rK   depart_footerzHTMLTranslator.depart_footer<  s      ""--e8-<<+-di'(((l###6"""%!IeffrL   c                 (   | j         j        }t          |                                t	          |                    s| j                            d| d           | j                            |                     |d|j        |gd                     d S )Nz<aside class="footnote-list z">
r  zdoc-footnoter  )	r^   footnote_referencesr   r  r  r7   r   rG  r   )rI   r   label_styles      rK   visit_footnotezHTMLTranslator.visit_footnoteF  s     m7$//114::>> 	OIMKMMMNNN	tW04k/J,: ' < < 	= 	= 	= 	= 	=rL   c                     | j                             d           t          |                    dd          t	          |                    s| j                             d           d S d S )Nr  FTr  r  rq  s     rK   depart_footnotezHTMLTranslator.depart_footnoteQ  sk    	&&&$...FFt**& & 	+I\*****	+ 	+rL   c           
          d|d         z   }| j         j        g}| j                            |                     |dd|d|                     | j                            d           d S )Nr  r  r  r-   zdoc-noteref)r=  r  r  r  !<span class="fn-bracket">[</span>)r^   r  r7   r   rG  )rI   r   r  r  s       rK   visit_footnote_referencez'HTMLTranslator.visit_footnote_referenceW  s{    T']"=45	tSW,9 ' F F 	G 	G 	G	<=====rL   c                 n    | j                             d           | j                             d           d S )Nz!<span class="fn-bracket">]</span></a>ry  rq  s     rK   depart_footnote_referencez(HTMLTranslator.depart_footnote_reference^  s5    	<===	     rL   c                     d|d         v rc|                                                     d          }| j                            d|                     |          z             t
          j        d S )Nsectnumr      z <span class="sectnum">%s </span>)r   rg   r7   r   r   r   r  )rI   r   r  s      rK   visit_generatedzHTMLTranslator.visit_generatedc  so    Y''kkmm**400GI?#{{7334 5 5 5 .  ('rL   c                     d S rE   r   rq  s     rK   depart_generatedzHTMLTranslator.depart_generatedl  rs  rL   c                 ^    | j                             t          | j                             d S rE   r  rq  s     rK   visit_headerzHTMLTranslator.visit_headero  r  rL   c                 T   | j                                         }|                     |dd          g}|                    | j        |d                     |                    d           | j                            |           | j                            |           | j        |d = d S )Nr   r;   r  z
<hr class="header"/>
</div>
)r   r6  rG  r9  r7   r   r4   r;   )rI   r   rD  r;   s       rK   depart_headerzHTMLTranslator.depart_headerr  s      ""--e8-<<=di'(((8999'''6"""IeffrL   c           	         |d         }|                     d|          }t          j        |          d         }d}i }d|v rd|d         z  |d<   |                     |          }|r||d<   || j        v rd	n| j        }|                     d
|          }|dk    rd|d
<   n"|dk    r	 |                     |          }	t          |	d          5 }
|
                                }d d d            n# 1 swxY w Y   | j	        j
                            |	           |dk    r|                     |||          }nt          j        |                                          }d| d| }n]# t           t"          f$ rI}| j                            | j        j                            d| d| |                     Y d }~nd }~ww xY wt/          |j        t2          j                  rCt/          |j        t2          j                  r't/          |j        j        t2          j                  sd}nd}|| j        v rZ||d<   d|d         v r |d                             d           d|d<    | j        |d|fd|i|d|d          d| d| z   d| z   }nE|dk    r ||d<    | j        |d dfd!|i|| d"| z   }n|r||z  }n||d<    | j        |d#|fd|i|}| j                            |           |r|                      |           d S d S )$Nr   r  r   r-   r  align-%sr  r  r   loadinglazyr   rbzimage/svg+xmlzdata:z;base64,zCannot embed image "r  r   rd   r9   controlsr  videosrcz	<a href="rG  r  z</video>zapplication/x-shockwave-flashr  objectdataz	</object>r   )!r   r   r   r   r   r   r   r]   r_   r^   r   r   r  base64	b64encoder  r   r   r   r   rO   r   r  r   rL  r   TextElement	referenceremoverG  rI  r7   rQ  )rI   r   r   r  mimetypeelementrA  r  r  r   	imagefiler  data64r   r=  s                  rK   visit_imagezHTMLTranslator.visit_image{  s0   5khhuc""',,Q/d??&g6DM??400 	-,DM %77&&T=O((9g..f$DOO= ..s33	)T** 1i ) 0 0I1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 155i@@@.."..tY/?A AGG $-i88??AAF<(<<F<<CC ( N N N$$T]%;%A%A;3;;c;;t &B &M &M N N N N N N N NN 4;(9:: 	$+u77	t{153DEE	 FFFt&&DMT)_,,Y&&z222#-Z $t}T7FLLLtLLET%[EECEEVEEF,F,,-GG 888#DL$t}T8RJJcJTJJ22&223GG 	JvGGDK#dmD%IISIDIIG	!!! 	'  &&&&&	' 	's<   (%E% C."E% .C22E% 5C26E% %F?6?F::F?c                     d S rE   r   rq  s     rK   depart_imagezHTMLTranslator.depart_image  rs  rL   c                 d    | j                             |                     |dd                     d S )Nr  r-   rv  rq  s     rK   visit_inlinezHTMLTranslator.visit_inline  .    	tVR8899999rL   c                 :    | j                             d           d S r  ry  rq  s     rK   depart_inlinezHTMLTranslator.depart_inline  r{  rL   c                 0   | j                             d           | j                             d           | j        j        rS|j                            dg           }t          |          dk    r'| j                             d|d         z             d S d S d S )Nz<span class="label">r  backrefsr   z"<a role="doc-backlink" href="#%s">r   )r7   r   r^   footnote_backlinksrL  r   r@  )rI   r   r  s      rK   visit_labelzHTMLTranslator.visit_label  s    	/000	<====+ 	?{z266H8}}!!	   "02:1+"> ? ? ? ? ?	? 	?!!rL   c                    g }| j         j        r|j                            d|          }t	          |          dk    r| j                            d           | j                            d           t	          |          dk    rLd t          |d          D             }| j                            dd                    |          z             d S d S )Nr  r   r  z)<span class="fn-bracket">]</span></span>
c                 &    g | ]\  }}d |d|dS )z<a role="doc-backlink" href="#rG  r  r   )r   r   refs      rK   r   z/HTMLTranslator.depart_label.<locals>.<listcomp>  sC     A A A%a HKssAAAN A A ArL   z#<span class="backrefs">(%s)</span>
,)	r^   r  rL  r   r@  r7   r   r   rf   )rI   r   r  	backlinkss       rK   depart_labelzHTMLTranslator.depart_label  s    =+ 	={z8<<Hx==AIV$$$	EFFFx==1A A)28Q)?)?A A AIIC"xx	223 4 4 4 4 4 rL   c                 f    | j                             |                     |dd                     d S )Nr   legendr  rv  rq  s     rK   visit_legendzHTMLTranslator.visit_legend  s0    	tU(CCDDDDDrL   c                 :    | j                             d           d S r	  ry  rq  s     rK   depart_legendzHTMLTranslator.depart_legend  r  rL   c                     | j                             |                     |ddd                     t          |          s| j                             d           d S d S )Nr   r-   liner  z<br />)r7   r   rG  r@  rq  s     rK   
visit_linezHTMLTranslator.visit_line  s`    	tU2VLLMMM4yy 	'IX&&&&&	' 	'rL   c                 :    | j                             d           d S r	  ry  rq  s     rK   depart_linezHTMLTranslator.depart_line  r  rL   c                 f    | j                             |                     |dd                     d S )Nr   z
line-blockr  rv  rq  s     rK   visit_line_blockzHTMLTranslator.visit_line_block  s0    	tU,GGHHHHHrL   c                 :    | j                             d           d S r	  ry  rq  s     rK   depart_line_blockz HTMLTranslator.depart_line_block  r  rL   c                 d    | j                             |                     |dd                     d S )Nlir-   rv  rq  s     rK   visit_list_itemzHTMLTranslator.visit_list_item  r;  rL   c                 :    | j                             d           d S )Nz</li>
ry  rq  s     rK   depart_list_itemzHTMLTranslator.depart_list_item  r{  rL   c                 ^   |d         }d|v rY|                     |                    d                     | j                            |                     |dd                     d S | j                            |                     |ddd                     |                                }t          |j        t          j	                  s|
                    dd          }| j                            |          D ]}|                                rK| j                            |          r1| j                            d	|                     |          z             a| j                            |                     |                     | j                            d
           t          j        )Nr  rL  r-   r  zdocutils literalr  rd   r   z<span class="pre">%s</span>r  )r6  rY  r7   r   rG  r   r   rL  r   literal_blockr   words_and_spacesfindallr  in_word_wrap_pointsearchr   r  )rI   r   r  r   tokens        rK   visit_literalzHTMLTranslator.visit_literal  s   y/WKKf--...IT]]4<<===F	MM$2DMEE	G 	G 	G{{}}$+u':;; 	+<<c**D *22488 	5 	5E{{}} 5!8!?!?!F!F 5	  !>#';;u#5#5"6 7 7 7 7 	  U!3!34444	###nrL   c                 :    | j                             d           d S )N</code>ry  rq  s     rK   depart_literalzHTMLTranslator.depart_literal  s    	#####rL   c                     | j                             |                     |ddd                     d|d         v r| j                             d           d S d S )Nr  r-   zliteral-blockr  rL  r  z<code>rv  rq  s     rK   visit_literal_blockz"HTMLTranslator.visit_literal_block  s_    	tUBoNNOOOT)_$$IX&&&&& %$rL   c                     d|d         v r| j                             d           | j                             d           d S )NrL  r  r  z</pre>
ry  rq  s     rK   depart_literal_blockz#HTMLTranslator.depart_literal_block  sC    T)_$$IY'''	$$$$$rL   r  formulattr  mathr-   problematic)r   latexrX  mathmlr  c           	          t          |t          j                  } j        }|                                                    t          j                  }|dk    rp j        r2 j	        s+ fd j        
                    d          D              _	        |t          j        _        t          ||          }t          j        |          }n|dk    r                     |          }n|dk    r j	        sc j        r j         _        n! j        j                            d|           d j        vr xj        d	z  c_         j         j        z  g _	        |rt          ||          }nd
| d}                     |          }n|dk    rd j        v r j         _         j         _         j        rt3          t4           j                  }nt6          j        }	  |||          }n# t:          t<          f$ r}t3          |dg           } j                               j        j        j        |g|R d|i                                |                                          } j!        j"        dk    rd}nd}t          |t<                    r| _        Y d }~nd }~ww xY w j#        |         |         }|rdnd}	|rB j$                              %                    |||	 j#        |         d                               j$        &                    ||	g           |r  j$                             d| d|	            t          j'        )Nr   c                 x    g | ]6}                     t          j        |j        j                  d           7S )T)r&  )r   r   find_file_in_dirsr^   stylesheet_dirs)r   srI   s     rK   r   z-HTMLTranslator.visit_math.<locals>.<listcomp>8  s^     $; $; $;  (()@4=8*: *:GK ) M M$; $; $;rL   r  r  rX  zANo MathJax URL specified, using local fallback (see config.html).r   ?z?config=TeX-AMS_CHTMLz\(z\)r  zXHTML 1)as_blockr%  r   r   r  rd   r-   rO  rY  r   )(r   r   
math_blockr   r   rX   r   uni2tex_tabler   r   rv   r   DocumentParametersdisplaymoder   r   mathjax_urlrO   r   r   mathjax_scriptr[  doctype_mathmlcontent_type_mathmlr   rT   r   r   
tex2mathmlr   r   r   r   r^   rO  	math_tagsr7   rG  r9  SkipChildren)
rI   r   is_blockformat	math_code	converterr   r%  tagr=  s
   `         rK   
visit_mathzHTMLTranslator.visit_math/  s   dE$455!KKMM++K,EFF	 V  ;)9 ;$; $; $; $; ".44S99$; $; $;  8@I(4&y(;;I!+I66IIwI..IIy  # L$ >'+'8D$$M*22-8< 3 > > >
 d...$$(??$$$($7$:J$J#K  0*9h??		/)///	I..IIxDL((#2$($<!  4#$5t7HII		(3	.%Ii(CCC		w' . . .!#y"55$$%CT]%;%C&3!&3 &3 &3-1&3 &3 4 4 4 KK66	=-22*FF$Fc7++ .'-D$. nV$X.!)r 	OIT]]4V37>&3I!3L + N N O O O	)V,--- 	2I0#0000111  s   G, ,J#=BJJ#c                     d S rE   r   rq  s     rK   depart_mathzHTMLTranslator.depart_mathw  rs  rL   c                 0    |                      |           d S rE   )r  rq  s     rK   visit_math_blockzHTMLTranslator.visit_math_blockz  s    rL   c                 0    |                      |           d S rE   )rQ  rq  s     rK   depart_math_blockz HTMLTranslator.depart_math_block}  s    T"""""rL   c                 x    | j                              | j        |dfi |                                           d S )Nr=   )r=   r   rI  non_default_attributesrq  s     rK   
visit_metazHTMLTranslator.visit_meta  s\    	tV H H)-)D)D)F)FH H 	I 	I 	I 	I 	IrL   c                     d S rE   r   rq  s     rK   depart_metazHTMLTranslator.depart_meta  rs  rL   c                 h    | j                             |                     |ddd                     d S )Nr  r-   optionr  rv  rq  s     rK   visit_optionzHTMLTranslator.visit_option  s2    	tVRxHHIIIIIrL   c                     | j                             d           t          |                    dd          t          j                  r| j                             d           d S d S )Nr  FTr  , )r7   r   r   r  r   r  rq  s     rK   depart_optionzHTMLTranslator.depart_option  sg    	###dnnUTnBBl$ $ 	#IT"""""	# 	#rL   c                     | j                             |                    dd                     | j                             |                     |dd                     d S )N	delimiterr   varr-   )r7   r   r   rG  rq  s     rK   visit_option_argumentz$HTMLTranslator.visit_option_argument  sR    	+s33444	tUB7788888rL   c                 :    | j                             d           d S )Nz</var>ry  rq  s     rK   depart_option_argumentz%HTMLTranslator.depart_option_argument  r  rL   c                     | j                             |                     |dd                     | j                             d           d S )Nr  r-   z<kbd>rv  rq  s     rK   visit_option_groupz!HTMLTranslator.visit_option_group  sD    	tT266777	!!!!!rL   c                 :    | j                             d           d S )Nz</kbd></dt>
ry  rq  s     rK   depart_option_groupz"HTMLTranslator.depart_option_group  s    	)))))rL   c                 f    | j                             |                     |dd                     d S )Nr.  zoption-listr  rv  rq  s     rK   visit_option_listz HTMLTranslator.visit_option_list  s;    	MM$MM::	< 	< 	< 	< 	<rL   c                 :    | j                             d           d S rC  ry  rq  s     rK   depart_option_listz!HTMLTranslator.depart_option_list  r{  rL   c                     d S rE   r   rq  s     rK   visit_option_list_itemz%HTMLTranslator.visit_option_list_item  rs  rL   c                     d S rE   r   rq  s     rK   depart_option_list_itemz&HTMLTranslator.depart_option_list_item  rs  rL   c                     d S rE   r   rq  s     rK   visit_option_stringz"HTMLTranslator.visit_option_string  rs  rL   c                     d S rE   r   rq  s     rK   depart_option_stringz#HTMLTranslator.depart_option_string  rs  rL   c                 2    |                      |d           d S )Norganizationr  rq  s     rK   visit_organizationz!HTMLTranslator.visit_organization  s    n55555rL   c                 .    |                                   d S rE   r  rq  s     rK   depart_organizationz"HTMLTranslator.depart_organization  r  rL   c                 d    | j                             |                     |dd                     d S )Nr  r-   rv  rq  s     rK   visit_paragraphzHTMLTranslator.visit_paragraph  s.    	tS"5566666rL   c                 "   | j                             d           t          |j        t          j        t          j        f          rt          |j                  dk    s1| j                             d           |                     |           d S d S )Nr  r   rd   )	r7   r   r   rL  r   	list_itemrN  r@  rQ  rq  s     rK   depart_paragraphzHTMLTranslator.depart_paragraph  s    	   4;%+(FGG 	'%%**IT"""  &&&&& +*rL   c                 B   |                     d          r>| j                            d|d         z             | j                            d           n| j                            d           | j                            |                     |ddd                     d S )Nr  z<a href="#%s">r  r-   r  r  r  )hasattrr7   r   r   rG  rq  s     rK   visit_problematicz HTMLTranslator.visit_problematic  s    <<   	$I-W=>>>L''''L###	tVR}MMNNNNNrL   c                     | j                             d           | j                             | j                                                   d S r  r  rq  s     rK   depart_problematicz!HTMLTranslator.depart_problematic  sB    	###	))++,,,,,rL   c                    d|                     dd                                          v rt          |j        t          j                  rd}nd}|d         r0| j                            |                     ||d                     | j                            |	                                           |d         r| j                            d|z             t          j
        )	Nr   r  r-   r  r   r  r=  z</%s>)r   rv   r   rL  r   r  r7   r   rG  r   r  )rI   r   r   s      rK   	visit_rawzHTMLTranslator.visit_raw  s    TXXh++113333$+u'899   I J	  tWR!H!HIIIIT[[]]+++I 4	  7!2333nrL   c                    ddgi}d}d|v rs|d         |d<   | j         j        r@|d                             d          r%|                     |d                   |d<   d| _        |d                             d           n7d	|v s
J d
            d|d	         z   |d<   |d                             d           t          |          dk    r;t          |d         t          j	                  r|d                             d           t          |j
        t          j                  sd}| j                             | j        |d|fi |           d S )Nr  r  r-   refurir  zmailto:Texternalr  z3References must have "refuri" or "refid" attribute.r  r0  r   r   zimage-referencerd   r  )r^   r   r
  r   r   r   r@  r   r   imagerL  r  r7   rG  )rI   r   rA  r=  s       rK   visit_referencezHTMLTranslator.visit_reference  s\   K=)t>DL3 &L++I66&#00f>>V!%O"":....d???H #??g.DLO"":...t99>>ja%+>>>O""#4555$+u'899 	F	tS&AADAABBBBBrL   c                     | j                             d           t          |j        t          j                  s| j                             d           d| _        d S )Nr  rd   F)r7   r   r   rL  r   r  r   rq  s     rK   depart_referencezHTMLTranslator.depart_reference  sP    	   $+u'899 	#IT"""rL   c                 6    |                      |dd           d S )NrevisionFr  r  rq  s     rK   visit_revisionzHTMLTranslator.visit_revision  s#    ju=====rL   c                 .    |                                   d S rE   r  rq  s     rK   depart_revisionzHTMLTranslator.depart_revision
  r  rL   c                 r    | j                             |                     |dd                     d|_        d S )Ntrr-   r   )r7   r   rG  rm  rq  s     rK   	visit_rowzHTMLTranslator.visit_row  s3    	tT266777rL   c                 :    | j                             d           d S )Nz</tr>
ry  rq  s     rK   
depart_rowzHTMLTranslator.depart_row  r{  rL   c                 h    | j                             |                     |ddd                     d S )Nr  r-   rubricr  rv  rq  s     rK   visit_rubriczHTMLTranslator.visit_rubric  s2    	tS"HEEFFFFFrL   c                 :    | j                             d           d S r  ry  rq  s     rK   depart_rubriczHTMLTranslator.depart_rubric  r  rL   c                     | xj         dz  c_         | j                            |                     |dd                     d S )Nr   r   sectionr  )r   r7   r   rG  rq  s     rK   visit_sectionzHTMLTranslator.visit_section  sO    a	MM$YM77	9 	9 	9 	9 	9rL   c                 Z    | xj         dz  c_         | j                            d           d S )Nr   r  )r   r7   r   rq  s     rK   depart_sectionzHTMLTranslator.depart_section  s2    a	$$$$$rL   c                 t    | j                             |                     |dd                     d| _        d S )Nr   sidebarr  T)r7   r   rG  r   rq  s     rK   visit_sidebarzHTMLTranslator.visit_sidebar$  s<    	MM$YM77	9 	9 	9rL   c                 H    | j                             d           d| _        d S )Nr  F)r7   r   r   rq  s     rK   depart_sidebarzHTMLTranslator.depart_sidebar)  s#    	$$$rL   c                 6    |                      |dd           d S )NstatusFr  r  rq  s     rK   visit_statuszHTMLTranslator.visit_status-  s#    hU;;;;;rL   c                 .    |                                   d S rE   r  rq  s     rK   depart_statuszHTMLTranslator.depart_status0  r  rL   c                 d    | j                             |                     |dd                     d S )Nstrongr-   rv  rq  s     rK   visit_strongzHTMLTranslator.visit_strong3  s.    	tXr::;;;;;rL   c                 :    | j                             d           d S )Nz	</strong>ry  rq  s     rK   depart_strongzHTMLTranslator.depart_strong6  s    	%%%%%rL   c                 d    | j                             |                     |dd                     d S )Nr   r-   rv  rq  s     rK   visit_subscriptzHTMLTranslator.visit_subscript9  .    	tUB7788888rL   c                 :    | j                             d           d S )Nz</sub>ry  rq  s     rK   depart_subscriptzHTMLTranslator.depart_subscript<  r  rL   c                     t           j        )zInternal only.r   r  rq  s     rK   visit_substitution_definitionz,HTMLTranslator.visit_substitution_definition?  
    nrL   c                 0    |                      |           d S rE   )unimplemented_visitrq  s     rK   visit_substitution_referencez+HTMLTranslator.visit_substitution_referenceC  s      &&&&&rL   c                 p   t          |j        t          j                  rdg}nat          |j        t          j                  r dg}t          | j                  dz   | _        n"t          |j        t          j                  rdg}| j        	                    | 
                    |dd|                     d S )Nzsidebar-subtitler:   r   zsection-subtitler  r-   r  )r   rL  r   rh  rO   r@  r7   r   rc  r   rG  r/  s      rK   visit_subtitlezHTMLTranslator.visit_subtitleJ  s    dk5=11 	+)*GGU^44 	+!lG%(^^a%7D""U]33 	+)*G	tS"gFFGGGGGrL   c                 L   | j                             d           t          |j        t          j                  rj| j         | j        d         | _        d| _        | j        	                    | j                    | j
        	                    | j                    | j         d d = d S d S )Nr  rZ  r   )r7   r   r   rL  r   rO   r   r:   r5   r9  rB   rq  s     rK   depart_subtitlezHTMLTranslator.depart_subtitleT  s    	"""dk5>22 	 Id&<R&?@DM%&D"!((333%%di000	!!!	 	rL   c                 d    | j                             |                     |dd                     d S )Nsupr-   rv  rq  s     rK   visit_superscriptz HTMLTranslator.visit_superscript]  rx  rL   c                 :    | j                             d           d S )Nz</sup>ry  rq  s     rK   depart_superscriptz!HTMLTranslator.depart_superscript`  r  rL   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 )Nr  zsystem-messager  z <p class="system-message-title">r-   r  r   z%; <em><a href="#%s">backlink</a></em>r   z
<a href="#rG  r  z; <em>backlinks: %s</em>r"  r  z	, line %szSystem Message: r  r   rK  z! (<span class="docutils literal">rT  r  r  r  )r7   r   rG  r@  rf   rE  r   )rI   r   backref_textr  r   r  backrefr  s           rK   visit_system_messagez#HTMLTranslator.visit_system_messagec  s   	tW<LMMNNN	;<<<tJ   	8J'H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rL   c                 :    | j                             d           d S r  ry  rq  s     rK   depart_system_messagez$HTMLTranslator.depart_system_message}  r  rL   c                 4   d| j         j                            dd                                          i}d|v r$|d                             d|d         z             d|v rd|d         z  |d<    | j        |d	fi |}| j                            |           d S )
Nr  r  r   r  r  r   z
width: %s;r  r8  )r^   r  r   rv   r   rG  r7   )rI   r   rA  r  s       rK   visit_tablezHTMLTranslator.visit_table  s    4=4<<S#FFLLNNOd??O"":W#=>>>d??(4=8DMdmD'22T22	rL   c                 d    | j                             d           |                     |           d S )Nz	</table>
)r7   r   rQ  rq  s     rK   depart_tablezHTMLTranslator.depart_table  s2    	&&&T"""""rL   c                     d|vrUd|vrQd|vrM| j                             |                     |ddd                     | j                            d           d S | j                            d           d S )	NrM  r  r  r  r-   targetr  r  )r7   r   rG  r   rq  s     rK   visit_targetzHTMLTranslator.visit_target  s    D  4''T))IT]]48]LLMMML	*****L#####rL   c                 h    | j                             | j                                                   d S rE   r  rq  s     rK   depart_targetzHTMLTranslator.depart_target  rq  rL   c                 b    | j                             |                     |d                     d S )Ntbodyrv  rq  s     rK   visit_tbodyzHTMLTranslator.visit_tbody  ,    	tW5566666rL   c                 :    | j                             d           d S )Nz	</tbody>
ry  rq  s     rK   depart_tbodyzHTMLTranslator.depart_tbody  r  rL   c           
      "   d|j         j         d         v r2| j                            |                     |dd                     d S | j                            |                     |dd|j         d         |j         d                              d S )	Nr%  r  summaryr-   rJ  r  r2  )r=  r  r2  r'  rq  s     rK   
visit_termzHTMLTranslator.visit_term  s    *9555IT]]42]FFGGGGG IT]]4b37;y3I/3{5/A + C C D D D D DrL   c                     |                     t          j        dd          rd S d|j        j        d         v r| j                            d           d S | j                            d           d S )NFTr  r%  r  z</summary>
z</dt>
)r  r   r  rL  r7   r   rq  s     rK   r  zHTMLTranslator.depart_term  sq    >>%*ED>II 	F*9555I^,,,,,IY'''''rL   c                 "    g | _         g |_        d S rE   )r   r  rq  s     rK   visit_tgroupzHTMLTranslator.visit_tgroup  s    


rL   c                     d S rE   r   rq  s     rK   depart_tgroupzHTMLTranslator.depart_tgroup  rs  rL   c                 b    | j                             |                     |d                     d S )Nrl  rv  rq  s     rK   visit_theadzHTMLTranslator.visit_thead  r  rL   c                 :    | j                             d           d S )Nz	</thead>
ry  rq  s     rK   depart_theadzHTMLTranslator.depart_thead  r  rL   c                 J   i }| j         | j        z   dz
  }dt          |d          z  }|dk    r||d<    | j        ||dfi |}|                    d          rDi }d|d<   d	|d
<   d|d         z   |d<   | | j        t          j                    ddfi |z  }d|z  }nd|z  }||fS )Nr   zh%i   z
aria-levelr-   r  ztoc-backrefr  zdoc-backlinkr  r  r  r  z
</a></%s>
rk  )r   r   minrG  rE  r   r  )rI   r   rA  h_levelr   	start_tag	close_tags          rK   section_title_tagsz!HTMLTranslator.section_title_tags  s    $t'@@1D#gq//)Q;;!(D!DM$<<t<<	<<   	,D)DM)DLg.DLu'8'8#rJJTJJJI%/II!G+I)##rL   c                    d}t          |j        t          j                  rj| j                            |                     |ddd                     | j        j        r+d|j        d         v r| j                            d           d	}nt          |j        t          j	                  r3| j                            |                     |ddd
                     nbt          |j        t          j
                  r3| j                            |                     |ddd                     nt          |j        t          j                  r2| j                            |                     |dd                     d}nt          |j        t          j                  rM| j                            |                     |ddd                     d}t          | j                  | _        nSt          |j        t          j                  sJ |                     |          \  }}| j                            |           | j                            |           d S )Nr  r  r-   ztopic-titler  r  r  z*<a class="reference internal" href="#top">z	</a></p>
zsidebar-titlezadmonition-titler  z</caption>
h1r9   z</h1>
)r   rL  r   topicr7   r   rG  r^   toc_backlinksrh  
Admonitionr8  rO   r@  r   rc  r  r   )rI   r   r  r  s       rK   visit_titlezHTMLTranslator.visit_title  s.   	dk5;// 	(IdC=AAC C C+ )$+i"888	  !MNNN(	U]33 	(IdC?CCE E E EU%566 	(I--c25G-HHJ J J JU[11 	(IT]]4B??@@@&IIU^44 	(IT]]4r]IIJJJ!I%(^^D""dk5=99999#'#:#:4#@#@ IyIY'''I&&&&&rL   c                 J   | j                             | j                                                   | j        rj| j         | j        d         | _        d| _        | j                            | j                    | j                            | j                    | j         d d = d S d S )NrZ  r   )	r7   r   r   r6  r   r9   r5   r9  rA   rq  s     rK   depart_titlezHTMLTranslator.depart_title  s    	))++,,,! 	4#9"#<=DJ%&D"!((333O""49---	!!!	 	rL   c                 d    | j                             |                     |dd                     d S )Nciter-   rv  rq  s     rK   visit_title_referencez$HTMLTranslator.visit_title_reference  r  rL   c                 :    | j                             d           d S )Nz</cite>ry  rq  s     rK   depart_title_referencez%HTMLTranslator.depart_title_reference  r{  rL   c                 f    | j                             |                     |dd                     d S )Nr   r  r  rv  rq  s     rK   visit_topiczHTMLTranslator.visit_topic   s0    	tU'BBCCCCCrL   c                 :    | j                             d           d S r	  ry  rq  s     rK   depart_topiczHTMLTranslator.depart_topic  r  rL   c                 f    | j                             |                     |dd                     d S )Nhrri   r  )r7   r   rI  rq  s     rK   visit_transitionzHTMLTranslator.visit_transition  s0    	tTDDEEEEErL   c                     d S rE   r   rq  s     rK   depart_transitionz HTMLTranslator.depart_transition	  rs  rL   c                 6    |                      |dd           d S )Nre   Fr  r  rq  s     rK   visit_versionzHTMLTranslator.visit_version  r  rL   c                 .    |                                   d S rE   r  rq  s     rK   depart_versionzHTMLTranslator.depart_version  r  rL   c                 :    t          d|j        j        z            )Nz$visiting unimplemented node type: %s)NotImplementedErrorrJ   rp   rq  s     rK   r  z"HTMLTranslator.unimplemented_visit  s$    !"H$(N$;#< = = 	=rL   rE   )rd   F)rd   )r   )T)rp   rq   rr   __doc__r[  r  r\  r   ri   rj   r   r]  r  r  r%  r"  r   compiler  r  r7  ordr   r   r   r   r   r   r   r   r   r  r   rG  rI  rQ  r\  r   ro  rr  rw  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  r  r
  r  r  r  r  r  r  r  r  r!  r#  r(  r,  r0  r3  r6  r8  r:  r>  rA  rE  r  r  rP  rR  rV  r^  ra  rc  rn  rp  ru  rw  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  r  r  r  r  r  r  r  r   r#  r'  r)  r+  r-  r/  r1  r3  r5  r7  r9  r<  r>  r@  rC  rF  rH  rK  rP  rR  rU  rW  rZ  r\  r_  ra  rd  rf  ri  rk  rn  rp  rs  ru  rw  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  r  r   rL   rK   r   r      s       6 6p "GNN,L	1H4H 	1 	1 	1  $):>> KNAK NOE!rz"233#$677N#c((G#c((F#c((H#c((F#c((G	 N9J<P P Pd7 7 7 %"*^44   7 7 7' ' '7 7 72+ 2+ 2+h'4 '4 '4R8 8 8 8*@N @N @N @NDN N N N( ( (
( 
( 
( 
(  <" " "  : : :$ $ $= = =' ' 'D D D
# # #O O O' ' ' ' $2*4%/#+- -
C C C8 8 8     
' ' '1 1 1# # #< < <, , ,  ", , ,&< < <$ $ $H H H# # #@ @ @) ) )
> 
> 
>" " "N N N  > > >
* * *$ %"*X..2   G G G% % %D D D% % %= = =# # #3 3 3# # #. . .# # #    < < <( ( (I I I( ( (E E E- - -8 8 8$ $ $E E E  D D D D$ $ $O O O' ' 'C C C
G G G08 8 8" " "9 9 9(- - -< < <$ $ $< < <$$ $ $1 1 1  H H H@ @ @( ( ($ $ $= = =% % %, , ,  	= 	= 	=+ + +> > >! ! !
! ! !  , , ,  C' C' C'J  : : :$ $ $? ? ?4 4 4E E E% % %' ' '
% % %I I I% % %8 8 8$ $ $  0$ $ $' ' '
% % % !%)51#UVH5r?!'0G H IF! F! F!P    # # #
I I I  J J J# # #9 9 9# # #" " "* * *< < <$ $ $        6 6 6# # #$7 7 7' ' 'O O O- - -  C C C*  > > ># # #  $ $ $G G G# # #9 9 9
% % %
  
     < < <# # #< < <& & &9 9 9# # #  ' ' 'H H H  9 9 9# # #N N N4' ' '  # # #$ $ $- - -7 7 7' ' 'D D D( ( (    7 7 7' ' '$ $ $&' ' '>  : : :$ $ $D D D% % %F F F  = = =# # #= = = = =rL   r   c                       e Zd ZdZd Zd Zd Zd ZeZeZ	eZ
eZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZ eZ!eZ"dS )r  a  
    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.

    This version also checks for simple field lists and docinfo.
    c                     t           j        rE   )r   r  rq  s     rK   default_visitzSimpleListChecker.default_visit"  s
    orL   c                    d |j         D             }|rt          |d         t          j                  rtt          |d         t          j                  s@t          |d         t          j                  s t          |d         t          j                  r|                                 t          |          dk    rd S t          j	        )Nc                 F    g | ]}t          |t          j                  |S r   rT  )r   r[  s     rK   r   z5SimpleListChecker.visit_list_item.<locals>.<listcomp>&  s8     ? ? ?e%eU_==?E ? ? ?rL   r   rZ  r   )
rZ  r   r   	paragraphr  r  r  r6  r@  r  )rI   r   rZ  s      rK   r  z!SimpleListChecker.visit_list_item%  s    ? ?t} ? ? ? 	HQKAA 	HRL%*;<<	x|U-BCC	 x|U-=>>	 LLNNNx==AF/!rL   c                     d S rE   r   rq  s     rK   	pass_nodezSimpleListChecker.pass_node2  rs  rL   c                     t           j        rE   r|  rq  s     rK   ignore_nodezSimpleListChecker.ignore_node5  r~  rL   N)#rp   rq   rr   r  r  r  r  r  ro  r@  r  ru  rA  r  r  r  r  r  r  r<  rn  r  r0  r6  r  r  r(  r|  r  r  r  r  r}  r  visit_pendingr   rL   rK   r  r    s           " " "    
 J!O "%M L#M#MM!OJ$L#M &!*J & !K&"  M$/!LMMMrL   r  )&r  r  r   rg  os.pathpathlibr   r   r_  r   xml.etree.ElementTreeetreeElementTreer  ri   r   r   r   r   r   docutils.parsers.rst.directivesr	   &docutils.parsers.rst.directives.imagesr
   docutils.transformsr   docutils.utils.mathr   r   r   r   r   r   r   r   r   GenericNodeVisitorr  r   rL   rK   <module>r     s  " 3 2      				        				   " " " " " " " " "  ? ? ? ? ? ? ? ? ? ? ? ? ? ? L L L L L L 6 6 6 6 6 6 * * * * * *I I I I I I I I I I I I I I I IM< M< M< M< M<W^ M< M< M<`^= ^= ^= ^= ^=U& ^= ^= ^=B3H  H  H  H  H 0 H  H  H  H  H rL   