o
    fi                     @   sn   d dl Z d dlmZ d dlmZmZmZmZmZ e 	e
ZG dd deZG dd dZded	efd
dZdS )    N)BytesIO)BinaryIOIteratorListOptionalcastc                   @   s   e Zd ZdS )CorruptDataErrorN)__name__
__module____qualname__ r   r   E/home/ubuntu/webapp/venv/lib/python3.10/site-packages/pdfminer/lzw.pyr      s    r   c                   @   sT   e Zd ZdeddfddZdedefddZd	edefd
dZde	e fddZ
dS )
LZWDecoderfpreturnNc                 C   s(   || _ d| _d| _d| _g | _d | _d S )Nr      	   )r   buffbposnbitstableprevbuf)selfr   r   r   r   __init__   s   
zLZWDecoder.__init__bitsc                 C   s   d}	 d| j  }||kr'||> | j|| ? d|> d @ B }|  j |7  _ 	 |S ||> | jd|> d @ B }||8 }| jd}|sBtt|| _d| _ q)Nr      r   )r   r   r   readEOFErrorord)r   r   vrxr   r   r   readbits   s    
"
zLZWDecoder.readbitscodec                 C   s2  d}|dkr$dd t dD | _| jd  | jd  d| _d| _|S |dkr+	 |S | js;tt| j|  }| _|S |t| jk rXtt| j| }| j| j|d d   n |t| jkrv| j| j| jd d   tt| j| }ntt| j}|dkrd	| _n|d
krd| _n|dkrd| _|| _|S )N       c                 S   s   g | ]}t |fqS r   )bytes).0cr   r   r   
<listcomp>2   s    z#LZWDecoder.feed.<locals>.<listcomp>r   i  r   i  
   i     i     )	ranger   appendr   r   r   r&   lenr   )r   r#   r!   table_lengthr   r   r   feed/   s<   
zLZWDecoder.feedc              	   c   st    	 z|  | j}W n
 ty   Y d S w z| |}W n
 ty&   Y d S w |V  td| j||| jdd   q)Nr   z&nbits=%d, code=%d, output=%r, table=%ri  )r"   r   r   r1   r   loggerdebugr   )r   r#   r!   r   r   r   runN   s*   zLZWDecoder.run)r	   r
   r   r   r   intr"   r&   r1   r   r4   r   r   r   r   r      s
    	r   datar   c                 C   s   t | }t| }d|S )Nr$   )r   r   r4   join)r6   r   sr   r   r   	lzwdecoded   s   
r9   )loggingior   typingr   r   r   r   r   	getLoggerr	   r2   	Exceptionr   r   r&   r9   r   r   r   r   <module>   s    
X