
    %oi*P              
       ~   S SK r S SKrS SKrS SKrS SKJr  S SKJrJrJ	r	J
r
Jr  S SKJrJr  S SKJr  \R"                  " \5      r\R(                  r\R*                  r\R,                  r\R.                  r\R0                  r " S S5      r " S S	\5      r " S
 S\5      r\
" S\\5      r " S S\	\   5      r\" \5      r\" \5      r\R@                  r!\R@                  r"\"" S5      r#\"" S5      r$\"" S5      r%\"" S5      r&\"" S5      r'\"" S5      r(S\S\)4S jr*S\S\4S jr+\RX                  " S5      r-\RX                  " S5      r.\RX                  " S5      r/\RX                  " S5      r0\RX                  " S5      r1\RX                  " S5      r2\RX                  " S5      r3\RX                  " S 5      r4\RX                  " S5      r5\RX                  " S!5      r6\RX                  " S"5      r7S#S$S%S&S'S(S)S*S+.r8\\9\:\\\;4   r< " S, S-5      r=\
" S.5      r>\\)\9\:\\;\?\   \@\\4   \>4   rA\B\C\A\>   4   rD " S/ S0\=\	\>   5      rEg)1    N)Iterator)AnyBinaryIOGenericTypeVarUnion)psexceptionssettings)choplistc                       \ rS rSrSrSrg)PSObject   z0Base class for all PS or PDF-related data types. N)__name__
__module____qualname____firstlineno____doc____static_attributes__r       M/var/www/html/land-ocr/venv/lib/python3.13/site-packages/pdfminer/psparser.pyr   r      s    :r   r   c                   F    \ rS rSrSr\\\4   rS\SS4S jr	S\4S jr
Srg)		PSLiteral!   aE  A class that represents a PostScript literal.

Postscript literals are used as identifiers, such as
variable names, property names and dictionary keys.
Literals are case sensitive and denoted by a preceding
slash sign (e.g. "/Name")

Note: Do not create an instance of PSLiteral directly.
Always use PSLiteralTable.intern().
namereturnNc                     Xl         g Nr   selfr   s     r   __init__PSLiteral.__init__/       	r   c                 &    U R                   nSU< 3$ N/r   r    s     r   __repr__PSLiteral.__repr__2       yy4(|r   r   )r   r   r   r   r   r   strbytesNameTyper"   r(   r   r   r   r   r   r   !   s6    	 S%Z HX $ # r   r   c                   8    \ rS rSrSrS\SS4S jrS\4S jrSr	g)		PSKeyword7   a6  A class that represents a PostScript keyword.

PostScript keywords are a dozen of predefined words.
Commands and directives in PostScript are expressed by keywords.
They are also used to denote the content boundaries.

Note: Do not create an instance of PSKeyword directly.
Always use PSKeywordTable.intern().
r   r   Nc                     Xl         g r   r   r    s     r   r"   PSKeyword.__init__B   r$   r   c                 &    U R                   nSU< 3$ r&   r   r    s     r   r(   PSKeyword.__repr__E   r*   r   r   )
r   r   r   r   r   r,   r"   r+   r(   r   r   r   r   r/   r/   7   s&    U t # r   r/   _SymbolTc                   V    \ rS rSrSrS\\   SS4S jrS\R                  S\4S jr
S	rg)
PSSymbolTableM   z{A utility class for storing PSLiteral/PSKeyword objects.

Interned objects can be checked its identity with "is" operator.
klassr   Nc                     0 U l         Xl        g r   dictr9   )r!   r9   s     r   r"   PSSymbolTable.__init__S   s    8:	%*
r   r   c                     XR                   ;   a  U R                   U   nU$ U R                  U5      nX R                   U'   U$ r   r;   )r!   r   lits      r   internPSSymbolTable.internW   s@    99))D/C 
 **T"C!IIdO
r   r;   )r   r   r   r   r   typer5   r"   r   r-   r@   r   r   r   r   r7   r7   M   s7    
+d8n + +9-- ( r   r7      {   }   [   ]s   <<s   >>xr   c                 X   [        U [        5      (       aB  [        U R                  [        5      (       a  U R                  $  [        U R                  S5      $ [
        R                  (       a  [        SU < 35      e[        U 5      $ ! [         a    [        U R                  5      s $ f = f)Nutf-8zLiteral required: )
isinstancer   r   r+   UnicodeDecodeErrorr
   STRICTPSTypeError)rG   s    r   literal_namerN   n   s    !Yaffc""66M	qvvw'' ?? 21%8991v " 	qvv;	s   B B)(B)c                     [        U [        5      (       d)  [        R                  (       a  [	        SU < 35      eU n U$ [        U R                  SS5      nU$ )NzKeyword required: rI   ignore)rJ   r/   r
   rL   rM   r+   r   )rG   r   s     r   keyword_namerQ   |   sN    a##?? 21%899D K 1667H-Kr   s   [\r\n]s   \ss   \Ss   [0-9a-fA-F]s   [#/%\[\]()<>{}\s]s   [^\s0-9a-fA-F]s   [0-9a-fA-F]{2}|.s   [^0-9]s   [()\134]s   [0-7]   	   
         (   )   \   )   b   t   n   f   r   (   )   \c                      \ rS rSrSrSrS\SS4S jrS\4S jr	S%S	 jr
S%S
 jrS\4S jrS&S\S-  S\SS4S jjrS\SS4S jrS\4S jrS\\\4   4S jrS\\   4S jrS\S\S\4S jrS\SS4S jrS\S\S\4S jrS\S\S\4S jrS\S\S\4S jrS\S\S\4S jrS\S\S\4S jrS\S\S\4S jrS\S\S\4S jr S\S\S\4S jr!S\S\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$r&g)'PSBaseParser   z=Most basic PostScript parser that performs only tokenization.i   fpr   Nc                 @    Xl         SU l        U R                  S5        g )NFr   )re   eofseekr!   re   s     r   r"   PSBaseParser.__init__   s    		!r   c                 l    SU R                   R                   SU R                  < SU R                   S3$ )N<z: z	, bufpos=>)	__class__r   re   bufposr!   s    r   r(   PSBaseParser.__repr__   s0    4>>**+2dgg[	$++aPPr   c                     g r   r   rp   s    r   flushPSBaseParser.flush       r   c                 $    U R                  5         g r   )rs   rp   s    r   closePSBaseParser.close   s    

r   c                 4    U R                   U R                  -   $ r   )ro   charposrp   s    r   tellPSBaseParser.tell   s    {{T\\))r   posnc                 N   U R                   R                  5       nU(       d  U R                  U R                  -   nU R                   R	                  U5        [
        R                  SU SU R                   R                  U5      < 35        U R                   R	                  U5        g )Nzpoll(z): )re   r{   ro   rz   rh   logdebugread)r!   r}   r~   pos0s       r   pollPSBaseParser.poll   sl    ww||~++,CS		E#c$'',,q/!456Tr   c                     [         R                  SU< 35        U R                  R                  U5        Xl        SU l        SU l        U R                  U l        SU l	        SU l
        / U l        SU l        g)z'Seeks the parser to the given position.zseek: r   r   FN)r   r   re   rh   ro   bufrz   _parse_main_parse1	_curtoken_curtokenpos_tokensrg   r!   r}   s     r   rh   PSBaseParser.seek   sb    		F3'"#S''<>r   c                 $   U R                   [        U R                  5      :  a  gU R                  R	                  5       U l        U R                  R                  U R                  5      U l        U R                  (       d  [        S5      eSU l         g)NFUnexpected EOFr   )	rz   lenr   re   r{   ro   r   BUFSIZPSEOFrp   s    r   fillbufPSBaseParser.fillbuf   s_    <<#dhh-'gglln77<<,xx())r   c                    SnU R                   U R                  -   nSn U R                  5         U(       aF  U R                  U R                  U R                  S-    nUS:X  a  X-  nU =R                  S-  sl        O[        R                  U R                  U R                  5      nU(       aM  XR                  U R                  UR                  S5       -  nUR                  S5      U l        USS S:X  a  S	nO6O8XR                  U R                  S -  n[        U R                  5      U l        GM  [        R                  S
U< SU< 35        X!4$ )z3Fetches a next line that ends either with \r or \n.r   F      
r   N   Tz
nextline: z, )
ro   rz   r   r   EOLsearchendr   r   r   )r!   linebuflineposeolcms         r   nextlinePSBaseParser.nextline   s   ++,LLNHHT\\DLL1,<=:LGLLA%L

488T\\2A88DLL1558<< uuQx23<5(C88DLLN33"488}' ( 			JwkG;78!!r   c              #     #    U R                   R                  S[        R                  5        U R                   R	                  5       nSnUS:  a  Un[        SXR                  -
  5      nU R                   R                  U5        U R                   R                  X1-
  5      nU(       d  g [        UR                  S5      UR                  S5      5      nUS:X  a  XB-   nOXES U-   v   USU nSnMG  US:  a  M  gg7f)zYFetches a next line backward.

This is used to locate the trailers at the end of a file.
r   r   r   r   r   N)	re   rh   ioSEEK_ENDr{   maxr   r   rfind)r!   r}   r   prevpossr~   s         r   revreadlinesPSBaseParser.revreadlines   s     
 	Q$ggllnAgGa{{*+CGGLLW]+A77'Ceck!bqE  Ags   C5C;9C;r   ic                 |   [         R                  X5      nU(       d  [        U5      $ UR                  S5      nXUS-    nU R                  U-   U l        US:X  a  SU l        U R                  U l        US-   $ US:X  a  SU l        U R                  U l        US-   $ US;   d  UR                  5       (       a  XPl        U R                  U l        US-   $ US:X  a  XPl        U R                  U l        US-   $ UR                  5       (       a  XPl        U R                  U l        US-   $ US:X  a$  SU l        SU l        U R                   U l        US-   $ US	:X  a  SU l        U R"                  U l        US-   $ US
:X  a  SU l        U R$                  U l        US-   $ US:X  a  US-   $ U R'                  [)        U5      5        US-   $ )Nr   r      %   /r   s   -+   .r_      <   >    )NONSPCr   r   startro   r   r   _parse_commentr   _parse_literalisdigit_parse_number_parse_floatisalpha_parse_keywordparen_parse_string_parse_wopen_parse_wclose
_add_tokenKWDr!   r   r   r   jr   s         r   r   PSBaseParser._parse_main  s   MM!q6MGGAJ!a%L KK!O9!DN..DLq5L$Y DN..DLq5L%Z199;;N--DLq5L$YN,,DLq5LYY[[N..DLq5L$Y DNDJ--DLq5L$Y DN,,DLq5L$Y DN--DLq5L'\q5LOOCF#q5Lr   objc                 R    U R                   R                  U R                  U45        g r   )r   appendr   )r!   r   s     r   r   PSBaseParser._add_token<  s    T..45r   c                     [         R                  X5      nU(       d"  U =R                  XS  -  sl        [        U5      $ UR	                  S5      nU =R                  XU -  sl        U R
                  U l        U$ Nr   )r   r   r   r   r   r   r   r!   r   r   r   r   s        r   r   PSBaseParser._parse_comment?  sa    JJqNNae#Nq6MGGAJ!a& '' r   c                    [         R                  X5      nU(       d"  U =R                  XS  -  sl        [        U5      $ UR	                  S5      nU =R                  XU -  sl        XUS-    nUS:X  a  SU l        U R                  U l        US-   $  [        U R                  S5      nU R                  [        U5      5        U R                  U l        U$ ! [         a    U R                  n NEf = f)Nr   r      #r   rI   )END_LITERALr   r   r   r   hex_parse_literal_hexr   r+   	Exceptionr   LITr   )r!   r   r   r   r   r   r   s          r   r   PSBaseParser._parse_literalK  s    q$NNae#Nq6MGGAJ!a& !a%L9DH22DLq5L	" #DNNG <D 	D	"''	  	">>D	"s   C C.-C.c                 X   XUS-    n[         R                  U5      (       a3  [        U R                  5      S:  a  U =R                  U-  sl        US-   $ U R                  (       a3  U =R                  [        [        U R                  S5      45      -  sl        U R                  U l        U$ )Nr         )	HEXmatchr   r   r   r,   intr   r   r!   r   r   r   s       r   r   PSBaseParser._parse_literal_hex_  s{    !a%L99Q<<CMA-HHMHq5L88NNeS2%6$899N**r   c                    [         R                  X5      nU(       d"  U =R                  XS  -  sl        [        U5      $ UR	                  S5      nU =R                  XU -  sl        XUS-    nUS:X  a+  U =R                  U-  sl        U R
                  U l        US-   $ [        R                  " [        5         U R                  [        U R                  5      5        S S S 5        U R                  U l        U$ ! , (       d  f       N!= f)Nr   r   r   )
END_NUMBERr   r   r   r   r   r   
contextlibsuppress
ValueErrorr   r   r   r   s         r   r   PSBaseParser._parse_numberi  s    a#NNae#Nq6MGGAJ!a& !a%L9NNaN,,DLq5L  ,OOC/0 -'' -,s   9%C99
Dc                    [         R                  X5      nU(       d"  U =R                  XS  -  sl        [        U5      $ UR	                  S5      nU =R                  XU -  sl        [
        R                  " [        5         U R                  [        U R                  5      5        S S S 5        U R                  U l        U$ ! , (       d  f       N!= fr   )r   r   r   r   r   r   r   r   r   floatr   r   r   s        r   r   PSBaseParser._parse_floatz  s    a#NNae#Nq6MGGAJ!a&   ,OOE$..12 -'' -,s   %C
Cc                    [         R                  X5      nU(       a)  UR                  S5      nU =R                  XU -  sl        O"U =R                  XS  -  sl        [	        U5      $ U R                  S:X  a  SnO(U R                  S:X  a  SnO[        U R                  5      nU R                  U5        U R                  U l        U$ )Nr   s   trueTs   falseF)	END_KEYWORDr   r   r   r   r   r   r   r   r!   r   r   r   r   tokens         r   r   PSBaseParser._parse_keyword  s    q$
ANNa!f$NNNae#Nq6M>>W$&*E^^x'E'E''r   c                 z   [         R                  X5      nU(       d"  U =R                  XS  -  sl        [        U5      $ UR	                  S5      nU =R                  XU -  sl        XUS-    nUS:X  a  SU l        U R                  U l        US-   $ US:X  a/  U =R                  S-  sl        U =R                  U-  sl        US-   $ US:X  a@  U =R                  S-  sl        U R                  (       a  U =R                  U-  sl        US-   $ U R                  U R                  5        U R                  U l        US-   $ )Nr   r   ra   r   r_   r`   )
END_STRINGr   r   r   r   oct_parse_string_1r   r   r   r   r   s         r   r   PSBaseParser._parse_string  s   a#NNae#Nq6MGGAJ!a& !a%L:DH//DLq5L9JJ!OJNNaNq5L9JJ!OJzz!#1u'''1ur   c                 ~   XUS-    n[         R                  U5      (       a3  [        U R                  5      S:  a  U =R                  U-  sl        US-   $ U R                  (       ag  [	        U R                  S5      nUS:  d   SU R                  < SU S35       eU =R
                  [        U45      -  sl        U R                  U l        U$ U[        ;   a'  U =R
                  [        [        U   45      -  sl        O+US:X  a%  [        U5      US-   :  a  XS-   US	-    S
:X  a  US-  nU R                  U l        US-   $ )z+Parse literal strings

PDF Reference 3.2.3
r      rR      zInvalid octal z ()r   r   r   )

OCT_STRINGr   r   r   r   r   r,   r   r   
ESC_STRING)r!   r   r   r   chrcodes        r   r   PSBaseParser._parse_string_1  s   
 !a%LA3txx=1#4HHMHq5LXX$((A&GS=KN488,b	"KK=NNeWJ//N--DLH*_NNeZ]$455N%ZCFQUNqQQ/?5/H FA ))1ur   c                     XUS-    nUS:X  a-  U R                  [        5        U R                  U l        US-  nU$ U R                  U l        U$ )Nr   r   )r   KEYWORD_DICT_BEGINr   r   _parse_hexstringr   s       r   r   PSBaseParser._parse_wopen  sT    !a%L9OO./++DLFA   00DLr   c                 v    XUS-    nUS:X  a  U R                  [        5        US-  nU R                  U l        U$ )Nr   r   )r   KEYWORD_DICT_ENDr   r   r   s       r   r   PSBaseParser._parse_wclose  s>    !a%L9OO,-FA''r   c                    [         R                  X5      nU(       d"  U =R                  XS  -  sl        [        U5      $ UR	                  S5      nU =R                  XU -  sl        [
        R                  S [        R                  SU R                  5      5      nU R                  U5        U R                  U l
        U$ )Nr   c                 L    [        [        U R                  S5      S5      45      $ )Nr   r   )r,   r   group)r   s    r   <lambda>/PSBaseParser._parse_hexstring.<locals>.<lambda>  s    eSR023r   r   )END_HEX_STRINGr   r   r   r   HEX_PAIRsubSPCr   r   r   r   s         r   r   PSBaseParser._parse_hexstring  s    !!!'NNae#Nq6MGGAJ!a& 3GGC(
 	''r   c                 >   U R                   (       a  [        S5      eU R                  (       d{   U R                  5       nU(       a$  U R                  (       a  U R                  SS5        O,U R                  U R                  U R                  5      U l         U R                  (       d  M{  U R                  R                  S5      n[        R                  SU< 35        U$ ! [         a3    U R                  SS5      U l        SU l         U R                  (       d  e  Nf = f)Nr   r   r   Tznexttoken: )rg   r   r   r   r   r   r   rz   popr   r   )r!   changed_streamr   s      r   	nexttokenPSBaseParser.nexttoken  s    88()),,!%!dnn LL*#'<<$,,#GDL ,,,$   #		Ky)*    $||E15|| $s   :C *+C :DD)r   r   r   r   r   ro   rz   rg   re   r   r   r   r   N)NP   )'r   r   r   r   r   r   r   r"   r+   r(   rs   rw   r   r{   r   rh   boolr   tupler,   r   r   r   r   PSBaseParserTokenr   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   rc   rc      s   GF8  
Q# Q*c *d
 c 4   	 	"%U
+ ":huo 0,U ,s ,s ,\6/ 6D 6
 
# 
# 
 # # (E c c u   "
e 
 
 
 # # $u   4 3 3 :e   u   % C C 5&7!78 r   rc   ExtraTc                      \ rS rSrS\SS4S jrSS jrS\SS4S jrS	\	\
   SS4S
 jrS\S\\	\
      4S jrS\\	\
      4S jrS	\	\
   SS4S jrS\S\SS4S jrS\S\\\\\
      4   4S jrS\S\SS4S jrS\	\
   4S jrSrg)PSStackParseri  re   r   Nc                 N    [         R                  X5        U R                  5         g r   )rc   r"   resetri   s     r   r"   PSStackParser.__init__  s    d'

r   c                 <    / U l         S U l        / U l        / U l        g r   )contextcurtypecurstackresultsrp   s    r   r  PSStackParser.reset  s    QS#'4635r   r}   c                 N    [         R                  X5        U R                  5         g r   )rc   rh   r  r   s     r   rh   PSStackParser.seek#  s    $$

r   objsc                 :    U R                   R                  U5        g r   )r  extendr!   r$  s     r   pushPSStackParser.push'  s    T"r   r~   c                 F    U R                   U* S  n/ U R                   U* S & U$ r   r  )r!   r~   r$  s      r   r  PSStackParser.pop*  s+    }}aRS!qbcr   c                 ,    U R                   n/ U l         U$ r   r+  r'  s     r   popallPSStackParser.popall/  s    }}r   c                      [         R                  SU< 35        U R                  R	                  U5        g ! [         a    [         R                  S5         N=f = f)Nzadd_results: z!add_results: (unprintable object))r   r   r   r   r&  r'  s     r   add_resultsPSStackParser.add_results4  sL    	;IIdX./ 	D!  	;II9:	;s   7 AArB   c                     U R                   R                  XR                  U R                  45        U/ sU l        U l        [        R                  SU< SU< 35        g )Nzstart_type: pos=, type=)r  r   r  r  r   r   )r!   r}   rB   s      r   
start_typePSStackParser.start_type;  sK    S,,>?)-r%t}		$SG74(;<r   c                 >   U R                   U:w  a  [        SU R                   < SU< 35      eU R                   VVs/ s H  u  p#UPM	     nnnU R                  R	                  5       u  oPl         U l        [
        R                  SU< SU< SU< 35        XT4$ s  snnf )NzType mismatch: z != zend_type: pos=r4  z, objs=)r  rM   r  r  r  r   r   )r!   rB   _r   r$  r}   s         r   end_typePSStackParser.end_type@  s    <<4/?tD8LMM$(MM2MM2-1\\-=-=-?*lDM		N3'xHI{ 3s   Br   c                     g r   r   )r!   r}   r   s      r   
do_keywordPSStackParser.do_keywordH  ru   r   c           	      |   U R                   (       GdV  U R                  5       u  p[        U[        [        [
        [        [        [        45      (       a  U R                  X45        GOU[        :X  a  U R                  US5        GOU[        :X  a#   U R                  U R                  S5      5        GO~U["        :X  a  U R                  US5        GO`U[$        :X  ay   U R                  S5      u  p['        U5      S-  S:w  a  SU< 3n[)        U5      e[+        SU5       VVs0 s H  u  pVUc  M
  [-        U5      U_M     nnnU R                  X45        OU[.        :X  a  U R                  US5        OU[0        :X  a"   U R                  U R                  S5      5        O[        U[2        5      (       a=  [4        R7                  SU< SU< S	U R8                  < 35        U R;                  X5        OB[4        R=                  S
U< SU< S	U R8                  < 35        U R;                  X5        [>        eU R@                  (       a  GMD  U RC                  5         U R                   (       d  GMV  U R                   RE                  S5      n [4        R7                  SU< 35        U$ ! [         a    [        R                   (       a  e  Nf = fs  snnf ! [         a    [        R                   (       a  e  Nf = f! [         a    [        R                   (       a  e  Nf = f! [F         a    [4        R7                  S5         U$ f = f)zYields a list of objects.

Arrays and dictionaries are represented as Python lists and
dictionaries.

:return: keywords, literals, strings, numbers, arrays and dictionaries.
adr   r   zInvalid dictionary construct: pzdo_keyword: pos=z, token=z, stack=zunknown token: pos=znextobject: z nextobject: (unprintable object))$r   r  rJ   r   r   r  r+   r,   r   r(  KEYWORD_ARRAY_BEGINr5  KEYWORD_ARRAY_ENDr9  rM   r
   rL   r   r   r   PSSyntaxErrorr   rN   KEYWORD_PROC_BEGINKEYWORD_PROC_ENDr/   r   r   r  r<  errorPSExceptionr  rs   r  r   )	r!   r}   r   r$  	error_msgkvr@  r   s	            r   
nextobjectPSStackParser.nextobjectK  s    ,,,>>+LS%#udC	!JKK		3,'--S)++IIdmmC01 ,,S)**"&--"4KS4y1})&DTH$M	+I66 '/q$&7&7FQ +Q*&7  
 IIsh' ,,S)**IIdmmC01 E9--		&sgXeYht}}FWX +		)# 1"IXdmm->@ +!!||

w ,,,x llq!	:IISG,- 
k #  ' #  ' #  ',  	:II89
	:sa    J  AK !	K.K>K < K2 L   KKK  K/.K/2 LLL;:L;)r  r  r  r   r  )r   r   r   r   r   r"   r  r   rh   PSStackEntryr  r(  listr  r.  r1  r+   r5  r  PSStackTyper9  r/   r<  rL  r   r   r   r   r  r    s    8  6  #,v. #4 #S T,v"67 
\&12 
"f!5 "$ "=c = = =
S U3[5H0I+I%J c )  IL0 Ir   r  )Fr   r   loggingrecollections.abcr   typingr   r   r   r   r   pdfminerr	   r
   pdfminer.utilsr   	getLoggerr   r   rH  r   rD  rM   PSValueErrorr   r   r/   r5   r7   PSLiteralTablePSKeywordTabler@   r   r   rE  rF  rB  rC  r   r   r+   rN   rQ   compiler   r
  r   r   r   r  r  r   r   r   r   r   r   r  r,   r  rc   r  rO  r<   rP  r  r   rN  r  r   r   r   <module>r\     s    	  	 $  , #! &&**&&((; ; , & :y)4GH% * y)y)Y t9 $i I Z u: C C C C  	jjjj	F	jj!jj././::*+ZZ
#
jj./ZZ%
ZZ	"







	
 %y)UBC g g` 
	iS	4S>6I S+f--.|L'&/ |r   