
    i|                     "   S SK r S SKrS SKrS SKrS SKrS SK Jr  S SKJr  S SKJ	r	  S SK
Jr  S SKJrJrJrJrJrJr  \R&                  SS S:  a  S S	KJr  OS S	KJr  SS
KJr  SSKJrJr  SSKJrJrJrJrJ r J!r!J"r"  SSK#J$r$J%r%J&r&  Sr'Sr( " S S\5      r) " S S\)5      r* " S S\)5      r+ " S S\)5      r,Sr- " S S\.\)5      r/ " S S\0\)5      r1 " S S\2\)5      r3 " S S \4\)5      r5 " S! S"\4\)5      r6S#\4S$\24S% jr7S&\S$\\S\*\,4      4S' jr8g)(    N)	unhexlify)Sequence)log10)iter_unpack)AnyCallableClassVarOptionalUnioncast   )   
   )	TypeGuard)_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                      \ rS rSr% \R
                  r\S   \S'   \	S   \S'   S\
4S jrS\4S jrS\4S	 jrS
\SS 4S jr  SS
\S\S\	\\\\
4         SS 4S jjr SS\S
\S\S\4S jjrS\	S    4S jr SS\S\S\\4   SS4S jjrSrg)	PdfObject<   ).zhashlib._Hash	hash_funcIndirectObjectindirect_referencereturnc                 F    [        U R                  R                   S35      e)Q
Used to detect modified object.

Returns:
    Hash considering type and value.

z& does not implement .hash_bin() so farNotImplementedError	__class____name__selfs    M/home/james-whalen/.local/lib/python3.13/site-packages/pypdf/generic/_base.pyhash_binPdfObject.hash_binA   s'     "~~&&''MN
 	
    c                 $    U  R                  5       $ N)encoder+   s    r-   hash_value_dataPdfObject.hash_value_dataM   s    !!r0   c                     U R                   R                   SU R                  U R                  5       5      R	                  5        3R                  5       $ )N:)r)   r*   r!   r4   	hexdigestr3   r+   s    r-   
hash_valuePdfObject.hash_valueP   sG    ~~&&'q~~d2245??ABD
&(	r0   pdf_destc                 $    U R                  U5      $ )z
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-   	replicatePdfObject.replicateV   s     zz(##r0    force_duplicateignore_fieldsc                 F    [        U R                  R                   S35      e)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;   rB   rC   s       r-   r=   PdfObject.cloneg   s'    6 "~~&&''HI
 	
r0   r=   c                     U(       d  UR                   R                  U:X  a  U$  U R                   nUR                  (       aM  UbJ  UR                  UR
                  :X  a0  UR                  [        UR                  5      ::  a  UR                  nO[        UR                  5      S-   nUGb  [        UR                  5      UR                  ;  aQ  0 UR                  [        UR                  5      '   UR                  UR                  [        UR                  5         S'   U(       du  UR                  UR                  [        UR                  5         ;   aE  UR                  UR                  [        UR                  5         UR                     5      nUc   eU$ XRR                  [        UR                  5         UR                  '    XR                  US-
  '   [        USU5      Ul         U$ ! [         a     GNf = f! [         a    Us $ f = f! [         a3    UR                  R                  U5        [        UR                  5      n Nsf = f)a  
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

   	PreventGCr   )r#   pdf	ExceptionAttributeErrorincremental_readeridnumlen_objectsid_id_translated
get_object
IndexErrorappendr"   )r,   r=   r;   rB   indiobjs          r-   _reference_clonePdfObject._reference_clone   s   "	"u'?'?'C'Cx'O	))C   8+++		S!2!233		AH%%&*A?#''{("9"9979''3774DGGG''3774[A#II!8!8CGG!EE))++BswwK8C &
>?##BswwK0;	'',a!e$ $2!Q#A I  		
  	L	6  	'$$U+H%%&A	's4   "G0 H H 0
G>=G>HH:IIc                     U $ )zResolve indirect references.rA   r+   s    r-   rT   PdfObject.get_object       r0   Nstreamencryption_keyc                     [         er2   )r(   r,   r_   r`   s      r-   write_to_streamPdfObject.write_to_stream   s
     "!r0   FrA   )Fr2   )r*   
__module____qualname____firstlineno__hashlibsha1r!   r   __annotations__r
   intr.   bytesr4   r9   r   r?   boolr   r   strr=   r   r   rZ   rT   r   rc   __static_attributes__rA   r0   r-   r   r   <   s   07Ix,-< !122

# 

" "E $#$ 
$( !&=?	
#
 
  sCx 9:	

 

@ PU88$58HL8	8tH[1 
 MQ" "27c58H2I"	" "r0   r   c                       \ rS rSr  SS\S\S\\\\	\
4         SS 4S jjrS\
4S jr SS
\S\S	\	\4   SS	4S jjr\S
\SS 4S j5       rS\	4S jrS\S\4S jrS\
4S jrSrg	)
NullObject   rA   r;   rB   rC   r$   c                 J    [        SU R                  [        5       X5      5      $ )Clone object into pdf_dest.rr   )r   rZ   rr   rE   s       r-   r=   NullObject.clone   s%     $//
hX
 	
r0   c                 .    [        U R                  45      $ r&   hashr)   r+   s    r-   r.   NullObject.hash_bin   s     T^^%&&r0   Nr_   r`   c                 D    Ub  [        SS5        UR                  S5        g )N/the encryption_key parameter of write_to_stream5.0.0   null)r   writerb   s      r-   rc   NullObject.write_to_stream   s%     %&A7 	Wr0   c                 Z    U R                  S5      nUS:w  a  [        S5      e[        5       $ )N   r   zCould not read Null object)readr   rr   )r_   nulltxts     r-   read_from_streamNullObject.read_from_stream   s+    ++a.g;<<|r0   c                     g)Nrr   rA   r+   s    r-   __repr__NullObject.__repr__   s    r0   otherc                 "    [        U[        5      $ r2   )
isinstancerr   r,   r   s     r-   __eq__NullObject.__eq__   s    %,,r0   c                 "    U R                  5       $ r2   r.   r+   s    r-   __hash__NullObject.__hash__       }}r0   re   r2   )r*   rf   rg   rh   r   rn   r
   r   r   ro   rl   r=   r.   r   rm   rc   staticmethodr   r   objectr   r   rp   rA   r0   r-   rr   rr      s     !&=?		
#	
 	
  sCx 9:		

 
	
'# ' MQ 27c58H2I	    # -F -t -# r0   rr   c                       \ rS rSrS\SS4S jr  SS\S\S\\	\
\\4         SS 4S	 jjrS\4S
 jrS\S\4S jrS\4S jrS\4S jr SS\S\
S\\4   SS4S jjr\S\SS 4S j5       rSrg)BooleanObject   valuer$   Nc                     Xl         g r2   r   )r,   r   s     r-   __init__BooleanObject.__init__   s    
r0   r;   rB   rC   c                 `    [        SU R                  [        U R                  5      X5      5      $ )ru   r   )r   rZ   r   r   rE   s       r-   r=   BooleanObject.clone   s-     !!-

";XW
 	
r0   c                 D    [        U R                  U R                  45      $ rx   )rz   r)   r   r+   s    r-   r.   BooleanObject.hash_bin
  s     T^^TZZ011r0   oc                    [        U[        5      (       a  U R                  UR                  :H  $ [        U[        5      (       a  U R                  U:H  $ g)NF)r   r   r   rn   r,   r   s     r-   r   BooleanObject.__eq__  s@    a''::((a::?"r0   c                 "    U R                  5       $ r2   r   r+   s    r-   r   BooleanObject.__hash__  r   r0   c                 ,    U R                   (       a  S$ S$ )NTrueFalser   r+   s    r-   r   BooleanObject.__repr__  s    v00r0   r_   r`   c                     Ub  [        SS5        U R                  (       a  UR                  S5        g UR                  S5        g )Nr}   r~      trues   false)r   r   r   rb   s      r-   rc   BooleanObject.write_to_stream!  s8     %&A7 ::LL!LL"r0   c                     U R                  S5      nUS:X  a  [        S5      $ US:X  a  U R                  S5        [        S5      $ [        S5      e)Nr   r   Ts   falsrH   FzCould not read Boolean object)r   r   r   )r_   words     r-   r   BooleanObject.read_from_stream-  sJ    {{1~7? &&7?KKN '':;;r0   r   re   r2   )r*   rf   rg   rh   r   r   r   rn   r
   r   r   ro   rl   r=   r.   r   r   r   r   r   rm   rc   r   r   rp   rA   r0   r-   r   r      s    c d  !&=?	

#

 

  sCx 9:	


 


2# 2 d # 1# 1 MQ
# 
#27c58H2I
#	
# < < < <r0   r   c                      \ rS rSrS\S\S\SS4S jrS\4S jrS\4S	 jrS
\	SS4S jr
  S'S
\	S\S\\\\\4         SS 4S jjr\S(S j5       rS\S   4S jrS\SS 4S jrS\S   4S jrS\S\4S jrS\S\4S jrS\S\4S jrS\4S jrS\4S jrS\4S jrS\4S jrS\4S jrS\S\4S  jrS\S\4S! jr  S)S"\!S#\S\\"4   SS4S$ jjr#\$S"\!S\SS 4S% j5       r%S&r&g)*r"   i8  rO   
generationrJ   r$   Nc                 (    Xl         X l        X0l        g r2   )rO   r   rJ   )r,   rO   r   rJ   s       r-   r   IndirectObject.__init__9  s    
$r0   c                 l    [        U R                  U R                  [        U R                  5      45      $ r2   )rz   rO   r   rR   rJ   r+   s    r-   r   IndirectObject.__hash__>  s$    TZZ"TXX,?@@r0   c                     [        U R                  U R                  U R                  [	        U R
                  5      45      $ rx   )rz   r)   rO   r   rR   rJ   r+   s    r-   r.   IndirectObject.hash_binA  s,     T^^TZZ"TXX,OPPr0   r;   r   c                 D    [        U R                  U R                  U5      $ r2   )r"   rO   r   r>   s     r-   r?   IndirectObject.replicateK  s     djj$//8DDr0   rB   rC   c                 L   U R                   U:X  a	  U(       d  U $ [        U R                   5      UR                  ;  a"  0 UR                  [        U R                   5      '   U R                  UR                  [        U R                   5         ;   a  UR	                  UR                  [        U R                   5         U R                     5      nU(       aK  Uc   eUR
                  c   eUR
                  n[        UR                  UR                  UR                   5      $ O\U R	                  5       nUc(  [        5       n[        U [        45      (       d   eXl        UR                  UR                  XU5      5      nUc   S5       eUR
                  c   S5       eUR
                  $ )ru   mypy)rJ   rR   rS   rO   rT   r#   r"   r   rr   r   _add_objectr=   )r,   r;   rB   rC   dupidrefrY   s          r-   r=   IndirectObject.cloneQ  sd    88xKdhh<x66646H##BtxxL1::00DHH>>%%h&=&=bl&KDJJ&WXC&--999..%ekk53C3CUYYOO	  //#C{ l!$(9::::)-&&&		(]CC &&%%19691%%%r0   c                     U $ r2   rA   r+   s    r-   r#   !IndirectObject.indirect_referencet  r^   r0   c                 8    U R                   R                  U 5      $ r2   )rJ   rT   r+   s    r-   rT   IndirectObject.get_objectx  s    xx""4((r0   memoc                 X    [        U R                  U R                  U R                  5      $ r2   )r"   rO   r   rJ   )r,   r   s     r-   __deepcopy__IndirectObject.__deepcopy__{  s    djj$//488DDr0   c                     U R                  5       n[        U[        5      (       a,  [        U R	                  5        SUR	                  5        35      eU$ )Nz references an IndirectObject )rT   r   r"   r   r   r   s     r-   _get_object_with_check%IndirectObject._get_object_with_check~  sK    OOa(( ==?##A!**,P  r0   namec                 r     [        U R                  5       U5      $ ! [         a    [        SU S35      ef = f)NzNo attribute z* found in IndirectObject or pointed object)getattrr   rL   r,   r   s     r-   __getattr__IndirectObject.__getattr__  sF    	4668$?? 	 v%OP 	s    6keyc                 (    U R                  5       U   $ r2   r   r,   r   s     r-   __getitem__IndirectObject.__getitem__  s    **,S11r0   c                 &    XR                  5       ;   $ r2   r   r   s     r-   __contains__IndirectObject.__contains__  s    11333r0   c                 >    U R                  5       R                  5       $ r2   )r   __iter__r+   s    r-   r   IndirectObject.__iter__  s    **,5577r0   c                 >    U R                  5       R                  5       $ r2   )rT   	__float__r+   s    r-   r   IndirectObject.__float__  s     **,,r0   c                 >    U R                  5       R                  5       $ r2   )rT   __int__r+   s    r-   r   IndirectObject.__int__       ((**r0   c                 >    U R                  5       R                  5       $ r2   )rT   __str__r+   s    r-   r   IndirectObject.__str__  r   r0   c                 l    SU R                   < SU R                  < S[        U R                  5       S3$ )NzIndirectObject(z, ))rO   r   rR   rJ   r+   s    r-   r   IndirectObject.__repr__  s/     b0C2bl^STUUr0   r   c                     US L=(       ao    [        U[        5      =(       aX    U R                  UR                  :H  =(       a8    U R                  UR                  :H  =(       a    U R                  UR                  L $ r2   )r   r"   rO   r   rJ   r   s     r-   r   IndirectObject.__eq__  sc     &5.1&

ekk)& 5#3#33& EII%	
r0   c                 .    U R                  U5      (       + $ r2   )r   r   s     r-   __ne__IndirectObject.__ne__  s    ;;u%%%r0   r_   r`   c                     Ub  [        SS5        UR                  U R                   SU R                   S3R	                  5       5        g )Nr}   r~    z R)r   r   rO   r   r3   rb   s      r-   rc   IndirectObject.write_to_stream  sD     %&A7 	

|1T__$5R8??ABr0   c                    Sn U R                  S5      nU(       d  [        [        5      eUR                  5       (       a  OX#-  nMC  Sn U R                  S5      nU(       d  [        [        5      eUR                  5       (       a
  U(       d  MF  OXC-  nML  [	        U 5      nUS:w  a%  [        S[        U R                  5       5       35      e[        [        U5      [        U5      U5      $ )Nr0   rH      Rz0Error reading indirect object reference at byte )
r   r   r   isspacer   r   hextellr"   rl   )r_   rJ   rO   tokr   rs         r-   r   IndirectObject.read_from_stream  s    ++a.C$%ABB{{}}LE  
++a.C$%ABB{{}}!J   '9B3v{{}CUBVW  c%j#j/3??r0   )r   rO   rJ   re   )r$   r"   r2   )'r*   rf   rg   rh   rl   r   r   r   r.   r   r?   rn   r
   r   r   ro   r=   propertyr#   rT   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rm   rc   r   r   rp   rA   r0   r-   r"   r"   8  s   c s   
A# AQ# QE#E 
E !&=?	!&#!& !&  sCx 9:	!&
 
!&F  )H[1 )E E)9 E(=   2s 2s 24 4 48# 8-3 -+ ++ +V# V
F 
t 
&F &t & MQC C27c58H2IC	C @ @# @:J @ @r0   r"      c                       \ rS rSr SS\S\\   SS 4S jjr  SS\S	\S
\\\	\
\4         SS 4S jjrS\4S jrS\
4S jrS\
4S jrS\4S jr SS\S\	S\
\4   SS4S jjrSrg)FloatObjecti  Nr   contextr$   c                      [        U5      n[         R                  X5      $ ! [         a6  n[        U SU S3[        5        [         R                  U S5      s S nA$ S nAff = f)Nz : FloatObject (z) invalid; use 0.0 insteadg        )float__new__rK   r   r*   )clsr   r  es       r-   r  FloatObject.__new__  s`    		+%LE==,, 	+ #%eW,FG ==c**	+s   " 
A"+AA"A"rA   r;   rB   rC   c                 L    [        SU R                  [        U 5      X5      5      $ )ru   r  )r   rZ   r  rE   s       r-   r=   FloatObject.clone  s)     !!+d"3XO
 	
r0   c                 D    [        U R                  U R                  45      $ rx   rz   r)   
as_numericr+   s    r-   r.   FloatObject.hash_bin  s     T^^T__566r0   c                     U S:X  a  g[         [        [        [        U 5      5      5      -
  nU S[	        SU5       S3 R                  S5      R                  S5      $ )Nr   0.0.rH   f0)FLOAT_WRITE_PRECISIONrl   r   absmaxrstrip)r,   nbs     r-   myreprFloatObject.myrepr  sS    19"Ss4y)9%::qQAo&..s3::3??r0   c                 "    U R                  5       $ r2   )r  r+   s    r-   r   FloatObject.__repr__  s    {{}r0   c                     [        U 5      $ r2   )r  r+   s    r-   r  FloatObject.as_numeric  s    T{r0   r_   r`   c                 ~    Ub  [        SS5        UR                  U R                  5       R                  S5      5        g Nr}   r~   utf8)r   r   r  r3   rb   s      r-   rc   FloatObject.write_to_stream  s6     %&A7 	T[[]))&12r0   )r  Nre   r2   )r*   rf   rg   rh   r   r
   r  rn   r   r   ro   rl   r=   r.   r  r   r  r  r   rm   rc   rp   rA   r0   r-   r  r    s    :>++*23-+	+" !&=?	



 

  sCx 9:	


 


7# 7@ @# E  MQ3 327c58H2I3	3 3r0   r  c                       \ rS rSr\R
                  " S5      rS\SS 4S jr  SS\S\	S	\
\\\\4         SS 4S
 jjrS\4S jrS\4S jr SS\S\S\\4   SS4S jjr\S\S\S   4S j5       rSrg)NumberObjecti  s	   [^+-.0-9]r   r$   c                      [         R                  U [        U5      5      $ ! [         a-    [        SU S3[        5        [         R                  U S5      s $ f = f)NzNumberObject(z) invalid; use 0 insteadr   )rl   r  
ValueErrorr   r*   )r  r   s     r-   r  NumberObject.__new__  sP    	';;sCJ// 	']5'1IJHU;;sA&&	's   ! 4AArA   r;   rB   rC   c                 L    [        SU R                  [        U 5      X5      5      $ )ru   r$  )r   rZ   r$  rE   s       r-   r=   NumberObject.clone"  s)     !!,t"4hP
 	
r0   c                 L    [        U R                  U R                  5       45      $ rx   r  r+   s    r-   r.   NumberObject.hash_bin.  s     T^^T__%6788r0   c                 H    [        [        U 5      R                  S5      5      $ )Nr!  )rl   reprr3   r+   s    r-   r  NumberObject.as_numeric8  s    4:$$V,--r0   Nr_   r`   c                 t    Ub  [        SS5        UR                  [        U 5      R                  S5      5        g r   )r   r   r-  r3   rb   s      r-   rc   NumberObject.write_to_stream;  s4     %&A7 	T$Z&&v./r0   )r$  r  c                 n    [        U [        R                  5      nSU;   a  [        U5      $ [        U5      $ )N   .)r   r$  NumberPatternr  )r_   nums     r-   r   NumberObject.read_from_streamD  s1    v|'A'AB3;s##C  r0   re   r2   )r*   rf   rg   rh   recompiler3  r   r  rn   r
   r   r   ro   rl   r=   r.   r  r   rm   rc   r   r   rp   rA   r0   r-   r$  r$    s    JJ|,M'C 'N ' !&=?	



 

  sCx 9:	


 


9# 9.C . MQ0 027c58H2I0	0 ! !6S0T ! !r0   r$  c                       \ rS rSrSr  SS\S\S\\\	\
\4         SS 4S jjrS\4S	 jr\S\4S
 j5       r SS\S\	S\
\4   SS4S jjrS\
4S jrSrg)ByteStringObjectiL  a*  
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.
rA   r;   rB   rC   r$   c           
      ^    [        SU R                  [        [        U 5      5      X5      5      $ )ru   r9  )r   rZ   r9  rm   rE   s       r-   r=   ByteStringObject.cloneU  s0     !! t-x
 	
r0   c                 B    [        U R                  [        U 5      45      $ rx   )rz   r)   rm   r+   s    r-   r.   ByteStringObject.hash_binc  s     T^^U4[122r0   c                     U $ )z7For compatibility with TextStringObject.original_bytes.rA   r+   s    r-   original_bytesByteStringObject.original_bytesm  s	     r0   Nr_   r`   c                     Ub  [        SS5        UR                  S5        UR                  [        R                  " U 5      5        UR                  S5        g )Nr}   r~      <   >)r   r   binasciihexlifyrb   s      r-   rc    ByteStringObject.write_to_streamr  sH     %&A7 	TX%%d+,Tr0   c                     S/[        [        R                  5      QnU H  n U R                  U5      s  $    [        S5      e! [         a     M1  f = f)Nutf-16zCannot decode ByteStringObject.)list
NameObjectCHARSETSdecodeUnicodeDecodeErrorr   )r,   charset_to_tryencs      r-   r   ByteStringObject.__str__}  sZ    "?T**=*=%>?!C{{3'' "
 <== & s   A
AAre   r2   )r*   rf   rg   rh   __doc__r   rn   r
   r   r   ro   rl   r=   r.   r   rm   r?  r   rc   r   rp   rA   r0   r-   r9  r9  L  s     !&=?	

 
  sCx 9:	

 

3# 3   
 MQ	 	27c58H2I			> >r0   r9  c                       \ rS rSr% Sr\\S'   \\S'   \\S'   Sr\	\   \S'   S\
S	S 4S
 jr  SS\
S\S\	\\\\4         S	S 4S jjrS	\4S jr\S	\4S j5       rS	\4S jrS	\4S jr SS\S\S\\4   S	S4S jjrSrg)TextStringObjecti  z
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                    S n[        U[        5      (       a  UnUR                  S5      n[        R	                  X5      nX#l        SUl        SUl        SUl        UR                  S5      (       aH  Uc   S5       e [        R	                  XR                  S5      5      nX#l        SUl        US S	 Ul        U$  [        U5        SUl        U$ ! [         af  n[        U< SUR                  < 3[        5        [        R	                  XR                  S UR                   R                  S5      5      n S nANS nAff = f! [          a     SUl        ["        R$                  Ul         U$ f = f)
NcharmapFr0   )u   þÿu   ÿþr   rH  z
initial string:Tr   )r   rm   rL  ro   r  rW  rU  rT  rV  
startswithrM  r   r   r*   startencode_pdfdocencodingUnicodeEncodeErrorcodecsBOM_UTF16_BE)r  r   orgr   excs        r-   r  TextStringObject.__new__  sT   eU##CLL+EKK#"&+#<<011?*F*?OKKZZ%9: !$!%Abq'AK 2%a(.2+ ! & Og.szzn= KKZZ#))%<%C%CH%MNO & 2%)"$112s+   <$C :E 
D>AD99D>&E+*E+rA   r;   rB   rC   c                     [        U 5      nU R                  Ul        U R                  Ul        U R                  Ul        U R                  Ul        [        SU R                  XAU5      5      $ )ru   rS  )rS  rW  rT  rU  rV  r   rZ   )r,   r;   rB   rC   rY   s        r-   r=   TextStringObject.clone  sb     t$"22(,(F(F%#44 5 5c_ U
 	
r0   c                 D    [        U R                  U R                  45      $ rx   )rz   r)   r?  r+   s    r-   r.   TextStringObject.hash_bin  s     T^^T%8%89::r0   c                 T    U R                   b  U R                   $ U R                  5       $ )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.
)rW  get_original_bytesr+   s    r-   r?  TextStringObject.original_bytes  s+     +'''&&((r0   c                    U R                   (       a  U R                  [        R                  :X  a"  [        R                  U R	                  S5      -   $ U R                  [        R
                  :X  a"  [        R
                  U R	                  S5      -   $ U R	                  S5      $ U R                  (       a  [        U 5      $ [        S5      e)Nutf-16leutf-16bez#no information about original bytes)	rU  rV  r^  BOM_UTF16_LEr3   r_  rT  r\  rK   r+   s    r-   rh  #TextStringObject.get_original_bytes  s       ~~!4!44**T[[-DDD~~!4!44**T[[-DDD;;z**))(..=>>r0   c                     U R                   b  U R                   $ U R                  (       a  [        SSSSS5      e[        U 5      nU$ ! [         a    U R                  [
        R                  :X  a%  [
        R                  U R                  S5      -   n U$ U R                  [
        R                  :X  a%  [
        R                  U R                  S5      -   n U$ U R                  S5      n U$ f = f)N forcedrk  rl  )	rW  rU  r]  r\  rV  r^  rm  r3   r_  )r,   bytearrs     r-   get_encoded_bytes"TextStringObject.get_encoded_bytes  s    	2##/+++$$(Xr2rBB+D1G  " 	2~~!4!44 --J0GG
 	 6#6#66 --J0GG  ++j1	2s$   A +A A
C-A C-C-,C-r_   r`   c                 h   Ub  [        SS5        U R                  5       nUR                  S5        [        SU5       Ha  n[	        [
        US   5      nUR                  5       (       d%  US:w  a  UR                  S[        U5      -  5        MP  UR                  U5        Mc     UR                  S5        g )	Nr}   r~      (cr       s   \%03o   ))r   rt  r   r   r   rm   isalnumord)r,   r_   r`   rs  c_rx  s         r-   rc    TextStringObject.write_to_stream  s     %&A7 ((*Tc7+BUBqE"A99;;19
 YQ/0Q , 	Tr0   re   r2   )r*   rf   rg   rh   rQ  rn   rk   rm   rW  r
   r   r  r   r   ro   rl   r=   r.   r   r?  rh  rt  r   rc   rp   rA   r0   r-   rS  rS    s      $#'+OXe_+C $6 F !&=?	

 
  sCx 9:	

 

 ;# ; 	) 	) 	)?E ? 5 ( MQ 27c58H2I	 r0   rS  c                   .   \ rS rSr% \R
                  " S5      rSr0 S V VVs0 s H!  n[        U5      SUS 3R                  5       _M#     snnn E\
" S5       V VVs0 s H!  n[        U5      SUS 3R                  5       _M#     snnn Er\\\\4      \S'     SS
\S\S\\\\\4         SS 4S jjrS\4S jr SS\S\S\\4   SS4S jjrS\4S jrSS jr\S\4S j5       r\S\S\4S j5       r Sr!\S\S\SS 4S j5       r"S	r#gs  snnn f s  snnn f )rJ  i  s   \s+|[\(\)<>\[\]{}/%]   /s   #()<>[]{}/%#02X!   renumber_tablerA   r;   rB   rC   r$   c                 L    [        SU R                  [        U 5      X5      5      $ )ru   rJ  )r   rZ   rJ  rE   s       r-   r=   NameObject.clone  s)     !!*T"2HN
 	
r0   c                 0    [        U R                  U 45      $ rx   ry   r+   s    r-   r.   NameObject.hash_bin(  s     T^^T*++r0   Nr_   r`   c                 `    Ub  [        SS5        UR                  U R                  5       5        g )Nr}   r~   )r   r   renumberrb   s      r-   rc   NameObject.write_to_stream2  s+     %&A7 	T]]_%r0   c                 L   U S   R                  S5      nUS:w  a  [        SU  S3S5        U SS   HL  nUS:  a1  UR                  S5       H  nUS	US
 3R                  5       -  nM     M:   XR                  U   -  nMN     U$ ! [         a    XR                  S5      -  n Mr  f = f)Nr   utf-8r  z<Incorrect first char in NameObject, should start with '/': (r   r~   rH   ~r  r  )r3   r   r  KeyError)r,   outrx  xs       r-   r  NameObject.renumber;  s    1gnnW%$;&NtfTUV abA3w'*AQqg;--//C +-..q11C  
   -88G,,C-s   +BB#"B#c                     [        U 5      R                  S5      n[        R                  " SSU5      n[        R                  " SSU5      n[	        SU-   5      $ )z
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_-])ro   removeprefixr6  subrJ  r   s     r-   	_sanitizeNameObject._sanitizeM  sL     4y%%c*vveS$'vv'd3#*%%r0   c                     [        SSS5        g)Nsurfixprefixr~   r  )r   )r  s    r-   r  NameObject.surfix\  s    $XxAr0   sinc                     U R                  SS5      nUS:  a?   U S U [        XS-   US-    5      -   XS-   S  -   n U R                  SUS-   5      nUS:  a  M?  U $ ! [         a    US-   n Nf = f)N   #r   rH   r   )findr   r&  )r  rX   s     r-   unnumberNameObject.unnumbera  s    HHT11f"1g	#!ea!e*< ==EGLHHT1q5) 1f 
	   Es   6A A,+A,)r  gbklatin1rJ   c                 L   U R                  S5      nU[        R                  :w  a  [        S5      eU[	        U [        R
                  5      -  n [        R                  U5      n[        R                   H   n UR                  U5      n[        U5      s  $    [        SUSSS5      e! [         a     M@  f = f! [        [        4 a[  nUR                  (       d4  [        SU< S3[        5        [        UR                  S5      5      s S nA$ [        SU< S	35      UeS nAff = f)
NrH   zName read errorrp  r   zCode Not Foundz!Illegal character in NameObject (z-), you may need to adjust NameObject.CHARSETSrY  z.). You may need to adjust NameObject.CHARSETS.)r   rJ  r  r   r   delimiter_patternr  rK  rL  rK   rM  r]  strictr   r*   )r_   rJ   r   rO  retr  s         r-   r   NameObject.read_from_streamp  s%   {{1~:$$$011 )E)EFF	 &&t,D!**++c*C%c?* + %Rq!5EFF !  #$67 	::7x @A A
 "$++i"8993D8 <> > 	sN   (B8 8B'B8 B8 '
B51B8 4B55B8 8D#?DD#DD#re   r2   )r$   rJ  )$r*   rf   rg   rh   r6  r7  r  r  chrr3   ranger  r	   dictro   rm   rk   r   rn   r
   r   r   rl   r=   r.   r   rc   r  r  r   r  r   r  rK  r   rp   ).0rX   r  s   000r-   rJ  rJ    s   

#;<F21?
@A3q6Qqg;%%''
@216r
;A3q6Qqg;%%''
;2NHT#u*-.  !&=?	



 

  sCx 9:	


 


,# , MQ& &27c58H2I&	&% $& u   
e 
 
 
 *H # ,  s A
;s   (D	
(D
rJ  unicode_stringr$   c                      [        U  Vs/ s H  n[        U   PM     sn5      $ s  snf ! [         a    [        SU SSS5      ef = f)Npdfdocencodingrr  z#does not exist in translation table)rm   r   r  r]  )r  ks     r-   r\  r\    sU    	
~F~!*1-~FGGF 
 1
 	

s   	* %* * Ar  c                     U SL =(       dN    [        U [        5      =(       a7    U R                  5       SL =(       d    [        U R                  5       [        5      $ )z0
Returns:
    True if x is None or NullObject.

N)r   r   rT   rr   )r  s    r-   is_null_or_noner    sE     9 1i  	O\\^t#Mz!,,.*'Mr0   )9rD  r^  ri   r6  sysr   collections.abcr   mathr   structr   typingr   r   r	   r
   r   r   version_infor   typing_extensions_codecsr   
_protocolsr   r   _utilsr   r   r   r   r   r   r   errorsr   r   r   
__author____author_email__r   rr   r   r"   r  r  r  rl   r$  rm   r9  ro   rS  rJ  r\  r  rA   r0   r-   <module>r     s5  6    	 
  $   A ABQ7" + * =   P O
/ K"! K"\- -`;<I ;<|_@Y _@D  83% 83v1!3	 1!h8>ui 8>vJsI JZxi xv

# 

% 

	s 	ytZ/O)PQ 	r0   