a
    còfE  ã                	   @   s.  d dl Z d dlmZmZmZmZ ddlmZ ddlm	Z	m
Z
mZmZ ddlmZmZ ddlmZmZ eeeeef d	œd
d„Zde	edeee eeef f ed dœdd„Zde	edeee eeef f ed dœdd„Zdeeef edeee eeef f eeef dœdd„Zeedœdd„ZdS )é    N)ÚDictÚListÚTupleÚUnioné   )Ú_pdfdoc_encoding)Ú
StreamTypeÚb_Úlogger_warningÚread_non_whitespace)ÚSTREAM_TRUNCATED_PREMATURELYÚPdfStreamErroré   )ÚByteStringObjectÚTextStringObject)ÚvalueÚreturnc                    s   t ‡ fdd„dD ƒƒS )Nc                 3   s.   | ]&}t ˆ  d ¡||d … dƒd V  qdS )ú#r   é   g     ào@N)ÚintÚlstrip)Ú.0Úi©r   © úQ/home/httpd/docs/test/DocsMgr/lib/python3.9/site-packages/pypdf/generic/_utils.pyÚ	<genexpr>   ó    zhex_to_rgb.<locals>.<genexpr>)r   r   é   )Útupler   r   r   r   Ú
hex_to_rgb
   s    r    )r   r   )ÚstreamÚforced_encodingr   c                 C   s    |   d¡ d}d}t| ƒ}|s&ttƒ‚|dkr0q^||7 }t|ƒdkr|tt|dd�ƒ7 }d}qt|ƒdkrr|d7 }t|ƒdkr’|tt|dd�ƒ7 }tt|ƒ|ƒS )	Nr   Ú r   ó   >r   r   ©Úbaseó   0)	Úreadr   r   r   ÚlenÚchrr   Úcreate_string_objectr	   )r!   r"   ÚtxtÚxÚtokr   r   r   Úread_hex_string_from_stream   s"    
r/   c           	      C   s¨  |   d¡}d}g }|   d¡}|s(ttƒ‚|dkr<|d7 }�nP|dkr\|d8 }|dkrX�q˜�n0|dk�rŒ|   d¡}dddd	d
ddddddddddddddddœ}z|| }W nà t�yŠ   d|  krÐdk�r:n nftdƒD ]F}|   d¡}d|  k�rdk�rn n
||7 }qÜ|  dd¡  �q$qÜttt|dd�ƒƒ}nL|dv �rj|   d¡}|dv�rd|  dd¡ d}nd | 	d!d"¡› �}t
|tƒ Y n0 | |¡ qtd |¡|ƒS )#Nr   ó   (ó   )r   ó   \ó   
ó   ó   	ó   ó   s   \có   /ó    ó   %ó   <r$   ó   [ó   ]ó   #ó   _ó   &ó   $)ó   nó   ró   tó   bó   fó   cr0   r1   r8   r2   r9   r:   r;   r$   r<   r=   r>   r?   r@   rA   r'   ó   7r   éÿÿÿÿé   r%   s   
r   zUnexpected escaped string: zutf-8Úignore)r(   r   r   ÚKeyErrorÚrangeÚseekr	   r*   r   Údecoder
   Ú__name__Úappendr+   Újoin)	r!   r"   r.   Úparensr,   Zescape_dictÚ_ZntokÚmsgr   r   r   Úread_string_from_stream&   sn    



ì




rV   )Ústringr"   r   c              	   C   s$  t | tƒrt| ƒS t | tƒ�rt |ttfƒrzd}| D ]<}z||| 7 }W q4 tyn   |t|fƒ d¡7 }Y q40 q4t|ƒS t |tƒr¢|dkr”t| ƒS t|  |¡ƒS zV|  	t
jt
jf¡rÞt|  d¡ƒ}d|_| dd… |_|W S tt| ƒƒ}d|_|W S W n t�y   t| ƒ Y S 0 ntdƒ‚dS )	a>  
    Create a ByteStringObject or a TextStringObject from a string to represent the string.

    Args:
        string: The data being used
        forced_encoding: Typically None, or an encoding string

    Returns:
        A ByteStringObject

    Raises:
        TypeError: If string is not of type str or bytes.
    r#   ÚcharmapÚbyteszutf-16TNr   z3create_string_object should have str or unicode arg)Ú
isinstanceÚstrr   rY   ÚlistÚdictÚ	ExceptionrO   r   Ú
startswithÚcodecsÚBOM_UTF16_BEÚBOM_UTF16_LEZautodetect_utf16Z	utf16_bomÚdecode_pdfdocencodingZautodetect_pdfdocencodingÚUnicodeDecodeErrorÚ	TypeError)rW   r"   Úoutr-   Úretvalr   r   r   r+   q   s6    


r+   )Ú
byte_arrayr   c                 C   s>   d}| D ]0}t | }|dkr0tdt|ƒdddƒ‚||7 }q|S )Nr#   ú ZpdfdocencodingrI   z#does not exist in translation table)r   rd   Ú	bytearray)rh   rg   ÚbÚcr   r   r   rc   §   s    û
rc   )N)N)N)r`   Útypingr   r   r   r   Ú_codecsr   Ú_utilsr   r	   r
   r   Úerrorsr   r   Ú_baser   r   r[   Úfloatr    r   r/   rV   rY   r+   rc   r   r   r   r   Ú<module>   s2    þý þýM þ

ý6