
    є jm                    r   d Z dZddlZddlZddlZddlmZ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 dd	lmZmZmZ dd
lmZmZmZmZmZmZmZmZmZ ddl m!Z!m"Z"m#Z#m$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/ ddl0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z: ddl;m<Z< ddl=m>Z>m?Z?m@Z@mAZAmBZB ddlmCZCmDZD ejE        dk    rddlmFZF nddlGmFZF  ejH        eI          ZJ ejK        d          ZL G d deMe         e8          ZN G d deOeef         e8          ZP G d deP          ZQdeddfd ZR G d! d"eP          ZS G d# d$eS          ZT G d% d&eS          ZUd'ZV G d( d)eT          ZW	 d2d*ed+ee         d,edeXeMeX         eOeYeXf         f         dee8eYeXeWf         fd-ZZ G d. d/eQ          Z[ G d0 d1eQ          Z\dS )3zMathieu Fenniakzbiziqe@mathieu.fenniak.net    N)IterableSequence)BytesIO)ceil)AnyCallableOptionalUnioncast   )PdfReaderProtocolPdfWriterProtocolXmpInformationProtocol)	WHITESPACESBinaryStreamType
StreamTypedeprecation_no_replacementlogger_warningread_non_whitespaceread_until_regexread_until_whitespaceskip_over_comment)CheckboxRadioButtonAttributesFieldDictionaryAttributesOutlineFontFlagStreamAttributes)FilterTypes)TypArguments)TypFitArguments)STREAM_TRUNCATED_PREMATURELYLimitReachedErrorPdfReadErrorPdfStreamError   )
BooleanObjectByteStringObjectFloatObjectIndirectObject
NameObject
NullObjectNumberObject	PdfObjectTextStringObjectis_null_or_none)Fit)extract_inline__ascii85_decode extract_inline__ascii_hex_decodeextract_inline__dct_decode!extract_inline__run_length_decodeextract_inline_default)read_hex_string_from_streamread_string_from_stream)      )Selfs   [+-]?(\d+)\s+(\d+)\s+R[^a-zA-Z]c                   f   e Z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e
fd	Zdee         fd
Zdedee         fdZdedd 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dedee         dede	ee	         ee
e	f         f         dd fd            ZdS )ArrayObjectpdf_destreturnc                    t          d|                     t                      |d                    }| D ]P}t          |d          r)|                    |                    |                     ;|                    |           Q|S )Nr;   F	replicate)r   _reference_cloner;   hasattrappendr?   )selfr<   arrdatas       rC:\Users\Terasoftware\OneDrive\Desktop\faahhh\fyndo\fyndo\venv\Lib\site-packages\pypdf/generic/_data_structures.pyr?   zArrayObject.replicatee   s     !!+--5AA
 
  	! 	!Dt[)) !

4>>(334444

4    
    F force_duplicateignore_fieldsc                 *   	 | j         j        |k    r|s| S n# t          $ r Y nw xY wt          d|                     t                      |d                    }| D ]6}t          |t                    rG|                    |                    |||          ||          }|	                    |j                    _t          |t                    rqt          |                                x}t                    rH|                    |                    |d|          ||          }|	                    |j                    t          |d          r,|	                    |                    |||                     !|	                    |           8|S )Clone object into pdf_dest.r;   T)rI   )rI   rJ   clone)indirect_referencepdf	Exceptionr   r@   r;   
isinstanceStreamObjectrM   rB   r(   
get_objectrA   )rC   r<   rI   rJ   rD   rE   dupresolveds           rF   rM   zArrayObject.clonet   s   	&*h6   	 	 	D	!!+--4!PP
 
  	! 	!D$-- !++JJx-HH# 
 

312222D.11 
!jT__M^M^A^`l6m6m 
!++NN8TQ^N__# 
 

312222w'' !

4::hOOPPPP

4    
    
$$c                 \    t          | j        t          d | D                       f          S )q
        Used to detect modified object.

        Returns:
            Hash considering type and value.

        c              3   >   K   | ]}|                                 V  d S Nhash_bin).0xs     rF   	<genexpr>z'ArrayObject.hash_bin.<locals>.<genexpr>   s*      *F*FA1::<<*F*F*F*F*F*FrG   )hash	__class__tuplerC   s    rF   r\   zArrayObject.hash_bin   s0     T^U*F*F*F*F*F%F%FGHHHrG   c                      t          |           S )z:Emulate DictionaryObject.items for a list (index, object).)	enumeraterc   s    rF   itemszArrayObject.items   s    rG   lstc                 t   t          |t          t          t          f          rt          |          }nt          |t                    r|g}nlt          |t
                    r.|d         dk    rt          |          g}n:t          |          g}n)t          |t                    rt          |          g}n|g}|S )Nr   /)
rQ   listrb   setr,   strr)   r-   bytesr&   )rC   rg   results      rF   _to_lstzArrayObject._to_lst   s     cD%-.. 	#YYFFY'' 
	UFFS!! 	1v} 1$S//**3//0U## 	&s++,FFUFrG   c                 t    t          |           }|                    |                     |                     |S )a  
        Allow extension by adding list or add one element only

        Args:
            lst: any list, tuples are extended the list.
            other types(numbers,...) will be appended.
            if str is passed it will be converted into TextStringObject
            or NameObject (if starting with "/")
            if bytes is passed it will be converted into ByteStringObject

        Returns:
            ArrayObject with all elements

        )r;   extendro   )rC   rg   temps      rF   __add__zArrayObject.__add__   s4     4  DLL%%&&&rG   c                 V    |                      |                     |                     | S )a  
         Allow extension by adding list or add one element only

        Args:
            lst: any list, tuples are extended the list.
            other types(numbers,...) will be appended.
            if str is passed it will be converted into TextStringObject
            or NameObject (if starting with "/")
            if bytes is passed it will be converted into ByteStringObject

        )rq   ro   )rC   rg   s     rF   __iadd__zArrayObject.__iadd__   s'     	DLL%%&&&rG   c                     |                      |          D ]+}	 |                     |          }| |= # t          $ r Y (w xY w| S )zAllow to remove items)ro   index
ValueError)rC   rg   r^   rw   s       rF   __isub__zArrayObject.__isub__   s_    c"" 	 	A

1KK   s   2
??Nstreamencryption_keyc                     |t          dd           |                    d           | D ],}|                    d           |                    |           -|                    d           d S )N/the encryption_key parameter of write_to_stream5.0.0   [    s    ])r   writewrite_to_stream)rC   rz   r{   rE   s       rF   r   zArrayObject.write_to_stream   s      	&A7   	T 	) 	)DLL  ((((UrG   rO   forced_encodingc                 \   t                      }|                     d          }|dk    rt          d          	 |                     d          }|                                r)|                     d          }|                                )|dk    rn|dk    r&|                     dd           t          |            |                     dd           |                     d          }|dk    rn;|                     dd           |                    t          | ||                     |S )	Nr$   r   zCould not read arrayTrG      %   ])r;   readr"   isspaceseekr   rB   read_object)rz   rO   r   rD   tmptok
peek_aheads          rF   read_from_streamzArrayObject.read_from_stream   s/    mmkk!nn$; 	75666	B++a..C++-- %kk!nn ++-- %cz d{ B"""!&)))KKAQJT! KKAJJ{63@@AAA%	B& 
rG   FrH   rZ   )__name__
__module____qualname__r   r?   boolr	   r   r
   rl   intrM   r\   r   r   rf   rj   ro   rs   r9   ru   ry   r   rm   r   staticmethodr   dictr   rH   rG   rF   r;   r;   d   s       # 
   $ !&=?	# ### #  sCx 9:	#
 
# # # #JI# I I I Ix}    3 49    $3 =    &C D    C D     MQ  27c58H2I	     HL '( tS$s)T#s(^CD 
	   \  rG   r;   c                   V   e Z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ededeeee	e
f                           d
eee
e
f                  ddfdZde
fdZdedefdZd#de	dedefdZdededefdZd#dedee         defdZdedefdZedee         fd            Z	 d#dedede	ef         ddfdZede
de
dee
         dede
f
d            Z ede!dedefd            Z"e#	 d#dedee         d ede	ee	         e$e
e	f         f         dd fd!            Z%dS )$DictionaryObjectr<   r=   c                 "   t          d|                     |                                 |d                    }|                                 D ]B\  }}t	          |d          r|                    |          n|||                    |          <   C|S )Nr   Fr?   )r   r@   ra   rf   rA   r?   )rC   r<   d__kvs        rF   r?   zDictionaryObject.replicate  s     !!$.."2"2HeDD
 
 JJLL 	 	DAq)0K)@)@GH%%%a H%%&& 
rG   FrH   rI   rJ   c                 `   	 | j         j        |k    r|s| S n# t          $ r Y nw xY wt                      }t	          d|                     |                                 ||                    }|g }t          |                                          dk    r|	                    | ||||           |S )rL   r   Nr   )
rN   rO   rP   rk   r   r@   ra   lenkeys_clonerC   r<   rI   rJ   visitedr   s         rF   rM   zDictionaryObject.clone!  s    	&*h6   	 	 	D	 ),!!$.."2"2HoNN
 
  	Msxxzz??a 	PJJtXwOOO
rV   srcr   Nc           
         J t                    d}|t                    k     rit          |         t                    r6t	          t          |                   dk    r|= |= T|xx         dz  cc<   |dz  }|t                    k     it          fddD                       rt                    dD ]}|D ]}g }	|v r|| vrt                              |          t                    rt          |         t                    r	                    dd          wt	          t          |                   	                    dd          H	                    dd          t	          t          |                   	                    dd          k    rt	          d|                   }
| }|
t	          d|

                    |
                                ||                    }|j        8|j        j        }|j        j        }||f|v rd}
n|                    ||f           |	                    |
|f           |J |j        |t#          |          <   |}	 |
k    rd}
nt	          d|
|                   }
n# t$          $ r d}
Y nw xY w|
|	D ]\  }}|                    ||||                                           D ]\  }}|vrt          |t*                    rUt-          |d	          sd|_        |                    ||          }|j        J |j        | |                    |          <   s|| vr9t-          |d
          r|                    ||          n|| t#          |          <   dS )z
        Update the object from src.

        Args:
            src: "DictionaryObject":
            pdf_dest:
            force_duplicate:
            ignore_fields:

        Nr   r$   c              3     K   | ]}|vo|v ot                              |          t                    ot          |         t                    o                    d d          du pwt          t          |                                       d d          du pF                    d d          t          t          |                                       d d          k    V  dS )/TypeN)rQ   raw_getr(   r   getr   )r]   fieldrJ   r   s     rF   r_   z*DictionaryObject._clone.<locals>.<genexpr>Y  s
      
 
  & 		3;;u--~>>	 3u:'788	
 &&$. I(#e*5599'4HHDPI777D))(#e*5599'4HHI
 
 
 
 
 
rG   )/Next/Prev/N/V))r   r   )r   r   r   r   rN   rM   )rj   r   rQ   r   r   anyr   r(   r   r   r@   ra   rN   idnum
generationaddrB   r)   rP   r   rf   rR   rA   rM   )rC   r   r<   rI   rJ   r   r^   rg   r   objscur_objprev_objclonr   r   scr   vvs    `  `              rF   r   zDictionaryObject._clone9  s{   ( (((]++#m$$$ 	-*C00 &]1-..!3 %a(%a(a   A%   FA #m$$$ 	  
 
 
 
 
 8
 
 
 
 
 @	 !//M9 2 2 1 1ADS/TM/ 's{{1~~~FF/ 's1v/?@@	/  GGGT22/  $$4c!f==AA'4PP/  #www55#$4c!f==AA'4PP Q/ ?C.A? ? @D% /#' 2 ' 8 8$+$5$5$7$7?!" !"$ $D  $6 A(,(?(E-1-D-O
$):#6'#A !*.2G$) 'UJ,? @ @ @ KK$888#+7776:6MHZ]]3'+H/#*c> !S.2GG.23Ewqz.R.RG#, / / /*./1 & /4 %)  DAqHH !8_mW   _1f IIKK 	 	DAq% a.. "1&:;; 4/3,?MJJB0<<<.0.CD**++d]  #1g../=III A'	 	s   -JJJc                     t          | j        t          d |                                 D                       f          S )rX   c              3   H   K   | ]\  }}||                                 fV  d S rZ   r[   )r]   r   r   s      rF   r_   z,DictionaryObject.hash_bin.<locals>.<genexpr>  s3      #O#O$!QQ

$5#O#O#O#O#O#OrG   )r`   ra   rb   rf   rc   s    rF   r\   zDictionaryObject.hash_bin  s?     ^U#O#O$**,,#O#O#OPPQ
 
 	
rG   keyc                 8    t                               | |          S rZ   )r   __getitem__rC   r   s     rF   r   zDictionaryObject.raw_get  s    c***rG   defaultc                     || v r| |         S 	 d| vr|S t          d          # t           $ r? t          d| d                                                                       ||          cY S w xY w)a>  
        Returns the value of a key or from the parent if not found.
        If not found returns default.

        Args:
            key: string identifying the field to return

            default: default value to return

        Returns:
            Current key or inherited one, otherwise default value.

        /ParentzNot presentr   )KeyErrorr   rS   get_inherited)rC   r   r   s      rF   r   zDictionaryObject.get_inherited  s     $; 	9	$ =))) 	 	 	*DO,F,F,H,HIIWWW    	s   # # AA,+A,valuec                     t          |t                    st          d          t          |t                    st          d          t                              | ||          S NzKey must be a PdfObjectzValue must be a PdfObject)rQ   r,   rx   r   __setitem__rC   r   r   s      rF   r   zDictionaryObject.__setitem__  s\    #y)) 	86777%++ 	:8999c5111rG   c                     t          |t                    st          d          t          |t                    st          d          t                              | ||          S r   )rQ   r,   rx   r   
setdefaultr   s      rF   r   zDictionaryObject.setdefault  sZ    #y)) 	86777%++ 	:8999tS%000rG   c                     t          t          t                              | |                                                    S rZ   )r   r,   r   r   rS   r   s     rF   r   zDictionaryObject.__getitem__  s.    It//c::EEGGHHHrG   c                     ddl m} |                     dd          }t          |          rdS |
J d            |                                } ||          S )u  
        Retrieve XMP (Extensible Metadata Platform) data relevant to this
        object, if available.

        See Table 347 — Additional entries in a metadata stream dictionary.

        Returns:
          Returns a :class:`~pypdf.xmp.XmpInformation` 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mypy)xmpr   r   r.   rS   )rC   r   metadatas      rF   xmp_metadatazDictionaryObject.xmp_metadata  ss     	)(((((88K..8$$ 	4++V+++&&((~h'''rG   rz   r{   c                    |t          dd           |                    d           |                                 D ]\  }}t          |          dk    r|d         dk    r|d         dk    r1|                    ||           |                    d           |                    |           |                    d	           |                    d
           d S )Nr}   r~      <<
r   r$   %r   r      
   >>)r   r   rf   r   r   )rC   rz   r{   r   r   s        rF   r   z DictionaryObject.write_to_stream  s      	&A7   	W**,, 	  	 JC3xx!| A# #b'S. 777LL!!&)))LLUrG   position_beforeposition_endgenerationsrO   c                     }|D ]?}|j         |         }fd|                                D             }|rt          |g|R  }@|S )Nc                 4    g | ]}|cxk     rk    n n|S rH   rH   )r]   r^   r   r   s     rF   
<listcomp>z>DictionaryObject._get_next_object_position.<locals>.<listcomp>  s:    ZZZAoZZZZ\ZZZZZaZZZrG   )xrefvaluesmin)	clsr   r   r   rO   outr   locationr   s	    ``      rF   _get_next_object_positionz*DictionaryObject._get_next_object_position  so     % 	( 	(Jx
+HZZZZZ!2!2ZZZF (#''''
rG   c                    |                      |                                dt          |j                  |          dz
  }|                                }|                    ||                                z
            }|                    d          }|dk     rt          d| d          |                    ||z   dz              |d |dz
           S )	Nl        )r   r   r   rO   r$   	   endstreamr   z6Unable to find 'endstream' marker for obj starting at .	   )r   tellrj   r   r   findr"   r   )r   rz   rO   object_positioncurrent_position
read_valueendstream_positions          rF   _read_unsized_from_streamz*DictionaryObject._read_unsized_from_stream  s     77"KKMMTRURZ^^ad 8 
 
 ";;==[[6;;==!@AA
'__\::! 	\IY\\\   	$'99A=>>>2.2233rG   r   c           	         |                      d          }|dk    r2t          dt          |                                            d          i }	 t	          |           }|dk    r|dk    r&|                     dd	           t          |            C|st          t                    |d
k    r|                      d	           n|                     dd	           	 	 t          | |          }t          |t                    rnt          |t                    st          d|          nI# t          $ r<}||j        r t          |                                t                      Y d }~d }~ww xY wt	          |           }|                     dd	           t          | ||          }n# t"          t$          f$ r&}t          |                                          d }~wt&          $ r}|(|j        r!t          |                                          t          |                                t                      t)                      }	|	                    |           |	cY d }~S d }~ww xY w|                    |          s|||<   nTdt          |                                            d| }
||j        rt          |
          t          |
t                      |                                 }t	          |           }|dk    r%|                      d          dk    r|                      d	          }|dk    r|                      d	          }|dk    |dvrt          d          |dk    r/|                      d	          dk    r|                     dd	           t.          j        |vrk||j        rt          d          t          d|                                  t                      t3          d          |t          t.          j                  <   |t.          j                 }t          |t4                    rK|                                 }|
J d            |                    |          }|                     |d           |d}|                                 }|dk    r8ddlm} ||k    rt%          d| d          |                      |          |d<   n%t=          | t?          j         d                    |d<   t	          |           }|                      d          }||z   dk    r|                                 }|                     d d	           |                      d!          }|dk    r|d         d d         |d<   n|P|j        sI|                     |d           t(          !                    | |          |d<   |                                 }ne|                     |d           t          d"t          |                                            d#|d$|d%          n|                     |d           d|v rtD          #                    |          S t)                      }	|	                    |           |	S )&Nr      <<zDictionary read error at byte z: stream must begin with '<<'T    r   r   r$      >z)Expecting a NameObject for key but found z+Multiple definitions in dictionary at byte z	 for key    s   s   treamr   )r      z)Stream data must be followed by a newliner   r   zStream length not definedzStream length not defined @pos=r   r   )MAX_DECLARED_STREAM_LENGTHzDeclared stream length of z  exceeds maximum allowed length.__streamdata__r      ir   z7Unable to find 'endstream' marker after stream at byte z (nd='z', end='z').)$r   r"   hexr   r   r   r   r#   r    r   rQ   r*   r)   strictr   __repr__r   RecursionErrorr!   rP   r   updater   r   LENGTHr+   r(   rS   filtersr   r   recompiler   rR   initialize_from_dictionary)rz   rO   r   r   rE   r   r   excr   retvalmsgposr   eollengthtpstartr   endstreamends                        rF   r   z!DictionaryObject.read_from_stream*  s&    kk!nn%< 	.V[[]]1C1C . . .    "4	.%f--Cg~ d{ B"""!&))) C$%ABBBd{ AKKA%fc22C!#z22 %c:66 *OOO   $    3: "3<<>>8<<<HHHH	
 *&11B"""#FCAA"$56 3 3 3"3<<>>222    7sz 7&s||~~666s||~~x888)++d### 88C== 
.!S		:6;;==)): :47: :   ,sz ,&s+++sH---i4	.l kkmm''9 ?	 Q83 ?	 ++a..C + %kk!nn + %.( R$%PQQQe| #A% 7 #B"""&d2 M Fsz F()DEEEEfkkmmEEx   =I<L<LZ 0 7889*12F&.11 "KKMM.....//Aq!!! [[]]F{ 	@@@@@@66 s+,q,q,q,qrrr)/V)<)<%&&)9BJ|44* *%& $F++A{{1~~HH-  kkmmC###kk!nn,& -12B-CCRC-HD)** 	SZ 	KK***-=-W-WX^`c-d-dD)* ++--CCKKQ'''&Tv{{}}--T T5=T TILT T T  '0 KKQt# 	A::4@@@!##dsU   %D- 'D- ,F- -
E371E.(F- .E339F- -I,>!GI,,A5I'!I,'I,r   rZ   )&r   r   r   r   r?   r   r	   r   r
   rl   r   rM   rk   rb   r   r\   r   r   r   r   r   r,   r   propertyr   r   r   rm   r   classmethodrj   r   r   r   r   r   r   r   rH   rG   rF   r   r     si       # 
   " !&=?	 #   sCx 9:	
 
   0oo $o 	o
  sCx 9:o U38_%o 
o o o ob

# 

 

 

 

+3 +3 + + + +  s c    22s 23 23 2 2 2 21 1c 1(3- 13 1 1 1 1Is Iy I I I I (h'=> ( ( ( X(. MQ  27c58H2I	   " 	"%	58	GKCy	Wh			 	 	 [	 4)40A4	4 4 4 [4$  HLH HH'(H tS$s)T#s(^CDH 
	H H H \H H HrG   r   c                   4   e Zd Zddee         ddfdZdefdZdefdZ	de
e         fdZded	eddfd
Zdeded f         deddfdZdeded f         deddfdZ	 ddeded	edeedef                  def
dZdededededdf
dZdeddfdZddZddZdS )
TreeObjectNdctr=   c                 l    t                               |            |r|                     |           d S d S rZ   )r   __init__r   )rC   r  s     rF   r  zTreeObject.__init__  s@    !!$''' 	KK	 	rG   c                 
    d| v S )N/FirstrH   rc   s    rF   has_childrenzTreeObject.has_children  s    4rG   c                 *    |                                  S rZ   )childrenrc   s    rF   __iter__zTreeObject.__iter__  s    }}rG   c              #     K   |                                  sd S | t          d                   }| t          d                   }|                                }t                      }	 t	          |          }||v rt          d| t                     d S |                    |           |V  ||k    rd S |                    t          d                    }t          |          rd S |                                })Nr  /LastTz(Detected cycle in outline structure for r   )
r  r)   rS   rk   idr   r   r   r   r.   )rC   	child_reflastchildr   child_ids         rF   r  zTreeObject.children  s	       "" 	FH--.	Jw''($$&&EE	+%yyH7" Q%QQS[\\\KK!!!KKK} 		*W"5"566Iy)) ((**E	+rG   r!  rO   c                 4    |                      |d |           d S rZ   )insert_child)rC   r!  rO   s      rF   	add_childzTreeObject.add_child  s     %s+++++rG   parentnc                    t          |          rd S |
J d            t          d|                                          }d|v rt          t	          dt          t
          |t          d                             |z                       |t          d          <   |                     |                    dd           |           d S d S )Nr   r  /Countr   r   )	r.   r   rS   r+   maxr   r)   inc_parent_counter_defaultr   )rC   r&  r'  s      rF   r+  z%TreeObject.inc_parent_counter_default  s     6"" 	F))6)))lF$5$5$7$788v 	L+7AtC
8(<(<!=>>BCC, ,F:h''( ++FJJy$,G,GKKKKK		L 	LrG   c                    t          |          rd S |
J d            t          d|                                          }|                    dd          dk    }t          t          |                    dd                    }|dk     rt          |          }t          ||z   |rdndz            |t          d          <   |sd S |                     |                    d	d           |           d S )
Nr   r  z
/%is_open%Tr)  r   r$   r   r   )	r.   r   rS   r   r   absr+   r)   inc_parent_counter_outline)rC   r&  r'  opnr   s        rF   r.  z%TreeObject.inc_parent_counter_outline  s     6"" 	F))6)))lF$5$5$7$788jjt,,4fjj1--..q5 	AA'3QUC?OqqR4P'Q'Qz(##$ 	F''

9d(C(CQGGGGGrG   beforeinc_parent_counter.c                    || j         }|                                }|j        
J d            |j        }d| vr|| t          d          <   t	          d          | t          d          <   || t          d          <   | j        |t          d          <    || |                    dd                     d|v r|d= d	|v r|d	= |S t          d
| d                   }|j        |k    rd|v rt          d|d                   }nt          d|          |t          d          <   |j        |t          d	          <   | j        |t          d          <   d|v r|d= || t          d          <    || |                    dd                     |S |j        |k    	 t          |d	         t                    sJ ||d	         t          d          <   |d	         |t          d	          <   n# t          $ r |d= Y nw xY w||t          d          <   ||t          d	          <   | j        |t          d          <    || |                    dd                     |S )Nr   r  r   r)  r  r   r$   r   r   r   r  )
r+  rS   rN   r)   r+   r   r   rQ   r   rP   )rC   r!  r0  rO   r1  	child_objchild_referenceprevs           rF   r$  zTreeObject.insert_child  s     	A!%!@$$&&	';;V;;;*/*B 4 
	#)8DH%%&)5aDH%%&(7DG$$%/3/FIj++,tY]]8Q%?%?@@@)# 'g&)# 'g&""&W66%/ 	'$ 
'L$w-88,0,O,OZ(()151H	*W--.373J	*Y//0i' +!'*,;Z(()""4x)C)CDDD&& %/ 	'	#d7m-=>>>>>1@DM*W--.-1']Ij))** 	# 	# 	#'"""	#)-	*W%%&$3Z  !+/+B	*Y''(4x!;!;<<<s   AG# #G32G3r5  prev_refcurr   c                 
   |                     t          d          d          }||rm|                                }|t          d          = || t          d          <   t          | t          d                   dz
            | t          d          <   dS t          d          | t          d          <   | t          d          = t          d          | v r| t          d          = dS dS |r9|                                }||t          d          <   ||t          d          <   n*||k    sJ |t          d          = || t          d          <   t          | t          d                   dz
            | t          d          <   dS )	z
        Adjust the pointers of the linked list and tree node count.

        Args:
            prev:
            prev_ref:
            cur:
            last:

        r   Nr   r  r)  r$   r   r  )r   r)   rS   r+   )rC   r5  r6  r7  r   next_refnext_objs          rF   _remove_node_from_treez!TreeObject._remove_node_from_tree.  s    77:g..55 	V 2#..00Z001-5Z))*-9H--.2. .Z))*** .:!__Z))*H--.g&&$. 2Z001112 2  	5#..0008G,,-,4Z(()) d{"""G,,-,4Z(())5d:h;O;O6PST6T)U)UDH%%&&&rG   c                    |                                 }|j        }t          d          |vrt          d          |t          d                   | k    rt          d          d}d }d }| t          d                   }|                                 }| t          d                   }|                                 }	|f||k    r|                     ||||	           d}nE|}|}t          d          |v r*|t          d                   }|                                 }nd }d }|f|st          d	          t          |           d S )
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)rS   rN   r)   rx   r;  _reset_node_tree_relationship)
rC   r!  r3  foundr6  r5  cur_refr7  last_refr   s
             rF   remove_childzTreeObject.remove_childY  s~   $$&&	,i  	1 	PNOOOZ	**+t3 	KIJJJ!%j&:&:!;(/(:(:(<(<
7++,""$$ 	i ++D(CFFF HD'""c) j112((**  	   	CABBB%i00000rG   c                     t          d          | vrt          d          t          d| d                                       |            dS )z)Remove the object from the tree it is in.r   r=  r  N)r)   rx   r   rB  rc   s    rF   remove_from_treezTreeObject.remove_from_tree~  sO    i  , 	PNOOO\4	?++88>>>>>rG   c                     | D ]%}|                                 }t          |           &t          d          | v r| t          d          = t          d          | v r| t          d          = t          d          | v r| t          d          = d S d S )Nr)  r  r  )rS   r>  r)   )rC   r!  r3  s      rF   
empty_treezTreeObject.empty_tree  s     	5 	5E((**I))4444h4' 	+Z))*h4' 	+Z))*g$& 	*Z(()))	* 	*rG   rZ   r=   N)r   r   r   r	   r   r  r   r  r   r  r   r  r   r%  r
   r(   r   r+  r.  r   r$  r;  rB  rD  rF  rH   rG   rF   r  r    s-        H%56 $    
 d        #    +(3- + + + +0,s ,): ,t , , , ,LD.,>?LDGL	L L L LHD.,>?HDGH	H H H H, <@1 11 1 	1
 %Xc3h%781 
1 1 1 1f)V)V#&)V-0)V8;)V	)V )V )V )VV#1# #1$ #1 #1 #1 #1J? ? ? ?
* 
* 
* 
* 
* 
*rG   r  r3  r=   c                     | t          d          = t          d          | v r| t          d          = t          d          | v r| t          d          = dS dS )z
    Call this after a node has been removed from a tree.

    This resets the nodes attributes in respect to that tree.

    Args:
        child_obj:

    r   r   r   N)r)   )r3  s    rF   r>  r>    sn     	*Y''('i' +j))*'i' +j))***+ +rG   c                   z    e Zd ZddZdedd fdZdedededee	e
eef                           d	eeeef                  ddf fd
Zdef fdZdefdZdeddfdZdef fdZ	 ddede
deef         ddfdZedeeef         de
d         fd            ZddeddfdZdde
eeef         df         defdZ xZS )rR   r=   Nc                 "    d| _         d | _        d S NrG   )_datadecoded_selfrc   s    rF   r  zStreamObject.__init__  s    
;?rG   r<   c                    t          d|                     |                                 |d                    }| j        |_        	 | j        }|d | _        n(t          d|                    |                    | _        n# t          $ r Y nw xY w|                                 D ]B\  }}t          |d          r|                    |          n|||                    |          <   C|S )NrR   FDecodedStreamObjectr?   )	r   r@   ra   rL  rM  r?   rP   rf   rA   rC   r<   r   rM  r   r   s         rF   r?   zStreamObject.replicate  s    !!$.."2"2HeDD
 
 J			,L $(!!$()<+A+A(+K+K% %!  	 	 	D	JJLL 	 	DAq)0K)@)@GH%%%a H%%&& 
s   9A? ?
BBr   rI   rJ   r   c                 <   t          d|          j        | _        	 t          d|          j        }|d| _        n*t          d|                    |||                    | _        n# t          $ r Y nw xY wt                                          |||||           dS )
        Update the object from src.

        Args:
            src:
            pdf_dest:
            force_duplicate:
            ignore_fields:

        rR   NrO  )r   rL  rM  rM   rP   superr   )rC   r   r<   rI   rJ   r   rM  ra   s          rF   r   zStreamObject._clone  s    $ .#..4

	44AL $(!!$() &&x-PP% %!  	 	 	D	sHo}gNNNNNs   A	A' '
A43A4c                 l    t          t                                                      | j        f          S )rX   )r`   rS  r\   rL  )rC   ra   s    rF   r\   zStreamObject.hash_bin  s*     UWW%%''4555rG   c                     | j         S rZ   rL  rc   s    rF   get_datazStreamObject.get_data  s
    zrG   rE   c                     || _         d S rZ   rV  )rC   rE   s     rF   set_datazStreamObject.set_data  s    


rG   c                 v    t                                                      }||                                 z  }|S rZ   )rS  hash_value_datarW  rC   rE   ra   s     rF   r[  zStreamObject.hash_value_data  s/    ww&&((rG   rz   r{   c                 x   |t          dd           t          t          | j                            | t	          t
          j                  <   t                              | |           | t
          j        = |	                    d           |	                    | j                   |	                    d           d S )Nr}   r~   s   
stream
s
   
endstream)
r   r+   r   rL  r)   r   r   r   r   r   )rC   rz   r{   s      rF   r   zStreamObject.write_to_stream  s      	&A7   5ATZ4Q4QZ(/001((v666!()]###TZ   ^$$$$$rG   )EncodedStreamObjectrO  c                     t           j        | v rt                      }nt                      }| d         |_        | d= t           j        | v r| t           j        = |                    |            |S )Nr   )r   FILTERr^  rO  rL  r   r   )rE   r  s     rF   r  z'StreamObject.initialize_from_dictionary  su    
 "d* 	+(**FF(**F,-!""d* 	.%,-drG   r   levelr^  c           	      "   ddl m} t          j        | v ra| t          j                 }t	          |t
                    rt          t          t          j                  g|          }	 t          t                      g| 
                    t          j        t                                          }n# t          $ rJ t          t                      | 
                    t          j        t                                g          }Y nw xY wt          t          t          j                  |g          }t          t                      | 
                    t          j        t                                g          }nt          t          j                  }d }t                      }|                    |            ||t          t          j                  <   |||t          t          j                  <   |                    | j        |          |_        |S )Nr   FlateDecode)r   rd  r   r`  rQ   r;   r)   FTFLATE_DECODEr*   r   DECODE_PARMS	TypeErrorr^  r   encoderL  )rC   ra  rd  fparamsr  s         rF   flate_encodezStreamObject.flate_encode  s   ))))))"d* 	%,-A![)) BO!<!< Aq ABB(#_1A1NP[P]P](^(^_ FF !   (#txx0@0M{}}']']^ FFF  BO!<!<a @AA$\\488,<,I:<<#X#XY  2?++AF$&&d67z*1223 	G@FF:.;<<="))$*e<<s   'AB0 0ADDpillow_parametersc                     ddl m} |                     dd          dk    rH	 | j         d}n'# t          $ r |                                  d}Y nw xY wt          |t                      || |          \  }}}|dS |S )	a  
        Try to decode the stream object as an image

        Args:
            pillow_parameters: parameters provided to Pillow Image.save() method,
                cf. <https://pillow.readthedocs.io/en/stable/reference/Image.html#PIL.Image.Image.save>

        Returns:
            a PIL image if proper decoding has been found
        Raises:
            Exception: Errors during decoding will be reported.
                It is recommended to catch exceptions to prevent
                stops in your program.

        r$   )_xobj_to_imagez/Subtype z/Imagez does not seem to be an Imagez$ object does not seem to be an ImageN)_image_xobjectro  r   rN   AttributeErrorr   r   r   )rC   rm  ro  r  	extension_imgs          rF   decode_as_imagezStreamObject.decode_as_image4  s      	32222288J##x/ 	*O0OOO! O O ONNNO3)))*N41BCC	1c 	4
s   
- !AArG  rZ   )r   )r   r   r   r  r   r?   r   r   r	   r   r
   rl   r   rk   rb   r   r\   rm   rW  rY  r[  r   r   r   r   r   r  rl  rv  __classcell__ra   s   @rF   rR   rR     sM       @ @ @ @# 
   2OO $O 	O
  sCx 9:O U38_%O 
O O O O O O@	6# 	6 	6 	6 	6 	6 	6%    U t           MQ% % %27c58H2I%	% % % % 38n	;	<   \ # /D    @ tCH~t7K1L X[        rG   rR   c                       e Zd ZdS )rO  N)r   r   r   rH   rG   rF   rO  rO  R  s        DrG   rO  c                   <     e Zd ZddZdefdZdeddf fdZ xZS )r^  r=   Nc                     d | _         d S rZ   )rM  rc   s    rF   r  zEncodedStreamObject.__init__W  s    ;?rG   c                 d   ddl m} | j        | j                                        S t	                      }|                     ||                      |                                 D ]/\  }}|t          j        t          j	        t          j
        fvr|||<   0|| _        |                                S )Nr   )decode_stream_data)r   r}  rM  rW  rO  rY  rf   r   r   r`  rg  )rC   r}  decodedr   r   s        rF   rW  zEncodedStreamObject.get_data[  s    000000 	0$--/// &''++D11222**,, 	% 	%JC+24D4KM]Mjkk %$#!!!rG   rE   c                    ddl m} |                     t          j        d          t
          j        t
          j        gfv rt          |t                    st          d          | j
        |                                  | j
        
J d            | j
                            |           t                                          |                    |                     d S t          d          )Nr   rc  rp  zData must be bytesr   zJStreams encoded with a filter different from FlateDecode are not supported)r   rd  r   r   r`  re  rf  rQ   rm   rh  rM  rW  rY  rS  ri  r"   )rC   rE   rd  ra   s      rF   rY  zEncodedStreamObject.set_datal  s    ))))))88$+R00R_rFW4XX 	dE** 6 4555   $88&888&&t,,,GG[//5566666\  rG   rG  )r   r   r   r  rm   rW  rY  rw  rx  s   @rF   r^  r^  V  s~        @ @ @ @"% " " " ""U t          rG   r^  i'  c                   *    e Zd ZdZ	 ddedededeee         ee	ef         f         ddf 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edededeeeee	f                           deee	e	f                  ddf fdZdeddfdZdedeeef         fdZdefdZdeddf fdZedeeeef                  fd            Zej        deeeef                  ddfd            ZddZ	 ddededeef         ddf fdZ xZ S ) ContentStreama  
    In order to be fast, this data structure can contain either:

    * raw data in ._data
    * parsed stream operations in ._operations.

    At any time, ContentStream object can either have both of those fields defined,
    or one field defined and the other set to None.

    These fields are "rebuilt" lazily, when accessed:

    * when .get_data() is called, if ._data is None, it is rebuilt from ._operations.
    * when .operations is called, if ._operations is None, it is rebuilt from ._data.

    Conversely, these fields can be invalidated:

    * when .set_data() is called, ._operations is set to None.
    * when .operations is set, ._data is set to None.
    Nrz   rO   r   r=   c                    || _         g | _        |#t                                          d           n|                                }t          |t                    r\ddlm} t          |          x}t          k    rt          d| dt           d          t                      }d}|D ]}|                                }	t          |	t                    r,t          |	t                    s,t          dt!          |	          j         dt"                     nG|	                                }
|t          |
          z  }||k    rt          d	| d| d
          ||
z  }t          |          dk    s|dd          dk    r
|dz  }|dz  }t                                          t'          |                     n9|                                }|J t                                          |           || _        d S )NrG   r   )$MAX_ARRAY_BASED_STREAM_OUTPUT_LENGTHzArray-based stream has z > z
 elements.zExpected StreamObject, got z instead. Data might be wrong.z Array-based stream has at least z output bytes.r   r   r$   )rO   _operationsrS  rY  rS   rQ   r;   pypdf.filtersr  r   CONTENT_STREAM_ARRAY_MAX_LENGTHr!   	bytearrayr*   rR   r   typer   rW  rm   r   )rC   rz   rO   r   r  stream_lengthrE   r	  r   
s_resolvednew_datastream_datara   s               rF   r  zContentStream.__init__  sK    46  )	.GGS!!!!&&((F&+.. %.NNNNNN%([[0M4SS +o-ooDcooo   !{{ & &A!"J!*j99 ! %j,?? ) 's$z:J:J:Ssss$   
 $.#6#6#8#8#h--/!$HH "3!X6 !X !X#G!X !X !X# #  (4yyA~ &bcce); &!  t----$oo//"...  ---.rG   r<   c           	         t          d|                     |                     d d           |d                    }| j        |_        	 | j        }|d | _        n(t          d|                    |                    | _        n# t          $ r Y nw xY w|                                 D ]B\  }}t          |d          r|                    |          n|||                    |          <   C|S )Nr  FrO  r?   )r   r@   ra   rL  rM  r?   rP   rf   rA   rY  rO   rj   r  r   rP  s         rF   r?   zContentStream.replicate  s
    !!$..t"<"<hNN
 
 J			,L $(!!$()<+A+A(+K+K% %!  	 	 	D	JJLL 	 	DAq)0K)@)@GH%%%a H%%&& 
s   9B 
BBFrH   rI   rJ   c           	         	 | j         j        |k    r|s| S n# t          $ r Y nw xY wt                      }t	          d|                     |                     dd          ||                    }|g }|                    | ||||           |S )z
        Clone object into pdf_dest.

        Args:
            pdf_dest:
            force_duplicate:
            ignore_fields:

        Returns:
            The cloned ContentStream

        r  N)rN   rO   rP   rk   r   r@   ra   r   r   s         rF   rM   zContentStream.clone  s    $	&*h6   	 	 	D	 ),!!tT**Ho 
 
  	M

4?M7KKK
rV   r   r   c                     t          d|          }t                                          |j                   || _        t          |j                  | _        |j        | _        dS )rR  r  N)r   rS  rY  rL  rO   rj   r  r   )rC   r   r<   rI   rJ   r   src_csra   s          rF   r   zContentStream._clone  sY    $ os++&&& 233%5rG   c                 J   |                     dd           g }	 t          |          }|dv rd S |                     dd           |                                s|dv ryt          |t          j                  }|dk    r:|g k    sJ |                     |          }| j                            |df           nl| j                            ||f           g }nM|d	k    r|d
vr|	                    d          }|d
vn)|                    t          |d | j                             )Nr   T)rG   r   r   r$   )   '   "   BI   INLINE IMAGEr   )r   r   rG   )r   r   isalphar   r)   delimiter_pattern_read_inline_imager  rB   r   r   r   )rC   rz   operandspeekoperatoriis         rF   _parse_content_streamz#ContentStream._parse_content_stream(  s^   Aq57	Q&v..Dx KKA||~~ Q!5 Q+FJ4PQQu$ " $r>)))0088B$++R,ABBBB$++Xx,@AAA!HH 	Q "55 *!;;q>>D "55 * FD$:N O OPPP3	QrG   c           	         t                      }	 t          |          }|                    dd           |dk    rnUt          || j                  }t          |          }|                    dd           t          || j                  }|||<   |                    d          }|d d         dk    sJ |                    d|                    d	d
                    }|                                }t          |t                    r|d         }d|v sd|v rt          |          }	nad|v sd|v rt          |          }	nHd|v sd|v rt          |          }	n/d|v sd|v rt          |          }	n|d
k    r |                    dd          }
t          |
t                    r|
d         }
d|
v rd}n@d|
v rd}n9|                    d|
dv rdnd          }|dk    r|dz  }nt          |          }	d}|dk    rZ|                    t          t!          t"          |d                   |z            t!          t"          |d                   z            }	t          |          }|                    dd           nt          |          }	|                    d          }|                    dd           |d d         dk    s|dd         t$          vr|                    |d           t          |          }	|                    d          }|                    dd           |d d         dk    s|dd         t$          vrt'          d |          ||	d!S )"NTr   r$      Ir7   r   s   ID/Fz/Filterznot setr   AHxASCIIHexDecodeA85ASCII85DecodeRLRunLengthDecodeDCT	DCTDecodez/CSrp  RGBCMYK   z/BPC>   /G/I/Indexed/DeviceGrayr   g       @z/Wz/H   EIzHCould not extract inline image, even using fallback. Expected 'EI', got )settingsrE   )r   r   r   r   rO   r   r   r   rQ   rj   r1   r0   r3   r2   r4   r   r   r   r   r#   )rC   rz   r  r   r   r   r   filtrsavposrE   cslcsbitseis                 rF   r  z ContentStream._read_inline_imageG  s    $%%
	"%f--CKKAd{ fdh//C%f--CKKA11E!HSM
	" kk!nn2A2w%T8<<	9#E#EFFeT"" 	!HEE> "	2-6 "	23F;;DDe^  	2%7  	21&99DDU] 	2/58 	24V<<DDe^ 	2{e3 	2-f55DDi 	2eR((B"d## U{ 2 ||FFNAAB  !8 *CC1&99DCQw {{c8D>22S899Dhtn<U<UU  %V,,BKKA)&11D[[^^Bbqb6U? 	b1g[8 	KK""")&11DQBKKA"1"v "QqS'"<  %e_aee   %d333rG   c                    | j         sHt                      }| j        D ]\  }}|dk    r|                    d           t                      }|d                             |           |                    |                                dd                    |                    d           |                    |d                    |                    d           nD|D ],}|                    |           |                    d	           -|                    |           |                    d
           |                                | _         | j         S )Nr  r  r  r   s   ID rE   r  r   r   )rL  r   r  r   r   getvalue)rC   r  r  r  	dict_textops         rF   rW  zContentStream.get_data  sL   z 	-yyH&*&6 & &"(. -NN5))) '		IZ(88CCCNN9#5#5#7#7"#=>>>NN6***NN8F#3444NN5))))& - -**8444 t,,,,NN8,,,u%%%%!**,,DJzrG   rE   c                 X    t                                          |           g | _        d S rZ   )rS  rY  r  r\  s     rF   rY  zContentStream.set_data  s)    rG   c                     | j         s5| j        r.|                     t          | j                             d| _        | j         S rK  )r  rL  r  r   rc   s    rF   
operationszContentStream.operations  sD     	DJ 	&&wtz':':;;;DJrG   r  c                 "    || _         d| _        d S rK  )r  rL  )rC   r  s     rF   r  zContentStream.operations  s    %


rG   c                     | j         r;| j                             dg df           | j                             g df           d S | j        rd| j        z   dz   | _        d S d S )Nr      q   Qs   q
s   
Q
)r  insertrB   rL  rc   s    rF   isolate_graphics_statez$ContentStream.isolate_graphics_state  sv     	8##ADz222##RJ/////Z 	8$*,x7DJJJ	8 	8rG   r{   c                     | j         s| j        r|                                  t                                          ||           d S rZ   )rL  r  rW  rS  r   )rC   rz   r{   ra   s      rF   r   zContentStream.write_to_stream  sF     z 	d. 	MMOOO77777rG   rZ   r   rG  )!r   r   r   __doc__r   r
   rl   rj   r   r   r  r   r?   r   r	   r   rM   r   rk   rb   r   r   r  r  rm   rW  rY  r  r  setterr  r   rw  rx  s   @rF   r  r    s        0 HL	5/ 5/5/ 5/ tS$s)T#s(^CD	5/
 
5/ 5/ 5/ 5/ 5/ 5/n# 
   B !&=?	" "" "  sCx 9:	"
 
" " " "H66 $6 	6
  sCx 9:6 U38_%6 
6 6 6 6 6 64QJ Q4 Q Q Q Q>I4 I4S#X I4 I4 I4 I4X%    ,U t        DsEz!23       X  T%U
*;%<     8 8 8 8 MQ8 8 827c58H2I8	8 8 8 8 8 8 8 8 8 8rG   r  rz   rO   r   c                 &   |                      d          }|                     dd           |dk    rt          j        | |          S |dk    r]|                      d          }|                     dd           |dk    rt                              | ||          S t          | |          S |dk    rt                              | ||          S |d	v rt          j        |           S |d
k    rt          | |          S |dk    r'|                      d          dk    rt                      S |dk    rt          j        |           S |dk    rEt          |            t          |           }|                     dd           t          | ||          S |dv r|                      d          }|                     t          |           d           t                              |          !|
J d            t!          j        | |          S t#          j        |           S |                                 }|                     dd           |                      d          }|                     |           t'          |            t)          d|d| d|          )Nr$   r      /   <r   r  r   r   )   t   f   (   e   s   endobj   nr   s   0123456789+-.   r   iP   z(Invalid Elementary Object starting with z @z: )r   r   r)   r   r   r5   r;   r%   r6   r*   r   r   r   r   IndirectPatternmatchr(   r+   r   r   r"   )rz   rO   r   r   r  r  stream_extracts          rF   r   r     s   
 ++a..C
KKA
d{ 8*63777
d{ D{{1~~B5= 	S#44VS/RRR*6?CCC
d{ J++FCIII
l 6-f555
d{ @&v???
d{ v{{1~~2 ||
d{ 3*6222
d{ 9&!!!!&))B63888
 5{{2SYYJ"""  && 	@**F***!263???,V444
++--C
KKQ[[__N
KK&!!!
U3UUCUU>UU  rG   c                      e Zd ZdZdeddfdZedee         fd            Z	edee         fd            Z
eded         fd	            Zedee         fd
            Zedee         fd            Zedee         fd            Zedee         fd            Zedee         fd            Zedee         fd            Zedee         fd            ZdS )Fieldz
    A class representing a field dictionary.

    This class is accessed through
    :meth:`get_fields()<pypdf.PdfReader.get_fields>`
    rE   r=   Nc                 ~   t                               |            t          j                    t	          j                    z   }|j        | _        |D ]+}	 ||         | t          |          <   # t          $ r Y (w xY wt          | 	                    d          t                    rt          t          | t          d                                                             }t          |t                    r|                                }n|d}nt          d          t!          |          | t          d          <   d S d S )Nr   rp  zShould never happen)r   r  r   
attributesr   rN   r)   r   rQ   r   r^  r   rW  rm   decoderP   r-   )rC   rE   field_attributesattrdd_strs         rF   r  zField.__init__  sA   !!$'''%022+6889 	 #'"9$ 	 	D)-dZ%%&&   dhhtnn&9:: 	=($z$/?/?*@AAJJLLA!U## 7

 7 5666%5e%<%<DD!!"""	= 	=s   A,,
A98A9c                 @    |                      t          j                  S )z4Read-only property accessing the type of this field.)r   r   re  rc   s    rF   
field_typezField.field_type       xx14555rG   c                 @    |                      t          j                  S )z6Read-only property accessing the parent of this field.)r   r   Parentrc   s    rF   r&  zField.parent  s     xx18999rG   r;   c                 @    |                      t          j                  S )z4Read-only property accessing the kids of this field.)r   r   Kidsrc   s    rF   kidsz
Field.kids$  s     xx16777rG   c                 @    |                      t          j                  S )z4Read-only property accessing the name of this field.)r   r   Trc   s    rF   namez
Field.name)  s     xx13444rG   c                 @    |                      t          j                  S )z>Read-only property accessing the alternate name of this field.)r   r   TUrc   s    rF   alternate_namezField.alternate_name.  r  rG   c                 @    |                      t          j                  S )z
        Read-only property accessing the mapping name of this field.

        This name is used by pypdf as a key in the dictionary returned by
        :meth:`get_fields()<pypdf.PdfReader.get_fields>`
        )r   r   TMrc   s    rF   mapping_namezField.mapping_name3       xx14555rG   c                 @    |                      t          j                  S )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   Ffrc   s    rF   flagszField.flags=  s     xx14555rG   c                 @    |                      t          j                  S )zs
        Read-only property accessing the value of this field.

        Format varies based on field type.
        )r   r   Vrc   s    rF   r   zField.valueE  s     xx13444rG   c                 @    |                      t          j                  S )z=Read-only property accessing the default value of this field.)r   r   DVrc   s    rF   default_valuezField.default_valueN  r  rG   c                 @    |                      t          j                  S )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   AArc   s    rF   additional_actionszField.additional_actionsS  r  rG   )r   r   r   r  r   r  r  r	   r)   r  r&  r  rl   r  r  r  r   r  r   r   r  r  rH   rG   rF   r  r    s        =- =$ = = = =. 6HZ0 6 6 6 X6 :!12 : : : X: 8h}- 8 8 8 X8 5hsm 5 5 5 X5 6 6 6 6 X6 6hsm 6 6 6 X6 6x} 6 6 6 X6 5x} 5 5 5 X5 6x} 6 6 6 X6 6H-=$> 6 6 6 X6 6 6rG   r  c                   d   e Zd ZU dZdZee         ed<   dee	e
f         deeeeef         deddfdZedd
            Z	 ddedede	e
f         ddfdZedee	         fd            Zedee         fd            Zedee	         fd            Zedee         fd            Zedee         fd            Zedee         fd            Zedee         fd            Zedee         fd            Zeded	         fd            Zedee         fd            Z edee         fd            Z!dS )Destinationa  
    A class representing a destination within a PDF file.

    See section 12.3.2 of the PDF 2.0 reference.

    Args:
        title: Title of this destination.
        page: Reference to the page of this destination. Should
            be an instance of :class:`IndirectObject<pypdf.generic.IndirectObject>`.
        fit: How the destination is displayed.

    Raises:
        PdfReadError: If destination type is invalid.

    Nnodetitlepagefitr=   c                     g | _         |j        }|j        }t                              |            t          |          | t          d          <   || t          d          <   || t          d          <   |dk    rt          |          dk     r"|                    t          d                     t          |          dk     r"|                    t          d                     t          |          dk     r"|                    t          d                     |\  | t          t          j                  <   | t          t          j                  <   | t          d	          <   d S t          |          d
k    rd S |t          j        k    rq|\  | t          t          j                  <   | t          t          j                  <   | t          t          j                  <   | t          t          j                  <   d S |t          j        t          j        fv rZ	 |\  | t          t          j                  <   d S # t&          $ r, t)                      | t          t          j                  <   Y d S w xY w|t          j        t          j        fv rZ	 |\  | t          t          j                  <   d S # t&          $ r, t)                      | t          t          j                  <   Y d S w xY w|t          j        t          j        fv rd S t3          d|          )N/Title/Pager   z/XYZr$   g        r   r7   /Zoomr   zUnknown Destination Type: )_filtered_childrenfit_typefit_argsr   r  r-   r)   r   rB   r+   TALEFTTOPTFFIT_RBOTTOMRIGHTFIT_HFIT_BHrP   r*   FIT_VFIT_BVFITFIT_Br"   )rC   r   r  r  typargss         rF   r  zDestination.__init__s  s    .0l|!!$'''%5e%<%<Z!!"$(Z  !$'Z  ! &= "	E4yy1} /L--...4yy1} /L--...4yy1} /L--...
 	Z(()Z''(Z(()))YY!^ 	EDBH_ 	E Z(()Z	**+Z))*Z''(((RXry)) 	E>.2+j(())) > > >/9||j(())))>RXry)) 	E?/3,j))*** ? ? ?0:j))****?RVRX&& 	EDCCCCDDDs$   H5 52I+*I+	J) )2KKr;   c                 v     t                               d           d         g fddD             z             S )Nr  r   c                 (    g | ]}|v |         S rH   rH   )r]   r^   rC   s     rF   r   z*Destination.dest_array.<locals>.<listcomp>  s7       9Q  rG   )/Left/Bottom/Right/Topr  )r;   r   rc   s   `rF   
dest_arrayzDestination.dest_array  sX    \\'""DM2   H  
 
 	
rG   rz   r{   c                    |t          dd           |                    d           t          d          }|                    |           |                    d           | j        }|                    |           t          d          }|                    |           |                    d           t          d          }|                    |           |                    d           |                    d	           d S )
Nr}   r~   r   z/Dr   z/Sz/GoTor   r   )r   r   r)   r   r  )rC   rz   r{   r   r   value_ss         rF   r   zDestination.write_to_stream  s     	&A7   	WF###Tf%%%F###TW%%'''UUrG   c                 ,    |                      d          S )z3Read-only property accessing the destination title.r  r   rc   s    rF   r   zDestination.title  s     xx!!!rG   c                 ,    |                      d          S )zHRead-only property accessing the IndirectObject of the destination page.r  r#  rc   s    rF   r  zDestination.page       xx   rG   c                 ,    |                      d          S )z2Read-only property accessing the destination type.r   r#  rc   s    rF   r  zDestination.typ  r%  rG   c                 .    |                      dd          S )z-Read-only property accessing the zoom factor.r  Nr#  rc   s    rF   zoomzDestination.zoom       xx&&&rG   c                 .    |                      dd          S )z<Read-only property accessing the left horizontal coordinate.r  Nr#  rc   s    rF   leftzDestination.left  r)  rG   c                 .    |                      dd          S )z=Read-only property accessing the right horizontal coordinate.r  Nr#  rc   s    rF   rightzDestination.right  s     xx$'''rG   c                 .    |                      dd          S )z9Read-only property accessing the top vertical coordinate.r  Nr#  rc   s    rF   topzDestination.top  s     xx%%%rG   c                 .    |                      dd          S )z<Read-only property accessing the bottom vertical coordinate.r  Nr#  rc   s    rF   bottomzDestination.bottom  s     xx	4(((rG   c                     t          d|                     dt          t          d          t          d          t          d          g                              S )zHRead-only property accessing the color in (R, G, B) with values 0.0-1.0.r;   z/Cr   )r   r   r;   r'   rc   s    rF   colorzDestination.color  sL     HHT;AATU'WXXYY
 
 	
rG   c                 H    t          |                     dd                    S )z_
        Read-only property accessing the font type.

        1=italic, 2=bold, 3=both
        r  r   )r   r   rc   s    rF   font_formatzDestination.font_format  s      txxa00111rG   c                 .    |                      dd          S )z
        Read-only property accessing the outline count.

        positive = expanded
        negative = collapsed
        absolute value = number of visible descendants at all levels
        r)  Nr#  rc   s    rF   outline_countzDestination.outline_count  s     xx$'''rG   )r=   r;   rZ   )"r   r   r   r  r  r	   r   __annotations__r
   rl   rm   r+   r(   r*   r/   r  r  r  r   r   r   r  r  r   r(  r'   r+  r-  r/  r1  r3  r   r5  r7  rH   rG   rF   r  r  ^  s         $ 	 	(   3ES%Z 3E L.*>NNO3E 	3E
 
3E 3E 3E 3Ej 
 
 
 X
 MQ  27c58H2I	   . "x} " " " X" !h~. ! ! ! X! !Xc] ! ! ! X! 'hsm ' ' ' X' 'h{+ ' ' ' X' (x, ( ( ( X( &Xk* & & & X& )- ) ) ) X) 
x. 
 
 
 X
 2Xo6 2 2 2 X2 (x} ( ( ( X( ( (rG   r  rZ   )]
__author____author_email__loggingr  syscollections.abcr   r   ior   mathr   typingr   r   r	   r
   r   
_protocolsr   r   r   _utilsr   r   r   r   r   r   r   r   r   	constantsr   r   r   r   r   re  r   r
  r   r  errorsr    r!   r"   r#   _baser%   r&   r'   r(   r)   r*   r+   r,   r-   r.   _fitr/   _image_inliner0   r1   r2   r3   r4   r5   r6   version_infor9   typing_extensions	getLoggerr   loggerr  r  rj   r;   r   r   r  r>  rR   rO  r^  r  r  rl   r   r   r  r  rH   rG   rF   <module>rL     s  : 
/   				 



 . . . . . . . .                          V U U U U U U U U U
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
            * ) ) ) ) ) * * * * * * - - - - - - b b b b b b b b b b b b                                           I H H H H H H Hw '&&&&&&		8	$	$"*@AAk k k k k$s)Y k k k\a a a a atCH~y a a aHX* X* X* X* X*! X* X* X*v+S +T + + + +"m m m m m# m m m`	 	 	 	 	, 	 	 	$ $ $ $ $, $ $ $N #) F8 F8 F8 F8 F8' F8 F8 F8X
 DH/ //	#	$/ 4d3ic3h?@/ 9c3-.	/ / / /d`6 `6 `6 `6 `6J `6 `6 `6Fn( n( n( n( n(* n( n( n( n( n(rG   