???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................U
    e5d                    @   s  d ddddddddd	d
ddddddddddddddgZ dZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
 G dd	 d	eZdd ZG d d dZi fd!dZd\d"d Zd]d#dZeZG d$d dZG d%d dZejd&d' Zd^d(d)Zd*d+ Zd,ZzeeZW n ek
r*   Y nX d-d. Zd/d0 Zeeed1Zd2d Zd3d4d5d6d7d8d9d:Z e e_ d;d< Z!d=d> Z"d?d@ Z#dAdB Z$d_dddCdDdEdZ%G dFdG dGej&Z'd`dddCdDdHdZ(dId Z)dadJdZ*dbdKdZ+G dLd dZ,dcdMdZ-dddNdZ.e-Z/dedOdZ0G dPd dZ1G dQd dZ2dfdddRdSdZ3e4dTej5j6Z7G dUd dZ8dVdW Z9dXdY Z:zeZ;ddZl<T dd[l<m=Z= W n e>k
r   Y nX e=ee dS )gCommentdumpElementElementTree
fromstringfromstringlist	iselement	iterparseparse
ParseErrorPIProcessingInstructionQName
SubElementtostringtostringlistTreeBuilderVERSIONXMLXMLID	XMLParserXMLPullParserregister_namespacecanonicalizeC14NWriterTargetz1.3.0    N   )ElementPathc                   @   s   e Zd ZdS )r
   N)__name__
__module____qualname__ r    r    -/usr/lib64/python3.8/xml/etree/ElementTree.pyr
   j   s   	c                 C   s
   t | dS )Ntag)hasattr)elementr    r    r!   r   x   s    c                   @   s  e Zd ZdZdZdZdZi fddZdd Zdd Z	dd	 Z
d
d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd8d d!Zd9d"d#Zd:d$d%Zd;d&d'Zd(d) Zd<d*d+Zd,d- Zd.d/ Zd0d1 Zd=d2d3Zd>d4d5Z d6d7 Z!dS )?r   Nc                 K   s6   t |tstd|jjf || _||| _g | _d S )Nzattrib must be dict, not %s)
isinstancedict	TypeError	__class__r   r"   attrib	_children)selfr"   r)   extrar    r    r!   __init__   s    

zElement.__init__c                 C   s   d| j j| jt| f S )Nz<%s %r at %#x>)r(   r   r"   idr+   r    r    r!   __repr__   s    zElement.__repr__c                 C   s   |  ||S N)r(   )r+   r"   r)   r    r    r!   makeelement   s    	zElement.makeelementc                 C   s0   |  | j| j}| j|_| j|_| |d d < |S r1   )r2   r"   r)   texttail)r+   elemr    r    r!   copy   s
    zElement.copyc                 C   s
   t | jS r1   )lenr*   r/   r    r    r!   __len__   s    zElement.__len__c                 C   s   t jdtdd t| jdkS )NzyThe behavior of this method will change in future versions.  Use specific 'len(elem)' or 'elem is not None' test instead.   
stacklevelr   )warningswarnFutureWarningr7   r*   r/   r    r    r!   __bool__   s     zElement.__bool__c                 C   s
   | j | S r1   r*   r+   indexr    r    r!   __getitem__   s    zElement.__getitem__c                 C   s8   t |tr |D ]}| | qn
| | || j|< d S r1   )r%   slice_assert_is_elementr*   )r+   rB   r$   Zeltr    r    r!   __setitem__   s
    

zElement.__setitem__c                 C   s   | j |= d S r1   r@   rA   r    r    r!   __delitem__   s    zElement.__delitem__c                 C   s   |  | | j| d S r1   rE   r*   appendr+   
subelementr    r    r!   rI      s    
zElement.appendc                 C   s$   |D ]}|  | | j| qd S r1   rH   )r+   elementsr$   r    r    r!   extend   s    
zElement.extendc                 C   s   |  | | j|| d S r1   )rE   r*   insert)r+   rB   rK   r    r    r!   rN      s    
zElement.insertc                 C   s    t |tstdt|j d S )Nzexpected an Element, not %s)r%   _Element_Pyr'   typer   )r+   er    r    r!   rE      s    
zElement._assert_is_elementc                 C   s   | j | d S r1   )r*   removerJ   r    r    r!   rR     s    zElement.removec                 C   s   t jdtdd | jS )NzaThis method will be removed in future versions.  Use 'list(elem)' or iteration over elem instead.r9   r:   )r<   r=   DeprecationWarningr*   r/   r    r    r!   getchildren  s     zElement.getchildrenc                 C   s   t | ||S r1   )r   findr+   path
namespacesr    r    r!   rU   !  s    	zElement.findc                 C   s   t | |||S r1   )r   findtextr+   rW   defaultrX   r    r    r!   rY   ,  s    zElement.findtextc                 C   s   t | ||S r1   )r   findallrV   r    r    r!   r\   :  s    	zElement.findallc                 C   s   t | ||S r1   )r   iterfindrV   r    r    r!   r]   E  s    	zElement.iterfindc                 C   s    | j   g | _d  | _| _d S r1   )r)   clearr*   r3   r4   r/   r    r    r!   r^   P  s    
zElement.clearc                 C   s   | j ||S r1   )r)   get)r+   keyr[   r    r    r!   r_   [  s    zElement.getc                 C   s   || j |< d S r1   )r)   )r+   r`   valuer    r    r!   seth  s    zElement.setc                 C   s
   | j  S r1   )r)   keysr/   r    r    r!   rc   r  s    zElement.keysc                 C   s
   | j  S r1   )r)   itemsr/   r    r    r!   rd   {  s    	zElement.itemsc                 c   sD   |dkrd }|d ks| j |kr$| V  | jD ]}||E d H  q*d S )N*)r"   r*   iter)r+   r"   rQ   r    r    r!   rf     s    
zElement.iterc                 C   s   t jdtdd t| |S )NzbThis method will be removed in future versions.  Use 'elem.iter()' or 'list(elem.iter())' instead.r9   r:   r<   r=   rS   listrf   r+   r"   r    r    r!   getiterator  s     zElement.getiteratorc                 c   sX   | j }t|ts|d k	rd S | j}|r,|V  | D ]"}| E d H  |j}|r0|V  q0d S r1   )r"   r%   strr3   itertextr4   )r+   r"   trQ   r    r    r!   rl     s    zElement.itertext)N)NN)N)N)N)N)N)"r   r   r   r"   r)   r3   r4   r-   r0   r2   r6   r8   r?   rC   rF   rG   rI   rM   rN   rE   rR   rT   rU   rY   r\   r]   r^   r_   rb   rc   rd   rf   rj   rl   r    r    r    r!   r   }   s>   	






	

c                 K   s"   ||}|  ||}| | |S r1   )r2   rI   )parentr"   r)   r,   r$   r    r    r!   r     s    
c                 C   s   t t}| |_|S r1   )r   r   r3   )r3   r$   r    r    r!   r     s    	c                 C   s&   t t}| |_|r"|jd | |_|S )N )r   r   r3   )targetr3   r$   r    r    r!   r     s
    
c                   @   sV   e Zd ZdddZdd Zdd Zdd	 Zd
d Zdd Zdd Z	dd Z
dd ZdS )r   Nc                 C   s   |rd||f }|| _ d S )Nz{%s}%sr3   )r+   Ztext_or_urir"   r    r    r!   r-     s    zQName.__init__c                 C   s   | j S r1   rq   r/   r    r    r!   __str__  s    zQName.__str__c                 C   s   d| j j| jf S )Nz<%s %r>)r(   r   r3   r/   r    r    r!   r0      s    zQName.__repr__c                 C   s
   t | jS r1   )hashr3   r/   r    r    r!   __hash__  s    zQName.__hash__c                 C   s    t |tr| j|jkS | j|kS r1   r%   r   r3   r+   otherr    r    r!   __le__  s    
zQName.__le__c                 C   s    t |tr| j|jk S | j|k S r1   ru   rv   r    r    r!   __lt__  s    
zQName.__lt__c                 C   s    t |tr| j|jkS | j|kS r1   ru   rv   r    r    r!   __ge__  s    
zQName.__ge__c                 C   s    t |tr| j|jkS | j|kS r1   ru   rv   r    r    r!   __gt__  s    
zQName.__gt__c                 C   s    t |tr| j|jkS | j|kS r1   ru   rv   r    r    r!   __eq__  s    
zQName.__eq__)N)r   r   r   r-   rr   r0   rt   rx   ry   rz   r{   r|   r    r    r    r!   r     s   
c                   @   s   e Zd ZdddZdd Zdd Zddd	Zdd
dZdddZd ddZ	d!ddZ
d"ddZd#ddZd$ddddZdd ZdS )%r   Nc                 C   s   || _ |r| | d S r1   )_rootr	   )r+   r$   filer    r    r!   r-   '  s    zElementTree.__init__c                 C   s   | j S r1   r}   r/   r    r    r!   getroot-  s    zElementTree.getrootc                 C   s
   || _ d S r1   r   )r+   r$   r    r    r!   _setroot1  s    zElementTree._setrootc                 C   s   d}t |dst|d}d}z^|d krLt }t |drL||| _| jW 2S |d}|s\qh|| qL| | _| jW S |r|  X d S )NFreadrbT_parse_wholei   )r#   opencloser   r   r}   r   feed)r+   sourceparserclose_sourcedatar    r    r!   r	   ;  s$    






zElementTree.parsec                 C   s   | j |S r1   )r}   rf   ri   r    r    r!   rf   `  s    
zElementTree.iterc                 C   s   t jdtdd t| |S )NzbThis method will be removed in future versions.  Use 'tree.iter()' or 'list(tree.iter())' instead.r9   r:   rg   ri   r    r    r!   rj   m  s     zElementTree.getiteratorc                 C   s:   |d d dkr,d| }t jd| tdd | j||S Nr   /.zThis search is broken in 1.3 and earlier, and will be fixed in a future version.  If you rely on the current behaviour, change it to %rr9   r:   )r<   r=   r>   r}   rU   rV   r    r    r!   rU   u  s     zElementTree.findc                 C   s<   |d d dkr,d| }t jd| tdd | j|||S r   )r<   r=   r>   r}   rY   rZ   r    r    r!   rY     s     zElementTree.findtextc                 C   s:   |d d dkr,d| }t jd| tdd | j||S r   )r<   r=   r>   r}   r\   rV   r    r    r!   r\     s     zElementTree.findallc                 C   s:   |d d dkr,d| }t jd| tdd | j||S r   )r<   r=   r>   r}   r]   rV   r    r    r!   r]     s     zElementTree.iterfindTshort_empty_elementsc             	   C   s   |s
d}n|t krtd| |s4|dkr0d}nd}| }t||}|dkr|sd|d kr|dkr|}	|dkrdd l}
|
 }	|d	|	f  |d
krt|| j n,t| j|\}}t | }||| j|||d W 5 Q R X d S )Nxmlzunknown method %rc14nutf-8us-ascii)r   r   unicoder   r   z$<?xml version='1.0' encoding='%s'?>
r3   r   )	
_serialize
ValueErrorlower_get_writerlocaleZgetpreferredencoding_serialize_textr}   _namespaces)r+   file_or_filenameencodingxml_declarationdefault_namespacemethodr   Z	enc_lowerwriteZdeclared_encodingr   qnamesrX   Z	serializer    r    r!   r     s:    zElementTree.writec                 C   s   | j |ddS )Nr   )r   )r   )r+   r~   r    r    r!   
write_c14n  s    zElementTree.write_c14n)NN)N)N)N)N)NN)N)N)NNNN)r   r   r   r-   r   r   r	   rf   rj   rU   rY   r\   r]   r   r   r    r    r    r!   r     s$   


%





    :c                 c   s"  z
| j }W nP tk
rZ   |dkr.t| d}nt| d|dd}| |j V  W 5 Q R X Y nX |dkrl|V  nt }t| tjr| }nft| tjrt	| }|
|j nBt }dd |_||_ z| j|_| j|_W n tk
r   Y nX tj||ddd}|
|j |j V  W 5 Q R X d S )	Nr   wxmlcharrefreplace)r   errorsc                   S   s   dS NTr    r    r    r    r!   <lambda>0      z_get_writer.<locals>.<lambda>
)r   r   newline)r   AttributeErrorr   
contextlib	ExitStackr%   ioBufferedIOBase	RawIOBaseBufferedWritercallbackdetachwritableseekabletellTextIOWrapper)r   r   r   r~   stackr    r    r!   r     sB    



r   c                    s  d d ii  rd <  fdd}|   D ]} | j}t|trZ|jkr||j n<t|trv|kr|| n |d k	r|tk	r|tk	rt| | 	 D ]F\}}t|tr|j}|kr|| t|tr|jkr||j q| j}t|tr0|jkr0||j q0fS )N c                    s   z| d d dkr| dd   dd\}}|}|d krjt|}|d krZdt }|dkrj||< |rd||f | < q|| < n rtd| | < W n tk
r   t|  Y nX d S )Nr   {}zns%dr   z%s:%sz<cannot use non-qualified names with default_namespace option)rsplitr_   _namespace_mapr7   r   r'   _raise_serialization_error)qnameurir"   prefixr   rX   r   r    r!   	add_qnameM  s(    


z_namespaces.<locals>.add_qname)
rf   r"   r%   r   r3   rk   r   r   r   rd   )r5   r   r   r"   r`   ra   r3   r    r   r!   r   B  s4    




r   c                 K   s  |j }|j}|tkr$| d|  nv|tkr<| d|  n^|| }|d kr||r\| t| |D ]}t| ||d |d q`n| d|  t| }	|	s|r2|rt| dd dD ](\}
}|rd| }| d	|t	|
f  q|	D ]L\}}
t
|tr|j}t
|
tr||
j }
nt	|
}
| d
|| |
f  q|sHt|sH|s| d |rb| t| |D ]}t| ||d |d qf| d| d  n| d |jr| t|j d S )N	<!--%s--><?%s?>r   <c                 S   s   | d S Nr   r    xr    r    r!   r     r   z _serialize_xml.<locals>.<lambda>r`   : xmlns%s="%s" %s="%s"></z />)r"   r3   r   r   _escape_cdata_serialize_xmlrh   rd   sorted_escape_attribr%   r   r7   r4   )r   r5   r   rX   r   kwargsr"   r3   rQ   rd   vkr    r    r!   r     s\    





r   )ZareabaseZbasefontbrcolframeZhrZimginputZisindexlinkmetaZparamc                 K   s  |j }|j}|tkr(| dt|  n|tkrD| dt|  nh|| }|d kr|rd| t| |D ]}t| ||d  qhn,| d|  t| }|s|r8|rt| dd dD ](\}	}
|
rd|
 }
| d|
t	|	f  q|D ]N\}
}	t
|
tr|
j}
t
|	tr||	j }	nt|	}	| d	||
 |	f  q| d
 | }|rx|dksb|dkrl| | n| t| |D ]}t| ||d  q||tkr| d| d
  |jr| t|j d S )Nr   r   r   c                 S   s   | d S r   r    r   r    r    r!   r     r   z!_serialize_html.<locals>.<lambda>r   r   r   r   r   ZscriptZstyler   )r"   r3   r   r   r   _serialize_htmlrh   rd   r   r   r%   r   _escape_attrib_htmlr   
HTML_EMPTYr4   )r   r5   r   rX   r   r"   r3   rQ   rd   r   r   Zltagr    r    r!   r     sX    



r   c                 C   s*   |  D ]}| | q|jr&| |j d S r1   )rl   r4   )r   r5   partr    r    r!   r     s    
r   )r   htmlr3   c                 C   sL   t d| rtdtt D ]\}}||ks8|| kr t|= q | t|< d S )Nzns\d+$z'Prefix format reserved for internal use)rematchr   rh   r   rd   )r   r   r   r   r    r    r!   r     s    r   r   ZrdfZwsdlZxsZxsiZdc)$http://www.w3.org/XML/1998/namespacezhttp://www.w3.org/1999/xhtmlz+http://www.w3.org/1999/02/22-rdf-syntax-ns#z http://schemas.xmlsoap.org/wsdl/z http://www.w3.org/2001/XMLSchemaz)http://www.w3.org/2001/XMLSchema-instancez http://purl.org/dc/elements/1.1/c                 C   s   t d| t| jf d S )Nzcannot serialize %r (type %s))r'   rP   r   rq   r    r    r!   r     s    r   c              	   C   sh   zBd| kr|  dd} d| kr*|  dd} d| kr>|  dd} | W S  ttfk
rb   t|  Y nX d S )N&&amp;r   &lt;r   &gt;replacer'   r   r   rq   r    r    r!   r   !  s    r   c              	   C   s   zd| kr|  dd} d| kr*|  dd} d| kr>|  dd} d| krR|  dd} d	| krf|  d	d
} d| krz|  dd
} d
| kr|  d
d} d| kr|  dd} | W S  ttfk
r   t|  Y nX d S )Nr   r   r   r   r   r   "&quot;z
r   z&#10;	z&#09;r   rq   r    r    r!   r   1  s(    r   c              	   C   sh   zBd| kr|  dd} d| kr*|  dd} d| kr>|  dd} | W S  ttfk
rb   t|  Y nX d S )Nr   r   r   r   r   r   r   rq   r    r    r!   r   M  s    r   T)r   r   r   c                C   s:   |dkrt  nt  }t| j||||||d | S )Nr   r   r   r   r   )r   StringIOBytesIOr   r   getvalue)r$   r   r   r   r   r   streamr    r    r!   r   \  s    c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )_ListDataStreamc                 C   s
   || _ d S r1   )lst)r+   r   r    r    r!   r-   v  s    z_ListDataStream.__init__c                 C   s   dS r   r    r/   r    r    r!   r   y  s    z_ListDataStream.writablec                 C   s   dS r   r    r/   r    r    r!   r   |  s    z_ListDataStream.seekablec                 C   s   | j | d S r1   )r   rI   )r+   br    r    r!   r     s    z_ListDataStream.writec                 C   s
   t | jS r1   )r7   r   r/   r    r    r!   r     s    z_ListDataStream.tellN)r   r   r   r-   r   r   r   r   r    r    r    r!   r   t  s
   r   c                C   s*   g }t |}t| j||||||d |S )Nr   )r   r   r   )r$   r   r   r   r   r   r   r   r    r    r!   r     s    c                 C   sL   t | tst| } | jtjdd |  j}|r<|d dkrHtjd d S )Nr   )r   r   )r%   r   r   sysstdoutr   r4   )r5   r4   r    r    r!   r     s    

c                 C   s   t  }|| | |S r1   )r   r	   )r   r   treer    r    r!   r	     s    	c                    sf   t ||d fddG fdddtjj}| d _~d tdsbtdd	 S )
N)events_parserc                  3   s^   zJ E d H  d} | s q,|  q } E d H  |_W 5  rX   X d S )Ni @  )r   read_eventsr   r   _close_and_return_rootroot)r   r  )r   it
pullparserr   r    r!   iterator  s    

ziterparse.<locals>.iteratorc                       s   e Zd Z  jZdS )z$iterparse.<locals>.IterParseIteratorN)r   r   r   __next__r    )r  r    r!   IterParseIterator  s   r  Fr   r   T)r   collectionsabcIteratorr  r#   r   )r   r   r   r  r    )r   r  r  r  r   r!   r     s    

c                   @   s<   e Zd ZdddddZdd Zdd Zd	d
 Zdd ZdS )r   N)r   c                C   s<   t  | _|ptt d| _|d kr(d}| j| j| d S )Nrp   )end)r  deque_events_queuer   r   r   
_setevents)r+   r   r   r    r    r!   r-     s
    
zXMLPullParser.__init__c              
   C   sZ   | j d krtd|rVz| j | W n. tk
rT } z| j| W 5 d }~X Y nX d S )Nz!feed() called after end of stream)r   r   r   SyntaxErrorr  rI   )r+   r   excr    r    r!   r     s    
zXMLPullParser.feedc                 C   s   | j  }d | _ |S r1   )r   r   )r+   r  r    r    r!   r    s    
z$XMLPullParser._close_and_return_rootc                 C   s   |    d S r1   )r  r/   r    r    r!   r     s    zXMLPullParser.closec                 c   s.   | j }|r*| }t|tr"|q|V  qd S r1   )r  popleftr%   	Exception)r+   r   eventr    r    r!   r     s    
zXMLPullParser.read_events)N)r   r   r   r-   r   r  r   r   r    r    r    r!   r     s
   
c                 C   s"   |st t d}||  | S Nr  r   r   r   r   )r3   r   r    r    r!   r     s    
c                 C   sR   |st t d}||  | }i }| D ]}|d}|r.|||< q.||fS )Nr  r.   )r   r   r   r   rf   r_   )r3   r   r   Zidsr5   r.   r    r    r!   r   ,  s    



c                 C   s,   |st t d}| D ]}|| q| S r  r  )Zsequencer   r3   r    r    r!   r   D  s
    	c                   @   sd   e Zd ZddddddddZdd Zdd	 Zd
d Zdd Zdd Zdd Z	dddZ
dd ZdS )r   NF)comment_factory
pi_factoryinsert_comments
insert_pisc                C   sd   g | _ g | _d | _d | _d | _|d kr*t}|| _|| _|d krBt}|| _	|| _
|d krZt}|| _d S r1   )_data_elem_lastr}   _tailr   _comment_factoryr  r   _pi_factoryr  r   _factory)r+   Zelement_factoryr  r  r  r  r    r    r!   r-   j  s     zTreeBuilder.__init__c                 C   s   | j S r1   r   r/   r    r    r!   r   ~  s    zTreeBuilder.closec                 C   s>   | j r:| jd k	r4d| j }| jr,|| j_n|| j_g | _ d S Nr   )r  r  joinr  r4   r3   r+   r3   r    r    r!   _flush  s    

zTreeBuilder._flushc                 C   s   | j | d S r1   )r  rI   r+   r   r    r    r!   r     s    zTreeBuilder.datac                 C   sX   |    | || | _}| jr2| jd | n| jd krB|| _| j| d| _|S )Nr   r   )r%  r!  r  r  rI   r}   r  )r+   r"   attrsr5   r    r    r!   start  s    
zTreeBuilder.startc                 C   s    |    | j | _d| _| jS r   )r%  r  popr  r  ri   r    r    r!   r    s    zTreeBuilder.endc                 C   s   |  | j| j|S r1   )_handle_singler  r  r$  r    r    r!   comment  s
      zTreeBuilder.commentc                 C   s   |  | j| j||S r1   )r*  r   r  )r+   rp   r3   r    r    r!   pi  s       zTreeBuilder.pic                 G   s:   || }|r6|    || _| jr0| jd | d| _|S )Nr   r   )r%  r  r  rI   r  )r+   factoryrN   argsr5   r    r    r!   r*    s    zTreeBuilder._handle_single)N)N)r   r   r   r-   r   r%  r   r(  r  r+  r,  r*  r    r    r    r!   r   V  s     
	c                   @   sl   e Zd ZdddddZdd Zdd Zd	d
 Zdd Zdd Zdd Z	dd Z
dd Zdd Zdd ZdS )r   N)rp   r   c                C   sd  zddl m} W n> tk
rN   zdd l}W n tk
rH   tdY nX Y nX ||d}|d krjt }| | _| _| | _| _	|j
| _i | _| j|_t|dr| j|_t|dr| j|_t|dr| j|_t|dr| j|_t|d	r|j|_t|d
r|j|_t|dr|j|_d|_d|_d|_ d | _!i | _"zd|j# | _$W n t%k
r^   Y nX d S )Nr   expatz7No module named expat; use SimpleXMLTreeBuilder insteadr   r(  r  start_nsend_nsr   r+  r,  r   zExpat %d.%d.%d)&xml.parsersr0  ImportErrorZpyexpatZParserCreater   r   r   rp   _targeterror_error_names_defaultZDefaultHandlerExpandr#   _startStartElementHandler_endEndElementHandler	_start_nsStartNamespaceDeclHandler_end_nsEndNamespaceDeclHandlerr   ZCharacterDataHandlerr+  CommentHandlerr,  ProcessingInstructionHandlerZbuffer_textordered_attributesspecified_attributes_doctypeentityversion_infoversionr   )r+   rp   r   r0  r   r    r    r!   r-     sP    




zXMLParser.__init__c                 C   s8  | j }|j}|D ] }|dkrDd|_d|_||| jfdd}||_q|dkrf||| jfdd}||_q|dkrt| j	dr||| j
fd	d}n||fd
d}||_q|dkrt| j	dr||| jfdd}n||fdd}||_q|dkr||| fdd}||_q|dkr&||| fdd}||_qtd| qd S )Nr(  r   c                 S   s   |||| |f d S r1   r    )r"   Z	attrib_inr  rI   r(  r    r    r!   handler  s    z%XMLParser._setevents.<locals>.handlerr  c                 S   s   |||| f d S r1   r    )r"   r  rI   r  r    r    r!   rJ    s    zstart-nsr1  c                 S   s   |||| |f d S r1   r    )r   r   r  rI   r1  r    r    r!   rJ  !  s    c                 S   s   ||| p
d|pdff d S r"  r    )r   r   r  rI   r    r    r!   rJ  %  s    zend-nsr2  c                 S   s   |||| f d S r1   r    )r   r  rI   r2  r    r    r!   rJ  +  s    c                 S   s   ||d f d S r1   r    )r   r  rI   r    r    r!   rJ  /  s    r+  c                 S   s   |||j | f d S r1   )rp   r+  )r3   r  rI   r+   r    r    r!   rJ  3  s    r,  c                 S   s   |||j | |f d S r1   )rp   r,  )Z	pi_targetr   r  rI   r+   r    r    r!   rJ  7  s    zunknown event %r)r   rI   rD  rE  r:  r;  r<  r=  r#   rp   r>  r?  r@  rA  rB  rC  r   )r+   Zevents_queueZevents_to_reportr   rI   Z
event_namerJ  r    r    r!   r    sL    





zXMLParser._seteventsc                 C   s&   t |}|j|_|j|jf|_|d S r1   )r
   codelinenooffsetZposition)r+   ra   errr    r    r!   _raiseerror>  s    zXMLParser._raiseerrorc                 C   sF   z| j | }W n2 tk
r@   |}d|kr2d| }|| j |< Y nX |S )Nr   r   )r8  KeyError)r+   r`   namer    r    r!   _fixnameD  s    zXMLParser._fixnamec                 C   s   | j |pd|pdS r"  )rp   r1  r+   r   r   r    r    r!   r>  O  s    zXMLParser._start_nsc                 C   s   | j |pdS r"  )rp   r2  )r+   r   r    r    r!   r@  R  s    zXMLParser._end_nsc                 C   sR   | j }||}i }|rDtdt|dD ]}||d  |||| < q&| j||S )Nr   r9   r   )rR  ranger7   rp   r(  )r+   r"   	attr_listZfixnamer)   ir    r    r!   r:  U  s    zXMLParser._startc                 C   s   | j | |S r1   )rp   r  rR  ri   r    r    r!   r<  a  s    zXMLParser._endc              	   C   s  |d d }|dkrz| j j}W n tk
r6   Y d S X z|| j|dd   W nZ tk
r   ddlm} |d|| jj	| jj
f }d|_| jj	|_| jj
|_|Y nX n"|dkr|d d	 d
krg | _n | jd k	r|dkrd | _d S | }|sd S | j| t| j}|dkr| jd }|dkrd|dkrd| j\}}}	}
|	r|	dd }	n*|dkr|dkr| j\}}}
d }	nd S t| j dr| j ||	|
dd  nt| drtdt d | _d S )Nr   r   r   r   r/  z'undefined entity %s: line %d, column %d   r   	   z	<!DOCTYPEr   r9   ZPUBLIC   ZSYSTEM   doctypezaThe doctype() method of XMLParser is ignored.  Define doctype() method on the TreeBuilder target.)rp   r   r   rG  rP  r3  r0  r6  r   ZErrorLineNumberZErrorColumnNumberrK  rL  rM  rF  striprI   r7   r#   r[  r<   r=   RuntimeWarning)r+   r3   r   Zdata_handlerr0  rN  nrP   rQ  Zpubidsystemr    r    r!   r9  d  sd    





zXMLParser._defaultc              
   C   sF   z| j |d W n. | jk
r@ } z| | W 5 d }~X Y nX d S )Nr   )r   Parser7  rO  )r+   r   r   r    r    r!   r     s    zXMLParser.feedc              
   C   s   z| j dd W n. | jk
r@ } z| | W 5 d }~X Y nX z0z| jj}W n tk
rd   Y nX | W S W 5 | ` | `| `| `X d S )Nr   r   )	r   r`  r7  rO  r   rp   r5  r   r   )r+   r   Zclose_handlerr    r    r!   r     s    zXMLParser.close)r   r   r   r-   r  rO  rR  r>  r@  r:  r<  r9  r   r   r    r    r    r!   r     s   
.66)out	from_filec                K   s   | d kr|d krt dd }|d kr0t  }}tt|jf|d}| d k	r`||  |  n|d k	rtt||d |d k	r|	 S d S )Nz:Either 'xml_data' or 'from_file' must be provided as inputr  )r   )
r   r   r   r   r   r   r   r   r	   r   )Zxml_datara  rb  ZoptionsZsior   r    r    r!   r     s    

z	^\w+:\w+$c                   @   s   e Zd ZddddddddddZefddZdd	 Zdd
dZdd Zdj	fddZ
dd Zdd ZdddZdd Zdd Zdd ZdS )r   FN)with_comments
strip_textrewrite_prefixesqname_aware_tagsqname_aware_attrsexclude_attrsexclude_tagsc          	      C   s   || _ g | _|| _|| _|r$t|nd | _|r6t|nd | _|| _|rRt|| _nd | _|rjt|j	| _
nd | _
dgg| _g | _|s| jtt  | jg  i | _dg| _d | _d| _d| _d| _d S )N)r   r   Fr   )_writer  _with_comments_strip_textrb   _exclude_attrs_exclude_tags_rewrite_prefixes_qname_aware_tagsintersection_find_qname_aware_attrs_declared_ns_stack	_ns_stackrI   rh   r   rd   _prefix_map_preserve_space_pending_start
_root_seen
_root_done_ignored_depth)	r+   r   rc  rd  re  rf  rg  rh  ri  r    r    r!   r-     s2    zC14NWriterTarget.__init__c                 c   s    ||D ]}|r|E d H  qd S r1   r    )r+   Zns_stackZ	_reversedrX   r    r    r!   _iter_namespaces  s    z!C14NWriterTarget._iter_namespacesc                 C   s\   | dd\}}| | jD ]$\}}||krd| d|   S qtd| d| dd S )Nr   r   r   r   zPrefix z of QName "" is not declared in scope)splitr{  rt  r   )r+   Zprefixed_namer   rQ  r   pr    r    r!   _resolve_prefix_name  s
    z%C14NWriterTarget._resolve_prefix_namec                 C   s  |d kr:|d d dkr,|dd   ddnd|f\}}n|}t }| | jD ]B\}}||kr||kr|rz| d| n|||f  S || qP| jr|| jkr| j| }ndt| j  }| j|< | jd ||f | d| ||fS |sd|kr|||fS | | j	D ]J\}}||kr| jd ||f |rR| d| n|||f  S q|st|||fS t
d| d	d S )
Nr   r   r   r   r   r^  r   zNamespace "r|  )r   rb   r{  rs  addro  ru  r7   rI   rt  r   )r+   r   r   r"   Zprefixes_seenur   r    r    r!   _qname  s.    2 


&
zC14NWriterTarget._qnamec                 C   s   | j s| j| d S r1   )rz  r  rI   r&  r    r    r!   r   C  s    zC14NWriterTarget.datar   c                 C   s   || j }| j d d = | jr.| jd s.| }| jd k	rv| jd  }| _|rVt|rV|nd }| j||f  |d k	rvd S |r| jr| t	| d S Nr   )
r  rl  rv  r\  rw  _looks_like_prefix_namer:  rx  rj  _escape_cdata_c14n)r+   Z
_join_textr   r.  
qname_textr    r    r!   r%  G  s    


zC14NWriterTarget._flushc                 C   s0   | j r
d S | jr|   | jd ||f d S r  )rz  r  r%  rt  rI   rS  r    r    r!   r1  U  s
    zC14NWriterTarget.start_nsc                 C   s   | j d k	r,| js|| j kr,|  jd7  _d S | jr:|   g }| j| | jd k	rn|| jkrn|||f| _d S | ||| d S r   )	rn  rz  r  r%  rs  rI   rp  rw  r:  )r+   r"   r'  new_namespacesr    r    r!   r(  ]  s    
zC14NWriterTarget.startc                    s  j d k	r$|r$fdd| D }|h|}i }|d k	rV| }||< || jd k	r|r|}|r|D ]0}	||	 }
t|
rv|
 }||
< || qvqd }nd }j  fddt|dd dD }|rdd |D }|  ng }|rjt| D ]^\}}|d k	r@||kr@||kr@|||  d	 }|| \}}	}|	|r\|n|	|f q
|
d
}j	|r|dknjd  j}|d|| d	   |r|ddd |D  |d |d k	r|t|||  d	  d_j	g  d S )Nc                    s    i | ]\}}| j kr||qS r    )rm  .0r   r   r/   r    r!   
<dictcomp>p  s     
  z+C14NWriterTarget._start.<locals>.<dictcomp>c                    s   i | ]}| |qS r    r    )r  r^  )parse_qnamer    r!   r    s      c                 S   s   |  ddS )Nr   r   )r}  )r^  r    r    r!   r     r   z)C14NWriterTarget._start.<locals>.<lambda>r   c                 S   s$   g | ]\}}|rd | nd|fqS )zxmlns:Zxmlnsr    )r  r   r   r    r    r!   
<listcomp>  s   z+C14NWriterTarget._start.<locals>.<listcomp>r   z+{http://www.w3.org/XML/1998/namespace}spaceZpreserver   r   r   c                 S   s&   g | ]\}}d | dt | dqS )ro   z="r   )_escape_attrib_c14nr  r    r    r!   r    s     r   T)rm  rd   r  r  rr  r  r  r   sortrI   r_   rv  rj  r#  r  rx  rt  )r+   r"   r'  r  r  r   Zresolved_namesr   ZqattrsZ	attr_namera   Zparsed_qnamesrU  r   r   Z
attr_qnamer   Zspace_behaviourr   r    )r  r+   r!   r:  n  s`    


 



zC14NWriterTarget._startc                 C   st   | j r|  j d8  _ d S | jr&|   | d| |d  d | j  t| jdk| _| j	  | j
  d S )Nr   r   r   r   )rz  r  r%  rj  r  rv  r)  r7   ry  rs  rt  ri   r    r    r!   r    s    

zC14NWriterTarget.endc                 C   sd   | j s
d S | jrd S | jr&| d n| jr:| jr:|   | dt| d | js`| d d S )Nr   z<!--z-->)rk  rz  ry  rj  rx  r  r%  r  r$  r    r    r!   r+    s    zC14NWriterTarget.commentc                 C   sp   | j r
d S | jr| d n| jr0| jr0|   | |rNd| dt| dn
d| d | jsl| d d S )Nr   z<?ro   z?>)rz  ry  rj  rx  r  r%  r  )r+   rp   r   r    r    r!   r,    s    $zC14NWriterTarget.pi)N)N)r   r   r   r-   reversedr{  r  r  r   r#  r%  r1  r(  r:  r  r+  r,  r    r    r    r!   r     s&       %
%
Ec              	   C   s|   zVd| kr|  dd} d| kr*|  dd} d| kr>|  dd} d| krR|  dd} | W S  ttfk
rv   t|  Y nX d S )	Nr   r   r   r   r   r   r   &#xD;r   rq   r    r    r!   r    s    r  c              	   C   s   z~d| kr|  dd} d| kr*|  dd} d| kr>|  dd} d| krR|  dd} d	| krf|  d	d
} d| krz|  dd} | W S  ttfk
r   t|  Y nX d S )Nr   r   r   r   r   r   r   z&#x9;r   z&#xA;r   r  r   rq   r    r    r!   r    s     r  )re   )_set_factories)N)N)N)NN)NN)N)NN)N)N)N)N)?__all__r   r   r   r<   r   r  Zcollections.abcr   r   r   r  r
   r   r   r   r   r   r   r   r   contextmanagerr   r   r   r   rb   	NameErrorr   r   r   r   r   r   r   r   r   r   r   r   r   r   r	   r   r   r   r   r   r   r   r   r   compileUNICODEr   r  r   r  r  rO   Z_elementtreer  r4  r    r    r    r!   <module>K   s              >

0 s
3
=22	  

05


z g  