
    ,hC              	          d dl Z d dlZd dlZddlmZ ddlmZ  ej                  e      Z	 G d de
      Z G d de      Z G d	 d
e      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z ee      Z ee      Zej.                  Zej.                  Z ed      Z ed      Z ed      Z ed      Z ed      Z ed      Zd Z d Z! e jD                  d      Z# e jD                  d       Z$ e jD                  d!      Z% e jD                  d"      Z& e jD                  d#      Z' e jD                  d$      Z( e jD                  d%      Z) e jD                  d&      Z* e jD                  d#      Z+ e jD                  d'      Z, e jD                  d(      Z-d)d*d+d,d-d.d/d0d1Z. G d2 d3e      Z/ G d4 d5e/      Z0y)6    N   )settings)choplistc                       e Zd Zy)PSExceptionN__name__
__module____qualname__     S/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/pdfminer/psparser.pyr   r          r   r   c                       e Zd Zy)PSEOFNr   r   r   r   r   r      r   r   r   c                       e Zd Zy)PSSyntaxErrorNr   r   r   r   r   r      r   r   r   c                       e Zd Zy)PSTypeErrorNr   r   r   r   r   r      r   r   r   c                       e Zd Zy)PSValueErrorNr   r   r   r   r   r   "   r   r   r   c                       e Zd ZdZy)PSObjectz0Base class for all PS or PDF-related data types.N)r	   r
   r   __doc__r   r   r   r   r   +   s    :r   r   c                       e Zd ZdZd Zd Zy)	PSLiteralaa  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().
    c                     || _         y Nnameselfr    s     r   __init__zPSLiteral.__init__A   s	    	r   c                 $    | j                   }d|z  S Nz/%rr   r!   s     r   __repr__zPSLiteral.__repr__D       YYt|r   Nr	   r
   r   r   r#   r&   r   r   r   r   r   4   s    	r   r   c                       e Zd ZdZd Zd Zy)	PSKeywordaN  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().
    c                     || _         y r   r   r!   s     r   r#   zPSKeyword.__init__W   s    	r   c                 $    | j                   }d|z  S r%   r   r!   s     r   r&   zPSKeyword.__repr__[   r'   r   Nr(   r   r   r   r*   r*   K   s    r   r*   c                       e Zd ZdZd Zd Zy)PSSymbolTablezA utility class for storing PSLiteral/PSKeyword objects.

    Interned objects can be checked its identity with "is" operator.
    c                      i | _         || _        y r   dictklass)r"   r2   s     r   r#   zPSSymbolTable.__init__i   s    	
r   c                     || j                   v r| j                   |   }|S | j                  |      }|| j                   |<   |S r   r0   )r"   r    lits      r   internzPSSymbolTable.internn   sD    499))D/C 
 **T"C!DIIdO
r   N)r	   r
   r   r   r#   r5   r   r   r   r.   r.   b   s    

r   r.      {   }   [   ]s   <<s   >>c                     t        | t              s"t        j                  rt	        d|       | }|S | j
                  }t        j                  r	 t        |d      }|S |S #  Y |S xY w)NzLiteral required: utf-8)	
isinstancer   r   STRICTr   r    sixPY3strxr    s     r   literal_namerC      sj    a#??;<<D K VV774( K4KKs   A   A%c                     t        | t              s"t        j                  rt	        d| z        | }|S | j
                  }t        j                  rt        |dd      }|S )NzKeyword required: %rr;   ignore)	r<   r*   r   r=   r   r    r>   r?   r@   rA   s     r   keyword_namerF      sU    a#??4q899D
 K VV77tGH-D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                       e Zd ZdZdZd Zd Zd Zd Zd Z	dd	Z
d
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)PSBaseParserzBMost basic PostScript parser that performs only tokenization.
    i   c                 4    || _         | j                  d       y Nr   )fpseekr"   r[   s     r   r#   zPSBaseParser.__init__   s    		!r   c                 b    d| j                   j                  | j                  | j                  fz  S )Nz<%s: %r, bufpos=%d>)	__class__r	   r[   bufposr"   s    r   r&   zPSBaseParser.__repr__   s&    $(?(?$++'VVVr   c                      y r   r   ra   s    r   flushzPSBaseParser.flush       r   c                 $    | j                          y r   )rc   ra   s    r   closezPSBaseParser.close   s    

r   c                 4    | j                   | j                  z   S r   )r`   charposra   s    r   tellzPSBaseParser.tell   s    {{4<<''r   Nc                 :   | j                   j                         }|s| j                  | j                  z   }| j                   j	                  |       t
        j                  d|| j                   j                  |             | j                   j	                  |       y )Nzpoll(%d): %r)r[   ri   r`   rh   r\   loginforead)r"   posnpos0s       r   pollzPSBaseParser.poll   se    ww||~++dll*CSdggll1o6Tr   c                     t         j                  d|       | j                  j                  |       || _        d| _        d| _        | j                  | _        d| _	        d| _
        g | _        y)z0Seeks the parser to the given position.
        zseek: %rr   r   N)rk   debugr[   r\   r`   bufrh   _parse_main_parse1	_curtoken_curtokenpos_tokensr"   rn   s     r   r\   zPSBaseParser.seek   s]     			*c"S''r   c                    | j                   t        | j                        k  ry | j                  j	                         | _        | j                  j                  | j                        | _        | j                  st        d      d| _         y )NzUnexpected EOFr   )	rh   lenrt   r[   ri   r`   rm   BUFSIZr   ra   s    r   fillbufzPSBaseParser.fillbuf   s_    <<#dhh-'gglln77<<,xx())r   c                    d}| j                   | j                  z   }d}	 | j                          |rF| j                  | j                  | j                  dz    }|dk(  r||z  }| xj                  dz  c_        nt        j                  | j                  | j                        }|rM|| j                  | j                  |j                  d       z  }|j                  d      | _        |dd dk(  rd	}n7n8|| j                  | j                  d z  }t        | j                        | _        	t        j                  d
||       ||fS )z<Fetches a next line that ends either with \r or \n.
        r   Fr      
r   N   Tznextline: %r, %r)
r`   rh   r~   rt   EOLsearchendr|   rk   rs   )r"   linebuflineposeolcms         r   nextlinezPSBaseParser.nextline   s    ++,LLNHHT\\$,,q.9:qLGLLA%L

488T\\2A488DLLq:: uuQx23<5(C488DLLM22"488}' ( 			$gw7!!r   c              #     K   | j                   j                  dd       | j                   j                         }d}d|k  r|}t        d|| j                  z
        }| j                   j                  |       | j                   j                  ||z
        }|s	 y	 t        |j                  d      |j                  d            }|dk(  r||z   }n||d |z    |d| }d}Gd|k  ryw)ziFetches a next line backword.

        This is used to locate the trailers at the end of a file.
        r      r   r   r   r   N)r[   r\   ri   maxr}   rm   rfind)r"   rn   rt   prevpossro   s         r   revreadlineszPSBaseParser.revreadlines  s     
 	Qgglln#gGaT[[)CGGLLWS[)A 	 77c'Ceck!bqE  #g 	s   C#C'&C'c                 B   t         j                  ||      }|st        |      S |j                  d      }|||dz    }| j                  |z   | _        |dk(  rd| _        | j                  | _        |dz   S |dk(  rd| _        | j                  | _        |dz   S |dv s|j                         r|| _        | j                  | _        |dz   S |dk(  r|| _        | j                  | _        |dz   S |j                         r|| _        | j                  | _        |dz   S |dk(  r$d| _        d| _        | j                   | _        |dz   S |d	k(  rd| _        | j"                  | _        |dz   S |d
k(  rd| _        | j$                  | _        |dz   S | j'                  t)        |             |dz   S )Nr   r      %   /r   s   -+   .rT      <   >)NONSPCr   r|   startr`   rx   rw   _parse_commentrv   _parse_literalisdigit_parse_number_parse_floatisalpha_parse_keywordparen_parse_string_parse_wopen_parse_wclose
_add_tokenKWDr"   r   ir   jr   s         r   ru   zPSBaseParser._parse_main!  s   MM!Qq6MGGAJa!H KKM9!DN..DLQ3J$Y DN..DLQ3J%Z199;DN--DLQ3J$YDN,,DLQ3JYY[DN..DLQ3J$Y DNDJ--DLQ3J$Y DN,,DLQ3J$Y DN--DLQ3JOOCF#Q3Jr   c                 R    | j                   j                  | j                  |f       y r   )ry   appendrx   )r"   objs     r   r   zPSBaseParser._add_tokenM  s"    T..45r   c                     t         j                  ||      }|s#| xj                  ||d  z  c_        t        |      S |j	                  d      }| xj                  ||| z  c_        | j
                  | _        |S rZ   )r   r   rw   r|   r   ru   rv   r"   r   r   r   r   s        r   r   zPSBaseParser._parse_commentQ  sg    JJq!NNae#Nq6MGGAJ!Aa& '' r   c                    t         j                  ||      }|s#| xj                  ||d  z  c_        t        |      S |j	                  d      }| xj                  ||| z  c_        |||dz    }|dk(  rd| _        | j                  | _        |dz   S 	 t        | j                  d      | _        | j                  t        | j                               | j                  | _        |S #  Y ;xY w)Nr   r      #r   r;   )END_LITERALr   rw   r|   r   hex_parse_literal_hexrv   r@   r   LITru   r   s         r   r   zPSBaseParser._parse_literal]  s    q!$NNae#Nq6MGGAJ!Aa& a!H9DH22DLQ3J	t~~g6DN 	DNN+,''		s   C" "C&c                 V   |||dz    }t         j                  |      r2t        | j                        dk  r| xj                  |z  c_        |dz   S | j                  r<| xj                  t        j                  t        | j                  d            z  c_        | j                  | _	        |S )Nr   r      )
HEXmatchr|   r   rw   r>   int2byteintr   rv   r"   r   r   r   s       r   r   zPSBaseParser._parse_literal_hexq  s|    a!H99Q<CMA-HHMHQ3J88NNcll3txx+<==N**r   c                    t         j                  ||      }|s#| xj                  ||d  z  c_        t        |      S |j	                  d      }| xj                  ||| z  c_        |||dz    }|dk(  r+| xj                  |z  c_        | j
                  | _        |dz   S 	 | j                  t        | j                               | j                  | _        |S # t        $ r Y w xY w)Nr   r   r   )
END_NUMBERr   rw   r|   r   r   rv   r   r   
ValueErrorru   r   s         r   r   zPSBaseParser._parse_number{  s    a#NNae#Nq6MGGAJ!Aa& a!H9NNaN,,DLQ3J	OOC/0 ''  		s   $C 	C! C!c                 X   t         j                  ||      }|s#| xj                  ||d  z  c_        t        |      S |j	                  d      }| xj                  ||| z  c_        	 | j                  t        | j                               | j                  | _	        |S # t        $ r Y w xY wrZ   )
r   r   rw   r|   r   r   floatr   ru   rv   r   s        r   r   zPSBaseParser._parse_float  s    a#NNae#Nq6MGGAJ!Aa& 	OOE$..12 ''  		s   &$B 	B)(B)c                    t         j                  ||      }|s#| xj                  ||d  z  c_        t        |      S |j	                  d      }| xj                  ||| z  c_        | j                  dk(  rd}n'| j                  dk(  rd}nt        | j                        }| j                  |       | j                  | _        |S )Nr   s   trueTs   falseF)	END_KEYWORDr   rw   r|   r   r   r   ru   rv   r"   r   r   r   r   tokens         r   r   zPSBaseParser._parse_keyword  s    q!$NNae#Nq6MGGAJ!Aa& >>W$E^^x'E'E''r   c                 h   t         j                  ||      }|s#| xj                  ||d  z  c_        t        |      S |j	                  d      }| xj                  ||| z  c_        |||dz    }|dk(  rd| _        | j                  | _        |dz   S |dk(  r/| xj                  dz  c_        | xj                  |z  c_        |dz   S |dk(  r;| xj                  dz  c_        | j                  r| xj                  |z  c_        |dz   S | j                  | j                         | j                  | _        |dz   S )Nr   r   rV   r   rT   rU   )
END_STRINGr   rw   r|   r   oct_parse_string_1rv   r   r   ru   r   s         r   r   zPSBaseParser._parse_string  s   a#NNae#Nq6MGGAJ!Aa& a!H:DH//DLQ3J9JJ!OJNNaNQ3J9JJ!OJzz!#s
'''s
r   c                    |||dz    }t         j                  |      r2t        | j                        dk  r| xj                  |z  c_        |dz   S | j                  rO| xj                  t        j                  t        | j                  d            z  c_        | j                  | _	        |S |t        v r/| xj                  t        j                  t        |         z  c_        | j                  | _	        |dz   S )Nr      rG   )
OCT_STRINGr   r|   r   rw   r>   r   r   r   rv   
ESC_STRINGr   s       r   r   zPSBaseParser._parse_string_1  s    a!HA3txx=1#4HHMHQ3J88NNcll3txx+;<<N--DLH
?NNcll:a=99N))s
r   c                     |||dz    }|dk(  r-| j                  t               | j                  | _        |dz  }|S | j                  | _        |S )Nr   r   )r   KEYWORD_DICT_BEGINru   rv   _parse_hexstringr   s       r   r   zPSBaseParser._parse_wopen  sV    a!H9OO./++DLFA   00DLr   c                 v    |||dz    }|dk(  r| j                  t               |dz  }| j                  | _        |S )Nr   r   )r   KEYWORD_DICT_ENDru   rv   r   s       r   r   zPSBaseParser._parse_wclose  s@    a!H9OO,-FA''r   c                 |   t         j                  ||      }|s#| xj                  ||d  z  c_        t        |      S |j	                  d      }| xj                  ||| z  c_        t
        j                  d t        j                  d| j                              }| j                  |       | j                  | _
        |S )Nr   c                 ^    t        j                  t        | j                  d      d            S )Nr   r   )r>   r   r   group)r   s    r   <lambda>z/PSBaseParser._parse_hexstring.<locals>.<lambda>  s    s||C
B4G'H r   r   )END_HEX_STRINGr   rw   r|   r   HEX_PAIRsubSPCr   ru   rv   r   s         r   r   zPSBaseParser._parse_hexstring  s    !!!Q'NNae#Nq6MGGAJ!Aa& HQTVZVdVdIef''r   c                    | j                   sH| j                          | j                  | j                  | j                        | _        | j                   sH| j                   j                  d      }t        j                  d|       |S )Nr   znexttoken: %r)ry   r~   rv   rt   rh   poprk   rs   )r"   r   s     r   	nexttokenzPSBaseParser.nexttoken  s^    ,,LLN<<$,,?DL ,,   #		/5)r   )NP   )r	   r
   r   r   r}   r#   r&   rc   rf   ri   rq   r\   r~   r   r   ru   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rX   rX      s    F
W( 	"<2*X
(&"2
r   rX   c                   N    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zy)PSStackParserc                 P    t         j                  | |       | j                          y r   )rX   r#   resetr]   s     r   r#   zPSStackParser.__init__  s    dB'

r   c                 <    g | _         d | _        g | _        g | _        y r   )contextcurtypecurstackresultsra   s    r   r   zPSStackParser.reset  s!    r   c                 P    t         j                  | |       | j                          y r   )rX   r\   r   rz   s     r   r\   zPSStackParser.seek  s    $$

r   c                 :    | j                   j                  |       y r   )r   extendr"   objss     r   pushzPSStackParser.push  s    T"r   c                 F    | j                   | d  }g | j                   | d  |S r   r   )r"   ro   r   s      r   r   zPSStackParser.pop  s+    }}aRS!qbcr   c                 ,    | j                   }g | _         |S r   r   r   s     r   popallzPSStackParser.popall  s    }}r   c                     	 t         j                  d|       | j                  j                  |       y #  t         j                  d       Y 5xY w)Nzadd_results: %rz!add_results: (unprintable object))rk   rs   r   r   r   s     r   add_resultszPSStackParser.add_results  sA    	;II'. 	D!	;II9:s	   4 Ac                     | j                   j                  || j                  | j                  f       |g c| _        | _        t        j                  d||       y )Nzstart_type: pos=%r, type=%r)r   r   r   r   rk   rs   )r"   rn   types      r   
start_typezPSStackParser.start_type&  sG    S$,,>?)-r%t}		/d;r   c                 &   | j                   |k7  rt        d| j                   d|      | j                  D cg c]  \  }}|	 }}}| j                  j	                         \  }| _         | _        t
        j                  d|||       ||fS c c}}w )NzType mismatch: z != z"end_type: pos=%r, type=%r, objs=%r)r   r   r   r   r   rk   rs   )r"   r   _r   r   rn   s         r   end_typezPSStackParser.end_type,  s|    <<44<<NOO$(MM2C22-1\\-=-=-?*dlDM		6T4HT{ 3s   Bc                      y r   r   )r"   rn   r   s      r   
do_keywordzPSStackParser.do_keyword4  rd   r   c           	         | j                   s0| j                         \  }}t        |t        j                  t
        t        t        j                  t        j                  t        f      r| j                  ||f       n|t        k(  r| j                  |d       nw|t        k(  r#	 | j                  | j                  d             nK|t$        k(  r| j                  |d       n.|t&        k(  rd	 | j                  d      \  }}t)        |      dz  dk7  rt+        d|z        t-        d t/        d|      D              }| j                  ||f       n|t0        k(  r| j                  |d       n|t2        k(  r"	 | j                  | j                  d             nzt        |t4              r5t6        j9                  d||| j:                         | j=                  ||       n5t6        j?                  d	||| j:                         | j=                  ||        | j@                  r| jC                          | j                   s0| j                   jE                  d      }	 t6        j9                  d
|       |S # t        $ r t         j"                  r Y |w xY w# t        $ r t         j"                  r Y w xY w# t        $ r t         j"                  r Y w xY w#  t6        j9                  d       Y |S xY w)zYields a list of objects.

        Returns keywords, literals, strings, numbers, arrays and dictionaries.
        Arrays and dictionaries are represented as Python lists and dictionaries.
        adr   r   z Invalid dictionary construct: %rc              3   B   K   | ]  \  }}|	t        |      |f  y wr   )rC   ).0kvs      r   	<genexpr>z+PSStackParser.nextobject.<locals>.<genexpr>W  s#     cfq!UVUbl1oq1cs   
pz&do_keyword: pos=%r, token=%r, stack=%rz)unknown token: pos=%r, token=%r, stack=%rznextobject: %rz nextobject: (unprintable object))#r   r   r<   r>   integer_typesr   boolstring_typesbinary_typer   r   KEYWORD_ARRAY_BEGINr   KEYWORD_ARRAY_ENDr   r   r   r=   r   r   r|   r   r1   r   KEYWORD_PROC_BEGINKEYWORD_PROC_ENDr*   rk   rs   r   r   errorr   rc   r   )r"   rn   r   r   r   r   s         r   
nextobjectzPSStackParser.nextobject7  ss    ,,>>+LS%%#"3"3UD#BRBRTWTcTcen!op		3,'--S)++IIdmmC01 ,,S)**	"&--"4KS$4y1})+,NQU,UVVcD@QccAIIsAh' ,,S)**IIdmmC01 E),		BCPTP]P]^U+		EsESWS`S`aU+||

g ,,h llq!	:II&, 
Y #  ' #  ' #  '"	:II89
sC   % I2 .A"J 7 J2 K 2JJJ/.J/2KKK,N)r	   r
   r   r#   r   r\   r   r   r   r   r   r   r   r  r   r   r   r   r     s9    



?r   r   )1reloggingr>    r   utilsr   	getLoggerr	   rk   	Exceptionr   r   r   r   r   objectr   r   r*   r.   PSLiteralTablePSKeywordTabler5   r   r   r  r  r	  r
  r   r   rC   rF   compiler   r   r   r   r   r   r   r   r   r   r   r   rX   r   r   r   r   <module>r     s  
 
  
  g!
	) 		K 		K 		+ 		; 		v 	 . .F ( y)y)Y t9 $i I Z u: 
 bjjbjj	F	bjj!bjj././2::*+RZZ
#
bjj./RZZ%
RZZ	"
Qb"BbY[\
J6 J^
yL yr   