Ë
    vl�j”  ã                   óD  — d dl Z d dlZd dlZd dlZd dlmZmZmZmZm	Z	 d dl
mZmZmZmZ d dlmZmZmZ d dlmZ d dlmZmZmZ d dlmZ d dlmZ d d	lmZ d d
lm Z  d dl!m"Z"m#Z#m$Z$m%Z% d dl&m'Z'm(Z(m)Z) d dl*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3 d dl4m5Z5 d dl6m7Z7m8Z8m9Z9 d dl:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@  ej‚                  eB«      ZC G d„ de)«      ZD G d„ deE«      ZF G d„ de"«      ZG G d„ de"«      ZH G d„ de"«      ZI G d„ de"«      ZJ G d„ deJ«      ZK G d„ d eL«      ZM G d!„ d"eL«      ZN G d#„ d$eJ«      ZO e8d%«      ZP e8d&«      ZQ e8d'«      ZR G d(„ d)«      ZS G d*„ d+eS«      ZT G d,„ d-eT«      ZU G d.„ d/eS«      ZV G d0„ d1«      ZW G d2„ d3eW«      ZX G d4„ d5eX«      ZY G d6„ d7«      ZZ G d8„ d9e «      Z[y):é    N)ÚCallableÚIterableÚIteratorÚKeysViewÚSequence)Úmd5Úsha256Úsha384Úsha512)ÚAnyÚClassVarÚcast)Údefault_backend)ÚCipherÚ
algorithmsÚmodes)Úsettings)ÚArcfour)Úsafe_int)Ú
NumberTree)ÚPDFExceptionÚPDFKeyErrorÚPDFObjectNotFoundÚPDFTypeError)Ú	PDFParserÚPDFStreamParserÚPDFSyntaxError)	ÚDecipherCallableÚ	PDFStreamÚdecipher_allÚ
dict_valueÚ	int_valueÚ
list_valueÚ	str_valueÚstream_valueÚ
uint_value)ÚPSEOF)ÚKWDÚLITÚliteral_name)ÚchoplistÚdecode_textÚformat_int_alphaÚformat_int_romanÚnunpackÚ	unpad_aesc                   ó   — e Zd Zy)ÚPDFNoValidXRefN©Ú__name__Ú
__module__Ú__qualname__© ó    úJ/var/www/html/pp/venv/lib/python3.12/site-packages/pdfminer/pdfdocument.pyr2   r2   4   ó   „ Ør8   r2   c                   ó   — e Zd ZdZy)ÚPDFNoValidXRefWarningztLegacy warning for missing xref.

    Not used anymore because warnings.warn is replaced by logger.Logger.warn.
    N©r4   r5   r6   Ú__doc__r7   r8   r9   r<   r<   8   ó   „ òr8   r<   c                   ó   — e Zd Zy)ÚPDFNoOutlinesNr3   r7   r8   r9   rA   rA   ?   r:   r8   rA   c                   ó   — e Zd Zy)ÚPDFNoPageLabelsNr3   r7   r8   r9   rC   rC   C   r:   r8   rC   c                   ó   — e Zd Zy)ÚPDFDestinationNotFoundNr3   r7   r8   r9   rE   rE   G   r:   r8   rE   c                   ó   — e Zd Zy)ÚPDFEncryptionErrorNr3   r7   r8   r9   rG   rG   K   r:   r8   rG   c                   ó   — e Zd Zy)ÚPDFPasswordIncorrectNr3   r7   r8   r9   rI   rI   O   r:   r8   rI   c                   ó   — e Zd ZdZy)ÚPDFEncryptionWarningzyLegacy warning for failed decryption.

    Not used anymore because warnings.warn is replaced by logger.Logger.warn.
    Nr=   r7   r8   r9   rK   rK   S   r?   r8   rK   c                   ó   — e Zd ZdZy)Ú"PDFTextExtractionNotAllowedWarningzŠLegacy warning for PDF that does not allow extraction.

    Not used anymore because warnings.warn is replaced by logger.Logger.warn.
    Nr=   r7   r8   r9   rM   rM   Z   r?   r8   rM   c                   ó   — e Zd Zy)ÚPDFTextExtractionNotAllowedNr3   r7   r8   r9   rO   rO   a   r:   r8   rO   ÚObjStmÚXRefÚCatalogc                   óf   — e Zd Zdeeef   fd„Zdee   fd„Z	dede
edz  eef   fd„Zdeddfd„Zy)	ÚPDFBaseXRefÚreturnc                 ó   — t         ‚©N©ÚNotImplementedError©Úselfs    r9   Úget_trailerzPDFBaseXRef.get_trailerl   ó   € Ü!Ð!r8   c                 ó   — g S rW   r7   rZ   s    r9   Ú
get_objidszPDFBaseXRef.get_objidso   s   € Øˆ	r8   ÚobjidNc                 ó   — t        |«      ‚rW   )r   ©r[   r`   s     r9   Úget_poszPDFBaseXRef.get_posu   s   € Ü˜%Ó Ð r8   Úparserc                 ó   — t         ‚rW   rX   )r[   rd   s     r9   ÚloadzPDFBaseXRef.loadx   r]   r8   )r4   r5   r6   ÚdictÚstrr   r\   r   Úintr_   Útuplerc   r   rf   r7   r8   r9   rT   rT   k   s\   „ ð"˜T # s (™^ó "ð˜H S™Mó ð!˜Sð ! U¨3°©:°s¸CÐ+?Ñ%@ó !ð"˜9ð "¨ô "r8   rT   c                   óŠ   — e Zd Zdd„Zdefd„Zdeddfd„Zdeddfd„Zde	ee
f   fd„Zdee   fd	„Zd
edeedz  eef   fd„Zy)ÚPDFXRefrU   Nc                 ó    — i | _         i | _        y rW   )ÚoffsetsÚtrailerrZ   s    r9   Ú__init__zPDFXRef.__init__}   s   € Ø?AˆŒØ')ˆ�r8   c                 ó>   — d| j                   j                  «       ›d�S )Nz<PDFXRef: offsets=ú>©rn   ÚkeysrZ   s    r9   Ú__repr__zPDFXRef.__repr__�   s   € Ø# D§L¡L×$5Ñ$5Ó$7Ð#:¸!Ð<Ð<r8   rd   c                 óÄ  — 	 	 |j                  «       \  }}|j                  «       }|sŒ(	 |j	                  d«      r|j                  |«       �n|j                  d«      }t        |«      dk7  rd|›d|›�}t        |«      ‚	 t        t        |«      \  }}t        |||z   «      D ]©  }		 |j                  «       \  }
}|j                  «       }|j                  d«      }t        |«      dk7  rd	|›d
|›�}t        |«      ‚|\  }}}|dk7  rŒet        |«      }t        |«      }|�|�d ||f| j                  |	<   Œ’t        j                  d|	||«       Œ« �ŒOt        j!                  d| j                  «       | j#                  |«       y # t        $ r}t        d«      |‚d }~ww xY w# t        $ r}d|›d|›�}t        |«      |‚d }~ww xY w# t        $ r}t        d«      |‚d }~ww xY w)Nz Unexpected EOF - file corrupted?ó   traileró    é   zTrailer not found: z: line=zInvalid line: é   zInvalid XRef format: z, line=ó   nzcNot adding object %s to xref because position %r or generation number %r cannot be parsed as an intzxref objects: %r)ÚnextlineÚstripr'   r2   Ú
startswithÚseekÚsplitÚlenÚmapri   Ú
ValueErrorÚranger   rn   ÚlogÚwarningÚdebugÚload_trailer)r[   rd   ÚposÚlineÚerrÚfÚ	error_msgÚstartÚnobjsr`   Ú_Úpos_bÚgenno_bÚuse_bÚpos_iÚgenno_is                   r9   rf   zPDFXRef.load„   s  € ØðRØ$Ÿo™oÓ/‘��dØ—z‘z“|�ÙØð ð �‰˜zÔ*Ø—‘˜CÔ ÙØ—
‘
˜4Ó ˆAÜ�1‹v˜Š{Ø1°&°¸7À4À(ÐK�	Ü$ YÓ/Ð/ð9Ü!$¤S¨!£‘�˜ô ˜u e¨e¡mÓ4ò �ðVØ &§¡Ó 1‘I�Q˜ØŸ:™:›<�Dð —J‘J˜tÓ$�Ü�q“6˜Q’;Ø"7¸°zÀÈÈÐ Q�IÜ(¨Ó3Ð3Ø*+Ñ'�˜ Ø˜D’=Øä  ›�Ü" 7Ó+�ØÐ$¨Ð)<Ø+/°¸Ð*@�D—L‘L Ò'ä—K‘KðMàØØõð'ñ) ô^ 	�	‰	Ð$ d§l¡lÔ3Ø×Ñ˜&Õ!øôU ò RÜ$Ð%GÓHÈcÐQûðRûô ò 9Ø,¨V¨J°g¸d¸XÐF�	Ü$ YÓ/°SÐ8ûð9ûô ò VÜ(Ð)KÓLÐRUÐUûðVúsG   ƒ%F ÂF  Â'#GÆ	FÆFÆFÆ 	GÆ)F=Æ=GÇ	GÇGÇGc                 ó€  — 	 |j                  «       \  }}|t        d«      u sJ t        |«      «       ‚|j                  «       \  }}| j                  j                  t        |«      «       t        j                  d| j                  «       y # t        $ r* |j                  d«      }|st        d«      d ‚|d   \  }}Y Œww xY w)Nrw   é   zUnexpected EOF - file corruptedr   z
trailer=%r)Ú	nexttokenr(   rh   Ú
nextobjectr'   Úpopr2   ro   Úupdater!   r…   r‡   )r[   rd   r�   ÚkwdÚdicÚxs         r9   rˆ   zPDFXRef.load_trailer·   s¬   € ð	Ø×'Ñ'Ó)‰HˆQ�Øœ#˜j›/Ñ)Ð3¬3¨s«8Ó3Ð)Ø×(Ñ(Ó*‰HˆQ�ð 	�‰×ÑœJ s›OÔ,Ü�	‰	�, §¡Õ-øô ò 	Ø—
‘
˜1“ˆAÙÜ$Ð%FÓGÈTÐQØ˜‘t‰HˆQ’ð		ús   ‚AB
 Â
0B=Â<B=c                 ó   — | j                   S rW   ©ro   rZ   s    r9   r\   zPDFXRef.get_trailerÄ   ó   € Ø�|‰|Ðr8   c                 ó6   — | j                   j                  «       S rW   rs   rZ   s    r9   r_   zPDFXRef.get_objidsÇ   s   € Ø�|‰|× Ñ Ó"Ð"r8   r`   c                 ó    — | j                   |   S rW   )rn   rb   s     r9   rc   zPDFXRef.get_posÊ   s   € Ø�|‰|˜EÑ"Ð"r8   ©rU   N)r4   r5   r6   rp   rh   ru   r   rf   rˆ   rg   r   r\   r   ri   r_   rj   rc   r7   r8   r9   rl   rl   |   s�   „ ó*ð=˜#ó =ð1"˜9ð 1"¨ó 1"ðf. 9ð .°ó .ð˜T # s (™^ó ð#˜H S™Mó #ð#˜Sð # U¨3°©:°s¸CÐ+?Ñ%@ô #r8   rl   c                   óL   — e Zd Zdefd„Z ej                  d«      Zdeddfd„Z	y)ÚPDFXRefFallbackrU   c                 ó>   — d| j                   j                  «       ›d�S )Nz<PDFXRefFallback: offsets=rr   rs   rZ   s    r9   ru   zPDFXRefFallback.__repr__Ï   s   € Ø+¨D¯L©L×,=Ñ,=Ó,?Ð+BÀ!ÐDÐDr8   z^(\d+)\s+(\d+)\s+obj\brd   Nc                 óH  — |j                  d«       	 	 |j                  «       \  }}|j                  d«      rC|j                  |«       | j	                  |«       t
        j                  d| j                  «       y |j                  d«      }| j                  j                  |«      }|sŒ˜|j                  «       \  }}t        |«      }t        |«      }	d ||	f| j                  |<   |j                  |«       |j                  «       \  }
}t        |t         «      rx|j#                  d«      t$        u rat'        |«      }	 |d   }t1        |j3                  «       «      }g }	 	 |j                  «       \  }
}|j5                  t7        t        |«      «       Œ3�Œ€# t        $ r Y y w xY w# t(        $ r$ t*        j,                  rt/        d|›�«      d ‚d}Y Œ�w xY w# t        $ r Y nw xY wt9        |t;        |«      dz  «      }t=        |«      D ]  }||dz     }||df| j                  |<   Œ Œ“)	Nr   rw   útrailer: %rzlatin-1ÚTypeÚNúN is not defined: ry   )r   r|   r'   r~   rˆ   r…   r‡   ro   ÚdecodeÚ
PDFOBJ_CUEÚmatchÚgroupsri   rn   r™   Ú
isinstancer   ÚgetÚLITERAL_OBJSTMr%   ÚKeyErrorr   ÚSTRICTr   r   Úget_dataÚappendr   Úminr�   r„   )r[   rd   r‰   Ú
line_bytesrŠ   ÚmÚobjid_sÚgenno_sr`   Úgennor�   ÚobjÚstreamÚnÚparser1ÚobjsÚindexÚobjid1s                     r9   rf   zPDFXRefFallback.loadÔ   s  € Ø�‰�AŒØðØ$*§O¡OÓ$5Ñ!��jð ×$Ñ$ ZÔ0Ø—‘˜CÔ Ø×!Ñ! &Ô)Ü—	‘	˜-¨¯©Ô6ØØ×$Ñ$ YÓ/ˆDØ—‘×%Ñ% dÓ+ˆAÙØØ!"§¡£ÑˆW�gÜ˜“LˆEÜ˜“LˆEØ#'¨¨eÐ"4ˆD�L‰L˜Ñà�K‰K˜ÔØ×(Ñ(Ó*‰HˆQ�Ü˜#œyÔ)¨c¯g©g°f«oÄÑ.OÜ% cÓ*�ðØ˜s™�Aô
 *¨&¯/©/Ó*;Ó<�Ø"$�ðØØ#*×#5Ñ#5Ó#7™˜˜CØŸ™¤D¬¨c£NÔ3ð ñA øô ò Ùðûô,  ò Ü—’Ü,Ð/AÀ&ÀÐ-LÓMÐSWÐWØ’Aðûô ò Ùðúä˜œ3˜t›9¨™>Ó*�Ü" 1›Xò =�EØ! %¨!¡)™_�FØ,1°5¸!Ð+<�D—L‘L Ò(ð=øs5   ”F Ä<F" Å4G Æ	FÆFÆ"*GÇGÇ	GÇG)
r4   r5   r6   rh   ru   ÚreÚcompiler®   r   rf   r7   r8   r9   r¦   r¦   Î   s6   „ ðE˜#ó Eð �—‘Ð5Ó6€Jð*=˜9ð *=¨ô *=r8   r¦   c                   óz   — e Zd Zdd„Zdefd„Zdeddfd„Zdeee	f   fd„Z
dee   fd„Zd	edeedz  eef   fd
„Zy)ÚPDFXRefStreamrU   Nc                 óX   — d | _         d | _        d | _        d | _        d | _        g | _        y rW   )ÚdataÚentlenÚfl1Úfl2Úfl3ÚrangesrZ   s    r9   rp   zPDFXRefStream.__init__  s,   € Ø"&ˆŒ	Ø"&ˆŒØ#ˆŒØ#ˆŒØ#ˆŒØ-/ˆ�r8   c                 ó"   — d| j                   ›d�S )Nz<PDFXRefStream: ranges=rr   )rÏ   rZ   s    r9   ru   zPDFXRefStream.__repr__
  s   € Ø(¨¯©¨°qÐ9Ð9r8   rd   c           	      óÒ  — |j                  «       \  }}|j                  «       \  }}|j                  «       \  }}|j                  «       \  }}t        |t        «      r|j	                  d«      t
        urt        d«      ‚|d   }|j	                  dd|f«      }t        |«      dz  dk7  rt        d«      ‚| j                  j                  t        t        t        t        t        f      t        d|«      «      «       |d   \  | _        | _        | _        | j                   �| j"                  �| j$                  €J ‚|j'                  «       | _        | j                   | j"                  z   | j$                  z   | _        |j,                  | _        t0        j3                  d	d
j5                  t7        t8        | j                  «      «      | j                   | j"                  | j$                  «       y )Nrª   zInvalid PDF stream spec.ÚSizeÚIndexr   ry   zInvalid index numberÚWz&xref stream: objid=%s, fields=%d,%d,%dz, )r˜   r™   r±   r   r²   ÚLITERAL_XREFr2   r�   r   rÏ   Úextendr   r   rj   ri   r+   rÌ   rÍ   rÎ   r¶   rÊ   rË   Úattrsro   r…   r‡   Újoinr‚   Úrepr)	r[   rd   r�   Ú_objidÚ_gennoÚ_kwdr¿   ÚsizeÚindex_arrays	            r9   rf   zPDFXRefStream.load  s�  € Ø×&Ñ&Ó(‰ˆˆFØ×&Ñ&Ó(‰ˆˆFØ×$Ñ$Ó&‰	ˆˆDØ×'Ñ'Ó)‰ˆˆFÜ˜&¤)Ô,°·
±
¸6Ó0BÌ,Ñ0VÜ Ð!;Ó<Ð<Ø�f‰~ˆØ—j‘j ¨1¨d¨)Ó4ˆÜˆ{Ó˜aÑ 1Ò$Ü Ð!7Ó8Ð8Ø�‰×Ñœ4¤¬¬s´C¨x©Ñ 9¼8ÀAÀ{Ó;SÓTÔUØ)/°©Ñ&ˆŒ�4”8˜TœXØ�x‰xÐ#¨¯©Ð(<ÀÇÁÐAUÐUÐUØ—O‘OÓ%ˆŒ	Ø—h‘h §¡Ñ)¨D¯H©HÑ4ˆŒØ—|‘|ˆŒÜ�	‰	Ø4Ø�I‰I”cœ$ §¡Ó,Ó-Ø�H‰HØ�H‰HØ�H‰Hõ	
r8   c                 ó   — | j                   S rW   r    rZ   s    r9   r\   zPDFXRefStream.get_trailer&  r¡   r8   c              #   ó8  K  — | j                   D ]‡  \  }}t        |«      D ]t  }| j                  €J ‚| j                  €J ‚| j                  |z  }| j                  ||| j                  z    }t	        |d | j
                   d«      }|dk(  s|dk(  sŒn||z   –— Œv Œ‰ y ­w)Nr—   ry   )rÏ   r„   rË   rÊ   r/   rÌ   )r[   rŽ   r�   ÚiÚoffsetÚentÚf1s          r9   r_   zPDFXRefStream.get_objids)  s¢   è ø€ Ø ŸK™Kò 	$‰LˆE�5Ü˜5“\ò $�Ø—{‘{Ð.Ð.Ð.Ø—y‘yÐ,Ð,Ð,ØŸ™ q™�Ø—i‘i ¨°$·+±+Ñ)=Ð>�Ü˜S  4§8¡8˜_¨aÓ0�Ø˜’7˜b A›gØ !™)“Oñ$ñ	$ùs   ‚BBÂBr`   c                 ón  — d}| j                   D ]!  \  }}||k  r|||z   k  r
|||z
  z  } n||z  }Œ# t        |«      ‚| j                  €J ‚| j                  €J ‚| j                  �| j
                  �| j                  €J ‚| j                  |z  }| j                  ||| j                  z    }t        |d | j                   d«      }t        || j                  | j                  | j
                  z    «      }t        || j                  | j
                  z   d  «      }	|dk(  rd ||	fS |dk(  r||	dfS t        |«      ‚)Nr   r—   ry   )rÏ   r   rË   rÊ   rÌ   rÍ   rÎ   r/   )
r[   r`   rÃ   rŽ   r�   râ   rã   rä   Úf2Úf3s
             r9   rc   zPDFXRefStream.get_pos4  sJ  € ØˆØ ŸK™Kò 	%‰LˆE�5Ø˜Š~ %¨%°%©-Ò"7Ø˜ ™Ñ&�Ùà˜‘‘ð	%ô ˜eÓ$Ð$Ø�{‰{Ð&Ð&Ð&Ø�y‰yÐ$Ð$Ð$Ø�x‰xÐ#¨¯©Ð(<ÀÇÁÐAUÐUÐUØ—‘˜uÑ$ˆØ�i‰i˜ ¨$¯+©+Ñ!5Ð6ˆÜ�S˜˜4Ÿ8™8�_ aÓ(ˆÜ�S˜Ÿ™ D§H¡H¨t¯x©xÑ$7Ð8Ó9ˆÜ�S˜Ÿ™ D§H¡HÑ,Ð.Ð/Ó0ˆØ�Š7Ø˜"˜b�>Ð!Ø�1ŠWØ˜˜A�;Ðô ˜eÓ$Ð$r8   r¤   )r4   r5   r6   rp   rh   ru   r   rf   rg   r   r\   r   ri   r_   rj   rc   r7   r8   r9   rÈ   rÈ     sm   „ ó0ð:˜#ó :ð
˜9ð 
¨ó 
ð2˜T # s (™^ó ð	$˜H S™Mó 	$ð%˜Sð % U¨3°©:°s¸CÐ+?Ñ%@ô %r8   rÈ   c                   óL  — e Zd ZU dZdZeedf   ed<   	 ddee	   de
eef   dedd	fd
„Zdd„Zdd„Zdd„Zdefd„Zdefd„Zdefd„Zde	de	fd„Zde	de	fd„Zdede	d	z  fd„Zde	de	d	z  fd„Zde	defd„Zde	de	d	z  fd„Z	 d dedede	de
eef   d	z  de	f
d„Zdedede	de	fd„Zy	)!ÚPDFStandardSecurityHandlers    (¿N^NuŠAd NVÿú.. ¶Ðh>€/©þdSiz)ry   rz   .Úsupported_revisionsÚdocidÚparamÚpasswordrU   Nc                 óN   — || _         || _        || _        | j                  «        y rW   )rë   rì   rí   Úinit)r[   rë   rì   rí   s       r9   rp   z#PDFStandardSecurityHandler.__init__U  s"   € ð ˆŒ
ØˆŒ
Ø ˆŒØ�	‰	�r8   c                 ó¨   — | j                  «        | j                  | j                  vrd| j                  ›�}t	        |«      ‚| j                  «        y )NzUnsupported revision: param=)Úinit_paramsÚrrê   rì   rG   Úinit_key)r[   r�   s     r9   rï   zPDFStandardSecurityHandler.init`  sD   € Ø×ÑÔØ�6‰6˜×1Ñ1Ñ1Ø6°t·z±z°nÐEˆIÜ$ YÓ/Ð/Ø�‰�r8   c                 ó–  — t        | j                  j                  dd«      «      | _        t        | j                  d   «      | _        t        | j                  d   d«      | _        t        | j                  d   «      | _        t        | j                  d   «      | _	        t        | j                  j                  dd	«      «      | _
        y )
NÚVr   ÚRÚPé    ÚOÚUÚLengthé(   )r"   rì   r²   Úvrò   r&   Úpr$   ÚoÚuÚlengthrZ   s    r9   rñ   z&PDFStandardSecurityHandler.init_paramsg  sŠ   € Ü˜4Ÿ:™:Ÿ>™>¨#¨qÓ1Ó2ˆŒÜ˜4Ÿ:™: c™?Ó+ˆŒÜ˜DŸJ™J s™O¨RÓ0ˆŒÜ˜4Ÿ:™: c™?Ó+ˆŒÜ˜4Ÿ:™: c™?Ó+ˆŒÜ §
¡
§¡¨x¸Ó <Ó=ˆ�r8   c                 óh   — | j                  | j                  «      | _        | j                  €t        ‚y rW   )Úauthenticaterí   ÚkeyrI   rZ   s    r9   ró   z#PDFStandardSecurityHandler.init_keyo  s-   € Ø×$Ñ$ T§]¡]Ó3ˆŒØ�8‰8ÐÜ&Ð&ð r8   c                 ó2   — t        | j                  dz  «      S )Né   ©Úboolrþ   rZ   s    r9   Úis_printablez'PDFStandardSecurityHandler.is_printablet  ó   € Ü�D—F‘F˜Q‘JÓÐr8   c                 ó2   — t        | j                  dz  «      S )Né   r  rZ   s    r9   Úis_modifiablez(PDFStandardSecurityHandler.is_modifiablew  r
  r8   c                 ó2   — t        | j                  dz  «      S )Né   r  rZ   s    r9   Úis_extractablez)PDFStandardSecurityHandler.is_extractablez  s   € Ü�D—F‘F˜R‘KÓ Ð r8   r  c                 óÊ  ‡— | j                   dk(  r$t        |«      j                  | j                  «      S t	        | j                  «      }|j                  | j                  d   «       t        |«      j                  |j                  «       «      }t        dd«      D ]?  Šdj                  ˆfd„t        |«      D «       «      }t        |«      j                  |«      }ŒA ||z  }|S )Nry   r   r—   é   r8   c              3   ó<   •K  — | ]  }t        |‰z  f«      –— Œ y ­wrW   ©Úbytes©Ú.0Úcrá   s     €r9   ú	<genexpr>z7PDFStandardSecurityHandler.compute_u.<locals>.<genexpr>‡  ó   øè ø€ Ò@°œU A¨¡E 8Ÿ_Ñ@ùó   ƒ)rò   r   ÚencryptÚPASSWORD_PADDINGr   r›   rë   Údigestr„   rØ   Úiter)r[   r  ÚhashÚresultÚkrá   s        @r9   Ú	compute_uz$PDFStandardSecurityHandler.compute_u}  s»   ø€ Ø�6‰6�QŠ;ä˜3“<×'Ñ'¨×(=Ñ(=Ó>Ð>ô �t×,Ñ,Ó-ˆDØ�K‰K˜Ÿ
™
 1™Ô&Ü˜S“\×)Ñ)¨$¯+©+«-Ó8ˆFÜ˜1˜b“\ò 4�Ø—H‘HÓ@´d¸3³iÔ@Ó@�Ü  ›×+Ñ+¨FÓ3‘ð4ð �fÑˆFØˆMr8   c                 óB  — || j                   z   d d }t        |«      }|j                  | j                  «       |j                  t	        j
                  d| j                  «      «       |j                  | j                  d   «       | j                  dk\  r+t        t        | «      j                  s|j                  d«       |j                  «       }d}| j                  dk\  r;| j                  dz  }t        d	«      D ]  }t        |d | «      j                  «       }Œ  |d | S )
Nrø   ú<Lr   r  s   ÿÿÿÿé   rz   r  é2   )r  r   r›   rÿ   ÚstructÚpackrþ   rë   rò   r   ÚPDFStandardSecurityHandlerV4Úencrypt_metadatar  r  r„   )r[   rí   r   r!  rÀ   r�   s         r9   Úcompute_encryption_keyz1PDFStandardSecurityHandler.compute_encryption_keyŒ  sê   € à˜t×4Ñ4Ñ4°c°rÐ:ˆÜ�8‹}ˆØ�‰�D—F‘FÔà�‰”F—K‘K  d§f¡fÓ-Ô.Ø�‰�D—J‘J˜q‘MÔ"à�F‰F�aŠKÜÔ5°tÓ<×MÒMà�K‰KÐ+Ô,Ø—‘“ˆØˆØ�6‰6�QŠ;Ø—‘˜qÑ ˆAÜ˜2“Yò 2�Ü˜V B Q˜Z›×/Ñ/Ó1‘ð2à�b�qˆzÐr8   c                 óp   — |j                  d«      }| j                  |«      }|€| j                  |«      }|S )NÚlatin1)ÚencodeÚauthenticate_user_passwordÚauthenticate_owner_password)r[   rí   Úpassword_bytesr  s       r9   r  z'PDFStandardSecurityHandler.authenticate¡  s:   € Ø!Ÿ™¨Ó2ˆØ×-Ñ-¨nÓ=ˆØˆ;Ø×2Ñ2°>ÓBˆCØˆ
r8   c                 óL   — | j                  |«      }| j                  |«      r|S y rW   )r,  Úverify_encryption_key)r[   rí   r  s      r9   r0  z5PDFStandardSecurityHandler.authenticate_user_password¨  s(   € Ø×)Ñ)¨(Ó3ˆØ×%Ñ% cÔ*ØˆJàr8   c                 óŠ   — | j                  |«      }| j                  dk(  r|| j                  k(  S |d d | j                  d d k(  S )Nry   r  )r#  rò   r   )r[   r  r   s      r9   r4  z0PDFStandardSecurityHandler.verify_encryption_key¯  sD   € à�N‰N˜3ÓˆØ�6‰6�QŠ;Ø˜Ÿ™‘;ÐØ��"ˆv˜Ÿ™  ˜Ñ$Ð$r8   c                 óT  ‡— || j                   z   d d }t        |«      }| j                  dk\  r)t        d«      D ]  }t        |j	                  «       «      }Œ d}| j                  dk\  r| j
                  dz  }|j	                  «       d | }| j                  dk(  r%t        |«      j                  | j                  «      }n[| j                  }t        ddd«      D ]?  Šd	j                  ˆfd
„t        |«      D «       «      }t        |«      j                  |«      }ŒA | j                  |«      S )Nrø   rz   r'  r&  r  ry   é   éÿÿÿÿr8   c              3   ó<   •K  — | ]  }t        |‰z  f«      –— Œ y ­wrW   r  r  s     €r9   r  zIPDFStandardSecurityHandler.authenticate_owner_password.<locals>.<genexpr>Æ  r  r  )r  r   rò   r„   r  r  r   Údecryptrÿ   rØ   r  r0  )	r[   rí   r   r�   rÀ   r  Úuser_passwordr"  rá   s	           @r9   r1  z6PDFStandardSecurityHandler.authenticate_owner_password¶  s  ø€ à˜t×4Ñ4Ñ4°c°rÐ:ˆÜ�8‹}ˆØ�6‰6�QŠ;Ü˜2“Yò *�Ü˜4Ÿ;™;›=Ó)‘ð*àˆØ�6‰6�QŠ;Ø—‘˜qÑ ˆAØ�k‰k‹m˜B˜QÐˆØ�6‰6�QŠ;Ü# C›L×0Ñ0°·±Ó8‰Mà ŸF™FˆMÜ˜2˜r 2Ó&ò B�Ø—H‘HÓ@´d¸3³iÔ@Ó@�Ü '¨£
× 2Ñ 2°=Ó A‘ðBð ×.Ñ.¨}Ó=Ð=r8   r`   r½   rÊ   r×   c                 ó(   — | j                  |||«      S rW   )Údecrypt_rc4)r[   r`   r½   rÊ   r×   s        r9   r:  z"PDFStandardSecurityHandler.decryptÊ  s   € ð ×Ñ  u¨dÓ3Ð3r8   c                 ó4  — | j                   €J ‚| j                   t        j                  d|«      d d z   t        j                  d|«      d d z   }t        |«      }|j	                  «       d t        t        |«      d«       }t        |«      j                  |«      S )Nr%  rz   ry   r  )	r  r(  r)  r   r  r¸   r�   r   r:  )r[   r`   r½   rÊ   r  r   s         r9   r=  z&PDFStandardSecurityHandler.decrypt_rc4Ó  s‡   € Ø�x‰xÐ#Ð#Ð#Ø�h‰hœŸ™ T¨5Ó1°"°1Ð5Ñ5¼¿¹ÀDÈ%Ó8PÐQSÐRSÐ8TÑTˆÜ�3‹xˆØ�k‰k‹mÐ/œc¤# c£(¨BÓ/Ð0ˆÜ�s‹|×#Ñ# DÓ)Ð)r8   ©Ú r¤   rW   )r4   r5   r6   r  rê   rj   ri   Ú__annotations__r   r  rg   rh   r   rp   rï   rñ   ró   r  r	  r  r  r#  r,  r  r0  r4  r1  r:  r=  r7   r8   r9   ré   ré   O  st  … àUð ð ,2Ð˜˜s C˜x™Ó1ð ñ		à˜‰ð	ð �C˜�H‰~ð	ð ð		ð
 
ó	óó>ó'ð
 ˜dó  ð ˜tó  ð! ó !ð˜Uð  uó ð¨uð ¸ó ð* Sð ¨U°T©\ó ð°5ð ¸UÀT¹\ó ð%¨ð %°4ó %ð>°Eð >¸eÀd¹ló >ð2 (,ñ4àð4ð ð4ð ð	4ð
 �C˜�H‰~ Ñ$ð4ð 
ó4ð* ð *¨Sð *¸ð *À%ô *r8   ré   c                   óÌ   ‡ — e Zd ZU dZeedf   ed<   dˆ fd„Zdede	eee
ge
f   dz  fd„Z	 	 dd	ed
ede
deeef   dz  dedz  de
fd„Zd	ed
ede
de
fd„Zd	ed
ede
de
fd„Zˆ xZS )r*  )r  .rê   rU   Nc                 ó(  •— t         ‰| �  «        d| _        t        | j                  j                  d«      «      | _        t        | j                  d   «      | _        t        | j                  d   «      | _	        t        | j                  j                  dd«      «      | _        | j                  | j                  k7  rd| j                  ›�}t        |«      ‚i | _        | j                  j                  «       D ]M  \  }}| j                  t        |d   «      «      }|€d	| j                  ›�}t        |«      ‚|| j                  |<   ŒO | j                   | j                  d
<   | j                  | j                  vrd| j                  ›�}t        |«      ‚y )Né€   ÚCFÚStmFÚStrFÚEncryptMetadataTz Unsupported crypt filter: param=ÚCFMz#Unknown crypt filter method: param=ÚIdentityzUndefined crypt filter: param=)Úsuperrñ   r  r!   rì   r²   Úcfr*   ÚstmfÚstrfr  r+  rG   ÚcfmÚitemsÚget_cfmÚdecrypt_identity)r[   r�   r"  rý   rŒ   Ú	__class__s        €r9   rñ   z(PDFStandardSecurityHandlerV4.init_paramsÞ  sN  ø€ Ü‰ÑÔØˆŒÜ˜TŸZ™ZŸ^™^¨DÓ1Ó2ˆŒÜ  §¡¨FÑ!3Ó4ˆŒ	Ü  §¡¨FÑ!3Ó4ˆŒ	Ü $ T§Z¡Z§^¡^Ð4EÀtÓ%LÓ MˆÔØ�9‰9˜Ÿ	™	Ò!Ø:¸4¿:¹:¸.ÐIˆIÜ$ YÓ/Ð/ØˆŒØ—G‘G—M‘M“Oò 	‰DˆAˆqØ—‘œ\¨!¨E©(Ó3Ó4ˆAØˆyØAÀ$Ç*Á*ÀÐP�	Ü(¨Ó3Ð3ØˆD�H‰H�QŠKð	ð  $×4Ñ4ˆ�‰�ÑØ�9‰9˜DŸH™HÑ$Ø8¸¿¹¸ÐGˆIÜ$ YÓ/Ð/ð %r8   Únamec                 óH   — |dk(  r| j                   S |dk(  r| j                  S y )NÚV2ÚAESV2)r=  Údecrypt_aes128©r[   rT  s     r9   rQ  z$PDFStandardSecurityHandlerV4.get_cfmô  s+   € Ø�4Š<Ø×#Ñ#Ð#Ø�WŠ_Ø×&Ñ&Ð&àr8   r`   r½   rÊ   r×   c                 ó®   — | j                   s%|�#|j                  d«      }|�t        |«      dk(  r|S |€| j                  } | j                  |   |||«      S )Nrª   ÚMetadata)r+  r²   r*   rN  rO  )r[   r`   r½   rÊ   r×   rT  Úts          r9   r:  z$PDFStandardSecurityHandlerV4.decryptü  s\   € ð ×$Ò$¨Ð):Ø—	‘	˜&Ó!ˆAØˆ}¤¨a£°JÒ!>Ø�Øˆ<Ø—9‘9ˆDØˆt�x‰x˜‰~˜e U¨DÓ1Ð1r8   c                 ó   — |S rW   r7   )r[   r`   r½   rÊ   s       r9   rR  z-PDFStandardSecurityHandlerV4.decrypt_identity  s   € Øˆr8   c                 óæ  — | j                   €J ‚| j                   t        j                  d|«      d d z   t        j                  d|«      d d z   dz   }t        |«      }|j	                  «       d t        t        |«      d«       }|d d }|dd  }t        t        j                  |«      t        j                  |«      t        «       ¬«      }|j                  «       j                  |«      }	t        |	«      S )Nr%  rz   ry   s   sAlTr  ©Úbackend)r  r(  r)  r   r  r¸   r�   r   r   ÚAESr   ÚCBCr   Ú	decryptorr›   r0   )
r[   r`   r½   rÊ   r  r   Úinitialization_vectorÚ
ciphertextÚcipherÚ	plaintexts
             r9   rX  z+PDFStandardSecurityHandlerV4.decrypt_aes128  së   € Ø�x‰xÐ#Ð#Ð#à�H‰HÜ�k‰k˜$ Ó& r¨Ð*ñ+ä�k‰k˜$ Ó& r¨Ð*ñ+ð ñð 	ô �3‹xˆØ�k‰k‹mÐ/œc¤# c£(¨BÓ/Ð0ˆØ $ S b 	ÐØ˜"˜#�Yˆ
ÜÜ�N‰N˜3ÓÜ�I‰IÐ+Ó,Ü#Ó%ô
ˆð
 ×$Ñ$Ó&×-Ñ-¨jÓ9ˆ	Ü˜Ó#Ð#r8   r¤   )NN)r4   r5   r6   rê   rj   ri   rA  rñ   rh   r   r  rQ  rg   r   r:  rR  rX  Ú__classcell__©rS  s   @r9   r*  r*  Û  sÞ   ø… Ø+/Ð˜˜s C˜x™Ó/õ0ð,˜Cð  H¨c°3¸Ð->ÀÐ-EÑ$FÈÑ$Mó ð (,Øñ2àð2ð ð2ð ð	2ð
 �C˜�H‰~ Ñ$ð2ð �D‰jð2ð 
ó2ð  cð °#ð ¸Uð Àuó ð$ Cð $°ð $¸5ð $ÀU÷ $r8   r*  c            	       ó   ‡ — e Zd ZdZdˆ fd„Zdedeeeegef   dz  fd„Z	dededz  fd„Z
dedefd	„Z	 dded
ededz  defd„Z	 dded
ededz  defd„Z	 dded
ededz  defd„Zededefd„«       Zdedededefd„Zdedededefd„Zˆ xZS )ÚPDFStandardSecurityHandlerV5)r&  é   rU   Nc                 ó”  •— t         ‰| �  «        d| _        t        | j                  d   «      | _        t        | j                  d   «      | _        | j                  d d | _        | j                  dd | _	        | j                  dd  | _
        | j                  d d | _        | j                  dd | _        | j                  dd  | _        y )Né   ÚOEÚUErø   rü   )rK  rñ   r  r$   rì   ÚoeÚuerÿ   Úo_hashÚo_validation_saltÚ
o_key_saltr   Úu_hashÚu_validation_saltÚ
u_key_salt)r[   rS  s    €r9   rñ   z(PDFStandardSecurityHandlerV5.init_params'  s§   ø€ Ü‰ÑÔØˆŒÜ˜DŸJ™J tÑ,Ó-ˆŒÜ˜DŸJ™J tÑ,Ó-ˆŒØ—f‘f˜S˜b�kˆŒØ!%§¡¨¨2 ˆÔØŸ&™&  ˜+ˆŒØ—f‘f˜S˜b�kˆŒØ!%§¡¨¨2 ˆÔØŸ&™&  ˜+ˆ�r8   rT  c                 ó&   — |dk(  r| j                   S y )NÚAESV3)Údecrypt_aes256rY  s     r9   rQ  z$PDFStandardSecurityHandlerV5.get_cfm3  s   € Ø�7Š?Ø×&Ñ&Ð&àr8   rí   c                 ó  — | j                  |«      }| j                  || j                  | j                  «      }|| j                  k(  rŒ| j                  || j
                  | j                  «      }t        t        j                  |«      t        j                  d«      t        «       ¬«      }|j                  «       j                  | j                  «      S | j                  || j                  «      }|| j                   k(  r�| j                  || j"                  «      }t        t        j                  |«      t        j                  d«      t        «       ¬«      }|j                  «       j                  | j$                  «      S y )Ns                   r_  )Ú_normalize_passwordÚ_password_hashrt  r   rs  ru  r   r   ra  r   rb  r   rc  r›   rq  rw  rv  rx  rr  )r[   rí   Ú
password_br   rf  s        r9   r  z)PDFStandardSecurityHandlerV5.authenticate9  s%  € Ø×-Ñ-¨hÓ7ˆ
Ø×"Ñ" :¨t×/EÑ/EÀtÇvÁvÓNˆØ�4—;‘;ÒØ×&Ñ& z°4·?±?ÀDÇFÁFÓKˆDÜÜ—‘˜tÓ$Ü—	‘	˜*Ó%Ü'Ó)ôˆFð
 ×#Ñ#Ó%×,Ñ,¨T¯W©WÓ5Ð5Ø×"Ñ" :¨t×/EÑ/EÓFˆØ�4—;‘;ÒØ×&Ñ& z°4·?±?ÓCˆDÜÜ—‘˜tÓ$Ü—	‘	˜*Ó%Ü'Ó)ôˆFð
 ×#Ñ#Ó%×,Ñ,¨T¯W©WÓ5Ð5Ør8   c                 ój   — | j                   dk(  r|syddlm}  ||«      }|j                  d«      d d S )Nrl  r8   r   )Úsaslprepzutf-8é   )rò   Úpdfminer._saslprepr�  r/  )r[   rí   r�  s      r9   r}  z0PDFStandardSecurityHandlerV5._normalize_passwordO  s6   € Ø�6‰6�QŠ;áØÝ3á Ó)ˆHØ�‰˜wÓ'¨¨Ð-Ð-r8   ÚsaltÚvectorc                 ór   — | j                   dk(  r| j                  |||«      S | j                  ||dd |«      S )z2Compute password hash depending on revision numberr&  r   r  )rò   Ú_r5_passwordÚ_r6_password)r[   rí   r„  r…  s       r9   r~  z+PDFStandardSecurityHandlerV5._password_hashY  s?   € ð �6‰6�QŠ;Ø×$Ñ$ X¨t°VÓ<Ð<Ø× Ñ  ¨4°°!¨9°fÓ=Ð=r8   c                 ó€   — t        |«      }|j                  |«       |�|j                  |«       |j                  «       S )z#Compute the password for revision 5)r	   r›   r  )r[   rí   r„  r…  r   s        r9   r‡  z)PDFStandardSecurityHandlerV5._r5_passwordd  s8   € ô �hÓˆØ�‰�DÔØÐØ�K‰K˜ÔØ�{‰{‹}Ðr8   c                 óÄ  — t        |«      }|j                  |«       |�|j                  |«       |j                  «       }t         t        t        f}dx}}|dk  s||dz
  kD  r{||z   |xs dz   dz  }	| j                  |dd |dd |	¬«      }
|| j                  |
dd «         } ||
«      j                  «       }|
t        |
«      dz
     }|dz  }|dk  rŒr||dz
  kD  rŒ{|dd S )	z#Compute the password for revision 6Nr   é@   rø   r8   r  )r  ÚivrÊ   r—   )r	   r›   r  r
   r   Ú_aes_cbc_encryptÚ_bytes_mod_3r�   )r[   rí   r„  r…  Úinitial_hashr"  ÚhashesÚround_noÚlast_byte_valÚk1ÚeÚ	next_hashs               r9   rˆ  z)PDFStandardSecurityHandlerV5._r6_passwordq  s
  € ô ˜hÓ'ˆØ×Ñ˜DÔ!ØÐØ×Ñ Ô'Ø×ÑÓ!ˆÜœ&¤&Ð)ˆØ#$Ð$ˆ�=Ø˜Šm˜}¨x¸"©}Ò<Ø˜Q‘, &¢-¨CÑ0°BÑ6ˆBØ×%Ñ%¨!¨C¨R¨&°Q°r¸"°XÀBÐ%ÓGˆAð ˜t×0Ñ0°°3°B°Ó8Ñ9ˆIÙ˜!“×#Ñ#Ó%ˆAØœc !›f q™j™MˆMØ˜‰MˆHð ˜‹m˜}¨x¸"©}Ó<ð ��"ˆvˆr8   Úinput_bytesc                 ó,   — t        d„ | D «       «      dz  S )Nc              3   ó&   K  — | ]	  }|d z  –— Œ y­w)rz   Nr7   )r  Úbs     r9   r  z<PDFStandardSecurityHandlerV5._bytes_mod_3.<locals>.<genexpr>�  s   è ø€ Ò.˜Q�1�q•5Ñ.ùs   ‚rz   )Úsum)r–  s    r9   rŽ  z)PDFStandardSecurityHandlerV5._bytes_mod_3Š  s   € ô Ñ. +Ô.Ó.°Ñ2Ð2r8   r  rŒ  rÊ   c                 óÊ   — t        t        j                  |«      t        j                  |«      «      }|j                  «       }|j                  |«      |j                  «       z   S rW   )r   r   ra  r   rb  Ú	encryptorr›   Úfinalize)r[   r  rŒ  rÊ   rf  rœ  s         r9   r�  z-PDFStandardSecurityHandlerV5._aes_cbc_encrypt�  sL   € Üœ
Ÿ™ sÓ+¬U¯Y©Y°r«]Ó;ˆØ×$Ñ$Ó&ˆ	Ø×Ñ Ó%¨	×(:Ñ(:Ó(<Ñ<Ð<r8   r`   r½   c                 ó  — |d d }|dd  }| j                   €J ‚t        t        j                  | j                   «      t	        j
                  |«      t        «       ¬«      }|j                  «       j                  |«      }t        |«      S )Nr  r_  )
r  r   r   ra  r   rb  r   rc  r›   r0   )r[   r`   r½   rÊ   rd  re  rf  rg  s           r9   r{  z+PDFStandardSecurityHandlerV5.decrypt_aes256”  s|   € Ø $ S b 	ÐØ˜"˜#�Yˆ
Ø�x‰xÐ#Ð#Ð#ÜÜ�N‰N˜4Ÿ8™8Ó$Ü�I‰IÐ+Ó,Ü#Ó%ô
ˆð
 ×$Ñ$Ó&×-Ñ-¨jÓ9ˆ	Ü˜Ó#Ð#r8   r¤   rW   )r4   r5   r6   rê   rñ   rh   r   ri   r  rQ  r  r}  r~  r‡  rˆ  ÚstaticmethodrŽ  r�  r{  rh  ri  s   @r9   rk  rk  $  sa  ø„ Ø Ðõ
&ð˜Cð  H¨c°3¸Ð->ÀÐ-EÑ$FÈÑ$Mó ð Sð ¨U°T©\ó ð,.¨Cð .°Eó .ð  $ñ		>àð	>ð ð	>ð ˜‘ð		>ð
 
ó	>ð  $ñ	àðð ðð ˜‘ð	ð
 
óð"  $ñ	àðð ðð ˜‘ð	ð
 
óð2 ð3 %ð 3¨Cò 3ó ð3ð= Eð =¨uð =¸Eð =Àeó =ð

$ Cð 
$°ð 
$¸5ð 
$ÀU÷ 
$r8   rk  c                   óx  — e Zd ZU dZeeeedœZee	e
ee   f      ed<   	 	 	 d dededededd	f
d
„Z ed«      Zd!dedd	fd„Zdede
de
defd„Zdedeee   e
f   fd„Zde
de
defd„Zde
defd„Zeeeeeef   Zdee   fd„Zdee   fd„Z dedee!z  defd„Z"dee!z  defd„Z#dede
fd„Z$dede
dee%   dd	fd„Z&y	)"ÚPDFDocumentaP  PDFDocument object represents a PDF document.

    Since a PDF file can be very big, normally it is not loaded at
    once. So PDF document has to cooperate with a PDF parser in order to
    dynamically import the data as processing goes.

    Typical usage:
      doc = PDFDocument(parser, password)
      obj = doc.getobj(objid)

    )r—   ry   r  r&  Úsecurity_handler_registryrd   rí   ÚcachingÚfallbackrU   Nc                 óÈ  — || _         g | _        g | _        i | _        d| _        d| _        d| _        i | _        i | _        || _        | j                  j                  | «       dx| _
        x| _        | _        	 | j                  |«      }| j                  ||| j                  «       | j                  D ]—  }|j)                  «       }|sŒd|v r:d|v rt+        |d   «      nd}	|	t-        |d   «      f| _        | j/                  |«       d|v r'| j                  j'                  t-        |d   «      «       d|v sŒ„t-        |d   «      | _         n t1        d«      ‚| j                  j3                  d	«      t4        urt6        j8                  rt1        d
«      ‚yy# t        $ rC |r=d|_        t#        «       }|j%                  |«       | j                  j'                  |«       Y �Œ:w xY w)z1Set the document to use a given PDFParser object.NTÚEncryptÚID)r8   r8   ÚInfoÚRootz(No /Root object! - Is this really a PDF?rª   zCatalog not found!)r£  ÚxrefsÚinfoÚcatalogÚ
encryptionÚdecipherÚ_parserÚ_cached_objsÚ_parsed_objsÚset_documentr	  r  r  Ú	find_xrefÚread_xref_fromr2   r¤  r¦   rf   r·   r\   r#   r!   Ú_initialize_passwordr   r²   ÚLITERAL_CATALOGr   rµ   )
r[   rd   rí   r£  r¤  r‰   ÚnewxrefÚxrefro   Úid_values
             r9   rp   zPDFDocument.__init__µ  sÏ  € ð ˆŒØ(*ˆŒ
ØˆŒ	Ø')ˆŒØ26ˆŒØ15ˆŒØˆŒØ;=ˆÔØACˆÔØˆŒØ�‰×!Ñ! $Ô'ØGKÐKˆÔÐK˜DÔ.°Ô1Dð	+Ø—.‘. Ó(ˆCØ×Ñ ¨¨T¯Z©ZÔ8ð —J‘Jò 	MˆDØ×&Ñ&Ó(ˆGÙØà˜GÑ#ð 9=À¹œ: g¨d¡mÔ4ÈZ�Ø#+¬Z¸À	Ñ8JÓ-KÐ"L�”Ø×)Ñ)¨(Ô3Ø˜Ñ Ø—	‘	× Ñ ¤¨G°F©OÓ!<Ô=Ø˜Ò ä)¨'°&©/Ó:�”Ùð#	Mô& !Ð!KÓLÐLØ�<‰<×Ñ˜FÓ#¬?Ñ:¼x¿ºÜ Ð!5Ó6Ð6ð @OÐ:øô7 ò 	+ÙØ"&�”Ü)Ó+�Ø—‘˜VÔ$Ø—
‘
×!Ñ! 'Ô*úð	+ús   Á8.F ÆAG!Ç G!ó   objc                 ó  — | j                   €J ‚| j                   \  }}t        |j                  d«      «      dk7  rt        d|›�«      ‚t	        |j                  dd«      «      }| j
                  j                  |«      }|€t        d|›�«      ‚ ||||«      }|j                  | _        |j                  «       | _        |j                  «       | _	        |j                  «       | _
        | j                  €J ‚d| j                  _        y )NÚFilterÚStandardzUnknown filter: param=rõ   r   zUnknown algorithm: param=F)r­  r*   r²   rG   r"   r¢  r:  r®  r	  r  r  r¯  r¤  )r[   rí   rë   rì   rý   ÚfactoryÚhandlers          r9   rµ  z PDFDocument._initialize_passwordð  só   € Ø�‰Ð*Ð*Ð*ØŸ™‰ˆ�Ü˜Ÿ	™	 (Ó+Ó,°
Ò:Ü$Ð'=¸e¸YÐ%GÓHÐHÜ�e—i‘i  QÓ'Ó(ˆØ×0Ñ0×4Ñ4°QÓ7ˆØˆ?Ü$Ð'@ÀÀ	Ð%JÓKÐKÙ˜% ¨Ó1ˆØŸ™ˆŒØ#×0Ñ0Ó2ˆÔØ$×2Ñ2Ó4ˆÔØ%×4Ñ4Ó6ˆÔØ�|‰|Ð'Ð'Ð'Ø %ˆ�‰Õr8   r¿   rÃ   r`   c                 ó^  — |j                   | j                  v r| j                  |j                      \  }}nI| j                  |«      \  }}| j                  r)|j                   €J ‚||f| j                  |j                   <   |dz  |z   }	 ||   }|S # t        $ r}t        d|›�«      |‚d }~ww xY w)Nry   zindex too big: )r`   r±  Ú_get_objectsr£  Ú
IndexErrorr   )	r[   r¿   rÃ   r`   rÂ   rÀ   rá   r¾   r‹   s	            r9   Ú_getobj_objstmzPDFDocument._getobj_objstm  sº   € Ø�<‰<˜4×,Ñ,Ñ,Ø×)Ñ)¨&¯,©,Ñ7‰IˆT‘1à×)Ñ)¨&Ó1‰IˆT�1Ø�|Š|Ø—|‘|Ð/Ð/Ð/Ø37¸°)�×!Ñ! &§,¡,Ñ/Ø�‰E�E‰Mˆð	GØ�q‘'ˆCð ˆ
øô ò 	GÜ  ?°5°)Ð!<Ó=À3ÐFûð	Gús   ÂB Â	B,ÂB'Â'B,c                 ó¾  — |j                  d«      t        urt        j                  rt	        d|›�«      ‚	 t        t        |d   «      }t        |j                  «       «      }|j                  | «       g }	 	 |j                  «       \  }}|j                  |«       Œ%# t        $ r$ t        j                  rt	        d|›�«      d ‚d}Y Œw xY w# t        $ r Y ||fS w xY w)Nrª   zNot a stream object: r«   r¬   r   )r²   r³   r   rµ   r   r   ri   r´   r   r¶   r²  r™   r·   r'   )r[   r¿   rÀ   rd   rÂ   r�   r¾   s          r9   rÁ  zPDFDocument._get_objects  sá   € Ø�:‰:�fÓ¤^Ñ3¼¿ºÜ Ð#8¸¸
Ð!CÓDÐDð	Ü”S˜& ™+Ó&ˆAô
 ! §¡Ó!2Ó3ˆØ×Ñ˜DÔ!Øˆð	ØØ!×,Ñ,Ó.‘��CØ—‘˜CÔ ð øô ò 	Ü�ŠÜ$Ð'9¸&¸Ð%DÓEÈ4ÐOØŠAð	ûô ò 	ØØ�aˆyÐð	ús#   ·B Á7&C Â*C
Ã	C
Ã	CÃCr‰   c                 ón  — | j                   €J ‚| j                   j                  |«       | j                   j                  «       \  }}| j                   j                  «       \  }}| j                   j                  «       \  }}||k7  r`g }|| j                  ur=| j                   j                  «       \  }}|j	                  |«       || j                  urŒ=t        |«      dk\  r|d   }||k7  rt        d|›d|›�«      ‚|t        d«      k7  rt        d|›�«      ‚| j                   j                  «       \  }}|S )Nry   éþÿÿÿzobjid mismatch: ú=rº  zInvalid object spec: offset=)	r¯  r   r˜   ÚKEYWORD_OBJr·   r�   r   r(   r™   )	r[   r‰   r`   r�   rÄ   rÛ   rœ   rž   r¾   s	            r9   Ú_getobj_parsezPDFDocument._getobj_parse$  s#  € Ø�|‰|Ð'Ð'Ð'Ø�‰×Ñ˜#ÔØ—l‘l×,Ñ,Ó.‰ˆˆFØ—l‘l×,Ñ,Ó.‰ˆˆFØ—<‘<×)Ñ)Ó+‰ˆˆCð �UŠ?ØˆAØ˜T×-Ñ-Ñ-ØŸ<™<×1Ñ1Ó3‘��CØ—‘˜”ð ˜T×-Ñ-Ò-ô �1‹v˜Š{Ø˜2™�à�UŠ?Ü Ð#3°F°:¸Q¸u¸iÐ!HÓIÐIà”#�f“+ÒÜ Ð#?À¸wÐ!GÓHÐHØ—<‘<×*Ñ*Ó,‰ˆˆCØˆ
r8   c                 óÎ  — | j                   st        d«      ‚t        j                  d|«       || j                  v r| j                  |   \  }}|S | j                   D ]¢  }	 |j                  |«      \  }}}	 |�.t        | j                  |«      «      }| j                  |||«      }n6| j                  ||«      }| j                  rt        | j                  |||«      }t        |t        «      r|j                  ||«        n t%        |«      ‚t        j                  d||«       | j&                  r||f| j                  |<   |S # t        $ r Y Œñw xY w# t         t"        f$ r Y �Œw xY w)z�Get object from PDF

        :raises PDFException if PDFDocument is not initialized
        :raises PDFObjectNotFound if objid does not exist in PDF
        zPDFDocument is not initializedzgetobj: objid=%rzregister: objid=%r: %r)rª  r   r…   r‡   r°  rc   r´   r%   ÚgetobjrÃ  rÉ  r®  r    r±   r   Ú	set_objidr'   r   r   r£  )r[   r`   r¾   r½   r¸  ÚstrmidrÃ   r¿   s           r9   rË  zPDFDocument.getobj@  sd  € ð �zŠzÜÐ?Ó@Ð@Ü�	‰	Ð$ eÔ,ð �D×%Ñ%Ñ%Ø×,Ñ,¨UÑ3‰LˆS�%ð4 ˆ
ð1 Ÿ
™
ò /�ðØ-1¯\©\¸%Ó-@Ñ*�V˜U EðØÐ)Ü!-¨d¯k©k¸&Ó.AÓ!B˜Ø"×1Ñ1°&¸%ÀÓG™à"×0Ñ0°¸Ó>˜ØŸ=š=Ü".¨t¯}©}¸eÀUÈCÓ"P˜Cä! #¤yÔ1ØŸ™ e¨UÔ3Ùð!/ô( (¨Ó.Ð.Ü�I‰IÐ.°°sÔ;Ø�|Š|Ø,/°¨<�×!Ñ! %Ñ(Øˆ
øô+  ò Ùðûô œ~Ð.ò Úðús%   Á EÁ6BEÅ	EÅEÅE$Å#E$c                 óª   ‡— d| j                   vrt        ‚dt        dt        dt        t
        j                     fˆfd„Š ‰| j                   d   d«      S )NÚOutlinesÚentryÚlevelrU   c              3   óZ  •K  — t        | «      } d| v r[d| v sd| v rSt        t        | d   «      «      }| j                  d«      }| j                  d«      }| j                  d«      }|||||f–— d| v rd| v r ‰| d   |dz   «      E d {  –—†  d| v r ‰| d   |«      E d {  –—†  y y 7 Œ7 Œ­w)	NÚTitleÚAÚDestÚSEÚFirstÚLastr—   ÚNext)r!   r,   r$   r²   )rÐ  rÑ  ÚtitleÚdestÚactionÚseÚsearchs         €r9   rÞ  z(PDFDocument.get_outlines.<locals>.searchn  sÀ   øè ø€ Ü˜uÓ%ˆEØ˜%Ñ S¨E¡\°V¸u±_Ü#¤I¨e°G©nÓ$=Ó>�Ø—y‘y Ó(�ØŸ™ 3›�Ø—Y‘Y˜t“_�Ø˜e T¨6°2Ð6Ò6Ø˜%Ñ F¨e¡OÙ! %¨¡.°%¸!±)Ó<×<Ð<Ø˜‰Ù! %¨¡-°Ó7×7Ñ7ð ð =øà7ús$   ƒBB+ÂB'Â	B+Â B)Â!B+Â)B+r   )r¬  rA   Úobjectri   r   r¡  ÚOutlineType)r[   rÞ  s    @r9   Úget_outlineszPDFDocument.get_outlinesj  sR   ø€ Ø˜TŸ\™\Ñ)ÜÐð	8œ&ð 	8¬ð 	8´¼+×:QÑ:QÑ1Rõ 	8ñ �d—l‘l :Ñ.°Ó2Ð2r8   c                 ó¤   — | j                   €J ‚	 t        | j                   d   «      }|j
                  S # t        t        f$ r}t        |‚d}~ww xY w)záGenerate page label strings for the PDF document.

        If the document includes page labels, generates strings, one per page.
        If not, raises PDFNoPageLabels.

        The resulting iteration is unbounded.
        NÚ
PageLabels)r¬  rã  r   r´   rC   Úlabels)r[   Úpage_labelsr‹   s      r9   Úget_page_labelszPDFDocument.get_page_labels}  sY   € ð �|‰|Ð'Ð'Ð'ð	+Ü$ T§\¡\°,Ñ%?Ó@ˆKð ×!Ñ!Ð!øô œhÐ'ò 	+Ü! sÐ*ûð	+ús   �4 ´AÁA
Á
AÚcatr  c                 óò   ‡‡‡— 	 t        | j                  d   «      }t        |‰   «      }dt
        t        t        f   dt        fˆˆˆfd„Š ‰|«      S # t        t        f$ r}t	        ‰‰f«      |‚d }~ww xY w)NÚNamesÚdrU   c           	      ód  •— d| v rt        | d   «      \  }}‰|k  s|‰k  ry d| v rQt        | d   «      }t        t        t        t        t
        t        z  t        f      t        d|«      «      «      }|‰   S d| v r*t        | d   «      D ]  } ‰	t        |«      «      }|sŒ|c S  t        ‰‰f«      ‚)NÚLimitsré  ry   ÚKids)r#   rg   r   r   rj   rh   r  r   r+   r!   r   )
rê  r“  Úk2rÂ   Únamesr  rý   rç  r  Úlookups
          €€€r9   rð  z'PDFDocument.lookup_name.<locals>.lookup–  sÁ   ø€ Ø˜1‰}Ü% a¨¡kÓ2‘��RØ˜’8˜r CšxØØ˜!‰|Ü! ! G¡*Ó-�ÜÜœ¤%¬¬e©´SÐ(8Ñ"9Ñ:¼HÀQÈÓ<MÓNó�ð ˜S‘zÐ!Ø˜‰{Ü# A f¡IÓ.ò !�AÙœz¨!›}Ó-�AÚØ šð!ô ˜s C˜jÓ)Ð)r8   )r!   r¬  r   r´   r   rg   rh   r   )r[   rç  r  rï  r‹   Úd0rð  s    ``   @r9   Úlookup_namezPDFDocument.lookup_nameŽ  sz   ú€ ð	3Ü˜tŸ|™|¨GÑ4Ó5ˆEô ˜˜c™
Ó#ˆð	*”dœ3¤˜8‘nð 	*¬÷ 	*ñ$ �b‹zÐøô/ œhÐ'ò 	3Ü˜s C˜jÓ)¨sÐ2ûð	3ús   …A ÁA6Á#A1Á1A6rT  c                 óÚ   — 	 | j                  d|«      }|S # t        $ rK d| j                  vrt        |«      d ‚t	        | j                  d   «      }||vrt        |«      d ‚||   }Y |S w xY w)NÚDests)rò  r´   r¬  rE   r!   )r[   rT  r¾   rñ  s       r9   Úget_destzPDFDocument.get_destª  s   € ð
	à×"Ñ" 7¨DÓ1ˆCð ˆ
øô ò 	à˜dŸl™lÑ*Ü,¨TÓ2¸Ð<Ü˜DŸL™L¨Ñ1Ó2ˆBØ˜2‰~Ü,¨TÓ2¸Ð<Ø�T‘(‰CØˆ
ð	ús   ‚ –AA*Á)A*c                 óx  — d}|j                  «       D ]›  }|j                  «       }t        j                  d|«       |dk(  rit        j                  d|«       |j	                  «       st        d|›�«      ‚t        |«      }|dk\  st        d|› �«      ‚|dk\  rt        d	|›�«      ‚|c S |sŒš|}Œ� t        d
«      ‚)z0Internal function used to locate the first XRef.r8   zfind_xref: %rs	   startxrefzxref found: pos=%rz!Invalid xref position, no digit: r   z!Invalid xref position, negative: l        z"Invalid xref position, too large: úUnexpected EOF)Úrevreadlinesr}   r…   r‡   Úisdigitr2   ri   )r[   rd   ÚprevrŠ   rŽ   s        r9   r³  zPDFDocument.find_xref¹  sÇ   € ð ˆØ×'Ñ'Ó)ò 	ˆDØ—:‘:“<ˆDÜ�I‰I�o tÔ,à�|Ò#Ü—	‘	Ð.°Ô5à—|‘|”~Ü(Ð+LÈTÈHÐ)UÓVÐVä˜D›	�à ’zÜ(Ð+LÈUÈGÐ)TÓUÐUð ˜E’>Ü(Ð+MÈeÈYÐ)WÓXÐXà’âØ‘ð-	ô0 Ð-Ó.Ð.r8   rŽ   rª  c                 óæ  — |j                  |«       |j                  «        	 |j                  «       \  }}t
        j                  d||«       t        |t        «      r=|j                  |«       |j                  «        t        «       }|j                  |«       n9||j                  u r|j                  «        t        «       }|j                  |«       |j                  |«       |j                  «       }t
        j                  d|«       d|v r!t!        |d   «      }| j#                  |||«       d|v r"t!        |d   «      }| j#                  |||«       yy# t        $ r}t	        d«      |‚d}~ww xY w)z$Reads XRefs from the given location.r÷  Nz"read_xref_from: start=%d, token=%rr©   ÚXRefStmÚPrev)r   Úresetr˜   r'   r2   r…   r‡   r±   ri   rÈ   rf   ÚKEYWORD_XREFr|   rl   r·   r\   r"   r´  )	r[   rd   rŽ   rª  r‰   Útokenr‹   r¸  ro   s	            r9   r´  zPDFDocument.read_xref_fromØ  s>  € ð 	�‰�EÔØ�‰Œð	<Ø!×+Ñ+Ó-‰LˆS�%ô 	�	‰	Ð6¸¸uÔEÜ�eœSÔ!à�K‰K˜ÔØ�L‰LŒNÜ -£ˆDØ�I‰I�fÕà˜×+Ñ+Ñ+Ø—‘Ô!Ü“9ˆDØ�I‰I�fÔØ�‰�TÔØ×"Ñ"Ó$ˆÜ�	‰	�- Ô)Ø˜ÑÜ˜G IÑ.Ó/ˆCØ×Ñ ¨¨UÔ3Ø�WÑä˜G F™OÓ,ˆCØ×Ñ ¨¨UÕ3ð øô) ò 	<Ü Ð!1Ó2¸Ð;ûð	<ús   £E Å	E0ÅE+Å+E0)r@  TTr?  )'r4   r5   r6   r>   ré   r*  rk  r¢  r   rg   ri   ÚtyperA  r   rh   r  rp   r(   rÈ  rµ  r   rß  rÃ  rj   ÚlistrÁ  rÉ  rË  r   rà  r   rá  ræ  r  rò  rõ  r³  rT   r´  r7   r8   r9   r¡  r¡  ¡  s¹  … ñ
ð &Ø%Ø'Ø'ñ	XÐ˜x¨¨S°$Ð7QÑ2RÐ-RÑ(SÑTó ð ØØñ57àð57ð ð57ð ð	57ð
 ð57ð 
ó57ñn �f“+€Kñ&¨Sð &¸$ó &ð" Yð °sð À3ð È6ó ð 9ð °°t¸F±|ÀSÐ7HÑ1Ió ð( ð ¨Sð °Vó ð8&˜Cð & Fó &ðP ˜˜S # s¨CÐ/Ñ0€Kð3˜h {Ñ3ó 3ð&" ¨#¡ó "ð"˜sð ¨¨u©ð ¸ó ð8˜S 5™[ð ¨Só ð/ 	ð /¨có /ð>"4àð"4ð ð"4ð �KÑ ð	"4ð
 
ô"4r8   r¡  c                   óJ   — e Zd ZdZedee   fd„«       Zede	de
defd„«       Zy)rã  zWPageLabels from the document catalog.

    See Section 8.3.1 in the PDF Reference.
    rU   c           	   #   óX  K  — | j                   }t        |«      dk(  s|d   d   dk7  r/t        j                  rt	        d«      ‚|j                  ddi f«       t        |d«      D ]Ã  \  }\  }}t        |«      }|j                  d«      }t        t        |j                  dd«      «      «      }t        |j                  dd«      «      }|t        |«      k(  rt        j                  |«      }	n||   \  }
}|
|z
  }t        |||z   «      }	|	D ]  }| j                  ||«      }||z   –— Œ ŒÅ y ­w)Nr   z"PageLabels is missing page index 0r—   ÚSr÷   r8   ÚSt)Úvaluesr�   r   rµ   r   ÚinsertÚ	enumerater!   r²   r,   r$   r"   Ú	itertoolsÚcountr„   Ú_format_page_label)r[   rÏ   ÚnextrŽ   Úlabel_dict_uncheckedÚ
label_dictÚstyleÚprefixÚfirst_valuer  Úendr�   Úrange_lengthÚvalueÚlabels                  r9   rä  zPageLabels.labels  s*  è ø€ à—‘ˆô ˆv‹;˜!Ò˜v a™y¨™|¨qÒ0Ü�ŠÜ$Ð%IÓJÐJð —‘˜a ! R Ô)ä3<¸VÀQÓ3Gò 	%Ñ/ˆDÑ/�5Ð.Ü#Ð$8Ó9ˆJØ—N‘N 3Ó'ˆEÜ ¤¨:¯>©>¸#¸sÓ+CÓ!DÓEˆFÜ# J§N¡N°4¸Ó$;Ó<ˆKà”s˜6“{Ò"ô )2¯©¸Ó(D‘à ™‘��QØ" U™{�Ü˜{¨K¸,Ñ,FÓG�àò %�Ø×/Ñ/°°uÓ=�Ø˜u‘nÓ$ñ%ñ	%ùs   ‚D(D*r  r  c                 ó~  — |€d}|S |t        d«      u rt        | «      }|S |t        d«      u rt        | «      j                  «       }|S |t        d«      u rt        | «      }|S |t        d«      u rt	        | «      j                  «       }|S |t        d«      u rt	        | «      }|S t
        j                  d|«       d}|S )z+Format page label value in a specific styler@  ÚDrö   rò   rÔ  ÚazUnknown page label style: %r)r)   rh   r.   Úupperr-   r…   r†   )r  r  r  s      r9   r  zPageLabels._format_page_label"  sÜ   € ð ˆ=ØˆEð ˆð ”c˜#“hÑÜ˜“JˆEð ˆð ”c˜#“hÑÜ$ UÓ+×1Ñ1Ó3ˆEð ˆð ”c˜#“hÑÜ$ UÓ+ˆEð ˆð ”c˜#“hÑÜ$ UÓ+×1Ñ1Ó3ˆEð ˆð ”c˜#“hÑÜ$ UÓ+ˆEð ˆô �K‰KÐ6¸Ô>ØˆEØˆr8   N)r4   r5   r6   r>   Úpropertyr   rh   rä  rŸ  ri   r   r  r7   r8   r9   rã  rã  ý  sO   „ ñð
 ð%˜ ™ò %ó ð%ð< ð #ð ¨cð °cò ó ñr8   rã  )\r
  ÚloggingrÅ   r(  Úcollections.abcr   r   r   r   r   Úhashlibr   r	   r
   r   Útypingr   r   r   Úcryptography.hazmat.backendsr   Ú&cryptography.hazmat.primitives.ciphersr   r   r   Úpdfminerr   Úpdfminer.arcfourr   Úpdfminer.castingr   Úpdfminer.data_structuresr   Úpdfminer.pdfexceptionsr   r   r   r   Úpdfminer.pdfparserr   r   r   Úpdfminer.pdftypesr   r   r    r!   r"   r#   r$   r%   r&   Úpdfminer.psexceptionsr'   Úpdfminer.psparserr(   r)   r*   Úpdfminer.utilsr+   r,   r-   r.   r/   r0   Ú	getLoggerr4   r…   r2   ÚSyntaxWarningr<   rA   rC   rE   rG   rI   ÚUserWarningrK   rM   rO   r³   rÕ   r¶  rT   rl   r¦   rÈ   ré   r*  rk  r¡  rã  r7   r8   r9   ú<module>r/     s›  ðÛ Û Û 	Û ß LÕ Lß /Ó /÷ñ õ 9ß LÑ Lå Ý $Ý %Ý /÷ó ÷ JÑ I÷
÷ 
õ 
õ (ß 4Ñ 4÷÷ ð €g×Ñ˜Ó!€ô	�^ô 	ô˜Mô ô	�Lô 	ô	�lô 	ô	˜\ô 	ô	˜ô 	ô	Ð-ô 	ô˜;ô ô¨ô ô	Ð"4ô 	ñ
 �X“€Ù�6‹{€Ù�i“.€÷"ñ "ô"O#ˆkô O#ôd0=�gô 0=ôfK%�Kô K%÷\I*ñ I*ôXF$Ð#=ô F$ôRz$Ð#?ô z$÷zY4ñ Y4ôx
7�õ 7r8   