§
    §‘Új¥ÿ  ã            
       óú  — d dl Z d dl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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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# ddl!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/m0Z0m1Z1m2Z2 ddl3m4Z4 ddl5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZG ddlHmIZI ddlJmKZKmLZL ddlMmNZN deOdePdeePeQedf         f         fd„ZR e@e.jS        ¦  «         e@e.jT        ¦  «         e@e.jU        ¦  «         e@e.jV        ¦  «        fZW G d„ de¦  «        ZXeQeXeeB         f         ZY eZ¦   «         Z[ G d„ de:¦  «        Z\ G d „ d!e¦  «        Z] G d"„ d#eeef         ¦  «        Z^dS )$é    N)ÚABCÚabstractmethod)ÚIterableÚIteratorÚMappingÚSequence)Údatetime)ÚAnyÚ
NamedTupleÚNoReturnÚOptionalÚUnionÚcasté   )Úget_configuration)Ú
Encryption)Ú
PageObjectÚ_VirtualList)Úindex2label)Ú_TraversalStateÚdeprecate_no_replacementÚdeprecation_with_replacementÚlogger_warningÚparse_iso8824_date)ÚCatalogAttributes)ÚCheckboxRadioButtonAttributesÚCoreÚGoToActionArgumentsÚPagesAttributesÚUserAccessPermissions)ÚDocumentInformationAttributes)ÚFieldDictionaryAttributes)ÚPageAttributes)ÚLimitReachedErrorÚPdfReadErrorÚ
PyPdfError)Ú_decompress_with_limit)ÚArrayObjectÚBooleanObjectÚByteStringObjectÚDestinationÚDictionaryObjectÚEncodedStreamObjectÚFieldÚFitÚFloatObjectÚIndirectObjectÚ
NameObjectÚ
NullObjectÚ	PdfObjectÚTextStringObjectÚ
TreeObjectÚViewerPreferencesÚcreate_string_objectÚis_null_or_none)ÚEmbeddedFile)ÚOutlineTypeÚPagemodeType)ÚXmpInformationÚdÚsizeÚreturn.c                 ó¦   — |dk    rt          d¦  «        ‚d| z   } | dd …         } t          t          t          j        d| ¦  «        d         ¦  «        S )Né   zInvalid size in convert_to_ints           iøÿÿÿz>Qr   )r%   r   ÚintÚstructÚunpack)r>   r?   s     úƒ/Users/tedpeters/Documents/Projects/Claude Projects/TPC Houses/house-viewer/.venv/lib/python3.11/site-packages/pypdf/_doc_common.pyÚconvert_to_intrG   ]   sR   € Øˆa‚x€xÝÐ;Ñ<Ô<Ð<Ø+¨aÑ/€AØ	ˆ"ˆ#ˆ#Œ€AÝ••V”] 4¨Ñ+Ô+¨AÔ.Ñ/Ô/Ð/ó    c                   óX   — e Zd ZU dZeed<   eeef         ed<   e	e
         ed<   eed<   dS )Ú_PageTreeItemzJA page tree node waiting to be flattened by :meth:`PdfDocCommon._flatten`.ÚnodeÚinheritÚindirect_referenceÚdepthN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r,   Ú__annotations__ÚdictÚstrr
   r   r1   rC   © rH   rF   rJ   rJ   n   sP   € € € € € € ØTÐTà
ÐÐÑà�#�s�(Œ^ÐÐÑØ  Ô0Ð0Ð0Ñ0Ø€J€J�J€J€JrH   rJ   c                   ó¶  — e Zd ZdZdd„Zd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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e         fd„¦   «         ZdS )ÚDocumentInformationa…  
    A class representing the basic document metadata provided in a PDF File.
    This class is accessible through
    :py:class:`PdfReader.metadata<pypdf.PdfReader.metadata>`.

    All text properties of the document metadata have
    *two* properties, e.g. author and author_raw. The non-raw property will
    always return a ``TextStringObject``, making it ideal for a case where the
    metadata is being displayed. The raw property can sometimes return a
    ``ByteStringObject``, if pypdf was unable to decode the string's text
    encoding; this requires additional safety in the caller and therefore is not
    as commonly accessed.
    r@   Nc                 ó.   — t          j        | ¦  «         d S ©N)r,   Ú__init__©Úselfs    rF   r[   zDocumentInformation.__init__Ž   s   € ÝÔ! $Ñ'Ô'Ð'Ð'Ð'rH   Úkeyc                 ó¨   — |                       |d ¦  «        }t          |t          ¦  «        r|S t          |t          ¦  «        rt	          |¦  «        S d S rZ   )ÚgetÚ
isinstancer5   r*   rU   )r]   r^   Úretvals      rF   Ú	_get_textzDocumentInformation._get_text‘   sQ   € Ø—’˜#˜tÑ$Ô$ˆÝ�fÕ.Ñ/Ô/ð 	ØˆMÝ�fÕ.Ñ/Ô/ð 	Ý�v‘;”;ÐØˆtrH   c                 óä   — |                       t          j        ¦  «        rP|                      t          j        ¦  «        p0|                       t          j        ¦  «                             ¦   «         ndS )zŸ
        Read-only property accessing the document's title.

        Returns a ``TextStringObject`` or ``None`` if the title is not
        specified.
        N)r`   ÚDIÚTITLErc   Ú
get_objectr\   s    rF   ÚtitlezDocumentInformation.title™   sR   € ð �xŠx�œÑ!Ô!ðˆD�NŠN�2œ8Ñ$Ô$ÐG¨¯ªµ´Ñ(:Ô(:×(EÒ(EÑ(GÔ(Gøàð	
rH   c                 ó@   — |                       t          j        ¦  «        S )z>The "raw" version of title; can return a ``ByteStringObject``.)r`   re   rf   r\   s    rF   Ú	title_rawzDocumentInformation.title_raw§   s   € ð �xŠx�œÑ!Ô!Ð!rH   c                 ó@   — |                       t          j        ¦  «        S )z¡
        Read-only property accessing the document's author.

        Returns a ``TextStringObject`` or ``None`` if the author is not
        specified.
        )rc   re   ÚAUTHORr\   s    rF   ÚauthorzDocumentInformation.author¬   s   € ð �~Š~�bœiÑ(Ô(Ð(rH   c                 ó@   — |                       t          j        ¦  «        S )z?The "raw" version of author; can return a ``ByteStringObject``.)r`   re   rl   r\   s    rF   Ú
author_rawzDocumentInformation.author_raw¶   s   € ð �xŠx�œ	Ñ"Ô"Ð"rH   c                 ó@   — |                       t          j        ¦  «        S )z£
        Read-only property accessing the document's subject.

        Returns a ``TextStringObject`` or ``None`` if the subject is not
        specified.
        )rc   re   ÚSUBJECTr\   s    rF   ÚsubjectzDocumentInformation.subject»   s   € ð �~Š~�bœjÑ)Ô)Ð)rH   c                 ó@   — |                       t          j        ¦  «        S )z@The "raw" version of subject; can return a ``ByteStringObject``.)r`   re   rq   r\   s    rF   Úsubject_rawzDocumentInformation.subject_rawÅ   ó   € ð �xŠx�œ
Ñ#Ô#Ð#rH   c                 ó@   — |                       t          j        ¦  «        S )ac  
        Read-only property accessing the document's creator.

        If the document was converted to PDF from another format, this is the
        name of the application (e.g. OpenOffice) that created the original
        document from which it was converted. Returns a ``TextStringObject`` or
        ``None`` if the creator is not specified.
        )rc   re   ÚCREATORr\   s    rF   ÚcreatorzDocumentInformation.creatorÊ   s   € ð �~Š~�bœjÑ)Ô)Ð)rH   c                 ó@   — |                       t          j        ¦  «        S )z@The "raw" version of creator; can return a ``ByteStringObject``.)r`   re   rw   r\   s    rF   Úcreator_rawzDocumentInformation.creator_rawÖ   ru   rH   c                 ó@   — |                       t          j        ¦  «        S )aI  
        Read-only property accessing the document's producer.

        If the document was converted to PDF from another format, this is the
        name of the application (for example, macOS Quartz) that converted it to
        PDF. Returns a ``TextStringObject`` or ``None`` if the producer is not
        specified.
        )rc   re   ÚPRODUCERr\   s    rF   ÚproducerzDocumentInformation.producerÛ   s   € ð �~Š~�bœkÑ*Ô*Ð*rH   c                 ó@   — |                       t          j        ¦  «        S )zAThe "raw" version of producer; can return a ``ByteStringObject``.)r`   re   r|   r\   s    rF   Úproducer_rawz DocumentInformation.producer_rawç   ó   € ð �xŠx�œÑ$Ô$Ð$rH   c                 óZ   — t          |                      t          j        ¦  «        ¦  «        S )z:Read-only property accessing the document's creation date.)r   rc   re   ÚCREATION_DATEr\   s    rF   Úcreation_datez!DocumentInformation.creation_dateì   s!   € õ " $§.¢.µÔ1AÑ"BÔ"BÑCÔCÐCrH   c                 ó@   — |                       t          j        ¦  «        S )zÉ
        The "raw" version of creation date; can return a ``ByteStringObject``.

        Typically in the format ``D:YYYYMMDDhhmmss[+Z-]hh'mm`` where the suffix
        is the offset from UTC.
        )r`   re   r‚   r\   s    rF   Úcreation_date_rawz%DocumentInformation.creation_date_rawñ   s   € ð �xŠx�Ô(Ñ)Ô)Ð)rH   c                 óZ   — t          |                      t          j        ¦  «        ¦  «        S )z”
        Read-only property accessing the document's modification date.

        The date and time the document was most recently modified.
        )r   rc   re   ÚMOD_DATEr\   s    rF   Úmodification_datez%DocumentInformation.modification_dateû   s    € õ " $§.¢.µ´Ñ"=Ô"=Ñ>Ô>Ð>rH   c                 ó@   — |                       t          j        ¦  «        S )zÖ
        The "raw" version of modification date; can return a
        ``ByteStringObject``.

        Typically, in the format ``D:YYYYMMDDhhmmss[+Z-]hh'mm`` where the suffix
        is the offset from UTC.
        )r`   re   r‡   r\   s    rF   Úmodification_date_rawz)DocumentInformation.modification_date_raw  s   € ð �xŠx�œÑ$Ô$Ð$rH   c                 ó@   — |                       t          j        ¦  «        S )z¢
        Read-only property accessing the document's keywords.

        Returns a ``TextStringObject`` or ``None`` if keywords are not
        specified.
        )rc   re   ÚKEYWORDSr\   s    rF   ÚkeywordszDocumentInformation.keywords  s   € ð �~Š~�bœkÑ*Ô*Ð*rH   c                 ó@   — |                       t          j        ¦  «        S )zAThe "raw" version of keywords; can return a ``ByteStringObject``.)r`   re   rŒ   r\   s    rF   Úkeywords_rawz DocumentInformation.keywords_raw  r€   rH   )r@   N)rO   rP   rQ   rR   r[   rU   r   rc   Úpropertyrh   rj   rm   ro   rr   rt   rx   rz   r}   r   r	   rƒ   r…   rˆ   rŠ   r�   r�   rV   rH   rF   rX   rX      s  € € € € € ðð ð(ð (ð (ð (ð˜Sð  X¨c¤]ð ð ð ð ð ð
�x ”}ð 
ð 
ð 
ñ „Xð
ð ð"˜8 Cœ=ð "ð "ð "ñ „Xð"ð ð)˜ œð )ð )ð )ñ „Xð)ð ð#˜H SœMð #ð #ð #ñ „Xð#ð ð*˜ #œð *ð *ð *ñ „Xð*ð ð$˜X cœ]ð $ð $ð $ñ „Xð$ð ð	*˜ #œð 	*ð 	*ð 	*ñ „Xð	*ð ð$˜X cœ]ð $ð $ð $ñ „Xð$ð ð	+˜( 3œ-ð 	+ð 	+ð 	+ñ „Xð	+ð ð%˜h sœmð %ð %ð %ñ „Xð%ð ðD˜x¨Ô1ð Dð Dð Dñ „XðDð ð* 8¨C¤=ð *ð *ð *ñ „Xð*ð ð? 8¨HÔ#5ð ?ð ?ð ?ñ „Xð?ð ð% x°¤}ð %ð %ð %ñ „Xð%ð ð+˜( 3œ-ð +ð +ð +ñ „Xð+ð ð%˜h sœmð %ð %ð %ñ „Xð%ð %ð %rH   rX   c                   óÖ	  — e Zd ZU dZdZeed<   dZee	e
                  ed<   dZee         ed<   dZeed<   eedefd	„¦   «         ¦   «         Zeedefd
„¦   «         ¦   «         Zedeeef         dee         fd„¦   «         Zedededefd„¦   «         Zeedee         fd„¦   «         ¦   «         Zedee         fd„¦   «         Zeedee         fd„¦   «         ¦   «         Zedee         fd„¦   «         Z defd„Z!dede
fd„Z"dede#eef         fd„Z$ede%ee&f         fd„¦   «         Z'de(fd„Z)ddddœdee         dee%ee&f                  dee*e                  de%ee&f         fd„Z+ddde,fddddœdee         dee%e-e-f                  d ee-         d!e-d"ee*e                  d#ed$ee.         dee%ee-f                  fd%„Z/dd&œd'edee*e                  defd(„Z0e1d)e-defd*„¦   «         Z2d+ee3ef         de%e-e-f         d e-d,e-de*e         d-ed.e.ddfd/„Z4dee3ef         de-d e-de*e         d-ed.e.ddfd0„Z5d e-d+e-d,e-ddfd1„Z6ddd2ede%ee-f         fd3„Z7d+ee8eef         de	e
         fd4„Z9edee&e:e;df         fd5„¦   «         Z<e<j=        d6eee&e
df         ddfd7„¦   «         Z<ede>fd8„¦   «         Z?dddddd9œd:ee         d;ee-         dee*e                  d-ed.ee.         de>fd<„Z@edee(         fd=„¦   «         ZAedeeeBedf         dee         fd>„¦   «         ZCd?e
dee         fd@„ZDdAe&dee         fdB„ZEdCeeeFf         dDee(         de&fdE„ZGd:edee&         fdF„ZHedeIe
         fdG„¦   «         ZJede	e         fdH„¦   «         ZKedee         fdI„¦   «         ZLedeeM         fdJ„¦   «         ZNdddKeddfdL„ZOdMePdeQfdN„ZRd!e	eQ         dOe*e         d.e.deeP         fdP„ZSdMePdKede
fdQ„ZT	 ddd?eee
ef         dReddfdS„ZUdTedUedee         fdV„ZVdWedeWfdX„ZXedeeY         fdY„¦   «         ZZedee         fdZ„¦   «         Z[eedefd[„¦   «         ¦   «         Z\edee%ee-f                  fd\„¦   «         Z]ede^ee	eF         f         fd]„¦   «         Z_e`d^e	ea         de	eF         fd_„¦   «         Zbedecea         fd`„¦   «         Zde	 	 dedaeeee         df         dbeeee         df         de%ee-f         fdc„¦   «         ZfdS )fÚPdfDocCommonzm
    Common functions from PdfWriter and PdfReader objects.

    This root class is strongly abstracted.
    FÚstrictNÚflattened_pagesÚ_encryptionÚ	_readonlyr@   c                 ó   — d S rZ   rV   r\   s    rF   Úroot_objectzPdfDocCommon.root_object.  ó	   € ð 	ˆrH   c                 ó   — d S rZ   rV   r\   s    rF   Ú
pdf_headerzPdfDocCommon.pdf_header3  r™   rH   rM   c                 ó   — d S rZ   rV   ©r]   rM   s     rF   rg   zPdfDocCommon.get_object8  ó	   € ð 	ˆrH   Úobjc                 ó   — d S rZ   rV   )r]   rM   rŸ   s      rF   Ú_replace_objectzPdfDocCommon._replace_object>  s   € àˆrH   c                 ó   — d S rZ   rV   r\   s    rF   Ú_infozPdfDocCommon._infoB  r™   rH   c                 óh   — t          ¦   «         }| j        €dS |                     | j        ¦  «         |S )a  
        Retrieve the PDF file's document information dictionary, if it exists.

        Note that some PDF files use metadata streams instead of document
        information dictionaries, and these metadata streams will not be
        accessed by this function.
        N)rX   r£   Úupdate)r]   rb   s     rF   ÚmetadatazPdfDocCommon.metadataG  s5   € õ %Ñ&Ô&ˆØŒ:ÐØ�4Ø�Š�d”jÑ!Ô!Ð!ØˆrH   c                 ó   — d S rZ   rV   r\   s    rF   Úxmp_metadatazPdfDocCommon.xmp_metadataV  r™   rH   c                 óÌ  — | j                              t          j        d¦  «        }|€dS |                     ¦   «         }t          |t          ¦  «        st          dt          |¬¦  «         dS t          |t          ¦  «        sct          |¦  «        }t          |d¦  «        r#|j        �|                      |j        |¦  «         n!|| j         t          t          j        ¦  «        <   |S )zCReturns the existing ViewerPreferences as an overloaded dictionary.Nz8Viewer preferences are not a dictionary: %(preferences)s)ÚsourceÚpreferencesrM   )r˜   r`   ÚCAÚVIEWER_PREFERENCESrg   ra   r,   r   rO   r7   ÚhasattrrM   r¡   r2   )r]   Úos     rF   Úviewer_preferenceszPdfDocCommon.viewer_preferences[  sæ   € ð Ô× Ò ¥Ô!6¸Ñ=Ô=ˆØˆ9Ø�4Ø�LŠL‰NŒNˆÝ˜!Õ-Ñ.Ô.ð 	ÝØJÝØðñ ô ð ð
 �4Ý˜!Õ.Ñ/Ô/ð 	HÝ! !Ñ$Ô$ˆAÝ�qÐ.Ñ/Ô/ð H°AÔ4HÐ4TØ×$Ò$ QÔ%9¸1Ñ=Ô=Ð=Ð=àFG�Ô ¥­BÔ,AÑ!BÔ!BÑCØˆrH   c                 ó²   — | j         r| j        d         d         S | j        €|                      | j        ¦  «         | j        €J ‚t          | j        ¦  «        S )zÜ
        Calculate the number of pages in this PDF file.

        Returns:
            The number of pages of the parsed PDF file.

        Raises:
            PdfReadError: If restrictions prevent this action.

        ú/Pagesú/Count)Úis_encryptedr˜   r”   Ú_flattenr–   Úlenr\   s    rF   Úget_num_pageszPdfDocCommon.get_num_pagesq  s_   € ð Ôð 	8ØÔ# HÔ-¨hÔ7Ð7ØÔÐ'Ø�MŠM˜$œ.Ñ)Ô)Ð)ØÔ#Ð/Ð/Ð/Ý�4Ô'Ñ(Ô(Ð(rH   Úpage_numberc                 ó€   — | j         €|                      | j        ¦  «         | j         €
J d¦   «         ‚| j         |         S )a?  
        Retrieve a page by number from this PDF file.
        Most of the time ``.pages[page_number]`` is preferred.

        Args:
            page_number: The page number to retrieve
                (pages begin at zero)

        Returns:
            A :class:`PageObject<pypdf._page.PageObject>` instance.

        NÚmypy)r”   rµ   r–   )r]   r¸   s     rF   Úget_pagezPdfDocCommon.get_page†  sF   € ð ÔÐ'Ø�MŠM˜$œ.Ñ)Ô)Ð)ØÔ#Ð/Ð/°Ñ/Ô/Ð/ØÔ# KÔ0Ð0rH   c                 ó@  ‡‡‡‡— t          t          | j        d         ¦  «        Št          ¦   «         Šdt          dt          dt
          t          t                   t          f         fˆˆˆˆfd„Š ‰‰d¦  «        \  }}t          |t          ¦  «        s
J d¦   «         ‚||fS )z¯
        Retrieve the node and position within the /Kids containing the page.
        If page_number is greater than the number of pages, it returns the top node, -1.
        r²   Ú_nodeÚmir@   c                 ó^  •— t          | ¦  «        }|‰v rt          d¦  «        ‚‰                     |¦  «         t          t          |                      dd¦  «        ¦  «        }|                      d¦  «        dk    r‰|k    r| dfS d |dz   fS ‰|z
  |k    r| ‰
k    r‰
dfS d ||z   fS t          t          t          | d         ¦  «        ¦  «        D ]Q\  }}t          t          | 	                    ¦   «         ¦  «        } ‰	||¦  «        \  }}|�|dk     r| |fc S ||fc S |}ŒRt          d	¦  «        ‚)
Nz8Detected cycle in /Pages hierarchy when retrieving page.r³   r   z/Typeú/Pageéÿÿÿÿú/Kidsr   z"Unexpectedly cannot find the node.)Úidr$   Úaddr   rC   r`   Ú	enumerater(   r,   rg   r&   )r½   r¾   Ú_node_idÚmaÚ_idxÚkidÚnÚir¸   Úrecursive_callÚtopÚvisiteds           €€€€rF   rÌ   z6PdfDocCommon._get_page_in_node.<locals>.recursive_call£  s\  ø€ õ ˜%‘y”yˆHØ˜7Ð"Ð"Ý'Ð(bÑcÔcÐcØ�KŠK˜Ñ!Ô!Ð!Ý•c˜5Ÿ9š9 X¨qÑ1Ô1Ñ2Ô2ˆBØ�yŠy˜Ñ!Ô! WÒ,Ð,Ø "Ò$Ð$Ø  "˜9Ð$Ø˜R !™V�|Ð#Ø˜bÑ  RÒ'Ð'Ø˜C’<�<Ø ˜7�NØ˜R "™W�}Ð$Ý&¥t­K¸¸w¼Ñ'HÔ'HÑIÔIð ð ‘	��cÝÕ+¨S¯^ª^Ñ-=Ô-=Ñ>Ô>�Ø%�~ c¨2Ñ.Ô.‘��1Ø�=Ø˜1’u�uØ$ d˜{Ð*Ð*Ð*à˜a˜4�K�K�KØ��ÝÐAÑBÔBÐBrH   r   rº   )	r   r,   r˜   ÚsetrC   Útupler   r4   ra   )r]   r¸   rK   ÚidxrÌ   rÍ   rÎ   s    `  @@@rF   Ú_get_page_in_nodezPdfDocCommon._get_page_in_node˜  sÉ   øøøø€ õ Õ# TÔ%5°hÔ%?Ñ@Ô@ˆÝ™EœEˆð	CÝ#ð	CÝ),ð	Cå•8�IÔ&­Ð+Ô,ð	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð6 #�N 3¨Ñ*Ô*‰	ˆˆcÝ˜$Õ 0Ñ1Ô1Ð9Ð9°6Ñ9Ô9Ð1Ø�SˆyÐrH   c                 ó*   — |                       ¦   «         S )z8A read-only dictionary which maps names to destinations.)Ú_get_named_destinationsr\   s    rF   Únamed_destinationszPdfDocCommon.named_destinationsÂ  s   € ð ×+Ò+Ñ-Ô-Ð-rH   c                 óœ  — t          ¦   «         }t          j        | j        v �rzt	          | j        t          j                 t
          ¦  «        �rOt          t
          | j        t          j                 ¦  «        }t          j        |v r«t	          |t          j                 t
          ¦  «        r†t          t
          |t          j                 ¦  «        }t          j        |v r't          t           |t          j                 ¦  «        }�nGt          ¦   «         }||t          t          j        ¦  «        <   �nt          | d¦  «        r[t          ¦   «         }|  
                    |¦  «        }||t          t          j        ¦  «        <   ||t          t          j        ¦  «        <   n¯t          | d¦  «        rŸt          ¦   «         }|  
                    |¦  «        }|| j        t          t          j        ¦  «        <   t          ¦   «         }|  
                    |¦  «        }||t          t          j        ¦  «        <   ||t          t          j        ¦  «        <   |S )NÚ_add_object)r(   r¬   ÚNAMESr˜   ra   r,   r   ÚDESTSr2   r®   r×   )r]   Ú
named_destÚnamesÚdestsÚ	dests_refÚ	names_refs         rF   Úget_named_dest_rootz PdfDocCommon.get_named_dest_rootÇ  s¿  € Ý ‘]”]ˆ
ÝŒ8�tÔ'Ð'Ñ'­JØÔ�RœXÔ&Õ(8ñ-
ô -
Ñ'õ Õ)¨4Ô+;½B¼HÔ+EÑFÔFˆEÝŒx˜5Ð Ð ¥Z°µb´h´ÕAQÑ%RÔ%RÐ åÕ-¨uµR´X¬Ñ?Ô?�Ý”8˜uÐ$Ð$å!%¥k°5½¼´?Ñ!CÔ!C�J‘Jå!,¡¤�JØ2<�E�*¥R¤XÑ.Ô.Ñ/Ñ/Ý˜˜}Ñ-Ô-ð 9Ý(Ñ*Ô*�Ø ×,Ò,¨UÑ3Ô3�	Ø.7�•j¥¤Ñ*Ô*Ñ+Ø.8�•j¥¤Ñ*Ô*Ñ+øå�T˜=Ñ)Ô)ð 	5Ý$Ñ&Ô&ˆEØ×(Ò(¨Ñ/Ô/ˆIØ5>ˆDÔ�Z­¬Ñ1Ô1Ñ2Ý$Ñ&Ô&ˆEØ×(Ò(¨Ñ/Ô/ˆIØ*3ˆE•*�RœXÑ&Ô&Ñ'Ø*4ˆE•*�RœXÑ&Ô&Ñ'àÐrH   ©Útreerb   rÎ   rá   rb   rÎ   c                ó   — |€t          ¦   «         }|€ëi }| j        }d}t          j        |v r%|t          j                                      ¦   «         }nyt          j        |v rk|t          j                                      ¦   «         }t          |t          ¦  «        r2t          j        |v r$|t          j                                      ¦   «         }|�.t          |t          ¦  «        st          dt          |¬¦  «         |S |�|}t          |¦  «        r|S |€
J d¦   «         ‚t          |¦  «        }||v rt          dt          ¬¦  «         |S |                     |¦  «         t          j        |v rƒ|t          j                                      ¦   «         }t          |t          ¦  «        st          dt          |¬¦  «         |S |D ],}	|                      |	                     ¦   «         ||¬	¦  «         Œ-�nât          j        |v �rS|t          j                                      ¦   «         }t          |t          ¦  «        st          d
t          |¬¦  «         |S d}
|
t#          |¦  «        k     rë||
                              ¦   «         }|
dz  }
t          |t$          t&          f¦  «        sŒO	 ||
                              ¦   «         }n# t(          $ r Y n‡w xY w|
dz  }
t          |t          ¦  «        rd|v r	|d         }nŒ£|                      ||¦  «        }|�0||t-          t&          |d         ¦  «        <   ||t'          |¦  «        <   |
t#          |¦  «        k     °ën€|                     ¦   «         D ]k\  }}|                     ¦   «         }t          |t          ¦  «        r d|v r|d                              ¦   «         }nŒN|                      ||¦  «        }|�|||<   Œl|S )aK  
        Retrieve the named destinations present in the document.

        Args:
            tree: The current tree.
            retval: The previously retrieved destinations for nested calls.
            visited: Already known/visited objects.

        Returns:
            A dictionary which maps names to destinations.

        Nz.Destination tree is not a dictionary: %(tree)s)rª   rá   rº   z#Detected cycle in destination tree.©rª   z0Destination tree kids are not an array: %(kids)s)rª   Úkidsrà   z2Destination tree names are not an array: %(names)s)rª   rÛ   r   r   ú/Dú/Title)rÏ   r˜   r¬   rÙ   rg   rØ   ra   r,   r   rO   r9   rÃ   rÄ   r   ÚKIDSr(   rÔ   r¶   ÚbytesrU   Ú
IndexErrorÚ_build_destinationr   Úitems)r]   rá   rb   rÎ   ÚcatalogÚ	candidaterÛ   Útree_idrä   rÉ   rË   r^   ÚvalueÚdestÚk__Úv__Úvals                    rF   rÔ   z$PdfDocCommon._get_named_destinationsè  sù  € ð& ˆ?Ý‘e”eˆGØˆ>ØˆFØÔ&ˆGð .2ˆIÝŒx˜7Ð"Ð"Ø#¥B¤HÔ-×8Ò8Ñ:Ô:�	�	Ý”˜WÐ$Ð$Ø¥¤Ô)×4Ò4Ñ6Ô6�Ý˜eÕ%5Ñ6Ô6ð =½2¼8ÀuÐ;LÐ;LØ %¥b¤h¤× :Ò :Ñ <Ô <�IØÐ$­Z¸	ÕCSÑ-TÔ-TÐ$ÝØDÝ#Ø"ðñ ô ð ð
 �ØÐ$Ø �å˜4Ñ Ô ð 	ØˆMØÐÐ ÑÔÐå�T‘(”(ˆØ�gÐÐÝÐ@ÍÐRÑRÔRÐRØˆMØ�Š�GÑÔÐåÔ 4Ð'Ð'Ø�Ô,Ô-×8Ò8Ñ:Ô:ˆDÝ˜d¥KÑ0Ô0ð ÝØFÝ#Øðñ ô ð ð
 �àð dð d�Ø×,Ò,°#·.².Ñ2BÔ2BÈ6Ð[bÐ,ÑcÔcÐcÐcñdõ ŒX˜ÐÑØ�œ”N×-Ò-Ñ/Ô/ˆEÝ˜e¥[Ñ1Ô1ð ÝØHÝ#Øðñ ô ð ð
 �ØˆAØ•c˜%‘j”j’.�.Ø˜A”h×)Ò)Ñ+Ô+�Ø�Q‘�Ý! #­­s |Ñ4Ô4ð ØðØ! !œH×/Ò/Ñ1Ô1�E�EøÝ!ð ð ð Ø�Eðøøøà�Q‘�Ý˜eÕ%5Ñ6Ô6ð !Ø˜u�}�}Ø % d¤˜˜à Ø×.Ò.¨s°EÑ:Ô:�ØÐ#Ø8<�F�4¥ T¨(¤^Ñ4Ô4Ñ5à'+�F�3˜s™8œ8Ñ$ð' •c˜%‘j”j’.�.øð* !ŸJšJ™LœLð 	'ð 	'‘��SØ—n’nÑ&Ô&�Ý˜cÕ#3Ñ4Ô4ð !Ø˜s�{�{Ø! $œi×2Ò2Ñ4Ô4˜˜à Ø×.Ò.¨s°CÑ8Ô8�ØÐ#Ø"&�F˜3‘KøØˆs   ÊJ: Ê:
KËKr   )Ú_visitedÚ_depthÚ_traversal_stateÚfileobjÚstackrô   rõ   rö   c          
      ó¨  ‡‡‡— |t           urZt          dd¬¦  «         |�G|€t          ¦   «         }|                     t          t	          t
          |pg ¦  «        ¦  «        ¦  «         t          ¦   «         Š|‰j        k    rt          d¦  «        ‚‰€t          ¦   «         Šdt          ddfˆˆfd„}t          j        ¦   «         }	|	                     t          j        ¦   «         ¦  «         |€„i }| j        }
t          ¦   «         }t          j        |
v r]|
t          j                 }|€dn|                     ¦   «         }|�.t%          |t&          ¦  «        st)          d	t*          |¬
¦  «         dS |ŠndS ‰€|S |€J ‚d‰v r–‰d                              ¦   «         }t%          |t,          ¦  «        st)          dt*          |¬¦  «         |S  |t/          |¦  «        ¦  «         |D ]2}|                     ¦   «         }|                      ||||	||‰¬¦  «         Œ3nBt3          ˆfd„|	D ¦   «         ¦  «        r' |d¦  «         |                      ‰|||	||‰¬¦  «         |S )a‹  
        Extract field data if this PDF contains interactive form fields.

        The *tree*, *retval*, *visited*, *depth* parameters are for internal use.

        Args:
            tree: Current object to parse.
            retval: In-progress list of fields.
            fileobj: A file object (usually a text file) to write
                a report to on all interactive form fields found.
            stack: The stack to use. Deprecated.
            _visited: Set of already visited IDs. Callers should usually omit this.
            _depth: The current field depth.
            _traversal_state: The current traversal state.

        Returns:
            A dictionary where each key is a field name, and each
            value is a :class:`Field<pypdf.generic.Field>` object. By
            default, the mapping name is used for keys.
            ``None`` if form data could not be located.

        rø   z7.0.0)ÚnameÚ
removed_inNz)Reached maximum allowed form field depth.Ú
_incrementr@   c                 óf   •— ‰xj         | z  c_         ‰j         ‰j        k    rt          d¦  «        ‚d S )Nz*Exceeded maximum number of fields allowed.)Úentry_countÚform_fields_maximum_entriesr$   )rü   rö   Úconfigurations    €€rF   Ú_check_field_limitz3PdfDocCommon.get_fields.<locals>._check_field_limit†  s@   ø€ ØÐ(Ô(¨JÑ6Ð(Ô(ØÔ+¨mÔ.WÒWÐWÝ'Ð(TÑUÔUÐUð XÐWrH   z+AcroForm is not a dictionary: %(acro_form)s)rª   Ú	acro_formz/Fieldsz,AcroForm /Fields is not an array: %(fields)s©rª   Úfields)Úfieldrb   r÷   Úfield_attributesrÎ   rN   Útraversal_statec              3   ó    •K  — | ]}|‰v V — Œ	d S rZ   rV   )Ú.0Úattrrá   s     €rF   ú	<genexpr>z*PdfDocCommon.get_fields.<locals>.<genexpr>´  s'   øè è € Ð;Ð; $�˜�Ð;Ð;Ð;Ð;Ð;Ð;rH   r   )Ú_UNSETr   rÏ   r¥   ÚmaprÃ   r   Úform_fields_maximum_depthr$   r   rC   ÚFAÚattributes_dictr   r˜   r¬   Ú	ACRO_FORMrg   ra   r,   r   rO   r(   r¶   Ú_build_fieldÚany)r]   rá   rb   r÷   rø   rô   rõ   rö   r  r  rì   Úentryr  r  Úfr  r   s    `     `        @rF   Ú
get_fieldszPdfDocCommon.get_fieldsX  sí  øøø€ ðB �ÐÐÝ$¨'¸gÐFÑFÔFÐFØÐ!ØÐ#Ý"™uœu�HØ—’¥¥C­¨E¨K°RÑ$8Ô$8Ñ 9Ô 9Ñ:Ô:Ð:å)Ñ+Ô+ˆØ�]Ô<Ò<Ð<Ý#Ð$OÑPÔPÐPØÐ#Ý.Ñ0Ô0Ðð	V­3ð 	V°4ð 	Vð 	Vð 	Vð 	Vð 	Vð 	Vð 	Võ
 Ô-Ñ/Ô/ÐØ×ÒÕ =Ô MÑ OÔ OÑPÔPÐPØˆ>ØˆFØÔ&ˆGÝ‘u”uˆHåŒ|˜wÐ&Ð&Ø¥¤Ô-�Ø$) M˜D˜D°u×7GÒ7GÑ7IÔ7I�	ØÐ(µØÕ/ñ2ô 2Ð(õ #ØEÝ'Ø"+ðñ ô ð ð
  ˜4Ø ��à�tØˆ<ØˆMØÐ#Ð#Ð#Ø˜ÐÐØ˜)”_×/Ò/Ñ1Ô1ˆFÝ˜f¥kÑ2Ô2ð ÝØBÝ#Ø!ðñ ô ð ð
 �ØÐ�s 6™{œ{Ñ+Ô+Ð+Øð ð �ØŸš™œ�Ø×!Ò!Ø¨¸ÐRbØ$¨FÐDTð "ñ ô ð ð ðõ Ð;Ð;Ð;Ð;Ð*:Ð;Ñ;Ô;Ñ;Ô;ð 	àÐ˜qÑ!Ô!Ð!Ø×ÒØ 6°7ÐM]Ø ¨Ð@Pð ñ ô ð ð ˆrH   )rÎ   Úparentc                óâ  — |€t          ¦   «         }t          |¦  «        }||v rt          d¦  «        ‚|                     |¦  «         d|v rt	          t
          |d         ¦  «        S d|v r]|                      t	          t          |d         ¦  «        |¬¦  «        dz   t	          t
          |                     dd¦  «        ¦  «        z   S t	          t
          |                     dd¦  «        ¦  «        S )NzIDetected cycle in /Parent hierarchy when retrieving qualified field name.ú/TMz/Parent)r  rÎ   ú.ú/TÚ )	rÏ   rÃ   r$   rÄ   r   rU   Ú_get_qualified_field_namer,   r`   )r]   r  rÎ   Ú	parent_ids       rF   r  z&PdfDocCommon._get_qualified_field_name½  sð   € ð ˆ?Ý‘e”eˆGÝ�v‘J”Jˆ	Ø˜ÐÐÝ#Ð$oÑpÔpÐpØ�Š�IÑÔÐà�Fˆ?ˆ?Ý�˜V Eœ]Ñ+Ô+Ð+Ø˜ÐÐà×.Ò.ÝÕ 0°&¸Ô2CÑDÔDØ#ð /ñ ô ð ñ	õ
 •s˜FŸJšJ t¨RÑ0Ô0Ñ1Ô1ñ2ðõ •C˜Ÿš D¨"Ñ-Ô-Ñ.Ô.Ð.rH   Ú
appearancec                 ó   — |                       ¦   «         } t          | t          ¦  «        st          d| ›�¦  «        ‚|                      d¦  «        }|�|                      ¦   «         }t          |t          ¦  «        st          d|›�¦  «        ‚|S )z?Return the /N normal-appearance sub-dictionary of an /AP entry.z$Expected appearance dictionary, got z/NNz'Expected /N appearance dictionary, got )rg   ra   r,   r%   r`   )r  Únormals     rF   Ú_normal_appearancezPdfDocCommon._normal_appearance×  s˜   € ð  ×*Ò*Ñ,Ô,ˆ
Ý˜*Õ&6Ñ7Ô7ð 	VÝÐTÀjÐTÐTÑUÔUÐUØ—’ Ñ%Ô%ˆØÐØ×&Ò&Ñ(Ô(ˆFÝ˜&Õ"2Ñ3Ô3ð 	UÝÐSÈÐSÐSÑTÔTÐTØˆrH   r  r  rN   r  c                óò  ‡— t          ‰t          ¦  «        st          dt          ‰¬¦  «         d S t	          ˆfd„dD ¦   «         ¦  «        rd S |                      ‰¬¦  «        }|r,|                      |‰|¦  «         |                     d¦  «         t          ‰¦  «        ||<   ||         j	         
                    ¦   «         }	|	                     t          j        d¦  «        dk    ra|	                     t          t          j        ¦  «        ¦  «        r5|	t          t          j        ¦  «                 ||         t          d	¦  «        <   |	                     t          j        d¦  «        d
k    r°d|	v r¬|                      |	d         ¦  «        }
t#          t%          |
                     ¦   «         ¦  «        ¦  «        ||         t          d	¦  «        <   d||         d	         vr;||         t          d	¦  «                                      t          d¦  «        ¦  «         �nÁ|	                     t          j        d¦  «        d
k    �rœ|	                     t          j        d¦  «        t          j        j        z  dk    �reg }t#          |¦  «        ||         t          d	¦  «        <   |	                     t          j        i ¦  «        D ]©}| 
                    ¦   «         }d|vrt3          d|›�¦  «        ‚|                      |d         ¦  «        }
t%          |
                     ¦   «         ¦  «        D ]}||vr|                     |¦  «         Œt#          |¦  «        ||         t          d	¦  «        <   Œª|	                     t          j        d¦  «        t          j        j        z  dk    r>d||         d	         v r.||         d	         ||         d	                              d¦  «        = |                      ‰|||||¬¦  «         d S )Nz)Form field is not a dictionary: %(field)s)rª   r  c              3   ó    •K  — | ]}|‰vV — Œ	d S rZ   rV   )r	  r
  r  s     €rF   r  z,PdfDocCommon._build_field.<locals>.<genexpr>ö  s(   øè è € Ð;Ð; Tˆt˜5Ð Ð;Ð;Ð;Ð;Ð;Ð;rH   )r  r  ©r  ú
r  ú/Chz	/_States_ú/Btnz/APz/Offr   zButton field kid missing /AP: )rá   rb   r÷   rÎ   rN   r  )ra   r,   r   rO   Úallr  Ú_write_fieldÚwriter.   rM   rg   r`   r  ÚFTr2   ÚOptr"  r(   ÚlistÚkeysÚappendÚFfÚFfBitsÚRadioÚKidsr%   ÚNoToggleToOffÚindexÚ_check_kids)r]   r  rb   r÷   r  rÎ   rN   r  r^   rŸ   r!  ÚstatesÚkÚss    `            rF   r  zPdfDocCommon._build_fieldä  s—  ø€ õ ˜%Õ!1Ñ2Ô2ð 	ÝØ;ÝØðñ ô ð ð
 ˆFÝÐ;Ð;Ð;Ð;¨]Ð;Ñ;Ô;Ñ;Ô;ð 	ØˆFØ×,Ò,°EÐ,Ñ:Ô:ˆØð 	 Ø×Ò˜g uÐ.>Ñ?Ô?Ð?Ø�MŠM˜$ÑÔÐÝ˜E‘l”lˆˆs‰Ø�SŒkÔ,×7Ò7Ñ9Ô9ˆØ�7Š7•2”5˜"ÑÔ Ò&Ð&¨3¯7ª7µ:½b¼fÑ3EÔ3EÑ+FÔ+FÐ&Ø36µzÅ"Ä&Ñ7IÔ7IÔ3JˆF�3ŒK�
 ;Ñ/Ô/Ñ0Ø�7Š7•2”5˜"ÑÔ Ò'Ð'¨E°S¨L¨Là×,Ò,¨S°¬ZÑ8Ô8ˆFÝ3>½tÀFÇKÂKÁMÄMÑ?RÔ?RÑ3SÔ3SˆF�3ŒK�
 ;Ñ/Ô/Ñ0Ø˜V Cœ[¨Ô5Ð5Ð5Ø�s”�J {Ñ3Ô3Ô4×;Ò;½JÀvÑ<NÔ<NÑOÔOÐOùØ�WŠW•R”U˜BÑÔ 6Ò)Ñ)¨c¯gªgµb´e¸QÑ.?Ô.?Å"Ä)Ä/Ñ.QÐUVÒ.VÑ.VØ "ˆFÝ3>¸vÑ3FÔ3FˆF�3ŒK�
 ;Ñ/Ô/Ñ0Ø—W’W�RœW bÑ)Ô)ð Kð K�Ø—L’L‘N”N�Ø �>�>Ý&Ð'MÈÐ'MÐ'MÑNÔNÐNØ×0Ò0°°5´Ñ:Ô:�Ý˜fŸkšk™mœmÑ,Ô,ð )ð )�AØ ��ØŸš aÑ(Ô(Ð(øÝ7BÀ6Ñ7JÔ7J��s”�J {Ñ3Ô3Ñ4Ð4à—’�œ˜qÑ!Ô!¥B¤IÔ$;Ñ;¸qÒ@Ð@Ø˜f Sœk¨+Ô6Ð6Ð6à˜3”K Ô,¨V°C¬[¸Ô-E×-KÒ-KÈFÑ-SÔ-SÐTà×ÒØ˜v¨wÀÈuÐfuð 	ñ 	
ô 	
ð 	
ð 	
ð 	
rH   c          	      ó^  — t          |¦  «        }||v r-t          dt          |                      |¬¦  «        ¬¦  «         d S |                     |¦  «         t
          j        |v rG|t
          j                 D ]6}|                     ¦   «         }|                      |||||dz   |¬¦  «         Œ5d S d S )Nz%(field_name)s already parsedr%  )rª   Ú
field_namer   )rá   rb   r÷   rô   rõ   rö   )	rÃ   r   rO   r  rÄ   r   rç   rg   r  )	r]   rá   rb   r÷   rÎ   rN   r  rî   rÉ   s	            rF   r7  zPdfDocCommon._check_kids  sÜ   € õ �T‘(”(ˆØ�gÐÐÝØ/ÝØ×9Ò9ÀÐ9ÑFÔFðñ ô ð ð
 ˆFØ�Š�GÑÔÐÝÔ 4Ð'Ð'à�OÔ0Ô1ð ð �Ø—n’nÑ&Ô&�Ø—’Ø V°WØ$¨U°Q©YÈð  ñ ô ð ð ð	 (Ð'ðð rH   c                 ó€  — t          j        ¦   «         }|t          j        ¦   «         z   }|D �]}|t           j        t           j        fv rŒ||         }	 |t           j        k    r9dddddœ}||         |v r'|                     |› d|||                  › d�¦  «         n�|t           j        k    r^	 ||         t           j                 }n(# t          $ r ||         t           j
                 }Y nw xY w|                     |› d|› d�¦  «         n!|                     |› d||         › d�¦  «         �Œ# t          $ r Y �Œw xY wd S )NÚButtonÚTextÚChoiceÚ	Signature)r(  ú/Txr'  z/Sigú: r&  )r  Ú
attributesr   r4  ÚAAr,  r+  ÚParentÚTMÚKeyErrorÚT)	r]   r÷   r  r  Úfield_attributes_tupler
  Ú	attr_nameÚtypesrú   s	            rF   r*  zPdfDocCommon._write_field8  s”  € Ý!#¤¡¤Ðà"Õ%BÔ%MÑ%OÔ%OÑOð 	ð +ð 	ñ 	ˆDØÝ”Ý”ðð ð ð Ø(¨Ô.ˆIðØ�2œ5’=�=ð !)Ø%Ø'Ø +ð	ð �Eð ˜T”{ eÐ+Ð+ØŸš¨Ð&LÐ&L°e¸EÀ$¼KÔ6HÐ&LÐ&LÐ&LÑMÔMÐMøØ�RœYÒ&Ð&ð1Ø$ Tœ{­2¬5Ô1˜˜øÝ#ð 1ð 1ð 1Ø$ Tœ{­2¬4Ô0˜˜˜ð1øøøà—M’M YÐ":Ð":°$Ð":Ð":Ð":Ñ;Ô;Ð;Ð;à—M’M YÐ"AÐ"A°%¸´+Ð"AÐ"AÐ"AÑBÔBÐBùøÝð ð ð à‘ðøøøð7	ð 	s8   ÁAD-Â-CÃD-Ã"C+Ã(D-Ã*C+Ã+A D-Ä-
D;Ä:D;Úfull_qualified_namec                 ó¾  — dt           dt          t          t          f         dt           fd„}|                      ¦   «         }|€i S i }|                     ¦   «         D ]‚\  }}|                     d¦  «        dk    rd|r|                     d¦  «        ||<   Œ9|                     d¦  «        | |t          t           |                     d	|¦  «        ¦  «        |¦  «        <   Œƒ|S )
a§  
        Retrieve form fields from the document with textual data.

        Args:
            full_qualified_name: to get full name

        Returns:
            A dictionary. The key is the name of the form field,
            the value is the content of the field.

            If the document contains multiple form fields with the same name, the
            second and following will get the suffix .2, .3, ...

        r9  r  r@   c                 ór   ‡ — ‰ |vr‰ S ‰ dz   t          t          ˆ fd„|D ¦   «         ¦  «        dz   ¦  «        z   S )Nr  c              3   óL   •K  — | ]}|                      ‰d z   ¦  «        ¯dV — ŒdS )r  r   N)Ú
startswith)r	  Úkkr9  s     €rF   r  zIPdfDocCommon.get_form_text_fields.<locals>.indexed_key.<locals>.<genexpr>s  s8   øè è € ÐGÐG °·²¸aÀ#¹gÑ0FÔ0FÐG˜!ÐGÐGÐGÐGÐGÐGrH   é   )rU   Úsum)r9  r  s   ` rF   Úindexed_keyz6PdfDocCommon.get_form_text_fields.<locals>.indexed_keym  sT   ø€ Ø˜ˆˆØ�àØñå•cÐGÐGÐGÐG fÐGÑGÔGÑGÔGÈ!ÑKÑLÔLñMðrH   Nú/FTrB  z/Vr  )rU   rT   r
   r  rë   r`   r   )r]   rM  rU  Úform_fieldsÚffr  rï   s          rF   Úget_form_text_fieldsz!PdfDocCommon.get_form_text_fields]  sé   € ð 	�3ð 	­­Sµ#¨X¬ð 	½3ð 	ð 	ð 	ð 	ð —o’oÑ'Ô'ˆØÐØˆIØˆØ'×-Ò-Ñ/Ô/ð 	]ð 	]‰LˆE�5Ø�yŠy˜ÑÔ 5Ò(Ð(Ø&ð ]Ø %§	¢	¨$¡¤�B�u‘I�IàMRÏYÊYÐW[É_Ì_�B�{�{¥4­¨U¯YªY°t¸UÑ-CÔ-CÑ#DÔ#DÀbÑIÔIÑJøØˆ	rH   c                 óÖ  ‡ ‡‡— 	 t          t          ‰j                             ¦   «         ¦  «        Šn"# t          $ r}t          d¦  «        |‚d}~ww xY wt          ‰                     dd¬¦  «        ¦  «        rt          d¦  «        ‚g }‰                     dd¦  «        dk    r4d	‰v r‰d	                              ¦   «         g}nšˆfd
„‰ j	        D ¦   «         }n†‰                     dd¦  «        }|D ]mŠ‰                     ¦   «         Š‰                     dd¦  «        dk    r=d‰vr9d	‰v r|‰d	                              ¦   «         gz  }ŒW|ˆfd„‰ j	        D ¦   «         z  }Œnˆ fd„|D ¦   «         S )a†  
        Provides list of pages where the field is called.

        Args:
            field: Field Object, PdfObject or IndirectObject referencing a Field

        Returns:
            List of pages:
                - Empty list:
                    The field has no widgets attached
                    (either hidden field or ancestor field).
                - Single page list:
                    Page where the widget is present
                    (most common).
                - Multi-page list:
                    Field with multiple kids widgets
                    (example: radio buttons, field repeated on multiple pages).

        zField type is invalidNrV  )r^   ÚdefaultzField is not validz/Subtyper  z/Widgetz/Pc                 óN   •— g | ]!}‰j         |                     d d¦  «        v ¯|‘Œ"S ©z/Annotsr  ©rM   r`   )r	  Úpr  s     €rF   ú
<listcomp>z8PdfDocCommon.get_pages_showing_field.<locals>.<listcomp>¥  s?   ø€ ð ð ð àØÔ/°1·5²5¸ÀBÑ3GÔ3GÐGÐGð àGÐGÐGrH   rÂ   rV   r  c                 óN   •— g | ]!}‰j         |                     d d¦  «        v ¯|‘Œ"S r]  r^  )r	  r_  r9  s     €rF   r`  z8PdfDocCommon.get_pages_showing_field.<locals>.<listcomp>³  s?   ø€ ð  ð  ð  à !Ø Ô3°q·u²u¸YÈÑ7KÔ7KÐKÐKð àKÐKÐKrH   c                 óˆ   •— g | ]>}t          |t          ¦  «        r|n$‰j        ‰                     |j        ¦  «                 ‘Œ?S rV   )ra   r   ÚpagesÚ_get_page_number_by_indirectrM   )r	  Úxr]   s     €rF   r`  z8PdfDocCommon.get_pages_showing_field.<locals>.<listcomp>¸  sZ   ø€ ð 
ð 
ð 
ð õ ˜!�ZÑ(Ô(ðWˆAˆAà”*˜T×>Ò>¸qÔ?SÑTÔTÔUð
ð 
ð 
rH   )
r   r,   rM   rg   Ú	ExceptionÚ
ValueErrorr9   Úget_inheritedr`   rc  )r]   r  ÚexcÚreträ   r9  s   ``   @rF   Úget_pages_showing_fieldz$PdfDocCommon.get_pages_showing_fieldƒ  sÔ  øøø€ ð,	?åÕ)¨5Ô+C×+NÒ+NÑ+PÔ+PÑQÔQˆEˆEøÝð 	?ð 	?ð 	?ÝÐ4Ñ5Ô5¸3Ð>øøøøð	?øøøå˜5×.Ò.°5À$Ð.ÑGÔGÑHÔHð 	3ÝÐ1Ñ2Ô2Ð2ØˆØ�9Š9�Z Ñ$Ô$¨	Ò1Ð1Ø�uˆ}ˆ}Ø˜T”{×-Ò-Ñ/Ô/Ð0��ðð ð ð à!œZðñ ô ��ð —9’9˜W bÑ)Ô)ˆDØð ð �Ø—L’L‘N”N�Ø—E’E˜* bÑ)Ô)¨YÒ6Ð6¸TÈ¸]¸]à˜q�y�yØ  $¤× 2Ò 2Ñ 4Ô 4Ð5Ñ5˜˜àð  ð  ð  ð  à%)¤Zð ñ  ô  ñ ˜øð

ð 
ð 
ð 
ð ð	
ñ 
ô 
ð 	
s   …,2 ²
A¼AÁAc                 ó²  — d| j         vrdS | j         d         }t          |t          ¦  «        r|                     ¦   «         }t          |t          ¦  «        rt          |¦  «        S t          |t          ¦  «        r\	 |^}}}t          |t          |¦  «        ¦  «        }t          d||¦  «        S # t          $ r}t          d|› d|› �¦  «        |‚d}~ww xY wdS )zý
        Property to access the opening destination (``/OpenAction`` entry in
        the PDF catalog). It returns ``None`` if the entry does not exist
        or is not set.

        Raises:
            Exception: If a destination is invalid.

        z/OpenActionNÚ
OpenActionzInvalid Destination rC  )r˜   ra   rè   ÚdecoderU   r8   r(   r/   rÐ   r+   rf  )r]   ÚoaÚpageÚtypÚarrayÚfitri  s          rF   Úopen_destinationzPdfDocCommon.open_destination¿  sù   € ð  Ô 0Ð0Ð0Ø�4ØÔ" =Ô1ˆÝ�b�%Ñ Ô ð 	Ø—’‘”ˆBÝ�b�#ÑÔð 	,Ý'¨Ñ+Ô+Ð+Ý�b�+Ñ&Ô&ð 	ðMØ$&Ð!��c˜EÝ˜#�u U™|œ|Ñ,Ô,�Ý" <°°sÑ;Ô;Ð;øÝð Mð Mð MÝÐ B°rÐ BÐ B¸SÐ BÐ BÑCÔCÈÐLøøøøðMøøøð �4s   Á<2B/ Â/
CÂ9CÃCrð   c                 ó    — t          d¦  «        ‚)NzNo setter for open_destination)ÚNotImplementedError)r]   rð   s     rF   rt  zPdfDocCommon.open_destinationÝ  s   € å!Ð"BÑCÔCÐCrH   c                 ó*   — |                       ¦   «         S )z©
        Read-only property for the outline present in the document
        (i.e., a collection of 'outline items' which are also known as
        'bookmarks').
        )Ú_get_outliner\   s    rF   ÚoutlinezPdfDocCommon.outlineá  s   € ð × Ò Ñ"Ô"Ð"rH   ©rK   ry  rÎ   rN   r  rK   ry  c                óÂ  — |€t          ¦   «         }|€ g }| j        }t          j        |v rp|t          j                 }t	          |¦  «        r|S t          |t          ¦  «        st          dt          |¬¦  «         |S d|v rt          t          |d         ¦  «        }|  
                    ¦   «         | _        |€|S t          ¦   «         }||j        k    rt          d|› d|j        › d�¦  «        ‚|€t          ¦   «         }	 t!          |¦  «        }	|	|v rt          dt          |¬	¦  «         �n7|                     |	¦  «         |xj        d
z  c_        |j        |j        k    r t          d|j        › d|j        › d�¦  «        ‚t          |t          ¦  «        st          dt          |¬	¦  «         nµ|                      |¦  «        }
|
r|                     |
¦  «         d|v rcg }|                     ¦   «         }|                      t          t          |d         ¦  «        |||d
z   |¬¦  «         |r|                     |¦  «         d|vrnt          t          |d         ¦  «        }�Œc|S )Nz(Outlines are not a dictionary: %(lines)s)rª   Úlinesz/FirstzMaximum outline depth reached: ú > r  Tz0Detected cycle in outline structure for %(node)s)rª   rK   r   z%Maximum outline entry limit reached: z*Outline node is not a dictionary: %(node)srz  z/Next)r   r˜   r   ÚOUTLINESr9   ra   r,   r   rO   r   rÔ   Ú_named_destinationsr   Úoutline_maximum_depthr$   rÏ   rÃ   rÄ   rþ   Úoutline_maximum_entriesÚ_build_outline_itemr0  Úcopyrx  )r]   rK   ry  rÎ   rN   r  rì   r|  r   Únode_idÚoutline_objÚsub_outlineÚinner_visiteds                rF   rx  zPdfDocCommon._get_outlineê  sá  € ð Ð"Ý-Ñ/Ô/ˆOàˆ?ØˆGØÔ&ˆGõ Œ} Ð'Ð'Ø¥¤Ô.�õ # 5Ñ)Ô)ð #Ø"�Nå! %Õ)9Ñ:Ô:ð #Ý"ØBÝ'Ø#ðñ ô ð ð
 #�Nð ˜uÐ$Ð$ÝÕ 0°%¸´/ÑBÔB�DØ'+×'CÒ'CÑ'EÔ'EˆDÔ$àˆ<ØˆNå)Ñ+Ô+ˆØ�=Ô6Ò6Ð6Ý#Ð$vÀeÐ$vÐ$vÐP]ÔPsÐ$vÐ$vÐ$vÑwÔwÐwð ˆ?Ý‘e”eˆGð*	9Ý˜‘h”hˆGØ˜'Ð!Ð!ÝÐQÕZbÐimÐnÑnÔnÐnÙØ�KŠK˜Ñ Ô Ð ØÐ'Ô'¨1Ñ,Ð'Ô'ØÔ*¨]Ô-RÒRÐRÝ'ð`Ø&Ô2ð`ð `Ø7DÔ7\ð`ð `ð `ñô ð õ
 ˜dÕ$4Ñ5Ô5ð ÝØ@Ý#Øðñ ô ð ð
 à×2Ò2°4Ñ8Ô8ˆKØð ,Ø—’˜{Ñ+Ô+Ð+ð ˜4ÐÐØ)+�à '§¢¡¤�Ø×!Ò!ÝÕ.°°X´Ñ?Ô?Ø'Ø)Ø !™)Ø$3ð "ñ ô ð ð ð 0Ø—N’N ;Ñ/Ô/Ð/à˜dÐ"Ð"ØÝÕ(¨$¨w¬-Ñ8Ô8ˆDñU*	9ðX ˆrH   c                 óp   — | j         }t          j        |v r t          d|t          j                 ¦  «        S dS )uN  
        Read-only property for the list of threads.

        See Â§12.4.3 from the PDF 1.7 or 2.0 specification.

        It is an array of dictionaries with "/F" (the first bead in the thread)
        and "/I" (a thread information dictionary containing information about
        the thread, such as its title, author, and creation date) properties or
        None if there are no articles.

        Since PDF 2.0 it can also contain an indirect reference to a metadata
        stream containing information about the thread, such as its title,
        author, and creation date.
        r(   N)r˜   r   ÚTHREADSr   )r]   rì   s     rF   ÚthreadszPdfDocCommon.threadsH  s5   € ð  Ô"ˆÝŒ<˜7Ð"Ð"Ý˜ w­t¬|Ô'<Ñ=Ô=Ð=ØˆtrH   c                 ó   — d S rZ   rV   r�   s     rF   rd  z)PdfDocCommon._get_page_number_by_indirect]  rž   rH   rp  c                 ó6   — |                       |j        ¦  «        S )a  
        Retrieve page number of a given PageObject.

        Args:
            page: The page to get page number. Should be
                an instance of :class:`PageObject<pypdf._page.PageObject>`

        Returns:
            The page number or None if page is not found

        )rd  rM   )r]   rp  s     rF   Úget_page_numberzPdfDocCommon.get_page_numberc  s   € ð ×0Ò0°Ô1HÑIÔIÐIrH   Údestinationc                 ó6   — |                       |j        ¦  «        S )zÝ
        Retrieve page number of a given Destination object.

        Args:
            destination: The destination to get page number.

        Returns:
            The page number or None if page is not found

        )rd  rp  )r]   rŽ  s     rF   Úget_destination_page_numberz(PdfDocCommon.get_destination_page_numberq  s   € ð ×0Ò0°Ô1AÑBÔBÐBrH   rh   rr  c                 óô  — d\  }}t          |t          ¦  «        rt          |¦  «        dk     r0t          ¦   «         }t	          ||t          j        ¦   «         ¦  «        S |^}}}	 t	          ||t          ||¬¦  «        ¦  «        S # t          $ ri t          dt          ||¬¦  «         | j
        r‚ | j        d         j        }|€t          ¦   «         n|}t	          ||t          j        ¦   «         ¦  «        cY S w xY w)N©NNrS  )Úfit_typeÚfit_argsz+Unknown destination: %(title)r %(fit_args)s)rª   rh   r”  r   )ra   r(   r¶   r3   r+   r/   rs  r%   r   rO   r“   rc  rM   )r]   rh   rr  rp  rq  r”  ÚtmprM   s           rF   rê   zPdfDocCommon._build_destination~  s  € ð
 ‰	ˆˆcõ ˜%¥Ñ-Ô-ð 	7µ°U±´¸a²°Ý‘<”<ˆDÝ˜u d­C¬G©I¬IÑ6Ô6Ð6Ø$Ðˆˆc�Hð	EÝ˜u d­C¸ÀxÐ,PÑ,PÔ,PÑQÔQÐQøÝð 	Eð 	Eð 	EÝØ=ÝØØ!ð	ñ ô ð ð Œ{ð Øà”*˜Q”-Ô2ˆCØ14°¥¡¤ À#ÐÝ˜uÐ&8½#¼'¹)¼)ÑDÔDÐDÐDÐDð	Eøøøs   Á$B ÂA0C7Ã6C7c                 óþ  — d\  }}}d|v rt          d|d         ¦  «        }n| j        rt          d|›�¦  «        ‚d}d|v r©t          t          |d         ¦  «        }t          j        |v rft          t          |t          j                 ¦  «        }|dk    r:t          j        |v r|t          j                 }na| j        rt          d|›�¦  «        ‚nG| j        rt          d	|›�¦  «        ‚n-d
|v r)|d
         }t          |t          ¦  «        rd|v r|d         }t          |t          ¦  «        r|  
                    ||¦  «        }nÂt          |t          ¦  «        rN	 |  
                    || j        |         j        ¦  «        }n…# t          $ r |  
                    |d ¦  «        }Y ncw xY w|€|  
                    ||¦  «        }nF| j        rt          d|›�¦  «        ‚t          dt           |¬¦  «         |  
                    |d ¦  «        }|rÑd|v r^|d         }t          |t"          ¦  «        r*t          d„ |D ¦   «         ¦  «        |t          d¦  «        <   nt          dt           |¬¦  «         d|v r|d         |t          d¦  «        <   d|v r|d         |t          d¦  «        <   t%          |                     dd¦  «        dk    ¦  «        |t          d¦  «        <   ||_        	 |j        |_        n# t,          $ r Y nw xY w|S )N)NNNræ   rU   z(Outline Entry Missing /Title attribute: r  z/Az/GoToz%Outline Action Missing /D attribute: z%Outline Action Missing /S attribute: z/Destrå   zUnexpected destination z8Removed unexpected destination %(dest)r from destination)rª   rð   z/Cc              3   ó4   K  — | ]}t          |¦  «        V — Œd S rZ   )r0   )r	  Úcs     rF   r  z3PdfDocCommon._build_outline_item.<locals>.<genexpr>Ú  s)   è è € Ð@_Ð@_ÐTUÅÈQÁÄÐ@_Ð@_Ð@_Ð@_Ð@_Ð@_rH   z*Ignoring non-array outline color %(color)r)rª   Úcolorz/Fr³   r   z
/%is_open%)r   r“   r%   r,   r   ÚSr2   ÚDra   r(   rê   rU   r  Ú
dest_arrayrH  r   rO   r.  r)   r`   rK   rM   ÚAttributeError)r]   rK   rð   rh   Úoutline_itemÚactionÚaction_typer™  s           rF   r‚  z PdfDocCommon._build_outline_item›  s˜  € Ø$4Ñ!ˆˆe�\ð �tÐÐÝ˜  X¤Ñ/Ô/ˆEˆEàŒ{ð XÝ"Ð#VÈdÐ#VÐ#VÑWÔWÐWØˆEà�4ˆ<ˆ<åÕ*¨D°¬JÑ7Ô7ˆFÝ"Ô$¨Ð.Ð.Ý"¥:¨vÕ6IÔ6KÔ/LÑMÔM�Ø 'Ò)Ð)Ý*Ô,°Ð6Ð6Ø%Õ&9Ô&;Ô<˜˜Øœð ]Ý*Ð+[ÐSWÐ+[Ð+[Ñ\Ô\Ð\øØ”ð UÝ"Ð#SÈ4Ð#SÐ#SÑTÔTÐTðUà˜ˆ_ˆ_à˜”=ˆDå˜$Õ 0Ñ1Ô1ð "°d¸d°l°lØ˜D”z�å�d�KÑ(Ô(ð 	@Ø×2Ò2°5¸$Ñ?Ô?ˆLˆLÝ˜�cÑ"Ô"ð 	@ðDØ#×6Ò6Ø˜4Ô3°DÔ9ÔDñ ô  ��øõ ð Dð Dð Dà#×6Ò6°u¸dÑCÔC���ðDøøøð ˆ\ð  ×2Ò2°5¸$Ñ?Ô?ˆLˆLàŒ{ð GÝ"Ð#E¸TÐ#EÐ#EÑFÔFÐFÝØJÝØðñ ô ð ð
  ×2Ò2°5¸$Ñ?Ô?ˆLð ð 	Ø�tˆ|ˆ|à˜Tœ
�Ý˜e¥TÑ*Ô*ð Ý5@Ð@_Ð@_ÐY^Ð@_Ñ@_Ô@_Ñ5_Ô5_�L¥¨DÑ!1Ô!1Ñ2Ð2å"ØDÝ'Ø#ðñ ô ð ð
 �tˆ|ˆ|ð 26°d´��Z¨Ñ-Ô-Ñ.Ø˜4ÐÐð 6:¸(´^��Z¨Ñ1Ô1Ñ2å5BØ—’˜ 1Ñ%Ô%¨Ò*ñ6ô 6ˆL� LÑ1Ô1Ñ2ð !ˆÔð	Ø.2Ô.EˆLÔ+Ð+øÝð 	ð 	ð 	ØˆDð	øøøàÐs$   Å&F  Æ  F#Æ"F#Ë K- Ë-
K:Ë9K:c                 ó6   — t          | j        | j        ¦  «        S )a—  
        Property that emulates a list of :class:`PageObject<pypdf._page.PageObject>`.
        This property allows to get a page or a range of pages.

        The returned object supports indexing, slicing, ``len()``, iteration and
        (for PdfWriter) ``del``, but it is not a :class:`list` - pages are looked
        up on demand rather than materialised up front, so list-only operations
        such as ``append()`` or concatenation with ``+`` are not available.

        Note:
            For PdfWriter only: Provides the capability to remove a page/range of
            page from the list (using the del operator). Remember: Only the page
            entry is removed, as the objects beneath can be used elsewhere. A
            solution to completely remove them - if they are not used anywhere - is
            to write to a buffer/temporary file and then load it into a new
            PdfWriter.

        )r   r·   r»   r\   s    rF   rc  zPdfDocCommon.pagesô  s   € õ( ˜DÔ.°´Ñ>Ô>Ð>rH   c                 ó^   ‡ — ˆ fd„t          t          ‰ j        ¦  «        ¦  «        D ¦   «         S )z²
        A list of labels for the pages in this document.

        This property is read-only. The labels are in the order that the pages
        appear in the document.
        c                 ó0   •— g | ]}t          ‰|¦  «        ‘ŒS rV   )Úpage_index2page_label)r	  rË   r]   s     €rF   r`  z,PdfDocCommon.page_labels.<locals>.<listcomp>  s$   ø€ ÐOÐOÐO°1Õ% d¨AÑ.Ô.ÐOÐOÐOrH   )Úranger¶   rc  r\   s   `rF   Úpage_labelszPdfDocCommon.page_labels
  s0   ø€ ð PÐOÐOÐO½½cÀ$Ä*¹o¼oÑ8NÔ8NÐOÑOÔOÐOrH   c                 óz   — 	 t          t          | j        t          j                 ¦  «        S # t
          $ r Y dS w xY w)aï  
        Get the page layout currently being used.

        .. list-table:: Valid ``layout`` values
           :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)r   r2   r˜   r¬   ÚPAGE_LAYOUTrH  r\   s    rF   Úpage_layoutzPdfDocCommon.page_layout  sC   € ð.	Ý�
 DÔ$4µR´^Ô$DÑEÔEÐEøÝð 	ð 	ð 	Ø�4�4ð	øøøs   ‚), ¬
:¹:c                 ó@   — 	 | j         d         S # t          $ r Y dS w xY w)a2  
        Get the page mode currently being used.

        .. list-table:: Valid ``mode`` values
           :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
        z	/PageModeN)r˜   rH  r\   s    rF   Ú	page_modezPdfDocCommon.page_mode0  s7   € ð*	ØÔ# KÔ0Ð0øÝð 	ð 	ð 	Ø�4�4ð	øøøs   ‚ �
œÚ	list_onlyc                 ó@  ‡
— t          ¦   «         }d| _        | j                             dt	          ¦   «         ¦  «                             ¦   «         }t          |t          ¦  «        st          d¦  «        ‚g }t          ¦   «         }t          ¦   «         }g }t          |i dd¬¦  «        }|��m|j        |j        k    r t          d|j        › d|j        › d�¦  «        ‚|j        Š
t           j        ‰
v r&t%          t&          ‰
t           j                 ¦  «        }	nht           j        ‰
vrX| j        rNt-          ˆ
fd	„t.          j        t.          j        t.          j        fD ¦   «         ¦  «        st          d
‰
›�¦  «        ‚d}	nd}	|	dk    rK|                     t9          ‰
¦  «        ¦  «         |                     |                      |¦  «        ¦  «         n/|	dk    r)|                     |                      ||¦  «        ¦  «         |                       |||¦  «        }|�­m|| _        dS )aú  
        Process the document pages to ease searching.

        Attributes of a page may inherit from ancestor nodes
        in the page tree. Flattening means moving
        any inheritance data into descendant nodes,
        effectively removing the inheritance dependency.
        The result is stored in ``self.flattened_pages``.

        Note: It is distinct from another use of "flattening" applied to PDFs.
        Flattening a PDF also means combining all the contents into one single layer
        and making the file less editable.

        The page tree is walked with an explicit stack instead of recursion, so the
        traversal is bound by ``Configuration.page_tree_maximum_depth`` and
        ``Configuration.page_tree_maximum_entries`` only, not by the interpreter
        recursion limit.

        Args:
            list_only: If True, the page's own entries are not copied into the
                generated :class:`PageObject`. Attributes inherited from ancestor
                nodes are applied either way. Note that a page reached through an
                indirect reference is already populated by :class:`PageObject`
                itself, so this only has an effect for ``/Kids`` entries that are
                inline dictionaries.

        Nr²   zInvalid object in /Pagesr   ©rK   rL   rM   rN   z!Maximum page tree depth reached: r}  r  c              3   ó    •K  — | ]}|‰v V — Œ	d S rZ   rV   )r	  r^   rK   s     €rF   r  z(PdfDocCommon._flatten.<locals>.<genexpr>ƒ  s'   øè è € Ð*hÐ*h¸3¨3°$¨;Ð*hÐ*hÐ*hÐ*hÐ*hÐ*hrH   z'Non-page object reached through /Kids: rÀ   )!r   r”   r˜   r`   r3   rg   ra   r,   r%   r   rÏ   rJ   rN   Úpage_tree_maximum_depthr$   rK   r   ÚTYPEr   rU   rç   r“   r  ÚPGÚCONTENTSÚMEDIABOXÚPARENTrÄ   rÃ   r0  Ú_enter_page_tree_nodeÚ_flatten_leaf_pageÚ_pop_next_page_tree_kid)r]   r¬  r   rc  r”   r  Úancestor_idsrø   ÚitemÚ	node_typerK   s             @rF   rµ   zPdfDocCommon._flattenJ  s/  ø€ õ8 *Ñ+Ô+ˆØ#ˆÔØÔ ×$Ò$ X­z©|¬|Ñ<Ô<×GÒGÑIÔIˆÝ˜%Õ!1Ñ2Ô2ð 	;ÝÐ9Ñ:Ô:Ð:à,.ˆÝ)Ñ+Ô+ˆõ "%¡¤ˆà&(ˆÝ(5Ø °tÀ1ð)
ñ )
ô )
ˆð ÑØŒz˜MÔAÒAÐAÝ'Øo¸¼
ÐoÐoÀ}ÔGlÐoÐoÐoñô ð ð
 ”9ˆDÝÔ# tÐ+Ð+Ý ¥ d­?Ô+?Ô&@ÑAÔA�	�	å Ô%¨TÐ1Ð1à”;ð [¥sÐ*hÐ*hÐ*hÐ*hÅ2Ä;ÕPRÔP[Õ]_Ô]fÐBgÐ*hÑ*hÔ*hÑ'hÔ'hð [Ý&Ð'YÐQUÐ'YÐ'YÑZÔZÐZØ#�	�	à$�	ð ˜HÒ$Ð$Ø× Ò ¥ D¡¤Ñ*Ô*Ð*Ø—’˜T×7Ò7¸Ñ=Ô=Ñ>Ô>Ð>Ð>Ø˜gÒ%Ð%Ø×&Ò& t×'>Ò'>¸tÀYÑ'OÔ'OÑPÔPÐPà×/Ò/°°|À_ÑUÔUˆDð5 Ñð:  /ˆÔÐÐrH   rº  c                 óì  — |j         }t          |j        ¦  «        }t          D ]}||v r||         ||<   Œ|                     t
          j        t          ¦   «         ¦  «                             ¦   «         }t          |t          ¦  «        rt          ¦   «         }n:t          |t          ¦  «        s%t          dt          |¦  «        j        › d�¦  «        ‚|                     |¬¦  «        t          |¦  «        fS )zž
        Start walking an intermediate ``/Pages`` node: propagate its inheritable
        attributes and pair it with an iterator over its ``/Kids``.
        z#Expected /Kids to be an array, got r  )rL   )rK   rT   rL   Ú_INHERITABLE_PAGE_ATTRIBUTESr`   r   rç   r(   rg   ra   r3   r%   ÚtyperO   Ú_replaceÚiter)r]   rº  rc  rL   r
  rä   s         rF   r¶  z"PdfDocCommon._enter_page_tree_node•  sÙ   € ð
 ”	ˆå�t”|Ñ$Ô$ˆÝ0ð 	,ð 	,ˆDØ�uˆ}ˆ}Ø % d¤�˜‘øà�yŠy�Ô-­{©}¬}Ñ=Ô=×HÒHÑJÔJˆÝ�d�JÑ'Ô'ð 	]Ý‘=”=ˆDˆDÝ˜D¥+Ñ.Ô.ð 	]ÝÐ[ÅTÈ$ÁZÄZÔEXÐ[Ð[Ð[Ñ\Ô\Ð\à�}Š} Wˆ}Ñ-Ô-­t°D©z¬zÐ9Ð9rH   r¹  c           	      ó@  — t          ¦   «         }|�rŒ|d         \  }}t          |j        dt          ¦   «         ¦  «        }|D �]}t          |dt          ¦   «         ¦  «        |k    rt	          d¦  «        ‚|                     ¦   «         }	t          |	t          ¦  «        s't          |	¦  «        st          dt          |	¬¦  «         Œƒ|	sŒ†t          |	¦  «        |v rt	          d¦  «        ‚|xj        dz  c_        |j        |j        k    r t          d|j        › d|j        › d	�¦  «        ‚t          |	|j        t          |t"          ¦  «        r|nd
|j        dz   ¬¦  «        c S |                     ¦   «          |                     t          |j        ¦  «        ¦  «         |�°Œd
S )a  
        Return the next page tree node to flatten, leaving the ``/Pages`` nodes whose
        ``/Kids`` are exhausted, or ``None`` when the traversal is complete.

        Cyclic references and the configured page-tree entry limit are enforced here.
        rÁ   rM   z Detected cyclic page references.z<Ignoring page tree entry that is not a dictionary: %(entry)s)rª   r  r   z'Maximum page tree entry limit reached: r}  r  Nr®  )r   ÚgetattrrK   Úobjectr%   rg   ra   r,   r9   r   rO   rÃ   rþ   Úpage_tree_maximum_entriesr$   rJ   rL   r1   rN   ÚpopÚdiscard)
r]   rø   r¹  r  r   r  rä   Úpages_referencerp  rŸ   s
             rF   r¸  z$PdfDocCommon._pop_next_page_tree_kid©  sé  € õ *Ñ+Ô+ˆØñ #	2Ø  œ9‰LˆF�DÝ% f¤kÐ3GÍÉÌÑRÔRˆOØð ñ �Ý˜4Ð!5µv±x´xÑ@Ô@ÀOÒSÐSÝ&Ð'IÑJÔJÐJà—o’oÑ'Ô'�Ý! #Õ'7Ñ8Ô8ð Ý*¨3Ñ/Ô/ð Ý&ØZÝ#+Ø"%ðñ ô ð ð Øð àÝ�c‘7”7˜lÐ*Ð*Ý&Ð'IÑJÔJÐJØÐ+Ô+¨qÑ0Ð+Ô+Ø"Ô.°Ô1XÒXÐXÝ+ðfØ*Ô6ðfð fØ;HÔ;bðfð fð fñô ð õ %ØØ"œNÝ/9¸$ÅÑ/OÔ/OÐ'Y t tÐUYØ œ,¨Ñ*ð	ñ ô ð ð ð ð �IŠI‰KŒKˆKØ× Ò ¥ F¤K¡¤Ñ1Ô1Ð1ðG ñ #	2ðH ˆtrH   c                 ó¸   — t          | |j        ¦  «        }|s|                     |j        ¦  «         |j                             ¦   «         D ]\  }}||vr|||<   Œ|S )aƒ  
        Build the :class:`PageObject` for a leaf ``/Page`` node.

        ``list_only`` suppresses copying the page's own entries; the inherited
        attributes are applied regardless. When the node has an indirect reference,
        :class:`PageObject` has already copied those entries in its constructor,
        so the flag only matters for inline ``/Kids`` dictionaries.
        )r   rM   r¥   rK   rL   rë   )r]   rº  r¬  Úpage_objr
  rï   s         rF   r·  zPdfDocCommon._flatten_leaf_pageÜ  sm   € õ ˜d DÔ$;Ñ<Ô<ˆØð 	'Ø�OŠO˜DœIÑ&Ô&Ð&Øœ<×-Ò-Ñ/Ô/ð 	'ð 	'‰KˆD�%à˜8Ð#Ð#Ø!&�˜‘øàˆrH   Úcleanc                 óÚ  — | j         €|                      | j        ¦  «         | j         €J ‚t          |t          ¦  «        rC|                     ¦   «         }t          |t          ¦  «        st          dt          ¬¦  «         dS |}t          |t          ¦  «        sC	 | j          
                    |¦  «        }n'# t          $ r t          dt          ¬¦  «         Y dS w xY wd|cxk    rt          | j         ¦  «        k     sn t          dt          ¬¦  «         dS | j        |         j        }t          t           | j        ¦  «        |= |r&|�&|                      |t%          ¦   «         ¦  «         dS dS dS )a  
        Remove page from pages list.

        Args:
            page:
                * :class:`int`: Page number to be removed.
                * :class:`~pypdf._page.PageObject`: page to be removed. If the page appears many times
                  only the first one will be removed.
                * :class:`~pypdf.generic.IndirectObject`: Reference to page to be removed.

            clean: replace PageObject with NullObject to prevent annotations
                or destinations to reference a detached page.

        Nz(IndirectObject is not referencing a pagerã   zCannot find page in pagesr   zPage number is out of range)r”   rµ   r–   ra   r1   rg   r   r   rO   rC   r6  rg  r¶   rc  rM   r   r   r¡   r3   )r]   rp  rÊ  r_  Úinds        rF   Úremove_pagezPdfDocCommon.remove_pageï  s‹  € ð& ÔÐ'Ø�MŠM˜$œ.Ñ)Ô)Ð)ØÔ#Ð/Ð/Ð/Ý�d�NÑ+Ô+ð 	Ø—’Ñ!Ô!ˆAÝ˜a¥Ñ,Ô,ð ÝÐIÕRZÐ[Ñ[Ô[Ð[Ø�ØˆDå˜$¥Ñ$Ô$ð 	ðØÔ+×1Ò1°$Ñ7Ô7��øÝð ð ð ÝÐ:Å8ÐLÑLÔLÐLØ��ðøøøð �TÐ5Ð5Ò5Ð5�C Ô 4Ñ5Ô5Ò5Ð5Ð5Ð5ÝÐ8ÅÐJÑJÔJÐJØˆFàŒj˜ÔÔ1ˆõ •˜tœzÑ*Ô*¨4Ð0Øð 	4�S�_Ø× Ò  ¥j¡l¤lÑ3Ô3Ð3Ð3Ð3ð	4ð 	4�_�_s   ÂB4 Â4 CÃCÚnumÚgenc                 óH   — t          ||| ¦  «                             ¦   «         S )a0  
        Used to ease development.

        This is equivalent to generic.IndirectObject(num,gen,self).get_object()

        Args:
            num: The object number of the indirect object.
            gen: The generation number of the indirect object.

        Returns:
            A PdfObject

        )r1   rg   )r]   rÎ  rÏ  s      rF   Ú_get_indirect_objectz!PdfDocCommon._get_indirect_object  s"   € õ ˜c 3¨Ñ-Ô-×8Ò8Ñ:Ô:Ð:rH   Úpermissions_codec                 ó*   — t          ddd¬¦  «         dS )z>Take the permissions as an integer, return the allowed access.Údecode_permissionsÚuser_access_permissionsz5.0.0)Úold_nameÚnew_namerû   N)r   )r]   rÒ  s     rF   rÔ  zPdfDocCommon.decode_permissions-  s.   € õ 	%Ø)Ø.Øð	
ñ 	
ô 	
ð 	
ð 	
ð 	
rH   c                 óF   — | j         €dS t          | j         j        ¦  «        S )a’  
        Get the user access permissions for encrypted documents.
        Returns None if not encrypted.

        .. warning::

            For AES-256 encrypted documents (R=5/R=6), the returned
            permissions are derived from the ``/P`` field, which is
            only trustworthy if the ``/Perms`` integrity check passed.
            Check :attr:`are_permissions_valid` to verify.
        N)r•   r    ÚPr\   s    rF   rÕ  z$PdfDocCommon.user_access_permissions7  s&   € ð ÔÐ#Ø�4Ý$ TÔ%5Ô%7Ñ8Ô8Ð8rH   c                 ób   — | j         €dS | j                              ¦   «         sdS | j         j        S )a:  
        Whether the ``/Perms`` integrity check passed for this document.

        For AES-256 encrypted documents (R=5/R=6), the ``/Perms`` field
        is an encrypted copy of the permissions that can be verified
        independently. Returns ``False`` if this check fails (the ``/P``
        permissions may have been tampered with).

        Returns ``None`` if the document is not encrypted or has not yet
        been decrypted via :meth:`decrypt()<pypdf.PdfReader.decrypt>`.
        Returns ``True`` for non-AES-256 encryption (no ``/Perms`` to check).
        N)r•   Úis_decryptedÚ_are_permissions_validr\   s    rF   Úare_permissions_validz"PdfDocCommon.are_permissions_validH  s:   € ð ÔÐ#Ø�4ØÔ×,Ò,Ñ.Ô.ð 	Ø�4ØÔÔ6Ð6rH   c                 ó   — dS )zè
        Read-only boolean property showing whether this PDF file is encrypted.

        Note that this property, if true, will remain true even after the
        :meth:`decrypt()<pypdf.PdfReader.decrypt>` method is called.
        NrV   r\   s    rF   r´   zPdfDocCommon.is_encrypted\  s	   € ð 	ˆrH   c                 ó  — i }| j         }d|vs|d         sd S t          t          |d         ¦  «        }d|v rÐ|d                              ¦   «         }t	          |t
          ¦  «        st          dt          |¬¦  «         |S t          |¦  «        }|D ]v}|}t          |d ¦  «        }t	          |t          ¦  «        rMt          t          t                   |                     ¦   «         ¦  «        }|rt          |j        ¦  «        }	|	||<   Œw|S )Nz	/AcroFormz/XFAz%XFA entry is not an array: %(fields)sr  )r˜   r   r6   rg   ra   r(   r   rO   rÀ  Únextr1   r   r-   r'   Ú_data)
r]   rb   rì   rá   r  rË   r  Útagr  Úess
             rF   ÚxfazPdfDocCommon.xfag  s  € à!#ˆØÔ"ˆà˜gÐ%Ð%¨W°[Ô-AÐ%Ø�4å•J ¨Ô 4Ñ5Ô5ˆà�Tˆ>ˆ>Ø˜&”\×,Ò,Ñ.Ô.ˆFÝ˜f¥kÑ2Ô2ð ÝØ;Ý#Ø!ðñ ô ð ð
 �Ý�V‘”ˆAØð )ð )�Ø�Ý˜˜D‘M”M�Ý˜a¥Ñ0Ô0ð )Ý ¥Õ*=Ô!>ÀÇÂÁÄÑOÔO�EØð )Ý3°E´KÑ@Ô@˜Ø&(˜˜s™øØˆrH   c                 óÜ   ‡ — i }‰ j         D ]5}|j        D ]+}|                     |g ¦  «                             |¦  «         Œ,Œ6t	          ˆ fd„|                     ¦   «         D ¦   «         ¦  «        S )z1Mapping of attachment filenames to their content.c                 ó*   •— i | ]\  }}|‰j         |f“ŒS rV   )Ú_get_attachment_contents)r	  rú   Úattachment_entriesr]   s      €rF   ú
<dictcomp>z,PdfDocCommon.attachments.<locals>.<dictcomp>�  s9   ø€ ð ð ð á,�DÐ,ð �tÔ4Ð6HÐIðð ð rH   )Úattachment_listÚ_namesÚ
setdefaultr0  ÚLazyDictrë   )r]   Úentriesr  rú   s   `   rF   ÚattachmentszPdfDocCommon.attachments…  s›   ø€ ð 24ˆàÔ)ð 	;ð 	;ˆEØœð ;ð ;�Ø×"Ò" 4¨Ñ,Ô,×3Ò3°EÑ:Ô:Ð:Ð:ð;õ ðð ð ð à07·²±´ðñ ô ñ
ô 
ð 	
rH   rî  c                 ó   — d„ |D ¦   «         S )Nc                 ó   — g | ]	}|j         ‘Œ
S rV   )Úcontent)r	  r  s     rF   r`  z9PdfDocCommon._get_attachment_contents.<locals>.<listcomp>—  s   € Ð3Ð3Ð3 %�”Ð3Ð3Ð3rH   rV   )Úclsrî  s     rF   rç  z%PdfDocCommon._get_attachment_contents•  s   € à3Ð3¨7Ð3Ñ3Ô3Ð3rH   c              #   óV   K  — t          j        | j        | j        ¬¦  «        E d{V —† dS )zIterable of attachment objects.)r“   N)r:   Ú_loadr˜   r“   r\   s    rF   rê  zPdfDocCommon.attachment_list™  s;   è è € õ  Ô% dÔ&6¸t¼{ÐKÑKÔKÐKÐKÐKÐKÐKÐKÐKÐKÐKrH   ÚincludeÚexcludec                 ó   — dS )zø
        Integration into Jupyter Notebooks.

        This method returns a dictionary that maps a mime-type to its
        representation.

        .. seealso::

            https://ipython.readthedocs.io/en/stable/config/integrating.html
        NrV   )r]   rö  r÷  s      rF   Ú_repr_mimebundle_zPdfDocCommon._repr_mimebundle_ž  s	   € ð  	ˆrH   )Fr’  )grO   rP   rQ   rR   r“   ÚboolrS   r”   r   r.  r   r•   r   r–   r�   r   r,   r˜   rU   r›   r   rC   r1   r4   rg   r¡   r£   rX   r¦   r=   r¨   r7   r°   r·   r»   rÐ   rÒ   rT   r+   rÕ   r(   rß   rÏ   rÔ   r  r
   r   r  r  Ústaticmethodr"  r6   r  r7  r*  rY  r.   rk  r5   r*   rt  Úsetterr;   ry  rx  rŠ  r3   rd  r�  r�  rè   rê   r‚  r   rc  r¦  r©  r<   r«  rµ   rJ   Ú_PageTreeFramer¶  r¸  r·  rÍ  rÑ  r   rÔ  r    rÕ  rÝ  r´   rä  r   rï  Úclassmethodr:   rç  r   rê  r   rù  rV   rH   rF   r’   r’     sW  € € € € € € ðð ð €FˆDÐÐÑà26€O�X˜d :Ô.Ô/Ð6Ð6Ñ6à(,€K�˜*Ô%Ð,Ð,Ñ,à€IˆtÐÐÑàØðÐ-ð ð ð ñ „^ñ „Xðð Øð˜Cð ð ð ñ „^ñ „Xðð ðØ"'¨¨^Ð(;Ô"<ðà	�)Ô	ðð ð ñ „^ðð
 ð°.ð Àyð ÐU^ð ð ð ñ „^ðð Øð�xÐ 0Ô1ð ð ð ñ „^ñ „Xðð ð˜(Ð#6Ô7ð ð ð ñ „Xðð Øð˜h ~Ô6ð ð ð ñ „^ñ „Xðð ð HÐ->Ô$?ð ð ð ñ „Xðð*)˜sð )ð )ð )ð )ð*1 Cð 1¨Jð 1ð 1ð 1ð 1ð$(àð(ð 
Ð Ð$Ô	%ð(ð (ð (ð (ðT ð. D¨¨kÐ)9Ô$:ð .ð .ð .ñ „Xð.ð [ð ð ð ð ðH ,0Ø37Ø&*ðkð kð kð Ð'Ô(ðkð ˜˜c ;Ð.Ô/Ô0ð	kð
 ˜#˜cœ(Ô#ðkð 
ˆc�;ÐÔ	ðkð kð kð kðd ,0Ø+/Ø!%Øðcð (,ØØ6:ðcð cð càÐ'Ô(ðcð ˜˜c 3˜hœÔ(ðcð ˜#”ð	cð
 ðcð ˜3˜sœ8Ô$ðcð ðcð # ?Ô3ðcð 
�$�s˜C�x”.Ô	!ðcð cð cð cðR +/ð	/ð /ð /ð %ð/ð ˜c #œhÔ'ð	/ð
 
ð/ð /ð /ð /ð4 ð
 sð 
Ð/?ð 
ð 
ð 
ñ „\ð
ð6
ð �ZÐ!1Ð1Ô2ð6
ð �S˜#�X”ð	6
ð
 ð6
ð ð6
ð �S”ð6
ð ð6
ð )ð6
ð 
ð6
ð 6
ð 6
ð 6
ðpð �JÐ 0Ð0Ô1ðð ð	ð
 ðð �S”ðð ðð )ðð 
ðð ð ð ð8# Cð #°ð #Àsð #Ètð #ð #ð #ð #ðJ$ð $¸ð $ÈÈcÐSVÈhÌð $ð $ð $ð $ðL:
Ø˜5 )¨^Ð;Ô<ð:
à	ˆjÔ	ð:
ð :
ð :
ð :
ðx ðà	ˆ{Ð,Ð.>ÀÐDÔ	Eðð ð ñ „Xðð: ÔðD U¨3°¸ZÈÐ+MÔ%Nð DÐSWð Dð Dð Dñ ÔðDð ð#˜ð #ð #ð #ñ „Xð#ð ,0Ø!%Ø&*ØØ59ð\ð \ð \ð Ð'Ô(ð\ð ˜#”ð	\ð
 ˜#˜cœ(Ô#ð\ð ð\ð " /Ô2ð\ð 
ð\ð \ð \ð \ð| ð˜ +Ô.ð ð ð ñ „Xðð( ðØ"'¨¨Z¸ÈÐ(MÔ"Nðà	�#Œðð ð ñ „^ðð
J Jð J°8¸C´=ð Jð Jð Jð JðC°{ð CÀxÐPSÄ}ð Cð Cð Cð CðEà�S˜%�ZÔ ðEð ˜Ô$ðEð 
ð	Eð Eð Eð Eð:WÐ(8ð W¸XÀkÔ=Rð Wð Wð Wð Wðr ð?�x 
Ô+ð ?ð ?ð ?ñ „Xð?ð* ðP˜T #œYð Pð Pð Pñ „XðPð ð˜X cœ]ð ð ð ñ „Xðð6 ð˜8 LÔ1ð ð ð ñ „Xðð2I/ð I/ $ð I/°4ð I/ð I/ð I/ð I/ðV:¨-ð :¸Nð :ð :ð :ð :ð(1à�NÔ#ð1ð ˜#”hð1ð )ð	1ð
 
�-Ô	 ð1ð 1ð 1ð 1ðf }ð Àð È*ð ð ð ð ð, ð,4ð ,4à�C˜ ^Ð3Ô4ð,4ð ð,4ð 
ð	,4ð ,4ð ,4ð ,4ð\;¨ð ;°#ð ;¸(À9Ô:Mð ;ð ;ð ;ð ;ð 
Ø #ð
à	ð
ð 
ð 
ð 
ð ð9¨Ð2GÔ)Hð 9ð 9ð 9ñ „Xð9ð  ð7 x°¤~ð 7ð 7ð 7ñ „Xð7ð& Øð˜dð ð ð ñ „^ñ „Xðð ð�X˜d 3¨ 8œnÔ-ð ð ð ñ „Xðð: ð
˜W S¨$¨u¬+Ð%5Ô6ð 
ð 
ð 
ñ „Xð
ð ð4¨t°LÔ/Að 4ÀdÈ5Äkð 4ð 4ð 4ñ „[ð4ð ðL ¨,Ô!7ð Lð Lð Lñ „XðLð ð /3Ø.2ðð à�x ”} dÐ*Ô+ðð �x ”} dÐ*Ô+ðð 
ˆc�3ˆhŒð	ð ð ñ „^ðð ð rH   r’   c                   ób   — e Zd Zdededdfd„Zdedefd„Zdee         fd„Zde	fd	„Z
defd
„ZdS )rí  ÚargsÚkwargsr@   Nc                 ó(   — t          |i |¤Ž| _        d S rZ   )rT   Ú	_raw_dict)r]   r   r  s      rF   r[   zLazyDict.__init__²  s   € Ý˜tÐ. vÐ.Ð.ˆŒˆˆrH   r^   c                 óR   — | j                              |¦  «        \  }} ||¦  «        S rZ   )r  Ú__getitem__)r]   r^   ÚfuncÚargs       rF   r  zLazyDict.__getitem__µ  s)   € Ø”N×.Ò.¨sÑ3Ô3‰	ˆˆcØˆt�C‰yŒyÐrH   c                 ó*   — t          | j        ¦  «        S rZ   )rÀ  r  r\   s    rF   Ú__iter__zLazyDict.__iter__¹  s   € Ý�D”NÑ#Ô#Ð#rH   c                 ó*   — t          | j        ¦  «        S rZ   )r¶   r  r\   s    rF   Ú__len__zLazyDict.__len__¼  s   € Ý�4”>Ñ"Ô"Ð"rH   c                 óL   — dt          |                      ¦   «         ¦  «        › d�S )NzLazyDict(keys=ú))r.  r/  r\   s    rF   Ú__str__zLazyDict.__str__¿  s#   € Ø4¥ T§Y¢Y¡[¤[Ñ 1Ô 1Ð4Ð4Ð4Ð4rH   )rO   rP   rQ   r
   r[   rU   r  r   r	  rC   r  r  rV   rH   rF   rí  rí  ±  s´   € € € € € ð/˜cð /¨Sð /°Tð /ð /ð /ð /ð˜sð  sð ð ð ð ð$˜( 3œ-ð $ð $ð $ð $ð#˜ð #ð #ð #ð #ð5˜ð 5ð 5ð 5ð 5ð 5ð 5rH   rí  )_rD   Úabcr   r   Úcollections.abcr   r   r   r   r	   Útypingr
   r   r   r   r   r   Ú_configurationr   r•   r   Ú_pager   r   Ú_page_labelsr   r¤  Ú_utilsr   r   r   r   r   Ú	constantsr   r¬   r   r   r   r   r    r!   re   r"   r  r#   r²  Úerrorsr$   r%   r&   Úfiltersr'   Úgenericr(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   Úgeneric._filesr:   rL  r;   r<   Úxmpr=   rè   rC   rÐ   rG   Ú	RESOURCESr´  ÚCROPBOXÚROTATEr½  rJ   rý  rÃ  r  rX   r’   rí  rV   rH   rF   ú<module>r     s|  ðð> €€€Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AØ Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð .Ð -Ð -Ð -Ð -Ð -Ø #Ð #Ð #Ð #Ð #Ð #Ø +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ø >Ð >Ð >Ð >Ð >Ð >ðð ð ð ð ð ð ð ð ð ð ð ð ð ð /Ð .Ð .Ð .Ð .Ð .ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ;Ð :Ð :Ð :Ð :Ð :Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø +Ð +Ð +Ð +Ð +Ð +Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø +Ð +Ð +Ð +Ð +Ð +ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð( )Ð (Ð (Ð (Ð (Ð (Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø Ð Ð Ð Ð Ð ð0�eð 0 3ð 0¨5°°e¸CÀ¸H´oÐ1EÔ+Fð 0ð 0ð 0ð 0ð €JˆrŒ|ÑÔØ€JˆrŒ{ÑÔØ€JˆrŒzÑÔØ€JˆrŒyÑÔð	 Ð ðð ð ð ð �Jñ ô ð ð �} h¨yÔ&9Ð9Ô:€à	ˆ‰Œ€ð]%ð ]%ð ]%ð ]%ð ]%Ð*ñ ]%ô ]%ð ]%ð@Oð Oð Oð Oð O�3ñ Oô Oð Oðd,5ð 5ð 5ð 5ð 5ˆw�s˜C�xÔ ñ 5ô 5ð 5ð 5ð 5rH   