
    d#                         d Z ddlZddlZddlmZ ddZddZ G d	 d
ej                  Z G d dej                  Z G d dej	                  Z	 G d deej
                  Z
 G d deej                  Zd ZdS )a  Python 'uu_codec' Codec - UU content transfer encoding.

This codec de/encodes from bytes to bytes.

Written by Marc-Andre Lemburg (mal@lemburg.com). Some details were
adapted from uu.py which was written by Lance Ellinghouse and
modified by Jack Jansen and Fredrik Lundh.
    N)BytesIOstrict<data>  c                    |dk    sJ t          |           }t                      }|j        }|j        }|                    dd          }|                    dd          } |d|dz  |fz                      d                      |d	          }|r* |t          j        |                      |d	          }|* |d
           |                                t          |           fS )Nr   
z\nz\rzbegin %o %s
i  ascii-   s    
end
)	r   readwritereplaceencodebinasciib2a_uugetvaluelen)	inputerrorsfilenamemodeinfileoutfiler   r   chunks	            $lib/python3.11/encodings/uu_codec.py	uu_encoder      s   XU^^FiiG;DME U++HU++H 
E?dUlH55
=
=g
F
FGGGDHHE
 hoe$$%%%R   
E+E

++    c                 2   |dk    sJ t          |           }t                      }|j        }|j        }	  |            }|st          d          |d d         dk    rn+	  |            }|r|dk    rnq	 t	          j        |          }nO# t          j        $ r=}|d         d	z
  d
z  dz  dz   dz  }	t	          j        |d |	                   }Y d }~nd }~ww xY w ||           |st          d          |                                t          |           fS )Nr      z"Missing "begin" line in input data   s   beginTs   end
r       ?         zTruncated input data)	r   readliner   
ValueErrorr   a2b_uuErrorr   r   )
r   r   r   r   r%   r   sdatavnbytess
             r   	uu_decoder-   %   s]   XU^^FiiGHMEHJJ 	CABBBRaR5HHJJ 	AMM	/?1%%DD~ 	/ 	/ 	/!R2~*Q.14F?1WfW:..DDDDDD	/
 	d  1/000E

++s   5B
 
C3CCc                       e Zd ZddZddZdS )Codecr   c                 "    t          ||          S N)r   selfr   r   s      r   r   zCodec.encodeG       '''r   c                 "    t          ||          S r1   )r-   r2   s      r   decodezCodec.decodeJ   r4   r   Nr   )__name__
__module____qualname__r   r6    r   r   r/   r/   F   s<        ( ( ( (( ( ( ( ( (r   r/   c                       e Zd ZddZdS )IncrementalEncoderFc                 8    t          || j                  d         S Nr   )r   r   r3   r   finals      r   r   zIncrementalEncoder.encodeN       ,,Q//r   NF)r8   r9   r:   r   r;   r   r   r=   r=   M   (        0 0 0 0 0 0r   r=   c                       e Zd ZddZdS )IncrementalDecoderFc                 8    t          || j                  d         S r?   )r-   r   r@   s      r   r6   zIncrementalDecoder.decodeR   rB   r   NrC   )r8   r9   r:   r6   r;   r   r   rF   rF   Q   rD   r   rF   c                       e Zd ZeZdS )StreamWriterNr8   r9   r:   bytescharbuffertyper;   r   r   rI   rI   U           NNNr   rI   c                       e Zd ZeZdS )StreamReaderNrJ   r;   r   r   rO   rO   X   rM   r   rO   c            
      v    t          j        dt          t          t          t
          t          t          d          S )NuuF)namer   r6   incrementalencoderincrementaldecoderstreamreaderstreamwriter_is_text_encoding)codecs	CodecInfor   r-   r=   rF   rO   rI   r;   r   r   getregentryrZ   ]   s4    --!!	 	 	 	r   )r   r   r   r7   )__doc__rX   r   ior   r   r-   r/   r=   rF   rI   rO   rZ   r;   r   r   <module>r]      s[           , , , ,*, , , ,B( ( ( ( (FL ( ( (0 0 0 0 02 0 0 00 0 0 0 02 0 0 0    5&-       5&-   

 
 
 
 
r   