
    iW              	           S SK JrJrJrJr  SSKJrJrJrJ	r	J
r
  \(       a  SSKJr  SSKJr  SSKJr   " S S	5      r " S
 S5      r\\\4   rSSSSS\\\\4      4S jrS\SSS\\   4S jrS\	SSS\\   4S jrg)    )TYPE_CHECKINGOptionalUnioncast   )ArrayObjectDictionaryObjectIndirectObject	PdfObjectTextStringObject   )
PageObject)	PdfReader)	PdfWriterc                   \    \ rS rSrSrS\SSSS4S jrS\\S4   4S	 jr	S
SS\SS4S jr
Srg)NamedReferenceLink)   zGNamed reference link being preserved until we can resolve it correctly.	reference
source_pdfr   returnNc                     Xl         X l        g)z0reference: TextStringObject with named referenceN
_reference_source_pdf)selfr   r   s      M/home/james-whalen/.local/lib/python3.13/site-packages/pypdf/generic/_link.py__init__NamedReferenceLink.__init__,   s    #%    c                     U R                   R                  R                  [        U R                  5      5      nU(       a  UR
                  $ S $ N)r   named_destinationsgetstrr   page)r   destinations     r   find_referenced_page'NamedReferenceLink.find_referenced_page1   s:    &&99==c$//>RS#.{8D8r   
target_pdfr   new_pagec                     [        U R                  5      UR                  ;  a0  UR                  [        U R                  5      UR                  5        gg)2target_pdf: PdfWriter which the new link went intoN)r$   r   r"   add_named_destinationpage_numberr   r)   r*   s      r   patch_reference"NamedReferenceLink.patch_reference5   s@     tz'D'DD,,S-A8CWCWX Er   r   )__name__
__module____qualname____firstlineno____doc__r   r   r   r
   r'   r0   __static_attributes__ r   r   r   r   )   sV    Q&"2 & &PT &
9eND,@&A 9Y+ Y YTX Yr   r   c                   N    \ rS rSrSrS\SS4S jrS\4S jrSS	S
\SS4S jr	Sr
g)DirectReferenceLink<   zHDirect reference link being preserved until we can resolve it correctly.r   r   Nc                     Xl         g)zIreference: an ArrayObject whose first element is the Page indirect objectNr   )r   r   s     r   r   DirectReferenceLink.__init__?   s    #r   c                      U R                   S   $ )Nr   r=   )r   s    r   r'   (DirectReferenceLink.find_referenced_pageC   s    q!!r   r)   r   r*   c                      X R                   S'   g)r,   r   Nr=   r/   s      r   r0   #DirectReferenceLink.patch_referenceF   s    %r   r=   )r2   r3   r4   r5   r6   r   r   r
   r'   r0   r7   r8   r   r   r:   r:   <   s?    R$+ $$ $"n "&+ & &TX &r   r:   r*   r   old_pager   c                 4   U R                  S/ 5       Vs/ s H  n[        X 5      PM     nnUR                  S/ 5       Vs/ s H  n[        X!5      PM     nn[        X45       VVs/ s H  u  pVU(       d  M  U(       d  M  XV4PM     snn$ s  snf s  snf s  snnf )zExtracts links from two pages on the assumption that the two pages are
the same. Produces one list of (new link, old link) tuples.
z/Annots)r#   _build_linkzip)r*   rC   link	new_links	old_linksnew_linkold_links          r   extract_linksrL   N   s     :BiQS9TU9TT,9TIU9AiQS9TU9TT,9TIU y$$ "6( 	  	$  VUs   B
 B%B6B?Bindirect_objectr%   c                 v   [        SUR                  5      n[        [        U R                  5       5      n[	        U[        5      (       a  UR                  S5      S:w  a  g SU;   a?  [        [        US   5      nUR                  S5      S:w  a  g SU;  a  g [        US   U5      $ SU;   a  [        US   U5      $ g )	Nr   z/Subtypez/Linkz/Az/Sz/GoToz/Dz/Dest)r   pdfr	   
get_object
isinstancer#   _create_link)rM   r%   srcrG   actions        r   rE   rE   \   s    
{DHH
%C /"<"<">?Dt-..488J3G73Rt|&T
3::dw&vF4L#..$DM3//r   r   r   r   c                     [        U [        5      (       a  [        X5      $ [        U [        5      (       a  [	        U 5      $ g r!   )rQ   r   r   r   r:   )r   r   s     r   rR   rR   q   s6    )-..!)88)[))"9--r   N)typingr   r   r   r    r   r	   r
   r   r   _pager   _readerr   _writerr   r   r:   ReferenceLinklisttuplerL   rE   rR   r8   r   r   <module>r^      s   > 8 7 X X"##Y Y&& & (*==>L L T%P]_lPlJmEn  | Q^H_ *I ; (=BY r   