§
    K˜ºhëO  ã                   óª  — U d Z dZdZddlZddlZddlZddlZddlZddlm	Z	 ddl
m
Z
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mZmZmZmZmZmZ ej        dd
…         dk    rddlmZ n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e         Z(ee)e(f         Z*dZ+dZ,dZ-dZ.dee)         dee
         fd„Z/de0de0de0fd„Z1d\de(dee2         de0fd„Z3de(de0fd„Z4de(de5fd„Z6d e0de5fd!„Z7de(ddfd"„Z8de(d#ee0         de0fd$„Z9de(d%e2de0fd&„Z:de(de0fd'„Z;d(e%d)e%de%fd*„Z<de(ddfd+„Z=i Z>eee)e0f         e0f         e&d,<   d-ee)e0f         de0fd.„Z?ed)e)de)fd/„¦   «         Z@ed)e0de)fd0„¦   «         Z@d)ee)e0f         de)fd1„Z@ed)e)de2fd2„¦   «         ZAed)e0de0fd3„¦   «         ZAed)e2de2fd4„¦   «         ZAd)ee2e)e0f         dee2e0f         fd5„ZAd6ZBd7ZCd8e2d9e2d:e2de2fd;„ZDd]d=e)d>e2ddfd?„ZEd=e)ddfd@„ZF	 d^dBe)dCe)dDe)ddfdE„ZG	 d^dBe)dCe)dDe)ddfdF„ZHd^dGe)dDe)ddfdH„ZId^dGe)dDe)ddfdI„ZJd=e)dJe)ddfdK„ZKdLe)dedMef         fdN„ZL	 d_dPe)dQee)ef         dLee)e)f         dRe5ddf
dS„ZMdTe2de)fdU„ZNe	 G dV„ dW¦  «        ¦   «         ZOe	 G dX„ dYeO¦  «        ¦   «         ZPejQ         G dZ„ d[¦  «        ¦   «         ZRdS )`z"Utility functions for PDF library.zMathieu Fenniakzbiziqe@mathieu.fenniak.neté    N)Ú	dataclass)ÚdatetimeÚtimezone)ÚDEFAULT_BUFFER_SIZEÚBytesIO)ÚSEEK_CUR)ÚIOÚAnyÚCallableÚDictÚListÚOptionalÚPatternÚTupleÚUnionÚcastÚoverloadé   )é   é
   )Ú	TypeAliasé   )ÚSTREAM_TRUNCATED_PREMATURELYÚDeprecationErrorÚPdfStreamErrorÚTransformationMatrixTypeÚCompressedTransformationMatrixz1{} is deprecated and will be removed in pypdf {}.z-{} is deprecated and was removed in pypdf {}.zA{} is deprecated and will be removed in pypdf {}. Use {} instead.z={} is deprecated and was removed in pypdf {}. Use {} instead.ÚtextÚreturnc                 ó†  — | }| €d S | d                               ¦   «         rd| z   } |                      d¦  «        r| dz  } |                      dd¦  «                             dd¦  «                             dd	¦  «        } t          |                      d¦  «        |                      d
¦  «        ¦  «        }|dk    r|t          | ¦  «        dz
  k    r| dz  } dD ]Y}	 t          j        | |¦  «        }| dd …         dk    r |                     t          j	        ¬¦  «        }|c S # t          $ r Y ŒVw xY wt          d|› �¦  «        ‚)Nr   zD:)ÚZÚzÚ0000r"   ú+r!   ú'Ú ú-é   Ú00)zD:%YzD:%Y%mzD:%Y%m%dz
D:%Y%m%d%HzD:%Y%m%d%H%MzD:%Y%m%d%H%M%SzD:%Y%m%d%H%M%S%zéûÿÿÿz+0000)ÚtzinfozCan not convert date: )ÚisdigitÚendswithÚreplaceÚmaxÚfindÚlenr   Ústrptimer   ÚutcÚ
ValueError)r   ÚorgtextÚiÚfÚds        úT/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/pypdf/_utils.pyÚparse_iso8824_dater:   S   s_  € Ø€GØ€|ØˆtØˆA„w‡‚ÑÔð Ø�d‰{ˆØ‡}‚}�ZÑ Ô ð Ø�‰ˆØ�<Š<˜˜SÑ!Ô!×)Ò)¨#¨sÑ3Ô3×;Ò;¸CÀÑDÔD€DÝˆD�IŠI�c‰NŒN˜DŸIšI c™NœNÑ+Ô+€AØˆ1‚u€u�•c˜$‘i”i !‘mÒ#Ð#Ø�‰ˆðð ð ˆð	ÝÔ! $¨Ñ*Ô*ˆAð �B�C�CŒy˜GÒ#Ð#Ø—I’I¥X¤\�IÑ2Ô2�ØˆHˆHˆHøõ ð 	ð 	ð 	ØˆHð	øøøõ Ð7¨gÐ7Ð7Ñ
8Ô
8Ð8s   ÃD!Ä!
D.Ä-D.Úheader1Úheader2c                 ó6  — d}g }| |v r(|                      |                     | ¦  «        ¦  «         ||v r(|                      |                     |¦  «        ¦  «         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Úindexr1   r4   r/   )r;   r<   ÚversionsÚpdf_header_indicess       r9   Ú_get_max_pdf_version_headerrB   s   s±   € ð€Hð ÐØ�(ÐÐØ×!Ò! (§.¢.°Ñ"9Ô"9Ñ:Ô:Ð:Ø�(ÐÐØ×!Ò! (§.¢.°Ñ"9Ô"9Ñ:Ô:Ð:Ý
ÐÑÔ !Ò#Ð#ÝÐR GÐRÐR°GÐRÐRÐRÑSÔSÐSØ•CÐ*Ñ+Ô+Ô,Ð,ó    ÚstreamÚmaxcharsc                 ó˜   — d}	 |                       d¦  «        }|                     ¦   «         s|sn||z  }t          |¦  «        |k    rnŒF|S )a;  
    Read non-whitespace characters and return them.

    Stops upon encountering whitespace or when maxchars is reached.

    Args:
        stream: The data stream from which was read.
        maxchars: The maximum number of bytes returned; by default unlimited.

    Returns:
        The data which was read.
    rC   Tr   )ÚreadÚisspacer1   )rD   rE   ÚtxtÚtoks       r9   Úread_until_whitespacerK   †   s`   € ð €CðØ�kŠk˜!‰nŒnˆØ�;Š;‰=Œ=ð 	 ð 	ØØˆs‰
ˆÝˆs‰8Œ8�xÒÐØðð €JrC   c                 ó~   — |                       d¦  «        }|t          v r|                       d¦  «        }|t          v °|S )z¾
    Find and read the next non-whitespace character (ignores whitespace).

    Args:
        stream: The data stream from which was read.

    Returns:
        The data which was read.
    r   )rG   ÚWHITESPACES©rD   rJ   s     r9   Úread_non_whitespacerO   ž   s?   € ð �+Š+�a‰.Œ.€CØ
•Ð
Ð
Ø�kŠk˜!‰nŒnˆð •Ð
Ð
à€JrC   c                 ó„   — t           d         }d}|t           v r#|                      d¦  «        }|dz  }|t           v °#|dk    S )a  
    Similar to read_non_whitespace, but return a boolean if more than one
    whitespace character was read.

    Args:
        stream: The data stream from which was read.

    Returns:
        True if more than one whitespace was skipped, otherwise return False.
    r   r   )rM   rG   )rD   rJ   Úcnts      r9   Úskip_over_whitespacerR   ®   sM   € õ �aŒ.€CØ
€CØ
•Ð
Ð
Ø�kŠk˜!‰nŒnˆØˆq‰ˆð •Ð
Ð
ð �Š7€NrC   Úvaluec                 óv   — t          t          | ¦  «        ¦  «        D ]}| ||dz   …         }|t          vr dS ŒdS )zØ
    Check if the given value consists of whitespace characters only.

    Args:
        value: The bytes to check.

    Returns:
        True if the value only has whitespace characters, otherwise return False.
    r   FT)Úranger1   rM   )rS   r?   Úcurrents      r9   Úcheck_if_whitespace_onlyrW   Á   sO   € õ •s˜5‘z”zÑ"Ô"ð ð ˆØ˜˜e a™i˜Ô(ˆØ�+Ð%Ð%Ø�5�5ð &àˆ4rC   c                 óª   — |                       d¦  «        }|                      dd¦  «         |dk    r|dvr|                       d¦  «        }|dv°d S d S d S )Nr   éÿÿÿÿó   %)ó   
ó   )rG   ÚseekrN   s     r9   Úskip_over_commentr^   Ò   sh   € Ø
�+Š+�a‰.Œ.€CØ
‡K‚K��AÑÔÐØ
ˆd‚{€{Ø˜Ð'Ð'Ø—+’+˜a‘.”.ˆCð ˜Ð'Ð'Ð'Ð'ð €{Ø'Ð'rC   Úregexc                 óN  — d}	 |                       d¦  «        }|s|S |                     ||z   ¦  «        }|�h|                      |                     ¦   «         t	          |¦  «        t	          |¦  «        z   z
  d¦  «         ||z   d|                     ¦   «         …         }n||z  }Œ¡|S )zé
    Read until the regular expression pattern matched (ignore the match).
    Treats EOF on the underlying stream as the end of the token to be matched.

    Args:
        regex: re.Pattern

    Returns:
        The read bytes.
    rC   Té   Nr   )rG   Úsearchr]   Ústartr1   )rD   r_   ÚnamerJ   Úms        r9   Úread_until_regexrf   Ú   s¨   € ð €Dð	Ø�kŠk˜"‰oŒoˆØð 	ØˆKØ�LŠL˜ ™Ñ$Ô$ˆØˆ=Ø�KŠK˜Ÿš™	œ	¥S¨¡Y¤Yµ°S±´Ñ%9Ñ:¸AÑ>Ô>Ð>Ø˜3‘J  !§'¢'¡)¤) Ô,ˆDØØ�‰ˆð	ð €KrC   Úto_readc                 óî   — |                       ¦   «         |k     rt          d¦  «        ‚|                      | t          ¦  «         |                      |¦  «        }|                      | t          ¦  «         |S )a  
    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.

    Args:
        stream:
        to_read:

    Returns:
        The data which was read.
    z!Could not read malformed PDF file)Útellr   r]   r   rG   )rD   rg   rG   s      r9   Úread_block_backwardsrj   ó   sh   € ð ‡{‚{�}„}�wÒÐÝÐ@ÑAÔAÐAà
‡K‚K���(Ñ#Ô#Ð#Ø�;Š;�wÑÔ€Dà
‡K‚K���(Ñ#Ô#Ð#Ø€KrC   c                 ó¦  — g }d}|                       ¦   «         dk    rt          t          ¦  «        ‚	 t          t          |                       ¦   «         ¦  «        }|dk    rnÕt          | |¦  «        }t          |¦  «        dz
  }|s-|dk    r||         dvr|dz  }|dk    r
||         dv°|dk    rd}|rF|                     ||dz   d…         ¦  «         |dk    r||         dv r|dz  }|dk    r
||         dv °n|                     |¦  «         |dk    r|                      |dz   t          ¦  «         n�Œd 
                    |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.

    Args:
        stream: StreamType:

    Returns:
        The data which was read.
    Fr   Tr   s   
NrC   rY   )ri   r   r   Úminr   rj   r1   r>   r]   r   Újoin)rD   Úline_contentÚ
found_crlfrg   ÚblockÚidxs         r9   Úread_previous_linerr     s‘  € ð  €LØ€JØ‡{‚{�}„}˜ÒÐÝÕ9Ñ:Ô:Ð:ð ÝÕ)¨6¯;ª;©=¬=Ñ9Ô9ˆØ�aŠ<ˆ<Øõ % V¨WÑ5Ô5ˆÝ�%‰jŒj˜1‰nˆØð 	"ð ˜’(�(˜u Sœz°Ð8Ð8Ø�q‘�ð ˜’(�(˜u Sœz°Ð8Ð8à�aŠxˆxØ!�
Øð 	'ð
 ×Ò  c¨A¡g i iÔ 0Ñ1Ô1Ð1à˜’(�(˜u Sœz¨WÐ4Ð4Ø�q‘�ð ˜’(�(˜u Sœz¨WÐ4Ð4øð
 ×Ò Ñ&Ô&Ð&Ø�!Š8ˆ8ð �KŠK˜˜a™¥Ñ*Ô*Ð*ØñA ðD �8Š8�L   2 Ô&Ñ'Ô'Ð'rC   ÚaÚbc                 ó:   ‡— t          ˆfd„| D ¦   «         ¦  «        S )Nc              3   ó^   •‡K  — | ]&Št          ˆfd „t          ‰Ž D ¦   «         ¦  «        V — Œ'dS )c              3   óf   •K  — | ]+}t          d „ t          ‰|¦  «        D ¦   «         ¦  «        V — Œ,dS )c              3   óZ   K  — | ]&\  }}t          |¦  «        t          |¦  «        z  V — Œ'd S ©N)Úfloat)Ú.0r6   Újs      r9   ú	<genexpr>z6matrix_multiply.<locals>.<genexpr>.<genexpr>.<genexpr>H  s7   è è € Ð@Ð@©$¨!¨Q•%˜‘(”(�U 1™XœXÑ%Ð@Ð@Ð@Ð@Ð@Ð@rC   N)ÚsumÚzip)r{   ÚcolÚrows     €r9   r}   z,matrix_multiply.<locals>.<genexpr>.<genexpr>H  sB   øè è € ÐTÐTÀS�cÐ@Ð@µ#°c¸3±-´-Ð@Ñ@Ô@Ñ@Ô@ÐTÐTÐTÐTÐTÐTrC   N)Útupler   )r{   r�   rt   s    @€r9   r}   z"matrix_multiply.<locals>.<genexpr>G  sZ   øøè è € ð ð àõ 	ÐTÐTÐTÐTÍCÐQRÈGÐTÑTÔTÑTÔTðð ð ð ð ð rC   )r‚   )rs   rt   s    `r9   Úmatrix_multiplyrƒ   D  s=   ø€ õ ð ð ð ð àðñ ô ñ ô ð rC   c                 ó€  — d}|                       | d¦  «         t          dd¦  «        5 }|                     |                      |¦  «        ¦  «         |                     d¦  «         |                     |                      |¦  «        ¦  «         ddd¦  «         n# 1 swxY w Y   |                       | d¦  «         dS )z5Create text file showing current location in context.iˆ  r   zpypdf_pdfLocation.txtÚwbs   HEREN)r]   ÚopenÚwriterG   )rD   ÚradiusÚ	output_fhs      r9   Úmark_locationrŠ   M  sî   € ð €FØ
‡K‚K��˜ÑÔÐÝ	Ð% tÑ	,Ô	,ð -°	Ø�Š˜Ÿš FÑ+Ô+Ñ,Ô,Ð,Ø�Š˜Ñ Ô Ð Ø�Š˜Ÿš FÑ+Ô+Ñ,Ô,Ð,ð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -ð ‡K‚K��˜ÑÔÐÐÐs   ªA&BÂB Â#B ÚB_CACHEÚsc                 ó4  — t          | t          ¦  «        r| S t          }| |v r||          S 	 |                      d¦  «        }t	          | ¦  «        dk     r||| <   |S # t
          $ r2 |                      d¦  «        }t	          | ¦  «        dk     r||| <   |cY S w xY w)Núlatin-1r   zutf-8)Ú
isinstanceÚbytesr‹   Úencoder1   Ú	Exception)rŒ   ÚbcÚrs      r9   Úb_r•   \  s°   € Ý�!•UÑÔð ØˆÝ	€BØˆB€w€wØ�!Œuˆð	Ø�HŠH�YÑÔˆÝˆq‰6Œ6�AŠ:ˆ:ØˆBˆq‰EØˆøÝð ð ð Ø�HŠH�WÑÔˆÝˆq‰6Œ6�AŠ:ˆ:ØˆBˆq‰EØˆˆˆð	øøøs   ¬.A Á9BÂBc                 ó   — d S ry   © ©rt   s    r9   Ústr_r™   n  ó   € à€CrC   c                 ó   — d S ry   r—   r˜   s    r9   r™   r™   s  rš   rC   c                 óZ   — t          | t          ¦  «        r|                      d¦  «        S | S )NrŽ   )r�   r�   Údecoder˜   s    r9   r™   r™   x  s+   € Ý�!•UÑÔð Ø�xŠx˜	Ñ"Ô"Ð"àˆrC   c                 ó   — d S ry   r—   r˜   s    r9   Úord_rŸ     rš   rC   c                 ó   — d S ry   r—   r˜   s    r9   rŸ   rŸ   „  rš   rC   c                 ó   — d S ry   r—   r˜   s    r9   rŸ   rŸ   ‰  rš   rC   c                 óN   — t          | t          ¦  «        rt          | ¦  «        S | S ry   )r�   ÚstrÚordr˜   s    r9   rŸ   rŸ   Ž  s$   € Ý�!•SÑÔð Ý�1‰vŒvˆØ€HrC   )ó    r[   r\   ó   	ó    s   [ 
	 ]ÚleftÚupÚup_leftc                 ó®   — | |z   |z
  }t          || z
  ¦  «        }t          ||z
  ¦  «        }t          ||z
  ¦  «        }||k    r||k    r| S ||k    r|S |S ry   )Úabs)r¨   r©   rª   ÚpÚ	dist_leftÚdist_upÚdist_up_lefts          r9   Úpaeth_predictorr±   ˜  sn   € Øˆr‰	�GÑ€AÝ�A˜‘H‘”€IÝ�!�b‘&‰kŒk€GÝ�q˜7‘{Ñ#Ô#€Là�GÒÐ 	¨\Ò 9Ð 9ØˆØ	�LÒ	 Ð	 Øˆ	àˆrC   r   ÚmsgÚ
stacklevelc                 ó>   — t          j        | t          |¬¦  «         d S )N)r³   )ÚwarningsÚwarnÚDeprecationWarning)r²   r³   s     r9   Ú	deprecater¸   ¦  s    € Ý„M�#Õ)°jÐAÑAÔAÐAÐAÐArC   c                 ó    — t          | ¦  «        ‚ry   )r   )r²   s    r9   Údeprecationrº   ª  s   € Ý
˜3Ñ
Ô
ÐrC   ú3.0.0Úold_nameÚnew_nameÚ
removed_inc                 óZ   — t          t                               | ||¦  «        d¦  «         dS )zIRaise an exception that a feature will be removed, but has a replacement.é   N)r¸   ÚDEPR_MSGÚformat©r¼   r½   r¾   s      r9   Údeprecate_with_replacementrÄ   ®  s*   € õ �h�oŠo˜h¨
°HÑ=Ô=¸qÑAÔAÐAÐAÐArC   c                 óX   — t          t                               | ||¦  «        ¦  «         dS )zMRaise an exception that a feature was already removed, but has a replacement.N)rº   ÚDEPR_MSG_HAPPENEDrÂ   rÃ   s      r9   Údeprecation_with_replacementrÇ   µ  s+   € õ Õ!×(Ò(¨°:¸xÑHÔHÑIÔIÐIÐIÐIrC   rd   c                 óX   — t          t                               | |¦  «        d¦  «         dS )zFRaise an exception that a feature will be removed without replacement.rÀ   N)r¸   ÚDEPR_MSG_NO_REPLACEMENTrÂ   ©rd   r¾   s     r9   Údeprecate_no_replacementrË   ¼  s)   € åÕ%×,Ò,¨T°:Ñ>Ô>ÀÑBÔBÐBÐBÐBrC   c                 óV   — t          t                               | |¦  «        ¦  «         dS )zJRaise an exception that a feature was already removed without replacement.N)rº   Ú DEPR_MSG_NO_REPLACEMENT_HAPPENEDrÂ   rÊ   s     r9   Údeprecation_no_replacementrÎ   Á  s'   € åÕ0×7Ò7¸¸jÑIÔIÑJÔJÐJÐJÐJrC   Úsrcc                 óT   — t          j        |¦  «                             | ¦  «         dS )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 pypdf, e.g. a non-compliant PDF being read in a way that
      pypdf could apply a robustness fix to still read it. This applies mainly
      to strict=False mode.
    N)ÚloggingÚ	getLoggerÚwarning)r²   rÏ   s     r9   Úlogger_warningrÔ   Æ  s)   € õ  Ô�cÑÔ×"Ò" 3Ñ'Ô'Ð'Ð'Ð'rC   Úaliases.c                  óJ   ‡ — dt           dt          f         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.
    Úfunc.r   c                 óv   •‡ — t          j        ‰ ¦  «        dt          dt          dt          fˆˆ fd„¦   «         }|S )NÚargsÚkwargsr   c                  óD   •— t          ‰j        |‰d¬¦  «          ‰| i |¤ŽS )NT)Úfail)Úrename_kwargsÚ__name__)rÙ   rÚ   rÕ   r×   s     €€r9   Úwrapperz9deprecation_bookmark.<locals>.decoration.<locals>.wrapperã  s1   ø€ å˜$œ-¨°¸tÐDÑDÔDÐDØ�4˜Ð( Ð(Ð(Ð(rC   )Ú	functoolsÚwrapsr
   )r×   rß   rÕ   s   ` €r9   Ú
decorationz(deprecation_bookmark.<locals>.decorationâ  sX   øø€ Ý	Œ˜Ñ	Ô	ð	)�3ð 	)­#ð 	)µ#ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)ñ 
Ô	ð	)ð ˆrC   )r   r
   )rÕ   râ   s   ` r9   Údeprecation_bookmarkrã   Ù  s@   ø€ ð� #¥s (Ô+ð µð ð ð ð ð ð ð ÐrC   FÚ	func_namerÚ   rÜ   c                 ó&  — |                      ¦   «         D ]{\  }}||v rr|rt          |› d|› d�¦  «        ‚||v rt          | › d|› d|› d|› d|› d�
¦  «        ‚|                     |¦  «        ||<   t	          j        |› d|› d�t          ¬¦  «         Œ|d	S )
z¤
    Helper function to deprecate arguments.

    Args:
        func_name: Name of the function to be deprecated
        kwargs:
        aliases:
        fail:
    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         r9   rÝ   rÝ   í  s  € ð &Ÿmšm™oœoð ð Ñˆ�(Ø�vÐÐØð Ý&ØÐVÐVÀHÐVÐVÐVñô ð ð ˜6Ð!Ð!ÝØ ð /ð /°ð /ð /Àð /ð /Ø$,ð/ð /à#ð/ð /ð /ñô ð ð
  &Ÿzšz¨(Ñ3Ô3ˆF�8ÑÝŒMàÐVÐVÀHÐVÐVÐVå+ð	ñ ô ð øðð rC   r�   c                 óf   — | 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 GBr—   )r�   s    r9   Ú_human_readable_bytesrî     sk   € Øˆu‚}€}ØˆˆˆÐØ	�ŠˆØ˜%‘-Ð(Ð(Ð(Ð(Ð(Ø	�ŠˆØ˜%‘-Ð(Ð(Ð(Ð(Ð(à˜%‘-Ð(Ð(Ð(Ð(Ð(rC   c                   ó|   — e Zd ZU ddlmZ eed<   eed<   dZe	e
         ed<   dZe	e         ed<   defd	„Zdefd
„ZdS )ÚFiler   ©ÚIndirectObjectrd   ÚdataNÚimageÚindirect_referencer   c           	      ót   — | j         j        › d| j        › dt          t	          | j        ¦  «        ¦  «        › d�S )Nz(name=z, data: ú))Ú	__class__rÞ   rd   rî   r1   ró   ©Úselfs    r9   Ú__str__zFile.__str__"  s>   € Ø”.Ô)ÐlÐl°´ÐlÐlÕDYÕZ]Ð^bÔ^gÑZhÔZhÑDiÔDiÐlÐlÐlÐlrC   c                 ól   — |                       ¦   «         d d…         dt          | j        ¦  «        › d�z   S )NrY   z, hash: r÷   )rû   Úhashró   rù   s    r9   Ú__repr__zFile.__repr__%  s2   € Ø�|Š|‰~Œ~˜c˜r˜cÔ"Ð%Bµ°T´Y±´Ð%BÐ%BÐ%BÑBÐBrC   )rÞ   Ú
__module__Ú__qualname__Úgenericrò   r£   Ú__annotations__r�   rô   r   r
   rõ   rû   rþ   r—   rC   r9   rð   rð     s¦   € € € € € € à'Ð'Ð'Ð'Ð'Ð'à
€I€I�IØ
€K€K�KØ€Eˆ8�CŒ=ÐÐÑØ37Ð˜ Ô0Ð7Ð7Ñ7ðm˜ð mð mð mð mðC˜#ð Cð Cð Cð Cð Cð CrC   rð   c                   ód   — e Zd ZU ddlmZ dZee         ed<   dZ	ee         ed<   dededdfd	„Z
dS )
Ú	ImageFiler   rñ   Nrô   rõ   Ú	new_imagerÚ   r   c                 óv  — ddl m} ddlm} ddlm} ddlm}m} | j	        €t          d¦  «        ‚t          | j	        j        d	¦  «        st          d
¦  «        ‚t          ||j        ¦  «        st          d¦  «        ‚t          ¦   «         } |j        |dfi |¤Ž  ||¦  «        }	|	j        d         j        d         j	        €J ‚|	j        d         j        d         j	                             ¦   «         | j	        j        j        | j	        j        dz
  <   | j	        t+          || j	                             ¦   «         ¦  «        _	         |t+          || j	                             ¦   «         ¦  «        ¦  «        \  }
}}|
€J ‚| j        d| j                             d¦  «        …         |
z   | _        || _        || _        dS )aã  
        Replace the Image with a new PIL image.

        Args:
            new_image (Image.Image): The new PIL image to replace the existing image.
            **kwargs: Additional keyword arguments to pass to `Image.Image.save()`.

        Raises:
            TypeError: If the image is inline or in a PdfReader.
            TypeError: If the image does not belong to a PdfWriter.
            TypeError: If `new_image` is not a PIL Image.

        Note:
            This method replaces the existing image with a new image.
            It is not allowed for inline images or images within a PdfReader.
            The `kwargs` parameter allows passing additional parameters
            to `Image.Image.save()`, such as quality.
        r   )ÚImager   )Ú	PdfReader)Ú_xobj_to_image)ÚDictionaryObjectÚ	PdfObjectNzCan not update an inline imageÚ_id_translatedz4Can not update an image not belonging to a PdfWriterznew_image shall be a PIL ImageÚPDFú.)ÚPILr  Ú_readerr  Úfiltersr	  r  r
  r  rõ   ré   ÚhasattrÚpdfr�   r   ÚsaveÚpagesÚimagesÚ
get_objectÚ_objectsÚidnumr   rd   Úrfindró   rô   )rú   r  rÚ   r  r  r	  r
  r  rt   ÚreaderÚ	extensionÚbyte_streamÚimgs                r9   r.   zImageFile.replace0  sï  € ð& 	ÐÐÐÐÐà&Ð&Ð&Ð&Ð&Ð&ð 	,Ð+Ð+Ð+Ð+Ð+Ø8Ð8Ð8Ð8Ð8Ð8Ð8Ð8àÔ"Ð*ÝÐ<Ñ=Ô=Ð=Ý�tÔ.Ô2Ð4DÑEÔEð 	TÝÐRÑSÔSÐSÝ˜) U¤[Ñ1Ô1ð 	>ÝÐ<Ñ=Ô=Ð=Ý‰IŒIˆØˆ	Œ�q˜%Ð*Ð* 6Ð*Ð*Ð*Ø�˜1‘”ˆØŒ|˜AŒÔ% aÔ(Ô;ÐGÐGÐGàŒL˜ŒOÔ" 1Ô%Ô8×CÒCÑEÔEð 	ÔÔ#Ô,¨TÔ-DÔ-JÈQÑ-NÑOð
  $Ô6õ 	Ø�tÔ.×9Ò9Ñ;Ô;ñ	
ô 	
ä
à&4 nÝÐ! 4Ô#:×#EÒ#EÑ#GÔ#GÑHÔHñ'
ô '
Ñ#ˆ	�; ð Ð$Ð$Ð$Ø”IÐ4 ¤	§¢°Ñ 4Ô 4Ð4Ô5¸	ÑAˆŒ	ØˆŒ	ØˆŒ
ˆ
ˆ
rC   )rÞ   rÿ   r   r  rò   rô   r   r
   r  rõ   r.   r—   rC   r9   r  r  )  s{   € € € € € € à'Ð'Ð'Ð'Ð'Ð'à€Eˆ8�CŒ=ÐÐÑØ37Ð˜ Ô0Ð7Ð7Ñ7ð2 ð 2°ð 2¸ð 2ð 2ð 2ð 2ð 2ð 2rC   r  c                   óŠ   — e Zd Z ej        d¦  «        Zdeddfd„Zdedee	e
ef                  fd„Zdedefd„Zdedefd	„ZdS )
ÚVersionz^(\d+)(.*)$Úversion_strr   Nc                 óH   — || _         |                      |¦  «        | _        d S ry   )r!  Ú_parse_versionÚ
components)rú   r!  s     r9   Ú__init__zVersion.__init__i  s#   € Ø&ˆÔØ×-Ò-¨kÑ:Ô:ˆŒˆˆrC   c                 óT  — |                      d¦  «        }g }|D ]�}t          j                             |¦  «        }|s|                     d|f¦  «         Œ;|                     d¦  «        }|                     d¦  «        }|€d}|                     t          |¦  «        |f¦  «         ŒŽ|S )Nr  r   r   r   )Úsplitr   ÚCOMPONENT_PATTERNÚmatchr>   ÚgroupÚint)rú   r!  r$  Úparsed_componentsÚ	componentr)  Úinteger_prefixÚsuffixs           r9   r#  zVersion._parse_versionm  s¸   € Ø ×&Ò& sÑ+Ô+ˆ
ØÐØ#ð 		Dð 		DˆIÝÔ-×3Ò3°IÑ>Ô>ˆEØð Ø!×(Ò(¨!¨Y¨Ñ8Ô8Ð8ØØ"Ÿ[š[¨™^œ^ˆNØ—[’[ ‘^”^ˆFØÐ%Ø!"�Ø×$Ò$¥c¨.Ñ&9Ô&9¸6Ð%BÑCÔCÐCÐCØ Ð rC   Úotherc                 óP   — t          |t          ¦  «        sdS | j        |j        k    S )NF)r�   r   r$  )rú   r0  s     r9   Ú__eq__zVersion.__eq__|  s)   € Ý˜%¥Ñ)Ô)ð 	Ø�5ØŒ %Ô"2Ò2Ð2rC   c                 óÒ  — t          |t          ¦  «        st          dt          |¦  «        › �¦  «        ‚t	          t          | j        ¦  «        t          |j        ¦  «        ¦  «        }t          |¦  «        D ]F}| j        |         \  }}|j        |         \  }}||k     r dS ||k    r dS ||k     r dS ||k    r dS ŒGt          | j        ¦  «        t          |j        ¦  «        k     S )Nz#Version cannot be compared against TF)r�   r   r4   Útyperl   r1   r$  rU   )rú   r0  Úmin_lenr6   Ú
self_valueÚself_suffixÚother_valueÚother_suffixs           r9   Ú__lt__zVersion.__lt__�  sý   € Ý˜%¥Ñ)Ô)ð 	RÝÐPÅ4ÈÁ;Ä;ÐPÐPÑQÔQÐQÝ•c˜$œ/Ñ*Ô*­C°Ô0@Ñ,AÔ,AÑBÔBˆÝ�w‘”ð 	ð 	ˆAØ&*¤o°aÔ&8Ñ#ˆJ˜Ø(-Ô(8¸Ô(;Ñ%ˆK˜à˜KÒ'Ð'Ø�t�tØ˜kÒ)Ð)Ø�u�uà˜\Ò)Ð)Ø�t�tØ˜|Ò+Ð+Ø�u�uð ,õ �4”?Ñ#Ô#¥c¨%Ô*:Ñ&;Ô&;Ò;Ð;rC   )rÞ   rÿ   r   ÚreÚcompiler(  r£   r%  r   r   r+  r#  ÚobjectÚboolr2  r
   r:  r—   rC   r9   r   r   e  s»   € € € € € à"˜œ
 >Ñ2Ô2Ðð; Cð ;¨Dð ;ð ;ð ;ð ;ð!¨#ð !°$°u¸SÀ#¸X´Ô2Gð !ð !ð !ð !ð3˜Fð 3 tð 3ð 3ð 3ð 3ð
<˜Cð < Dð <ð <ð <ð <ð <ð <rC   r   ry   )r   )r»   )F)SÚ__doc__Ú
__author__Ú__author_email__rà   rÑ   r;  Úsysrµ   Údataclassesr   r   r   Úior   r   Úosr   Útypingr	   r
   r   r   r   r   r   r   r   r   r   Úversion_infor   Útyping_extensionsÚerrorsr   r   r   rz   r   r  r   Ú
StreamTyper£   ÚStrByteTyperÉ   rÍ   rÁ   rÆ   r:   r�   rB   r+  rK   rO   r>  rR   rW   r^   rf   rj   rr   rƒ   rŠ   r‹   r•   r™   rŸ   rM   ÚWHITESPACES_AS_REGEXPr±   r¸   rº   rÄ   rÇ   rË   rÎ   rÔ   rã   rÝ   rî   rð   r  Útotal_orderingr   r—   rC   r9   ú<module>rN     s¿  ðð8 )Ð (Ð (Ø€
Ø/Ð à Ð Ð Ð Ø €€€Ø 	€	€	€	Ø 
€
€
€
Ø €€€Ø !Ð !Ð !Ð !Ð !Ð !Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð Ô�B�Q�BÔ˜7Ò"Ð"à Ð Ð Ð Ð Ð Ð à+Ð+Ð+Ð+Ð+Ð+ðð ð ð ð ð ð ð ð ð ð ',Ø	ˆ%�˜Ð
Ô  e¨U°EÐ&9Ô :¸EÀ%ÈÐPUÐBUÔ<VÐVô'Ð ˜)ð ð ñ ð -2Ø	ˆ5�%˜  uÐ,ô-Ð  	ð ð ñ ð �ŒW€
Ø�C˜�OÔ$€àMÐ Ø#RÐ  ØN€ØSÐ ð9˜X cœ]ð 9¨x¸Ô/Að 9ð 9ð 9ð 9ð@-¨ð -¸ð -À5ð -ð -ð -ð -ð&ð  *ð ¸À¼ð ÐQVð ð ð ð ð0 
ð ¨uð ð ð ð ð  ð °ð ð ð ð ð& Eð ¨dð ð ð ð ð"!˜jð !¨Tð !ð !ð !ð !ð˜Zð °¸´ð À5ð ð ð ð ð2 ð °cð ¸eð ð ð ð ð06(˜zð 6(¨eð 6(ð 6(ð 6(ð 6(ðrØðØ$<ðàðð ð ð ð	˜*ð 	¨ð 	ð 	ð 	ð 	ð +-€ˆˆe�C˜�JÔ Ð&Ô	'Ð ,Ð ,Ñ ,ðˆ%��U�
Ô
ð  ð ð ð ð ð$ 
ðˆCð �Cð ð ð ñ 
„ðð 
ðˆEð �cð ð ð ñ 
„ððˆE�#�u�*Ôð  #ð ð ð ð ð 
ðˆCð �Cð ð ð ñ 
„ðð 
ðˆEð �eð ð ð ñ 
„ðð 
ðˆCð �Cð ð ð ñ 
„ððˆE�#�s˜E�/Ô"ð  u¨S°%¨ZÔ'8ð ð ð ð ð 3€Ø(Ð ð˜#ð  3ð °ð ¸ð ð ð ð ðBð B�3ð B Cð B°ð Bð Bð Bð Bð �Sð  ˜Tð  ð  ð  ð  ð
 5<ðBð BØðBØ ðBØ.1ðBà	ðBð Bð Bð Bð 5<ðJð JØðJØ ðJØ.1ðJà	ðJð Jð Jð JðCð C 3ð C°Cð CÀdð Cð Cð Cð Cð
Kð K Sð K°cð KÈð Kð Kð Kð Kð
(˜ð ( #ð (¨$ð (ð (ð (ð (ð& Cð ¨H°S¸#°XÔ,>ð ð ð ð ð* SXðð ØðØ   c œNðØ59¸#¸s¸(´^ðØKOðà	ðð ð ð ðB) ð )¨ð )ð )ð )ð )ð ðCð Cð Cð Cð Cñ Cô Cñ „ðCð ð8ð 8ð 8ð 8ð 8�ñ 8ô 8ñ „ð8ðv Ôð-<ð -<ð -<ð -<ð -<ñ -<ô -<ñ Ôð-<ð -<ð -<rC   