
    D_	h	                     P    S r SSKJrJr  SSKJrJr   " S S5      r " S S5      rg)	zData Chunk Receiver
    )CHUNK_EXT_REONLY_HEXDIG_RE)
BadRequestfind_double_newlinec                   :    \ rS rSrSrSrS rS rS rS r	S r
S	rg)
FixedStreamReceiver   FNc                     Xl         X l        g N)remainbuf)selfclr   s      O/var/www/html/fileupload/venv/lib/python3.13/site-packages/waitress/receiver.py__init__FixedStreamReceiver.__init__   s        c                 6    U R                   R                  5       $ r   r   __len__r   s    r   r   FixedStreamReceiver.__len__       xx!!r   c                    U R                   nUS:  a  SU l        g[        U5      nX#::  a.  U R                  R	                  USU 5        SU l         SU l        U$ U R                  R	                  U5        U =R                   U-  sl         U$ )zSee IStreamConsumer   Tr   N)r   	completedlenr   append)r   datarmdatalens       r   receivedFixedStreamReceiver.received!   sv    [[6!DNd)=HHOOD"I&DK!DNIHHOOD!KK7"KNr   c                 6    U R                   R                  5       $ r   r   getfiler   s    r   r&   FixedStreamReceiver.getfile7   r   r   c                     U R                   $ r   r   r   s    r   getbufFixedStreamReceiver.getbuf:       xxr   )r   r   r   )__name__
__module____qualname____firstlineno__r   errorr   r   r"   r&   r*   __static_attributes__ r   r   r   r      s%    IE","r   r   c                   R    \ rS rSrSrSrSrSrSrSr	Sr
SrS rS rS rS	 rS
 rSrg)ChunkedReceiver>   r   Fr   Nc                     Xl         g r   r)   )r   r   s     r   r   ChunkedReceiver.__init__K   s    r   c                 6    U R                   R                  5       $ r   r   r   s    r   r   ChunkedReceiver.__len__N   r   r   c                 J   U R                   (       a  g[        U5      nU(       Ga}  U R                  nUS:  a]  US U nU R                  R	                  U5        [        U5      nXS  nU =R                  U-  sl        U R                  S:X  a  SU l        GOU R
                  (       ar  U R                  U-   nUR                  S5      nUS:  a  [        U5      S:  a
  Xl        SnGOSU l        US:X  a  USS  nO[        S5      U l	        SU l
        SU l        GOU R                  (       d  U R                  U-   nUR                  S5      nUS:  a
  Xl        SnGO@US U nXS-   S  nSU l        U(       a  UR                  S5      nUS:  a@  XxS  n	[        R                  " U	5      n
U
(       d  [        S	5      U l	        SU l
         U$ US U n[        R                  " U5      (       d  [        S
5      U l	        SU l
         U$ [        US5      nUS:  a  Xl        OSU l
        OyU R                   U-   nUR#                  S5      (       a  SU l         U[        U5      S-
  -
  $ [%        U5      nUS:  a	  Xl        SnO"SU l         US U U l        U[        U5      U-
  -
  $ U(       a  GM}  U$ )Nr   Ts   
   r   zChunk not properly terminatedF   ;zInvalid chunk extensionzInvalid chunk size   )r   r   chunk_remainderr   r   validate_chunk_end	chunk_endfindr   r1   all_chunks_receivedcontrol_liner   matchr   inttrailer
startswithr   )r   s	orig_sizer    to_writewrittenposlinesemiextinfovalid_ext_infoszrG   s                r   r"   ChunkedReceiver.receivedQ   s    >>F	%%BAvSb6)h-hK$$/$''1,.2D+((NNQ&ffWo7s1vz%&NA%(DNaxabE%/0O%P
370 /4D+--%%)ffWo7()%A Tc7D')A(+D%#yy19&*5kG-9-?-?-HN#1-78Q-R
;? 8 %V S $(;D-33D99)34H)IDJ7;D4!F ? !r]6350 8<D4 ,,*%%g..%)DN$Gq(899)'27#*LA &*DN#*4C=DL$Gs(:;;M aP r   c                 6    U R                   R                  5       $ r   r%   r   s    r   r&   ChunkedReceiver.getfile   r   r   c                     U R                   $ r   r)   r   s    r   r*   ChunkedReceiver.getbuf   r,   r   )	rC   r   rA   r?   r   rD   r1   rG   r@   )r-   r.   r/   r0   r?   r@   rD   rA   rC   rG   r   r1   r   r   r"   r&   r*   r2   r3   r   r   r5   r5   >   sG    OLIGIE
"ob"r   r5   N)	__doc__waitress.rfc7230r   r   waitress.utilitiesr   r   r   r5   r3   r   r   <module>r[      s)    : >& &RH Hr   