
    є j؀                        d dl Z 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 d dl	m
Z
 d dlmZmZmZmZmZmZ ej        dd         dk    rd dlmZ nd dlmZ ej        d	k    rd d
lmZ nd d
l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" ddl#m$Z$m%Z%m&Z& dZ'dZ( G d de          Z) G d de)          Z* G d de)          Z+ G d de)          Z,dZ- G d de.e)          Z/ G d de0e)          Z1 G d de2e)          Z3 G d  d!e4e)          Z5 G d" d#e4e)          Z6d$e4d%e2fd&Z7d'ed%eede*e,f                  fd(Z8dS ))    N)Sequence)log10)iter_unpack)AnyCallableClassVarOptionalUnioncast   )   
   )	TypeGuard)r      )Self_pdfdoc_encoding_rev)PdfObjectProtocolPdfWriterProtocol)
StreamTypeclasspropertydeprecation_no_replacementdeprecation_with_replacementlogger_warningread_non_whitespaceread_until_regex)STREAM_TRUNCATED_PREMATURELYPdfReadErrorPdfStreamErrorzMathieu Fenniakzbiziqe@mathieu.fenniak.netc                   "   e Zd ZU ej        Zed         ed<   ed         ed<   de	fdZ
defdZdefdZd	edd fd
Z	 	 dd	ededeeeee	f                           dd fdZ	 ddd d	ededd fdZded          fdZ	 ddededeef         ddfdZdS )	PdfObject).zhashlib._Hash	hash_funcIndirectObjectindirect_referencereturnc                 :    t          | j        j         d          )q
        Used to detect modified object.

        Returns:
            Hash considering type and value.

        z& does not implement .hash_bin() so farNotImplementedError	__class____name__selfs    gC:\Users\Terasoftware\OneDrive\Desktop\faahhh\fyndo\fyndo\venv\Lib\site-packages\pypdf/generic/_base.pyhash_binzPdfObject.hash_binE   s'     "~&NNN
 
 	
    c                 ,    |                                   S Nencoder,   s    r.   hash_value_datazPdfObject.hash_value_dataQ   s    y!!!r0   c                     | j         j         d|                     |                                                                                                            S )N:)r*   r+   r"   r5   	hexdigestr4   r,   s    r.   
hash_valuezPdfObject.hash_valueT   sW    ~& D D~~d224455??AAD D
&((	r0   pdf_destc                 ,    |                      |          S )a/  
        Clone object into pdf_dest (PdfWriterProtocol which is an interface for PdfWriter)
        without ensuring links. This is used in clone_document_from_root with incremental = True.

        Args:
          pdf_dest: Target to clone to.

        Returns:
          The cloned PdfObject

        )cloner-   r:   s     r.   	replicatezPdfObject.replicateZ   s     zz(###r0   F force_duplicateignore_fieldsc                 :    t          | j        j         d          )a  
        Clone object into pdf_dest (PdfWriterProtocol which is an interface for PdfWriter).

        By default, this method will call ``_reference_clone`` (see ``_reference``).


        Args:
          pdf_dest: Target to clone to.
          force_duplicate: By default, if the object has already been cloned and referenced,
            the copy will be returned; when ``True``, a new copy will be created.
            (Default value = ``False``)
          ignore_fields: List/tuple of field names (for dictionaries) that will be ignored
            during cloning (applies to children duplication as well). If fields are to be
            considered for a limited number of levels, you have to add it as integer, for
            example ``[1,"/B","/TOTO"]`` means that ``"/B"`` will be ignored at the first
            level only but ``"/TOTO"`` on all levels.

        Returns:
          The cloned PdfObject

        z! does not implement .clone so farr(   r-   r:   r@   rA   s       r.   r<   zPdfObject.clonek   s'    6 "~&III
 
 	
r0   r<   c                 "   	 |s|j         |j         j        |k    r|S n# t          $ r Y nw xY w	 | j         }n# t          $ r |cY S w xY w|j        r7|5|j        |j        k    r%|j        t          |j                  k    r|j        }nt          |j                  dz   }|t          |j                  |j
        vrCi |j
        t          |j                  <   |j        |j
        t          |j                           d<   |s|j        |j
        t          |j                           v r^|                    |j
        t          |j                           |j                           }t          |t                    s
J d            |S ||j
        t          |j                           |j        <   	 ||j        |dz
  <   n># t          $ r1 |j                            |           t          |j                  }Y nw xY wt!          |d|          |_         |S )aX  
        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.

        Args:
          clone:
          pdf_dest:

        Returns:
          The clone

        N   	PreventGCmypyr   )r$   pdf	ExceptionAttributeErrorincremental_readeridnumlen_objectsid_id_translated
get_object
isinstancer!   
IndexErrorappendr#   )r-   r<   r:   r@   indiobjs          r.   _reference_clonezPdfObject._reference_clone   sU   "	#, ,0H<
  	 	 	D		)CC 	 	 	LLL	  	+	+ 8++	+ 	S!2333		+ 	AAH%&&*A 	@#'{{("99 L79'374DGG'374[A#I!8CG!EE ))+BswKK8C  "#y11996999
>?H#BswKK0;	'',Ha!e$$ 	' 	' 	'$$U+++H%&&AAA	' $2!Q#A#A s-    
++7 AA-F; ;8G65G6c                     | S )zResolve indirect references.r?   r,   s    r.   rR   zPdfObject.get_object       r0   Nstreamencryption_keyc                     t           r2   )r)   r-   r\   r]   s      r.   write_to_streamzPdfObject.write_to_stream   s
     "!r0   Fr?   )Fr2   )r+   
__module____qualname__hashlibsha1r"   r   __annotations__r	   intr/   bytesr5   r9   r   r>   boolr   r
   strr<   rY   rR   r   r`   r?   r0   r.   r!   r!   @   s        07Ix,-<<< !12222

# 

 

 

 

" " " " "E    $#$ 
$ $ $ $( !&=?	
 
#
 
  sCx 9:	

 

 
 
 
@ X]< < <,=<PT<	< < < <|H[1    
 MQ" " "27c58H2I"	" " " " " "r0   r!   c                       e Zd Z	 	 ddededeeeee	f                           dd fdZ
de	fdZ	 dd
eded	eef         dd	fdZed
edd fd            ZdefdZdedefdZde	fdZd	S )
NullObjectFr?   r:   r@   rA   r%   c                 d    t          d|                     t                      ||                    S )Clone object into pdf_dest.rl   )r   rY   rl   rC   s       r.   r<   zNullObject.clone   s1     $//
hXX
 
 	
r0   c                 ,    t          | j        f          S r'   hashr*   r,   s    r.   r/   zNullObject.hash_bin   s     T^%&&&r0   Nr\   r]   c                 T    |t          dd           |                    d           d S )N/the encryption_key parameter of write_to_stream5.0.0   null)r   writer_   s      r.   r`   zNullObject.write_to_stream   s=      	&A7   	Wr0   c                 r    |                      d          }|dk    rt          d          t                      S )N   rv   zCould not read Null object)readr   rl   )r\   nulltxts     r.   read_from_streamzNullObject.read_from_stream   s7    ++a..g 	=;<<<||r0   c                     dS )Nrl   r?   r,   s    r.   __repr__zNullObject.__repr__   s    |r0   otherc                 ,    t          |t                    S r2   )rS   rl   r-   r   s     r.   __eq__zNullObject.__eq__   s    %,,,r0   c                 *    |                                  S r2   r/   r,   s    r.   __hash__zNullObject.__hash__       }}r0   ra   r2   )r+   rb   rc   r   ri   r	   r   r
   rj   rg   r<   r/   r   rh   r`   staticmethodr|   r~   objectr   r   r?   r0   r.   rl   rl      sR        !&=?		
 	
#	
 	
  sCx 9:		

 
	
 	
 	
 	
'# ' ' ' ' MQ  27c58H2I	         \#    -F -t - - - -#      r0   rl   c                       e Zd ZU eed<   deddfdZ	 	 ddeded	ee	e
eef                           dd fd
ZdefdZdedefdZdefdZdefdZ	 ddede
deef         ddfdZededd fd            ZdS )BooleanObjectvaluer%   Nc                     || _         d S r2   r   )r-   r   s     r.   __init__zBooleanObject.__init__  s    


r0   Fr?   r:   r@   rA   c                 p    t          d|                     t          | j                  ||                    S )rn   r   )r   rY   r   r   rC   s       r.   r<   zBooleanObject.clone  s8     !!-
";";XWW
 
 	
r0   c                 8    t          | j        | j        f          S rp   )rr   r*   r   r,   s    r.   r/   zBooleanObject.hash_bin  s     T^TZ0111r0   oc                    t          |t                    r| j        |j        k    S t          |t                    r| j        |k    S dS )NF)rS   r   r   ri   r-   r   s     r.   r   zBooleanObject.__eq__  sF    a'' 	):((a 	#:?"ur0   c                 *    |                                  S r2   r   r,   s    r.   r   zBooleanObject.__hash__%  r   r0   c                     | j         rdndS )NTrueFalser   r,   s    r.   r~   zBooleanObject.__repr__(  s    0vv0r0   r\   r]   c                     |t          dd           | j        r|                    d           d S |                    d           d S )Nrt   ru      trues   false)r   r   rw   r_   s      r.   r`   zBooleanObject.write_to_stream+  s_      	&A7   : 	#LL!!!!!LL"""""r0   c                     |                      d          }|dk    rt          d          S |dk    r$|                      d           t          d          S t          d          )Nry   r   Ts   falsrE   FzCould not read Boolean object)rz   r   r   )r\   words     r.   r|   zBooleanObject.read_from_stream7  sc    {{1~~7? 	' &&&7? 	(KKNNN ''':;;;r0   ra   r2   )r+   rb   rc   ri   rf   r   r   r   r	   r   r
   rj   rg   r<   r/   r   r   r   r~   r   rh   r`   r   r|   r?   r0   r.   r   r     s        KKKc d     !&=?	

 

#

 

  sCx 9:	


 


 

 

 

2# 2 2 2 2 d    #    1# 1 1 1 1 MQ
# 
# 
#27c58H2I
#	
# 
# 
# 
# < < < < < \< < <r0   r   c                      e Zd ZdedededdfdZdefdZdefdZd	edd
fdZ		 	 d'd	ede
deeeeef                           dd fdZed(d            Zded
         fdZdedd fdZded
         fdZdedefdZdedefdZdede
fdZdefdZdefdZdefdZdefdZdefdZd ede
fd!Zd ede
fd"Z	 d)d#e d$edee!f         ddfd%Z"e#d#e dedd fd&            Z$dS )*r#   rM   
generationrH   r%   Nc                 0    || _         || _        || _        d S r2   )rM   r   rH   )r-   rM   r   rH   s       r.   r   zIndirectObject.__init__C  s    
$r0   c                 ^    t          | j        | j        t          | j                  f          S r2   )rr   rM   r   rP   rH   r,   s    r.   r   zIndirectObject.__hash__H  s#    TZ"TX,,?@@@r0   c                 j    t          | j        | j        | j        t	          | j                  f          S rp   )rr   r*   rM   r   rP   rH   r,   s    r.   r/   zIndirectObject.hash_binK  s)     T^TZ"TX,,OPPPr0   r:   r!   c                 8    t          | j        | j        |          S r2   )r#   rM   r   r=   s     r.   r>   zIndirectObject.replicateU  s     dj$/8DDDr0   Fr?   r@   rA   c                 X   | j         |k    r|s| S t          | j                   |j        vrCi |j        t          | j                   <   | j         |j        t          | j                            d<   | j        |j        t          | j                            v rt|                    |j        t          | j                            | j                           }|r4|J |j        J |j        }t          |j        |j        |j                   S nm|                                 }|-t                      }t          | t          f          sJ | |_        |
                    |                    |||                    }t          |t                    s
J d            |j        
J d            |j        S )rn   rF   NrG   )rH   rP   rQ   rM   rR   r$   r#   r   rl   rS   _add_objectr<   r!   )r-   r:   r@   rA   dupidrefrX   s          r.   r<   zIndirectObject.clone[  s    8x 	 	Kdh<<x66 	J46H#BtxLL1AEH#BtxLL1+>:0DH>> 	%%h&=bll&KDJ&WXXC P&&&-999.%ek53CUYOOO	P //##C . ll!$(9:::::)-&&&		(O]CC C #y))116111%996999%%r0   c                     | S r2   r?   r,   s    r.   r$   z!IndirectObject.indirect_reference  r[   r0   c                 :    | j                             |           }|S r2   )rH   rR   )r-   rX   s     r.   rR   zIndirectObject.get_object  s    #'8#6#6t#<#<
r0   memoc                 B    t          | j        | j        | j                  S r2   )r#   rM   r   rH   )r-   r   s     r.   __deepcopy__zIndirectObject.__deepcopy__  s    dj$/48DDDr0   c                     |                                  }t          |t                    r8t          |                                  d|                                           |S )Nz references an IndirectObject )rR   rS   r#   r   r~   r   s     r.   _get_object_with_checkz%IndirectObject._get_object_with_check  s]    OOa(( 	 ==??PP!**,,PP   r0   namec                     	 t          |                                 |          S # t          $ r t          d| d          w xY w)NzNo attribute z* found in IndirectObject or pointed object)getattrr   rJ   r-   r   s     r.   __getattr__zIndirectObject.__getattr__  s^    	46688$??? 	 	 	 PPPP  	s	   !$ Akeyc                 6    |                                  |         S r2   r   r-   r   s     r.   __getitem__zIndirectObject.__getitem__  s    **,,S11r0   c                 .    ||                                  v S r2   r   r   s     r.   __contains__zIndirectObject.__contains__  s    d113333r0   c                 N    |                                                                  S r2   )r   __iter__r,   s    r.   r   zIndirectObject.__iter__  s     **,,55777r0   c                 N    |                                                                  S r2   )rR   	__float__r,   s    r.   r   zIndirectObject.__float__  s      **,,,r0   c                 N    |                                                                  S r2   )rR   __int__r,   s    r.   r   zIndirectObject.__int__        ((***r0   c                 N    |                                                                  S r2   )rR   __str__r,   s    r.   r   zIndirectObject.__str__  r   r0   c                 R    d| j         d| j        dt          | j                   dS )NzIndirectObject(z, ))rM   r   rP   rH   r,   s    r.   r~   zIndirectObject.__repr__  s/    UUUUUbllUUUUr0   r   c                     |d uoBt          |t                    o-| j        |j        k    o| j        |j        k    o| j        |j        u S r2   )rS   r#   rM   r   rH   r   s     r.   r   zIndirectObject.__eq__  sY     &5.11&
ek)& 5#33& EI%	
r0   c                 .    |                      |           S r2   )r   r   s     r.   __ne__zIndirectObject.__ne__  s    ;;u%%%%r0   r\   r]   c                     |t          dd           |                    | j         d| j         d                                           d S )Nrt   ru    z R)r   rw   rM   r   r4   r_   s      r.   r`   zIndirectObject.write_to_stream  s^      	&A7   	
88T_888??AABBBBBr0   c                    d}	 |                      d          }|st          t                    |                                rn||z  }Fd}	 |                      d          }|st          t                    |                                r|sCn||z  }It	          |           }|dk    r1t          dt          |                                                      t          t          |          t          |          |          S )Nr0   TrE      Rz0Error reading indirect object reference at byte )
rz   r   r   isspacer   r   hextellr#   rg   )r\   rH   rM   tokr   rs         r.   r|   zIndirectObject.read_from_stream  s   	++a..C C$%ABBB{{}} SLE	 
	++a..C C$%ABBB{{}} ! #J	  ''9 	W3v{{}}CUCUWW   c%jj#j//3???r0   ra   )r%   r#   r2   )%r+   rb   rc   rg   r   r   r   r/   r   r>   ri   r	   r   r
   rj   r<   propertyr$   rR   r   r   r   r   r   r   r   r   r   r~   r   r   r   r   rh   r`   r   r|   r?   r0   r.   r#   r#   B  sT       c s      
A# A A A AQ# Q Q Q QE#E 
E E E E !&=?	"& "&#"& "&  sCx 9:	"&
 
"& "& "& "&H    XH[1    E E)9 E E E E(=         2s 2s 2 2 2 24 4 4 4 4 48# 8 8 8 8-3 - - - -+ + + + ++ + + + +V# V V V V
F 
t 
 
 
 
&F &t & & & & MQC C C27c58H2IC	C C C C @ @# @:J @ @ @ \@ @ @r0   r#      c                       e Zd Z	 ddedee         defdZ	 	 dd	ed
edeee	e
ef                           dd fdZdefdZde
fdZde
fdZdefdZ	 ddede	de
ef         ddfdZdS )FloatObject0.0Nr   contextr%   c                     	 t          |          }t                               | |          S # t          $ r@}t          | d| dt                     t                               | d          cY d }~S d }~ww xY w)Nz : FloatObject (z) invalid; use 0.0 insteadg        )float__new__rI   r   r+   )clsr   r   es       r.   r   zFloatObject.__new__  s    		+%LLE==e,,, 	+ 	+ 	+ GGeGGG   ==c********	+s   ), 
A65A1+A61A6Fr?   r:   r@   rA   c                 f    t          d|                     t          |           ||                    S )rn   r   )r   rY   r   rC   s       r.   r<   zFloatObject.clone  s6     !!+d"3"3XOO
 
 	
r0   c                 8    t          | j        | j        f          S rp   rr   r*   
as_numericr,   s    r.   r/   zFloatObject.hash_bin  s     T^T_5666r0   c                     | dk    rdS t           t          t          t          |                               z
  }| dt	          d|           d                    d                              d          S )Nr   r   .rE   f0)FLOAT_WRITE_PRECISIONrg   r   absmaxrstrip)r-   nbs     r.   myreprzFloatObject.myrepr  sn    19 	5"Ss4yy)9)9%:%::'Q''''..s33::3???r0   c                 *    |                                  S r2   )r   r,   s    r.   r~   zFloatObject.__repr__  s    {{}}r0   c                      t          |           S r2   )r   r,   s    r.   r   zFloatObject.as_numeric  s    T{{r0   r\   r]   c                     |t          dd           |                    |                                                     d                     d S Nrt   ru   utf8)r   rw   r   r4   r_   s      r.   r`   zFloatObject.write_to_stream  sS      	&A7   	T[[]]))&1122222r0   )r   Nra   r2   )r+   rb   rc   r   r	   r   r   ri   r   r
   rj   rg   r<   r/   r   r~   r   r   r   rh   r`   r?   r0   r.   r   r     sZ       :>+ ++*23-+	+ + + +" !&=?	

 



 

  sCx 9:	


 


 

 

 

7# 7 7 7 7@ @ @ @ @#    E     MQ3 3 327c58H2I3	3 3 3 3 3 3r0   r   c                       e Zd Z ej        d          ZdedefdZ	 	 ddede	d	e
eeeef                           dd fd
ZdefdZdefdZ	 ddededeef         ddfdZededed         fd            ZdS )NumberObjects	   [^+-.0-9]r   r%   c                     	 t                               | t          |                    S # t          $ r7 t          d| dt                     t                               | d          cY S w xY w)NzNumberObject(z) invalid; use 0 insteadr   )rg   r   
ValueErrorr   r+   )r   r   s     r.   r   zNumberObject.__new__'  sr    	';;sCJJ/// 	' 	' 	'J5JJJHUUU;;sA&&&&&	's   '* >A+*A+Fr?   r:   r@   rA   c                 f    t          d|                     t          |           ||                    S )rn   r   )r   rY   r   rC   s       r.   r<   zNumberObject.clone.  s6     !!,t"4"4hPP
 
 	
r0   c                 R    t          | j        |                                 f          S rp   r   r,   s    r.   r/   zNumberObject.hash_bin:  s#     T^T__%6%67888r0   c                 `    t          t          |                               d                    S )Nr   )rg   reprr4   r,   s    r.   r   zNumberObject.as_numericD  s$    4::$$V,,---r0   Nr\   r]   c                     |t          dd           |                    t          |                               d                     d S r   )r   rw   r   r4   r_   s      r.   r`   zNumberObject.write_to_streamG  sQ      	&A7   	T$ZZ&&v../////r0   )r   r   c                 z    t          | t          j                  }d|v rt          |          S t          |          S )N   .)r   r   NumberPatternr   )r\   nums     r.   r|   zNumberObject.read_from_streamP  s<    v|'ABB3; 	$s###C   r0   ra   r2   )r+   rb   rc   recompiler   r   r   r   ri   r	   r   r
   rj   rg   r<   r/   r   r   rh   r`   r   r|   r?   r0   r.   r   r   $  sN       BJ|,,M'C 'D ' ' ' ' !&=?	

 



 

  sCx 9:	


 


 

 

 

9# 9 9 9 9.C . . . . MQ0 0 027c58H2I0	0 0 0 0 ! !6S0T ! ! ! \! ! !r0   r   c                       e Zd ZdZ	 	 ddededeeee	e
f                           dd fdZde
fd	Zedefd
            Z	 ddedede	ef         ddfdZde	f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?   r:   r@   rA   r%   c           
          t          d|                     t          t          |                     ||                    S )rn   r   )r   rY   r   rh   rC   s       r.   r<   zByteStringObject.clonea  sA     !! t--x 
 
 	
r0   c                 H    t          | j        t          |           f          S rp   )rr   r*   rh   r,   s    r.   r/   zByteStringObject.hash_bino  s     T^U4[[1222r0   c                     | S )z7For compatibility with TextStringObject.original_bytes.r?   r,   s    r.   original_byteszByteStringObject.original_bytesy  s	     r0   Nr\   r]   c                     |t          dd           |                    d           |                    t          j        |                      |                    d           d S )Nrt   ru      <   >)r   rw   binasciihexlifyr_   s      r.   r`   z ByteStringObject.write_to_stream~  sl      	&A7   	TX%d++,,,Tr0   c                     dgt          t          j                  }|D ])}	 |                     |          c S # t          $ r Y &w xY wt          d          )Nutf-16zCannot decode ByteStringObject.)list
NameObjectCHARSETSdecodeUnicodeDecodeErrorr   )r-   charset_to_tryencs      r.   r   zByteStringObject.__str__  su    "?T**=%>%>?! 	 	C{{3'''''%   <===s   9
AAra   r2   )r+   rb   rc   __doc__r   ri   r	   r   r
   rj   rg   r<   r/   r   rh   r  r   r`   r   r?   r0   r.   r   r   X  s         !&=?	
 

 
  sCx 9:	

 

 
 
 
3# 3 3 3 3     X
 MQ	 	 	27c58H2I			 	 	 	> > > > > > >r0   r   c                      e Zd ZU dZeed<   eed<   eed<   dZee         ed<   de	de
fd	Z	 	 dde	dedeeeeef                           dd fdZdefdZedefd            ZdefdZdefdZ	 ddededeef         ddfdZdS )TextStringObjectz
    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.
    autodetect_pdfdocencodingautodetect_utf16	utf16_bomN_original_bytesr   r%   c                     d }t          |t                    r|}|                    d          }t                              | |          }||_        d|_        d|_        d|_        ||d d         t          j
        t          j        hv r	 t                              | |                    d                    }nv# t          $ ri}t          |d|j        t                     t                              | |j        d |j                                     d                    }Y d }~nd }~ww xY w||_        d|_        |d d         |_        n@	 t#          |           d|_        n(# t$          $ r d|_        t          j        |_        Y nw xY w|S )NcharmapFr0   r   r	  z
initial string:T)rS   rh   r  rj   r   r  r  r  r  codecsBOM_UTF16_LEBOM_UTF16_BEr  r   r   r+   startencode_pdfdocencodingUnicodeEncodeError)r   r   r  text_string_object	exceptions        r.   r   zTextStringObject.__new__  s   eU## 	,"NLL++E [[e44-;*.3+7<4'*$ 	C.!*<ATV\Vi@j*j 	C
l%([[n6K6KH6U6U%V%V""% l l l IIY5EII   &)[[i6FGXGX6Y6`6`ai6j6j%k%k""""""l 2@.26/+9"1"+=((C%&8999?C"<<% C C C6:"3/5/B",,,C "!s+   .B: :
D-AD((D-E& &"F
FFr?   r:   r@   rA   c                     t          |           }| j        |_        | j        |_        | j        |_        | j        |_        t          d|                     |||                    S )rn   r  )r  r  r  r  r  r   rY   )r-   r:   r@   rA   rX   s        r.   r<   zTextStringObject.clone  sd     t$$"2(,(F%#4 5 5c8_ U U
 
 	
r0   c                 8    t          | j        | j        f          S rp   )rr   r*   r  r,   s    r.   r/   zTextStringObject.hash_bin  s     T^T%89:::r0   c                 F    | j         | j         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.
        )r  get_original_bytesr,   s    r.   r  zTextStringObject.original_bytes  s*      	(''&&(((r0   c                 `   | j         r| j        t          j        k    r"t          j        |                     d          z   S | j        t          j        k    r"t          j        |                     d          z   S |                     d          S | j        rt          |           S t          d          )Nutf-16leutf-16bez#no information about original bytes)	r  r  r  r  r4   r  r  r  rI   r,   s    r.   r%  z#TextStringObject.get_original_bytes  s       	+~!44 E*T[[-D-DDD~!44 E*T[[-D-DDD;;z***) 	/(...=>>>r0   c                    	 | j         | j         S | j        rt          ddddd          t          |           }n# t          $ r | j        t
          j        k    r#t
          j        |                     d          z   }nM| j        t
          j        k    r#t
          j        |                     d          z   }n|                     d          }Y nw xY w|S )N forcedr'  r(  )	r  r  r  r  r  r  r  r4   r  )r-   bytearrs     r.   get_encoded_bytesz"TextStringObject.get_encoded_bytes  s    	2# ,++$ C(Xr2rBBB+D11GG! 	2 	2 	2~!44 2 -J0G0GG6#66 2 -J0G0GG++j11	2 s   : ): BCCr\   r]   c                    |t          dd           |                                 }|                    d           t          d|          D ]r}t	          t
          |d                   }|                                s,|dk    r&|                    dt          |          z             ]|                    |           s|                    d           d S )	Nrt   ru      (cr       s   \%03o   ))r   r.  rw   r   r   rh   isalnumord)r-   r\   r]   r-  c_r1  s         r.   r`   z TextStringObject.write_to_stream  s      	&A7   ((**Tc7++ 		  		 BUBqE""A99;;  19  
 YQ/0000QTr0   ra   r2   )r+   rb   rc   r  ri   rf   rh   r  r	   r   r   r   r   r
   rj   rg   r<   r/   r   r  r%  r.  r   r`   r?   r0   r.   r  r    s           $###'+OXe_+++!"C !"D !" !" !" !"L !&=?	
 

 
  sCx 9:	

 

 
 
 
 ;# ; ; ; ; 	) 	) 	) 	) X	)?E ? ? ? ? 5    ( MQ  27c58H2I	     r0   r  c                      e Zd ZU  ej        d          ZdZi d dD             d  ed          D             Ze	e
eef                  ed<   	 	 dd
ededeeeeef                           dd fdZdefdZ	 ddededeef         ddfdZdefdZddZedefd            Zededefd            ZdZedededd fd            ZdS )r  s   \s+|[\(\)<>\[\]{}/%]   /c                 Z    i | ](}t          |          d |d                                )S #02Xchrr4   .0rW   s     r.   
<dictcomp>zNameObject.<dictcomp>'  s4    
@
@
@A3q66;q;;;%%''
@
@
@r0   s   #()<>[]{}/%c                 Z    i | ](}t          |          d |d                                )S r:  r=  r?  s     r.   rA  zNameObject.<dictcomp>(  s4    
;
;
;A3q66;q;;;%%''
;
;
;r0   !   renumber_tableFr?   r:   r@   rA   r%   c                 f    t          d|                     t          |           ||                    S )rn   r  )r   rY   r  rC   s       r.   r<   zNameObject.clone+  s6     !!*T"2"2HoNN
 
 	
r0   c                 .    t          | j        | f          S rp   rq   r,   s    r.   r/   zNameObject.hash_bin7  s     T^T*+++r0   Nr\   r]   c                 x    |t          dd           |                    |                                            d S )Nrt   ru   )r   rw   renumberr_   s      r.   r`   zNameObject.write_to_streamA  sE      	&A7   	T]]__%%%%%r0   c                    | d                              d          }|dk    rt          d|  dd           |g}| dd          D ]}|dk    r3|                    d	 |                     d          D                        ;	 |                    | j        |                    ]# t
          $ r+ |                    |                     d                     Y w xY wd
                    |          S )Nr   utf-8r8  z<Incorrect first char in NameObject, should start with '/': (r   ru   rE   ~c              3   F   K   | ]}d |d                                 V  dS )r;  r<  Nr3   )r@  xs     r.   	<genexpr>z&NameObject.renumber.<locals>.<genexpr>T  s6      MMa[[[[//11MMMMMMr0   r0   )r4   r   extendrU   rD  KeyErrorjoin)r-   outpartsr1  s       r.   rH  zNameObject.renumberJ  s   1gnnW%%$; 	&VtVVV   abb 	4 	4A3w 4MM188G;L;LMMMMMMM4LL!4Q!78888 4 4 4LL'!2!2333334xxs   ? B  2CCc                     t          |                               d          }t          j        dd|          }t          j        dd|          }t	          d|z             S )a0  
        Sanitize the NameObject's name to be a valid PDF name part
        (alphanumeric, underscore, hyphen). The _sanitize method replaces
        spaces and any non-alphanumeric/non-underscore/non-hyphen with
        underscores.

        Returns:
            NameObject with sanitized name.
        /z\ _z[^a-zA-Z0-9_-])rj   removeprefixr   subr  r   s     r.   	_sanitizezNameObject._sanitize\  sV     4yy%%c**veS$''v'd33#*%%%r0   c                 (    t          ddd           dS )Nsurfixprefixru   r8  )r   )r   s    r.   r[  zNameObject.surfixk  s    $XxAAAtr0   sinc                    t                      }d}|t          |           k     r| ||dz            dk    rO	 |                    t          | |dz   |dz            d                     |dz  }\# t          t
          f$ r Y nw xY w|                    | |                    |dz  }|t          |           k     t          |          S )Nr   rE      #r      )	bytearrayrN   rU   rg   r   rT   rh   )r]  resultrW   s      r.   unnumberzNameObject.unnumberp  s    #c((l 	1QU7|t# MM#c!a%!a%-&8""="=>>>FA"J/    D MM#a&!!!FA #c((l 	 V}}s   6A- -B B)rJ  gbklatin1rH   c                 r   |                      d          }|t          j        k    rt          d          |t	          | t          j                  z  }	 t                              |          }t          j        D ]8}	 |                    |          }t          |          c S # t          $ r Y 5w xY wt          d|ddd          # t          t          f$ r`}|j        s@t          d|dt                     t          |                    d                    cY d }~S t          d|d	          |d }~ww xY w)
NrE   zName read errorr*  r   zCode Not Foundz!Illegal character in NameObject (z-), you may need to adjust NameObject.CHARSETSr  z.). You may need to adjust NameObject.CHARSETS.)rz   r  r\  r   r   delimiter_patternrc  r  r  rI   r  r  strictr   r+   )r\   rH   r   r  retr   s         r.   r|   zNameObject.read_from_stream  s   {{1~~:$$ 	20111 )EFFF	 &&t,,D!*  ++c**C%c??***    D$Rq!5EFFF"$67 	 	 	: :A A A A  
 "$++i"8"899999999>D > > >  	sI   (C <#B"C "
B/,C .B//C D6AD1D6D11D6ra   r2   )r%   r  ) r+   rb   rc   r   r   rg  r\  rangerD  r   dictrj   rh   rf   r   ri   r	   r   r
   rg   r<   r/   r   r`   rH  rY  r   r[  r   rc  r  r|   r?   r0   r.   r  r  #  s        "
#;<<F2
@
@
@
@
@2
;
;r
;
;
;2NHT#u*-.    !&=?	

 



 

  sCx 9:	


 


 

 

 

,# , , , , MQ& & &27c58H2I&	& & & &%    $& & & & u    ] e     \" *H # ,    \  r0   r  unicode_stringr%   c                 x    	 t          d | D                       S # t          $ r t          d| ddd          w xY w)Nc                 (    g | ]}t           |         S r?   r   )r@  ks     r.   
<listcomp>z)encode_pdfdocencoding.<locals>.<listcomp>  s    FFF!*1-FFFr0   pdfdocencodingr,  z#does not exist in translation table)rh   rP  r  )rl  s    r.   r  r    s`    	
FF~FFFGGG 
 
 
 1
 
 	

s    9rM  c                     | du pQt          | t                    o<|                                 du p&t          |                                 t                    S )z<
    Returns:
        True if x is None or NullObject.

    N)rS   r!   rR   rl   )rM  s    r.   is_null_or_noners    sO     9 1i   	O\\^^t#Mz!,,..*'M'Mr0   )9r  r  rd   r   syscollections.abcr   mathr   structr   typingr   r   r   r	   r
   r   version_infor   typing_extensionsr   _codecsr   
_protocolsr   r   _utilsr   r   r   r   r   r   r   errorsr   r   r   
__author____author_email__r!   rl   r   r#   r   r   r   rg   r   rh   r   rj   r  r  r  rs  r?   r0   r.   <module>r     s  6    				 



 $ $ $ $ $ $             A A A A A A A A A A A A A A A ABQB7" ,       ++++++w '&&&&&& * * * * * * = = = = = = = =                  P O O O O O O O O O
/ O" O" O" O" O"! O" O" O"d- - - - - - - -`=< =< =< =< =<I =< =< =<@a@ a@ a@ a@ a@Y a@ a@ a@H  83 83 83 83 83% 83 83 83v1! 1! 1! 1! 1!3	 1! 1! 1!h8> 8> 8> 8> 8>ui 8> 8> 8>vM M M M MsI M M M`} } } } }i } } }@

# 

% 

 

 

 

	s 	ytZ/O)PQ 	 	 	 	 	 	r0   