
    Rh                         d Z g dZdZdZdZdZ	 ddlmZmZ d	 Z
d
 ZddZddZddZddZd Zd Zd Zedk(  r e        yy# e	$ r dZdZY 8w xY w)zHConversions to/from quoted-printable transport encoding as per RFC 1521.)encodedecodeencodestringdecodestring   =L   s   0123456789ABCDEF        )a2b_qpb2a_qpNc                 x    t        | t              sJ | dv r|S | dk(  r|S | t        k(  xs d| cxk  xr dk  nc  S )zDecide 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.
        	   _       ~)
isinstancebytesESCAPE)c	quotetabsheaders      /usr/lib/python3.12/quopri.pyneedsquotingr      sI     aF{Dy;1tq0D011r   c                     t        | t              rt        |       dk(  sJ t        |       } t        t        t
        | dz     t
        | dz     f      z   S )zQuote a single character.      )r   r   lenordr   HEXr   s    r   quoter    $   sJ    aCFAI--AAE3q"u:s1R4y1222r   c                    t         0| j                         }t        |||      }|j                  |       y|dfd}d}| j                         x}rg }	d}
|dd dk(  r|dd }d}
|D ]P  }t	        |f      }t        |||      rt        |      }|r|dk(  r|	j                  d       @|	j                  |       R | ||       t        j                  |	      }t        |      t        kD  r3 ||dt        d	z
   d
       |t        d	z
  d }t        |      t        kD  r3|}| j                         x}r| ||
       yy)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.Nr   r      
c                     | r.| dd  dv r'|j                  | d d t        | dd        z   |z          y | dk(  r|j                  t        |       |z          y |j                  | |z          y )Nr      .)writer    )soutputlineEnds      r   r'   zencode.<locals>.write;   sf     236!LL3B%"#-/'9:$YLLqG+,LLW%r   r   r%   r   r   r   s   =
)r*   )r   readr'   readliner   r   r    appendEMPTYSTRINGjoinr   MAXLINESIZE)inputr)   r   r   dataodatar'   prevlinelineoutlinestrippedr   thislines                r   r   r   ,   sa    zz|ty@U & H.."
"$
"99DH 	"AqdAAy&1!H!t)t$q!	" (O ##G,(mk) (>KM*F;A/H	 (mk) 9 .."
"$
"< h) r   c                     t         t        | ||      S ddlm}  ||       } |       }t        ||||       |j	                         S )Nr"   r	   BytesIO)r   ior;   r   getvalue)r(   r   r   r;   infpoutfps         r   r   r   g   sE    a9V<<1:DIE
4	6*>>r   c           	      N   t         /| j                         }t        ||      }|j                  |       yd}| j                         x}rGdt	        |      }}|dkD  r7||dz
  | dk(  r,d}	|dz
  }|dkD  r"||dz
  | dv r|dz
  }|dkD  r||dz
  | dv rnd}	||k  r|||dz    }
|
dk(  r|r|d	z   }|dz   }n|
t
        k7  r||
z   }|dz   }n|dz   |k(  r|	sd}	n|dz   |k  r!||dz   |d
z    t
        k(  r|t
        z   }|d
z   }na|d
z   |k  rOt        ||dz   |d
z          r;t        ||d
z   |dz          r'|t        t        ||dz   |dz          f      z   }|dz   }n
||
z   }|dz   }||k  r|	s|j                  |dz          d}| j                         x}rG|r|j                  |       yy)zRead '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).Nr   r   r	   r   r#   s    	r   r         )	r
   r+   r'   r,   r   r   ishexr   unhex)r1   r)   r   r2   r3   newr5   inpartialr   s              r   r   r   r   s   
 zz|tF+U
C.."
"$
"#d)1q5T!A#a[E)GQqSa%D1QK83aC a%D1QK83 G!eQqsADyVDjac!fAg1Q3q1'U1qT!A#ac]f4Fl!A1qU4!AaC=1eD1QqSM6JE5ac!A##7"9::!AAg1Q3q !e LLu%C3 .."
"$
"4 S r   c                     t         t        | |      S ddlm}  ||       } |       }t        |||       |j	                         S )NrA   r	   r:   )r
   r<   r;   r   r=   )r(   r   r;   r>   r?   s        r   r   r      sA    a''1:DIE
4v&>>r   c                     t        | t              sJ d| cxk  xr dk  nc xs" d| cxk  xr dk  nc xs d| cxk  xr dk  S c S )zDReturn true if the byte ordinal 'c' is a hexadecimal digit in ASCII.   0   9   a   f   A   F)r   r   r   s    r   rD   rD      sF    a1F 1T 1FTQ5F$5FF5FFr   c                 &   d}| D ]  }t        |f      }d|cxk  rdk  rn nt        d      }nMd|cxk  rdk  rn nt        d      dz
  }n0d	|cxk  rd
k  rn nt        d	      dz
  }nJ dt        |      z          |dz  t        |      |z
  z   } |S )z.Get the integer value of a hexadecimal number.r	   rL   rM   0rN   rO   a
   rP   rQ   znon-hex digit r   )r   r   repr)r(   bitsr   rG   s       r   rE   rE      s    D 
&1$K1CAQ$CAQ$D	"A2*47225Bw#a&1*%
& Kr   c                     dd l } dd l}	 |j                  | j                  dd  d      \  }}d}d}D ]  \  }}|d	k(  rd
}|dk(  sd
} |r/|r-| j                  | _        t        d       | j                  d       sdg}d}	|D ]  }
|
dk(  r| j                  j                  }n	 t        |
d      }	 |r!t        || j
                  j                         n!t        || j
                  j                  |       |
dk7  sw|j                           |	r| j                  |	       y y # |j                  $ rY}| j                  | _        t        |       t        d       t        d       t        d       | j                  d       Y d }~Xd }~ww xY w# t        $ r.}| j                  j                  |
d|d       d}	Y d }~;d }~ww xY w# |
dk7  r|j                          w w xY w)Nr	   r   tdz"usage: quopri [-t | -d] [file] ...z-t: quote tabsz-d: decode; default encoderB   Fz-tTz-dz -t and -d are mutually exclusive-rbz: can't open (z)
)sysgetoptargverrorstderrstdoutprintexitstdinbufferopenOSErrorr'   r   r   close)r\   r]   optsargsmsgdecotabsorT   stsfilefps               r   mainrr      s   ]]388AB<6
d DD "19Td9Td" ZZ
01
C 3;!!B$%
	r3::,,-r3::,,d3s{
#$  I << ZZ
c
23*+0  

  D#!FG s{
 s=   "D! #F0AG!F	0AFF		G#F>>GG__main__)F)FF)__doc____all__r   r0   r   r.   binasciir
   r   ImportErrorr   r    r   r   r   r   rD   rE   rr   __name__ r   r   <module>rz      s    O ?	'239*v'RG
$*\ zF y  FFs   A 	AA