o
    pTh                     @   sD  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 d	ed
eeeef fddZ	dde	dedeee eeef f d
ed fddZ	dde	dedeee eeef f d
ed fddZ	ddeeef dedeee eeef f d
eeef fddZded
ef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   s0    | ]}t  d ||d  dd V  qdS )#r      g     o@N)intlstrip).0ir    V/home/air/segue/gemini/back/venv/lib/python3.10/site-packages/PyPDF2/generic/_utils.py	<genexpr>   s   . zhex_to_rgb.<locals>.<genexpr>)r   r      )tupler   r   r   r   
hex_to_rgb
   s   r   streamforced_encoding)r   r   c                 C   s   |  d d}d}	 t| }|stt|dkrn||7 }t|dkr/|tt|dd7 }d}q
t|dkr:|d	7 }t|dkrJ|tt|dd7 }tt||S )
Nr        T   >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 }n|dkr,|d8 }|dkr+nn|dkr|  d}i ddd	d
dddddddddddd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rtd!D ]}|  d}d|kr|d kr||7 }q| d"d  ttt|d#d$}n#|d%v r|  d}|d%vr| d"d d&}nd'|	d( }t
|t Y nw || q
td&||S ))Nr   T   (   )r      \   n   
   r      t   	   b      f      cs   \c   /       %   <r$      [   ]   #   _   &   $)rE   rF   rG   r'      7r      r%   s   
r#   zUnexpected escaped string: utf8)r(   r   r   KeyErrorrangeseekr	   r*   r   decoder
   __name__appendr+   join)	r    r!   r.   parensr,   escape_dict_ntokmsgr   r   r   read_string_from_stream&   s   



	





ArX   stringc              	   C   s   t | tr	t| S t | tr|t |ttfr;d}| D ]}z||| 7 }W q ty6   |t|fd7 }Y qw t|S t |trO|dkrHt| S t| |S z| 	t
jrct| d}d|_|W S tt| }d|_|W S  ty{   t|  Y S w td)z
    Create a ByteStringObject or a TextStringObject from a string to represent the string.

    :param Union[str, bytes] string: A string

    :raises TypeError: If string is not of type str or bytes.
    r"   charmapbyteszutf-16Tz3create_string_object should have str or unicode arg)
isinstancestrr   r[   listdict	ExceptionrO   r   
startswithcodecsBOM_UTF16_BEautodetect_utf16decode_pdfdocencodingautodetect_pdfdocencodingUnicodeDecodeError	TypeError)rY   r!   outr-   retvalr   r   r   r+   q   s8   


r+   
byte_arrayc                 C   s>   d}| D ]}t | }|dkrtdt|ddd||7 }q|S )Nr"    pdfdocencodingrI   z#does not exist in translation table)r   rg   	bytearray)rk   rj   bcr   r   r   re      s   
re   )N)rb   typingr   r   r   r   _codecsr   _utilsr   r	   r
   r   errorsr   r   _baser   r   r]   floatr   r   r/   rX   r[   r+   re   r   r   r   r   <module>   s@    

M


.