§
    Æ‡tjò  ã            
       ó.  — d dl Z d dlmZ d dlmZmZmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZmZmZmZ d dlmZ d d	lmZmZmZ erd d
lmZ  e j        e¦  «        Z G d„ de¦  «        Z G d„ deeeeedf                  ¦  «        Z G d„ de¦  «        ZdS )é    N)ÚBytesIO)ÚTYPE_CHECKINGÚBinaryIOÚUnion)Úsettings)Úsafe_int)ÚPDFException)Ú	PDFObjRefÚ	PDFStreamÚ
dict_valueÚ	int_value)ÚPSEOF)ÚKWDÚ	PSKeywordÚPSStackParser)ÚPDFDocumentc                   ó   — e Zd ZdS )ÚPDFSyntaxErrorN)Ú__name__Ú
__module__Ú__qualname__© ó    úP/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/pdfminer/pdfparser.pyr   r      s   € € € € € Ø€Dr   r   c                   óÂ   — e Zd ZdZdeddfd„Zdd„Z ed	¦  «        Z ed
¦  «        Z	 ed¦  «        Z
 ed¦  «        Z ed¦  «        Z ed¦  «        Zdededdfd„ZdS )Ú	PDFParseraž  PDFParser fetch PDF objects from a file stream.
    It can handle indirect references by referring to
    a PDF document set by set_document method.
    It also reads XRefs at the end of every PDF file.

    Typical usage:
      parser = PDFParser(fp)
      parser.read_xref()
      parser.read_xref(fallback=True) # optional
      parser.set_document(doc)
      parser.seek(offset)
      parser.nextobject()

    ÚfpÚreturnNc                 óL   — t          j        | |¦  «         d | _        d| _        d S )NF)r   Ú__init__ÚdocÚfallback)Úselfr   s     r   r    zPDFParser.__init__'   s'   € ÝÔ˜t RÑ(Ô(Ð(Ø'+ˆŒØˆŒˆˆr   r!   r   c                 ó   — || _         dS )z0Associates the parser with a PDFDocument object.N)r!   )r#   r!   s     r   Úset_documentzPDFParser.set_document,   s   € àˆŒˆˆr   ó   Rs   nulls   endobjs   streams   xrefs	   startxrefÚposÚtokenc           	      óp  — || j         | j        fv r | j        |                      d¦  «        Ž  dS || j        u r | j        |                      d¦  «        Ž  dS || j        u r|                      |df¦  «         dS || j        u rvt          | j	        ¦  «        dk    rZ|                      d¦  «        \  \  }}}t          |¦  «        }|�0t          | j        |¦  «        }|                      ||f¦  «         dS dS dS || j        u �rœ|                      d¦  «        }	 |\  \  }}n%# t          $ r}	t          d|› �¦  «        |	‚d}	~	ww xY wt!          |¦  «        }d}
| j        sM	 t%          |d         ¦  «        }
n6# t&          $ r)}	t(          j        rt          d|›�¦  «        |	‚Y d}	~	nd}	~	ww xY w|                      |¦  «         	 |                      ¦   «         \  }}n4# t0          $ r'}	t(          j        rt          d	¦  «        |	‚Y d}	~	dS d}	~	ww xY w|t          |¦  «        z  }| j                             |¦  «         t5          | j                             |
¦  «        ¦  «        }|                      ||
z   ¦  «         	 	 |                      ¦   «         \  }}n3# t0          $ r&}	t(          j        rt          d	¦  «        |	‚Y d}	~	nZd}	~	ww xY wd
|v r/|                     d
¦  «        }|
|z  }
| j        r||d|…         z  }n|
t          |¦  «        z  }
| j        r||z  }Œž|                      ||
z   ¦  «         t:                               d||
||dd…         ¦  «         | j        €J ‚t?          |tA          |¦  «        | j        j!        ¦  «        }|                      ||f¦  «         dS |                      ||f¦  «         dS )zHandles PDF-related keywords.é   é   Né   zInvalid stream dictionary: r   ÚLengthz/Length is undefined: zUnexpected EOFs	   endstreamz-Stream: pos=%d, objlen=%d, dic=%r, data=%r...é
   )"ÚKEYWORD_XREFÚKEYWORD_STARTXREFÚadd_resultsÚpopÚKEYWORD_ENDOBJÚKEYWORD_NULLÚpushÚ	KEYWORD_RÚlenÚcurstackr   r
   r!   ÚKEYWORD_STREAMÚ
ValueErrorr   r   r"   r   ÚKeyErrorr   ÚSTRICTÚseekÚnextliner   r   Ú	bytearrayÚreadÚindexÚlogÚdebugr   ÚbytesÚdecipher)r#   r'   r(   Ú_Ú
_object_idÚ	object_idÚobjÚpopped_dataÚdicÚerrÚobjlenÚlineÚdataÚ_lineposÚiÚstreams                   r   Ú
do_keywordzPDFParser.do_keyword7   sk  € à�TÔ&¨Ô(>Ð?Ð?Ð?ØˆDÔ˜dŸhšh q™kœkÐ*Ð*Ð*Ð*à�dÔ)Ð)Ð)ØˆDÔ˜dŸhšh q™kœkÐ*Ð*Ð*Ð*à�dÔ'Ð'Ð'à�IŠI�s˜D�kÑ"Ô"Ð"Ð"Ð"à�d”nÐ$Ð$å�4”=Ñ!Ô! QÒ&Ð&Ø%)§X¢X¨a¡[¤[Ñ"‘��J Ý$ ZÑ0Ô0�	ØÐ(Ý# D¤H¨iÑ8Ô8�CØ—I’I˜s C˜jÑ)Ô)Ð)Ð)Ð)ð 'Ð&ð )Ð(ð �dÔ)Ð)Ñ)àŸ(š( 1™+œ+ˆKðØ)‘‘�!�S�SøÝð ð ð Ý$Ø?°+Ð?Ð?ñô àðøøøøðøøøõ
 ˜S‘/”/ˆCØˆFØ”=ð XðXÝ& s¨8¤}Ñ5Ô5�F�FøÝð Xð Xð XÝ”ð XÝ,Ð-MÀcÐ-MÐ-MÑNÔNÐTWÐWðXð Xð Xð Xð XøøøøðXøøøð �IŠI�c‰NŒNˆNðØ ŸMšM™OœO‘	��D�DøÝð ð ð Ý”?ð DÝ(Ð)9Ñ:Ô:ÀÐCØ�����øøøøðøøøð •3�t‘9”9ÑˆCØŒG�LŠL˜ÑÔÐÝ˜TœWŸ\š\¨&Ñ1Ô1Ñ2Ô2ˆDØ�IŠI�c˜F‘lÑ#Ô#Ð#ð!ðØ'+§}¢}¡¤Ñ$�X˜t˜tøÝð ð ð Ý”ð HÝ,Ð-=Ñ>Ô>ÀCÐGØ�E�E�E�Eøøøøðøøøð   4Ð'Ð'ØŸ
š
 <Ñ0Ô0�AØ˜a‘K�FØ”}ð )Ø  R a R¤Ñ(˜ØØ�#˜d™)œ)Ñ#�Ø”=ð !Ø˜D‘L�Dð!ð  �IŠI�c˜F‘lÑ#Ô#Ð#å�IŠIØ?ØØØØ�S�b�S”	ñô ð ð ”8Ð'Ð'Ð'Ý˜s¥E¨$¡K¤K°´Ô1BÑCÔCˆFØ�IŠI�s˜F�mÑ$Ô$Ð$Ð$Ð$ð �IŠI�s˜E�lÑ#Ô#Ð#Ð#Ð#s`   ÄD! Ä!
EÄ+D>Ä>EÅE5 Å5
F(Å?F#Æ#F(ÇG Ç
H
Ç#HÈH
É:J Ê
KÊJ=Ê=K)r!   r   r   N)r   r   r   Ú__doc__r   r    r%   r   r6   r4   r3   r9   r/   r0   Úintr   rS   r   r   r   r   r      sÙ   € € € € € ðð ð˜8ð ¨ð ð ð ð ð
ð ð ð ð ��D‘	”	€IØ�3�w‘<”<€LØ�S˜‘^”^€NØ�S˜‘^”^€NØ�3�w‘<”<€LØ˜˜LÑ)Ô)ÐðQ$˜cð Q$¨)ð Q$¸ð Q$ð Q$ð Q$ð Q$ð Q$ð Q$r   r   c                   óT   — e Zd ZdZdeddfd„Zdd„Z ed¦  «        Zde	d	e
ddfd
„ZdS )ÚPDFStreamParsera#  PDFStreamParser is used to parse PDF content streams
    that is contained in each page and has instructions
    for rendering the page. A reference to a PDF document is
    needed because a PDF content stream can also have
    indirect references to other objects in the same document.
    rO   r   Nc                 óV   — t                                | t          |¦  «        ¦  «         d S ©N)r   r    r   )r#   rO   s     r   r    zPDFStreamParser.__init__“   s$   € Ý×Ò˜4¥¨¡¤Ñ/Ô/Ð/Ð/Ð/r   c                 ó>   —  | j         |                      ¦   «         Ž  d S rY   )r1   Úpopall)r#   s    r   ÚflushzPDFStreamParser.flush–   s    € ØˆÔ˜$Ÿ+š+™-œ-Ð(Ð(Ð(Ð(r   s   objr'   r(   c                 óT  — || j         u rZ|                      d¦  «        \  \  }}}t          |¦  «        }|�,t          | j        |¦  «        }|                      ||f¦  «         d S || j        | j        fv rt          j	        rt          d¦  «        ‚d S |                      ||f¦  «         d S )Nr,   zKeyword endobj found in stream)r6   r2   r   r
   r!   r5   ÚKEYWORD_OBJr3   r   r<   r   )r#   r'   r(   rF   rG   rH   rI   s          r   rS   zPDFStreamParser.do_keyword›   s»   € Ø�D”NÐ"Ð"à!%§¢¨!¡¤Ñ‰OˆQ�
˜QÝ  Ñ,Ô,ˆIØÐ$Ý ¤¨)Ñ4Ô4�Ø—	’	˜3 ˜*Ñ%Ô%Ð%ØˆFà�tÔ'¨Ô)<Ð=Ð=Ð=ÝŒð Gõ %Ð%EÑFÔFÐFØˆFð 	�	Š	�3˜�,ÑÔÐÐÐr   )r   N)r   r   r   rT   rD   r    r\   r   r^   rU   r   rS   r   r   r   rW   rW   ‹   sŒ   € € € € € ðð ð0˜Uð 0 tð 0ð 0ð 0ð 0ð)ð )ð )ð )ð �#�f‘+”+€Kð ˜cð  ¨)ð  ¸ð  ð  ð  ð  ð  ð  r   rW   ) ÚloggingÚior   Útypingr   r   r   Úpdfminerr   Úpdfminer.castingr   Úpdfminer.pdfexceptionsr	   Úpdfminer.pdftypesr
   r   r   r   Úpdfminer.psexceptionsr   Úpdfminer.psparserr   r   r   Úpdfminer.pdfdocumentr   Ú	getLoggerr   rB   r   r   rW   r   r   r   ú<module>rj      s˜  ðØ €€€Ø Ð Ð Ð Ð Ð Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1à Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ø /Ð /Ð /Ð /Ð /Ð /Ø IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;àð 1Ø0Ð0Ð0Ð0Ð0Ð0à€gÔ˜Ñ!Ô!€ð	ð 	ð 	ð 	ð 	�\ñ 	ô 	ð 	ð
q$ð q$ð q$ð q$ð q$�˜e I¨y¸)ÀTÐ$IÔJÔKñ q$ô q$ð q$ðh" ð " ð " ð " ð " �iñ " ô " ð " ð " ð " r   