o
    Žõ±j.  ã                   @   sH   d dl Z d dlZd dlZdd„ Zddd„Zdd„ Zd	d
„ Zddd„ZdS )é    Nc                 C   s^  t | ƒ}tƒ }d}| r­| d }| dd … } tdƒD ]‘}t |ƒ}||? d@ s7|| d jddd�7 }| dd … } nkt d| d d… ¡d }t |ƒd }d	}	d
}
|dkra|	dL }	|
d8 }
|dL }|dksQ||	@ d }||
? d }||kr�|| d … td	t || d … ƒ d ƒ }||d |… 7 }n||| | | … 7 }| dd … } t | ƒdkrª nq| s|S )Né   r   é   é   Úlittle)ÚlengthÚ	byteorderú<Hé   éÿ  é   é   )ÚlenÚ	bytearrayÚrangeÚto_bytesÚstructÚunpackÚint)ÚchunkÚsizeÚoutÚpow2ÚflagsÚiÚ	out_startÚflagÚposÚl_maskÚo_shiftr   ÚoffsetÚtmp© r!   ú”/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/aiosmb/protocol/compression/lznt1.pyÚ_decompress_chunk    s@   ý,ÿår#   Tc                 C   s˜   t ƒ }| rJt dt| d d… ƒ¡d }|d@ d }|r)|t| dd … ƒkr)tdƒ‚| dd| … }|d@ r<|t|ƒ7 }n||7 }| d| d … } | s|S )Nr   r	   r   r
   r   zinvalid chunk lengthi €  )r   r   r   Úbytesr   Ú
ValueErrorr#   )ÚbufÚlength_checkr   Úheaderr   r   r!   r!   r"   Ú
decompressC   s   õr)   c                 C   sÐ   d}d}t d|ƒD ]T}|  |d |… ¡}|dkr nDt| ƒ| }|}||krU| |d … tdt| |d … ƒ d ƒ }	t ||d ƒD ]}
|	 |d |
… ¡}|dkrR n|
}qA||kr]|}|}q	|dk rddS ||fS )Nr   r   éÿÿÿÿr
   r   )r   r   )r   Úrfindr   r   )ÚsrcÚtargetÚmax_lenÚresult_offsetÚresult_lengthr   r   Ú
tmp_offsetÚ
tmp_lengthr    Újr!   r!   r"   Ú_findS   s,   (€r4   c                 C   s¢  t   | ¡}d}d}d}d}t|ƒdkrÏd}d}tdƒD ]�}|dL }|t| ƒt|ƒ k rC|dK }|d? d }|d8 }|t| ƒt|ƒ k s+t|ƒ|k rNt|ƒ}	n|}	t| d t| ƒt|ƒ … ||	ƒ\}
}t| d t| ƒt|ƒ d … |dd … |	ƒ\}}||k r€d}|dkr¡|
d |> |d B }|t d	|¡7 }|d
O }||d … }n|t|d gƒ7 }|dd … }t|ƒdkr¸ nq|t d|d| ? ¡7 }||7 }t|ƒdks|S )Nó    r   i  r   r   r   r   r   r   é€   ÚBé   )Úcopyr   r   r4   r   Úpackr$   )r   Úblobr   r   Úl_mask3r   Úbitsr    r   r.   r   r   Úoffset2Úlength2Úsymbolr!   r!   r"   Ú_compress_chunkk   sH   
ý
$0ÿß#rA   é   c                 C   s’   d}| rG| d |… }t |ƒ}t|ƒt|ƒk r+d}t d|t|ƒd B ¡}||| 7 }nd}t d|t|ƒd B ¡}||| 7 }| |d … } | s|S )Nr5   i °  r   r   i 0  )rA   r   r   r:   )r&   Ú
chunk_sizer   r   Ú
compressedr   r(   r!   r!   r"   Úcompress–   s   õrE   )T)rB   )r   Úsysr9   r#   r)   r4   rA   rE   r!   r!   r!   r"   Ú<module>   s   
#+