;
Êâ"Ic            
   @   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
 o d Z d Z Yn Xd „  Z d „  Z d	 d „ Z d	 d	 d „ Z d	 d „ Z d	 d „ Z d „  Z d „  Z d „  Z e d k o e ƒ  n d S(   uH   Conversions to/from quoted-printable transport encoding as per RFC 1521.u   encodeu   decodeu   encodestringu   decodestrings   =iL   s   0123456789ABCDEFs    i    (   u   a2b_qpu   b2a_qpc             C   sd   t  |  t ƒ p t ‚ |  d k o | S|  d k o | S|  t k p d |  k o
 d k n S(   uì   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    	s   _s    s   ~(   u
   isinstanceu   bytesu   AssertionErroru   ESCAPE(   u   cu	   quotetabsu   header(    (    u#   /mit/python/lib/python3.0/quopri.pyu   needsquoting   s    c             C   sZ   t  |  t ƒ o t |  ƒ d k p t ‚ t |  ƒ }  t t t |  d t |  d f ƒ S(   u   Quote a single character.i   i   (   u
   isinstanceu   bytesu   lenu   AssertionErroru   ordu   ESCAPEu   HEX(   u   c(    (    u#   /mit/python/lib/python3.0/quopri.pyu   quote$   s    *c             C   sÊ  t  d k	 o6 |  j ƒ  } t  | d | d | ƒ} | j | ƒ d S| d d „ } d } xJ|  j ƒ  } | p Pn g  }	 d }
 | d d … d k o | d d … } d }
 n xr | D]j } t | f ƒ } t | | | ƒ o t | ƒ } n | o | d k o |	 j d	 ƒ q· |	 j | ƒ q· W| d k	 o | | ƒ n t	 j
 |	 ƒ } xJ t | ƒ t k o6 | | d t d
 … d d ƒ| t d
 d … } qRW| } q[ | d k	 o | | d |
 ƒn d S(   u–  Read 'input', apply quoted-printable encoding, and write to 'output'.

    'input' and 'output' are files with readline() and write() methods.
    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.
    u	   quotetabsu   headerNs   
c             S   sŽ   |  oJ |  d d  … d k o3 | j  |  d  d … t |  d d  … ƒ | ƒ n: |  d k o | j  t |  ƒ | ƒ n | j  |  | ƒ d  S(   Niÿÿÿÿs    	s   .(   u   writeu   quote(   u   su   outputu   lineEnd(    (    u#   /mit/python/lib/python3.0/quopri.pyu   write=   s
    3s    iÿÿÿÿs    s   _i   u   lineEnds   =
(   u   b2a_qpu   Noneu   readu   writeu   readlineu   bytesu   needsquotingu   quoteu   appendu   EMPTYSTRINGu   joinu   lenu   MAXLINESIZE(   u   inputu   outputu	   quotetabsu   headeru   datau   odatau   writeu   prevlineu   lineu   outlineu   strippedu   cu   thisline(    (    u#   /mit/python/lib/python3.0/quopri.pyu   encode,   sD    

  	c             C   sf   t  d  k	 o t  |  d | d | ƒSd d l m } | |  ƒ } | ƒ  } t | | | | ƒ | j ƒ  S(   Nu	   quotetabsu   headeri    (   u   BytesIO(   u   b2a_qpu   Noneu   iou   BytesIOu   encodeu   getvalue(   u   su	   quotetabsu   headeru   BytesIOu   infpu   outfp(    (    u#   /mit/python/lib/python3.0/quopri.pyu   encodestringl   s    	c             C   s¦  t  d k	 o0 |  j ƒ  } t  | d | ƒ} | j | ƒ d Sd } xD|  j ƒ  } | p Pn d t | ƒ } } | d k oi | | d | … d k oN d }	 | d } xA | d k o) | | d | … d k o | d } q¬ Wn d }	 xu| | k  og| | | d … }
 |
 d k o | o | d	 } | d } qð |
 t k o | |
 } | d } qð | d | k o |	 o d }	 Pqð | d | k  o- | | d t k o | t } | d
 } qð | d
 | k  ow t | | d | d
 … ƒ oX t | | d
 | d … ƒ o9 | t t	 | | d | d … ƒ f ƒ } | d } qð | |
 } | d } qð W|	 p | j | d ƒ d } qF qF | o | j | ƒ n d S(   uÑ   Read 'input', apply quoted-printable decoding, and write to 'output'.
    'input' and 'output' are files with readline() and write() methods.
    If 'header' is true, decode underscore as space (per RFC 1522).u   headerNs    i    i   s   
s    	s   _s    i   i   (
   u   a2b_qpu   Noneu   readu   writeu   readlineu   lenu   ESCAPEu   ishexu   bytesu   unhex(   u   inputu   outputu   headeru   datau   odatau   newu   lineu   iu   nu   partialu   c(    (    u#   /mit/python/lib/python3.0/quopri.pyu   decodew   sV     ( 
 ( 
 
  &
 O+ 
 c             C   s`   t  d  k	 o t  |  d | ƒSd d l m } | |  ƒ } | ƒ  } t | | d | ƒ| j ƒ  S(   Nu   headeri    (   u   BytesIO(   u   a2b_qpu   Noneu   iou   BytesIOu   decodeu   getvalue(   u   su   headeru   BytesIOu   infpu   outfp(    (    u#   /mit/python/lib/python3.0/quopri.pyu   decodestring¢   s    	c             C   sl   t  |  t ƒ p t ‚ d |  k o
 d k n p7 d |  k o
 d k n p d |  k o d k SS(   uD   Return true if the byte ordinal 'c' is a hexadecimal digit in ASCII.s   0s   9s   as   fs   As   F(   u
   isinstanceu   bytesu   AssertionError(   u   c(    (    u#   /mit/python/lib/python3.0/quopri.pyu   ishex®   s    c             C   sò   d } xå |  D]Ý } t  | f ƒ } d | k o
 d k n o t d ƒ } nƒ d | k o
 d k n o t d ƒ d } nQ d	 | k o
 d
 k n o t d	 ƒ d } n d p t d t | ƒ ƒ ‚ | d t | ƒ | } q W| S(   u.   Get the integer value of a hexadecimal number.i    s   0s   9u   0s   as   fu   ai
   s   As   Fu   non-hex digit i   F(   u   bytesu   ordu   Falseu   AssertionErroru   repr(   u   su   bitsu   cu   i(    (    u#   /mit/python/lib/python3.0/quopri.pyu   unhex³   s     c           !   C   sP  d d  l  }  d d  l } y) | j |  j d d  … d ƒ \ } } Wnk | j k
 o\ } zF |  j |  _ t | ƒ t d ƒ t d ƒ t d ƒ |  j d ƒ WYd  d  } ~ Xn Xd } d } xB | D]: \ } } | d k o
 d } n | d	 k o
 d } qÂ qÂ W| o. | o' |  j |  _ t d
 ƒ |  j d ƒ n | p d g } n d }	 xâ | D]Ú }
 |
 d k o |  j j	 } na y t
 |
 d ƒ } WnJ t k
 o> } z( |  j j d |
 | f ƒ d }	 wVWYd  d  } ~ Xn Xz8 | o t | |  j j	 ƒ n t | |  j j	 | ƒ Wd  |
 d k o | j ƒ  n XqVW|	 o |  j |	 ƒ n d  S(   Ni    i   u   tdu"   usage: quopri [-t | -d] [file] ...u   -t: quote tabsu   -d: decode; default encodei   u   -tu   -du    -t and -d are mutually exclusiveu   -u   rbu   %s: can't open (%s)
(   u   sysu   getoptu   argvu   erroru   stderru   stdoutu   printu   exitu   stdinu   bufferu   openu   IOErroru   writeu   decodeu   encodeu   close(   u   sysu   getoptu   optsu   argsu   msgu   decou   tabsu   ou   au   stsu   fileu   fp(    (    u#   /mit/python/lib/python3.0/quopri.pyu   mainÅ   sX    )



!  
 
  u   __main__N(   u   __doc__u   __all__u   ESCAPEu   MAXLINESIZEu   HEXu   EMPTYSTRINGu   binasciiu   a2b_qpu   b2a_qpu   ImportErroru   Noneu   needsquotingu   quoteu   encodeu   encodestringu   decodeu   decodestringu   ishexu   unhexu   mainu   __name__(    (    (    u#   /mit/python/lib/python3.0/quopri.pyu   <module>   s*   		@+			.