ó
    ×›‘h£‘  ã            
      ó¤  • S r SSKJr  SSKrSSKrSSKJrJr  SSKJ	r	J
r
  SSKJr  SSKJr  SSKJrJr  S	R%                  \
" \	" S
SSS5      5      5      r\R(                  " \\SS9  S rS rS rSr\" \5      r\R9                  5         \S-   r\" \5      r\R9                  5         \4S jr\4S jr  " S S\!5      r" " S S5      r# " S S\#5      r$ " S S\#5      r% " S S\#5      r& " S  S!\&5      r' " S" S#\&5      r( " S$ S%\&5      r)S& r*\*" 5       r+ " S' S(\&5      r, " S) S*\#5      r-S+ r.S, r/ " S- S.\5      r0S/ r1S0 r2S1 r3S2 r4 " S3 S45      r5g)5aÂ  
Micro Document Object Model: a partial DOM implementation with SUX.

This is an implementation of what we consider to be the useful subset of the
DOM.  The chief advantage of this library is that, not being burdened with
standards compliance, it can remain very stable between versions.  We can also
implement utility 'pythonic' ways to access and mutate the XML tree.

Since this has not subjected to a serious trial by fire, it is not recommended
to use this outside of Twisted applications.  However, it seems to work just
fine for the documentation generator, which parses a fairly representative
sample of XML.

Microdom mainly focuses on working with HTML and XHTML.

This module is now deprecated.
é    )ÚannotationsN)ÚBytesIOÚStringIO)ÚVersionÚgetVersionString)ÚioType)ÚInsensitiveDict)Ú
ParseErrorÚ	XMLParserz)twisted.web.microdom was deprecated at {}ÚTwistedé   é
   é   )Ú
stacklevelc                óØ   • / nUR                   nU /n[        U5      S:”  aI  UR                  S5      nUR                  U:X  a  U" U5        UR                  USS& [        U5      S:”  a  MI  U$ )a  
Return a list of all child elements of C{iNode} with a name matching
C{name}.

Note that this implementation does not conform to the DOM Level 1 Core
specification because it may return C{iNode}.

@param iNode: An element at which to begin searching.  If C{iNode} has a
    name matching C{name}, it will be included in the result.

@param name: A C{str} giving the name of the elements to return.

@return: A C{list} of direct or indirect child elements of C{iNode} with
    the name C{name}.  This may include C{iNode}.
r   N)ÚappendÚlenÚpopÚnodeNameÚ
childNodes©ÚiNodeÚnameÚmatchesÚmatches_appendÚsliceÚcs         ÚXC:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\twisted/web/microdom.pyÚgetElementsByTagNamer   )   sh   € ð  €GØ—^‘^€NØˆG€EÜ
ˆe‹*�q‹.Ø�I‰I�a‹LˆØ�:‰:˜ÓÙ˜1ÔØ—L‘Lˆˆbˆqˆ	ô	 ˆe‹*�q�.ð
 €Nó    c                ó  • UR                  5       n/ nUR                  nU /n[        U5      S:”  aW  UR                  S5      nUR                  R                  5       U:X  a  U" U5        UR
                  US S& [        U5      S:”  a  MW  U$ ©Nr   )Úlowerr   r   r   r   r   r   s         r   ÚgetElementsByTagNameNoCaser$   D   sz   € Ø�:‰:‹<€DØ€GØ—^‘^€NØˆG€EÜ
ˆe‹*�q‹.Ø�I‰I�a‹LˆØ�:‰:×ÑÓ Ó%Ù˜1ÔØ—L‘Lˆˆbˆqˆ	ô	 ˆe‹*�q�.ð
 €Nr    c                óJ   ^ • [        T 5      [        :X  a  U 4S jnU$ U 4S jnU$ )Nc                ót   >• [        U [        5      (       a  U R                  S5      n TR                  U 5        g ©Nzutf-8)Ú
isinstanceÚstrÚencodeÚwrite©ÚsÚstreams    €r   ÚwÚ_streamWriteWrapper.<locals>.wT   s)   ø€ Ü˜!œS×!Ñ!Ø—H‘H˜WÓ%�Ø�L‰L˜�Or    c                ót   >• [        U [        5      (       a  U R                  S5      n TR                  U 5        g r'   )r(   ÚbytesÚdecoder+   r,   s    €r   r/   r0   [   s)   ø€ Ü˜!œU×#Ñ#Ø—H‘H˜WÓ%�Ø�L‰L˜�Or    )r   r2   )r.   r/   s   ` r   Ú_streamWriteWrapperr4   Q   s'   ø€ Üˆfƒ~œÓõ	ð €Hõ	ð
 €Hr    ))Ú&z&amp;)Ú<z&lt;)Ú>z&gt;)Ú"z&quot;))Ú'z&apos;c                ó>   • U H  u  p#U R                  X25      n M     U $ )z)
Perform the exact opposite of 'escape'.
©Úreplace©ÚtextÚcharsr-   Úhs       r   ÚunescaperA   r   ó#   € ó ‰ˆØ�|‰|˜AÓ!Šñ à€Kr    c                ó>   • U H  u  p#U R                  X#5      n M     U $ )z3
Escape a few XML special chars with XML entities.
r;   r=   s       r   ÚescaperD   {   rB   r    c                  ó$   • \ rS rSrS rSS jrSrg)ÚMismatchedTagsé„   c                óf   • XX6XtU4u  U l         U l        U l        U l        U l        U l        U l        g ©N)ÚfilenameÚexpectÚgotÚbegLineÚbegColÚendLineÚendCol)ÚselfrJ   rK   rL   rO   rP   rM   rN   s           r   Ú__init__ÚMismatchedTags.__init__…   s8   € ð ˜s¨V¸fÐEñ	
ØŒMØŒKØŒHØŒLØŒKØŒLØ�Kr    c                ó®   • SU R                   < SU R                  < SU R                  < SU R                  < SU R                  < SU R
                  < 3$ )Nzexpected </z	>, got </z> line: z col: z, began line: )rK   rL   rO   rP   rM   rN   ©rQ   s    r   Ú__str__ÚMismatchedTags.__str__�   s8   � ð
 —”Ø—”Ø—”Ø—”Ø—”Ø—“ð	ð	
r    )rN   rM   rP   rO   rK   rJ   rL   N©Úreturnr)   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__rR   rV   Ú__static_attributes__© r    r   rF   rF   „   s   † ò	F÷
r    rF   c                  óœ   • \ rS rSrS rSS jrS rSSSS0 S4S jrSSSS0 S4S jrSS	 jr	SS
 jr
SS jrS rS rS rS rS rS rS rSrg)ÚNodeéŸ   Nc                ó   • Xl         / U l        g rI   )Ú
parentNoder   )rQ   rd   s     r   rR   ÚNode.__init__¢   s   € Ø$ŒØˆ�r    c                óà   • [        U R                  5      [        UR                  5      :w  a  g[        U R                  UR                  5       H  u  p#UR                  U5      (       a  M    g   g)zÔ
Compare this node to C{other}.  If the nodes have the same number of
children and corresponding children are equal to each other, return
C{True}, otherwise return C{False}.

@type other: L{Node}
@rtype: C{bool}
FT)r   r   ÚzipÚisEqualToNode)rQ   ÚotherÚaÚbs       r   rh   ÚNode.isEqualToNode¦   sW   € ô ˆt�‰Ó¤3 u×'7Ñ'7Ó#8Ó8ØÜ˜Ÿ™¨×)9Ñ)9Ö:‰DˆAØ—?‘? 1×%Ó%Ùñ ;ð r    Ú r   c                ó   • [        5       erI   ©ÚNotImplementedError)rQ   r.   ÚindentÚ	addindentÚnewlÚstripÚ
nsprefixesÚ	namespaces           r   ÚwritexmlÚNode.writexml¶   s   € ô "Ó#Ð#r    c           	     ób   • [        5       nU R                  XqX#XEU5        UR                  5       nU$ rI   )r   rw   Úgetvalue)	rQ   rq   rr   rs   rt   ru   rv   r-   Úrvs	            r   ÚtoxmlÚ
Node.toxmlÂ   s-   € ô ‹JˆØ�‰�a °%ÀYÔOØ�Z‰Z‹\ˆØˆ	r    c                ó(   • U R                  XX4U5      $ rI   )rw   )rQ   r.   rq   rr   rs   rt   s         r   ÚwriteprettyxmlÚNode.writeprettyxmlÊ   s   € Ø�}‰}˜V¨Y¸eÓDÐDr    c                ó&   • U R                  XX45      $ rI   )r|   )rQ   rq   rr   rs   rt   s        r   ÚtoprettyxmlÚNode.toprettyxmlÍ   s   € Ø�z‰z˜&¨TÓ9Ð9r    c                ó   • [        5       erI   ro   ©rQ   ÚdeepÚparents      r   Ú	cloneNodeÚNode.cloneNodeÐ   s   € Ü!Ó#Ð#r    c                ó(   • U R                   (       a  gg)Né   r   ©r   rU   s    r   ÚhasChildNodesÚNode.hasChildNodesÓ   s   € Ø�?�?Øàr    c                ó†   • [        U[        5      (       d  [        S5      eU R                  R	                  U5        Xl        g)z²
Make the given L{Node} the last child of this node.

@param child: The L{Node} which will become a child of this node.

@raise TypeError: If C{child} is not a C{Node} instance.
úexpected Node instanceN)r(   ra   Ú	TypeErrorr   r   rd   ©rQ   Úchilds     r   ÚappendChildÚNode.appendChildÙ   s5   € ô ˜%¤×&Ñ&ÜÐ4Ó5Ð5Ø�‰×Ñ˜uÔ%ØÕr    c                óè   • [        U[        5      (       a  [        U[        5      (       d  [        S5      eU R                  R	                  U5      nXl        U R                  R                  X15        U$ )aT  
Make the given L{Node} C{new} a child of this node which comes before
the L{Node} C{ref}.

@param new: A L{Node} which will become a child of this node.

@param ref: A L{Node} which is already a child of this node which
    C{new} will be inserted before.

@raise TypeError: If C{new} or C{ref} is not a C{Node} instance.

@return: C{new}
r�   )r(   ra   r‘   r   Úindexrd   Úinsert)rQ   ÚnewÚrefÚis       r   ÚinsertBeforeÚNode.insertBeforeæ   sY   € ô ˜#œt×$Ñ$¬J°s¼D×,AÑ,AÜÐ4Ó5Ð5Ø�O‰O×!Ñ! #Ó&ˆØŒØ�‰×Ñ˜qÔ&Øˆ
r    c                ó¨   • [        U[        5      (       d  [        S5      eXR                  ;   a"  U R                  R	                  U5        SUl        U$ )a  
Remove the given L{Node} from this node's children.

@param child: A L{Node} which is a child of this node which will no
    longer be a child of this node after this method is called.

@raise TypeError: If C{child} is not a C{Node} instance.

@return: C{child}
r�   N)r(   ra   r‘   r   Úremoverd   r’   s     r   ÚremoveChildÚNode.removeChildû   sF   € ô ˜%¤×&Ñ&ÜÐ4Ó5Ð5Ø—O‘OÓ#Ø�O‰O×"Ñ" 5Ô)Ø#ˆEÔØˆr    c                ó
  • [        U[        5      (       a  [        U[        5      (       d  [        S5      eUR                  U La  [	        S5      eXR
                  U R
                  R                  U5      '   SUl        Xl        g)a–  
Replace a L{Node} which is already a child of this node with a
different node.

@param newChild: A L{Node} which will be made a child of this node.

@param oldChild: A L{Node} which is a child of this node which will
    give up its position to C{newChild}.

@raise TypeError: If C{newChild} or C{oldChild} is not a C{Node}
    instance.

@raise ValueError: If C{oldChild} is not a child of this C{Node}.
r�   z$oldChild is not a child of this nodeN)r(   ra   r‘   rd   Ú
ValueErrorr   r—   )rQ   ÚnewChildÚoldChilds      r   ÚreplaceChildÚNode.replaceChild  sl   € ô ˜(¤D×)Ñ)´¸HÄd×1KÑ1KÜÐ4Ó5Ð5Ø×Ñ dÒ*ÜÐCÓDÐDØ;C�‰˜Ÿ™×-Ñ-¨hÓ7Ñ8Ø"ˆÔØ"Õr    c                ó    • U R                   S   $ ©NéÿÿÿÿrŒ   rU   s    r   Ú	lastChildÚNode.lastChild$  s   € Ø�‰˜rÑ"Ð"r    c                óV   • [        U R                  5      (       a  U R                  S   $ g r"   )r   r   rU   s    r   Ú
firstChildÚNode.firstChild'  s#   € Üˆt�‰×ÑØ—?‘? 1Ñ%Ð%Ør    )r   rd   rI   )rm   Ú Ú
r   ©r   N)rZ   r[   r\   r]   r   rR   rh   rw   r|   r   r‚   rˆ   r�   r”   rœ   r    r¦   r«   r®   r^   r_   r    r   ra   ra   Ÿ   sr   † Ø€Hôòð& ØØØØØô
$ð  2¨B°aÀBÐRTôôEô:ô$òò òò*ò$#ò.#õr    ra   c                  óŒ   • \ rS rSr% SS jrSS jrSrS\S'   S r\r	\
S	 5       rS
 rSSSS0 S4S jrS rS rS rS rS rSrg)ÚDocumenti9  Nc                ó`   • [         R                  U 5        U(       a  U R                  U5        g g rI   )ra   rR   r”   )rQ   ÚdocumentElements     r   rR   ÚDocument.__init__:  s$   € Ü�‰�dÔÞØ×Ñ˜_Õ-ð r    r   c                ó¾   • [        5       nU R                  Ul        U(       a  U R                  R                  SU 5      nOU R                  nUR	                  U5        U$ ©Nr‹   )r´   Údoctyper¶   rˆ   r”   )rQ   r†   r‡   ÚdÚnewEls        r   rˆ   ÚDocument.cloneNode?  sK   € Ü‹JˆØ—L‘LˆŒ	ÞØ×(Ñ(×2Ñ2°1°dÓ;‰Eà×(Ñ(ˆEØ	�‰�eÔØˆr    z
None | strrº   c                ól   • U R                   UR                   :H  =(       a    [        R                  X5      $ rI   )rº   ra   rh   ©rQ   Úns     r   ÚisEqualToDocumentÚDocument.isEqualToDocumentK  s%   € Ø—‘ §	¡	Ñ)×J¬t×/AÑ/AÀ$Ó/JÐJr    c                ó    • U R                   S   $ r"   rŒ   rU   s    r   r¶   ÚDocument.documentElementP  s   € à�‰˜qÑ!Ð!r    c                óf   • U R                   (       a  [        S5      e[        R                  X5        g)zÛ
Make the given L{Node} the I{document element} of this L{Document}.

@param child: The L{Node} to make into this L{Document}'s document
    element.

@raise ValueError: If this document already has a document element.
zOnly one element per document.N)r   r£   ra   r”   r’   s     r   r”   ÚDocument.appendChildT  s%   € ð �?�?ÜÐ=Ó>Ð>Ü×Ñ˜Õ%r    rm   c           	     ó¾   • [        U5      nU" SU-   5        U R                  (       a  U" SU R                   SU 35        U R                  R                  XX4XVU5        g )Nz<?xml version="1.0"?>z
<!DOCTYPE r7   )r4   rº   r¶   rw   ©	rQ   r.   rq   rr   rs   rt   ru   rv   r/   s	            r   rw   ÚDocument.writexmla  sY   € ô   Ó'ˆá	Ð
! DÑ
(Ô)Ø�<�<Ù�
˜4Ÿ<™<˜.¨¨$¨Ð0Ô1Ø×Ñ×%Ñ%Ø˜I¨UÀ	õ	
r    c                ó   • [        U40 UD6$ rI   )ÚElement)rQ   r   Úkws      r   ÚcreateElementÚDocument.createElementu  s   € Ü�tÑ"˜rÑ"Ð"r    c                ó   • [        U5      $ rI   )ÚText©rQ   r>   s     r   ÚcreateTextNodeÚDocument.createTextNodex  s   € Ü�D‹zÐr    c                ó   • [        U5      $ rI   )ÚCommentrÑ   s     r   ÚcreateCommentÚDocument.createComment{  s   € Ü�t‹}Ðr    c                ód   • U R                   R                  (       a  [        X5      $ [        X5      $ rI   )r¶   ÚcaseInsensitiver$   r   ©rQ   r   s     r   r   ÚDocument.getElementsByTagName~  s'   € Ø×Ñ×/×/Ü-¨dÓ9Ð9Ü# DÓ/Ð/r    c                ó  • U R                   S S  nU(       ao  UR                  S5      nUR                   (       a  UR                  UR                   5        [        US5      (       a  UR	                  S5      U:X  a  U$ U(       a  Mn  g g )Nr   ÚgetAttributeÚid)r   r   ÚextendÚhasattrrÝ   )rQ   rÞ   r   Únodes       r   ÚgetElementByIdÚDocument.getElementByIdƒ  se   € Ø—_‘_¡QÐ'ˆ
ÞØ—>‘> !Ó$ˆDØ��Ø×!Ñ! $§/¡/Ô2Ü�t˜^×,Ñ,°×1BÑ1BÀ4Ó1HÈBÓ1NØ�÷ Šjr    r_   rI   r²   )rZ   r[   r\   r]   rR   rˆ   rº   Ú__annotations__rÁ   rh   Úpropertyr¶   r”   rw   rÍ   rÒ   rÖ   r   râ   r^   r_   r    r   r´   r´   9  sn   ‡ ô.ô
ð €GˆZÓòKð &€Màñ"ó ð"ò&ð  ØØØØØô
ò(#òòò0õ
r    r´   c                  óH   • \ rS rSrS
S jrS r\rSSSS0 S4S jrSS jrS	r	g)ÚEntityReferencei�  Nc                ób   • [         R                  X5        Xl        SU-   S-   =U l        U l        g )Nr5   Ú;)ra   rR   ÚerefÚ	nodeValueÚdata)rQ   rê   rd   s      r   rR   ÚEntityReference.__init__Ž  s*   € Ü�‰�dÔ'ØŒ	Ø%(¨4¡Z°#Ñ%5Ð5ˆŒ˜�r    c                ó    • [        U[        5      (       d  gU R                  UR                  :H  =(       a    U R                  UR                  :H  $ r"   )r(   rç   rê   rë   r¿   s     r   ÚisEqualToEntityReferenceÚ(EntityReference.isEqualToEntityReference“  s7   € Ü˜!œ_×-Ñ-ØØ—	‘	˜QŸV™VÑ#×H¨$¯.©.¸A¿K¹KÑ*GÐHr    rm   r   c                óD   • [        U5      nU" SU R                  -   5        g )Nrm   ©r4   rë   rÈ   s	            r   rw   ÚEntityReference.writexmlš  s   € ô   Ó'ˆÙ	ˆ"ˆt�~‰~Ñ
Õr    c                ó.   • [        U R                  U5      $ rI   )rç   rê   r…   s      r   rˆ   ÚEntityReference.cloneNode§  s   € Ü˜tŸy™y¨&Ó1Ð1r    )rì   rê   rë   rI   r²   )
rZ   r[   r\   r]   rR   rï   rh   rw   rˆ   r^   r_   r    r   rç   rç   �  s2   † ô6ò
Ið
 -€Mð
 ØØØØØô÷2r    rç   c                  ó(   • \ rS rSrSS jrS r\rSrg)ÚCharacterDatai«  Nc                óX   • [         R                  X5        U=U l        =U l        U l        g rI   )ra   rR   Úvaluerì   rë   )rQ   rì   rd   s      r   rR   ÚCharacterData.__init__¬  s#   € Ü�‰�dÔ'Ø26Ð6ˆŒ
Ð6�T”Y ¥r    c                ó4   • U R                   UR                   :H  $ rI   )rù   r¿   s     r   ÚisEqualToCharacterDataÚ$CharacterData.isEqualToCharacterData°  s   € Ø�z‰z˜QŸW™WÑ$Ð$r    )rì   rë   rù   rI   )rZ   r[   r\   r]   rR   rü   rh   r^   r_   r    r   r÷   r÷   «  s   † ô7ò%ð +ƒMr    r÷   c                  ó8   • \ rS rSrSrSSSS0 S4S jrS	S jrSrg)
rÕ   i¶  z
A comment node.
rm   r   c                óJ   • [        U5      nU R                  n	U" SU	 S35        g )Nz<!--z-->)r4   rì   )
rQ   r.   rq   rr   rs   rt   ru   rv   r/   Úvals
             r   rw   ÚComment.writexml»  s'   € ô   Ó'ˆØ�i‰iˆÙ	ˆD���Sˆ/Õr    Nc                ó.   • [        U R                  U5      $ rI   )rÕ   rë   r…   s      r   rˆ   ÚComment.cloneNodeÉ  s   € Ü�t—~‘~ vÓ.Ð.r    r_   r²   )rZ   r[   r\   r]   Ú__doc__rw   rˆ   r^   r_   r    r   rÕ   rÕ   ¶  s%   † ñð ØØØØØô÷/r    rÕ   c                  óN   • \ rS rSrSS jrS rSS jrSSSS0 S4S jrSS	 jrS
r	g)rÐ   iÍ  Nr   c                ó<   • [         R                  XU5        X0l        g rI   )r÷   rR   Úraw)rQ   rì   rd   r  s       r   rR   ÚText.__init__Î  s   € Ü×Ñ˜t¨:Ô6Ø�r    c                ól   • [         R                  X5      =(       a    U R                  UR                  :H  $ )z†
Compare this text to C{text}.  If the underlying values and the C{raw}
flag are the same, return C{True}, otherwise return C{False}.
)r÷   rh   r  ©rQ   ri   s     r   rh   ÚText.isEqualToNodeÒ  s'   € ô
 ×*Ñ*¨4Ó7×Q¸D¿H¹HÈÏ	É	Ñ<QÐQr    c                óB   • [        U R                  X R                  5      $ rI   )rÐ   rë   r  r…   s      r   rˆ   ÚText.cloneNodeÙ  s   € Ü�D—N‘N F¯H©HÓ5Ð5r    rm   c                ót  • [        U5      nU R                  (       a7  U R                  n	[        U	[        5      (       d  [	        U R                  5      n	O]U R                  n
[        U
[        5      (       d  [	        U
5      n
U(       a  SR                  U
R                  5       5      n
[        U
5      n	U" U	5        g )Nr°   )r4   r  rë   r(   r)   ÚjoinÚsplitrD   )rQ   r.   rq   rr   rs   rt   ru   rv   r/   r   Úvs              r   rw   ÚText.writexmlÜ  s€   € ô   Ó'ˆØ�8�8Ø—.‘.ˆCÜ˜c¤3×'Ñ'Ü˜$Ÿ.™.Ó)�øà—‘ˆAÜ˜a¤×%Ñ%Ü˜“F�ÞØ—H‘H˜QŸW™W›YÓ'�Ü˜“)ˆCÙ	ˆ#�r    c                ó8   • S[        U R                  5      -  S-   $ )NzText(%sÚ))Úreprrë   rU   s    r   Ú__repr__ÚText.__repr__ô  s   € Øœ4 §¡Ó/Ñ/°#Ñ5Ð5r    ©r  r"   r²   rX   )
rZ   r[   r\   r]   rR   rh   rˆ   rw   r  r^   r_   r    r   rÐ   rÐ   Í  s0   † ôòRô6ð ØØØØØô÷06r    rÐ   c                  ó4   • \ rS rSrSS jrSSSS0 S4S jrSrg)	ÚCDATASectioniø  r   Nc                ó.   • [        U R                  U5      $ rI   )r  rë   r…   s      r   rˆ   ÚCDATASection.cloneNodeù  s   € Ü˜DŸN™N¨FÓ3Ð3r    rm   c                ód   • [        U5      nU" S5        U" SU R                  -   5        U" S5        g )Nz	<![CDATA[rm   z]]>rò   rÈ   s	            r   rw   ÚCDATASection.writexmlü  s-   € ô   Ó'ˆÙ	ˆ+ŒÙ	ˆ"ˆt�~‰~Ñ
ÔÙ	ˆ%�r    r_   r²   )rZ   r[   r\   r]   rˆ   rw   r^   r_   r    r   r  r  ø  s    † ô4ð ØØØØØ÷r    r  c               #  ó>   #   • Sn  S[        U 5      -   v •  U S-   n M  7f)Nr   Úpr‹   )r)   )r›   s    r   Ú
_genprefixr!    s)   é € Ø	€AØ
Ø”C˜“F‰lÒØ�‰Eˆñ ùs   ‚c                  ó   • \ rS rSrSrSrg)Ú_Attri  z#Support class for getAttributeNode.r_   N)rZ   r[   r\   r]   r  r^   r_   r    r   r#  r#    s   † Ü)r    r#  c                  ó¼   • \ rS rSrSrSrSr       SS jrS rS r	S r
S	 rSS
 jrS rS rSS jrSS jrS rS rS rS rSSSS0 S4S jrSS jrSS jrSrg)rË   i  r   r‹   Nc	                ó¸  • [         R                  X5        U=(       d    U(       + U l        X`l        U(       d  UR	                  5       nUc  0 U l        OAX l        U R
                  R                  5        H  u  pš[        U
5      U R
                  U	'   M     U(       a  [        U R
                  US9U l        U=U l	        =U l
        U l        X@l        XPl        X€l        g )N)Úpreserve)ra   rR   ÚpreserveCaserÙ   r#   Ú
attributesÚitemsrA   r	   Ú
endTagNamer   ÚtagNameÚ	_filenameÚ_markposrv   )rQ   r+  r(  rd   rJ   ÚmarkposrÙ   r'  rv   Úkr  s              r   rR   ÚElement.__init__  s¬   € ô 	�‰�dÔ'Ø(×?°Ô,?ˆÔØ.ÔÞØ—m‘m“oˆGØÑØ ˆD�Oà(ŒOØŸ™×-Ñ-Ö/‘�Ü%-¨a£[�—‘ Ó"ñ 0ö Ü-¨d¯o©oÈÑUˆDŒOà9@Ð@ˆŒÐ@˜$œ-¨$¬,Ø!ŒØŒØ"�r    c                ób   • U R                   c  Xl         g U R                   R                  U5        g rI   )ru   Úupdate)rQ   Úpfxss     r   ÚaddPrefixesÚElement.addPrefixes>  s#   € Ø�?‰?Ñ"Ø"�Oà�O‰O×"Ñ" 4Õ(r    c                óR   • U R                   (       d  UR                  5       nXl        g rI   )r'  r#   r*  )rQ   r*  s     r   ÚendTagÚElement.endTagD  s   € Ø× × Ø#×)Ñ)Ó+ˆJØ$�r    c                ó@  • U R                   (       aU  U R                  UR                  :H  =(       a5    U R                  R                  5       UR                  R                  5       :H  $ U R                  UR                  :H  =(       a    U R                  UR                  :H  $ rI   )rÙ   r(  r   r#   r¿   s     r   ÚisEqualToElementÚElement.isEqualToElementI  sn   € Ø××Ø—O‘O q§|¡|Ñ3÷ Ø—‘×#Ñ#Ó%¨¯©×)9Ñ)9Ó);Ñ;ðð —‘ 1§<¡<Ñ/×R°d·m±mÀqÇzÁzÑ6QÐRr    c                ó$  • U R                   R                  5       UR                   R                  5       :H  =(       aU    U R                  UR                  :H  =(       a5    U R                  UR                  :H  =(       a    [        R                  X5      $ )z¤
Compare this element to C{other}.  If the C{nodeName}, C{namespace},
C{attributes}, and C{childNodes} are all the same, return C{True},
otherwise return C{False}.
)r   r#   rv   r(  ra   rh   r
  s     r   rh   ÚElement.isEqualToNodeP  sl   € ð �M‰M×ÑÓ! U§^¡^×%9Ñ%9Ó%;Ñ;÷ 0Ø—‘ %§/¡/Ñ1÷0à—‘ 5×#3Ñ#3Ñ3÷0ô ×"Ñ" 4Ó/ð		
r    c                óF  • [        U R                  UU R                  U R                  U R                  S9nUR
                  R                  U R
                  5        U(       a3  U R                   Vs/ s H  oDR                  SU5      PM     snUl        U$ / Ul        U$ s  snf )N)rd   rv   r'  rÙ   r‹   )	rË   r+  rv   r'  rÙ   r(  r2  r   rˆ   )rQ   r†   r‡   Úcloner“   s        r   rˆ   ÚElement.cloneNode]  sŒ   € ÜØ�L‰LØØ—n‘nØ×*Ñ*Ø ×0Ñ0ñ
ˆð 	×Ñ×Ñ §¡Ô0ÞØGKÇÂÓWÂ¸e§¡°°5Ö 9ÁÑWˆEÔð ˆð  "ˆEÔØˆùò  Xs   Á0Bc                óP   • U R                   (       a  [        X5      $ [        X5      $ rI   )rÙ   r$   r   rÚ   s     r   r   ÚElement.getElementsByTagNamel  s!   € Ø××Ü-¨dÓ9Ð9Ü# DÓ/Ð/r    c                ó   • gr¹   r_   rU   s    r   ÚhasAttributesÚElement.hasAttributesq  s   € Ør    c                ó8   • U R                   R                  X5      $ rI   )r(  Úget)rQ   r   Údefaults      r   rÝ   ÚElement.getAttributet  s   € Ø�‰×"Ñ" 4Ó1Ð1r    c                óœ   • X4nX@R                   ;   a  U R                   U   $ XR                  :X  a  U R                   R                  X#5      $ U$ rI   )r(  rv   rG  )rQ   Únsr   rH  Únsks        r   ÚgetAttributeNSÚElement.getAttributeNSw  sF   € ØˆjˆØ—/‘/Ó!Ø—?‘? 3Ñ'Ð'Ø—‘ÓØ—?‘?×&Ñ& tÓ5Ð5Øˆr    c                ó8   • [        U R                  U5      U 5      $ rI   )r#  rÝ   rÚ   s     r   ÚgetAttributeNodeÚElement.getAttributeNode  s   € Ü�T×&Ñ& tÓ,¨dÓ3Ð3r    c                ó    • X R                   U'   g rI   ©r(  )rQ   r   Úattrs      r   ÚsetAttributeÚElement.setAttribute‚  s   € Ø $�‰˜Òr    c                ó>   • XR                   ;   a  U R                   U	 g g rI   rS  rÚ   s     r   ÚremoveAttributeÚElement.removeAttribute…  s   € Ø—?‘?Ó"Ø—‘ Ñ%ð #r    c                ó   • XR                   ;   $ rI   rS  rÚ   s     r   ÚhasAttributeÚElement.hasAttribute‰  s   € Ø—‘Ñ&Ð&r    rm   c           
     ób  ^• SnSn	Sn
U R                   (       d  U R                  U l        [        U5      nU R                  (       a;  U R                  R                  5       nUR                  5        H  nXÜ;   d  M
  XÍ	 M     O0 nS/nU R                  U	;   a  XB/U-   nUR                  mU4S jnU R                  nXpR                  :w  aˆ  U R                  b{  U R                  U;   a9  X`R                     nT" US-   U R                  -   5        US-   U R                  -   nODT" U R                  5        U" SU R                  5        U R                  nOT" U R                  5        S	R                  n[        U R                  R                  5       5       Ha  u  nn[        U[        5      (       a8  Uu  nnXÖ;   a  Xm   nO[        [         5      nUXÍ'   Uc   eU" US-   U-   U5        MS  Uc   eU" UU5        Mc     U(       aC  UR                  5        H  u  nnU(       d  M  U" S
U-   U5        M     UR#                  U5        UnOUnU" U" U5      5        U R$                  (       a–  U" S5        X#-   nU R$                   HI  nU R                  U	;   a   U R                  U
;   a  U" U" UU45      5        UR'                  UUX4UUU5        MK     U R                  U	;   a  U" U" XB45      5        U" U" SUS45      5        gU R                  R)                  5       U;  a  U" U" SUS45      5        gU" S5        g)aÂ  
Serialize this L{Element} to the given stream.

@param stream: A file-like object to which this L{Element} will be
    written.

@param nsprefixes: A C{dict} mapping namespace URIs as C{str} to
    prefixes as C{str}.  This defines the prefixes which are already in
    scope in the document at the point at which this L{Element} exists.
    This is essentially an implementation detail for namespace support.
    Applications should not try to use it.

@param namespace: The namespace URI as a C{str} which is the default at
    the point in the document at which this L{Element} exists.  This is
    essentially an implementation detail for namespace support.
    Applications should not try to use it.
)ÚimgÚbrÚhrÚbaseÚmetaÚlinkÚparamÚareaÚinputÚcolÚbasefontÚisindexÚframe)ÚhtmlÚheadÚbodyÚnoscriptÚinsÚdelÚh1Úh2Úh3Úh4Úh5Úh6ÚscriptÚulÚolÚdlÚprer`  Ú
blockquoteÚaddressr   ÚdivÚfieldsetÚtableÚtrÚformÚobjectr  ÚappletÚmap)r�  rx  ry  rl  r6   c                ó0   >• T" SU S[        U5      S45      $ )Nr°   z="r8   )rD   )Ú_atrÚ_valÚbexts     €r   Ú<lambda>Ú"Element.writexml.<locals>.<lambda>ë  s   ø€ ¡t¨S°$¸¼fÀT»lÈCÐ,PÔ'Qr    NÚ:Úxmlnsrm   zxmlns:r7   z</z></ú />)r'  r+  r*  r4   ru   ÚcopyÚkeysrß   rv   r  Úsortedr(  r)  r(   ÚtupleÚnextÚ	genprefixr2  r   rw   r#   )rQ   r.   rq   rr   rs   rt   ru   rv   ÚALLOWSINGLETONÚBLOCKELEMENTSÚFORMATNICELYr/   ÚnewprefixesrK  ÚbeginÚ	writeattrr*  ÚprefixÚjrT  r   ÚkeyÚdownprefixesÚ	newindentr“   r‰  s                            @r   rw   ÚElement.writexmlŒ  sá  ø€ ð8
ˆð
ˆð@ 2ˆð × × Ø"Ÿl™lˆDŒOä Ó'ˆØ�?�?ØŸ/™/×.Ñ.Ó0ˆKØ —o‘oÖ'�ØÕ$Ø#šò (ð ˆKà�ˆØ�<‰<˜=Ó(Ø�N UÑ*ˆEØ�|‰|ˆÜQˆ	ð
 —_‘_ˆ
àŸ™Ó&¨4¯>©>Ñ+Eð �~‰~ Ó+ð $§N¡NÑ3�Ù�V˜c‘\ D§L¡LÑ0Ô1à# c™\¨D¯O©OÑ;‘
ñ �T—\‘\Ô"Ù˜' 4§>¡>Ô2ð !ŸN™N‘	ñ �—‘Ôà�G‰GˆÜ §¡× 5Ñ 5Ó 7Ö8‰IˆD�#Ü˜$¤×&Ñ&Ø‘��CØÓ#Ø'™^‘Fä!¤)›_�FØ&,�K‘OØ‘Ð&�Ù˜& 3™,¨Ñ,¨cÖ2à‘Ð&�Ù˜$ Ö$ñ 9ö Ø)×/Ñ/Ö1‘
��Fß�6Ù˜h¨Ñ/°Ö4ñ 2ð ×Ñ˜zÔ*Ø&‰Là%ˆLÙ	‰!ˆE‹(ŒØ�?�?ÙˆcŒFØÑ*ˆIØŸœ�Ø—<‘< =Ó0°T·\±\À\Ó5QÙ‘a˜˜yÐ)Ó*Ô+Ø—‘Ø˜I y¸¸|ÈYöñ )ð �|‰|˜}Ó,Ù‘!�T�NÓ#Ô$Ù‰a��z 3Ð'Ó(Õ)Ø�\‰\×ÑÓ!¨Ó7Ù‰a�˜
 CÐ(Ó)Õ*áˆe�Hr    c                ó  • S[        U R                  5      -  nU R                  (       a  USU R                  < 3-  nU R                  (       a  USU R                  < 3-  nU R                  (       a  USU R                  < 3-  nUS-   $ )Nz
Element(%sz, attributes=z, filename=z
, markpos=r  )r  r   r(  r,  r-  )rQ   Úreps     r   r  ÚElement.__repr__5  sv   € ØœT $§-¡-Ó0Ñ0ˆØ�?�?Ø�] 4§?¡?Ñ"5Ð6Ñ6ˆCØ�>�>Ø�[ §¡Ñ 2Ð3Ñ3ˆCØ�=�=Ø�Z §¡Ñ0Ð1Ñ1ˆCØ�S‰yÐr    c                ó  • SU R                   -   nU R                  (       d  U R                  (       a  US-  nU R                  (       a  U[        U R                  5      -  nU R                  (       a  USU R                  -  -  nU R                  (       d  U R                  (       a  US-  nU R                  R                  5        H  nUSU-  -  nM     U R                  5       (       a  USU R                   -  -  nU$ US-  nU$ )Nr6   z (z line %s column %sr  z %s=%rz
 >...</%s>rŽ  )r   r,  r-  r  r(  r)  r�   )rQ   r¢  Úitems      r   rV   ÚElement.__str__?  sÏ   € Ø�D—M‘MÑ!ˆØ�>�>˜TŸ]Ÿ]Ø�4‰KˆCØ�>�>Ø”4˜Ÿ™Ó'Ñ'ˆCØ�=�=ØÐ'¨$¯-©-Ñ7Ñ7ˆCØ�>�>˜TŸ]Ÿ]Ø�3‰JˆCØ—O‘O×)Ñ)Ö+ˆDØ�8˜d‘?Ñ"ŠCñ ,à×Ñ×ÑØ�< $§-¡-Ñ/Ñ/ˆCð ˆ
ð �5‰LˆCØˆ
r    )
r,  r-  r(  rÙ   r*  rv   r   ru   r'  r+  )NNNNr‹   r   Nr²   rI   rX   )rZ   r[   r\   r]   r'  rÙ   ru   rR   r4  r7  r:  rh   rˆ   r   rD  rÝ   rM  rP  rU  rX  r[  rw   r  rV   r^   r_   r    r   rË   rË     s”   † Ø€LØ€OØ€Jð
 ØØØØØØô#ò>)ò%ò
Sò
ôò0ò
ô2ôò4ò%ò&ò'ð ØØØØØôgôR÷r    rË   c                óV   • 0 nU R                  5        H  u  p#[        U5      X'   M     U$ rI   )r)  rA   ©r»   Úddr/  r  s       r   Ú_unescapeDictrª  R  s)   € Ø	€BØ—‘–	‰ˆÜ˜“ˆ‹ñ à€Ir    c                óD   • 0 nU R                  5        H	  u  p#X!U'   M     U$ rI   )r)  r¨  s       r   Ú_reverseDictr¬  Y  s%   € Ø	€BØ—‘–	‰ˆØˆ1‹ñ à€Ir    c                  ó  • \ rS rSrSR	                  5       rSS/SS/SS/S// SQ/ SQ/ SQS/S	/S
/S/S/S/SS/S/S.rSSS\\4S jrS rS r	\
R                  " S5      rS rS rS rS rS rS rS rS rS rS  rS!rg")#ÚMicroDOMParseri`  z#area link br img hr input base metar   Údtr©  Úli)ÚtheadÚtfootÚtbodyÚcolgrouprg  r�  ÚtdÚthrm  rl  Úoption)r   r¯  r©  r°  r³  r±  r²  r´  rg  r�  rµ  r¶  rl  Útitler·  r   r‹   c                ó¾   • / U l         SS S.n[        U5      nUS U4/U l        / U l        S U l        Xl        X l        U=(       d    U(       + U l        X@l        XPl	        g )Nr�  )r�  rm   )
Úelementstackr¬  ÚnsstackÚ	documentsÚ
_mddoctypeÚbeExtremelyLenientrÙ   r'  ÚsoonClosersÚlaterClosers)rQ   r¾  rÙ   r'  r¿  rÀ  r»   Údrs           r   rR   ÚMicroDOMParser.__init__x  sd   € ð ˆÔØ 4Ñ(ˆÜ˜!‹_ˆØ˜D "˜�ˆŒØˆŒØˆŒØ"4ÔØ.ÔØ(×?°Ô,?ˆÔØ&ÔØ(Õr    c                ó¾   • [        [        U R                  5      5       H;  nU R                  U*    nUR                  S:X  d  UR	                  SS5      S:X  d  M;    g   g)Nr{  z	xml:spacerm   r&  r‹   r   )Úranger   rº  r+  rÝ   )rQ   ÚedxÚels      r   ÚshouldPreserveSpaceÚ"MicroDOMParser.shouldPreserveSpace�  sT   € Üœ˜T×.Ñ.Ó/Ö0ˆCØ×"Ñ" C 4Ñ(ˆBØ�z‰z˜UÓ" b§o¡o°kÀ2Ó&FÈ*Õ&TÙñ 1ð r    c                óD   • U R                   (       a  U R                   S   $ g r©   )rº  rU   s    r   Ú
_getparentÚMicroDOMParser._getparent”  s   € Ø××Ø×$Ñ$ RÑ(Ð(àr    z\s*/[/*]\s*c                óÌ  • U R                   (       a  [        UR                  5      S:X  d  g UR                  5       n[	        U[
        5      (       aþ  SnUR                  nU R                  R                  U5      nU(       a  UR                  5       nU[        U5      S  n [        SU-  5      R                  S   n[        UR                  5      S:w  a  g UR                  5       n[	        U[        [        45      (       aN  / Ul        U(       a$  UR                  R                  [        U5      5        UR                  R                  U5        g g g ! [        [        4 a     g f = f)Nr‹   rm   z	<a>%s</a>r   )r¾  r   r   r®   r(   rÐ   rù   ÚCOMMENTÚmatchÚgroupÚparseStringr
   rF   r  rÕ   r   )rQ   rÆ  r   r›  ÚoldvaluerÎ  Úes          r   Ú_fixScriptElementÚ MicroDOMParser._fixScriptElementœ  s!  € ð ×&×&¬c°"·-±-Ó.@ÀAÓ.EØØ�M‰M‹OˆÜ�aœ×Ñð ˆFØ—w‘wˆHØ—L‘L×&Ñ& xÓ0ˆEÞØŸ™›�Ø#¤C¨£K MÐ2�ðÜ ¨hÑ 6Ó7×BÑBÀ1ÑE�ô �1—<‘<Ó  AÓ%ØØ—‘“ˆAÜ˜!œl¬GÐ4×5Ñ5Ø "�”ÞØ—M‘M×(Ñ(¬¨f«Ô6Ø—‘×$Ñ$ QÕ'ð	 6ð+ øô  ¤Ð/ó Ùðús   Â E ÅE#Å"E#c                ó   • Xl         g rI   )r½  )rQ   rº   s     r   Ú
gotDoctypeÚMicroDOMParser.gotDoctype½  s   € Ø!�r    c                óL  • U R                  5       nU R                  (       až  [        U[        5      (       a‰  UR                  nUnU R
                  (       a   UR                  5       nUR                  5       nXPR                  R                  U/ 5      ;   a+  U R                  UR                  5        U R                  5       n[        U5      nU R                  S   S   n0 n/ nUR                  5        H[  u  pšU	R                  S5      (       d  M  U	R                  SS5      n[        U5      S:X  a  X§US   '   OX§S'   UR!                  U	5        M]     U H  n	X)	 M     U(       a!  UR#                  5       nUR%                  U5        / nUR                  5        HT  u  pšU	R                  SS5      n[        U5      S:X  d  M(  Uu  pÞUS:w  d  M4  XÖ;   d  M;  X¢Xm   U4'   UR!                  U	5        MV     U H  n	X)	 M     [        UUUU R&                  U R)                  5       U R
                  U R*                  UR                  S5      S	9n[-        U5      nUR/                  U5        U(       aN  U R                  S   S   R#                  5       nUR%                  U5        U R                  R!                  XoU45        U R0                  R!                  U5        U(       a  UR3                  U5        U R                  (       a-  UR                  U R4                  ;   a  U R                  U5        g g g )
Nrª   r   r�  rŒ  r‹   é   rm   Úxml)rÙ   r'  rv   )rÊ  r¾  r(   rË   r+  rÙ   r#   rÀ  rG  Ú	gotTagEndrª  r»  r)  Ú
startswithr  r   r   r�  r2  rJ   ÚsaveMarkr'  r¬  r4  rº  r”   r¿  )rQ   r   r(  r‡   Ú
parentNameÚmyNameÚ
namespacesÚ	newspacesÚkeysToDeleter/  r  Ú
spacenamesÚksplitÚpfxÚtvrÆ  Ú	revspacesÚrscopys                     r   ÚgotTagStartÚMicroDOMParser.gotTagStartÀ  s¤  € ð —‘Ó"ˆØ×"×"¤z°&¼'×'BÑ'BØŸ™ˆJØˆFØ×#×#Ø'×-Ñ-Ó/�
ØŸ™›�Ø×*Ñ*×.Ñ.¨z¸2Ó>Ó>Ø—‘˜vŸ~™~Ô.ØŸ™Ó*�Ü" :Ó.ˆ
Ø—\‘\ "Ñ% aÑ(ˆ
Øˆ	ØˆØ×$Ñ$Ö&‰DˆAØ�|‰|˜G×$Ó$ØŸW™W S¨!›_�
Ü�z“? aÓ'Ø/0˜j¨™mÒ,à$%˜b‘MØ×#Ñ# AÖ&ñ 'ó ˆAØ’ñ æØ#Ÿ™Ó*ˆJØ×Ñ˜iÔ(ØˆØ×$Ñ$Ö&‰DˆAØ—W‘W˜S !“_ˆFÜ�6‹{˜aÕØ ‘�Ø˜%•< CÕ$5Ø67˜z™°Ð2Ñ3Ø ×'Ñ'¨Ö*ñ 'ó ˆAØ’ñ äØØØØ�M‰MØ�M‰M‹OØ ×0Ñ0Ø×*Ñ*Ø —n‘n RÓ(ñ	
ˆô ! Ó+ˆ	Ø
�‰�yÔ!æØ—\‘\ "Ñ% aÑ(×-Ñ-Ó/ˆFØ�M‰M˜)Ô$Ø�L‰L×Ñ °Ð 8Ô9Ø×Ñ× Ñ  Ô$ÞØ×Ñ˜rÔ"Ø×"×" r§z¡z°T×5EÑ5EÓ'EØ�N‰N˜4Õ ð (FÐ"r    c                óÀ   • U R                  5       nU" X#5      nU(       a  UR                  U5        g U R                  (       a  U R                  R	                  U5        g g rI   )rÊ  r”   r¾  r¼  r   )rQ   Úfactoryrì   r‡   Útes        r   Ú_gotStandaloneÚMicroDOMParser._gotStandaloneÿ  sI   € Ø—‘Ó"ˆÙ�TÓ"ˆÞØ×Ñ˜rÕ"Ø×$×$Ø�N‰N×!Ñ! "Õ%ð %r    c                ó†   • UR                  5       (       d  U R                  5       (       a  U R                  [        U5        g g rI   )rt   rÇ  rî  rÐ   ©rQ   rì   s     r   ÚgotTextÚMicroDOMParser.gotText  s0   € Ø�:‰:�<‰<˜4×3Ñ3×5Ñ5Ø×Ñ¤ dÕ+ð 6r    c                ó0   • U R                  [        U5        g rI   )rî  rÕ   rñ  s     r   Ú
gotCommentÚMicroDOMParser.gotComment  s   € Ø×ÑœG TÕ*r    c                ó0   • U R                  [        U5        g rI   )rî  rç   )rQ   Ú	entityRefs     r   ÚgotEntityReferenceÚ!MicroDOMParser.gotEntityReference  s   € Ø×ÑœO¨YÕ7r    c                ó0   • U R                  [        U5        g rI   )rî  r  )rQ   Úcdatas     r   ÚgotCDataÚMicroDOMParser.gotCData  s   € Ø×ÑœL¨%Õ0r    c                ó²  • U R                   (       d;  U R                  (       a  g [        U R                  SU4U R	                  5       -   S-   6 eU R                   R                  5       nU R                  S   S   nU R                  S   S   UL a  U R                  R                  5       nOS nU R                  (       a+  UR                  R                  5       nUR                  5       nOUR                  nUnUR                  SS5      n[        U5      S:X  aw  Uu  p‰UR                  US 5      n
U
b^  UR                  U
:w  aN  U R                  (       d=  [        U R                  UR                  U4U R	                  5       -   UR                  -   6 eXV:X  GdT  U R                  (       Ga  U R                   (       aó  U R                   S   n[        [        U R                   5      5       HH  nU R                   US-   *    R                  U:X  d  M&  U R                   US-   *    R!                  U5          O<   U R                   R#                  U5        Ub  U R                  R#                  U5        g U R                   US-   * S 2	 U R                   (       d  U R$                  R#                  U5        g O=[        U R                  UR                  U4U R	                  5       -   UR                  -   6 eUR!                  U5        U R                   (       d  U R$                  R#                  U5        U R                  (       a#  UR                  S:X  a  U R'                  U5        g g g )	NÚNOTHING)r   r   rª   rÙ  r‹   rŒ  r   rw  )rº  r¾  rF   rJ   rÝ  r   r»  rÙ   r+  r#   r  r   rG  rv   r-  rÄ  r7  r   r¼  rÓ  )rQ   r   rÆ  ÚpfxdixÚnstupleÚtnÚcnameÚnsplitrå  ÚnewnamerK  ÚlastElÚidxs                r   rÛ  ÚMicroDOMParser.gotTagEnd  sÆ  € ð × × Ø×&×&ØÜ Ø—=‘= )¨TÐ2°T·]±]³_ÑDÀvÑMðð ð ×Ñ×"Ñ"Ó$ˆØ—‘˜bÑ! !Ñ$ˆØ�<‰<˜Ñ˜AÑ "Ò$Ø—l‘l×&Ñ&Ó(‰GàˆGØ××Ø—‘×!Ñ!Ó#ˆBØ—J‘J“L‰Eà—‘ˆBØˆEà—‘˜C Ó#ˆÜˆv‹;˜!ÓØ!‰LˆCØ—‘˜C Ó&ˆBØ‰~Ø—<‘< 2Ó%Ø×2×2Ü,à!%§¡°·
±
¸DÐ AØ"&§-¡-£/ñ!2à"$§+¡+ñ!.ðð ð ”Ø×&×&Ð&Ø×$×$Ø!×.Ñ.¨qÑ1�FÜ$¤S¨×):Ñ):Ó%;Ö<˜Ø×,Ñ,¨s°Q©w¨ZÑ8×@Ñ@ÀEÕIØ ×-Ñ-°°a±¨jÑ9×@Ñ@ÀÔFÙ!ñ  =ð ×)Ñ)×0Ñ0°Ô4Ø"Ñ.Ø ŸL™L×/Ñ/°Ô8ØØ×)Ñ)¨C°!©G¨*©,Ð7Ø×,×,ØŸ™×-Ñ-¨fÔ5Øøä$Ø—}‘} b§j¡j°$Ð7¸$¿-¹-»/ÑIÈBÏKÉKÑWðð ð 	�	‰	�$ŒØ× × Ø�N‰N×!Ñ! "Ô%Ø×"×" r§z¡z°XÓ'=Ø×"Ñ" 2Õ&ð (>Ð"r    c                ó`  • [         R                  " X5        U R                  (       a‡  U R                  (       a)  U R                  R                  U R                  S   5        g [        U R                  U R                  S   S4U R                  5       -   U R                  S   R                  -   6 eg )Nr   rª   ÚEND_OF_FILE)
r   ÚconnectionLostrº  r¾  r¼  r   rF   rJ   rÝ  r-  )rQ   Úreasons     r   r  ÚMicroDOMParser.connectionLostT  s‘   € Ü× Ò  Ô.Ø××Ø×&×&Ø—‘×%Ñ% d×&7Ñ&7¸Ñ&:Õ;ä$àŸ™¨×(9Ñ(9¸"Ñ(=¸}ÐMØŸ-™-›/ñ*à×+Ñ+¨BÑ/×8Ñ8ñ9ðð ð	 r    )	r½  r¾  rÙ   r¼  rº  rÀ  r»  r'  r¿  N)rZ   r[   r\   r]   r  r¿  rÀ  rR   rÇ  rÊ  ÚreÚcompilerÍ  rÓ  rÖ  ré  rî  rò  rõ  rù  rý  rÛ  r  r^   r_   r    r   r®  r®  `  sÌ   † ð
 8×=Ñ=Ó?€Kà�4ˆ[Ø�TˆlØ�TˆlØˆfÚ,Ú,Ú,Ø�LØˆwØˆfØˆfØˆfØ�Ø˜&Ð!Ø�*ñ€Lð( ØØØØ!ô)ò*òð �jŠj˜Ó(€Gò(òB"ò=!ò~&ò,ò+ò8ò1ò>'õ@r    r®  c                óˆ  • [        U S5      (       d  [        U S5      n [        U0 UD6n[        U SS5      Ul        UR                  S5        [        U S5      (       a   UR                  U R                  5       5        OCU R                  S5      nU(       a+  UR                  U5        U R                  S5      nU(       a  M+  UR                  S5        UR                  (       d  [        UR                  SSS	5      eUR                  (       aŒ  [        UR                  5      S
:X  aC  UR                  S   n[        U[        5      (       d  [        S5      nUR!                  U5        UnO?[        S5      nUR                   H  nUR!                  U5        M     OUR                  S   n[#        U5      nUR$                  Ul        U$ )z
Parse HTML or XML readable.
ÚreadÚrbr   z<xmlfile />Nrz   i   r   zNo top-level Nodes in documentr‹   rk  )rà   Úopenr®  ÚgetattrrJ   ÚmakeConnectionÚdataReceivedrz   r  r  r¼  r
   r¾  r   r(   rË   r”   r´   r½  rº   )	ÚreadableÚargsÚkwargsÚmdpÚrr»   rÆ  r“   Údocs	            r   Úparser  c  sk  € ô �8˜V×$Ñ$Ü˜ $Ó'ˆÜ
˜$Ð
) &Ñ
)€CÜ˜8 V¨]Ó;€C„LØ×Ñ�tÔÜˆx˜×$Ñ$Ø×Ñ˜×*Ñ*Ó,Õ-à�M‰M˜$ÓˆÞØ×Ñ˜QÔØ—‘˜dÓ#ˆA÷ ˆað ×Ñ�tÔà�=�=Ü˜Ÿ™ q¨!Ð-MÓNÐNà
××Üˆs�}‰}Ó Ó"Ø—‘˜aÑ ˆAÜ˜a¤×)Ñ)Ü˜V“_�Ø—‘˜qÔ!Ø�øä˜“ˆAØŸœ�Ø—‘˜eÖ$ò 'ð �M‰M˜!ÑˆÜ
�1‹+€CØ—.‘.€C„KØ€Jr    c                óª   • [        U [        5      (       a'  [        [        U R	                  S5      5      /UQ70 UD6$ [        [        U 5      /UQ70 UD6$ )NzUTF-16)r(   r)   r  r   r*   )Ústr  rÌ   s      r   rÐ  rÐ  Š  sK   € Ü�"”c×Ñä”W˜RŸY™Y xÓ0Ó1Ð?°DÒ?¸BÑ?Ð?Ü”˜“Ð*˜tÒ* rÑ*Ð*r    c                ó   • [        U SSS9$ ©z
Parse an XML readable object.
r   r‹   ©rÙ   r'  )r  )r  s    r   ÚparseXMLr$  ‘  s   € ô �¨1¸1Ñ=Ð=r    c                ó   • [        U SSS9$ r"  )rÐ  )r   s    r   ÚparseXMLStringr&  ˜  s   € ô �r¨1¸1Ñ=Ð=r    c                  óD   • \ rS rSrSrSS jrS rS rS rSS jr	S r
S	rg
)ÚlmxiŸ  z
Easy creation of XML.
c                óP   • [        U[        5      (       a  [        U5      nXl        g rI   )r(   r)   rË   rá   )rQ   rá   s     r   rR   Úlmx.__init__¤  s   € Ü�dœC× Ñ Ü˜4“=ˆDØ�	r    c                ó<   ^ ^• TS   S:X  a  [        S5      eUU 4S j$ )Nr   Ú_zno private attrsc                 ó*   >• TR                   " T40 U D6$ rI   )Úadd)rÌ   r   rQ   s    €€r   rŠ  Ú!lmx.__getattr__.<locals>.<lambda>¬  s   ø€ ˜DŸHšH TÑ0¨RÒ0r    )ÚAttributeErrorrÚ   s   ``r   Ú__getattr__Úlmx.__getattr__©  s    ù€ Ø�‰7�c‹>Ü Ð!3Ó4Ð4Ý0Ð0r    c                ó:   • U R                   R                  X5        g rI   )rá   rU  )rQ   r�  r   s      r   Ú__setitem__Úlmx.__setitem__®  s   € Ø�	‰	×Ñ˜sÕ(r    c                ó8   • U R                   R                  U5      $ rI   )rá   rÝ   )rQ   r�  s     r   Ú__getitem__Úlmx.__getitem__±  s   € Ø�y‰y×%Ñ% cÓ*Ð*r    c                óN   • [        XS9nU R                  R                  U5        U $ )Nr  )rÐ   rá   r”   )rQ   Útxtr  Únns       r   r>   Úlmx.text´  s#   € Ü�#ÑˆØ�	‰	×Ñ˜bÔ!Øˆr    c                ó¾   • [        USSS9nU R                  R                  U5        [        U5      nUR	                  5        H  u  pVUS   S:X  a  USS  nXdU'   M     U$ )Nr   r#  r,  r‹   )rË   rá   r”   r(  r)  )rQ   r+  rÌ   ÚnewNodeÚxfr/  r  s          r   r.  Úlmx.add¹  sa   € Ü˜'°1À1ÑEˆØ�	‰	×Ñ˜gÔ&Ü�‹\ˆØ—H‘H–J‰DˆAØ�‰t�s‹{Ø�a�b�E�Øˆq‹Eñ ð ˆ	r    )rá   N)r~  )r   )rZ   r[   r\   r]   r  rR   r1  r4  r7  r>   r.  r^   r_   r    r   r(  r(  Ÿ  s%   † ñôò
1ò
)ò+ôõ
r    r(  )6r  Ú
__future__r   r  ÚwarningsÚior   r   Úincrementalr   r   Útwisted.python.compatr   Útwisted.python.utilr	   Útwisted.web.suxr
   r   ÚformatÚwarningStringÚwarnÚDeprecationWarningr   r$   r4   ÚHTML_ESCAPE_CHARSÚlistÚREV_HTML_ESCAPE_CHARSÚreverseÚXML_ESCAPE_CHARSÚREV_XML_ESCAPE_CHARSrA   rD   Ú	ExceptionrF   ra   r´   rç   r÷   rÕ   rÐ   r  r!  r”  r#  rË   rª  r¬  r®  r  rÐ  r$  r&  r(  r_   r    r   Ú<module>rS     s�  ðñõ" #ó 
Û ß  ç 1õ )Ý /ß 1à;×BÑBÙ‘W˜Y¨¨B°Ó2Ó3ó€ð 	‡‚ˆmÐ/¸AÒ >òò6
òð&Ð ñ Ð.Ó/Ð Ø × Ñ Ô à$Ð'9Ñ9Ð ÙÐ,Ó-Ð Ø × Ñ Ô ð /ô ð )ô ô
�Yô 
÷6Kñ KôtQˆtô Qôh2�dô 2ô<+�Dô +ô/ˆmô /ô.(6ˆ=ô (6ôV�=ô ò(ñ ‹L€	ô*ˆMô *ôuˆdô uòp	òô@�Yô @òF$òN+ò>ò>÷"ò "r    