a
    þ
þd¥  ã                   @   s6   d dl Z d dlZdgZe  de j¡ZG dd„ dƒZdS )é    NÚReceiveBuffers   
?
c                   @   s\   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ ZdS )r   c                 C   s   t ƒ | _d| _d| _d S ©Nr   )Ú	bytearrayÚ_dataÚ_next_line_searchÚ_multiple_lines_search©Úself© r
   ú[/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/h11/_receivebuffer.pyÚ__init__/   s    zReceiveBuffer.__init__c                 C   s   |  j |7  _ | S ©N)r   )r	   Z	bytesliker
   r
   r   Ú__iadd__4   s    zReceiveBuffer.__iadd__c                 C   s   t t| ƒƒS r   )ÚboolÚlenr   r
   r
   r   Ú__bool__8   s    zReceiveBuffer.__bool__c                 C   s
   t | jƒS r   )r   r   r   r
   r
   r   Ú__len__;   s    zReceiveBuffer.__len__c                 C   s
   t | jƒS r   )Úbytesr   r   r
   r
   r   Ú	__bytes__?   s    zReceiveBuffer.__bytes__c                 C   s*   | j d |… }| j d |…= d| _d| _|S r   )r   r   r   ©r	   ÚcountÚoutr
   r
   r   Ú_extractB   s
    zReceiveBuffer._extractc                 C   s    | j d|… }|sdS |  |¡S )zB
        Extract a fixed number of bytes from the buffer.
        N)r   r   r   r
   r
   r   Úmaybe_extract_at_mostL   s    z#ReceiveBuffer.maybe_extract_at_mostc                 C   sH   t d| jd ƒ}| j d|¡}|dkr6t| jƒ| _dS |d }|  |¡S )zK
        Extract the first line, if it is completed in the buffer.
        r   é   ó   
éÿÿÿÿNé   )Úmaxr   r   Úfindr   r   )r	   Zsearch_start_indexZpartial_idxÚidxr
   r
   r   Úmaybe_extract_next_lineV   s    z%ReceiveBuffer.maybe_extract_next_linec                 C   sÞ   | j dd… dkr |  d¡ g S | j dd… dkr@|  d¡ g S t | j | j¡}|du rrtdt| j ƒd ƒ| _dS | d¡d }|  |¡}| d¡}|D ]}| 	d¡r˜|d= q˜|d	 |d   krÊd
ksÐn J ‚|d	d…= |S )z\
        Extract everything up to the first blank line, and return a list of lines.
        Nr   ó   
r   r   r   r   ó   éþÿÿÿó    )
r   r   Úblank_line_regexÚsearchr   r   r   ÚspanÚsplitÚendswith)r	   Úmatchr    r   ÚlinesÚliner
   r
   r   Úmaybe_extract_linesg   s&    




"
z!ReceiveBuffer.maybe_extract_linesc                 C   s*   z| j d dk W S  ty$   Y dS 0 d S )Nr   é!   F)r   Ú
IndexErrorr   r
   r
   r   Ú+is_next_line_obviously_invalid_request_line’   s    z9ReceiveBuffer.is_next_line_obviously_invalid_request_lineN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r!   r.   r1   r
   r
   r
   r   r   .   s   

+)ÚreÚsysÚ__all__ÚcompileÚ	MULTILINEr&   r   r
   r
   r
   r   Ú<module>   s   '