???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................
ðÕYfa  ã               @   sý   d  Z  d d d d g Z d Z d Z d Z d Z y d	 d
 l m Z m Z Wn e	 k
 rj d Z d Z Yn Xd d „  Z
 d d „  Z d d d „ Z d d d d „ Z d d d „ Z d d d „ Z d d „  Z d d „  Z d d „  Z e d k rù e ƒ  d S)zHConversions to/from quoted-printable transport encoding as per RFC 1521.ÚencodeÚdecodeÚencodestringÚdecodestringó   =éL   s   0123456789ABCDEFó    é    )Úa2b_qpÚb2a_qpNc             C   s\   t  |  t ƒ s t ‚ |  d k r% | S|  d k r5 | S|  t k p[ d |  k oX d k n S)zìDecide whether a particular byte ordinal needs to be quoted.

    The 'quotetabs' flag indicates whether embedded tabs and spaces should be
    quoted.  Note that line-ending tabs and spaces are always encoded, as per
    RFC 1521.
    s    	ó   _ó    ó   ~)Ú
isinstanceÚbytesÚAssertionErrorÚESCAPE)ÚcÚ	quotetabsÚheader© r   ú+/opt/alt/python35/lib64/python3.5/quopri.pyÚneedsquoting   s    r   c             C   sW   t  |  t ƒ r! t |  ƒ d k s' t ‚ t |  ƒ }  t t t |  d t |  d f ƒ S)zQuote a single character.é   é   )r   r   Úlenr   Úordr   ÚHEX)r   r   r   r   Úquote$   s    'r   Fc             C   s®  t  d k	 rA |  j ƒ  } t  | d | d | ƒ} | j | ƒ d S| d d d „ } d } x2|  j ƒ  } | so Pg  }	 d }
 | d d … d k r§ | d d … } d }
 xj | D]b } t | f ƒ } t | | | ƒ rá t | ƒ } | r| d	 k r|	 j d
 ƒ q® |	 j | ƒ q® W| d k	 r*| | ƒ t j	 |	 ƒ } xH t
 | ƒ t k rƒ| | d t d … d d ƒ| t d d … } q<W| } q\ W| d k	 rª| | d |
 ƒd S)av  Read 'input', apply quoted-printable encoding, and write to 'output'.

    'input' and 'output' are binary file objects. The 'quotetabs' flag
    indicates whether embedded tabs and spaces should be quoted. Note that
    line-ending tabs and spaces are always encoded, as per RFC 1521.
    The 'header' flag indicates whether we are encoding spaces as _ as per RFC
    1522.Nr   r   s   
c             S   s‰   |  rN |  d d  … d k rN | j  |  d  d … t |  d d  … ƒ | ƒ n7 |  d k rt | j  t |  ƒ | ƒ n | j  |  | ƒ d  S)Nr   s    	ó   .éÿÿÿÿr   r   )Úwriter   )ÚsÚoutputÚlineEndr   r   r   r    ;   s
    2zencode.<locals>.writer   r   r   r   r#   s   =
r   r   )r
   Úreadr    Úreadliner   r   r   ÚappendÚEMPTYSTRINGÚjoinr   ÚMAXLINESIZE)Úinputr"   r   r   ÚdataÚodatar    ZprevlineÚlineZoutlineZstrippedr   Zthisliner   r   r   r   ,   s@    	


c             C   sd   t  d  k	 r" t  |  d | d | ƒSd d l m } | |  ƒ } | ƒ  } t | | | | ƒ | j ƒ  S)Nr   r   r   )ÚBytesIO)r
   Úior.   r   Úgetvalue)r!   r   r   r.   ÚinfpÚoutfpr   r   r   r   j   s    	c             C   s‰  t  d k	 r; |  j ƒ  } t  | d | ƒ} | j | ƒ d Sd } x.|  j ƒ  } | sW Pd t | ƒ } } | d k rÚ | | d | … d k rÚ d }	 | d } x= | d k rÖ | | d | … d k rÖ | d } q£ Wn d }	 xn| | k  rP| | | d … }
 |
 d k r,| r,| d	 } | d } qã |
 t k rO| |
 } | d } qã | d | k rp|	 rpd }	 Pqã | d | k  rµ| | d | d
 … t k rµ| t } | d
 } qã | d
 | k  r9t | | d | d
 … ƒ r9t | | d
 | d … ƒ r9| t t | | d | d … ƒ f ƒ } | d } qã | |
 } | d } qã W|	 sD | j | d ƒ d } qD W| r…| j | ƒ d S)z»Read 'input', apply quoted-printable decoding, and write to 'output'.
    'input' and 'output' are binary file objects.
    If 'header' is true, decode underscore as space (per RFC 1522).Nr   r   r   r   s   
s    	r   r   é   é   )	r	   r$   r    r%   r   r   Úishexr   Úunhex)r*   r"   r   r+   r,   Únewr-   ÚiÚnÚpartialr   r   r   r   r   u   sR     & 
)
 
  .
 L+ 
 
c             C   s^   t  d  k	 r t  |  d | ƒSd d l m } | |  ƒ } | ƒ  } t | | d | ƒ| j ƒ  S)Nr   r   )r.   )r	   r/   r.   r   r0   )r!   r   r.   r1   r2   r   r   r   r       s    	c             C   se   t  |  t ƒ s t ‚ d |  k o, d k n pd d |  k oH d k n pd d |  k ob d k SS)zDReturn true if the byte ordinal 'c' is a hexadecimal digit in ASCII.ó   0ó   9ó   aó   fó   Aó   F)r   r   r   )r   r   r   r   r5   ¬   s    r5   c             C   sç   d } xÚ |  D]Ò } t  | f ƒ } d | k o9 d k n rM t d ƒ } nz d | k od d k n r| t d ƒ d } nK d	 | k o“ d
 k n r« t d	 ƒ d } n d sÇ t d t | ƒ ƒ ‚ | d t | ƒ | } q W| S)z.Get the integer value of a hexadecimal number.r   r;   r<   Ú0r=   r>   Úaé
   r?   r@   Fznon-hex digit r   )r   r   r   Úrepr)r!   Úbitsr   r8   r   r   r   r6   ±   s    r6   c           (   C   s)  d d  l  }  d d  l } y) | j |  j d d  … d ƒ \ } } Wni | j k
 r¬ } zF |  j |  _ t | ƒ t d ƒ t d ƒ t d ƒ |  j d ƒ WYd  d  } ~ Xn Xd } d } x8 | D]0 \ } } | d k rÞ d } | d	 k rÀ d } qÀ W| r#| r#|  j |  _ t d
 ƒ |  j d ƒ | s2d g } d }	 x× | D]Ï }
 |
 d k r`|  j j	 } n^ y t
 |
 d ƒ } WnH t k
 r½} z( |  j j d |
 | f ƒ d }	 w?WYd  d  } ~ Xn Xz6 | rÝt | |  j j	 ƒ n t | |  j j	 | ƒ Wd  |
 d k r| j ƒ  Xq?W|	 r%|  j |	 ƒ d  S)Nr   r   Ztdz"usage: quopri [-t | -d] [file] ...z-t: quote tabsz-d: decode; default encoder3   z-tz-dz -t and -d are mutually exclusiveú-Úrbz%s: can't open (%s)
)ÚsysÚgetoptÚargvÚerrorÚstderrÚstdoutÚprintÚexitÚstdinÚbufferÚopenÚOSErrorr    r   r   Úclose)rH   rI   ZoptsÚargsÚmsgZdecoZtabsÚorB   ÚstsÚfileÚfpr   r   r   ÚmainÃ   sT    )



   

 	r[   Ú__main__)Ú__doc__Ú__all__r   r)   r   r'   Zbinasciir	   r
   ÚImportErrorr   r   r   r   r   r   r5   r6   r[   Ú__name__r   r   r   r   Ú<module>   s*   >+.