
    Ngb              	      (   d Z ddlmZ ddlZddlmZ ddlmZ ddlm	Z	m
Z
  e e edd                     e edd	                    z   g d
z   g dz    e edd                    z    e edd                    z             Zd.dZd/d0dZd/d1dZ G d d ej                  Z G d! d"eej                  Z G d# d$eej                  Z G d% d&ej                  Z G d' d(ej                  Zd2d+Z ej        e           d,d-gZdS )3zImplement pdfdoc codec.    )annotationsN)	Container)Any)pdf_doc_to_utf8utf8_to_pdf_doc          ) i"   i    i!   i&   i   i   i  iD   i9   i:   i"  i0   i   i   i   i   i   i   i"!  i  i  iA  iR  i`  ix  i}  i1  iB  iS  ia  i~  i   )i  i  i  i  i  i  i  i              sstrordinalsContainer[int]returnintc                t    t          |           D ]\  }}t          |          |vr|c S t          d          )Nz'couldn't find the unencodable character)	enumerateord
ValueError)r   r   nchars       I/var/www/html/ai-engine/env/lib/python3.11/site-packages/pikepdf/codec.py_find_first_indexr   A   sI    Q<<  4t99H$$HHH %
>
?
??    strictinputerrorstuple[bytes, int]c                   |dk    rdnd}t          | |          \  }}|r|t          |           fS |dk    r'|                    dd          }|t          |           fS |dk    r|t          |           fS |dk    rh|                     d          s|                     d          rt	          d	| d
dd          t          | t                    }t	          d	| ||dz   d          t          |          )z0Convert input string to bytes in PdfDocEncoding.replace   ?   ignorer   r   u   þÿu   ÿþpdfdocr      zCstrings beginning with byte order marks cannot be encoded in pdfdoc   z2character cannot be represented in pdfdoc encoding)r   lenr#   
startswithUnicodeEncodeErrorr   PDFDOC_ENCODABLELookupError)r   r    error_markersuccessr'   offending_indexs         r   pdfdoc_encoder2   H   s+   !Y..44GL%e\::OGV "s5zz!!--s5zz!!s5zz!!J'' 	5+;+;J+G+G 	$U   ,E3CDD a@
 
 	
 f

r   bytestuple[str, int]c                   t          | t                    r|                                 } t          |           }|dk    r1|                    d          }|dk    rt          d| ||dz   d          |t          |           fS )z/Convert PdfDoc-encoded input into a Python str.r   u   �r   r'   r)   z0no Unicode mapping is defined for this character)
isinstance
memoryviewtobytesr   findUnicodeDecodeErrorr*   )r   r    r   idxs       r   pdfdoc_decoder<   l   s    %$$  AffX!88$aB   c%jj=r   c                  &    e Zd ZdZdddZdddZdS )PdfDocCodecz8Implement PdfDocEncoding character map used inside PDFs.r   r   r   r    r   r!   c                "    t          ||          S )z)Implement codecs.Codec.encode for pdfdoc.r2   selfr   r    s      r   encodezPdfDocCodec.encode       UF+++r   r3   r4   c                "    t          ||          S )z)Implement codecs.Codec.decode for pdfdoc.)r<   rA   s      r   decodezPdfDocCodec.decode   rD   r   Nr   r   r   r    r   r   r!   r   r3   r    r   r   r4   )__name__
__module____qualname____doc__rC   rF    r   r   r>   r>      sL        BB, , , , ,, , , , , , ,r   r>   c                      e Zd ZdZdS )PdfDocStreamWriterz'Implement PdfDocEncoding stream writer.N)rJ   rK   rL   rM   rN   r   r   rP   rP      s        1111r   rP   c                      e Zd ZdZddd	Zd
S )PdfDocStreamReaderz'Implement PdfDocEncoding stream reader.r   r   r3   r    r   r   r4   c                :    t                               | ||          S )z0Implement codecs.StreamReader.decode for pdfdoc.)r>   rF   rA   s      r   rF   zPdfDocStreamReader.decode   s    !!$v666r   NrG   rI   rJ   rK   rL   rM   rF   rN   r   r   rR   rR      s3        117 7 7 7 7 7 7r   rR   c                      e Zd ZdZddd	Zd
S )PdfDocIncrementalEncoderz-Implement PdfDocEncoding incremental encoder.Fr   r   finalboolr   r3   c                .    t          |d          d         S )z6Implement codecs.IncrementalEncoder.encode for pdfdoc.r   r   r@   rB   r   rW   s      r   rC   zPdfDocIncrementalEncoder.encode   s    UH--a00r   NF)r   r   rW   rX   r   r3   )rJ   rK   rL   rM   rC   rN   r   r   rV   rV      s3        771 1 1 1 1 1 1r   rV   c                      e Zd ZdZddd	Zd
S )PdfDocIncrementalDecoderz-Implement PdfDocEncoding incremental decoder.Fr   r   rW   rX   r   r   c                H    t          t          |          d          d         S )z6Implement codecs.IncrementalDecoder.decode for pdfdoc.r   r   )r<   r3   rZ   s      r   rF   zPdfDocIncrementalDecoder.decode   s    U5\\844Q77r   Nr[   )r   r   rW   rX   r   r   rT   rN   r   r   r]   r]      s3        778 8 8 8 8 8 8r   r]   encodingcodecs.CodecInfo | Nonec           	         | dv rGt                      }t          j        | |j        |j        t
          t          t          t                    S dS )a  Register pdfdoc codec with Python.

    Both pdfdoc and pdfdoc_pikepdf are registered. Use "pdfdoc_pikepdf" if pikepdf's
    codec is required. If another third party package installs a codec named pdfdoc,
    the first imported by Python will be registered and will service all encoding.
    Unfortunately, Python's codec infrastructure does not give a better mechanism
    for resolving conflicts.
    )r'   pdfdoc_pikepdf)namerC   rF   streamwriterstreamreaderincrementalencoderincrementaldecoderN)	r>   codecs	CodecInforC   rF   rP   rR   rV   r]   )r_   codecs     r   find_pdfdocrk      sS     ///<<++77
 
 
 	
 4r   r   r   )r   r   r   r   r   r   rG   rH   rI   )r_   r   r   r`   )rM   
__future__r   rh   collections.abcr   typingr   pikepdf._corer   r   	frozensetlistranger-   r   r2   r<   Codecr>   StreamWriterrP   StreamReaderrR   IncrementalEncoderrV   IncrementalDecoderr]   rk   register__all__rN   r   r   <module>rz      s     " " " " " "  % % % % % %       : : : : : : : : 9DtX		
d55x  !!"! ! !#H GFFI$GJ d55x  !!K%"L d55x  !!M&"( ( V@ @ @ @! ! ! ! !H    &	, 	, 	, 	, 	,&, 	, 	, 	,2 2 2 2 2f&9 2 2 27 7 7 7 7f&9 7 7 71 1 1 1 1v8 1 1 18 8 8 8 8v8 8 8 8   .    /
0r   