§
    ;]¥e¦w  ã                   ó’  — d dl Z d dlmZ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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lmZ ddl m!Z! ddl m"Z# ddl m$Z$m%Z% ddl&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3 ddl4m5Z5m6Z6 ddlm7Z7m8Z8m9Z9m:Z:m;Z; dZ< G d„ d¦  «        Z= G d„ d¦  «        Z> G d„ de>¦  «        Z?dS )é    N)ÚBytesIOÚFileIOÚIOBase)ÚPath)ÚTracebackType)	ÚAnyÚDictÚIterableÚListÚOptionalÚTupleÚTypeÚUnionÚcasté   )Ú
Encryption)Ú
PageObject)Ú	PdfReader)ÚStrByteTypeÚdeprecation_bookmarkÚdeprecation_with_replacementÚstr_)Ú	PdfWriter)ÚGoToActionArguments)ÚPagesAttributes)ÚTypArgumentsÚTypFitArguments)ÚPAGE_FITÚArrayObjectÚDestinationÚDictionaryObjectÚFitÚFloatObjectÚIndirectObjectÚ
NameObjectÚ
NullObjectÚNumberObjectÚOutlineItemÚTextStringObjectÚ
TreeObject)Ú	PageRangeÚPageRangeSpec)ÚFitTypeÚ
LayoutTypeÚOutlineTypeÚPagemodeTypeÚZoomArgTypez=close() was called and thus the writer cannot be used anymorec                   ó*   — e Zd ZdZdedededdfd„ZdS )Ú_MergedPagez@Collect necessary information on each page that is being merged.ÚpagedataÚsrcÚidÚreturnNc                 ó>   — || _         || _        d | _        || _        d S ©N)r5   r4   Úout_pagedatar6   )Úselfr4   r5   r6   s       ú//usr/lib/python3/dist-packages/pypdf/_merger.pyÚ__init__z_MergedPage.__init__Q   s#   € ØˆŒØ ˆŒØ ˆÔØˆŒˆˆó    )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Úintr=   © r>   r<   r3   r3   N   sJ   € € € € € ØJÐJð ð °)ð Àð Èð ð ð ð ð ð r>   r3   c                   ót  — e Zd ZdZ ed¬¦  «        	 dAdedeeef         dd	fd
„¦   «         Z	dBd„Z
deee                  dee         dee         dd	fd„Z edd¬¦  «        	 	 	 	 	 	 dCdee         ded	eeef         dee         dee         dedee         dd	fd„¦   «         Zdeeeef         deeee         f         fd„Z edd¬¦  «        	 	 	 dDdeeeef         dee         ded	eeeef         eeeef         ee         f         dedd	f
d„¦   «         Zdeeef         dd	fd„ZdEd„Zdeeef         dd	fd„Z deeef         dd	fd„Z!de"dd	fd „Z#de"dd	fd!„Z$d"e%dd	fd#„Z&d"e%dd	fd$„Z'd%ed&eeeeef         f         deeeef         eeeef         ee         f         deeeef                  fd'„Z(d%ede)deeeef         eeeef         ee         f         de)fd(„Z*dEd)„Z+ ed¬¦  «        	 	 dFdee,e-                  d*ee.         dd	fd+„¦   «         Z/ ed¬,¦  «        dee-e0f         d-e1dd	fd.„¦   «         Z2dee1         dd	fd/„Z3 ed¬¦  «        	 dGdee1         dee,e-                  dd	fd0„¦   «         Z4 ed¬,¦  «        	 dGdeeef         d1ee)         deee                  fd2„¦   «         Z5 ed¬,¦  «        	 dGdeeef         d1ee)         deee                  fd3„¦   «         Z6d	d	d	dde7d	fd4edee         d*ed	e.e8f         d5eee9e9e9f                  d6ed7ed8e:d9ee         de8fd:„Z;	 	 	 	 	 dHd4ed9ed*ed	e.e8f         d5eee9e9e9f                  d6ed7ed8e<d<e=de8fd=„Z>	 	 	 	 	 dHd4ed9ed*ed	e.e8f         d5eee9e9e9f                  d6ed7ed8e<d<e=de8fd>„Z?d4ed9edd	fd?„Z@	 	 dFd4edee         d9ee         dd	fd@„ZAd	S )IÚ	PdfMergeraH  
    Initialize a ``PdfMerger`` object.

    ``PdfMerger`` merges multiple PDFs into a single PDF.
    It can concatenate, slice, insert, or any combination of the above.

    See the functions :meth:`merge()<merge>` (or :meth:`append()<append>`)
    and :meth:`write()<write>` for usage information.

    Args:
        strict: Determines whether user should be warned of all
            problems and also causes some correctable problems to be fatal.
            Defaults to ``False``.
        fileobj: Output file. Can be a filename or any kind of
            file-like object.
    Úoutline)Ú	bookmarksFÚ ÚstrictÚfileobjr7   Nc                 óŽ   — g | _         g | _        t          ¦   «         | _        g | _        g | _        d| _        || _        || _        d S )Nr   )	ÚinputsÚpagesr   ÚoutputrG   Únamed_destsÚid_countrK   rJ   )r;   rJ   rK   s      r<   r=   zPdfMerger.__init__j   sE   € ð 46ˆŒØ "ˆŒ
Ý+4©;¬;ˆŒØ$&ˆŒØ&(ˆÔØˆŒØˆŒØˆŒˆˆr>   c                 ó   — | S r9   rD   )r;   s    r<   Ú	__enter__zPdfMerger.__enter__w   s   € àˆr>   Úexc_typeÚexcÚ	tracebackc                 óp   — | j         r|                      | j         ¦  «         |                      ¦   «          dS )z*Write to the fileobj and close the merger.N)rK   ÚwriteÚclose)r;   rT   rU   rV   s       r<   Ú__exit__zPdfMerger.__exit__{   s3   € ð Œ<ð 	%Ø�JŠJ�t”|Ñ$Ô$Ð$Ø�
Š
‰Œˆˆˆr>   Úoutline_itemÚimport_outline)ÚbookmarkÚimport_bookmarksTÚpage_numberrN   Úpositionc                 ó  — |�8|€'|}d}d}t          j        |› d|› d�t          ¦  «         nt          d¦  «        ‚|€t          d¦  «        ‚|€t          d¦  «        ‚|                      |¦  «        \  }	}
t          |	| j        ¬	¦  «        }| j                             |	|f¦  «         |
�|
|_	        |€d
t          |j        ¦  «        f}nwt          |t          ¦  «        r(|                     t          |j        ¦  «        ¦  «        }n:t          |t          ¦  «        rn$t          |t           ¦  «        st#          d¦  «        ‚g }g }|r|j        }|                      |||¦  «        }|rTt)          t+          |¦  «        t-          | j        ¦  «        t1          j        ¦   «         ¦  «        }| xj        ||gz  c_        n| xj        |z  c_        |j        }|                      |||¦  «        }| xj        |z  c_        t;          |Ž D ]L}|j        |         }| j        }| xj        dz  c_        t=          |||¦  «        }|                     |¦  «         ŒM|                      |¦  «         |                       |¦  «         || j        ||…<   dS )a	  
        Merge the pages from the given file into the output file at the
        specified page number.

        Args:
            page_number: The *page number* to insert this file. File will
                be inserted after the given number.
            fileobj: A File Object or an object that supports the standard
                read and seek methods similar to a File Object. Could also be a
                string representing a path to a PDF file.
                None as an argument is deprecated.
            outline_item: Optionally, you may specify an outline item
                (previously referred to as a 'bookmark') to be applied at the
                beginning of the included file by supplying the text of the outline item.
            pages: can be a :class:`PageRange<pypdf.pagerange.PageRange>`
                or a ``(start, stop[, step])`` tuple
                to merge only the specified range of pages from the source
                document into the output document.
                Can also be a list of pages to merge.
           import_outline: You may prevent the source document's
                outline (collection of outline items, previously referred to as
                'bookmarks') from being imported by specifying this as ``False``.
        Nr`   r_   zF is deprecated as an argument and will be removed in pypdf=4.0.0. Use ú insteadzCThe argument position of merge is deprecated. Use page_number only.úpage_number may not be Nonezfileobj may not be None)rJ   r   z0"pages" must be a tuple of (start, stop[, step])r   )!ÚwarningsÚwarnÚDeprecationWarningÚ
ValueErrorÚ_create_streamr   rJ   rM   ÚappendÚ_encryptionÚlenrN   Ú
isinstancer+   ÚindicesÚlistÚtupleÚ	TypeErrorrG   Ú_trim_outliner(   r)   r'   rQ   r"   ÚfitÚnamed_destinationsÚ_trim_destsrP   Úranger3   Ú_associate_dests_to_pagesÚ!_associate_outline_items_to_pages)r;   r_   rK   r[   rN   r\   r`   Úold_termÚnew_termÚstreamÚencryption_objÚreaderÚsrcpagesrG   Úoutline_item_typÚdestsÚtrimmed_destsÚiÚpager6   Úmps                        r<   ÚmergezPdfMerger.merge†   së  € ðB ÐØÐ"Ø&�Ø%�Ø(�Ý”à#ð Jð JØ7?ðJð Jð Jõ 'ñô ð ð õ !ð,ñô ð ð
 Ðõ Ð:Ñ;Ô;Ð;Øˆ?õ Ð6Ñ7Ô7Ð7à!%×!4Ò!4°WÑ!=Ô!=Ñˆ�õ ˜6¨$¬+Ð6Ñ6Ô6ˆØŒ×Ò˜F FÐ+Ñ,Ô,Ð,ØÐ%Ø!/ˆFÔð ˆ=Ø�˜FœLÑ)Ô)Ð*ˆEˆEÝ˜�yÑ)Ô)ð 	PØ—M’M¥# f¤lÑ"3Ô"3Ñ4Ô4ˆEˆEÝ˜�tÑ$Ô$ð 	PØÝ˜E¥5Ñ)Ô)ð 	PÝÐNÑOÔOÐOàˆàˆØð 	AØ”nˆGØ×(Ò(¨°¸%Ñ@Ô@ˆGàð 	$Ý*Ý  Ñ.Ô.Ý˜Tœ]Ñ+Ô+Ý”‘	”	ñ ô  Ðð
 ˆLŒLÐ-¨wÐ7Ñ7ˆLŒLˆLàˆLŒL˜GÑ#ˆLŒLàÔ)ˆØ×(Ò(¨°¸Ñ>Ô>ˆØÐÔ˜MÑ)ÐÔõ ˜�ð 	 ð 	 ˆAØ”< ”?ˆDà”ˆBØˆMŒM˜QÑˆMŒMå˜T 6¨2Ñ.Ô.ˆBà�OŠO˜BÑÔÐÐà×&Ò& xÑ0Ô0Ð0Ø×.Ò.¨xÑ8Ô8Ð8ð /7ˆŒ
�;˜{Ð*Ñ+Ð+Ð+r>   c                 óf  — d }t          |t          t          f¦  «        rt          |d¦  «        }nÿt          |t          ¦  «        r‚|j        r|j        }|j                             ¦   «         }|j                             d¦  «         t          |j         
                    ¦   «         ¦  «        }|j                             |¦  «         nht          |d¦  «        rIt          |d¦  «        r9|                     d¦  «         | 
                    ¦   «         }t          |¦  «        }nt          d¦  «        ‚||fS )NÚrbr   ÚseekÚreadzÝPdfMerger.merge requires an object that PdfReader can parse. Typically, that is a Path or a string representing a Path, a file object, or an object implementing .seek and .read. Passing a PdfReader directly works as well.)rl   Ústrr   r   r   rj   rz   Útellr‡   r   rˆ   ÚhasattrÚNotImplementedError)r;   rK   r{   rz   Ú	orig_tellÚfilecontents         r<   rh   zPdfMerger._create_streamû   s&  € ð ˆå�g¥¥T˜{Ñ+Ô+ð 	Ý˜G TÑ*Ô*ˆFˆFÝ˜¥Ñ+Ô+ð 	ØÔ"ð 5Ø!(Ô!4�Øœ×+Ò+Ñ-Ô-ˆIØŒN×Ò Ñ"Ô"Ð"Ý˜Wœ^×0Ò0Ñ2Ô2Ñ3Ô3ˆFð ŒN×Ò 	Ñ*Ô*Ð*Ð*Ý�W˜fÑ%Ô%ð 
	­'°'¸6Ñ*BÔ*Bð 
	Ø�LŠL˜‰OŒOˆOØ!Ÿ,š,™.œ.ˆKÝ˜[Ñ)Ô)ˆFˆFå%ð>ñô ð ð �~Ð%Ð%r>   c                 ó\   — |                       t          | j        ¦  «        ||||¦  «         dS )a¤  
        Identical to the :meth:`merge()<merge>` method, but assumes you want to
        concatenate all pages onto the end of the file instead of specifying a
        position.

        Args:
            fileobj: A File Object or an object that supports the standard
                read and seek methods similar to a File Object. Could also be a
                string representing a path to a PDF file.
            outline_item: Optionally, you may specify an outline item
                (previously referred to as a 'bookmark') to be applied at the
                beginning of the included file by supplying the text of the outline item.
            pages: can be a :class:`PageRange<pypdf.pagerange.PageRange>`
                or a ``(start, stop[, step])`` tuple
                to merge only the specified range of pages from the source
                document into the output document.
                Can also be a list of pages to append.
            import_outline: You may prevent the source document's
                outline (collection of outline items, previously referred to as
                'bookmarks') from being imported by specifying this as ``False``.
        N)r„   rk   rN   )r;   rK   r[   rN   r\   s        r<   ri   zPdfMerger.append  s,   € ð> 	�
Š
•3�t”z‘?”? G¨\¸5À.ÑQÔQÐQÐQÐQr>   c                 ó\  — | j         €t          t          ¦  «        ‚| j        D ]«}| j                              |j        ¦  «         t          t          t          t          f         | j         j
                             ¦   «         ¦  «        }| j                              |t          j                 d                              ¦   «         ¦  «        |_        Œ¬|                      ¦   «          |                      ¦   «          | j                              |¦  «        \  }}|r|                     ¦   «          dS dS )zÃ
        Write all data that has been merged to the given output file.

        Args:
            fileobj: Output file. Can be a filename or any kind of
                file-like object.
        Néÿÿÿÿ)rO   ÚRuntimeErrorÚERR_CLOSED_WRITERrN   Úadd_pager4   r   r	   r‰   r   Ú_pagesÚ
get_objectÚget_referenceÚPAÚKIDSr:   Ú_write_destsÚ_write_outlinerX   rY   )r;   rK   r‚   Ú	pages_objÚmy_fileÚret_fileobjs         r<   rX   zPdfMerger.write?  s  € ð Œ;ÐÝÕ0Ñ1Ô1Ð1ð
 ”Jð 	ð 	ˆDØŒK× Ò  ¤Ñ/Ô/Ð/Ý�T¥#¥s (œ^¨T¬[Ô-?×-JÒ-JÑ-LÔ-LÑMÔMˆIØ $¤× 9Ò 9Ø�"œ'Ô" 2Ô&×1Ò1Ñ3Ô3ñ!ô !ˆDÔÐð
 	×ÒÑÔÐØ×ÒÑÔÐð  $œ{×0Ò0°Ñ9Ô9Ñˆ�àð 	 Ø×ÒÑÔÐÐÐð	 ð 	 r>   c                 ór   — g | _         | j        D ]\  }}|                     ¦   «          Œg | _        d| _        dS )zHShut all file descriptors (input and output) and clear all memory usage.N)rN   rM   rY   rO   )r;   ÚfoÚ_readers      r<   rY   zPdfMerger.close^  s?   € àˆŒ
Øœ;ð 	ð 	‰KˆB�Ø�HŠH‰JŒJˆJˆJàˆŒØˆŒˆˆr>   Úinfosc                 óp   — | j         €t          t          ¦  «        ‚| j                              |¦  «         dS )zò
        Add custom metadata to the output.

        Args:
            infos: a Python dictionary where each key is a field
                and each value is your new metadata.
                An example is ``{'/Title': 'My title'}``
        N)rO   r’   r“   Úadd_metadata©r;   r¢   s     r<   r¤   zPdfMerger.add_metadatag  s7   € ð Œ;ÐÝÕ0Ñ1Ô1Ð1ØŒ× Ò  Ñ'Ô'Ð'Ð'Ð'r>   c                 óP   — t          dd¦  «         |                      |¦  «         dS )zS
        Use :meth:`add_metadata` instead.

        .. deprecated:: 1.28.0
        ÚaddMetadatar¤   N)r   r¤   r¥   s     r<   r§   zPdfMerger.addMetadatat  s.   € õ 	% ]°NÑCÔCÐCØ×Ò˜%Ñ Ô Ð Ð Ð r>   Úlayoutc                 óP   — t          dd¦  «         |                      |¦  «         dS )zV
        Use :meth:`set_page_layout` instead.

        .. deprecated:: 1.28.0
        ÚsetPageLayoutÚset_page_layoutN)r   r«   ©r;   r¨   s     r<   rª   zPdfMerger.setPageLayout}  s/   € õ 	% _Ð6GÑHÔHÐHØ×Ò˜VÑ$Ô$Ð$Ð$Ð$r>   c                 óp   — | j         €t          t          ¦  «        ‚| j                              |¦  «         dS )a  
        Set the page layout.

        Args:
            layout: The page layout to be used

        .. list-table:: Valid ``layout`` arguments
           :widths: 50 200

           * - /NoLayout
             - Layout explicitly not specified
           * - /SinglePage
             - Show one page at a time
           * - /OneColumn
             - Show one column at a time
           * - /TwoColumnLeft
             - Show pages in two columns, odd-numbered pages on the left
           * - /TwoColumnRight
             - Show pages in two columns, odd-numbered pages on the right
           * - /TwoPageLeft
             - Show two pages at a time, odd-numbered pages on the left
           * - /TwoPageRight
             - Show two pages at a time, odd-numbered pages on the right
        N)rO   r’   r“   Ú_set_page_layoutr¬   s     r<   r«   zPdfMerger.set_page_layout†  s7   € ð2 Œ;ÐÝÕ0Ñ1Ô1Ð1ØŒ×$Ò$ VÑ,Ô,Ð,Ð,Ð,r>   Úmodec                 óR   — t          ddd¦  «         |                      |¦  «         dS )zT
        Use :meth:`set_page_mode` instead.

        .. deprecated:: 1.28.0
        ÚsetPageModeÚset_page_modeú3.0.0N)r   r²   ©r;   r¯   s     r<   r±   zPdfMerger.setPageMode£  s0   € õ 	% ]°OÀWÑMÔMÐMØ×Ò˜4Ñ Ô Ð Ð Ð r>   c                 óp   — | j         €t          t          ¦  «        ‚| j                              |¦  «         dS )aW  
        Set the page mode.

        Args:
            mode: The page mode to use.

        .. list-table:: Valid ``mode`` arguments
           :widths: 50 200

           * - /UseNone
             - Do not show outline or thumbnails panels
           * - /UseOutlines
             - Show outline (aka bookmarks) panel
           * - /UseThumbs
             - Show page thumbnails panel
           * - /FullScreen
             - Fullscreen view
           * - /UseOC
             - Show Optional Content Group (OCG) panel
           * - /UseAttachments
             - Show attachments panel
        N)rO   r’   r“   r²   r´   s     r<   r²   zPdfMerger.set_page_mode¬  s7   € ð. Œ;ÐÝÕ0Ñ1Ô1Ð1ØŒ×!Ò! $Ñ'Ô'Ð'Ð'Ð'r>   Úpdfr   c                 óê  — g }t          |t          ¦  «        r|nt          t          |Ž ¦  «        }|                     ¦   «         D ]®\  }}|D ]¦}|j        |                              ¦   «         |d                              ¦   «         k    ri|d                              ¦   «         |t          d¦  «        <   t          |¦  «        t          |d         ¦  «        k    sJ ‚|                     |¦  «          nŒ§Œ¯|S )z 
        Remove named destinations that are not a part of the specified page set.

        Args:
            pdf:
            dests:
            pages:
        ú/Pageú/Title)	rl   rn   ru   ÚitemsrN   r–   r%   r   ri   )	r;   r¶   r   rN   Ú	new_destsÚlstÚkeyÚobjÚjs	            r<   rt   zPdfMerger._trim_destsÇ  sñ   € ð ˆ	Ý! %­Ñ.Ô.ÐGˆeˆeµD½À¸Ñ4GÔ4GˆØŸš™œð 	ð 	‰HˆC�Øð ð �Ø”9˜Q”<×*Ò*Ñ,Ô,°°G´×0GÒ0GÑ0IÔ0IÒIÐIØ/2°7¬|×/FÒ/FÑ/HÔ/H�C�
 7Ñ+Ô+Ñ,Ý ™9œ9­¨S°¬]Ñ(;Ô(;Ò;Ð;Ð;Ð;Ø×$Ò$ SÑ)Ô)Ð)Ø�Eð	 Jøð
 Ðr>   c                 óv  — g }d}t          |t          ¦  «        r|nt          t          |Ž ¦  «        }t          |¦  «        D ]÷\  }}t          |t          ¦  «        rO|                      |||¦  «        }	|	r5|s|                     ||dz
           ¦  «         |                     |	¦  «         Œid}|D ]‰}
|d         €Œ|j        |
                              ¦   «         |d                              ¦   «         k    rC|d                              ¦   «         |t          d¦  «        <   |                     |¦  «         d} nŒŠŒø|S )zÒ
        Remove outline item entries that are not a part of the specified page set.

        Args:
            pdf:
            outline:
            pages:

        Returns:
            An outline type
        Tr   Fr¸   )	rl   rn   ru   Ú	enumeraterq   ri   rN   r–   r%   )r;   r¶   rG   rN   Únew_outlineÚprev_header_addedr¼   r�   r[   Úsubr¿   s              r<   rq   zPdfMerger._trim_outlineà  s_  € ð" ˆØ ÐÝ! %­Ñ.Ô.ÐGˆeˆeµD½À¸Ñ4GÔ4GˆÝ(¨Ñ1Ô1ð 	ð 	‰OˆAˆ|Ý˜,­Ñ-Ô-ð Ø×(Ò(¨¨l¸CÑ@Ô@�Øð ,Ø,ð ;Ø#×*Ò*¨7°1°q±5¬>Ñ:Ô:Ð:Ø×&Ò& sÑ+Ô+Ð+øà$)Ð!Øð 	ð 	�AØ# GÔ,Ð4Ø Ø”y ”|×.Ò.Ñ0Ô0°LÀÔ4I×4TÒ4TÑ4VÔ4VÒVÐVØ<HØ#ô=ç$š*™,œ,ð %¥Z°Ñ%8Ô%8Ñ9ð $×*Ò*¨<Ñ8Ô8Ð8Ø,0Ð)Ø˜ð Wøð Ðr>   c                 ó  — | j         €t          t          ¦  «        ‚| j        D ]h}d }d|v rDt	          | j        ¦  «        D ]/\  }}|j        |d         k    r|j        |t          d¦  «        <    nŒ0|�| j          	                    |¦  «         Œid S )Nr¸   )
rO   r’   r“   rP   rÁ   rN   r6   r:   r%   Úadd_named_destination_object)r;   Ú
named_destÚpagenor‚   s       r<   rš   zPdfMerger._write_dests	  s¶   € ØŒ;ÐÝÕ0Ñ1Ô1Ð1ØÔ*ð 		Eð 		EˆJØˆFØ˜*Ð$Ð$Ý$-¨d¬jÑ$9Ô$9ð ð ‘L�F˜DØ”w *¨WÔ"5Ò5Ð5Ø:>Ô:K˜
¥:¨gÑ#6Ô#6Ñ7Ø˜ð 6ð Ð!Ø”×8Ò8¸ÑDÔDÐDøð		Eð 		Er>   Úparentc                 ó¤  — | j         €t          t          ¦  «        ‚|€| j        }|€
J d¦   «         ‚d }|D ]š}t	          |t
          ¦  «        r|                      ||¦  «         Œ.d }d|v rCt          | j        ¦  «        D ].\  }}|j	        |d         k    r|  
                    ||¦  «          nŒ/|�!|d= |d= | j                              ||¦  «        }Œ›d S )Núhint for mypyr¸   ú/Type)rO   r’   r“   rG   rl   rn   r›   rÁ   rN   r6   Ú_write_outline_item_on_pageÚadd_outline_item_dict)r;   rG   rÉ   Ú
last_addedr[   Úpage_nor‚   s          r<   r›   zPdfMerger._write_outline  s  € ð Œ;ÐÝÕ0Ñ1Ô1Ð1Øˆ?Ø”lˆGØÐ"Ð" OÑ"Ô"Ð"àˆ
Ø#ð 	Uð 	UˆLÝ˜,­Ñ-Ô-ð Ø×#Ò# L°*Ñ=Ô=Ð=ØàˆGØ˜,Ð&Ð&Ý%.¨t¬zÑ%:Ô%:ð ð ‘M�G˜TØ”w ,¨wÔ"7Ò7Ð7Ø×8Ò8¸ÀtÑLÔLÐLØ˜ð 8ð Ð"Ø  Ð)¨<¸Ð+@Ø!œ[×>Ò>¸|ÈVÑTÔT�
øð	Uð 	Ur>   )r]   r‚   c                 óî  — t          t          |d         ¦  «        }t          |j        ¦  «        t	          |¦  «        g}t
          j        t          j        ft
          j	        t          j        ft
          j
        t          j        ft
          j        t          j        ft
          j        t          j        t          j        dft
          j        t          j        t          j        t          j        t          j        fi}|                     |t%          ¦   «         ¦  «        D ]o}||v rDt'          ||         t(          ¦  «        s)|                     t-          ||         ¦  «        ¦  «         n"|                     t-          d¦  «        ¦  «         ||= Œpt/          t	          t0          j        ¦  «        t	          d¦  «        t	          t0          j        ¦  «        t7          |¦  «        i¦  «        |t	          d¦  «        <   d S )NrÌ   z/Zoomr   z/GoToz/A)r   r‰   r'   r6   r%   r   ÚFIT_Hr   ÚTOPÚFIT_BHÚFIT_VÚLEFTÚFIT_BVÚXYZÚFIT_RÚBOTTOMÚRIGHTÚgetro   rl   r&   ri   r#   r!   r   ÚSÚDr   )r;   r[   r‚   Úoi_typeÚargsÚfit2arg_keysÚarg_keys          r<   rÍ   z%PdfMerger._write_outline_item_on_page3  s”  € õ •s˜L¨Ô1Ñ2Ô2ˆÝ˜TœWÑ%Ô%¥z°'Ñ':Ô':Ð;ˆåÔ!¥LÔ$4Ð#6ÝÔ"¥\Ô%5Ð$7ÝÔ!¥LÔ$5Ð#7ÝÔ"¥\Ô%6Ð$8ÝÔ¥,Ô"3µ\Ô5EÀwÐ!OÝÔ!ÝÔ!ÝÔ#ÝÔ"ÝÔ ð	$ð4
ˆð $×'Ò'¨µ±´Ñ9Ô9ð 	&ð 	&ˆGØ˜,Ð&Ð&­zØ˜WÔ%¥zñ0ô 0Ð&ð —’�K¨°WÔ(=Ñ>Ô>Ñ?Ô?Ð?Ð?à—’�K¨™NœNÑ+Ô+Ð+Ø˜WÐ%Ð%å)9åÕ.Ô0Ñ1Ô1µ:¸gÑ3FÔ3FÝÕ.Ô0Ñ1Ô1µ;¸tÑ3DÔ3Dðñ*
ô *
ˆ•Z Ñ%Ô%Ñ&Ð&Ð&r>   c                 óD  — | j         D ]—}d }|d         }t          |t          ¦  «        rŒ"|D ]8}|                     ¦   «         |j                             ¦   «         k    r|j        }Œ9|€t          d|d         › d�¦  «        ‚t          |¦  «        |t          d¦  «        <   Œ˜d S )Nr¸   zUnresolved named destination 'r¹   ú')rP   rl   r'   r–   r4   r6   rg   r%   )r;   rN   rÇ   rÈ   Únpr‚   s         r<   rv   z#PdfMerger._associate_dests_to_pagesV  sÇ   € ØÔ*ð 	Cð 	CˆJØˆFØ˜GÔ$ˆBå˜"�lÑ+Ô+ð Øàð %ð %�Ø—=’=‘?”? d¤m×&>Ò&>Ñ&@Ô&@Ò@Ð@Ø!œW�Føàˆ~Ý ØL°ZÀÔ5IÐLÐLÐLñô ð õ /;¸6Ñ.BÔ.BˆJ•z 'Ñ*Ô*Ñ+Ð+ð	Cð 	Cr>   c                 óŠ  — |€| j         }|€
J d¦   «         ‚|D ]ª}t          |t          ¦  «        r|                      ||¦  «         Œ.d }|d         }t          |t          ¦  «        rŒN|D ]8}|                     ¦   «         |j                             ¦   «         k    r|j        }Œ9|�t	          |¦  «        |t          d¦  «        <   Œ«d S )NrË   r¸   )	rG   rl   rn   rw   r'   r–   r4   r6   r%   )r;   rN   rG   r[   rÈ   Úoutline_item_pageÚps          r<   rw   z+PdfMerger._associate_outline_items_to_pagesh  sï   € ð ˆ?Ø”lˆGØÐ"Ð" OÑ"Ô"Ð"Ø#ð 	Ið 	IˆLÝ˜,­Ñ-Ô-ð Ø×6Ò6°u¸lÑKÔKÐKØàˆFØ ,¨WÔ 5ÐåÐ+­\Ñ:Ô:ð Øàð "ð "�Ø$×/Ò/Ñ1Ô1°Q´Z×5JÒ5JÑ5LÔ5LÒLÐLØœT�FøàÐ!Ý4@ÀÑ4HÔ4H��Z¨Ñ0Ô0Ñ1øð!	Ið 	Ir>   Úrootc                 ó&  — |€| j         }t          |¦  «        D ]w\  }}t          |t          ¦  «        r!|                      ||¦  «        }|r|g|z   c S Œ;||k    s1t          t          t          t          f         |d         ¦  «        |k    r|gc S Œxd S )Nr¹   )rG   rÁ   rl   rn   Úfind_outline_itemr   r	   r   )r;   r[   ré   r�   Úoi_enumÚress         r<   rë   zPdfMerger.find_outline_item�  sº   € ð ˆ<Ø”<ˆDå# D™/œ/ð 	ð 	‰JˆAˆwÝ˜'¥4Ñ(Ô(ð ð ×,Ò,¨\¸7ÑCÔC�Øð %Ø˜3 ™9Ð$Ð$Ð$ð%ð ˜<Ò'Ð'Ý��S¥#˜Xœ¨°Ô(9Ñ:Ô:¸lÒJÐJð �s�
�
�
ð Kð
 ˆtr>   c                 ó.   — |                       ||¦  «        S )zZ
        .. deprecated:: 2.9.0
            Use :meth:`find_outline_item` instead.
        )rë   )r;   r[   ré   s      r<   Úfind_bookmarkzPdfMerger.find_bookmarkš  s   € ð ×%Ò% l°DÑ9Ô9Ð9r>   ÚtitleÚcolorÚboldÚitalicrr   Úpagenumc	           
      ó  — |�|�t          d¦  «        ‚|�&d}	d}
t          j        |	› d|
› d�t          ¦  «         |}|€t          d¦  «        ‚| j        }|€t          t          ¦  «        ‚|                     |||d||||¦  «        S )aQ  
        Add an outline item (commonly referred to as a "Bookmark") to this PDF file.

        Args:
            title: Title to use for this outline item.
            page_number: Page number this outline item will point to.
            parent: A reference to a parent outline item to create nested
                outline items.
            color: Color of the outline item's font as a red, green, blue tuple
                from 0.0 to 1.0
            bold: Outline item font is bold
            italic: Outline item font is italic
            fit: The fit of the destination page.
        NzMThe argument pagenum of add_outline_item is deprecated. Use page_number only.rô   r_   úG is deprecated as an argument and will be removed in pypdf==4.0.0. Use rb   rc   )rg   rd   re   rf   rO   r’   r“   Úadd_outline_item)r;   rð   r_   rÉ   rñ   rò   ró   rr   rô   rx   ry   Úwriters               r<   r÷   zPdfMerger.add_outline_item¦  sÜ   € ð2 Ð" wÐ':Ýð(ñô ð ð ÐØ ˆHØ$ˆHÝŒMàð Gð GØ4<ðGð Gð Gõ #ñô ð ð "ˆKØÐÝÐ:Ñ;Ô;Ð;Ø”ˆØˆ>ÝÕ0Ñ1Ô1Ð1Ø×&Ò&ØØØØØØØØñ	
ô 	
ð 		
r>   ú/Fitrà   c                 óx   — t          ddd¦  «         |                      ||||||t          ||¬¦  «        ¦  «        S )zZ
        .. deprecated:: 1.28.0
            Use :meth:`add_outline_item` instead.
        ÚaddBookmarkr÷   r³   ©Úfit_typeÚfit_args©r   r÷   r"   ©	r;   rð   rô   rÉ   rñ   rò   ró   rr   rà   s	            r<   rû   zPdfMerger.addBookmarkß  óQ   € õ 	% ]Ð4FÈÑPÔPÐPØ×$Ò$ØØØØØØÝ˜ tÐ,Ñ,Ô,ñ
ô 
ð 	
r>   c                 óx   — t          ddd¦  «         |                      ||||||t          ||¬¦  «        ¦  «        S )zY
        .. deprecated:: 2.9.0
            Use :meth:`add_outline_item` instead.
        rû   r÷   r³   rü   rÿ   r   s	            r<   Úadd_bookmarkzPdfMerger.add_bookmarkù  r  r>   c                 óP   — t          ddd¦  «         |                      ||¦  «        S )z_
        .. deprecated:: 1.28.0
            Use :meth:`add_named_destination` instead.
        ÚaddNamedDestinationÚadd_named_destinationr³   )r   r  )r;   rð   rô   s      r<   r  zPdfMerger.addNamedDestination  s6   € õ
 	%Ø!Ð#:¸Gñ	
ô 	
ð 	
ð ×)Ò)¨%°Ñ9Ô9Ð9r>   c                 óN  — |�|�t          d¦  «        ‚|�&d}d}t          j        |› d|› d�t          ¦  «         |}|€t          d¦  «        ‚t	          t          |¦  «        t          |¦  «        t          j        d¬	¦  «        ¦  «        }| j	         
                    |¦  «         dS )
z¢
        Add a destination to the output.

        Args:
            title: Title to use
            page_number: Page number this destination points at.
        NzRThe argument pagenum of add_named_destination is deprecated. Use page_number only.rô   r_   rö   rb   rc   i:  )Útop)rg   rd   re   rf   r    r)   r'   r"   Úfit_horizontallyrP   ri   )r;   rð   r_   rô   rx   ry   Údests          r<   r  zPdfMerger.add_named_destination  sæ   € ð Ð" wÐ':Ýð(ñô ð ð ÐØ ˆHØ$ˆHÝŒMàð Gð GØ4<ðGð Gð Gõ #ñô ð ð "ˆKØÐÝÐ:Ñ;Ô;Ð;ÝÝ˜UÑ#Ô#Ý˜Ñ%Ô%ÝÔ  SÐ)Ñ)Ô)ñ
ô 
ˆð
 	Ô×Ò Ñ%Ô%Ð%Ð%Ð%r>   )FrI   )r7   rF   )NNNNTN)NNT)r7   N)NNr9   )NNFFrù   )Br?   r@   rA   rB   r   Úboolr   r   r   r=   rS   r   r   ÚBaseExceptionr   rZ   rC   r   r‰   r,   r„   r   r   r   rh   r+   r   ri   rX   rY   r	   r   r¤   r§   r.   rª   r«   r0   r±   r²   rt   r/   rq   rš   r
   r(   r*   r›   r    r3   rÍ   rv   rw   rë   rï   r   r$   Úfloatr"   r÷   r-   r1   rû   r  r  r  rD   r>   r<   rF   rF   X   s+	  € € € € € ðð ð" Ð IÐ.Ñ.Ô.àHJð
ð 
Øð
Ø-2°4¸Ð3DÔ-Eð
à	ð
ð 
ð 
ñ /Ô.ð
ðð ð ð ð	à˜4 Ô.Ô/ð	ð �mÔ$ð	ð ˜MÔ*ð		ð
 
ð	ð 	ð 	ð 	ð Ð >ÐDTÐUÑUÔUð &*Ø=AØ&*Ø)-Ø#Ø"&ðr7ð r7à˜c”]ðr7ð �t˜T ;°	Ð9Ô:ðr7ð ˜s”mð	r7ð
 ˜Ô&ðr7ð ðr7ð ˜3”-ðr7ð 
ðr7ð r7ð r7ñ VÔUðr7ðh!&Ø˜T ;°	Ð9Ô:ð!&à	ˆv�x 
Ô+Ð+Ô	,ð!&ð !&ð !&ð !&ðF Ð >ÐDTÐUÑUÔUð '+ð Ø#ðRð Rà�{ I¨tÐ3Ô4ðRð ˜s”mðRð Ø�)˜U 3¨ 8œ_¨e°C¸¸c°MÔ.BÀDÈÄIÐMô
ð	Rð ðRð 
ðRð Rð Rñ VÔUðRð@ ˜U 4¨Ð#4Ô5ð  ¸$ð  ð  ð  ð  ð>ð ð ð ð( $ s¨C x¤.ð (°Tð (ð (ð (ð (ð!  c¨3 h¤ð !°Dð !ð !ð !ð !ð% Jð %°4ð %ð %ð %ð %ð- jð -°Tð -ð -ð -ð -ð:! ð !°ð !ð !ð !ð !ð( ,ð (°4ð (ð (ð (ð (ð6àðð �C˜˜c 3˜hœÐ'Ô(ðð �U˜3 ˜8”_ e¨C°°c¨MÔ&:¸DÀ¼IÐEÔFð	ð
 
ˆd�3˜�8ŒnÔ	ðð ð ð ð2'àð'ð ð'ð �U˜3 ˜8”_ e¨C°°c¨MÔ&:¸DÀ¼IÐEÔFð	'ð
 
ð'ð 'ð 'ð 'ðREð Eð Eð Eð Ð IÐ.Ñ.Ô.ð 48Ø'+ðUð Uà˜( ;Ô/Ô0ðUð ˜Ô$ðUð 
ð	Uð Uð Uñ /Ô.ðUð6 Ð >Ð2Ñ2Ô2ð 
Ø! +¨{Ð":Ô;ð 
ØCNð 
à	ð 
ð  
ð  
ñ 3Ô2ð 
ðDC¨t°KÔ/@ð CÀTð Cð Cð Cð Cð$ Ð IÐ.Ñ.Ô.àSWðIð IØ˜+Ô&ðIØ19¸(À;Ô:OÔ1PðIà	ðIð Ið Iñ /Ô.ðIð0 Ð >Ð2Ñ2Ô2ð '+ðð à˜3 ˜8”nðð �{Ô#ðð 
�$�s”)Ô	ð	ð ð ñ 3Ô2ðð0 Ð >Ð2Ñ2Ô2ð '+ð	:ð 	:à˜3 ˜8”nð	:ð �{Ô#ð	:ð 
�$�s”)Ô	ð		:ð 	:ð 	:ñ 3Ô2ð	:ð &*Ø:>Ø6:ØØØØ!%ð7
ð 7
àð7
ð ˜c”]ð7
ð �d˜J¨Ð6Ô7ð	7
ð
 ˜˜e U¨EÐ1Ô2Ô3ð7
ð ð7
ð ð7
ð ð7
ð ˜#”ð7
ð 
ð7
ð 7
ð 7
ð 7
ðz ;?Ø6:ØØØð
ð 
àð
ð ð
ð �d˜J¨Ð6Ô7ð	
ð
 ˜˜e U¨EÐ1Ô2Ô3ð
ð ð
ð ð
ð ð
ð ð
ð 
ð
ð 
ð 
ð 
ð< ;?Ø6:ØØØð
ð 
àð
ð ð
ð �d˜J¨Ð6Ô7ð	
ð
 ˜˜e U¨EÐ1Ô2Ô3ð
ð ð
ð ð
ð ð
ð ð
ð 
ð
ð 
ð 
ð 
ð4:¨ð :°sð :¸tð :ð :ð :ð :ð &*Ø!%ð	$&ð $&àð$&ð ˜c”]ð$&ð ˜#”ð	$&ð
 
ð$&ð $&ð $&ð $&ð $&ð $&r>   rF   c                   ó,   ‡ — e Zd Zdededdfˆ fd„Zˆ xZS )ÚPdfFileMergerrà   Úkwargsr7   Nc                 ó”   •— t          ddd¦  «         d|vrt          |¦  «        dk     rd|d<    t          ¦   «         j        |i |¤Ž d S )Nr  rF   r³   rJ   r   T)r   rk   Úsuperr=   )r;   rà   r  Ú	__class__s      €r<   r=   zPdfFileMerger.__init__E  sZ   ø€ Ý$ _°kÀ7ÑKÔKÐKà˜6Ð!Ð!¥c¨$¡i¤i°!¢m mØ#ˆF�8ÑØ�‰ŒÔ˜$Ð) &Ð)Ð)Ð)Ð)Ð)r>   )r?   r@   rA   r   r=   Ú__classcell__)r  s   @r<   r  r  D  sR   ø€ € € € € ð*˜cð *¨Sð *°Tð *ð *ð *ð *ð *ð *ð *ð *ð *ð *r>   r  )@rd   Úior   r   r   Úpathlibr   Útypesr   Útypingr   r	   r
   r   r   r   r   r   r   rj   r   Ú_pager   r¡   r   Ú_utilsr   r   r   r   Ú_writerr   Ú	constantsr   r   r˜   r   r   Úgenericr   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   Ú	pageranger+   r,   r-   r.   r/   r0   r1   r“   r3   rF   r  rD   r>   r<   ú<module>r     sñ  ðð8 €€€Ø &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð $Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð Ð Ð Ð Ð Ð Ø *Ð *Ð *Ð *Ð *Ð *Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð 0Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NàSÐ ðð ð ð ð ñ ô ð ði&ð i&ð i&ð i&ð i&ñ i&ô i&ð i&ðX*ð *ð *ð *ð *�Iñ *ô *ð *ð *ð *r>   