
    %oiܒ                     D   S SK r S SKrS SKrS SKrS SKJrJrJrJrJ	r	  S SK
JrJrJrJr  S SKJrJrJr  S SKJr  S SKJrJrJr  S SKJr  S SKJr  S S	KJr  S S
KJ r   S SK!J"r"J#r#J$r$J%r%  S SK&J'r'J(r(J)r)  S SK*J+r+J,r,J-r-J.r.J/r/J0r0J1r1J2r2J3r3  S SK4J5r5  S SK6J7r7J8r8J9r9  S SK:J;r;J<r<J=r=J>r>J?r?J@r@  \R                  " \B5      rC " S S\)5      rD " S S\E5      rF " S S\"5      rG " S S\"5      rH " S S\"5      rI " S S\"5      rJ " S S\J5      rK " S S \L5      rM " S! S"\L5      rN " S# S$\J5      rO\8" S%5      rP\8" S&5      rQ\8" S'5      rR " S( S)5      rS " S* S+\S5      rT " S, S-\T5      rU " S. S/\S5      rV " S0 S15      rW " S2 S3\W5      rX " S4 S5\X5      rY " S6 S75      rZ " S8 S9\ 5      r[g):    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                       \ rS rSrSrg)PDFNoValidXRef4    N__name__
__module____qualname____firstlineno____static_attributes__r4       P/var/www/html/land-ocr/venv/lib/python3.13/site-packages/pdfminer/pdfdocument.pyr2   r2   4       r;   r2   c                       \ rS rSrSrSrg)PDFNoValidXRefWarning8   zlLegacy warning for missing xref.

Not used anymore because warnings.warn is replaced by logger.Logger.warn.
r4   Nr6   r7   r8   r9   __doc__r:   r4   r;   r<   r?   r?   8       r;   r?   c                       \ rS rSrSrg)PDFNoOutlines?   r4   Nr5   r4   r;   r<   rE   rE   ?   r=   r;   rE   c                       \ rS rSrSrg)PDFNoPageLabelsC   r4   Nr5   r4   r;   r<   rH   rH   C   r=   r;   rH   c                       \ rS rSrSrg)PDFDestinationNotFoundG   r4   Nr5   r4   r;   r<   rK   rK   G   r=   r;   rK   c                       \ rS rSrSrg)PDFEncryptionErrorK   r4   Nr5   r4   r;   r<   rN   rN   K   r=   r;   rN   c                       \ rS rSrSrg)PDFPasswordIncorrectO   r4   Nr5   r4   r;   r<   rQ   rQ   O   r=   r;   rQ   c                       \ rS rSrSrSrg)PDFEncryptionWarningS   zqLegacy warning for failed decryption.

Not used anymore because warnings.warn is replaced by logger.Logger.warn.
r4   NrA   r4   r;   r<   rT   rT   S   rC   r;   rT   c                       \ rS rSrSrSrg)"PDFTextExtractionNotAllowedWarningZ   zLegacy warning for PDF that does not allow extraction.

Not used anymore because warnings.warn is replaced by logger.Logger.warn.
r4   NrA   r4   r;   r<   rW   rW   Z   rC   r;   rW   c                       \ rS rSrSrg)PDFTextExtractionNotAlloweda   r4   Nr5   r4   r;   r<   rZ   rZ   a   r=   r;   rZ   ObjStmXRefCatalogc                   v    \ rS rSrS\\\4   4S jrS\\	   4S jr
S\	S\\	S-  \	\	4   4S jrS\SS4S	 jrS
rg)PDFBaseXRefk   returnc                     [         eNNotImplementedErrorselfs    r<   get_trailerPDFBaseXRef.get_trailerl       !!r;   c                     / $ rd   r4   rg   s    r<   
get_objidsPDFBaseXRef.get_objidso   s    	r;   objidNc                     [        U5      erd   )r   rh   ro   s     r<   get_posPDFBaseXRef.get_posu   s    %  r;   parserc                     [         erd   re   )rh   rt   s     r<   loadPDFBaseXRef.loadx   rk   r;   r4   )r6   r7   r8   r9   dictstrr   ri   r   intrm   tuplerr   r   rv   r:   r4   r;   r<   r`   r`   k   s\    "T#s(^ "HSM !S !U3:sC+?%@ !"9 " "r;   r`   c                       \ rS rSrSS jrS\4S jrS\SS4S jrS\SS4S jr	S\
\\4   4S	 jrS\\   4S
 jrS\S\\S-  \\4   4S jrSrg)PDFXRef|   rb   Nc                      0 U l         0 U l        g rd   offsetstrailerrg   s    r<   __init__PDFXRef.__init__}   s    ?A')r;   c                 @    SU R                   R                  5       < S3$ )Nz<PDFXRef: offsets=>r   keysrg   s    r<   __repr__PDFXRef.__repr__   s    #DLL$5$5$7#:!<<r;   rt   c           
           UR                  5       u  p#UR                  5       nU(       d  M-   UR	                  S5      (       a  UR                  U5        GOUR                  S5      n[        U5      S:w  a  SU< SU< 3n[        U5      e [        [        U5      u  px[        XwU-   5       H  n	 UR                  5       u  pUR                  5       nUR                  S5      n[        U5      S:w  a  S	U< S
U< 3n[        U5      eUu  pnUS:w  a  Mh  [        U5      n[        U5      nUb  Ub  S X4U R                  U	'   M  [        R                  SU	 SU< SU< S35        M     GMk  [        R!                  SU R                  5        U R#                  U5        g ! [         a  n[        S5      UeS nAff = f! [         a  nSU< SU< 3n[        U5      UeS nAff = f! [         a  n[        S5      UeS nAff = f)Nz Unexpected EOF - file corrupted?   trailer       zTrailer not found: z: line=zInvalid line:    zInvalid XRef format: z, line=   nzNot adding object z to xref because position z or generation number z cannot be parsed as an intzxref objects: %r)nextlinestripr'   r2   
startswithseeksplitlenmaprz   
ValueErrorranger   r   logwarningdebugload_trailer)rh   rt   poslineerrf	error_msgstartnobjsro   _pos_bgenno_buse_bpos_igenno_is                   r<   rv   PDFXRef.load   s   R$oo/zz|  z**C 

4 A1v{1&74(K	$Y//9!$S! uem4V & 1IQ::<D JJt$q6Q;"7z QI(33*+'D= "7+$)<+/*@DLL'KK,UG3MeY W007{:UW' 5) X 			$dll3&!O  R$%GHcQR  9,VJgdXF	$Y/S89  V()KLRUUVsG   )F F= 2"G%
F:)F55F:=
G"GG"%
H /G;;H c                     UR                  5       u  p#U[        S5      L d   [        U5      5       eUR                  5       u  p$U R                  R                  [        U5      5        [        R                  SU R                  5        g ! [         a.    UR                  S5      nU(       d  [        S5      S eUS   u  p$ N|f = f)Nr      zUnexpected EOF - file corruptedr   z
trailer=%r)	nexttokenr(   ry   
nextobjectr'   popr2   r   updater!   r   r   )rh   rt   r   kwddicxs         r<   r   PDFXRef.load_trailer   s    	'')HQ#j/)33s83)((*HQ 	JsO,		,-  	

1A$%FGTQtHQ		s   AB	 	5C Cc                     U R                   $ rd   r   rg   s    r<   ri   PDFXRef.get_trailer       ||r;   c                 6    U R                   R                  5       $ rd   r   rg   s    r<   rm   PDFXRef.get_objids   s    ||  ""r;   ro   c                      U R                   U   $ rd   )r   rq   s     r<   rr   PDFXRef.get_pos   s    ||E""r;   r   rb   N)r6   r7   r8   r9   r   ry   r   r   rv   r   rx   r   ri   r   rz   rm   r{   rr   r:   r4   r;   r<   r}   r}   |   s    *=# =."9 ." ."`.9 . .T#s(^ #HSM ##S #U3:sC+?%@ #r;   r}   c                   X    \ rS rSrS\4S jr\R                  " S5      rS\	SS4S jr
Srg)	PDFXRefFallback   rb   c                 @    SU R                   R                  5       < S3$ )Nz<PDFXRefFallback: offsets=r   r   rg   s    r<   r   PDFXRefFallback.__repr__   s    +DLL,=,=,?+B!DDr;   z^(\d+)\s+(\d+)\s+obj\brt   Nc                 z   UR                  S5          UR                  5       u  p#UR                  S5      (       aC  UR                  U5        U R	                  U5        [
        R                  SU R                  5        g UR                  S5      nU R                  R                  U5      nU(       d  M  UR                  5       u  pg[        U5      n[        U5      n	S X)4U R                  U'   UR                  U5        UR                  5       u  p[        U[         5      (       ay  UR#                  S5      [$        L aa  ['        U5      n US   n[1        UR3                  5       5      n/ n  UR                  5       u  pUR5                  [7        [        U5      5        M3  GM  ! [         a     g f = f! [(         a*    [*        R,                  (       a  [/        SU< 35      S eSn Nf = f! [         a     Of = f[9        U[;        U5      S-  5      n[=        U5       H  nUUS-     nUUS4U R                  U'   M     N)	Nr   r   trailer: %rzlatin-1TypeNN is not defined: r   )r   r   r'   r   r   r   r   r   decode
PDFOBJ_CUEmatchgroupsrz   r   r   
isinstancer   getLITERAL_OBJSTMr%   KeyErrorr   STRICTr   r   get_dataappendr   minr   r   )rh   rt   r   
line_bytesr   mobjid_sgenno_sro   gennor   objstreamnparser1objsindexobjid1s                     r<   rv   PDFXRefFallback.load   s   A$*OO$5! $$Z00C !!&)		-6$$Y/D%%d+A!"WLELE#'"4DLLKK((*HQ#y))cggfo.O%c*sA
 *&//*;<"$#*#5#5#7DcN3 A   ,   ,/A&-LMSWWA  3t9>*"1XE!%!)_F,15!+<DLL( &s5   F! 	F1 *4G( !
F.-F.11G%$G%(
G54G5r4   )r6   r7   r8   r9   ry   r   recompiler   r   rv   r:   r4   r;   r<   r   r      s4    E# E 56J*=9 *= *=r;   r   c                       \ rS rSrSS jrS\4S jrS\SS4S jrS\	\\
4   4S jrS\\   4S	 jrS
\S\\S-  \\4   4S jrSrg)PDFXRefStream   rb   Nc                 X    S U l         S U l        S U l        S U l        S U l        / U l        g rd   )dataentlenfl1fl2fl3rangesrg   s    r<   r   PDFXRefStream.__init__   s,    "&	"&###-/r;   c                 $    SU R                   < S3$ )Nz<PDFXRefStream: ranges=r   )r   rg   s    r<   r   PDFXRefStream.__repr__  s    (q99r;   rt   c           	         UR                  5       u  p#UR                  5       u  p$UR                  5       u  p%UR                  5       u  p&[        U[        5      (       a  UR	                  S5      [
        La  [        S5      eUS   nUR	                  SSU45      n[        U5      S-  S:w  a  [        S5      eU R                  R                  [        [        [        [        [        4      [        SU5      5      5        US   u  U l        U l        U l        U R                   b  U R"                  b  U R$                  c   eUR'                  5       U l        U R                   U R"                  -   U R$                  -   U l        UR,                  U l        [0        R3                  S	S
R5                  [7        [8        U R                  5      5      U R                   U R"                  U R$                  5        g )Nr   zInvalid PDF stream spec.SizeIndexr   r   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   r{   rz   r+   r   r   r   r   r   r   attrsr   r   r   joinr   repr)	rh   rt   r   _objid_genno_kwdr   sizeindex_arrays	            r<   rv   PDFXRefStream.load
  s|   &&(&&($$&	'')&),,

60B,0V !;<<f~jj1d)4{a1$ !7884sCx 98A{;STU)/&48TXxx#(<AUUUOO%	hh)DHH4||		4IIc$,-HHHHHH	
r;   c                     U R                   $ rd   r   rg   s    r<   ri   PDFXRefStream.get_trailer#  r   r;   c              #   D  #    U R                    H  u  p[        U5       Hx  nU R                  c   eU R                  c   eU R                  U-  nU R                  XDU R                  -    n[	        US U R
                   S5      nUS:X  d  US:X  d  Mr  X-   v   Mz     M     g 7f)Nr   r   )r   r   r   r   r/   r   )rh   r   r   ioffsetentf1s          r<   rm   PDFXRefStream.get_objids&  s      KKLE5\{{...yy,,,qii$++)=>S488_a07bAg)O " (s   BB B ro   c                 p   SnU R                    H  u  p4X1::  a  XU-   :  a	  X!U-
  -  n  OX$-  nM!     [        U5      eU R                  c   eU R                  c   eU R                  b  U R
                  b  U R                  c   eU R                  U-  nU R                  XUU R                  -    n[        US U R                   S5      n[        X`R                  U R                  U R
                  -    5      n[        X`R                  U R
                  -   S  5      n	US:X  a  S X4$ US:X  a  XS4$ [        U5      e)Nr   r   r   )r   r   r   r   r   r   r   r/   )
rh   ro   r   r   r   r  r  r  f2f3s
             r<   rr   PDFXRefStream.get_pos1  s1    KKLE~%%-"7& ( e$${{&&&yy$$$xx#(<AUUUu$ii$++!56S488_a(SDHHtxx$789SDHH,./07">!1WA; e$$r;   )r   r   r   r   r   r   r   r   )r6   r7   r8   r9   r   ry   r   r   rv   rx   r   ri   r   rz   rm   r{   rr   r:   r4   r;   r<   r   r      sm    0:# :
9 
 
2T#s(^ 	$HSM 	$%S %U3:sC+?%@ %r;   r   c                   v   \ rS rSr% SrSr\\S4   \S'    S S\	\
   S\\\4   S\S	S
4S jjrS!S jrS!S jrS!S jrS	\4S jrS	\4S jrS	\4S jrS\
S	\
4S jrS\
S	\
4S jrS\S	\
S
-  4S jrS\
S	\
S
-  4S jrS\
S	\4S jrS\
S	\
S
-  4S jr S"S\S\S\
S\\\4   S
-  S	\
4
S jjrS\S\S\
S	\
4S jrSrg
)#PDFStandardSecurityHandleriL  s    (N^NuAd NV.. h>/dSiz)r   r   .supported_revisionsdocidparampasswordrb   Nc                 H    Xl         X l        X0l        U R                  5         g rd   )r  r  r  init)rh   r  r  r  s       r<   r   #PDFStandardSecurityHandler.__init__R  s     

 		r;   c                     U R                  5         U R                  U R                  ;  a  SU R                  < 3n[	        U5      eU R                  5         g )NzUnsupported revision: param=)init_paramsrr  r  rN   init_key)rh   r   s     r<   r  PDFStandardSecurityHandler.init]  sD    661116tzznEI$Y//r;   c                    [        U R                  R                  SS5      5      U l        [        U R                  S   5      U l        [        U R                  S   S5      U l        [        U R                  S   5      U l        [        U R                  S   5      U l	        [        U R                  R                  SS	5      5      U l
        g )
NVr   RP    OULength(   )r"   r  r   vr  r&   pr$   oulengthrg   s    r<   r  &PDFStandardSecurityHandler.init_paramsd  s    4::>>#q124::c?+DJJsOR04::c?+4::c?+

x <=r;   c                 j    U R                  U R                  5      U l        U R                  c  [        eg rd   )authenticater  keyrQ   rg   s    r<   r  #PDFStandardSecurityHandler.init_keyl  s-    $$T]]388&& r;   c                 2    [        U R                  S-  5      $ )N   boolr$  rg   s    r<   is_printable'PDFStandardSecurityHandler.is_printableq      DFFQJr;   c                 2    [        U R                  S-  5      $ )N   r/  rg   s    r<   is_modifiable(PDFStandardSecurityHandler.is_modifiablet  r3  r;   c                 2    [        U R                  S-  5      $ )N   r/  rg   s    r<   is_extractable)PDFStandardSecurityHandler.is_extractablew  s    DFFRK  r;   r+  c                   ^ U R                   S:X  a$  [        U5      R                  U R                  5      $ [	        U R                  5      nUR                  U R                  S   5        [        U5      R                  UR                  5       5      n[        SS5       HA  mSR                  U4S j[        U5       5       5      n[        U5      R                  U5      nMC     X3-  nU$ )Nr   r   r      r;   c              3   B   >#    U  H  n[        UT-  45      v   M     g 7frd   bytes.0cr  s     r<   	<genexpr>7PDFStandardSecurityHandler.compute_u.<locals>.<genexpr>       @iUAE8__i   )r  r   encryptPASSWORD_PADDINGr   r   r  digestr   r   iter)rh   r+  hashresultkr  s        @r<   	compute_u$PDFStandardSecurityHandler.compute_uz  s    66Q;3<''(=(=>> t,,-DKK

1&S\))$++-8F1b\HH@d3i@@ ++F3 " FMr;   c                 T   XR                   -   S S n[        U5      nUR                  U R                  5        UR                  [        R
                  " SU R                  5      5        UR                  U R                  S   5        U R                  S:  a0  [        [        U 5      R                  (       d  UR                  S5        UR                  5       nSnU R                  S:  a=  U R                  S-  n[        S	5       H  n[        US U 5      R                  5       nM!     US U $ )
Nr  <Lr   r.  s      r   r5  2   )rI  r   r   r%  structpackr$  r  r  r   PDFStandardSecurityHandlerV4encrypt_metadatarJ  r'  r   )rh   r  rL  rM  r   r   s         r<   compute_encryption_key1PDFStandardSecurityHandler.compute_encryption_key  s    444cr:8}DFFFKKdff-.DJJqM"FFaK5t<MMKK+,66Q;q A2YVBQZ//1 bqzr;   c                 r    UR                  S5      nU R                  U5      nUc  U R                  U5      nU$ )Nlatin1)encodeauthenticate_user_passwordauthenticate_owner_password)rh   r  password_bytesr+  s       r<   r*  'PDFStandardSecurityHandler.authenticate  s:    !2--n=;22>BC
r;   c                 V    U R                  U5      nU R                  U5      (       a  U$ g rd   )rY  verify_encryption_key)rh   r  r+  s      r<   r^  5PDFStandardSecurityHandler.authenticate_user_password  s+    ))(3%%c**Jr;   c                     U R                  U5      nU R                  S:X  a  X R                  :H  $ US S U R                  S S :H  $ )Nr   r9  )rO  r  r&  )rh   r+  r&  s      r<   rc  0PDFStandardSecurityHandler.verify_encryption_key  sB    NN366Q;;"v$$r;   c                 b  ^ XR                   -   S S n[        U5      nU R                  S:  a+  [        S5       H  n[        UR	                  5       5      nM     SnU R                  S:  a  U R
                  S-  nUR	                  5       S U nU R                  S:X  a%  [        U5      R                  U R                  5      nO^U R                  n[        SSS5       HA  mS	R                  U4S
 j[        U5       5       5      n[        U5      R                  U5      nMC     U R                  U5      $ )Nr  r   rT  rS  r5  r      r;   c              3   B   >#    U  H  n[        UT-  45      v   M     g 7frd   r?  rA  s     r<   rD  IPDFStandardSecurityHandler.authenticate_owner_password.<locals>.<genexpr>  rF  rG  )rI  r   r  r   rJ  r'  r   decryptr%  r   rK  r^  )	rh   r  rL  r   r   r+  user_passwordrN  r  s	           @r<   r_  6PDFStandardSecurityHandler.authenticate_owner_password  s    444cr:8}66Q;2Y4;;=) 66Q;q AkkmBQ66Q;#CL008M FFM2r2&HH@d3i@@ '
 2 2= A ' ..}==r;   ro   r   r   r   c                 &    U R                  XU5      $ rd   )decrypt_rc4)rh   ro   r   r   r   s        r<   rl  "PDFStandardSecurityHandler.decrypt  s     d33r;   c                 :   U R                   c   eU R                   [        R                  " SU5      S S -   [        R                  " SU5      S S -   n[        U5      nUR	                  5       S [        [        U5      S5       n[        U5      R                  U5      $ )NrR  r   r   r9  )	r+  rU  rV  r   rJ  r   r   r   rl  )rh   ro   r   r   r+  rL  s         r<   rp  &PDFStandardSecurityHandler.decrypt_rc4  s    xx###hhT51"155D%8PQSRS8TT3xkkm/c#c(B/0s|##D))r;   )
r  r+  r'  r%  r$  r  r  r  r&  r#   r   rd   )r6   r7   r8   r9   rI  r  r{   rz   __annotations__r   r@  rx   ry   r   r   r  r  r  r0  r1  r6  r:  rO  rY  r*  r^  rc  r_  rl  rp  r:   r4   r;   r<   r  r  L  st   U  ,2sCx1 			 CH~	 		
 
	>'
 d   t  ! !U u u  *S UT\ 5 UT\ % %4 %>E >edl >2 (,44 4 	4
 CH~$4 
4* *S * *% *r;   r  c                      ^  \ rS rSr% Sr\\S4   \S'   SU 4S jjrS\	S\
\\\/\4   S-  4S	 jr  SS
\S\S\S\\	\4   S-  S\	S-  S\4S jjrS
\S\S\S\4S jrS
\S\S\S\4S jrSrU =r$ )rW  i  )r.  .r  rb   Nc                 6  > [         TU ]  5         SU l        [        U R                  R                  S5      5      U l        [        U R                  S   5      U l        [        U R                  S   5      U l	        [        U R                  R                  SS5      5      U l        U R                  U R                  :w  a  SU R                  < 3n[        U5      e0 U l        U R                  R                  5        HN  u  p#U R                  [        US   5      5      nUc  S	U R                  < 3n[        U5      eX@R                  U'   MP     U R                   U R                  S
'   U R                  U R                  ;  a  SU R                  < 3n[        U5      eg )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strfr0  rX  rN   cfmitemsget_cfmdecrypt_identity)rh   r   rN  r#  r   	__class__s        r<   r  (PDFStandardSecurityHandlerV4.init_params  sE   TZZ^^D12 F!34	 F!34	 $TZZ^^4Et%L M99		!:4::.II$Y//GGMMODA\!E(34AyA$**P	(33HHQK $  $4499DHH$8GI$Y// %r;   namec                 L    US:X  a  U R                   $ US:X  a  U R                  $ g )NV2AESV2)rp  decrypt_aes128rh   r  s     r<   r  $PDFStandardSecurityHandlerV4.get_cfm  s+    4<###W_&&&r;   ro   r   r   r   c                     U R                   (       d(  Ub%  UR                  S5      nUb  [        U5      S:X  a  U$ Uc  U R                  nU R                  U   " XU5      $ )Nr   Metadata)rX  r   r*   r  r  )rh   ro   r   r   r   r  ts          r<   rl  $PDFStandardSecurityHandlerV4.decrypt  sX     $$):		&!A}aJ!><99Dxx~eD11r;   c                     U$ rd   r4   )rh   ro   r   r   s       r<   r  -PDFStandardSecurityHandlerV4.decrypt_identity	  s    r;   c                    U R                   c   eU R                   [        R                  " SU5      S S -   [        R                  " SU5      S S -   S-   n[        U5      nUR	                  5       S [        [        U5      S5       nUS S nUSS  n[        [        R                  " U5      [        R                  " U5      [        5       S9nUR                  5       R                  U5      n	[        U	5      $ )NrR  r   r   s   sAlTr9  backend)r+  rU  rV  r   rJ  r   r   r   r   AESr   CBCr   	decryptorr   r0   )
rh   ro   r   r   r+  rL  initialization_vector
ciphertextcipher	plaintexts
             r<   r  +PDFStandardSecurityHandlerV4.decrypt_aes128  s    xx###HHkk$&r*+kk$&r*+  	 3xkkm/c#c(B/0 $Sb	"#Y
NN3II+,#%

 $$&--j9	##r;   )r  r  rX  r'  r  r  r   )NN)r6   r7   r8   r9   r  r{   rz   rv  r  ry   r   r@  r  rx   r   rl  r  r  r:   __classcell__r  s   @r<   rW  rW    s    +/sCx/0,C Hc3->-E$F$M  (,22 2 	2
 CH~$2 Dj2 
2 c # U u $C $ $5 $U $ $r;   rW  c            	       D  ^  \ rS rSrSrSU 4S jjrS\S\\\\	/\	4   S-  4S jr
S\S\	S-  4S	 jrS\S\	4S
 jr SS\	S\	S\	S-  S\	4S jjr SS\	S\	S\	S-  S\	4S jjr SS\	S\	S\	S-  S\	4S jjr\S\	S\4S j5       rS\	S\	S\	S\	4S jrS\S\S\	S\	4S jrSrU =r$ )PDFStandardSecurityHandlerV5i!  )rS     rb   Nc                   > [         TU ]  5         SU l        [        U R                  S   5      U l        [        U R                  S   5      U l        U R                  S S U l        U R                  SS U l	        U R                  SS  U l
        U R                  S S U l        U R                  SS U l        U R                  SS  U l        g )N   OEUEr  r"  )r  r  r'  r$   r  oeuer%  o_hasho_validation_salt
o_key_saltr&  u_hashu_validation_salt
u_key_salt)rh   r  s    r<   r  (PDFStandardSecurityHandlerV5.init_params$  s    DJJt,-DJJt,-ffSbk!%2&&+ffSbk!%2&&+r;   r  c                 (    US:X  a  U R                   $ g )NAESV3)decrypt_aes256r  s     r<   r  $PDFStandardSecurityHandlerV5.get_cfm0  s    7?&&&r;   r  c                    U R                  U5      nU R                  X R                  U R                  5      nX0R                  :X  a  U R                  X R
                  U R                  5      n[        [        R                  " U5      [        R                  " S5      [        5       S9nUR                  5       R                  U R                  5      $ U R                  X R                  5      nX0R                   :X  a  U R                  X R"                  5      n[        [        R                  " U5      [        R                  " S5      [        5       S9nUR                  5       R                  U R$                  5      $ g )Ns                   r  )_normalize_password_password_hashr  r&  r  r  r   r   r  r   r  r   r  r   r  r  r  r  r  )rh   r  
password_brL  r  s        r<   r*  )PDFStandardSecurityHandlerV5.authenticate6  s   --h7
"":/E/EtvvN;;&&z??DFFKDt$		*%')F
 ##%,,TWW55"":/E/EF;;&&z??CDt$		*%')F
 ##%,,TWW55r;   c                 v    U R                   S:X  a  U(       d  gSSKJn  U" U5      nUR                  S5      S S $ )Nr  r;   r   )saslprepzutf-8   )r  pdfminer._saslprepr  r]  )rh   r  r  s      r<   r  0PDFStandardSecurityHandlerV5._normalize_passwordL  s6    66Q;3)Hw'--r;   saltvectorc                 p    U R                   S:X  a  U R                  XU5      $ U R                  XSS U5      $ )z2Compute password hash depending on revision numberrS  r   r5  )r  _r5_password_r6_password)rh   r  r  r  s       r<   r  +PDFStandardSecurityHandlerV5._password_hashV  s;     66Q;$$XV<<  !9f==r;   c                     [        U5      nUR                  U5        Ub  UR                  U5        UR                  5       $ )z#Compute the password for revision 5)r	   r   rJ  )rh   r  r  r  rL  s        r<   r  )PDFStandardSecurityHandlerV5._r5_passworda  s8     hDKK{{}r;   c                    [        U5      nUR                  U5        Ub  UR                  U5        UR                  5       n[         [        [        4nS=pxUS:  d  XS-
  :  a~  X-   U=(       d    S-   S-  n	U R                  USS USS U	S9n
X`R                  U
SS 5         nU" U
5      R                  5       nU
[        U
5      S-
     nUS-  nUS:  a  Mt  XS-
  :  a  M~  USS $ )	z#Compute the password for revision 6Nr   @   r  r;   r9  )r+  ivr   r   )r	   r   rJ  r
   r   _aes_cbc_encrypt_bytes_mod_3r   )rh   r  r  r  initial_hashrN  hashesround_nolast_byte_valk1e	next_hashs               r<   r  )PDFStandardSecurityHandlerV5._r6_passwordn  s     h'D!'!&&)#$$m}"}<,&-C0B6B%%!CR&Qr"XB%GA 003B89I!##%Ac!fqjMMMH m}"}< "vr;   input_bytesc                 ,    [        S U  5       5      S-  $ )Nc              3   *   #    U  H	  oS -  v   M     g7f)r   Nr4   )rB  bs     r<   rD  <PDFStandardSecurityHandlerV5._bytes_mod_3.<locals>.<genexpr>  s     .+Qq5+s   r   )sum)r  s    r<   r  )PDFStandardSecurityHandlerV5._bytes_mod_3  s     .+..22r;   r+  r  r   c                     [        [        R                  " U5      [        R                  " U5      5      nUR                  5       nUR                  U5      UR                  5       -   $ rd   )r   r   r  r   r  	encryptorr   finalize)rh   r+  r  r   r  r  s         r<   r  -PDFStandardSecurityHandlerV5._aes_cbc_encrypt  sL    
s+UYYr];$$&	%	(:(:(<<<r;   ro   r   c                    US S nUSS  nU R                   c   e[        [        R                  " U R                   5      [        R
                  " U5      [        5       S9nUR                  5       R                  U5      n[        U5      $ )Nr9  r  )
r+  r   r   r  r   r  r   r  r   r0   )rh   ro   r   r   r  r  r  r  s           r<   r  +PDFStandardSecurityHandlerV5.decrypt_aes256  s|     $Sb	"#Y
xx###NN488$II+,#%

 $$&--j9	##r;   )	r'  r  r  r  r  r  r  r  r  r   rd   )r6   r7   r8   r9   r  r  ry   r   rz   r@  r  r*  r  r  r  r  staticmethodr  r  r  r:   r  r  s   @r<   r  r  !  sf    
&C Hc3->-E$F$M S UT\ ,.C .E .  $		>	> 	> 		>
 
	>  $	  	
 
"  $	  	
 
2 3% 3C 3 3=E =u =E =e =

$C 
$ 
$5 
$U 
$ 
$r;   r  c                      \ rS rSr% Sr\\\\S.r\	\
\\\   4      \S'      S"S\S\S\S\S	S
4
S jjr\" S5      rS#S\S	S
4S jjrS\S\S\S	\4S jrS\S	\\\   \4   4S jrS\S\S	\4S jrS\S	\4S jr\\\\\\4   rS	\\   4S jr S	\\   4S jr!S\S\\"-  S	\4S jr#S\\"-  S	\4S jr$S\S	\4S jr%S\S\S\\&   S	S
4S  jr'S!r(g
)$PDFDocumenti  a4  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   r   r.  rS  security_handler_registryrt   r  cachingfallbackrb   Nc                    X0l         / U l        / U l        0 U l        SU l        SU l        SU l        0 U l        0 U l        Xl        U R                  R                  U 5        S=U l
        =U l        U l         U R                  U5      nU R                  XU R                  5        U R                   H  nUR)                  5       nU(       d  M  SU;   a<  SU;   a  [+        US   5      OSn	U	[-        US   5      4U l        U R/                  U5        SU;   a'  U R                  R'                  [-        US   5      5        SU;   d  M  [-        US   5      U l          O   [1        S5      eU R                  R3                  S	5      [4        La!  [6        R8                  (       a  [1        S
5      egg! [         aH    U(       a=  SUl        [#        5       nUR%                  U5        U R                  R'                  U5         GNVf = f)z1Set the document to use a given PDFParser object.NTEncryptID)r;   r;   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_documentr1  r6  r:  	find_xrefread_xref_fromr2   r  r   rv   r   ri   r#   r!   _initialize_passwordr   r   LITERAL_CATALOGr   r   )
rh   rt   r  r  r  r   newxrefxrefr   id_values
             r<   r   PDFDocument.__init__  s    (*
	')2615;=AC!!$'GKKKD.1D	+..(CTZZ8 JJD&&(GG# 9=:gdm4Z#+Z	8J-K"L))(3 		  GFO!<= )'&/:# & !!KLL<<F#?:x !566 @O:7  	+"&)+V$

!!'*	+s   6-F( (AG:9G:   objc                    U R                   c   eU R                   u  p#[        UR                  S5      5      S:w  a  [        SU< 35      e[	        UR                  SS5      5      nU R
                  R                  U5      nUc  [        SU< 35      eU" X#U5      nUR                  U l        UR                  5       U l        UR                  5       U l	        UR                  5       U l
        U R                  c   eSU R                  l        g )NFilterStandardzUnknown filter: param=r  r   zUnknown algorithm: param=F)r  r*   r   rN   r"   r  rl  r  r1  r6  r:  r  r  )rh   r  r  r  r#  factoryhandlers          r<   r   PDFDocument._initialize_password  s    ***		(+,
:$'=eY%GHHeiiQ'(0044Q7?$'@	%JKK%1#002$224%446||''' %r;   r   r   ro   c                 j   UR                   U R                  ;   a  U R                  UR                      u  pEOMU R                  U5      u  pEU R                  (       a)  UR                   c   eXE4U R                  UR                   '   US-  U-   n XF   nU$ ! [         a  n[        SU< 35      UeS nAff = f)Nr   zindex too big: )ro   r  _get_objectsr  
IndexErrorr   )	rh   r   r   ro   r   r   r  r   r   s	            r<   _getobj_objstmPDFDocument._getobj_objstm  s    <<4,,,))&,,7IT1))&1IT||||///37)!!&,,/EEM	G'C 
  	G ?5)!<=3F	Gs   B 
B2B--B2c                    UR                  S5      [        La$  [        R                  (       a  [	        SU< 35      e [        [        US   5      n[        UR                  5       5      nUR                  U 5        / n  UR                  5       u  pVUR                  U5        M%  ! [         a*    [        R                  (       a  [	        SU< 35      S eSn Nf = f! [         a     XB4$ f = f)Nr   zNot a stream object: r   r   r   )r   r   r   r   r   r   rz   r   r   r   r  r   r   r'   )rh   r   r   rt   r   r   r   s          r<   r  PDFDocument._get_objects  s    ::f^3 #8
!CDD	S&+&A
 !!23D!	!,,.C    	$'9&%DE4OA	  	y	s#   B$ >&C $1CC
C*)C*r   c                 r   U R                   c   eU R                   R                  U5        U R                   R                  5       u  p4U R                   R                  5       u  p5U R                   R                  5       u  p6XB:w  aa  / nX`R                  La=  U R                   R                  5       u  p6UR	                  U5        X`R                  La  M=  [        U5      S:  a  US   nXB:w  a  [        SU< SU< 35      eU[        S5      :w  a  [        SU< 35      eU R                   R                  5       u  p8U$ )Nr   zobjid mismatch: =r   zInvalid object spec: offset=)	r  r   r   KEYWORD_OBJr   r   r   r(   r   )	rh   r   ro   r   r   r   r   r   r   s	            r<   _getobj_parsePDFDocument._getobj_parse!  s   ||'''#ll,,.ll,,.<<))+ ?A---<<113 --- 1v{2? #3F:Qui!HII#f+ #?w!GHH<<**,
r;   c                    U R                   (       d  [        S5      e[        R                  SU5        XR                  ;   a  U R                  U   u  p#U$ U R                    H  n UR                  U5      u  pVn Ub-  [        U R                  U5      5      nU R                  XvU5      nO9U R                  Xa5      nU R                  (       a  [        U R                  XU5      n[        U[        5      (       a  UR                  X5          O   [%        U5      e[        R                  SX5        U R&                  (       a  X#4U R                  U'   U$ ! [         a     M  f = f! [         ["        4 a     GM  f = f)zGet 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  rr   r   r%   getobjr
  r  r  r    r   r   	set_objidr'   r   r   r  )rh   ro   r   r   r  strmidr   r   s           r<   r  PDFDocument.getobj=  sP    zz?@@		$e, %%%,,U3LS4 
1 

-1\\%-@*VE)!-dkk&.A!B"11&G"00>==".t}}eC"PC!#y11e3! #( (..II.;||,/<!!%(
+    ~. s%   %E:BE"
EE"E76E7c                    ^ SU R                   ;  a  [        eS[        S[        S[        [
        R                     4U4S jjmT" U R                   S   S5      $ )NOutlinesentrylevelrb   c              3   n  >#    [        U 5      n SU ;   a]  SU ;   d  SU ;   aQ  [        [        U S   5      5      nU R                  S5      nU R                  S5      nU R                  S5      nXX4U4v   SU ;   a  SU ;   a  T" U S   US-   5       S h  vN   SU ;   a  T" U S   U5       S h  vN   g g  N  N7f)	NTitleADestSEFirstLastr   Next)r!   r,   r$   r   )r  r  titledestactionsesearchs         r<   r)  (PDFDocument.get_outlines.<locals>.searchk  s     u%E%SE\Vu_#IeGn$=>yy(3YYt_T266%FeO!%.%!)<<<!%-777  =7s$   BB5B1B5*B3+B53B5r   )r  rE   objectrz   r   r  OutlineType)rh   r)  s    @r<   get_outlinesPDFDocument.get_outlinesg  sR    T\\)	8& 	8 	8+:Q:Q1R 	8 dll:.22r;   c                     U R                   c   e [        U R                   S   5      nUR
                  $ ! [        [        4 a  n[        UeSnAff = f)zGenerate 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  r0  r   r   rH   labels)rh   page_labelsr   s      r<   get_page_labelsPDFDocument.get_page_labelsz  sY     ||'''	+$T\\,%?@K !!! h' 	+!s*	+s   5 AAAcatr+  c                    ^^^  [        U R                  S   5      n[        UT   5      nS[
        [        [        4   S[        4UUU4S jjmT" U5      $ ! [        [        4 a  n[	        TT45      UeS nAff = f)NNamesdrb   c           	        > SU ;   a  [        U S   5      u  pTU:  d  UT:  a  g SU ;   aQ  [        U S   5      n[        [        [        [        [
        [        -  [        4      [        SU5      5      5      nUT   $ SU ;   a1  [        U S   5       H  nT	" [        U5      5      nU(       d  M  Us  $    [        TT45      e)NLimitsr7  r   Kids)r#   rx   r   r   r{   ry   r@  r   r+   r!   r   )
r8  r  k2r   namesrC  r#  r5  r+  lookups
          r<   r>  'PDFDocument.lookup_name.<locals>.lookup  s    1}%ak28rCx!|!!G*-%eS(8"9:HQ<MN Sz!{#AfI.Az!}-Aq  / sCj))r;   )r!   r  r   r   r   rx   ry   r   )rh   r5  r+  r=  r   d0r>  s    ``   @r<   lookup_namePDFDocument.lookup_name  s    	3t||G45E c
#	*d38n 	* 	* 	*$ bz/ h' 	3sCj)s2	3s   A A9&A44A9r  c                      U R                  SU5      nU$ ! [         aM    SU R                  ;  a  [        U5      S e[	        U R                  S   5      nX;  a  [        U5      S eX1   n U$ f = f)NDests)rA  r   r  rK   r!   )rh   r  r   r@  s       r<   get_destPDFDocument.get_dest  s{    
	""7D1C 
  	dll*,T2<DLL12B~,T2<(C
	s    AA-,A-c                 r   SnUR                  5        H  nUR                  5       n[        R                  SU5        US:X  a]  [        R                  SU5        UR	                  5       (       d  [        SU< 35      e[        U5      nUS:  d  [        SU 35      eUs  $ U(       d  M  UnM     [        S5      e)	z0Internal function used to locate the first XRef.r;   zfind_xref: %rs	   startxrefzxref found: pos=%rzInvalid xref position: r   z Invalid negative xref position: Unexpected EOF)revreadlinesr   r   r   isdigitr2   rz   )rh   rt   prevr   r   s        r<   r  PDFDocument.find_xref  s     '')D::<DIIot,|#		.5||~~(+B4()KLLD	z(+KE7)STTt% *( -..r;   r   r  c                    UR                  U5        UR                  5          UR                  5       u  pE[
        R                  SX%5        [        U[        5      (       a=  UR                  U5        UR                  5         [        5       nUR                  U5        O9XQR                  L a  UR                  5         [        5       nUR                  U5        UR                  U5        UR                  5       n[
        R                  SU5        SU;   a   [!        US   5      nU R#                  XU5        SU;   a!  [!        US   5      nU R#                  XU5        gg! [         a  n[	        S5      UeSnAff = f)z$Reads XRefs from the given location.rH  Nz"read_xref_from: start=%d, token=%rr   XRefStmPrev)r   resetr   r'   r2   r   r   r   rz   r   rv   KEYWORD_XREFr   r}   r   ri   r"   r  )	rh   rt   r   r  r   tokenr   r  r   s	            r<   r  PDFDocument.read_xref_from  s7    	E	<!++-LS 			6EeS!!KKLLN -DIIf+++!9DIIfT""$		-)GI./CU3WGFO,CU3 )  	< !12;	<s   E 
E6%E11E6)r  r  r  r  r  r  r  r  r:  r6  r1  r  )ru  TTrt  ))r6   r7   r8   r9   rB   r  rW  r  r  r   rx   rz   typerv  r   ry   r0  r   r(   r  r  r   r+  r
  r{   listr  r  r  r   r,  r   r-  r3  r@  rA  rE  r  r`   r  r:   r4   r;   r<   r  r    s   
 &%''	XxS$7Q2R-R(ST  5757 57 	57
 57 
57n f+K&S &$ &"Y s 3 6 9 tF|S7H1I ( S V 8&C &F &P S#sC/0K3h{3 3&"# ""s u  8S5[ S /	 /c /6"4"4 "4 K 	"4
 
"4r;   r  c                   V    \ rS rSrSr\S\\   4S j5       r\	S\
S\S\4S j5       rSrg	)
r0  i  zOPageLabels from the document catalog.

See Section 8.3.1 in the PDF Reference.
rb   c           	   #   d  #    U R                   n[        U5      S:X  d  US   S   S:w  a4  [        R                  (       a  [	        S5      eUR                  SS0 45        [        US5       H  u  nu  p4[        U5      nUR                  S5      n[        [        UR                  SS5      5      5      n[        UR                  SS5      5      nU[        U5      :X  a  [        R                  " U5      n	OX   u  pX-
  n[        XU-   5      n	U	 H  nU R                  X5      nX~-   v   M     M     g 7f)Nr   z"PageLabels is missing page index 0r   Sr  r;   St)valuesr   r   r   r   insert	enumerater!   r   r,   r$   r"   	itertoolscountr   _format_page_label)rh   r   nextr   label_dict_unchecked
label_dictstyleprefixfirst_valuerZ  endr   range_lengthvaluelabels                  r<   r1  PageLabels.labels  s     v;!vay|q0$%IJJ a!R)3<VQ3G/D/5#$89JNN3'E :>>#s+C!DEF#JNN4$;<Ks6{" )2(D"{{,,FG//=n$   4Hs   D.D0rh  rc  c                    Uc  SnU$ U[        S5      L a  [        U 5      nU$ U[        S5      L a  [        U 5      R                  5       nU$ U[        S5      L a  [        U 5      nU$ U[        S5      L a  [	        U 5      R                  5       nU$ U[        S5      L a  [	        U 5      nU$ [
        R                  SU5        SnU$ )z+Format page label value in a specific styleru  Dr  r  r  azUnknown page label style: %r)r)   ry   r.   upperr-   r   r   )rh  rc  ri  s      r<   r_  PageLabels._format_page_label  s     =E  c#hJE  c#h$U+113E  c#h$U+E  c#h$U+113E  c#h$U+E  KK6>Er;   r4   N)r6   r7   r8   r9   rB   propertyr   ry   r1  r  rz   r   r_  r:   r4   r;   r<   r0  r0    sO    
 % % %< # c c  r;   r0  )\r]  loggingr   rU  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   	getLoggerr6   r   r2   SyntaxWarningr?   rE   rH   rK   rN   rQ   UserWarningrT   rW   rZ   r   r   r  r`   r}   r   r   r  rW  r  r  r0  r4   r;   r<   <module>r     s     	  L L / /  9 L L  $ % /  J I
 
 
 ( 4 4  !	^ 	M 	L 		l 		\ 		 		- 	;  	"4 	
 X6{i." ""L#k L#^0=g 0=fK%K K%\I* I*XF$#= F$Rz$#? z$zU4 U4p
7 7r;   