
    .i                        d dl Z d dlZd dlmZ d dlmZmZmZmZm	Z	m
Z
mZmZ d dlmZ d dlmZmZmZmZmZ d dlmZmZmZ d dlmZmZ d dlmZmZ d d	lm Z m!Z! d d
l"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z( d dl)m*Z* d dl+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2 d dl3m4Z4m5Z5 d dl6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z> d dl?m@Z@mAZAmBZBmCZCmDZDmEZEmFZF  e jG        eH          ZI G d de           ZJ G d de           ZK e8d          ZL e8d          ZM e8d          ZN e8d          ZO e8d          ZP G d d          ZQeeRe
eReReRf         e
eReReReRf         f         ZS G d d          ZT G d d          ZU G d d e;ee9e.f                            ZVe<e.         ZW	  G d! d"          ZXdS )#    N)BytesIO)DictListMappingOptionalSequenceTupleUnioncast)settings)	safe_cmyk
safe_floatsafe_intsafe_matrixsafe_rgb)CMapCMapBaseCMapDB)PREDEFINED_COLORSPACEPDFColorSpace)	PDFDevice
PDFTextSeq)PDFExceptionPDFValueError)
PDFCIDFontPDFFontPDFFontErrorPDFTrueTypeFontPDFType1FontPDFType3Font)PDFPage)LITERALS_ASCII85_DECODE	PDFObjRef	PDFStream
dict_value
list_valueresolve1stream_value)PSEOFPSTypeError)KWDLIT	PSKeyword	PSLiteralPSStackParserPSStackTypekeyword_nameliteral_name)MATRIX_IDENTITYMatrixPathSegmentPointRectchoplistmult_matrixc                       e Zd ZdS )PDFResourceErrorN__name__
__module____qualname__     N/var/www/html/analyses/venv/lib/python3.11/site-packages/pdfminer/pdfinterp.pyr;   r;   6           DrA   r;   c                       e Zd ZdS )PDFInterpreterErrorNr<   r@   rA   rB   rE   rE   :   rC   rA   rE   PDFTextFontFormImagec                   H    e Zd ZU eed<   eed<   d	dZdefdZd
dZ	d	dZ
dS )PDFTextStatematrix
linematrixreturnNc                     d | _         d| _        d| _        d| _        d| _        d| _        d| _        d| _        |                                  d S )Nr   d   )	fontfontsize	charspace	wordspacescalingleadingrenderriseresetselfs    rB   __init__zPDFTextState.__init__I   sK    '+	  ! !!	

rA   c                     d| j         d| j        d| j        d| j        d| j        d| j        d| j        d| j        d	| j        d
| j	        dS )Nz<PDFTextState: font=z, fontsize=z, charspace=z, wordspace=z
, scaling=z
, leading=z	, render=z, rise=z	, matrix=z, linematrix=>)
rR   rS   rT   rU   rV   rW   rX   rY   rM   rN   r[   s    rB   __repr__zPDFTextState.__repr__V   sj      							
rA   c                    t                      }| j        |_        | j        |_        | j        |_        | j        |_        | j        |_        | j        |_        | j        |_        | j        |_        | j	        |_	        | j
        |_
        |S N)rL   rR   rS   rT   rU   rV   rW   rX   rY   rM   rN   r\   objs     rB   copyzPDFTextState.copyi   sj    nn9}ll[
9[

rA   c                 ,    t           | _        d| _        d S )Nr   r   )r3   rM   rN   r[   s    rB   rZ   zPDFTextState.resetw   s    % rA   rO   N)rO   rL   )r=   r>   r?   r4   __annotations__r6   r]   strr`   re   rZ   r@   rA   rB   rL   rL   E   s         NNN	 	 	 	
# 
 
 
 
&   ! ! ! ! ! !rA   rL   c                   *    e Zd ZddZddZdefdZdS )PDFGraphicStaterO   Nc                     d| _         d | _        d | _        d | _        d | _        d | _        d | _        d| _        t          d         | _	        d| _
        t          d         | _        d S )Nr   
DeviceGray)	linewidthlinecaplinejoin
miterlimitdashintentflatnessscolorr   scsncolorncsr[   s    rB   r]   zPDFGraphicState.__init__   sa     !)-*.,059	(,*. "7"E "7"ErA   c                     t                      }| j        |_        | j        |_        | j        |_        | j        |_        | j        |_        | j        |_        | j        |_        | j        |_        | j	        |_	        |S rb   )
rl   ro   rp   rq   rr   rs   rt   ru   rv   rx   rc   s     rB   re   zPDFGraphicState.copy   sc    l}9[
}[
[

rA   c                     d| j         d| j        d| j        d| j        d| j        d| j        d| j        d| j        d	| j        d
S )Nz<PDFGraphicState: linewidth=z
, linecap=z, linejoin=z,  miterlimit=z, dash=z	, intent=z, flatness=z,  stroking color=z, non stroking color=r_   )	ro   rp   rq   rr   rs   rt   ru   rv   rx   r[   s    rB   r`   zPDFGraphicState.__repr__   sa      				
rA   rh   )rO   rl   )r=   r>   r?   r]   re   rj   r`   r@   rA   rB   rl   rl      s[        F F F F"   
# 
 
 
 
 
 
rA   rl   c                   z    e Zd ZdZddeddfdZdee         ddfdZdd
e	dede
fdZdedee	ef         defdZdS )PDFResourceManagerzRepository of shared resources.

    ResourceManager facilitates reuse of shared resources
    such as fonts and images so that large objects are not
    allocated multiple times.
    TcachingrO   Nc                 "    || _         i | _        d S rb   )r~   _cached_fonts)r\   r~   s     rB   r]   zPDFResourceManager.__init__   s    46rA   procsc                 6    |D ]}|t           u s	|t          u rd S rb   )LITERAL_PDFLITERAL_TEXT)r\   r   procs      rB   get_procsetzPDFResourceManager.get_procset   s6     	 	D{""dl&:&:		 	rA   Fcmapnamestrictc                 x    	 t          j        |          S # t           j        $ r |r t                      cY S w xY wrb   )r   get_cmapCMapNotFoundr   )r\   r   r   s      rB   r   zPDFResourceManager.get_cmap   sM    	?8,,," 	 	 	 66MMM	s     99objidspecc                 b   |r|| j         v r| j         |         }nt                              d||           t          j        r|d         t
          urt          d          d|v rt          |d                   }nt          j        rt          d          d}|dv rt          | |          }n|dk    rt          | |          }n|d	k    rt          | |          }n|d
v rt          | |          }n|dk    rxt          |d                   }|sJ t          |d                                                   }dD ]}||v rt          ||                   ||<   |                     d |          }n.t          j        rt          d|z            t          | |          }|r| j        r
|| j         |<   |S )Nz#get_font: create: objid=%r, spec=%rTypezType is not /FontSubtypezFont Subtype is not specified.Type1)r   MMType1TrueTypeType3)CIDFontType0CIDFontType2Type0DescendantFontsr   )Encoding	ToUnicodezInvalid Font spec: %r)r   logdebugr   STRICTLITERAL_FONTr   r2   r   r   r    r   r&   r%   re   r'   get_fontr~   )r\   r   r   rR   subtypedfontssubspecks           rB   r   zPDFResourceManager.get_font   s    (	1Ud000%e,DDII;UDIII <<|33&':;;;D  &tI77? I&'GHHH!...#D$//J&&&tT22G###D$//<<<!$--G###D):$;<<$VAY//44662 7 7ADyy%-d1g%6%6
}}T733? G&'>'EFFF#D$// 1 1,0"5)rA   )T)F)r=   r>   r?   __doc__boolr]   r   objectr   rj   r   r   r   r   r   r@   rA   rB   r}   r}      s         7 7 7 7 7 7 7&!1 d      d x    *f *GCK,@ *W * * * * * *rA   r}   c            	           e Zd Zdee         ddfdZddZdeddfdZddZ	dded
e
deee
f         fdZddZ ed          Z ed          Z ed	          ZdededdfdZdS )PDFContentParserstreamsrO   Nc                 L    || _         d| _        t          j        | d            d S Nr   )r   istreamr/   r]   )r\   r   s     rB   r]   zPDFContentParser.__init__   s+     	tT*****rA   c                    | j         s| j        t          | j                  k     r0t	          | j        | j                           }| xj        dz  c_        nt          d          t          |                                          | _         d S d S )N   zUnexpected EOF, file truncated?)fpr   lenr   r(   r)   r   get_data)r\   strms     rB   fillfpzPDFContentParser.fillfp  s    w 	/|c$,////#DL$>??!=>>>dmmoo..DGGG	/ 	/rA   posc                 X    |                                   t          j        | |           d S rb   )r   r/   seek)r\   r   s     rB   r   zPDFContentParser.seek  s(    4%%%%%rA   c                     | j         t          | j                  k     rd S 	 |                                  | j                                        | _        | j                            | j                  | _        | j        rnd | _        fd| _         d S )Nr   r   )	charposr   bufr   r   tellbufposreadBUFSIZr[   s    rB   fillbufzPDFContentParser.fillbuf  s|    <#dh--''F	KKMMM',,..DKw||DK00DHx DG	 rA      EItargetc                 ^   |                      |           d}d}|t          |          k    rL|                                  |r| j        | j                 }t          |f          }||z  }| xj        dz  c_        t          |          |k    r|                                s-|t          |          k     r |t          ||         f          k    r|dz  }nd}n	 | j                            |d         | j                  }|| j        | j        |dz            z  }|dz   | _        d}n@# t          $ r3 || j        | j        d          z  }t          | j                  | _        Y nw xY w|t          |          k    L|d t          |          dz             }t          j
        dd|          }||fS )Nr   rA   r   s   (\x0d\x0a|[\x0d\x0a])$)r   r   r   r   r   bytesisspaceindex
ValueErrorresub)r\   r   r   idatacicjs           rB   get_inline_dataz PDFContentParser.get_inline_data  s   		#3v;;LLNNN 1Xdl+2%LL	!KK1$$		 %3v;;eVAYL1122FAAAA1vay$,??ADHT\AE%9::D#$q5DLAA! 1 1 1DHT\^^44D#&tx==DLLL1- 3v;;2 (Fa(()v0#t<<T{s   AD& &:E#"E#c                 >     | j         |                                   d S rb   )add_resultspopallr[   s    rB   flushzPDFContentParser.flush@  s     $++--((((rA   s   BIs   IDtokenc                 
   || j         u r|                     |d           d S || j        u r@	 |                     d          \  }}t	          |          dz  dk    rd|}t          |          d t          d|          D             }d}|                    dd           }|)t          |t                    r|g}|d         t          v rd}|                     |t	          d	          z   |
          \  }}	|dk    r|	|z  }	t          ||	          }
|                     ||
f           |dk    r|                     || j        f           d S d S # t
          $ r t          j        r Y d S w xY w|                     ||f           d S )Ninline   r   zInvalid dictionary construct: c                 N    i | ]"\  }}t          |          t          |          #S r@   )r2   r'   ).0r   vs      rB   
<dictcomp>z/PDFContentParser.do_keyword.<locals>.<dictcomp>Q  s*    RRRfq!\!__hqkkRRRrA   r   Fs   ~>s   ID )r   )
KEYWORD_BI
start_type
KEYWORD_IDend_typer   r*   r8   get
isinstancer.   r"   r   r$   push
KEYWORD_EIr   r   )r\   r   r   _objs	error_msgdeosfilterr   rd   s              rB   
do_keywordzPDFContentParser.do_keywordG  s   DO##OOC*****do%% MM(33	Dt99q=A%% I I II%i000RRD@Q@QRRRsD))%!&)44 *"(ay$;;;#"223V3DS2QQd%<<CKD4((		3*%%%%<<IIsDO455555  <   ?    IIsEl#####s   DE E)(E)rh   )r   )r=   r>   r?   r   r   r]   r   intr   r   r   r	   r   r   r+   r   r   r   r-   r   r@   rA   rB   r   r      s#       + 0 +T + + + +/ / / /& & & & & &
 
 
 
 3  %U
BS    B) ) ) ) UJUJUJ$c $) $ $ $ $ $ $ $rA   r   c                   v   e Zd ZdZdededdfdZddZdee	e	f         ddfd	Z
d
eddfdZdeddfdZdedee         fdZdeeeef         fdZdeeeef         ddfdZddZddZdededededededdfdZdeddfdZdeddfdZd eddfd!Zd"eddfd#Zd$ed%eddfd&Zd'eddfd(Zd)eddfd*Z d+eddfd,Z!d-ed.eddfd/Z"d-ed.eddfd0Z#d1ed2ed3ed4ed5ed6eddfd7Z$d3ed4ed5ed6eddf
d8Z%d1ed2ed5ed6eddf
d9Z&dd:Z'd-ed.ed;ed<eddf
d=Z(dd>Z)dd?Z*dd@Z+ddAZ,ddBZ-ddCZ.ddDZ/ddEZ0ddFZ1ddGZ2ddHZ3ddIZ4d+eddfdJZ5d+eddfdKZ6dLeddfdMZ7dLeddfdNZ8dOedPedQeddfdRZ9dOedPedQeddfdSZ:dTedUed.edVeddf
dWZ;dTedUed.edVeddf
dXZ<ddYZ=ddZZ>dd[Z?dd\Z@d+e	ddfd]ZAdd^ZBdd_ZCdd`ZDddaZEdbeddfdcZFdbeddeddfdeZGdbeddfdfZHdbeddeddfdgZIddhZJdieddfdjZKdieddfdkZLdleddfdmZMdneddfdoZNdpedqeddfdrZOdseddfdtZPdueddfdvZQdwedxeddfdyZRdwedxeddfdzZSd{edQedTed|ed}ed~eddfdZTddZUdeddfdZVdeddfdZWdeddfdZXdedededdfdZYddZZddZ[deddfdZ\deddfdZ]de^ddfdZ_e`fdee	e	f         deae	         d
eddfdZbdeae	         ddfdZcdS )PDFPageInterpreterzhProcessor for the content of a PDF page

    Reference: PDF Reference, Appendix A, Operator Summary
    rsrcmgrdevicerO   Nc                 "    || _         || _        d S rb   )r   r   )r\   r   r   s      rB   r]   zPDFPageInterpreter.__init__q  s    rA   c                 B    |                      | j        | j                  S rb   )	__class__r   r   r[   s    rB   dupzPDFPageInterpreter.dupu  s    ~~dlDK888rA   	resourcesc                    || _         i | _        i | _        t          j                    | _        |sdS dt          dt          t                   fd}t          |          
                                D ]X\  }}t                              d||           |dk    rxt          |          
                                D ]U\  }}d}t          |t                    r|j        }t          |          }| j                            ||          | j        |<   V|dk    rLt          |          
                                D ])\  }} |t%          |                    }	|	
|	| j        |<   *|dk    r)| j                            t)          |                     !|d	k    r1t          |          
                                D ]\  }
}|| j        |
<   ZdS )
z@Prepare the fonts and XObjects listed in the Resource attribute.Nr   rO   c           	         t          | t                    rt          | d                   }nt          |           }|dk    rQt          | t                    r<t          |           dk    r)t	          |t          | d                   d                   S |dk    rXt          | t                    rCt          |           dk    r0t	          |t          t          | d                                       S t          j        |          S )Nr   ICCBasedr   r   NDeviceN)	r   listr2   r   r   r(   r&   r   r   )r   names     rB   get_colorspacez9PDFPageInterpreter.init_resources.<locals>.get_colorspace  s    $%% *#DG,,#D))z!!jt&<&<!Ta$T<Q+@+@+EFFF""z$'='="#d))q..$T3z$q'/B/B+C+CDDD,0666rA   zResource: %r: %rrH   
ColorSpaceProcSetXObject)r   fontmapxobjmapr   re   csmapr   r   r   r%   itemsr   r   r   r#   r   r   r   r'   r   r&   )r\   r   r   r   r   fontidr   r   csid
colorspacexobjidxobjstrms               rB   init_resourcesz!PDFPageInterpreter.init_resourcesx  s   ".0/D/I/K/K
 	F
	7 
	7H],C 
	7 
	7 
	7 
	7 y))//11 	4 	4DAqII(!Q///F{{$.qMM$7$7$9$9 N NLFD E!$	22 + $
%d++D+/<+@+@+M+MDL((N l""",Q--"5"5"7"7 6 6JD$!/!?!?J!-+5
4(6 i((A7777i(21(;(;(=(= 4 4$FH+3DL((%	4 	4rA   ctmc                     g | _         || _        | j                            | j                   t	                      | _        t                      | _        g | _        g | _	        dS )z<Initialize the text and graphic states for rendering a page.N)
gstackr	  r   set_ctmrL   	textstaterl   graphicstatecurpathargstack)r\   r	  s     rB   
init_statezPDFPageInterpreter.init_state  sW     KMDH%%%%+--*,)+rA   rd   c                 :    | j                             |           d S rb   )r  appendrc   s     rB   r   zPDFPageInterpreter.push  s    S!!!!!rA   nc                 `    |dk    rg S | j         | d          }| j         d |          | _         |S r   )r  )r\   r  xs      rB   popzPDFPageInterpreter.pop  s;    66IM1"##crc*rA   c                 r    | j         | j                                        | j                                        fS rb   )r	  r  re   r  r[   s    rB   get_current_statez$PDFPageInterpreter.get_current_state  s.    $.--//1B1G1G1I1IJJrA   statec                 n    |\  | _         | _        | _        | j                            | j                    d S rb   )r	  r  r  r   r  )r\   r  s     rB   set_current_statez$PDFPageInterpreter.set_current_state  s5     9>54>4#4DH%%%%%rA   c                 ^    | j                             |                                            dS )zSave graphics stateN)r  r  r  r[   s    rB   do_qzPDFPageInterpreter.do_q  s*    4113344444rA   c                 p    | j         r.|                     | j                                                    dS dS )zRestore graphics stateN)r  r  r  r[   s    rB   do_QzPDFPageInterpreter.do_Q  s<    ; 	6""4;??#4#455555	6 	6rA   a1b1c1d1e1f1c           	          t          ||||||          }|&t                              d||||||fd           dS t          || j                  | _        | j                            | j                   dS )z3Concatenate matrix to current transformation matrixNzUCannot concatenate matrix to current transformation matrix because not all values in  can be parsed as floats)r   r   warningr9   r	  r   r  )r\   r!  r"  r#  r$  r%  r&  rM   s           rB   do_cmzPDFPageInterpreter.do_cm  s     RRR44>KK ]ikmoqsuwy{}  iA  ]  ]  ]     #64844DHK)))))rA   ro   c                     t          |          }| t                              d|d           dS || j        _        dS )zSet line widthNzCannot set line width because  is an invalid float value)r   r   r)  r  ro   )r\   ro   linewidth_fs      rB   do_wzPDFPageInterpreter.do_w  sV     ++KKXXXX     +6D'''rA   rp   c                     || j         _        dS )zSet line cap styleN)r  rp   )r\   rp   s     rB   do_JzPDFPageInterpreter.do_J  s    $+!!!rA   rq   c                     || j         _        dS )zSet line join styleN)r  rq   )r\   rq   s     rB   do_jzPDFPageInterpreter.do_j      %-"""rA   rr   c                     || j         _        dS )zSet miter limitN)r  rr   )r\   rr   s     rB   do_MzPDFPageInterpreter.do_M  s    '1$$$rA   rs   phasec                 "    ||f| j         _        dS )zSet line dash patternN)r  rs   )r\   rs   r6  s      rB   do_dzPDFPageInterpreter.do_d  s    "&rA   rt   c                     || j         _        dS )zSet color rendering intentN)r  rt   )r\   rt   s     rB   do_rizPDFPageInterpreter.do_ri  s    #)   rA   ru   c                     || j         _        dS )zSet flatness toleranceN)r  ru   )r\   ru   s     rB   do_izPDFPageInterpreter.do_i  r3  rA   r   c                     dS )z7Set parameters from graphics state parameter dictionaryNr@   r\   r   s     rB   do_gszPDFPageInterpreter.do_gs         rA   r  yc                     t          |          }t          |          }||%d||f}t                              d|d           dS d||f}| j                            |           dS )zBegin new subpathNmz3Cannot start new subpath because not all values in r(  r   r   r)  r  r  r\   r  rA  x_fy_fpoints         rB   do_mzPDFPageInterpreter.do_m  s    mmmm;#+!QKEKKgeggg     #sOEL&&&&&rA   c                     t          |          }t          |          }||%d||f}t                              d|d           dS d||f}| j                            |           dS )z$Append straight line segment to pathNlzFCannot append straight line segment to path because not all values in r(  rD  rE  s         rB   do_lzPDFPageInterpreter.do_l  s    mmmm;#+!QKEKKzY^zzz     #sOEL&&&&&rA   x1y1x2y2x3y3c                 j   t          |          }t          |          }t          |          }	t          |          }
t          |          }t          |          }|
||	|
||)d||||||f}t                              d|d           dS d|||	|
||f}| j                            |           dS )z4Append curved segment to path (three control points)Nr   ?Cannot append curved segment to path because not all values in r(  rD  )r\   rM  rN  rO  rP  rQ  rR  x1_fy1_fx2_fy2_fx3_fy3_frH  s                 rB   do_czPDFPageInterpreter.do_c  s     "~~"~~"~~"~~"~~"~~L|||||"b"b"b1EKKsRWsss     $dD$=EL&&&&&rA   c                    t          |          }t          |          }t          |          }t          |          }||||'d||||f}	t                              d|	d           dS d||||f}	| j                            |	           dS )z8Append curved segment to path (initial point replicated)Nr   rT  r(  rD  )
r\   rO  rP  rQ  rR  rW  rX  rY  rZ  rH  s
             rB   do_vzPDFPageInterpreter.do_v?      "~~"~~"~~"~~<4<4<4<"b"b)EKKsRWsss     $dD1EL&&&&&rA   c                    t          |          }t          |          }t          |          }t          |          }||||'d||||f}	t                              d|	d           dS d||||f}	| j                            |	           dS )z6Append curved segment to path (final point replicated)NrA  rT  r(  rD  )
r\   rM  rN  rQ  rR  rU  rV  rY  rZ  rH  s
             rB   do_yzPDFPageInterpreter.do_yN  r^  rA   c                 :    | j                             d           dS )zClose subpathhN)r  r  r[   s    rB   do_hzPDFPageInterpreter.do_h]  s    F#####rA   wrc  c                    t          |          }t          |          }t          |          }t          |          }||||&||||f}	t                              d|	d           dS | j                            d||f           | j                            d||z   |f           | j                            d||z   ||z   f           | j                            d|||z   f           | j                            d           dS )zAppend rectangle to pathNz:Cannot append rectangle to path because not all values in r(  rC  rK  rb  rD  )
r\   r  rA  re  rc  rF  rG  w_fh_fvaluess
             rB   do_rezPDFPageInterpreter.do_rea  s   mmmmmmmm;#+Aq\FKKoVooo     Lc3000LcCi 5666LcCis ;<<<Lc39 5666L'''''rA   c                 d    | j                             | j        ddd| j                   g | _        dS )zStroke pathTFNr   
paint_pathr  r  r[   s    rB   do_SzPDFPageInterpreter.do_St  s0    t0$udlSSSrA   c                 V    |                                   |                                  dS )zClose and stroke pathN)rd  rn  r[   s    rB   do_szPDFPageInterpreter.do_sy       				rA   c                 d    | j                             | j        ddd| j                   g | _        dS )z+Fill path using nonzero winding number ruleFTNrl  r[   s    rB   do_fzPDFPageInterpreter.do_f~  s0    t0%udlSSSrA   c                     dS )z6Fill path using nonzero winding number rule (obsolete)Nr@   r[   s    rB   do_FzPDFPageInterpreter.do_F  r@  rA   c                 d    | j                             | j        ddd| j                   g | _        dS )zFill path using even-odd ruleFTNrl  r[   s    rB   do_f_azPDFPageInterpreter.do_f_a  s0    t0%tT\RRRrA   c                 d    | j                             | j        ddd| j                   g | _        dS )z6Fill and stroke path using nonzero winding number ruleTFNrl  r[   s    rB   do_BzPDFPageInterpreter.do_B  s0    t0$eT\RRRrA   c                 d    | j                             | j        ddd| j                   g | _        dS )z(Fill and stroke path using even-odd ruleTNrl  r[   s    rB   do_B_azPDFPageInterpreter.do_B_a  s0    t0$dDLQQQrA   c                 V    |                                   |                                  dS )z>Close, fill, and stroke path using nonzero winding number ruleN)rd  ry  r[   s    rB   do_bzPDFPageInterpreter.do_b  rq  rA   c                 V    |                                   |                                  dS )z0Close, fill, and stroke path using even-odd ruleN)rd  r{  r[   s    rB   do_b_azPDFPageInterpreter.do_b_a  s     		rA   c                     g | _         dS )z$End path without filling or strokingN)r  r[   s    rB   do_nzPDFPageInterpreter.do_n  s    rA   c                     dS )z3Set clipping path using nonzero winding number ruleNr@   r[   s    rB   do_WzPDFPageInterpreter.do_W  r@  rA   c                     dS )z%Set clipping path using even-odd ruleNr@   r[   s    rB   do_W_azPDFPageInterpreter.do_W_a  r@  rA   c                     	 | j         t          |                   | j        _        dS # t          $ r" t
          j        rt          d|z            Y dS w xY w)zOSet color space for stroking operations

        Introduced in PDF 1.1
        Undefined ColorSpace: %rN)r  r2   r  rw   KeyErrorr   r   rE   r>  s     rB   do_CSzPDFPageInterpreter.do_CS  sx    
	M$(J|D/A/A$BD!!! 	M 	M 	M M)*Dt*KLLLM M M	M   $( (AAc                     	 | j         t          |                   | j        _        dS # t          $ r" t
          j        rt          d|z            Y dS w xY w)z*Set color space for nonstroking operationsr  N)r  r2   r  ry   r  r   r   rE   r>  s     rB   do_cszPDFPageInterpreter.do_cs  sx    	M$(J|D/A/A$BD!!! 	M 	M 	M M)*Dt*KLLLM M M	Mr  grayc                     t          |          }| t                              d|d           dS || j        _        | j        d         | j        _        dS )z&Set gray level for stroking operationsNCannot set gray level because r,  rn   )r   r   r)  r  rv   r  rw   r\   r  gray_fs      rB   do_GzPDFPageInterpreter.do_G  g    D!!>KKSSSS     (.D$$(J|$<D!!!rA   c                     t          |          }| t                              d|d           dS || j        _        | j        d         | j        _        dS )z)Set gray level for nonstroking operationsNr  r,  rn   )r   r   r)  r  rx   r  ry   r  s      rB   do_gzPDFPageInterpreter.do_g  r  rA   rgbc                     t          |||          }|#t                              d|||fd           dS || j        _        | j        d         | j        _        dS )z%Set RGB color for stroking operationsNz6Cannot set RGB stroke color because not all values in r(  	DeviceRGB)r   r   r)  r  rv   r  rw   r\   r  r  r  rgbs        rB   do_RGzPDFPageInterpreter.do_RG  sr    q!Q;KKn!QPQnnn     (+D$$(J{$;D!!!rA   c                     t          |||          }|#t                              d|||fd           dS || j        _        | j        d         | j        _        dS )z(Set RGB color for nonstroking operationsNz:Cannot set RGB non-stroke color because not all values in r(  r  )r   r   r)  r  rx   r  ry   r  s        rB   do_rgzPDFPageInterpreter.do_rg  ss    q!Q;KKraQRTUYrrr     (+D$$(J{$;D!!!rA   r   rC  r   c                     t          ||||          }|$t                              d||||fd           dS || j        _        | j        d         | j        _        dS )z&Set CMYK color for stroking operationsNz7Cannot set CMYK stroke color because not all values in r(  
DeviceCMYK)r   r   r)  r  rv   r  rw   r\   r   rC  rA  r   cmyks         rB   do_KzPDFPageInterpreter.do_K  sw    Aq!$$<KKr1aQRTU,rrr     (,D$$(J|$<D!!!rA   c                     t          ||||          }|$t                              d||||fd           dS || j        _        | j        d         | j        _        dS )z)Set CMYK color for nonstroking operationsNz;Cannot set CMYK non-stroke color because not all values in r(  r  )r   r   r)  r  rx   r  ry   r  s         rB   do_kzPDFPageInterpreter.do_k  sx    Aq!$$<KKvqRSUVXYlvvv     (,D$$(J|$<D!!!rA   c                    | j         j        j        }|                     |          }t	          |          |k    r#t
                              d| d|d           dS t	          |          dk    rG|d         }t          |          }| t
                              d|d           dS || j         _        dS t	          |          d	k    r9t          | }| t
                              d
|d           dS || j         _        dS t	          |          dk    r9t          | }| t
                              d|d           dS || j         _        dS t
                              dt	          |           d           dS )z"Set color for stroking operations.z)Cannot set stroke color because expected  components but got !rr   r   Nz%Cannot set gray stroke color because r,     z/Cannot set RGB stroke color because components  cannot be parsed as RGB   z0Cannot set CMYK stroke color because components  cannot be parsed as CMYKz Cannot set stroke color because T components are specified but only 1 (grayscale), 3 (rgb) and 4 (cmyk) are supported)r  rw   ncomponentsr  r   r   r)  r   rv   r   r   r\   r  
componentsr  r  r  r  s          rB   do_SCNzPDFPageInterpreter.do_SCN  s   !-XXa[[
z??aKKbAbbS]bbb     __!!a=D%%F~^D^^^     ,2!(((__!!J'C{ljlll     ,/!(((__!!j)D|nznnn     ,0!((( KK Y3z??  Y  Y  Y    rA   c                    | j         j        j        }|                     |          }t	          |          |k    r#t
                              d| d|d           dS t	          |          dk    rG|d         }t          |          }| t
                              d|d           dS || j         _        dS t	          |          d	k    r9t          | }| t
                              d
|d           dS || j         _        dS t	          |          dk    r9t          | }| t
                              d|d           dS || j         _        dS t
                              dt	          |           d           dS )$Set color for nonstroking operationsz-Cannot set non-stroke color because expected r  r  r   r   Nz)Cannot set gray non-stroke color because r,  r  z3Cannot set RGB non-stroke color because components r  r  z4Cannot set CMYK non-stroke color because components r  z$Cannot set non-stroke color because r  )r  ry   r  r  r   r   r)  r   rx   r   r   r  s          rB   do_scnzPDFPageInterpreter.do_scn1  s   !-XXa[[
z??aKKfffWafff     __!!a=D%%F~bbbb     ,2!(((__!!J'C{p*ppp     ,/!(((__!!j)D|r:rrr     ,0!((( KK ]s:  ]  ]  ]    rA   c                 .    |                                   dS )z!Set color for stroking operationsN)r  r[   s    rB   do_SCzPDFPageInterpreter.do_SC^      rA   c                 .    |                                   dS )r  N)r  r[   s    rB   do_sczPDFPageInterpreter.do_scb  r  rA   c                     dS )z%Paint area defined by shading patternNr@   r>  s     rB   do_shzPDFPageInterpreter.do_shf  r@  rA   c                 8    | j                                          dS )zBegin text object

        Initializing the text matrix, Tm, and the text line matrix, Tlm, to
        the identity matrix. Text objects cannot be nested; a second BT cannot
        appear before an ET.
        N)r  rZ   r[   s    rB   do_BTzPDFPageInterpreter.do_BTi  s     	rA   c                     dS )zEnd a text objectNr@   r[   s    rB   do_ETzPDFPageInterpreter.do_ETr  r@  rA   c                     dS )zBegin compatibility sectionNr@   r[   s    rB   do_BXzPDFPageInterpreter.do_BXu  r@  rA   c                     dS )zEnd compatibility sectionNr@   r[   s    rB   do_EXzPDFPageInterpreter.do_EXx  r@  rA   tagc                     t          |t                    r| j                            |           dS t                              d|d           dS )zDefine marked-content pointz+Cannot define marked-content point because  is not a PSLiteralNr   r.   r   do_tagr   r)  r\   r  s     rB   do_MPzPDFPageInterpreter.do_MP{  s^    c9%% 	Ks#####KKXcXXX    rA   propsc                     t          |t                    r| j                            ||           dS t                              d|d           dS )z.Define marked-content point with property listz>Cannot define marked-content point with property list because r  Nr  r\   r  r  s      rB   do_DPzPDFPageInterpreter.do_DP  sa    c9%% 	KsE*****KKkQTkkk    rA   c                     t          |t                    r| j                            |           dS t                              d|d           dS )zBegin marked-content sequencez-Cannot begin marked-content sequence because r  Nr   r.   r   	begin_tagr   r)  r  s     rB   do_BMCzPDFPageInterpreter.do_BMC  s^    c9%% 	K!!#&&&&&KKZZZZ    rA   c                     t          |t                    r| j                            ||           dS t                              d|d           dS )z0Begin marked-content sequence with property listz@Cannot begin marked-content sequence with property list because r  Nr  r  s      rB   do_BDCzPDFPageInterpreter.do_BDC  sa    c9%% 	K!!#u-----KKmSVmmm    rA   c                 8    | j                                          dS )zEnd marked-content sequenceN)r   end_tagr[   s    rB   do_EMCzPDFPageInterpreter.do_EMC  s    rA   spacec                     t          |          }| t                              d|d           dS || j        _        dS )zSet character spacing.

        Character spacing is used by the Tj, TJ, and ' operators.

        :param space: a number expressed in unscaled text space units.
        Nz(Could not set character spacing because r,  )r   r   r)  r  rT   )r\   r  rT   s      rB   do_TczPDFPageInterpreter.do_Tc  sW     u%%	KK^5^^^     (1DN$$$rA   c                     t          |          }| t                              d|d           dS || j        _        dS )zSet the word spacing.

        Word spacing is used by the Tj, TJ, and ' operators.

        :param space: a number expressed in unscaled text space units
        Nz#Could not set word spacing becuase r,  )r   r   r)  r  rU   )r\   r  rU   s      rB   do_TwzPDFPageInterpreter.do_Tw  sW     u%%	KKYeYYY     (1DN$$$rA   scalec                     t          |          }| t                              d|d           dS || j        _        dS )zuSet the horizontal scaling.

        :param scale: is a number specifying the percentage of the normal width
        Nz)Could not set horizontal scaling because r,  )r   r   r)  r  rV   )r\   r  scale_fs      rB   do_TzzPDFPageInterpreter.do_Tz  sV    
 U##?KK_E___     &-DN"""rA   rW   c                     t          |          }| t                              d|d           dS | | j        _        dS )zSet the text leading.

        Text leading is used only by the T*, ', and " operators.

        :param leading: a number expressed in unscaled text space units
        Nz#Could not set text leading because r,  )r   r   r)  r  rW   )r\   rW   	leading_fs      rB   do_TLzPDFPageInterpreter.do_TL  sY     w''	KK[g[[[     '0ZDN"""rA   r  rS   c                 r   	 | j         t          |                   | j        _        nS# t          $ rF t
          j        rt          d|z            | j        	                    di           | j        _        Y nw xY wt          |          }| t                              d|d           dS || j        _        dS )zSet the text font

        :param fontid: the name of a font resource in the Font subdictionary
            of the current resource dictionary
        :param fontsize: size is a number representing a scale factor.
        zUndefined Font id: %rNz Could not set text font because r,  )r   r2   r  rR   r  r   r   rE   r   r   r   r   r)  rS   )r\   r  rS   
fontsize_fs       rB   do_TfzPDFPageInterpreter.do_Tf  s    	B"&,|F/C/C"DDN 	B 	B 	B L)*AF*JKKK"&,"7"7b"A"ADN	B
  ))
KKY8YYY     '1DN###s   $' AA76A7rX   c                     t          |          }| t                              d|d           dS || j        _        dS )zSet the text rendering modeNz*Could not set text rendering mode because z is an invalid int value)r   r   r)  r  rX   )r\   rX   render_is      rB   do_TrzPDFPageInterpreter.do_Tr  sU    F##KK_V___     %-DN!!!rA   rY   c                     t          |          }| t                              d|d           dS || j        _        dS )z`Set the text rise

        :param rise: a number expressed in unscaled text space units
        Nz Could not set text rise because r,  )r   r   r)  r  rY   )r\   rY   rise_fs      rB   do_TszPDFPageInterpreter.do_Ts  sV    
 D!!>KKU4UUU     #)DNrA   txtyc                 *   t          |          }t          |          }|D|B| j        j        \  }}}}}	}
||z  ||z  z   |	z   }||z  ||z  z   |
z   }||||||f| j        _        n"t          j        rt          d|d|d          d| j        _        dS )zlMove to the start of the next line

        Offset from the start of the current line by (tx , ty).
        NzInvalid offset (z, z) for Tdrg   )r   r  rM   r   r   r   rN   r\   r  r  tx_ty_ar  r   r   efe_newf_news                rB   do_TdzPDFPageInterpreter.do_Td  s    
 nnnn?s!%!6Q1aA!GcAg%)E!GcAg%)E%&1a$>DN!!_ 	K I2 I I2 I I IJJJ$*!!!rA   c                 8   t          |          }t          |          }|D|B| j        j        \  }}}}}	}
||z  ||z  z   |	z   }||z  ||z  z   |
z   }||||||f| j        _        nt          j        rt          d          ||| j        _        d| j        _        dS )zMove to the start of the next line.

        offset from the start of the current line by (tx , ty). As a side effect, this
        operator sets the leading parameter in the text state.
        Nz"Invalid offset ({tx}, {ty}) for TDrg   )r   r  rM   r   r   r   rW   rN   r  s                rB   do_TDzPDFPageInterpreter.do_TD  s     nnnn?s!%!6Q1aA!GcAg%)E!GcAg%)E%&1a$>DN!!_ 	F DEEE?%(DN"$*!!!rA   r  r   r  r  c                     ||||||f}t          | }| t                              d|d           dS || j        _        d| j        _        dS )z$Set text matrix and text line matrixNz4Could not set text matrix because not all values in r(  rg   )r   r   r)  r  rM   rN   )	r\   r  r  r   r   r  r  ri  rM   s	            rB   do_TmzPDFPageInterpreter.do_Tm6  so     Q1a#f%>KKiviii     %+DN!(.DN%%%rA   c                     | j         j        \  }}}}}}||||| j         j        |z  |z   | j         j        |z  |z   f| j         _        d| j         _        dS )zMove to start of next text linerg   N)r  rM   rW   rN   )r\   r  r  r   r   r  r  s          rB   do_T_azPDFPageInterpreter.do_T_aK  sg    !^2Aq!QN"Q&*N"Q&*!
 %+!!!rA   seqc                    | j         j        t          j        rt	          d          dS | j                            | j         t          t          |          | j	        j
        | j	                                                   dS )z0Show text, allowing individual glyph positioningNzNo font specified!)r  rR   r   r   rE   r   render_stringr   r   r  ry   re   )r\   r   s     rB   do_TJzPDFPageInterpreter.do_TJX  s}    >& @)*>???F!!NS!!!""$$		
 	
 	
 	
 	
rA   sc                 2    |                      |g           dS )z	Show textN)r  r\   r  s     rB   do_TjzPDFPageInterpreter.do_Tje  s    

A3rA   c                 Z    |                                   |                     |g           dS )zPMove to next line and show text

        The ' (single quote) operator.
        N)r  r  r  s     rB   do__qzPDFPageInterpreter.do__qi  s&    
 	

A3rA   awacc                     |                      |           |                     |           |                     |g           dS )zqSet word and character spacing, move to next line, and show text

        The " (double quote) operator.
        N)r  r  r  )r\   r
  r  r  s       rB   do__wzPDFPageInterpreter.do__wq  s7    
 	

2

2

A3rA   c                     dS )zBegin inline image objectNr@   r[   s    rB   do_BIzPDFPageInterpreter.do_BIz  r@  rA   c                     dS )zBegin inline image dataNr@   r[   s    rB   do_IDzPDFPageInterpreter.do_ID}  r@  rA   c                 0   t          |t                    r|d|v rzd|v rxt          t          |                    }| j                            |dt                     | j                            ||           | j                            |           dS dS dS dS )zEnd inline image objectWHr   r   r   r   N)	r   r$   rj   idr   begin_figurer3   render_image
end_figure)r\   rd   iobjids      rB   do_EIzPDFPageInterpreter.do_EI  s    c9%% 	+#**C\\FK$$V\?KKKK$$VS111K""6*****		+ 	+**rA   
xobjid_argc           	      @   t          |          }	 t          | j        |                   }n/# t          $ r" t          j        rt          d|z            Y dS w xY wt                              d|           |	                    d          }|t          u r d|v r|                                 }t          t          t          |d                             }t          t          t          |	                    dt                                         }|	                    d          }|rt#          |          }	n| j                                        }	| j                            |||           |                    |	|gt/          || j                             | j                            |           dS |t4          u r`d	|v r\d
|v rX| j                            |dt                      | j                            ||           | j                            |           dS dS )zInvoke named XObjectzUndefined xobject id: %rNzProcessing xobj: %rr   BBoxr4   	Resourcesr	  WidthHeightr  )r2   r(   r   r  r   r   rE   r   r   r   LITERAL_FORMr   r   r7   r&   r4   r3   r%   r   re   r   r  render_contentsr9   r	  r  LITERAL_IMAGEr  )
r\   r  r  xobjr   interpreterbboxrM   xobjresr   s
             rB   do_DozPDFPageInterpreter.do_Do  s   j))	V 455DD 	 	 	 O)*Dv*MNNNFF	 			'...((9%%l""v~~((**Kjf6677D&*TXXh-P-P"Q"QRRF hh{++G 2&w//		 N//11	K$$VT6:::''11 (   
 K""6*****%%'T//h$>N>NK$$V\?KKKK$$VT222K""6***** Ds   , (AApagec                    t                               d|           |j        \  }}}}|j        dk    r
dddd| |f}n3|j        dk    r	dddd||f}n|j        dk    r
dddd|| f}n
dddd| | f}| j                            ||           |                     |j        |j        |           | j        	                    |           d S )	NzProcessing page: %rZ   r   r      i  r   )
r   r   mediaboxrotater   
begin_pager$  r   contentsend_page)r\   r+  x0y0rM  rN  r	  s          rB   process_pagezPDFPageInterpreter.process_page  s    		'...=RR;"b!QR(CC[Cq!RR(CC[CaQRC(CCaAsRC(CtS)))T^T]DDDT"""""rA   r   c                     t                               d|||           |                     |           |                     |           |                     t          |                     dS )zTRender the content streams.

        This method may be called recursively.
        z1render_contents: resources=%r, streams=%r, ctm=%rN)r   r   r  r  executer&   )r\   r   r   r	  s       rB   r$  z"PDFPageInterpreter.render_contents  sn     			?		
 	
 	
 	I&&&Z(()))))rA   c                    	 t          |          }n# t          $ r Y d S w xY w	 	 |                                \  }}n# t          $ r Y d S w xY wt          |t                    rt          |          }d|                    dd                              dd                              dd          z  }t          | |          rt          | |          }|j	        j
        d	z
  }|rJ|                     |          }	t                              d
||	           t          |	          |k    r ||	  n\t                              d|            |             n6t          j        rd|z  }
t#          |
          n|                     |           i)NTzdo_%s*_a"_w'_qr   zexec: %s %rzexec: %szUnknown operator: %r)r   r)   
nextobjectr   r-   r1   replacehasattrgetattr__code__co_argcountr  r   r   r   r   r   rE   r   )r\   r   parserr   rd   r   methodfuncnargsargsr   s              rB   r9  zPDFPageInterpreter.execute  s   	%g..FF 	 	 	FF		!,,..CC   #y)) #C(( 4<<T#:#:#B#B3#M#M#U#U$ $  4(( 9"400D M59E #xx		-t<<<t99-- D$KK		*d333_ 9 6 =I-i8889 		#5	s    
  = 
A
A)rO   r   rh   )dr=   r>   r?   r   r}   r   r]   r   r   r   r  r4   r  	PDFStackTr   r   r   r  r	   rL   rl   r  r  r  r   r*  r.  r0  r2  r5  r8  r:  r<  r?  rI  rL  r[  r]  r`  rd  rj  rn  rp  rs  ru  rw  ry  r{  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r*  r!   r7  r3   r   r$  r9  r@   rA   rB   r   r   k  sl        
 2 I $    9 9 9 9'4VV^(< '4 '4 '4 '4 '4R
,f 
, 
, 
, 
, 
,"	 "d " " " "S T)_    K5)N#O K K K K&V\?:;& 
& & & &5 5 5 56 6 6 6
** * 	*
 * * * 
* * * *(6i 6D 6 6 6 6,I ,$ , , , ,.Y .4 . . . .2y 2T 2 2 2 2/ /9 / / / / /*I *$ * * * *.Y .4 . . . .F) F F F F F'i 'I '$ ' ' ' ''i 'I '$ ' ' ' ''' ' 	'
 ' ' ' 
' ' ' '@'y 'i 'Y 'I 'RV ' ' ' ''y 'i 'Y 'I 'RV ' ' ' '$ $ $ $(y (Y (9 ( (t ( ( ( (&   
   
   
E E E E   
   
   
   
   
   B B B B4 4 4 4	M) 	M 	M 	M 	M 	MM) M M M M M
= 
=t 
= 
= 
= 
=
= 
=t 
= 
= 
= 
=
<y 
<Y 
<9 
< 
< 
< 
< 
<
<y 
<Y 
<9 
< 
< 
< 
< 
<
=i 
=I 
=) 
=	 
=d 
= 
= 
= 
=
=i 
=I 
=) 
=	 
=d 
= 
= 
= 
=+ + + +Z+ + + +Z      4& 4T 4 4 4 4          * * * *( ( ( ( t     9     )     ) I $       19 1 1 1 1 119 1 1 1 1 1-9 - - - - -0Y 04 0 0 0 01I 1 1t 1 1 1 1,	-I 	-$ 	- 	- 	- 	-)) ) ) ) ) )+	 +y +T + + + +$+	 +y +T + + + +.// / 	/
 / / / 
/ / / /*+ + + +
 
t 
 
 
 
y T    y T    	 y Y 4    ( ( ( (& & & &+ +t + + + +$	 $d $ $ $ $L# #T # # # #& &	* *'* &!* 	*
 
* * * *( x/  D            rA   r   )Yloggingr   ior   typingr   r   r   r   r   r	   r
   r   pdfminerr   pdfminer.castingr   r   r   r   r   pdfminer.cmapdbr   r   r   pdfminer.pdfcolorr   r   pdfminer.pdfdevicer   r   pdfminer.pdfexceptionsr   r   pdfminer.pdffontr   r   r   r   r   r    pdfminer.pdfpager!   pdfminer.pdftypesr"   r#   r$   r%   r&   r'   r(   pdfminer.psexceptionsr)   r*   pdfminer.psparserr+   r,   r-   r.   r/   r0   r1   r2   pdfminer.utilsr3   r4   r5   r6   r7   r8   r9   	getLoggerr=   r   r;   rE   r   r   r   r#  r%  rL   floatColorrl   r}   r   rL  r   r@   rA   rB   <module>r_     s    				       N N N N N N N N N N N N N N N N N N N N       S S S S S S S S S S S S S S 2 2 2 2 2 2 2 2 2 2 B B B B B B B B 4 4 4 4 4 4 4 4 > > > > > > > >                % $ $ $ $ $                  5 4 4 4 4 4 4 4	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                  g!!	 	 	 	 	| 	 	 		 	 	 	 	, 	 	 	 c%jjs6{{s6{{s6{{G4! 4! 4! 4! 4! 4! 4! 4!n 			%
	%u
$%'	/
 /
 /
 /
 /
 /
 /
 /
dE E E E E E E EPg$ g$ g$ g$ g$}U9i+?%@A g$ g$ g$T 	"	 6F F F F F F F F F FrA   