ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     3

  \X=                 @   s  d Z dZddlT ddlmZmZ ddlmZ ddlmZmZ ddlm	Z	 ddlm
Z
mZ dd	lZejd	d
 dkr|edd	[yddlmZ W n ek
r   edd	Y nX eedsedd	ddlmZmZmZ ejZejZydd	lZW n ek
r   dd ZY nX dd	lZejZ[[G dd dZG dd dejZG dd dej ejZ!dd Z"e#dkrdd	l$Z%e" Z&e&j'e%j(jj)  e&j*e%j(j+  e&j,d d	S )z]
SAX driver for the pyexpat C module.  This driver works with
pyexpat.__version__ == '2.22'.
z0.20    )*)feature_validationfeature_namespaces)feature_namespace_prefixes)feature_external_gesfeature_external_pes)feature_string_interning)property_xml_stringproperty_interning_dictN   javazexpat not available in Java)expatzexpat not supportedParserCreate)	xmlreadersaxutilshandlerc             C   s   | S )N )or   r   +/usr/lib64/python3.6/xml/sax/expatreader.py_mkproxy'   s    r   c               @   s   e Zd ZdS )_ClosedParserN)__name__
__module____qualname__r   r   r   r   r   .   s   r   c               @   s8   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d ZdS )ExpatLocatorzLocator for use with the ExpatParser class.

    This uses a weak reference to the parser object to avoid creating
    a circular reference between the parser and the content handler.
    c             C   s   t || _d S )N)r   _ref)selfparserr   r   r   __init__9   s    zExpatLocator.__init__c             C   s   | j }|jd krd S |jjS )N)r   _parserErrorColumnNumber)r   r   r   r   r   getColumnNumber<   s    
zExpatLocator.getColumnNumberc             C   s   | j }|jd krdS |jjS )N   )r   r   ErrorLineNumber)r   r   r   r   r   getLineNumberB   s    
zExpatLocator.getLineNumberc             C   s   | j }|d krd S |jj S )N)r   _sourcegetPublicId)r   r   r   r   r   r&   H   s    zExpatLocator.getPublicIdc             C   s   | j }|d krd S |jj S )N)r   r%   getSystemId)r   r   r   r   r   r'   N   s    zExpatLocator.getSystemIdN)	r   r   r   __doc__r   r!   r$   r&   r'   r   r   r   r   r   3   s   r   c               @   s  e Zd ZdZdGddZdd	 Zd
d Zdd Zdd Zdd Z	dd Z
dd ZdHd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d0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Zd<d= Zd>d? Z d@dA Z!dBdC Z"dDS )IExpatParserz$SAX driver for the pyexpat C module.r            c             C   sF   t jj| | t j | _d | _|| _d | _d| _g | _	d| _
d | _d S )Nr   )r   IncrementalParserr   ZInputSourcer%   r   _namespaces_lex_handler_prop_parsing_entity_stack_external_ges
_interning)r   ZnamespaceHandlingbufsizer   r   r   r   Z   s    
zExpatParser.__init__c          	   C   sV   t j|}|| _y*| j  | jjt|  tjj	| | W n   | j
   Y nX dS )z3Parse an XML document from a URL or an InputSource.N)r   prepare_input_sourcer%   reset_cont_handlerZsetDocumentLocatorr   r   r-   parse_close_source)r   sourcer   r   r   r8   g   s    
zExpatParser.parsec             C   s    |j  d k	r| jj|j   d S )N)r'   r   ZSetBase)r   r:   r   r   r   prepareParserw   s    zExpatParser.prepareParserc             C   s    t jj| | | jr| j  d S )N)r   r-   setContentHandlerr0   _reset_cont_handler)r   r   r   r   r   r<   }   s    zExpatParser.setContentHandlerc             C   sP   |t kr| jS |tkr | jd k	S |tttfkr2dS |tkr@| jS t	d| d S )Nr   zFeature '%s' not recognized)
r   r.   r   r3   r   r   r   r   r2   SAXNotRecognizedException)r   namer   r   r   
getFeature   s    
zExpatParser.getFeaturec             C   s   | j rtd|tkr|| _n|tkr.|| _nt|tkrT|rL| jd krRi | _qd | _nN|tkrj|rtdn8|t	kr|rtdn"|t
kr|rtdntd| d S )Nz!Cannot set features while parsingz!expat does not support validationz/expat does not read external parameter entitiesz(expat does not report namespace prefixeszFeature '%s' not recognized)r0   SAXNotSupportedExceptionr   r.   r   r2   r   r3   r   r   r   r>   )r   r?   stater   r   r   
setFeature   s2    
zExpatParser.setFeaturec             C   sd   |t jkr| jS |tkr| jS |tkrT| jrLt| jdrB| jj S t	dnt
dt	d| d S )NGetInputContextz=This version of expat does not support getting the XML stringz.XML string cannot be returned when not parsingzProperty '%s' not recognized)r   property_lexical_handlerr/   r
   r3   r	   r   hasattrrD   r>   rA   )r   r?   r   r   r   getProperty   s    

zExpatParser.getPropertyc             C   sV   |t jkr || _| jrR| j  n2|tkr0|| _n"|tkrFtd| nt	d| d S )NzProperty '%s' cannot be setzProperty '%s' not recognized)
r   rE   r/   r0   _reset_lex_handler_propr
   r3   r	   rA   r>   )r   r?   valuer   r   r   setProperty   s    


zExpatParser.setPropertyc             C   sz   | j s| j  d| _ | jj  y| jj|| W nD tjk
rt } z&ttj	|j
|| }| jj| W Y d d }~X nX d S )Nr"   )r0   r6   r7   ZstartDocumentr   ZParser   errorZSAXParseExceptionZErrorStringcodeZ_err_handlerZ
fatalError)r   dataisFinaleexcr   r   r   feed   s    
zExpatParser.feedc             C   sB   | j }z|j }|d k	r |j  W d |j }|d k	r<|j  X d S )N)r%   ZgetCharacterStreamcloseZgetByteStream)r   r:   filer   r   r   r9      s    zExpatParser._close_sourcec             C   s   | j s| jd kst| jtr d S z(| jddd | jj  d| _d | _W d d| _| jd k	rzt }| jj|_| jj	|_	|| _| j
  X d S )N r"   )rN   r   )r1   r   
isinstancer   rQ   r7   ZendDocumentr0   r    r#   r9   )r   r   r   r   r   rR      s    




zExpatParser.closec             C   s   | j j| j_| j j| j_d S )N)r7   processingInstructionr   ZProcessingInstructionHandler
charactersZCharacterDataHandler)r   r   r   r   r=      s    zExpatParser._reset_cont_handlerc             C   s`   | j }| j}|d kr4d |_d |_d |_d |_d |_n(|j|_|j|_|j	|_| j
|_|j|_d S )N)r/   r   ZCommentHandlerZStartCdataSectionHandlerZEndCdataSectionHandlerZStartDoctypeDeclHandlerZEndDoctypeDeclHandlerZcommentZ
startCDATAZendCDATAstart_doctype_declZendDTD)r   Zlexr   r   r   r   rH     s    z#ExpatParser._reset_lex_handler_propc             C   s   | j r>tj| jj d| jd| _d| j_| j| j_	| j
| j_n,tj| jj | jd| _| j| j_	| j| j_| j  | j| j_| j| j_| j| j_| j| j_d | _| jr| j  | j| j_y| j| j_W n tk
r   Y nX | jjtj  d| _!g | _"d S )N )internr"   r   )#r.   r   r   r%   ZgetEncodingr3   r   Znamespace_prefixesstart_element_nsZStartElementHandlerend_element_nsZEndElementHandlerstart_elementend_elementr=   unparsed_entity_declZUnparsedEntityDeclHandlernotation_declZNotationDeclHandlerstart_namespace_declZStartNamespaceDeclHandlerend_namespace_declZEndNamespaceDeclHandlerZ_decl_handler_propr/   rH   external_entity_refZExternalEntityRefHandlerskipped_entity_handlerZSkippedEntityHandlerAttributeErrorZSetParamEntityParsingZ*XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONEr0   r1   )r   r   r   r   r6     s6    







zExpatParser.resetc             C   s   | j d krd S | j jS )N)r   r    )r   r   r   r   r!   ;  s    
zExpatParser.getColumnNumberc             C   s   | j d krdS | j jS )Nr"   )r   r#   )r   r   r   r   r$   @  s    
zExpatParser.getLineNumberc             C   s
   | j j S )N)r%   r&   )r   r   r   r   r&   E  s    zExpatParser.getPublicIdc             C   s
   | j j S )N)r%   r'   )r   r   r   r   r'   H  s    zExpatParser.getSystemIdc             C   s   | j j|t| d S )N)r7   ZstartElementAttributesImpl)r   r?   attrsr   r   r   r]   L  s    zExpatParser.start_elementc             C   s   | j j| d S )N)r7   Z
endElement)r   r?   r   r   r   r^   O  s    zExpatParser.end_elementc             C   s   |j  }t|dkrd |f}n&t|dkr<|d |d f}nt|}i }i }x|j D ]|\}}|j  }t|}	|	dkr|}
d |f}n>|	dkrd|d |d f }
|d |d f}n|d }
t|}|||< |
||< qVW | jj|d t|| d S )Nr"      r   z%s:%sr*   )splitlentupleitemsr7   ZstartElementNSAttributesNSImpl)r   r?   rg   pairZnewattrsZqnamesZanamerI   partsZlengthZqnameZapairr   r   r   r[   R  s.    


zExpatParser.start_element_nsc             C   sV   |j  }t|dkrd |f}n&t|dkr<|d |d f}nt|}| jj|d  d S )Nr"   rh   r   )ri   rj   rk   r7   ZendElementNS)r   r?   rn   r   r   r   r\   t  s    
zExpatParser.end_element_nsc             C   s   | j j|| d S )N)r7   rV   )r   targetrM   r   r   r   processing_instruction  s    z"ExpatParser.processing_instructionc             C   s   | j j| d S )N)r7   rW   )r   rM   r   r   r   character_data  s    zExpatParser.character_datac             C   s   | j j|| d S )N)r7   ZstartPrefixMapping)r   prefixZurir   r   r   ra     s    z ExpatParser.start_namespace_declc             C   s   | j j| d S )N)r7   ZendPrefixMapping)r   rs   r   r   r   rb     s    zExpatParser.end_namespace_declc             C   s   | j j||| d S )N)r/   ZstartDTD)r   r?   sysidpubidZhas_internal_subsetr   r   r   rX     s    zExpatParser.start_doctype_declc             C   s   | j j|||| d S )N)_dtd_handlerZunparsedEntityDecl)r   r?   basert   ru   Znotation_namer   r   r   r_     s    z ExpatParser.unparsed_entity_declc             C   s   | j j||| d S )N)rv   ZnotationDecl)r   r?   rw   rt   ru   r   r   r   r`     s    zExpatParser.notation_declc          	   C   s   | j s
dS | jj||}tj|| jj p*d}| jj| j	| jf | j	j
|| _	|| _ytjj| | W n
   dS | jd \| _	| _| jd= dS )Nr"   rT   r   rx   )r2   Z_ent_handlerZresolveEntityr   r5   r%   r'   r1   appendr   ZExternalEntityParserCreater   r-   r8   )r   contextrw   rt   ru   r:   r   r   r   rc     s     
zExpatParser.external_entity_refc             C   s   |rd| }| j j| d S )N%)r7   ZskippedEntity)r   r?   Zis_per   r   r   rd     s    z"ExpatParser.skipped_entity_handlerNi     )r   r|   )r   )#r   r   r   r(   r   r8   r;   r<   r@   rC   rG   rJ   rQ   r9   rR   r=   rH   r6   r!   r$   r&   r'   r]   r^   r[   r\   rq   rr   ra   rb   rX   r_   r`   rc   rd   r   r   r   r   r)   W   s@   

'"r)   c              O   s
   t | |S )N)r)   )argskwargsr   r   r   create_parser  s    r   __main__z:http://www.ibiblio.org/xml/examples/shakespeare/hamlet.xml)-r(   versionZxml.sax._exceptionsZxml.sax.handlerr   r   r   r   r   r   r	   r
   sysplatformZSAXReaderNotAvailableZxml.parsersr   ImportErrorrF   Zxml.saxr   r   r   rf   rm   _weakrefr   weakrefproxyr   ZLocatorr   r-   r)   r   r   Zxml.sax.saxutilsZxmlpr<   ZsaxZXMLGeneratorZsetErrorHandlerZErrorHandlerr8   r   r   r   r   <module>   sN   


$  _
