
    %h                        S r SrSSKrSSKrSSKJr  SSKJrJrJ	r	J
r
JrJrJrJr  SSKJr  SSKJrJrJrJrJrJrJrJrJrJr  SS	KJrJ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'  SSK(J)r)J*r*J+r+  SSK,J-r-J.r.J/r/J0r0J1r1J2r2J3r3J4r4  SSK5J6r6  SSKJ7r7J8r8  \Rr                  " \:5      r;Sr<\Rz                  " S5      r> " S S\?\35      r@ " S S\A\35      rB " S S\B5      rCS\SS4S jrD " S S \B5      rE " S! S"\E5      rF " S# S$\E5      rG " S% S&\F5      rH S/S'\S(\S)\S\I\
\I   \\J\I4   4   S\\3\J\I\H4   4S* jjrK " S+ S,\C5      rL " S- S.\C5      rMg)0zMathieu Fenniakzbiziqe@mathieu.fenniak.net    N)BytesIO)AnyDictIterableListOptionalTupleUnioncast   )PdfWriterProtocol)
WHITESPACES
StreamTypeb_deprecate_with_replacementdeprecation_with_replacementhex_strlogger_warningread_non_whitespaceread_until_regexskip_over_comment)CheckboxRadioButtonAttributesFieldDictionaryAttributes)FilterTypes)OutlineFontFlag)StreamAttributes)TypArguments)TypFitArguments)STREAM_TRUNCATED_PREMATURELYPdfReadErrorPdfStreamError   )BooleanObjectFloatObjectIndirectObject
NameObject
NullObjectNumberObject	PdfObjectTextStringObject)Fit)read_hex_string_from_streamread_string_from_streams   +-s   [+-]?(\d+)\s+(\d+)\s+R[^a-zA-Z]c                      \ rS rSr  SS\S\S\\\S4   \	\   S4   SS 4S	 jjr
S\\   4S
 jrS\S\S\\4   SS4S jrS\S\S\\4   SS4S jr\ SS\S\S\S\\	\   \\\4   4   SS 4S jj5       r\S\S\SS 4S j5       rSrg)ArrayObjectN    pdf_destforce_duplicateignore_fields.Nreturnc                     U R                   R                  U:X  a	  U(       d  U $ [        SU R	                  [        5       U5      5      nU  H  n[        U[        5      (       a?  UR	                  UR                  XU5      U5      nUR                  UR                   5        MW  [        US5      (       a#  UR                  UR                  XU5      5        M  UR                  U5        M     [        SU5      $ ! [         a     Nf = f)clone object into pdf_destr/   clone)indirect_referencepdf	Exceptionr   _reference_cloner/   
isinstanceStreamObjectr8   appendhasattr)selfr2   r3   r4   arrdatadups          W/var/www/auris/envauris/lib/python3.13/site-packages/PyPDF2/generic/_data_structures.pyr8   ArrayObject.cloneO   s    	&&**h6 =$"7"7x"PQD$-- ++JJx-H( 

3112w''

4::hOP

4   M3''  		s   "C7 7
DDc                     [        U 5      $ )z;
Emulate DictionaryObject.items for a list
(index, object)
)	enumeraterA   s    rE   itemsArrayObject.itemsj   s    
     streamencryption_keyc                     UR                  S5        U  H%  nUR                  S5        UR                  X5        M'     UR                  S5        g )N   [    s    ])writewrite_to_stream)rA   rM   rN   rC   s       rE   rS   ArrayObject.write_to_streamq   sB     	TDLL  8  	UrL   c                 @    [        SSS5        U R                  X5        g NwriteToStreamrS   3.0.0r   rS   rA   rM   rN   s      rE   rW   ArrayObject.writeToStreamz        	%_6GQV4rL   r:   forced_encodingc                    [        5       nU R                  S5      nUS:w  a  [        S5      e U R                  S5      nUR                  5       (       a(  U R                  S5      nUR                  5       (       a  M(  U R	                  SS5        U R                  S5      nUS:X  a   U$ U R	                  SS5        UR                  [        XU5      5        M  )Nr"   rP   zCould not read array   ])r/   readr    isspaceseekr?   read_object)rM   r:   r]   rB   tmptok	peekaheads          rE   read_from_streamArrayObject.read_from_stream   s     mkk!n$;566++a.C++--kk!n ++--KKAAID  
 KKAJJ{6@A rL   c                 F    [        SSS5        [        R                  X5      $ NreadFromStreamrh   rX   )r   r/   rh   rM   r:   s     rE   rl   ArrayObject.readFromStream   s#     	%%57I7S++F88rL   Fr1   N)__name__
__module____qualname____firstlineno__r   boolr
   r	   strr   r8   r   r   rJ   r   bytesrS   rW   staticmethodr   intrh   rl   __static_attributes__r1   rL   rE   r/   r/   N   s4    !&AC	(#( ( U38_d3i=>	(
 
(6x}  27c58H2I	5 527c58H2I5	5  HL tS$s)T#s(^CD 
	 0 99!$9	9 9rL   r/   c                      \ rS rSr  SS\S\S\\\S4   \	\   S4   SS 4S	 jjr
S
S S\S\S\\\S4   \	\   4   SS4
S jrS\S\4S jrS\S\S\4S jrSS\S\\   S\4S jjrS\S\4S jr\S\\   4S j5       rS\\   4S jr\S\\   4S j5       rS\S\S\\4   SS4S jrS\S\S\\4   SS4S jr\ SS\S\S\S\\	\   \\\4   4   SS 4S jj5       r\S\S\SS 4S j5       rSr g)DictionaryObject   r1   r2   r3   r4   .Nr5   c                 *    U R                   R                  U:X  a	  U(       d  U $ [        SU R	                  U R                  5       U5      5      nUc  / n[        UR                  5       5      S:X  a  UR                  XX#5        U$ ! [         a     Nlf = f)r7   r|   r   )	r9   r:   r;   r   r<   	__class__lenkeys_clonerA   r2   r3   r4   d__s        rE   r8   DictionaryObject.clone   s    	&&**h6  5 5dnn6F Q
  Msxxz?aJJtF
  		s   "B 
BBsrcc           
         SU;  a  SU;   d%  SU;  a  SU;   d  SU;  a  SU;   d  SU;  Ga  SU;   a  [        U5      nS H  nU H  n/ nXa;   d  M  X`;  d  M  [        UR                  U5      [        5      (       d  M9  [	        SX   5      nU n	Ubx  [	        SUR                  UR                  5       U5      5      n
UR                  X45        U	c   eU
R                  U	[        U5      '   U
n	 X:X  a  SnO[	        SX   5      n Ub  Mx  U H  u  pUR                  XX4U/-   5        M     M     M     UR                  5        H  u  pmXd;  d  M  [        U[        5      (       aX  [        US5      (       d  SUl        UR                  X#U5      nUR                  c   eUR                  XR                  U5      '   My  X`;  d  M  [        US	5      (       a  UR                  X#U5      OUU [        U5      '   M     g! [         a    Sn GNf = f)
update the object from src/Next/Prev/N/V))r   r   )r   r   r|   Nr9   r8   )listr=   raw_getr%   r   r<   r   r?   r9   r&   r;   r   rJ   r>   r@   r8   )rA   r   r2   r3   r4   lstkobjscur_objprev_objclonscvvvs                  rE   r   DictionaryObject._clone   s    M)gn},C&43;M)dck /M9ADM&s{{1~~FF@D.A BF%1#' 2 ' 8 89J9J9Lh W$D !KK8#+#77#76:6M6MHZ]3'+H/#*>.2G.23Ewz.RG &1  '+FQHHQ/TUSVCVW '+7  :> IIKDA%a.."1&:;;/3,MJB00<<<.0.C.CD*+}  'q'22 GGH}M!" Z]+   $- /*./s   ,G74G77HHkeyc                 ,    [         R                  X5      $ rp   )dict__getitem__rA   r   s     rE   r   DictionaryObject.raw_get   s    **rL   valuec                     [        U[        5      (       d  [        S5      e[        U[        5      (       d  [        S5      e[        R	                  XU5      $ Nzkey must be PdfObjectzvalue must be PdfObject)r=   r)   
ValueErrorr   __setitem__rA   r   r   s      rE   r   DictionaryObject.__setitem__   sG    #y))455%++677511rL   c                     [        U[        5      (       d  [        S5      e[        U[        5      (       d  [        S5      e[        R	                  XU5      $ r   )r=   r)   r   r   
setdefaultr   s      rE   r   DictionaryObject.setdefault  sE    #y))455%++677t%00rL   c                 H    [         R                  X5      R                  5       $ rp   )r   r   
get_objectr   s     rE   r   DictionaryObject.__getitem__	  s    *5577rL   c                     SSK Jn  U R                  SS5      nUc  gUR                  5       n[	        X!5      (       d  U" U5      nX [        S5      '   U$ )ah  
Retrieve XMP (Extensible Metadata Platform) data relevant to the
this object, if available.

Stability: Added in v1.12, will exist for all future v1.x releases.
@return Returns a {@link #xmp.XmpInformation XmlInformation} instance
that can be used to access XMP metadata from the document.  Can also
return None if no metadata was found on the document root.
r   )XmpInformationz	/MetadataN)xmpr   getr   r=   r&   )rA   r   metadatas      rE   xmp_metadataDictionaryObject.xmp_metadata  sU     	)88K.&&((33%h/H,4K()rL   c                 4    [        SSS5        U R                  $ )?
.. deprecated:: 1.28.3

    Use :meth:`xmp_metadata` instead.
getXmpMetadatar   rX   r   r   rI   s    rE   r   DictionaryObject.getXmpMetadata#  s     	%%5~wO   rL   c                 4    [        SSS5        U R                  $ )r   xmpMetadatar   rX   r   rI   s    rE   r   DictionaryObject.xmpMetadata.       	%]NGL   rL   rM   rN   c                    UR                  S5        [        U R                  5       5       HI  u  p4UR                  X5        UR                  S5        UR                  X5        UR                  S5        MK     UR                  S5        g )N   <<
rQ      
   >>)rR   r   rJ   rS   )rA   rM   rN   r   r   s        rE   rS    DictionaryObject.write_to_stream8  si     	Wtzz|,JC7LL!!&9LL	 -
 	UrL   c                 @    [        SSS5        U R                  X5        g rV   rY   rZ   s      rE   rW   DictionaryObject.writeToStreamC  r\   rL   r:   r]   c           
      2	  ^ S[         S[         S[        [            S[        S[         4
U4S jjmS[        S[        S[        4U4S jjnU R                  S	5      nUS
:w  a&  [        S[        U R                  5       5       S35      e0 n [        U 5      nUS:X  a  M  US:X  a  U R                  SS5        [        U 5        M9  U(       d  [        [        5      eUS:X  a  U R                  S5        OU R                  SS5         [        X5      n[        U 5      nU R                  SS5        [        XU5      nUR-                  U5      (       d  XU'   ONS[        U R                  5       5       SU 3nUb  UR                   (       a  [        U5      e[%        U[&        5        GM  U R                  5       n[        U 5      nUS:X  Ga  U R                  S5      S:X  Ga  U R                  S5      nUS:X  a  U R                  S5      nUS:X  a  M  US;  a  [        S5      eUS:X  a'  U R                  S5      S:w  a  U R                  SS5        [.        R0                  U;  a  [        S5      eU[.        R0                     n[3        U[4        5      (       a3  U R                  5       nUR7                  U5      nU R                  US5        U R                  5       nU R                  U5      US'   [        U 5      nU R                  S5      nUU-   S :w  a  U R                  5       nU R                  S!S5        U R                  S"5      nUS :X  a  US   S S US'   OUR                   (       d.  U R                  US5        U" X5      US'   U R                  5       nOSU R                  US5        [        S#[        U R                  5       5       S$U< S%U< S&35      eOU R                  US5        SU;   a  [8        R;                  U5      $ [)        5       n
U
R+                  U5        U
$ ! [         ar  n	Ub*  UR                   (       a  [        U	R#                  5       5      e[%        U	R#                  5       [&        5        [)        5       n
U
R+                  U5        U
s S n	A	$ S n	A	ff = f)'Npp1rem_gensr:   r5   c                    > UR                   US      nU H  nXU   :  d  M  XU   :  d  M  XE   nM     [        U5      S:X  a  U$ T" XUSS  U5      $ )Nr   r"   )xrefr   )r   r   r   r:   loget_next_obj_poss         rE   r   ;DictionaryObject.read_from_stream.<locals>.get_next_obj_posO  sa     !%A!9qTB  8}!	'x|SAArL   rM   c                 L  > T" U R                  5       S[        UR                  5      U5      S-
  nU R                  5       nU R                  X R                  5       -
  5      nUR	                  S5      nUS:  a  [        SU S35      eU R                  X5-   S-   5        US US-
   $ )Nl        r"   	   endstreamr   z6Unable to find 'endstream' marker for obj starting at .	   )tellr   r   ra   findr    rc   )rM   r:   eoncurrrwr   r   s         rE   read_unsized_from_steamBDictionaryObject.read_from_stream.<locals>.read_unsized_from_steam[  s    "6;;=%chhMPQQC;;=DS;;=01B%A1u"LTFRST  KK1%gA;rL   r      <<zDictionary read error at byte z: stream must begin with '<<'       %r_   r"      >z+Multiple definitions in dictionary at byte z	 for key    s   s   treamrQ   )r      z)Stream data must be followed by a newliner   r   zStream length not definedr   __streamdata__   r   ir   z7Unable to find 'endstream' marker after stream at byte z (nd='z', end='z').)ry   r   r   r   rw   ra   r    r   r   r   rc   r   r!   r   rd   r;   strict__repr__r   rq   r|   updater   SALENGTHr=   r%   r   r>   initialize_from_dictionary)rM   r:   r]   r   re   rC   rf   r   r   excretvalmsgposr   eollengthtpstartendstreamendr   s                        @rE   rh   !DictionaryObject.read_from_streamI  s&   
	B
	B
	B'+Cy
	B7:
	B
	B	J 	S 	U 	 kk!n%<01G0H I. .   "%f-Cg~B"!&)$%ABBd{AKKA!&.)&1B"#FA 88C==!S	 Bv{{}-.iu>  ?szz&s++sH-M P kkm'9Q83++a.C +kk!n +.($%PQQe|;;q>U*KKA&yy$$%@AA"))_F&.11KKM/Aq![[]F%+[[%8D!"#F+A{{1~HH- kkmC#kk!n,&-12B-CCR-HD)*KK*-DV-QD)* ++-CKKQ'&Q"6;;=12&HSGSVX ' .0 KKQt#::4@@%'FMM$MY  ?szz&s||~66s||~x8)+d#s   4P 
R$A'RRRc                 F    [        SSS5        [        R                  X5      $ rk   )r   r|   rh   rm   s     rE   rl   DictionaryObject.readFromStream  s#     	%%57I7S00==rL   ro   rp   )!rq   rr   rs   rt   r   ru   r
   r	   rv   r   r8   r   r   r   r   r   r   r)   r   propertyr   r   r   r   rw   rS   rW   rx   r   ry   rh   rl   rz   r1   rL   rE   r|   r|      s'    !&AC	#  U38_d3i=>	
 
,>> $> 	>
 U38_d3i78> 
>@+3 +3 +2s 23 23 21c 1(3- 13 18s 8y 8 hy1  ,	!	)		! !Xi0 ! !	 	27c58H2I			5 527c58H2I5	5  HLEEE tS$s)T#s(^CDE 
	E EN >>!$>	> >rL   r|   c            
          \ rS rSrS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
\SS4S jrS	\S
\SS4S jrS	\S\S
\SS4S jrS	\SS4S jrS\S\S\S\SS4
S jrS	\SS4S jrSS jrSS jrSS jrSrg)
TreeObjecti  r5   Nc                 .    [         R                  U 5        g rp   )r|   __init__rI   s    rE   r   TreeObject.__init__  s    !!$'rL   c                 <    [        SSS5        U R                  5       $ )NhasChildrenhas_children4.0.0)r   r   rI   s    rE   r   TreeObject.hasChildren  s    "=.'J  ""rL   c                     SU ;   $ )N/Firstr1   rI   s    rE   r   TreeObject.has_children  s    4rL   c                 "    U R                  5       $ rp   )childrenrI   s    rE   __iter__TreeObject.__iter__  s    }}rL   c              #      #    U R                  5       (       d  g U [        S5         nUR                  5       n Uv   X [        S5         :X  a  g UR                  [        S5      5      nUc  g UR                  5       nMF  7f)Nr  /Lastr   )r   r&   r   r   )rA   	child_refchilds      rE   r  TreeObject.children  s~       ""H-.	$$&KZ011		*W"56I ((*E s   A<A>r  r:   c                 @    [        SSS5        U R                  X5        g )NaddChild	add_childrX   )r   r  rA   r  r:   s      rE   r  TreeObject.addChild  s    $ZgFu"rL   c                 *    U R                  US U5        g rp   )insert_childr  s      rE   r  TreeObject.add_child  s    %s+rL   beforec                 (  ^ S[         S [        [        4   S[        SS 4U4S jjmUR	                  5       nUR
                  nSU ;  at  X[        S5      '   [        S5      U [        S5      '   X[        S5      '   U R
                  U[        S	5      '   T" XR                  SS
5      5        SU;   a  US	 SU;   a  US	 g [        SU S   5      nUR
                  U:w  a  SU;   a  [        SUS   5      nOw[        SU5      U[        S5      '   UR
                  U[        S5      '   U R
                  U[        S	5      '   SU;   a  US	 X[        S5      '   T" XR                  SS
5      5        g UR
                  U:w  a  M   [        US   [        5      (       d   eXS   [        S5      '   US   U[        S5      '   XT[        S5      '   X[        S5      '   U R
                  U[        S	5      '   T" XR                  SS
5      5        g ! [         a    US	  NZf = f)Nparentnr5   c           	         > U c  g [        SU R                  5       5      n SU ;   aN  [        [        [        U [	        S5         5      U-   5      U [	        S5      '   T" U R                  SS 5      U5        g g )Nr   /Count/Parent)r   r   r(   ry   r&   r   )r  r  inc_parent_counters     rE   r  3TreeObject.insert_child.<locals>.inc_parent_counter  ss     ~,(9(9(;<F6!/;fZ%9:;a?0z(+, #6::i#>B	 "rL   r  r   r  r	  r  r"   r   r   r|   r   )r
   r%   r   ry   r   r9   r&   r(   r   r   r=   r|   r;   )rA   r  r  r:   	child_objprevr  s         @rE   r  TreeObject.insert_child  s$   
	C$
:;
	C@C
	C
	C $$&	(( 4).H%&)5aDH%&(-G$%/3/F/FIj+,t]]8Q%?@)#g&)#g&*DM:D%%/$L$w-8,0u,EZ()151H1H	*W-.373J3J	*Y/0i'!'*,1Z()"4x)CD %%/	#d7m-=>>>>16M*W-.-1']Ij)* *.*W%&$)Z !+/+B+B	*Y'(4x!;<  	#'"	#s   ;;H HHc                 @    [        SSS5        U R                  U5        g )NremoveChildremove_childrX   )r   r#  )rA   r  s     rE   r"  TreeObject.removeChild4  s    $]NGL% rL   r  prev_refcurlastc                 p   UR                  [        S5      S5      nUc  U(       aP  UR                  5       nU[        S5      	 XP[        S5      '   [        U [        S5         S-
  5      U [        S5      '   gU [        S5         S:X  d   eU [        S5      	 U [        S5      	 [        S5      U ;   a  U [        S5      	 ggU(       a+  UR                  5       nX&[        S5      '   XQ[        S5      '   O X4:X  d   eU[        S5      	 X [        S5      '   [        U [        S5         S-
  5      U [        S5      '   g)z;Adjust the pointers of the linked list and tree node count.r   Nr   r  r  r"   r	  )r   r&   r   r(   )rA   r  r%  r&  r'  next_refnext_objs          rE   _remove_node_from_tree!TreeObject._remove_node_from_tree8  s9    77:g.5<#..0Z01-5Z)*-9H-.2.Z)* Jx01Q666H-.H-.g&$.Z01 / #..008G,-,4Z() {"{G,-,4Z())5d:h;O6PST6T)UDH%&rL   c                    UR                  5       nUR                  n[        S5      U;  a  [        S5      eU[        S5         U :w  a  [        S5      eSnS nS nU [        S5         nUR                  5       nU [        S5         nUR                  5       n	UbU  Xr:X  a  U R	                  XTXy5        SnO;UnUn[        S5      U;   a  U[        S5         nUR                  5       nOS nS nUb  MU  U(       d  [        S	5      e[        U5        g )
Nr  /Removed child does not appear to be a tree itemz*Removed child is not a member of this treeFr  r	  Tr   z"Removal couldn't find item in tree)r   r9   r&   r   r+  _reset_node_tree_relationship)
rA   r  r  foundr%  r  cur_refr&  last_refr'  s
             rE   r#  TreeObject.remove_child[  s   $$&	,,i 	1NOOz),-5IJJ!%j&:!;(/(:(:(<
7+,""$o++DCF HD'"c)j12((* o  ABB%i0rL   c                 t    [        S5      U ;  a  [        S5      e[        SU S   5      R                  U 5        g)z*
remove the object from the tree it is in
r  r.  r   N)r&   r   r   r#  rI   s    rE   remove_from_treeTreeObject.remove_from_tree  s6     i ,NOOtI/<<TBrL   c                 >    [        SSS5        U R                  5         g )N	emptyTree
empty_treer   )r   r9  rI   s    rE   r8  TreeObject.emptyTree  s    ";gFrL   c                     U  H  nUR                  5       n[        U5        M      [        S5      U ;   a  U [        S5      	 [        S5      U ;   a  U [        S5      	 [        S5      U ;   a  U [        S5      	 g g )Nr  r  r	  )r   r/  r&   )rA   r  r  s      rE   r9  TreeObject.empty_tree  sw    E((*I))4  h4'Z)*h4'Z)*g$&Z() 'rL   r1   r5   N)rq   rr   rs   rt   r   ru   r   r   r   r  r   r  r  r   r  r  r"  r+  r#  r5  r8  r9  rz   r1   rL   rE   r   r     s    (#T # d  # +(3- +#c # # #,s ,): ,t ,5=# 5=s 5=9J 5=t 5=n! ! !!V!V#&!V-0!V8;!V	!VF#1# #1$ #1JC
*rL   r   r  r5   c                     U [        S5      	 [        S5      U ;   a  U [        S5      	 [        S5      U ;   a  U [        S5      	 gg)zq
Call this after a node has been removed from a tree.

This resets the nodes attributes in respect to that tree.
r  r   r   N)r&   )r  s    rE   r/  r/    sJ     	*Y'('i'j)*'i'j)* (rL   c                     ^  \ rS rSrSS jrS\S\S\S\\	\
S	4   \\
   4   SS4
U 4S
 jjrS\4U 4S jjr\S\S   4S j5       r\R$                  SS j5       r\S\4S j5       r\R$                  S\SS4S j5       rS\S\S\
\4   SS4S jr\S\\
\4   S\S   4S j5       r\S\\
\4   S\S   4S j5       rSS jrSS jrSrU =r$ )r>   i  r5   Nc                      S U l         S U l        g rp   )_StreamObject__datadecoded_selfrI   s    rE   r   StreamObject.__init__  s    %)=ArL   r   r2   r3   r4   .c                    > [        SU5      R                  U l         [        SU5      R                  nUc  SU l        OUR                  USU5      U l         [
        TU ]  XX45        g! [         a     Nf = f)r   r>   NT)r   _datarB  r8   r;   superr   )rA   r   r2   r3   r4   rB  r   s         rE   r   StreamObject._clone  s|     .#.44
	4AAL#$(!$0$6$6x}$U! 	soE  		s    A) A) )
A65A6c                 T   > [         TU ]  5       nU[        U R                  5      -  nU$ rp   )rF  hash_value_datar   rE  )rA   rC   r   s     rE   rI  StreamObject.hash_value_data  s'    w&(4::rL   DecodedStreamObjectc                 4    [        SSS5        U R                  $ NdecodedSelfrB  rX   r   rB  rI   s    rE   rN  StreamObject.decodedSelf      $]NGL   rL   r   c                 *    [        SSS5        Xl        g rM  rO  rA   r   s     rE   rN  rP        $]NGL!rL   c                     U R                   $ rp   rA  rI   s    rE   rE  StreamObject._data  s    {{rL   c                     Xl         g rp   rV  rS  s     rE   rE  rW    s    rL   rM   rN   c                 j   [        [        U R                  5      5      U [        [        R
                  5      '   [        R                  XU5        U [        R
                  	 UR                  S5        U R                  nU(       a  SSK	J
n  U" X#5      nUR                  U5        UR                  S5        g )Ns   
stream
r   )RC4_encrypts
   
endstream)r(   r   rE  r&   r   r   r|   rS   rR   	_securityrZ  )rA   rM   rN   rC   rZ  s        rE   rS   StreamObject.write_to_stream  s|     '33tzz?&CZ		"#((~FO]#zz/~4DT^$rL   rC   )EncodedStreamObjectrK  c                 ,    [         R                  U 5      $ rp   )r>   r   )rC   s    rE   initializeFromDictionary%StreamObject.initializeFromDictionary  s     66t<<rL   c                     [         R                  U ;   a  [        5       nO
[        5       nU S   Ul        U S	 U [         R
                  	 UR                  U 5        U$ )Nr   )r   FILTERr]  rK  rE  r   r   )rC   r   s     rE   r   'StreamObject.initialize_from_dictionary  sR    
 99(*F(*F,-!"OdrL   c                 <    [        SSS5        U R                  5       $ )NflateEncodeflate_encoderX   )r   rf  rI   s    rE   re  StreamObject.flateEncode  s    $]NGL  ""rL   c                    SSK Jn  [        R                  U ;   a  U [        R                     n[	        U[
        5      (       a*  UR                  S[        [        R                  5      5        OC[        5       nUR                  [        S5      5        UR                  U5        UnO[        S5      n[        5       nX$[        [        R                  5      '   UR                  U R                  5      Ul        U$ )Nr   )FlateDecoder   z/FlateDecode)filtersri  r   rb  r=   r/   insertr&   FTFLATE_DECODEr?   r]  encoderE  )rA   ri  fnewfr   s        rE   rf  StreamObject.flate_encode  s    )99RYYA![))Jr78"}J~67A>*A$&()z"))$%"))$**5rL   )__datarE  rB  r=  )r   rK  r5   N)r5   r]  )rq   rr   rs   rt   r   r|   r   ru   r
   r	   rv   r   r   rw   rI  r   r   rN  setterr   rE  r   rS   rx   r   r_  r   re  rf  rz   __classcell__)r   s   @rE   r>   r>     sx   B $ 	
 U38_d3i78 
( 
 !X&;< ! ! " " s   \\3 4  % %27c58H2I%	% =38n=	;	<= =
 38n	;	< # rL   r>   c                   T    \ rS rSrS\4S jrS\S\4S jrS\4S jrS\SS4S jrS	r	g)
rK  i  r5   c                     U R                   $ rp   rE  rI   s    rE   get_dataDecodedStreamObject.get_data  s    zzrL   rC   c                     Xl         g rp   rw  rA   rC   s     rE   set_dataDecodedStreamObject.set_data  s    
rL   c                 4    [        SSS5        U R                  $ NgetDatarx  rX   )r   rE  rI   s    rE   r  DecodedStreamObject.getData  s    $Y
GDzzrL   Nc                 @    [        SSS5        U R                  U5        g NsetDatar|  rX   r   r|  r{  s     rE   r  DecodedStreamObject.setData  s    $Y
GDdrL   rw  )
rq   rr   rs   rt   r   rx  r|  r  r  rz   r1   rL   rE   rK  rK    s@    # S S  C D rL   rK  c                       \ rS rSrSS jr\S\S   4S j5       r\R                  S\	SS4S j5       rS\
S\\4   4S	 jrS\
S\\4   4S
 jrS\SS4S jrS\SS4S jrSrg)r]  i#  r5   Nc                     S U l         g rp   rB  rI   s    rE   r   EncodedStreamObject.__init__$  s
    =ArL   rK  c                 4    [        SSS5        U R                  $ rM  rO  rI   s    rE   rN  EncodedStreamObject.decodedSelf'  rQ  rL   r   c                 *    [        SSS5        Xl        g rM  rO  rS  s     rE   rN  r  ,  rT  rL   c                 d   SSK Jn  U R                  b  U R                  R                  5       $ [	        5       nU" U 5      Ul        [        U R                  5       5       H>  u  p4U[        R                  [        R                  [        R                  4;  d  M:  XBU'   M@     X l        UR
                  $ )Nr   )decode_stream_data)rj  r  rB  rx  rK  rE  r   rJ   r   r   rb  DECODE_PARMS)rA   r  decodedr   r   s        rE   rx  EncodedStreamObject.get_data1  s    0($$--// *+G.t4GM"4::<0
ryy"))R__EE#(CL 1 !(== rL   c                 <    [        SSS5        U R                  5       $ r  )r   rx  rI   s    rE   r  EncodedStreamObject.getDataB  s    $Y
GD}}rL   rC   c                     [        S5      e)Nz7Creating EncodedStreamObject is not currently supported)r    r{  s     rE   r|  EncodedStreamObject.set_dataF  s    TUUrL   c                 >    [        SSS5        U R                  U5      $ r  r  r{  s     rE   r  EncodedStreamObject.setDataI  s    $Y
GD}}T""rL   r  r=  )rq   rr   rs   rt   r   r   r   rN  rs  rK  r
   rv   rw   rx  r  r   r|  r  rz   r1   rL   rE   r]  r]  #  s    B !X&;< ! ! "!4 " " "!%c5 01 !"tS%/0 VS VT V#C #D #rL   r]  c                   H   \ rS rSr SS\S\S\S\\\   \\	\4   4   SS4S jjr
  SS\S	\S
\\\S4   \\   S4   SS 4S jjrS\S\S	\S
\\\S4   \\   4   SS4
S jrS\SS4S jrS\S\\\4   4S jr\S\4S j5       r\R.                  S\\\4   SS4S j5       rSrg)ContentStreamiN  NrM   r:   r]   r5   c                    X l         / U l        Ub  UR                  5       n[        U[        5      (       a`  SnU HL  nU[        UR                  5       R                  5       5      -  n[        U5      S:X  d  US   S:w  d  MG  US-  nMN     [        U5      nO+UR                  5       nUc   e[        U5      n[        U5      nX0l	        U R                  U5        g g )NrL   r   r_   r   )r:   
operationsr   r=   r/   r   rx  r   r   r]   $_ContentStream__parse_content_stream)	rA   rM   r:   r]   rC   r   stream_bytesstream_datastream_data_bytess	            rE   r   ContentStream.__init__O  s     
 24 &&(F&+..ABq||~66899D4yA~bU):    't}$oo/"...$&{O!&'89#2 ''5 rL   r2   r3   r4   .c           	           U R                   R                  U:X  a	  U(       d  U $ [        SU R	                  U R                  SS5      U5      5      nUc  / nUR                  XX#5        U$ ! [         a     NQf = f)r7   r  N)r9   r:   r;   r   r<   r   r   r   s        rE   r8   ContentStream.cloneo  s    	&&**h6 T224>>$3MxX
  M

4?B
  		s   "A* *
A76A7r   c                     X l         [        [        SU5      R                  5      U l        [        SU5      R                  U l        g)r   r  N)r:   r   r   r  r]   )rA   r   r2   r3   r4   s        rE   r   ContentStream._clone  s<     tOS9DDE#OS9II 	rL   c                 B   UR                  SS5        / n [        U5      nUS:X  d  US:X  a  g UR                  SS5        UR                  5       (       d  US;   aw  [        U[        R
                  S5      nUS:X  a7  U/ :X  d   eU R                  U5      nU R                  R                  US45        OkU R                  R                  X$45        / nOLUS	:X  a   US
;  a  UR                  S5      nUS
;  a  M  O&UR                  [        US U R                  5      5        GM  )Nr   TrL   r_   r"   )   '   "   BI   INLINE IMAGEr   r   r   )rc   r   isalphar   r&   delimiter_pattern_read_inline_imager  r?   ra   rd   r]   )rA   rM   operandspeekoperatoriis         rE   __parse_content_stream$ContentStream.__parse_content_stream  s	   Aq57&v.Ds{daiKKA||~~!5+FJ4P4PRVWu$ $r>)>008BOO**B+@AOO**H+?@!H .0!;;q>D .0 FD$:N:N OP3 rL   c                 (   [        5       n [        U5      nUR                  SS5        US:X  a  OM[        XR                  5      n[        U5      nUR                  SS5        [        XR                  5      nXRU'   Mq  UR                  S5      nUS S S:X  d   e[        5       n UR                  S5      nU(       d  [        S	5      eUR                  S
5      n	U	S:X  a  UR                  U5        GOUR                  USU	 5        UR                  U	[        U5      -
  S5        UR                  S5      nUR                  S5      n
U
S:X  a  XS-
  U	 [        ;   a  UR                  S5      nX:-   nSnU[        ;   a#  SnX-  nUR                  S5      nU[        ;   a  M#  U(       a  UR                  SS5        OJUR                  SS5        UR                  U5        O#UR                  SS5        UR                  U5        GM^  X'R                  5       S.$ )NTr_   r"      I   r   s   IDi    zUnexpected end of stream   Er   F)settingsrC   )r|   r   rc   rd   r:   ra   r   r    r   rR   r   r   getvalue)rA   rM   r  rf   r   r   re   rC   bufloctok2tok3infohas_q_whitespaces                 rE   r   ContentStream._read_inline_image  s    $%%f-CKKAd{fhh/C%f-CKKA1E!SM  kk!n2Aw%y++d#C"#=>>((4.Cby

3 

3q:& C#c(NA.kk!n{{1~4<Ca#$6+$E!;;q>D:D',$+-+/(%{{1~ +- (B*B*

4(KKA&JJsOK L %mmo>>rL   c                 ,   [        5       nU R                   H  u  p#US:X  a  UR                  S5        [        5       nUS   R                  US 5        UR                  UR	                  5       SS 5        UR                  S5        UR                  US   5        UR                  S5        OFU H&  nUR                  US 5        UR                  S	5        M(     UR                  [        U5      5        UR                  S
5        M     UR	                  5       $ )Nr  r  r  r   s   ID rC   s   EIrQ   r   )r   r  rR   rS   r  r   )rA   newdatar  r  dicttextops         rE   rE  ContentStream._data  s    )"&//H?*e$"9$44XtDh//1!B78f%hv./e$"B&&w5MM$' # bl+MM%  #2 !!rL   r   c                 J    U R                  [        [        U5      5      5        g rp   )r  r   r   rS  s     rE   rE  r    s    ##GBuI$67rL   )r]   r  r:   rp   ro   )rq   rr   rs   rt   r   r
   rv   r   r   ry   r   ru   r	   r8   r|   r   r   r   r  r  r   rw   rE  rs  rz   r1   rL   rE   r  r  N  sa   
 HL	66 6 tS$s)T#s(^CD	6
 
6F !&AC	  U38_d3i=>	
 
* $ 	
 U38_d3i78 
QZ QD Q<:? :?S#X :?x "u " "& \\85e, 8 8 8rL   r  rM   r:   r]   c           
         U R                  S5      nU R                  SS5        US:X  a  [        R                  " X5      $ US:X  aJ  U R                  S5      nU R                  SS5        US:X  a  [        R                  XU5      $ [        X5      $ US:X  a  [        R                  XU5      $ US	:X  d  US
:X  a  [        R                  " U 5      $ US:X  a  [        X5      $ US:X  a1  U R                  S5      S:X  a  U R                  SS5        [        5       $ US:X  a  [        R                  " U 5      $ US:X  ab  US;  a3  U R                  S5      n[        U5      S::  a  [        S5      eUS;  a  M3  [        U 5      nU R                  SS5        [        XU5      $ US;   ao  U R                  S5      nU R                  [        U5      * S5        [        R                  U5      b  [         R                  " X5      $ ["        R                  " U 5      $ U R                  SS5        [%        SU< SU R'                  5        SU R                  S5      R)                  5        35      e)Nr"   r_      /   <r   r  r   rP      t   f   (   e   s   endobji   nr   r  r   zFile ended unexpectedly.s   0123456789+-.   iz(Invalid Elementary Object starting with z @z: P   )ra   rc   r&   rh   r|   r,   r/   r#   r-   r'   r   r!   r   rd   IndirectPatternmatchr%   r(   r    r   r   )rM   r:   r]   rf   r  s        rE   rd   rd     s   
 ++a.C
KKA
d{**677	{{1~B5=#44V/RR.vGG	++FII	t--f55	&v??	Q94B|	**622	'++a.C 3x1}$%?@@ ' "&)B688	 	 {{2SYJ"  &2!226??0088C6sgRbQWQ\Q\]_Q`QiQiQkPlm
 	
rL   c                      \ rS rSrSrS\\\4   SS4S jr\	S\
\   4S j5       r\	S\
\   4S j5       r\	S\
\   4S	 j5       r\	S\
S
   4S j5       r\	S\
\   4S j5       r\	S\
\   4S j5       r\	S\
\   4S j5       r\	S\
\   4S j5       r\	S\
\   4S j5       r\	S\
\   4S j5       r\	S\
\   4S j5       r\	S\
\   4S j5       r\	S\
\   4S j5       r\	S\
\   4S j5       r\	S\
\   4S j5       rSrg)Fieldi=  z|
A class representing a field dictionary.

This class is accessed through
:meth:`get_fields()<PyPDF2.PdfReader.get_fields>`
rC   r5   Nc                     [         R                  U 5        [        R                  " 5       [        R                  " 5       -   nU H  n X   U [        U5      '   M     g ! [         a     M&  f = frp   )r|   r   r   
attributesr   r&   KeyError)rA   rC   field_attributesattrs       rE   r   Field.__init__E  sh    !!$'%002+6689 	 %D)-Z%& %  s   A
A*)A*c                 @    U R                  [        R                  5      $ )z4Read-only property accessing the type of this field.)r   r   rl  rI   s    rE   
field_typeField.field_typeR       xx14455rL   c                 4    [        SSS5        U R                  $ )z@
.. deprecated:: 1.28.3

    Use :py:attr:`field_type` instead.
	fieldTyper  rX   )r   r  rI   s    rE   r  Field.fieldTypeW  s     	%[,HrL   c                 @    U R                  [        R                  5      $ )z6Read-only property accessing the parent of this field.)r   r   ParentrI   s    rE   r  Field.parenta  s     xx18899rL   r/   c                 @    U R                  [        R                  5      $ )z4Read-only property accessing the kids of this field.)r   r   KidsrI   s    rE   kids
Field.kidsf  s     xx16677rL   c                 @    U R                  [        R                  5      $ )z4Read-only property accessing the name of this field.)r   r   TrI   s    rE   name
Field.namek  s     xx13344rL   c                 @    U R                  [        R                  5      $ )z>Read-only property accessing the alternate name of this field.)r   r   TUrI   s    rE   alternate_nameField.alternate_namep  r  rL   c                 4    [        SSS5        U R                  $ )zD
.. deprecated:: 1.28.3

    Use :py:attr:`alternate_name` instead.
altNamer  rX   )r   r  rI   s    rE   r  Field.altNameu  s     	%Y0@'J"""rL   c                 @    U R                  [        R                  5      $ )z
Read-only property accessing the mapping name of this field. This
name is used by PyPDF2 as a key in the dictionary returned by
:meth:`get_fields()<PyPDF2.PdfReader.get_fields>`
)r   r   TMrI   s    rE   mapping_nameField.mapping_name       xx14455rL   c                 4    [        SSS5        U R                  $ )zB
.. deprecated:: 1.28.3

    Use :py:attr:`mapping_name` instead.
mappingNamer  rX   )r   r  rI   s    rE   r  Field.mappingName  r   rL   c                 @    U R                  [        R                  5      $ )z
Read-only property accessing the field flags, specifying various
characteristics of the field (see Table 8.70 of the PDF 1.7 reference).
)r   r   FfrI   s    rE   flagsField.flags  s     xx14455rL   c                 @    U R                  [        R                  5      $ )zZ
Read-only property accessing the value of this field. Format
varies based on field type.
)r   r   VrI   s    rE   r   Field.value  s     xx13344rL   c                 @    U R                  [        R                  5      $ )z=Read-only property accessing the default value of this field.)r   r   DVrI   s    rE   default_valueField.default_value  r  rL   c                 4    [        SSS5        U R                  $ )zC
.. deprecated:: 1.28.3

    Use :py:attr:`default_value` instead.
defaultValuer  rX   )r   r  rI   s    rE   r  Field.defaultValue  s     	%^_gN!!!rL   c                 @    U R                  [        R                  5      $ )z
Read-only property accessing the additional actions dictionary.
This dictionary defines the field's behavior in response to trigger events.
See Section 8.5.2 of the PDF 1.7 reference.
)r   r   AArI   s    rE   additional_actionsField.additional_actions  r  rL   c                 4    [        SSS5        U R                  $ )zH
.. deprecated:: 1.28.3

    Use :py:attr:`additional_actions` instead.
additionalActionsr  rX   )r   r  rI   s    rE   r  Field.additionalActions  s     	%%8:NPWX&&&rL   r1   )rq   rr   rs   rt   __doc__r   rv   r   r   r   r   r&   r  r  r|   r  r  r  r  r  r  r  ry   r  r   r  r  r  r  rz   r1   rL   rE   r  r  =  s   
T#s(^ 
 
 6HZ0 6 6 8J/   :!12 : : 8h}- 8 8 5hsm 5 5 6 6 6 ## # # 6hsm 6 6 !Xc] ! ! 6x} 6 6 5x} 5 5 6x} 6 6 "hsm " " 6H-=$> 6 6 '8,<#= ' 'rL   r  c                      \ rS rSr% SrSr\\   \S'   / r	\
\   \S'   S\S\\\\\4   S\S	S4S
 jr\SS j5       rSS jrS\S\S\\4   S	S4S jr\S	\\   4S j5       r\S	\\   4S j5       r\S	\\   4S j5       r\S	\\   4S j5       r\S	\\   4S j5       r\S	\\   4S j5       r \S	\\   4S j5       r!\S	\\   4S j5       r"\S	\S   4S j5       r#\S	\\$   4S j5       r%\S	\\   4S j5       r&Sr'g)Destinationi  a  
A class representing a destination within a PDF file.
See section 8.2.1 of the PDF 1.6 reference.

:param str title: Title of this destination.
:param IndirectObject page: Reference to the page of this destination. Should
    be an instance of :class:`IndirectObject<PyPDF2.generic.IndirectObject>`.
:param Fit fit: How the destination is displayed.
:raises PdfReadError: If destination type is invalid.


Nnodechildstitlepagefitr5   c                    UR                   nUR                  n[        R                  U 5        [	        U5      U [        S5      '   X [        S5      '   X@[        S5      '   US:X  aG  Uu  U [        [        R                  5      '   U [        [        R                  5      '   U [        S5      '   g U[        R                  :X  ap  Uu  U [        [        R                  5      '   U [        [        R                  5      '   U [        [        R                  5      '   U [        [        R                  5      '   g U[        R                  [        R                  4;   a    Uu  U [        [        R                  5      '   g U[        R"                  [        R$                  4;   a    Uu  U [        [        R                  5      '   g U[        R&                  [        R(                  4;   a  g [+        SU< 35      e! [         a'    [!        5       U [        [        R                  5      '    g f = f! [         a'    [!        5       U [        [        R                  5      '    g f = f)N/Title/Page/Typez/XYZ/ZoomzUnknown Destination Type: )fit_typefit_argsr|   r   r*   r&   TALEFTTOPTFFIT_RBOTTOMRIGHTFIT_HFIT_BHr;   r'   FIT_VFIT_BVFITFIT_Br    )rA   r  r  r  typargss         rE   r   Destination.__init__  s    ll||!!$'%5e%<Z!"$(Z !$'Z ! &=
 	Z()Z'(Z()BHH_ Z()Z		*+Z)*Z'(RXXryy))>.2+j() RXXryy))?/3,j)* RVVRXX&&!;C7CDD  >/9|j()>
  ?0:j)*?s$   G, H  ,.HH .IIr/   c                     [        U R                  S5      U S   /S Vs/ s H  nX;   d  M
  X   PM     sn-   5      $ s  snf )Nr  r  )/Left/Bottom/Right/Topr   )r/   r   )rA   xs     rE   
dest_arrayDestination.dest_array  sU    \\'"DM2 IHA9 H
 	
s   	=
=
c                 4    [        SSS5        U R                  $ )z@
.. deprecated:: 1.28.3

    Use :py:attr:`dest_array` instead.
getDestArrayr9  rX   )r   r9  rI   s    rE   r<  Destination.getDestArray  s     	%^\7KrL   rM   rN   c                    UR                  S5        [        S5      nUR                  X5        UR                  S5        U R                  nUR                  X5        [        S5      nUR                  X5        UR                  S5        [        S5      nUR                  X5        UR                  S5        UR                  S5        g )Nr   z/DrQ   z/Sz/GoTor   r   )rR   r&   rS   r9  )rA   rM   rN   r   r   value_ss         rE   rS   Destination.write_to_stream  s     	WF3Tf5F3TW%7UUrL   c                 $    U R                  S5      $ )z3Read-only property accessing the destination title.r  r   rI   s    rE   r  Destination.title*  s     xx!!rL   c                 $    U R                  S5      $ )z9Read-only property accessing the destination page number.r  rB  rI   s    rE   r  Destination.page/       xx  rL   c                 $    U R                  S5      $ )z2Read-only property accessing the destination type.r  rB  rI   s    rE   r0  Destination.typ4  rF  rL   c                 &    U R                  SS5      $ )z-Read-only property accessing the zoom factor.r   NrB  rI   s    rE   zoomDestination.zoom9       xx&&rL   c                 &    U R                  SS5      $ )z<Read-only property accessing the left horizontal coordinate.r4  NrB  rI   s    rE   leftDestination.left>  rL  rL   c                 &    U R                  SS5      $ )z=Read-only property accessing the right horizontal coordinate.r6  NrB  rI   s    rE   rightDestination.rightC  s     xx$''rL   c                 &    U R                  SS5      $ )z9Read-only property accessing the top vertical coordinate.r7  NrB  rI   s    rE   topDestination.topH  s     xx%%rL   c                 &    U R                  SS5      $ )z<Read-only property accessing the bottom vertical coordinate.r5  NrB  rI   s    rE   bottomDestination.bottomM  s     xx	4((rL   c           
      t    U R                  S[        [        S5      [        S5      [        S5      /5      5      $ )zGRead-only property accessing the color in (R, G, B) with values 0.0-1.0z/Cr   )r   r/   r$   rI   s    rE   colorDestination.colorR  s2     xx+{1~{1~{1~NO
 	
rL   c                 &    U R                  SS5      $ )zDRead-only property accessing the font type. 1=italic, 2=bold, 3=bothz/Fr   rB  rI   s    rE   font_formatDestination.font_formatY  s     xxa  rL   c                 &    U R                  SS5      $ )z
Read-only property accessing the outline count.
positive = expanded
negative = collapsed
absolute value = number of visible descendents at all levels
r  NrB  rI   s    rE   outline_countDestination.outline_count^  s     xx$''rL   r1   )r5   r/   )(rq   rr   rs   rt   r  r  r   r|   __annotations__r  r   r   rv   r
   r(   r%   r'   r+   r   r   r9  r<  r   rw   rS   r  ry   r  r0  rJ  r$   rN  rQ  rT  rW  rZ  r   r]  r`  rz   r1   rL   rE   r  r    s    	 	(  FDI)E)E L.*>NNO)E 	)E
 
)EV 
 
 27c58H2I	& "x} " " !hsm ! ! !Xc] ! ! 'hsm ' ' 'h{+ ' ' (x, ( ( &Xk* & & )- ) ) 
x. 
 
 !Xo6 ! ! (x} ( (rL   r  rp   )N
__author____author_email__loggingreior   typingr   r   r   r   r   r	   r
   r   
_protocolsr   _utilsr   r   r   r   r   r   r   r   r   r   	constantsr   r   r   rl  r   r   r   r   r#  r   r&  errorsr   r    r!   _baser#   r$   r%   r&   r'   r(   r)   r*   _fitr+   r,   r-   	getLoggerrq   loggerNumberSignscompiler  r   r/   r   r|   r   r/  r>   rK  r]  r  rv   ry   rd   r  r  r1   rL   rE   <module>rs     s  : 
/   	  J J J *   * ' . * - O O	 	 	  H			8	$**@AP9$	 P9fu>tY u>p	~*! ~*B
+S 
+T 
+i# iX,  (#, (#Vu8' u8v DH4
4
	4
 4d3ic3h?@4
 9c3-.	4
nE'J E'Pa(* a(rL   