Ë
    =²Xj¬7  ã            	       ó\  — U d Z dZdZddlZddlZddlZddl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mZmZmZmZmZ 	 dd
lmZ ddlmZmZmZ eeeeef   eeeef   eeeef   f   Z ee!d<   eeeeeeef   Z"ee!d<   eZ#ee$e#f   Z%dZ&dZ'dZ(dZ)de*de*de*fd„Z+dQde#dee,   de*fd„Z-de#de*fd„Z.de#de/fd„Z0de#ddfd„Z1	 dRde#dee*   de/de*fd„Z2de#d e,de*fd!„Z3de#de*fd"„Z4d#e d$e de fd%„Z5de#ddfd&„Z6i Z7eee$e*f   e*f   e!d'<   d(ee$e*f   de*fd)„Z8ed$e$de$fd*„«       Z9ed$e*de$fd+„«       Z9d$ee$e*f   de$fd,„Z9ed$e$de,fd-„«       Z:ed$e*de*fd.„«       Z:ed$e,de,fd/„«       Z:d$ee,e$e*f   dee,e*f   fd0„Z:d$e*de*fd1„Z;d2e,de$fd3„Z<d4Z=d5e,d6e,d7e,de,fd8„Z>dSd9e$d:e,ddfd;„Z?d9e$ddfd<„Z@	 dTd=e$d>e$d?e$ddfd@„ZA	 dTd=e$d>e$d?e$ddfdA„ZBdTdBe$d?e$ddfdC„ZCdTdBe$d?e$ddfdD„ZDd9e$dEe$ddfdF„ZEdGe$defdH„ZF	 dRdIe$dJee$ef   dGee$e$f   dKe/fdL„ZGdMe,de$fdN„ZHe	 G dO„ dP«      «       ZIy# e$ r
 dd
lmZ Y �Œáw xY w)Uz"Utility functions for PDF library.zMathieu Fenniakzbiziqe@mathieu.fenniak.neté    N©Ú
getencoder)Ú	dataclass)ÚDEFAULT_BUFFER_SIZE)ÚSEEK_CUR)	ÚIOÚAnyÚCallableÚDictÚOptionalÚPatternÚTupleÚUnionÚoverload)Ú	TypeAliasé   )ÚSTREAM_TRUNCATED_PREMATURELYÚDeprecationErrorÚPdfStreamErrorÚTransformationMatrixTypeÚCompressedTransformationMatrixz2{} is deprecated and will be removed in PyPDF2 {}.z.{} is deprecated and was removed in PyPDF2 {}.zE{} is deprecated and will be removed in PyPDF2 3.0.0. Use {} instead.z>{} is deprecated and was removed in PyPDF2 {}. Use {} instead.Úheader1Úheader2Úreturnc                 óö   — d}g }| |v r |j                  |j                  | «      «       ||v r |j                  |j                  |«      «       t        |«      dk(  rt        d| ›d|›d�«      ‚|t	        |«         S )N)s   %PDF-1.3s   %PDF-1.4s   %PDF-1.5s   %PDF-1.6s   %PDF-1.7s   %PDF-2.0r   zneither z nor z are proper headers)ÚappendÚindexÚlenÚ
ValueErrorÚmax)r   r   ÚversionsÚpdf_header_indicess       úS/var/www/html/content_generation/venv/lib/python3.12/site-packages/PyPDF2/_utils.pyÚ_get_max_pdf_version_headerr$   O   s‰   € ð€Hð ÐØ�(ÑØ×!Ñ! (§.¡.°Ó"9Ô:Ø�(ÑØ×!Ñ! (§.¡.°Ó"9Ô:Ü
ÐÓ !Ò#Ü˜8 G ;¨e°G°;Ð>QÐRÓSÐSØ”CÐ*Ó+Ñ,Ð,ó    ÚstreamÚmaxcharsc                 ó‚   — d}	 | j                  d«      }|j                  «       s|s	 |S ||z  }t        |«      |k(  r	 |S Œ=)z~
    Read non-whitespace characters and return them.

    Stops upon encountering whitespace or when maxchars is reached.
    r%   r   )ÚreadÚisspacer   )r&   r'   ÚtxtÚtoks       r#   Úread_until_whitespacer-   b   sR   € ð €CØ
Ø�k‰k˜!‹nˆØ�;‰;Œ=¡Øð €Jð 	ˆs‰
ˆÜˆs‹8�xÒØØ€Jð r%   c                 ól   — | j                  d«      }|t        v r| j                  d«      }|t        v rŒ|S )zEFind and read the next non-whitespace character (ignores whitespace).r   )r)   ÚWHITESPACES©r&   r,   s     r#   Úread_non_whitespacer1   s   s3   € à
�+‰+�a‹.€CØ
”Ñ
Ø�k‰k˜!‹nˆð ”Ò
à€Jr%   c                 óp   — t         d   }d}|t         v r| j                  d«      }|dz  }|t         v rŒ|dkD  S )zr
    Similar to read_non_whitespace, but return a Boolean if more than
    one whitespace character was read.
    r   r   )r/   r)   )r&   r,   Úcnts      r#   Úskip_over_whitespacer4   {   sE   € ô
 �a‰.€CØ
€CØ
”Ñ
Ø�k‰k˜!‹nˆØˆq‰ˆð ”Ò
ð �‰7€Nr%   c                 óŒ   — | j                  d«      }| j                  dd«       |dk(  r|dvr| j                  d«      }|dvrŒy y y )Nr   éÿÿÿÿó   %)ó   
ó   )r)   Úseekr0   s     r#   Úskip_over_commentr;   ˆ   sH   € Ø
�+‰+�a‹.€CØ
‡K�K��AÔØ
ˆd‚{Ø˜Ñ'Ø—+‘+˜a“.ˆCð ˜Ô'ð r%   ÚregexÚ
ignore_eofc                 ó  — d}	 | j                  d«      }|s|r|S t        t        «      ‚|j                  |«      }|�E||d|j	                  «        z  }| j                  |j	                  «       t        |«      z
  d«       	 |S ||z  }Œ„)zñ
    Read until the regular expression pattern matched (ignore the match).

    :raises PdfStreamError: on premature end-of-file
    :param bool ignore_eof: If true, ignore end-of-line and return immediately
    :param regex: re.Pattern
    r%   é   Nr   )r)   r   r   ÚsearchÚstartr:   r   )r&   r<   r=   Únamer,   Úms         r#   Úread_until_regexrD   �   s�   € ð €DØ
Ø�k‰k˜"‹oˆÙÙØ�Ü Ô!=Ó>Ð>Ø�L‰L˜ÓˆØˆ=Ø�C˜˜!Ÿ'™'›)Ð$Ñ$ˆDØ�K‰K˜Ÿ™›	¤C¨£HÑ,¨aÔ0Øà€Kð 	�‰ˆð r%   Úto_readc                 óÀ   — | j                  «       |k  rt        d«      ‚| j                  | t        «       | j	                  |«      }| j                  | t        «       |S )z´
    Given a stream at position X, read a block of size to_read ending at position X.

    This changes the stream's position to the beginning of where the block was
    read.
    z!Could not read malformed PDF file)Útellr   r:   r   r)   )r&   rE   r)   s      r#   Úread_block_backwardsrH   ª   sQ   € ð ‡{�{ƒ}�wÒÜÐ@ÓAÐAà
‡K�K��œ(Ô#Ø�;‰;�wÓ€Dà
‡K�K��œ(Ô#Ø€Kr%   c                 ó  — g }d}| j                  «       dk(  rt        t        «      ‚	 t        t        | j                  «       «      }|dk(  rnªt        | |«      }t        |«      dz
  }|s%|dk\  r||   dvr|dz  }|dk\  r||   dvrŒ|dk\  rd}|r6|j                  ||dz   d «       |dk\  r+||   dv r$|dz  }|dk\  r||   dv rŒn|j                  |«       |dk\  r| j                  |dz   t        «       nŒÎdj                  |ddd…   «      S )	aª  
    Given a byte stream with current position X, return the previous line.

    All characters between the first CR/LF byte found before X
    (or, the start of the file, if no such byte is found) and position X
    After this call, the stream will be positioned one byte after the
    first non-CRLF character found beyond the first CR/LF byte before X,
    or, if no such byte is found, at the beginning of the stream.
    Fr   Tr   s   
Nr%   r6   )rG   r   r   Úminr   rH   r   r   r:   r   Újoin)r&   Úline_contentÚ
found_crlfrE   ÚblockÚidxs         r#   Úread_previous_linerP   »   s?  € ð €LØ€JØ‡{�{ƒ}˜ÒÜÔ9Ó:Ð:Ø
ÜÔ)¨6¯;©;«=Ó9ˆØ�aŠ<Øô % V¨WÓ5ˆÜ�%‹j˜1‰nˆÙð ˜’(˜u S™z°Ñ8Ø�q‘�ð ˜’(˜u S™z°Ò8à�aŠxØ!�
Ùð
 ×Ñ  c¨A¡g iÐ 0Ô1à˜’(˜u S™z¨WÑ4Ø�q‘�ð ˜’(˜u S™z¨WÓ4ð
 ×Ñ Ô&Ø�!Š8ð �K‰K˜˜a™¤Ô*ØðA ðD �8‰8�L¡ 2 Ñ&Ó'Ð'r%   ÚaÚbc                 ó,   ‡— t        ˆfd„| D «       «      S )Nc              3   óT   •‡K  — | ]  Št        ˆfd „t        ‰Ž D «       «      –— Œ  y­w)c              3   óV   •K  — | ]   }t        d „ t        ‰|«      D «       «      –— Œ" y­w)c              3   óP   K  — | ]  \  }}t        |«      t        |«      z  –— Œ  y ­w©N)Úfloat)Ú.0ÚiÚjs      r#   Ú	<genexpr>z6matrix_multiply.<locals>.<genexpr>.<genexpr>.<genexpr>ò   s"   è ø€ Ð@±-©$¨!¨Q”%˜“(œU 1›XÕ%±-ùs   ‚$&N)ÚsumÚzip)rY   ÚcolÚrows     €r#   r\   z,matrix_multiply.<locals>.<genexpr>.<genexpr>ò   s#   øè ø€ ÐTÉGÀSŒcÑ@´#°c¸3´-Ó@×@ÉGùs   ƒ&)N)Útupler^   )rY   r`   rR   s    @€r#   r\   z"matrix_multiply.<locals>.<genexpr>ñ   s)   ùè ø€ ð áˆCô 	ÓTÌCÐQRÉGÓT×TÙùs   „$()ra   )rQ   rR   s    `r#   Úmatrix_multiplyrb   î   s   ø€ ô ó áóó ð r%   c                 ó8  — d}| j                  | d«       t        dd«      5 }|j                  | j                  |«      «       |j                  d«       |j                  | j                  |«      «       ddd«       | j                  | d«       y# 1 sw Y   ŒxY w)z5Create text file showing current location in context.iˆ  r   zPyPDF2_pdfLocation.txtÚwbs   HEREN)r:   ÚopenÚwriter)   )r&   ÚradiusÚ	output_fhs      r#   Úmark_locationri   ÷   s|   € ð €FØ
‡K�K��˜ÔÜ	Ð&¨Ô	-°Ø�‰˜Ÿ™ FÓ+Ô,Ø�‰˜Ô Ø�‰˜Ÿ™ FÓ+Ô,÷ 
.ð ‡K�K��˜Õ÷	 
.Ð	-ús   ¢ABÂBÚB_CACHEÚsc                 óü   — t         }| |v r||    S t        | t        «      r| S 	 | j                  d«      }t	        | «      dk  r||| <   |S # t
        $ r) | j                  d«      }t	        | «      dk  r||| <   |cY S w xY w)Núlatin-1é   zutf-8)rj   Ú
isinstanceÚbytesÚencoder   Ú	Exception)rk   ÚbcÚrs      r#   Úb_ru     sˆ   € Ü	€BØˆB�wØ�!‰uˆÜ�!”UÔØˆð	Ø�H‰H�YÓˆÜˆq‹6�AŠ:ØˆBˆq‰EØˆøÜò Ø�H‰H�WÓˆÜˆq‹6�AŠ:ØˆBˆq‰EØŠð	ús   £%A	 Á	/A;Á:A;c                  ó   — y rW   © ©rR   s    r#   Ústr_ry     ó   € àr%   c                  ó   — y rW   rw   rx   s    r#   ry   ry     rz   r%   c                 óH   — t        | t        «      r| j                  d«      S | S )Nrm   )ro   rp   Údecoderx   s    r#   ry   ry   "  s    € Ü�!”UÔØ�x‰x˜	Ó"Ð"àˆr%   c                  ó   — y rW   rw   rx   s    r#   Úord_r   )  rz   r%   c                  ó   — y rW   rw   rx   s    r#   r   r   .  rz   r%   c                  ó   — y rW   rw   rx   s    r#   r   r   3  rz   r%   c                 ó<   — t        | t        «      rt        | «      S | S rW   )ro   ÚstrÚordrx   s    r#   r   r   8  s   € Ü�!”SÔÜ�1‹vˆØ€Hr%   c                 ó2   — t        d«      } || «      }|d   S )NÚ	hex_codecr   r   )rR   ÚcoderÚcodeds      r#   Ú	hexencoder‰   >  s   € ä�{Ó#€EÙ�!‹H€EØ�‰8€Or%   Únumc                 ó8   — t        | «      j                  dd«      S )NÚLÚ )ÚhexÚreplace)rŠ   s    r#   Úhex_strr�   E  s   € Üˆs‹8×Ñ˜C Ó$Ð$r%   )ó    r8   r9   ó   	ó    ÚleftÚupÚup_leftc                 ó�   — | |z   |z
  }t        || z
  «      }t        ||z
  «      }t        ||z
  «      }||k  r||k  r| S ||k  r|S |S rW   )Úabs)r”   r•   r–   ÚpÚ	dist_leftÚdist_upÚdist_up_lefts          r#   Úpaeth_predictorr�   L  s^   € Øˆr‰	�GÑ€AÜ�A˜‘H“€IÜ�!�b‘&‹k€GÜ�q˜7‘{Ó#€Là�GÒ 	¨\Ò 9ØˆØ	�LÒ	 Øˆ	àˆr%   ÚmsgÚ
stacklevelc                 ó<   — t        j                  | t        |¬«       y )N)rŸ   )ÚwarningsÚwarnÚDeprecationWarning)rž   rŸ   s     r#   Ú	deprecater¤   Z  s   € Ü‡M�M�#Ô)°jÖAr%   c                 ó   — t        | «      ‚rW   )r   )rž   s    r#   Údeprecationr¦   ^  s   € Ü
˜3Ó
Ðr%   Úold_nameÚnew_nameÚ
removed_inc                 óF   — t        t        j                  | ||«      d«       y)zS
    Raise an exception that a feature will be removed, but has a replacement.
    é   N)r¤   ÚDEPR_MSGÚformat©r§   r¨   r©   s      r#   Údeprecate_with_replacementr¯   b  s   € ô Œh�o‰o˜h¨°*Ó=¸qÕAr%   c                 óD   — t        t        j                  | ||«      «       y)zW
    Raise an exception that a feature was already removed, but has a replacement.
    N)r¦   ÚDEPR_MSG_HAPPENEDr­   r®   s      r#   Údeprecation_with_replacementr²   k  s   € ô Ô!×(Ñ(¨°:¸xÓHÕIr%   rB   c                 óD   — t        t        j                  | |«      d«       y)zP
    Raise an exception that a feature will be removed without replacement.
    r«   N)r¤   ÚDEPR_MSG_NO_REPLACEMENTr­   ©rB   r©   s     r#   Údeprecate_no_replacementr¶   t  s   € ô Ô%×,Ñ,¨T°:Ó>ÀÕBr%   c                 óB   — t        t        j                  | |«      «       y)zT
    Raise an exception that a feature was already removed without replacement.
    N)r¦   Ú DEPR_MSG_NO_REPLACEMENT_HAPPENEDr­   rµ   s     r#   Údeprecation_no_replacementr¹   {  s   € ô Ô0×7Ñ7¸¸jÓIÕJr%   Úsrcc                 óL   — t        j                  |«      j                  | «       y)a“  
    Use this instead of logger.warning directly.

    That allows people to overwrite it more easily.

    ## Exception, warnings.warn, logger_warning
    - Exceptions should be used if the user should write code that deals with
      an error case, e.g. the PDF being completely broken.
    - warnings.warn should be used if the user needs to fix their code, e.g.
      DeprecationWarnings
    - logger_warning should be used if the user needs to know that an issue was
      handled by PyPDF2, e.g. a non-compliant PDF being read in a way that
      PyPDF2 could apply a robustness fix to still read it. This applies mainly
      to strict=False mode.
    N)ÚloggingÚ	getLoggerÚwarning)rž   rº   s     r#   Úlogger_warningr¿   ‚  s   € ô  ×Ñ�cÓ×"Ñ" 3Õ'r%   Úaliasesc                  ó    ‡ — dt         fˆ fd„}|S )z¶
    Decorator for deprecated term "bookmark"
    To be used for methods and function arguments
        outline_item = a bookmark
        outline = a collection of outline items
    Úfuncc                 óF   •‡ — t        j                  ‰ «      ˆˆ fd„«       }|S )Nc                  óF   •— t        ‰j                  |‰d¬«        ‰| i |¤ŽS )NT)Úfail)Úrename_kwargsÚ__name__)ÚargsÚkwargsrÀ   rÂ   s     €€r#   Úwrapperz9deprecation_bookmark.<locals>.decoration.<locals>.wrapperž  s%   ø€ ä˜$Ÿ-™-¨°¸tÕDÙ˜Ð( Ñ(Ð(r%   )Ú	functoolsÚwraps)rÂ   rÊ   rÀ   s   ` €r#   Ú
decorationz(deprecation_bookmark.<locals>.decoration�  s%   ù€ Ü	�‰˜Ó	ô	)ó 
ð	)ð ˆr%   )r
   )rÀ   rÍ   s   ` r#   Údeprecation_bookmarkrÎ   •  s   ø€ ðœõ ð Ðr%   Ú	func_namerÉ   rÅ   c                 ó
  — |j                  «       D ]p  \  }}||v sŒ|rt        |› d|› d�«      ‚||v rt        | › d|› d|› d|› d|› d�
«      ‚|j                  |«      ||<   t	        j
                  |› d|› d�t        ¬«       Œr y	)
z1
    Helper function to deprecate arguments.
    z# is deprecated as an argument. Use z insteadz received both z and z as an argument. z is deprecated. Use z	 instead.)ÚmessageÚcategoryN)Úitemsr   Ú	TypeErrorÚpopr¡   r¢   r£   )rÏ   rÉ   rÀ   rÅ   Úold_termÚnew_terms         r#   rÆ   rÆ   ¨  s¶   € ð &Ÿm™mžoÑˆ�(Ø�vÒÙÜ&Ø�jÐ CÀHÀ:ÈXÐVóð ð ˜6Ñ!ÜØ �k °°
¸%À¸zÐIZØ�jÐ 4°X°J¸iðIóð ð  &Ÿz™z¨(Ó3ˆF�8ÑÜ�M‰Mà�jÐ CÀHÀ:ÈXÐVä+ö	ñ .r%   rp   c                 ó`   — | dk  r| › d�S | dk  r	| dz  d›d�S | dk  r	| dz  d›d�S | dz  d›d�S )	Niè  z Bytei@B z.1fz kBi Êš;z MBz GBrw   )rp   s    r#   Ú_human_readable_bytesrÙ   Ã  s_   € Øˆu‚}Ø�˜ˆÐØ	�ŠØ˜%‘- Ð$ CÐ(Ð(Ø	�ŠØ˜%‘- Ð$ CÐ(Ð(à˜%‘- Ð$ CÐ(Ð(r%   c                   ó:   — e Zd ZU eed<   eed<   defd„Zdefd„Zy)ÚFilerB   Údatar   c                 ó`   — d| j                   › dt        t        | j                  «      «      › d�S )Nú
File(name=ú, data: Ú))rB   rÙ   r   rÜ   ©Úselfs    r#   Ú__str__zFile.__str__Ó  s+   € Ø˜DŸI™I˜; hÔ/DÄSÈÏÉÃ^Ó/TÐ.UÐUVÐWÐWr%   c                 óŒ   — d| j                   › dt        t        | j                  «      «      › dt	        | j                  «      › d�S )NrÞ   rß   z, hash: rà   )rB   rÙ   r   rÜ   Úhashrá   s    r#   Ú__repr__zFile.__repr__Ö  s@   € Ø˜DŸI™I˜; hÔ/DÄSÈÏÉÃ^Ó/TÐ.UÐU]Ô^bÐcg×clÑclÓ^mÐ]nÐnoÐpÐpr%   N)rÇ   Ú
__module__Ú__qualname__rƒ   Ú__annotations__rp   rã   ræ   rw   r%   r#   rÛ   rÛ   Î  s(   … à
ƒIØ
ƒKðX˜ó Xðq˜#ô qr%   rÛ   rW   )F)é   )z3.0.0)JÚ__doc__Ú
__author__Ú__author_email__rË   r¼   r¡   Úcodecsr   Údataclassesr   Úior   Úosr   Útypingr   r	   r
   r   r   r   r   r   r   r   ÚImportErrorÚtyping_extensionsÚerrorsr   r   r   rX   r   ré   r   Ú
StreamTyperƒ   ÚStrByteTyper´   r¸   r¬   r±   rp   r$   Úintr-   r1   Úboolr4   r;   rD   rH   rP   rb   ri   rj   ru   ry   r   r‰   r�   r/   r�   r¤   r¦   r¯   r²   r¶   r¹   r¿   rÎ   rÆ   rÙ   rÛ   rw   r%   r#   Ú<module>rú      sÏ  ðò8 )Ø€
Ø/Ð ã Û Û Ý Ý !Ý "Ý ÷
÷ 
õ 
ð,å ÷ñ ð ',Ø	ˆ%�˜Ð
Ñ  e¨U°EÐ&9Ñ :¸EÀ%ÈÐPUÐBUÑ<VÐVñ'Ð ˜)ó ð -2Ø	ˆ5�%˜  uÐ,ñ-Ð  	ó ð €
Ø�C˜�OÑ$€àNÐ Ø#SÐ  ØR€ØTÐ ð-¨ð -¸ð -À5ó -ñ& *ð ¸À¹ð ÐQVó ð" 
ð ¨uó ð
 ð 
°ó 
ð!˜jð !¨Tó !ð CHñØðØ& u™~ðØ;?ðà
óð4 ð °cð ¸eó ð"0(˜zð 0(¨eó 0(ðfØðØ$<ðàóð	˜*ð 	¨ó 	ð +-€ˆˆe�C˜�JÑ Ð&Ñ	'Ó ,ðˆ%��U�
Ñ
ð  ó ð$ 
ðˆCð �Cò ó 
ðð 
ðˆEð �cò ó 
ððˆE�#�u�*Ñð  #ó ð 
ðˆCð �Cò ó 
ðð 
ðˆEð �eò ó 
ðð 
ðˆCð �Cò ó 
ððˆE�#�s˜E�/Ñ"ð  u¨S°%¨ZÑ'8ó ð�ð ˜5ó ð%�ð %˜ó %ð 3€ð˜#ð  3ð °ð ¸ó ñB�3ð B Cð B°ó Bð �Sð  ˜Tó  ð
 5<ñBØðBØ ðBØ.1ðBà	óBð 5<ñJØðJØ ðJØ.1ðJà	óJñC 3ð C°Cð CÀdó CñK Sð K°cð KÈó Kð(˜ð ( #ð (¨$ó (ð& Cð ¨Hó ð( SXñØðØ   c ™NðØ59¸#¸s¸(±^ðØKOóð6) ð )¨ó )ð ÷qð qó ñqøðs ò ,ß+Ð+ð,ús   ÁH ÈH+È*H+