a
    ¢…¢f²]  ã                   @   sd  d dl Z d dlZd dlZd dlZd dlmZ d dlmZmZm	Z	m
Z
mZmZmZ ddlmZ ddlmZmZ ddlmZmZmZmZmZmZmZmZmZ ddlmZmZm Z  d	Z!d
Z"G dd„ deƒZ#G dd„ de#ƒZ$G dd„ de#ƒZ%G dd„ de#ƒZ&G dd„ dej'e#ƒZ(G dd„ de)e#ƒZ*G dd„ de+e#ƒZ,G dd„ de-e#ƒZ.G dd„ de-e#ƒZ/e-e+dœdd„Z0dS ) é    N)Ú	unhexlify)ÚAnyÚCallableÚListÚOptionalÚTupleÚUnionÚcasté   )Ú_pdfdoc_encoding_rev)ÚPdfObjectProtocolÚPdfWriterProtocol)	Ú
StreamTypeÚb_Údeprecation_with_replacementÚhex_strÚ	hexencodeÚlogger_warningÚread_non_whitespaceÚread_until_regexÚstr_)ÚSTREAM_TRUNCATED_PREMATURELYÚPdfReadErrorÚPdfStreamErrorzMathieu Fenniakzbiziqe@mathieu.fenniak.netc                   @   sÆ   e Zd ZU ejZed ed< ed ed< e	dœdd„Z
e	dœdd	„Zdeeeeedf ee df d dœdd„Zeeedœdd„Zed  dœdd„Zed  dœdd„Zeedee	f ddœdd„ZdS )Ú	PdfObject).zhashlib._HashÚ	hash_funcÚIndirectObjectÚindirect_reference©Úreturnc                 C   s   d|    ¡ S )Nz%s)Úencode©Úself© r#   úM/var/www/sistema_ama/venv/lib/python3.9/site-packages/PyPDF2/generic/_base.pyÚhash_value_data;   s    zPdfObject.hash_value_datac                 C   s"   d| j j|  |  ¡ ¡ ¡ f  ¡ S )Nz%s:%s)Ú	__class__Ú__name__r   r%   Ú	hexdigestr    r!   r#   r#   r$   Ú
hash_value>   s    þÿÿzPdfObject.hash_valueFr#   .N©Úpdf_destÚforce_duplicateÚignore_fieldsr   c                 C   s   t dƒ‚dS )a  
        clone object into pdf_dest (PdfWriterProtocol which is an interface for PdfWriter)
        force_duplicate: in standard if the object has been already cloned and reference,
                         the copy is returned; when force_duplicate == True, a new copy is always performed
        ignore_fields : list/tuple of Fields names (for dictionaries that will be ignored during cloning (apply also to childs duplication)
        in standard, clone function call _reference_clone (see _reference)
        zclone PdfObjectN)Ú	Exception©r"   r+   r,   r-   r#   r#   r$   ÚcloneG   s    zPdfObject.clone)r0   r+   r   c                 C   sæ   z|j j|kr|W S W n ty(   Y n0 t| dƒrâ| j }t|jƒd }|durÈt|jƒ|jvrpi |jt|jƒ< |j|jt|jƒ v r²| 	|jt|jƒ |j ¡}|dus®J ‚|S ||jt|jƒ |j< |j 
|¡ t|d|ƒ|_ |S )zü
        reference the object within the _objects of pdf_dest only if
        indirect_reference attribute exists (which means the objects
        was already identified in xref/xobjstm)
        if object has been already referenced do nothing
        r   é   Nr   )r   Úpdfr.   ÚhasattrÚlenÚ_objectsÚidÚ_id_translatedÚidnumÚ
get_objectÚappendr   )r"   r0   r+   ÚindÚiÚobjr#   r#   r$   Ú_reference_cloneV   s*    	

ÿzPdfObject._reference_clonec                 C   s   | S )zResolve indirect references.r#   r!   r#   r#   r$   r9   u   s    zPdfObject.get_objectc                 C   s   t dddƒ |  ¡ S )NÚ	getObjectr9   ú3.0.0)r   r9   r!   r#   r#   r$   r?   y   s    zPdfObject.getObject©ÚstreamÚencryption_keyr   c                 C   s   t ‚d S ©N)ÚNotImplementedError©r"   rB   rC   r#   r#   r$   Úwrite_to_stream}   s    zPdfObject.write_to_stream)Fr#   )r'   Ú
__module__Ú__qualname__ÚhashlibÚsha1r   r   Ú__annotations__r   Úbytesr%   r)   r   Úboolr   r   Ústrr   r0   r   r   r>   r9   r?   r   rG   r#   r#   r#   r$   r   6   s(   
  üûþþr   c                   @   s¦   e Zd Zdeeeeedf ee df d dœdd„Z	e
edeef ddœd	d
„Zee
d dœdd„ƒZe
edeef ddœdd„Zedœdd„Zee
d dœdd„ƒZdS )Ú
NullObjectFr#   .Nr*   c                 C   s   t d|  tƒ |¡ƒS )úclone object into pdf_destrP   )r	   r>   rP   r/   r#   r#   r$   r0   „   s    zNullObject.clonerA   c                 C   s   |  d¡ d S )Nó   null)ÚwriterF   r#   r#   r$   rG   �   s    zNullObject.write_to_stream©rB   r   c                 C   s    |   d¡}|dkrtdƒ‚tƒ S )Né   rR   zCould not read Null object)Úreadr   rP   )rB   Znulltxtr#   r#   r$   Úread_from_stream’   s    
zNullObject.read_from_streamc                 C   s   t dddƒ |  ||¡ d S ©NÚwriteToStreamrG   r@   ©r   rG   rF   r#   r#   r$   rY   ™   s    zNullObject.writeToStreamr   c                 C   s   dS )NrP   r#   r!   r#   r#   r$   Ú__repr__Ÿ   s    zNullObject.__repr__c                 C   s   t dddƒ t | ¡S ©NÚreadFromStreamrW   r@   )r   rP   rW   ©rB   r#   r#   r$   r]   ¢   s    zNullObject.readFromStream)Fr#   )r'   rH   rI   r   rN   r   r   rO   r   r0   r   rM   rG   ÚstaticmethodrW   rY   r[   r]   r#   r#   r#   r$   rP   ƒ   s&     üû
þþrP   c                   @   sÆ   e Zd Zeddœdd„Zdeeeee	df e
e	 df d dœd	d
„Zeedœdd„Ze	dœdd„Zeede	ef ddœdd„Zeede	ef ddœdd„Zeed dœdd„ƒZeed dœdd„ƒZdS )ÚBooleanObjectN©Úvaluer   c                 C   s
   || _ d S rD   ©rb   )r"   rb   r#   r#   r$   Ú__init__©   s    zBooleanObject.__init__Fr#   .r*   c                 C   s   t d|  t| jƒ|¡ƒS )rQ   r`   )r	   r>   r`   rb   r/   r#   r#   r$   r0   ¬   s    ÿzBooleanObject.clone)Ú_BooleanObject__or   c                 C   s2   t |tƒr| j|jkS t |tƒr*| j|kS dS d S )NF)Ú
isinstancer`   rb   rN   )r"   re   r#   r#   r$   Ú__eq__·   s
    


zBooleanObject.__eq__r   c                 C   s   | j r
dS dS )NÚTrueÚFalserc   r!   r#   r#   r$   r[   ¿   s    zBooleanObject.__repr__rA   c                 C   s    | j r| d¡ n
| d¡ d S )Nó   trues   false)rb   rS   rF   r#   r#   r$   rG   Â   s    zBooleanObject.write_to_streamc                 C   s   t dddƒ |  ||¡ d S rX   rZ   rF   r#   r#   r$   rY   Ê   s    zBooleanObject.writeToStreamrT   c                 C   s@   |   d¡}|dkrtdƒS |dkr4|   d¡ tdƒS tdƒ‚d S )NrU   rj   Ts   falsr1   FzCould not read Boolean object)rV   r`   r   )rB   Úwordr#   r#   r$   rW   Ð   s    

zBooleanObject.read_from_streamc                 C   s   t dddƒ t | ¡S r\   )r   r`   rW   r^   r#   r#   r$   r]   Û   s    zBooleanObject.readFromStream)Fr#   )r'   rH   rI   r   rd   r   rN   r   r   rO   r   r0   Úobjectrg   r[   r   rM   rG   rY   r_   rW   r]   r#   r#   r#   r$   r`   ¨   s*     üûþ	þ
r`   c                   @   s  e Zd Zeeeddœdd„Zd"eeee	e
df ee
 df d dœd	d
„Zed dœdd„ƒZed dœdd„Ze
dœdd„Zeedœdd„Zeedœdd„Zeede
ef ddœdd„Zeede
ef ddœdd„Zeeed dœdd„ƒZeeed dœd d!„ƒZdS )#r   N)r8   Ú
generationr2   r   c                 C   s   || _ || _|| _d S rD   )r8   rm   r2   )r"   r8   rm   r2   r#   r#   r$   rd   â   s    zIndirectObject.__init__Fr#   .r*   c                 C   s¬   | j |kr|s| S t| j ƒ|jvr2i |jt| j ƒ< |sj| j|jt| j ƒ v rj| |jt| j ƒ | j ¡}n"|  ¡ }|dus~J ‚| |||¡}|dus˜J ‚|jdus¦J ‚|jS )rQ   N)r2   r6   r7   r8   r9   r0   r   )r"   r+   r,   r-   Údupr=   r#   r#   r$   r0   ç   s    zIndirectObject.cloner   c                 C   s   | S rD   r#   r!   r#   r#   r$   r   þ   s    z!IndirectObject.indirect_referencer   c                 C   s    | j  | ¡}|d u rd S | ¡ S rD   )r2   r9   )r"   r=   r#   r#   r$   r9     s    zIndirectObject.get_objectc                 C   s"   d| j ›d| j›dt| jƒ› d�S )NzIndirectObject(z, ú))r8   rm   r6   r2   r!   r#   r#   r$   r[     s    zIndirectObject.__repr__)Úotherr   c                 C   s6   |d uo4t |tƒo4| j|jko4| j|jko4| j|ju S rD   )rf   r   r8   rm   r2   ©r"   rp   r#   r#   r$   rg     s    ÿ
þ
ý
ûzIndirectObject.__eq__c                 C   s   |   |¡ S rD   )rg   rq   r#   r#   r$   Ú__ne__  s    zIndirectObject.__ne__rA   c                 C   s"   |  t| j› d| j› d�ƒ¡ d S )Nú z R)rS   r   r8   rm   rF   r#   r#   r$   rG     s    zIndirectObject.write_to_streamc                 C   s   t dddƒ |  ||¡ d S rX   rZ   rF   r#   r#   r$   rY     s    zIndirectObject.writeToStream©rB   r2   r   c                 C   sœ   d}|   d¡}|sttƒ‚| ¡ r$q.||7 }qd}|   d¡}|sHttƒ‚| ¡ rX|sbq2qb||7 }q2t| ƒ}|dkrˆtdt|  ¡ ƒ› �ƒ‚tt	|ƒt	|ƒ|ƒS )Nó    r1   ó   Rz0Error reading indirect object reference at byte )
rV   r   r   Úisspacer   r   r   Útellr   Úint)rB   r2   r8   Útokrm   Úrr#   r#   r$   rW   "  s,    



ÿzIndirectObject.read_from_streamc                 C   s   t dddƒ t | |¡S r\   )r   r   rW   ©rB   r2   r#   r#   r$   r]   =  s    zIndirectObject.readFromStream)Fr#   )r'   rH   rI   ry   r   rd   r   rN   r   r   rO   r   r0   Úpropertyr   r   r9   r[   rg   rr   r   rM   rG   rY   r_   rW   r]   r#   r#   r#   r$   r   á   s6     üû	þþþr   c                   @   s¬   e Zd Zdeeef ee d dœdd„Zdeeee	edf e
e df d d	œd
d„Zedœdd„Zedœdd„Zeedeef ddœdd„Zeedeef ddœdd„ZdS )ÚFloatObjectÚ0N)rb   Úcontextr   c                 C   sN   zt j | t|ƒ|¡W S  tyH   td|› d�tƒ t j | d¡ Y S 0 d S )NzFloatObject (z) invalid; use 0.0 insteadz0.0)ÚdecimalÚDecimalÚ__new__r   r.   r   r'   )Úclsrb   r€   r#   r#   r$   rƒ   F  s
    zFloatObject.__new__Fr#   .r*   c                 C   s   t d|  t| ƒ|¡ƒS )rQ   r~   )r	   r>   r~   r/   r#   r#   r$   r0   Q  s    zFloatObject.cloner   c                 C   s2   | |   ¡ kr t|  t d¡¡ƒS | d› d¡S d S )Nr1   Úfr   )Úto_integralrO   Úquantizer�   r‚   Úrstripr!   r#   r#   r$   r[   Z  s    zFloatObject.__repr__c                 C   s   t t| ƒ d¡ƒS ©NÚutf8)ÚfloatÚreprr    r!   r#   r#   r$   Ú
as_numericc  s    zFloatObject.as_numericrA   c                 C   s   |  t| ƒ d¡¡ d S r‰   ©rS   rŒ   r    rF   r#   r#   r$   rG   f  s    zFloatObject.write_to_streamc                 C   s   t dddƒ |  ||¡ d S rX   rZ   rF   r#   r#   r$   rY   k  s    zFloatObject.writeToStream)r   N)Fr#   )r'   rH   rI   r   rO   r   r   rƒ   rN   r   r   r0   r[   r‹   r�   r   rM   rG   rY   r#   r#   r#   r$   r~   E  s*    ÿþ  üû		þþr~   c                   @   sÈ   e Zd Ze d¡Zed dœdd„Zdeee	e
edf ee df d d	œd
d„Zedœdd„Zee	deef ddœdd„Zee	deef ddœdd„Zeee	d dœdd„ƒZeee	d dœdd„ƒZdS )ÚNumberObjects	   [^+-.0-9]ra   c                 C   sH   zt  | t |ƒ¡W S  tyB   td|› d�tƒ t  | d¡ Y S 0 d S )NzNumberObject(z) invalid; use 0 insteadr   )ry   rƒ   Ú
ValueErrorr   r'   )r„   rb   r#   r#   r$   rƒ   u  s
    zNumberObject.__new__Fr#   .Nr*   c                 C   s   t d|  t| ƒ|¡ƒS )rQ   r�   )r	   r>   r�   r/   r#   r#   r$   r0   |  s    zNumberObject.cloner   c                 C   s   t t| ƒ d¡ƒS r‰   )ry   rŒ   r    r!   r#   r#   r$   r�   …  s    zNumberObject.as_numericrA   c                 C   s   |  t| ƒ d¡¡ d S r‰   rŽ   rF   r#   r#   r$   rG   ˆ  s    zNumberObject.write_to_streamc                 C   s   t dddƒ |  ||¡ d S rX   rZ   rF   r#   r#   r$   rY   �  s    zNumberObject.writeToStream)r�   r~   rT   c                 C   s*   t | tjƒ}| d¡dkr"t|ƒS t|ƒS )Nó   .éÿÿÿÿ)r   r�   ÚNumberPatternÚfindr~   )rB   Únumr#   r#   r$   rW   “  s    zNumberObject.read_from_streamc                 C   s   t dddƒ t | ¡S r\   )r   r�   rW   r^   r#   r#   r$   r]   š  s    zNumberObject.readFromStream)Fr#   )r'   rH   rI   ÚreÚcompiler“   r   rƒ   rN   r   r   rO   r   r0   ry   r�   r   rM   rG   rY   r_   rW   r]   r#   r#   r#   r$   r�   r  s.   

  üû	þþþr�   c                   @   s†   e Zd ZdZdeeeeedf e	e df d dœdd„Z
eed	œd
d„ƒZeedeef ddœdd„Zeedeef ddœdd„ZdS )ÚByteStringObjecta=  
    Represents a string object where the text encoding could not be determined.
    This occurs quite often, as the PDF spec doesn't provide an alternate way to
    represent strings -- for example, the encryption data stored in files (like
    /O) is clearly not text, but is still stored in a "String" object.
    Fr#   .Nr*   c                 C   s   t d|  tt| ƒƒ|¡ƒS )rQ   r˜   )r	   r>   r˜   rM   r/   r#   r#   r$   r0   ª  s    þzByteStringObject.cloner   c                 C   s   | S )z7For compatibility with TextStringObject.original_bytes.r#   r!   r#   r#   r$   Úoriginal_bytes¶  s    zByteStringObject.original_bytesrA   c                 C   sD   | }|rddl m} |||ƒ}| d¡ | t|ƒ¡ | d¡ d S )Nr
   ©ÚRC4_encryptó   <ó   >)Ú	_securityr›   rS   r   )r"   rB   rC   Úbytearrr›   r#   r#   r$   rG   »  s    

z ByteStringObject.write_to_streamc                 C   s   t dddƒ |  ||¡ d S rX   rZ   rF   r#   r#   r$   rY   Ç  s    zByteStringObject.writeToStream)Fr#   )r'   rH   rI   Ú__doc__r   rN   r   r   rO   r   r0   r}   rM   r™   r   rG   rY   r#   r#   r#   r$   r˜   ¢  s"   
  üûþþr˜   c                   @   sœ   e Zd ZdZdeeeeedf e	e df d dœdd„Z
dZdZeed	œd
d„ƒZed	œdd„Zeedeef ddœdd„Zeedeef ddœdd„ZdS )ÚTextStringObjectzõ
    Represents a string object that has been decoded into a real unicode string.
    If read from a PDF document, this string appeared to match the
    PDFDocEncoding, or contained a UTF-16BE BOM mark to cause UTF-16 decoding to
    occur.
    Fr#   .Nr*   c                 C   s*   t | ƒ}| j|_| j|_td|  ||¡ƒS )rQ   r¡   )r¡   Úautodetect_pdfdocencodingÚautodetect_utf16r	   r>   )r"   r+   r,   r-   r=   r#   r#   r$   r0   Ö  s    zTextStringObject.cloner   c                 C   s   |   ¡ S )a-  
        It is occasionally possible that a text string object gets created where
        a byte string object was expected due to the autodetection mechanism --
        if that occurs, this "original_bytes" property can be used to
        back-calculate what the original encoded bytes were.
        )Úget_original_bytesr!   r#   r#   r$   r™   å  s    zTextStringObject.original_bytesc                 C   s0   | j rtj|  d¡ S | jr$t| ƒS tdƒ‚d S )Núutf-16bez#no information about original bytes)r£   ÚcodecsÚBOM_UTF16_BEr    r¢   Úencode_pdfdocencodingr.   r!   r#   r#   r$   r¤   ï  s
    z#TextStringObject.get_original_bytesrA   c                 C   s¼   zt | ƒ}W n" ty.   tj|  d¡ }Y n0 |r`ddlm} |||ƒ}t|ƒ}| |d ¡ nX| 	d¡ |D ]>}t
|ƒ ¡ sš|dkrš| 	td| ƒ¡ qn| 	tt
|ƒƒ¡ qn| 	d¡ d S )Nr¥   r
   rš   ó   (ó    z\%03oó   ))r¨   ÚUnicodeEncodeErrorr¦   r§   r    rž   r›   r˜   rG   rS   ÚchrÚisalnumr   )r"   rB   rC   rŸ   r›   r=   Úcr#   r#   r$   rG   ü  s    

z TextStringObject.write_to_streamc                 C   s   t dddƒ |  ||¡ d S rX   rZ   rF   r#   r#   r$   rY     s    zTextStringObject.writeToStream)Fr#   )r'   rH   rI   r    r   rN   r   r   rO   r   r0   r¢   r£   r}   rM   r™   r¤   r   rG   rY   r#   r#   r#   r$   r¡   Î  s(   
  üû	þþr¡   c                   @   sì   e Zd Ze d¡ZdZdddddœdd	„ ed
ƒD ƒ¥Zd"e	e
eeedf ee df d dœdd„Zeedeef ddœdd„Zeedeef ddœdd„Zedœdd„Zeeedœdd„ƒZeee	d dœdd„ƒZeee	d dœd d!„ƒZdS )#Ú
NameObjects   \s+|[\(\)<>\[\]{}/%]ó   /s   #23s   #28s   #29s   #2F)ú#ú(ro   ú/c                 C   s"   i | ]}t |ƒd |d›� ¡ “qS )r²   Ú02X)r­   r    )Ú.0r<   r#   r#   r$   Ú
<dictcomp>(  ru   zNameObject.<dictcomp>é!   Fr#   .Nr*   c                 C   s   t d|  t| ƒ|¡ƒS )rQ   r°   )r	   r>   r°   r/   r#   r#   r$   r0   +  s    zNameObject.clonerA   c                 C   s   |  |  ¡ ¡ d S rD   )rS   ÚrenumberrF   r#   r#   r$   rG   4  s    zNameObject.write_to_streamc                 C   s   t dddƒ |  ||¡ d S rX   rZ   rF   r#   r#   r$   rY   9  s    zNameObject.writeToStreamr   c              	   C   s    | d   d¡}|dkr(td| › d�tƒ | dd … D ]f}|dkrf|  d¡D ]}|d|d	›�  ¡ 7 }qJq4z|| j| 7 }W q4 ty˜   ||  d¡7 }Y q40 q4|S )
Nr   úutf-8r±   z$Incorrect first char in NameObject:(ro   r1   ú~r²   rµ   )r    r   r'   Úrenumber_tableÚKeyError)r"   Úoutr¯   Úxr#   r#   r$   r¹   ?  s    zNameObject.renumber)Úsinr   c                 C   s~   |   dd¡}|dkrzzH| d |… t| |d |d … ƒ | |d d …  } |   d|d ¡}W q tyv   |d }Y q0 q| S )Nó   #r   r1   é   )r”   r   r�   )rÀ   r<   r#   r#   r$   ÚunnumberN  s    4zNameObject.unnumberrt   c              
   C   s  |   d¡}|tjkrtdƒ‚|t| tjdd�7 }zVt |¡}dD ]2}z| |¡}t|ƒW   W S  typ   Y q@0 q@t	d|dddƒ‚W nv t
t	f� yü } zX|jsÒtd	t|ƒ› d
�tƒ t| d¡ƒW  Y d }~S td	t|ƒ› d
�ƒ|‚W Y d }~n
d }~0 0 d S )Nr1   zname read errorT)Z
ignore_eof)rº   ÚgbkÚ r   zCode Not Foundz"Illegal character in Name Object (ro   Úcharmap)rV   r°   Úsurfixr   r   Údelimiter_patternrÃ   Údecoder.   ÚUnicodeDecodeErrorr¬   Ústrictr   rŒ   r'   )rB   r2   ÚnameÚencÚretÚer#   r#   r$   rW   [  s0    



ÿÿþzNameObject.read_from_streamc                 C   s   t dddƒ t | |¡S r\   )r   r°   rW   r|   r#   r#   r$   r]   w  s    zNameObject.readFromStream)Fr#   )r'   rH   rI   r–   r—   rÈ   rÇ   Úranger¼   r   rN   r   r   rO   r   r0   r   rM   rG   rY   r¹   r_   rÃ   rW   r]   r#   r#   r#   r$   r°      s@   
üû  üû
þþþr°   )Úunicode_stringr   c              
   C   sN   d}| D ]@}z|t tt| ƒƒ7 }W q tyF   td|dddƒ‚Y q0 q|S )Nru   Zpdfdocencodingr’   z#does not exist in translation table)r   r­   r   r½   r¬   )rÑ   Úretvalr¯   r#   r#   r$   r¨     s    
ÿr¨   )1r¦   r�   rJ   r–   Úbinasciir   Útypingr   r   r   r   r   r   r	   Ú_codecsr   Z
_protocolsr   r   Ú_utilsr   r   r   r   r   r   r   r   r   Úerrorsr   r   r   Ú
__author__Ú__author_email__r   rP   r`   r   r‚   r~   ry   r�   rM   r˜   rO   r¡   r°   r¨   r#   r#   r#   r$   Ú<module>   s*   $,M%9d-0,R_