§
    œ"²cC‡  ã            	       ó€  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd„ Zi dd“dd“dd“d	d
“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd “d!d"“d#d$“i d%d&“d'd(“d)d*“d+d,“d-d.“d/d0“d1d2“d3d4“d5d6“d7d8“d9d:“d;d<“d=d>“d?d@“dAdB“dCdD“dEdF“¥dGdHdIdJdKdLdMdNœ¥Z	dO„ Z
 G dP„ dQe¦  «        ZdR„ Z G dS„ dT ej        dUdVdWg¦  «        ¦  «        Z G dX„ dYe¦  «        Z G dZ„ d[¦  «        Z G d\„ d]¦  «        Z G d^„ d_e¦  «        Z G d`„ daej        ¦  «        Z G db„ dc¦  «        Z G dd„ de¦  «        Zdf„ Z G dg„ dh¦  «        ZdS )ié    Nc                 óF   — t           j        |                      d¦  «        z   S )NÚ	utf_16_be)ÚcodecsÚBOM_UTF16_BEÚencode)Úss    ú//usr/lib/python3/dist-packages/PIL/PdfParser.pyÚencode_textr
      s   € ÝÔ §¢¨+Ñ!6Ô!6Ñ6Ð6ó    é   úé   u   Ë˜é   u   Ë‡é   u   Ë†é   u   Ë™é   u   Ë�é   u   Ë›é   u   Ëšé   u   Ëœé€   u   â€¢é�   u   â€ é‚   u   â€¡éƒ   u   â€¦é„   u   â€”é…   u   â€“é†   u   Æ’é‡   u   â�„éˆ   u   â€¹é‰   u   â€ºéŠ   u   âˆ’é‹   u   â€°éŒ   u   â€žé�   u   â€œéŽ   u   â€�é�   u   â€˜é�   u   â€™é‘   u   â€šé’   u   â„¢é“   u   ï¬�é”   u   ï¬‚é•   u   Å�é–   u   Å’é—   u   Å é˜   u   Å¸u   Å½u   Ä±u   Å‚u   Å“u   Å¡u   Å¾u   â‚¬)é™   éš   é›   éœ   é�   éž   é    c                 ó  — | d t          t          j        ¦  «        …         t          j        k    r4| t          t          j        ¦  «        d …                              d¦  «        S d                     d„ | D ¦   «         ¦  «        S )Nr   Ú c              3   óf   K  — | ],}t                                |t          |¦  «        ¦  «        V — Œ-d S ©N)ÚPDFDocEncodingÚgetÚchr)Ú.0Úbytes     r	   ú	<genexpr>zdecode_text.<locals>.<genexpr>B   s8   è è € ÐIÐI¸t•~×)Ò)¨$µ°D±	´	Ñ:Ô:ÐIÐIÐIÐIÐIÐIr   )Úlenr   r   ÚdecodeÚjoin)Úbs    r	   Údecode_textrD   >   sq   € ØÐ	#�3�vÔ"Ñ#Ô#Ð	#Ô$­Ô(;Ò;Ð;Ø••VÔ(Ñ)Ô)Ð+Ð+Ô,×3Ò3°KÑ@Ô@Ð@à�wŠwÐIÐIÀqÐIÑIÔIÑIÔIÐIr   c                   ó   — e Zd ZdZdS )ÚPdfFormatErrorz\An error that probably indicates a syntactic or semantic error in the
    PDF file structureN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© r   r	   rF   rF   E   s   € € € € € ðð ð 	€Dr   rF   c                 ó(   — | st          |¦  «        ‚d S r9   )rF   )Ú	conditionÚerror_messages     r	   Úcheck_format_conditionrO   L   s"   € Øð ,Ý˜]Ñ+Ô+Ð+ð,ð ,r   c                   ó,   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚIndirectReferencec                 ó   — d| z  S )Nz%s %s RrK   ©Úselfs    r	   Ú__str__zIndirectReference.__str__T   s   € Ø˜4ÑÐr   c                 óP   — |                       ¦   «                              d¦  «        S ©Núus-ascii)rU   r   rS   s    r	   Ú	__bytes__zIndirectReference.__bytes__W   s   € Ø�|Š|‰~Œ~×$Ò$ ZÑ0Ô0Ð0r   c                 ó^   — |j         | j         u o|j        | j        k    o|j        | j        k    S r9   )Ú	__class__Ú	object_idÚ
generation©rT   Úothers     r	   Ú__eq__zIndirectReference.__eq__Z   s6   € àŒO˜tœ~Ð-ð 4Ø” 4¤>Ò1ð4àÔ  D¤OÒ3ð	
r   c                 ó   — | |k     S r9   rK   r^   s     r	   Ú__ne__zIndirectReference.__ne__a   s   € Ø˜E’MÐ"Ð"r   c                 ó8   — t          | j        | j        f¦  «        S r9   )Úhashr\   r]   rS   s    r	   Ú__hash__zIndirectReference.__hash__d   s   € Ý�T”^ T¤_Ð5Ñ6Ô6Ð6r   N)rG   rH   rI   rU   rY   r`   rb   re   rK   r   r	   rQ   rQ   Q   s_   € € € € € ð ð  ð  ð1ð 1ð 1ð
ð 
ð 
ð#ð #ð #ð7ð 7ð 7ð 7ð 7r   rQ   ÚIndirectReferenceTupler\   r]   c                   ó   — e Zd Zd„ ZdS )ÚIndirectObjectDefc                 ó   — d| z  S )Nz	%s %s objrK   rS   s    r	   rU   zIndirectObjectDef.__str__i   s   € Ø˜TÑ!Ð!r   N)rG   rH   rI   rU   rK   r   r	   rh   rh   h   s#   € € € € € ð"ð "ð "ð "ð "r   rh   c                   ó>   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	S )
Ú	XrefTablec                 óB   — i | _         i | _        ddi| _        d| _        d S )Nr   i   F)Úexisting_entriesÚnew_entriesÚdeleted_entriesÚreading_finishedrS   s    r	   Ú__init__zXrefTable.__init__n   s,   € Ø "ˆÔØˆÔØ ! 5˜zˆÔØ %ˆÔÐÐr   c                 ód   — | j         r|| j        |<   n
|| j        |<   || j        v r
| j        |= d S d S r9   )rp   rn   rm   ro   ©rT   ÚkeyÚvalues      r	   Ú__setitem__zXrefTable.__setitem__t   sQ   € ØÔ ð 	/Ø$)ˆDÔ˜SÑ!Ð!à).ˆDÔ! #Ñ&Ø�$Ô&Ð&Ð&ØÔ$ SÐ)Ð)Ð)ð 'Ð&r   c                 óX   — 	 | j         |         S # t          $ r | j        |         cY S w xY wr9   )rn   ÚKeyErrorrm   ©rT   rt   s     r	   Ú__getitem__zXrefTable.__getitem__|   sD   € ð	.ØÔ# CÔ(Ð(øÝð 	.ð 	.ð 	.ØÔ(¨Ô-Ð-Ð-Ð-ð	.øøøs   ‚ �)¨)c                 ó6  — || j         v r*| j         |         d         dz   }| j         |= || j        |<   d S || j        v r"| j        |         d         dz   }|| j        |<   d S || j        v r| j        |         }d S dt          |¦  «        z   dz   }t	          |¦  «        ‚)Né   z
object ID z+ cannot be deleted because it doesn't exist)rn   ro   rm   ÚstrÚ
IndexError)rT   rt   r]   Úmsgs       r	   Ú__delitem__zXrefTable.__delitem__‚   sÅ   € Ø�$Ô"Ð"Ð"ØÔ)¨#Ô.¨qÔ1°AÑ5ˆJØÔ  Ð%Ø(2ˆDÔ  Ñ%Ð%Ð%Ø�DÔ)Ð)Ð)ØÔ.¨sÔ3°AÔ6¸Ñ:ˆJØ(2ˆDÔ  Ñ%Ð%Ð%Ø�DÔ(Ð(Ð(ØÔ-¨cÔ2ˆJˆJˆJð �s 3™xœxÑ'Ð*WÑWð õ ˜S‘/”/Ð!r   c                 ó&   — || j         v p|| j        v S r9   )rm   rn   ry   s     r	   Ú__contains__zXrefTable.__contains__’   s   € Ø�dÔ+Ð+ÐF¨s°dÔ6FÐ/FÐFr   c                 ó  — t          t          | j                             ¦   «         ¦  «        t          | j                             ¦   «         ¦  «        z  t          | j                             ¦   «         ¦  «        z  ¦  «        S r9   )r@   Úsetrm   Úkeysrn   ro   rS   s    r	   Ú__len__zXrefTable.__len__•   sl   € ÝÝ�Ô%×*Ò*Ñ,Ô,Ñ-Ô-Ý�$Ô"×'Ò'Ñ)Ô)Ñ*Ô*ñ+å�$Ô&×+Ò+Ñ-Ô-Ñ.Ô.ñ/ñ
ô 
ð 	
r   c                 óê   — t          | j                             ¦   «         ¦  «        t          | j                             ¦   «         ¦  «        z
  t          | j                             ¦   «         ¦  «        z  S r9   )r„   rm   r…   ro   rn   rS   s    r	   r…   zXrefTable.keysœ   s\   € å�Ô%×*Ò*Ñ,Ô,Ñ-Ô-µ°DÔ4H×4MÒ4MÑ4OÔ4OÑ0PÔ0PÑPÝ�Ô ×%Ò%Ñ'Ô'Ñ(Ô(ñ)ð 	)r   c                 ó˜  — t          t          | j                             ¦   «         ¦  «        t          | j                             ¦   «         ¦  «        z  ¦  «        }t          t          | j                             ¦   «         ¦  «        ¦  «        }|                     ¦   «         }|                     d¦  «         |�rd }t          |¦  «        D ](\  }}|�	|dz   |k    r|}Œ|d |…         }||d …         } n|}d }|                     d|d         t          |¦  «        fz  ¦  «         |D ]Ÿ}	|	| j        v r$|                     d| j        |	         z  ¦  «         Œ/| 	                    d¦  «        }
t          |	|
k    d|	› d|
› �¦  «         	 |d         }n# t          $ r d}Y nw xY w|                     d|| j        |	         fz  ¦  «         Œ |�°|S )	Ns   xref
r|   s   %d %d
r   s   %010d %05d n 
z*expected the next deleted object ID to be z, instead found s   %010d %05d f 
)Úsortedr„   rn   r…   ro   ÚtellÚwriteÚ	enumerater@   ÚpoprO   r~   )rT   Úfr…   Údeleted_keysÚ	startxrefÚprevÚindexrt   Úcontiguous_keysr\   Úthis_deleted_object_idÚnext_in_linked_lists               r	   r‹   zXrefTable.write¡   s'  € Ý•c˜$Ô*×/Ò/Ñ1Ô1Ñ2Ô2µS¸Ô9M×9RÒ9RÑ9TÔ9TÑ5UÔ5UÑUÑVÔVˆÝ�c $Ô"6×";Ò";Ñ"=Ô"=Ñ>Ô>Ñ?Ô?ˆØ—F’F‘H”Hˆ	Ø	�Š�	ÑÔÐØñ 	àˆDÝ'¨™oœoð 	ð 	‘
��sØ�< 4¨!¡8¨s¢? ?Ø�D�Dà&*¨6¨E¨6¤l�OØ   œ<�DØ�Eà"&�Ø�Ø�GŠG�J /°!Ô"4µc¸/Ñ6JÔ6JÐ!KÑKÑLÔLÐLØ,ð ð �	Ø Ô 0Ð0Ð0Ø—G’GÐ.°Ô1AÀ)Ô1LÑLÑMÔMÐMÐMà-9×-=Ò-=¸aÑ-@Ô-@Ð*Ý*Ø!Ð%;Ò;ðBÀYð Bð BØ)?ðBð Bñô ð ð
0Ø.:¸1¬oÐ+Ð+øÝ%ð 0ð 0ð 0Ø./Ð+Ð+Ð+ð0øøøà—G’GØ*Ø.°Ô0DÀYÔ0OÐPñQñô ð ð ð9 ñ 	ð@ Ðs   ÆFÆFÆFN)rG   rH   rI   rq   rv   rz   r€   r‚   r†   r…   r‹   rK   r   r	   rk   rk   m   s�   € € € € € ð&ð &ð &ð*ð *ð *ð.ð .ð .ð"ð "ð "ð Gð Gð Gð
ð 
ð 
ð)ð )ð )ð
%ð %ð %ð %ð %r   rk   c                   óŒ   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zed„ ¦   «         Z	 e
 edd¦  «        ¦  «        d	„ d
D ¦   «         z
  Zd„ ZdS )ÚPdfNamec                 ó¼   — t          |t          ¦  «        r|j        | _        d S t          |t          ¦  «        r	|| _        d S |                     d¦  «        | _        d S rW   )Ú
isinstancer—   ÚnameÚbytesr   )rT   rš   s     r	   rq   zPdfName.__init__Ê   sU   € Ý�d�GÑ$Ô$ð 	0Øœ	ˆDŒIˆIˆIÝ˜�eÑ$Ô$ð 	0ØˆDŒIˆIˆIàŸš JÑ/Ô/ˆDŒIˆIˆIr   c                 ó6   — | j                              d¦  «        S rW   )rš   rA   rS   s    r	   Úname_as_strzPdfName.name_as_strÒ   s   € ØŒy×Ò 
Ñ+Ô+Ð+r   c                 ób   — t          |t          ¦  «        o|j        | j        k    p
|| j        k    S r9   )r™   r—   rš   r^   s     r	   r`   zPdfName.__eq__Õ   s1   € å�u�gÑ&Ô&ÐB¨5¬:¸¼Ò+Bð à�d”iÒð	 r   c                 ó*   — t          | j        ¦  «        S r9   )rd   rš   rS   s    r	   re   zPdfName.__hash__Ú   s   € Ý�D”I‰ŒÐr   c                 ó2   — dt          | j        ¦  «        › d�S )NzPdfName(ú))Úreprrš   rS   s    r	   Ú__repr__zPdfName.__repr__Ý   s   € Ø,�$˜tœy™/œ/Ð,Ð,Ð,Ð,r   c                 óH   —  | t                                |¦  «        ¦  «        S r9   )Ú	PdfParserÚinterpret_name)ÚclsÚdatas     r	   Úfrom_pdf_streamzPdfName.from_pdf_streamà   s    € àˆs•9×+Ò+¨DÑ1Ô1Ñ2Ô2Ð2r   é!   é   c                 ó,   — h | ]}t          |¦  «        ’ŒS rK   )Úord)r=   Úcs     r	   ú	<setcomp>zPdfName.<setcomp>ä   s   € Ð*IÐ*IÐ*I°a­3¨q©6¬6Ð*IÐ*IÐ*Ir   z#%/()<>[]{}c                 óÀ   — t          d¦  «        }| j        D ]9}|| j        v r|                     |¦  «         Œ!|                     d|z  ¦  «         Œ:t          |¦  «        S )Nó   /s   #%02X)Ú	bytearrayrš   Úallowed_charsÚappendÚextendr›   )rT   ÚresultrC   s      r	   rY   zPdfName.__bytes__æ   sf   € Ý˜4‘”ˆØ”ð 	,ð 	,ˆAØ�DÔ&Ð&Ð&Ø—’˜aÑ Ô Ð Ð à—’˜h¨™lÑ+Ô+Ð+Ð+Ý�V‰}Œ}Ðr   N)rG   rH   rI   rq   r�   r`   re   r£   Úclassmethodr©   r„   Úranger³   rY   rK   r   r	   r—   r—   É   s¸   € € € € € ð0ð 0ð 0ð,ð ,ð ,ð ð  ð  ð
ð ð ð-ð -ð -ð ð3ð 3ñ „[ð3ð �C˜˜˜b #™œÑ'Ô'Ð*IÐ*I¸=Ð*IÑ*IÔ*IÑI€Mðð ð ð ð r   r—   c                   ó   — e Zd Zd„ ZdS )ÚPdfArrayc                 óL   — dd                      d„ | D ¦   «         ¦  «        z   dz   S )Ns   [ ó    c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r9   )Úpdf_repr)r=   Úxs     r	   r?   z%PdfArray.__bytes__.<locals>.<genexpr>ò   s(   è è € Ð ;Ð ;°¥¨!¡¤Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;r   s    ])rB   rS   s    r	   rY   zPdfArray.__bytes__ñ   s-   € Ø�t—y’yÐ ;Ð ;°dÐ ;Ñ ;Ô ;Ñ;Ô;Ñ;¸eÑCÐCr   N)rG   rH   rI   rY   rK   r   r	   rº   rº   ð   s(   € € € € € ðDð Dð Dð Dð Dr   rº   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚPdfDictc                 óˆ   — |dk    r#t           j                             | ||¦  «         d S || |                     d¦  «        <   d S )Nr¨   rX   )ÚcollectionsÚUserDictÚ__setattr__r   rs   s      r	   rÅ   zPdfDict.__setattr__ö   sH   € Ø�&Š=ˆ=ÝÔ ×,Ò,¨T°3¸Ñ>Ô>Ð>Ð>Ð>à+0ˆD�—’˜JÑ'Ô'Ñ(Ð(Ð(r   c                 ó  — 	 | |                      d¦  «                 }n"# t          $ r}t          |¦  «        |‚d }~ww xY wt          |t          ¦  «        rt          |¦  «        }|                     d¦  «        �r|                     d¦  «        r
|dd …         }d}t          |¦  «        dk    rO|d         }t          |dd…         ¦  «        d	z  }t          |¦  «        d
k    r|t          |dd
…         ¦  «        z  }dd t          |¦  «        dz
  …         }t          j        |d t          |¦  «        dz   …         |¦  «        }|dv r9|d	z  }|dk    r|dz  }t          j        t          j        |¦  «        |z   ¦  «        }|S )NrX   ÚDatezD:é   ÚZé   é   é   é<   é   é   z%Y%m%d%H%M%S)ú+ú-rÐ   éÿÿÿÿ)r   rx   ÚAttributeErrorr™   r›   rD   ÚendswithÚ
startswithr@   ÚintÚtimeÚstrptimeÚgmtimeÚcalendarÚtimegm)rT   rt   ru   ÚeÚrelationshipÚoffsetÚformats          r	   Ú__getattr__zPdfDict.__getattr__ü   s�  € ð	-Ø˜Ÿš JÑ/Ô/Ô0ˆEˆEøÝð 	-ð 	-ð 	-Ý  Ñ%Ô%¨1Ð,øøøøð	-øøøå�e�UÑ#Ô#ð 	'Ý Ñ&Ô&ˆEØ�<Š<˜ÑÔñ 	EØ×Ò Ñ%Ô%ð "Ø˜a˜b˜bœ	�àˆLÝ�5‰zŒz˜BŠˆØ$ Rœy�Ý˜U 2 b 5œ\Ñ*Ô*¨RÑ/�Ý�u‘:”: ’?�?Ø�c %¨¨2¨¤,Ñ/Ô/Ñ/�Fà#Ð$4¥c¨%¡j¤j°1¡nÐ$4Ô5ˆFÝ”M %Ð(9­#¨f©+¬+¸©/Ð(9Ô":¸FÑCÔCˆEØ˜zÐ)Ð)Ø˜"‘�Ø 3Ò&Ð&Ø˜b‘L�FÝœ¥H¤O°EÑ$:Ô$:¸VÑ$CÑDÔD�Øˆs   ‚ ž
=¨8¸=c                 óœ  — t          d¦  «        }|                      ¦   «         D ]…\  }}|€Œt          |¦  «        }|                     d¦  «         |                     t	          t          |¦  «        ¦  «        ¦  «         |                     d¦  «         |                     |¦  «         Œ†|                     d¦  «         t	          |¦  «        S )Nó   <<ó   
r¼   s   
>>)r²   Úitemsr¾   rµ   r›   r—   )rT   Úoutrt   ru   s       r	   rY   zPdfDict.__bytes__  s´   € Ý˜ÑÔˆØŸ*š*™,œ,ð 	ð 	‰JˆC�Øˆ}ØÝ˜U‘O”OˆEØ�JŠJ�uÑÔÐØ�JŠJ•u�W S™\œ\Ñ*Ô*Ñ+Ô+Ð+Ø�JŠJ�tÑÔÐØ�JŠJ�uÑÔÐÐØ�
Š
�7ÑÔÐÝ�S‰zŒzÐr   N)rG   rH   rI   rÅ   rà   rY   rK   r   r	   rÁ   rÁ   õ   sA   € € € € € ð1ð 1ð 1ðð ð ð6ð ð ð ð r   rÁ   c                   ó   — e Zd Zd„ Zd„ ZdS )Ú	PdfBinaryc                 ó   — || _         d S r9   )r¨   )rT   r¨   s     r	   rq   zPdfBinary.__init__&  s   € ØˆŒ	ˆ	ˆ	r   c                 óP   — dd                      d„ | j        D ¦   «         ¦  «        z  S )Ns   <%s>r   c              3   ó    K  — | ]	}d |z  V — Œ
dS )s   %02XNrK   ©r=   rC   s     r	   r?   z&PdfBinary.__bytes__.<locals>.<genexpr>*  s&   è è € Ð!AÐ!A°! '¨A¡+Ð!AÐ!AÐ!AÐ!AÐ!AÐ!Ar   )rB   r¨   rS   s    r	   rY   zPdfBinary.__bytes__)  s*   € Ø˜ŸšÐ!AÐ!A°t´yÐ!AÑ!AÔ!AÑAÔAÑAÐAr   N)rG   rH   rI   rq   rY   rK   r   r	   rç   rç   %  s7   € € € € € ðð ð ðBð Bð Bð Bð Br   rç   c                   ó   — e Zd Zd„ Zd„ ZdS )Ú	PdfStreamc                 ó"   — || _         || _        d S r9   )Ú
dictionaryÚbuf)rT   rï   rð   s      r	   rq   zPdfStream.__init__.  s   € Ø$ˆŒØˆŒˆˆr   c                 óT  — 	 | j         j        }n# t          $ r
 | j        cY S w xY w|dk    rR	 | j         j        }n# t          $ r | j         j        }Y nw xY wt          j        | j        t          |¦  «        ¬¦  «        S dt          | j         j        ¦  «        › d�}t          |¦  «        ‚)Ns   FlateDecode)Úbufsizezstream filter z unknown/unsupported)rï   ÚFilterrÓ   rð   ÚDLÚLengthÚzlibÚ
decompressrÖ   r¢   ÚNotImplementedError)rT   ÚfilterÚexpected_lengthr   s       r	   rA   zPdfStream.decode2  sÈ   € ð	Ø”_Ô+ˆFˆFøÝð 	ð 	ð 	Ø”8ˆOˆOˆOð	øøøà�^Ò#Ð#ð9Ø"&¤/Ô"4��øÝ!ð 9ð 9ð 9Ø"&¤/Ô"8���ð9øøøå”? 4¤8µS¸Ñ5IÔ5IÐJÑJÔJÐJàU¥4¨¬Ô(>Ñ#?Ô#?ÐUÐUÐUˆCÝ% cÑ*Ô*Ð*s   ‚ �#¢#­: ºAÁAN)rG   rH   rI   rq   rA   rK   r   r	   rí   rí   -  s2   € € € € € ðð ð ð+ð +ð +ð +ð +r   rí   c                 óþ  — | du rdS | du rdS | €dS t          | t          t          t          t          f¦  «        rt          | ¦  «        S t          | t          ¦  «        r"t          | ¦  «                             d¦  «        S t          | t          ¦  «        r"t          | ¦  «                             d¦  «        S t          | t          j        ¦  «        r.dt          j        d| ¦  «                             d¦  «        z   d	z   S t          | t          ¦  «        rt          t          | ¦  «        ¦  «        S t          | t          ¦  «        rt          t          | ¦  «        ¦  «        S t          | t          ¦  «        rt          t!          | ¦  «        ¦  «        S t          | t
          ¦  «        rJ|                      d
d¦  «        } |                      dd¦  «        } |                      d	d¦  «        } d| z   d	z   S t          | ¦  «        S )NTs   trueFs   falses   nullrX   s   (D:z%Y%m%d%H%M%SZó   )ó   \s   \\ó   (ó   \(s   \))r™   r—   rÁ   rº   rç   r›   rÖ   r}   r   Úfloatr×   Ústruct_timeÚstrftimeÚdictÚlistr¾   r
   Úreplace)r¿   s    r	   r¾   r¾   B  s·  € ØˆD€y€yØˆwØ	
ˆeˆˆØˆxØ	
ˆØˆwÝ	�A�¥­(µIÐ>Ñ	?Ô	?ð Ý�Q‰xŒxˆÝ	�A•sÑ	Ô	ð Ý�1‰vŒv�}Š}˜ZÑ(Ô(Ð(Ý	�A•uÑ	Ô	ð Ý�1‰vŒv�}Š}˜ZÑ(Ô(Ð(Ý	�A•tÔ'Ñ	(Ô	(ð Ø�œ o°qÑ9Ô9×@Ò@ÀÑLÔLÑLÈtÑSÐSÝ	�A•tÑ	Ô	ð Ý•W˜Q‘Z”ZÑ Ô Ð Ý	�A•tÑ	Ô	ð Ý•X˜a‘[”[Ñ!Ô!Ð!Ý	�A•sÑ	Ô	ð 	Ý� A™œÑ'Ô'Ð'Ý	�A•uÑ	Ô	ð à�IŠI�e˜WÑ%Ô%ˆØ�IŠI�d˜FÑ#Ô#ˆØ�IŠI�d˜FÑ#Ô#ˆØ�a‰x˜$‰Ðå�Q‰xŒxˆr   c                   óz  — e Zd ZdZdWd„Zd„ Zd„ Zd„ Zd	„ Zd
„ Z	d„ Z
d„ Zd„ Zd„ Zd„ ZdXd„Zd„ Zd„ Zd„ Zed„ ¦   «         Zd„ ZdXd„ZdZdZdZdZedz   Zedz   ZdZdZeez   ez   Z e j!        edz   ez   d z   ez   d!z   ez   d"z   ez   d#z   ez   d$z   e j"        ¦  «        Z# e j!        edz   ez   d%z   ez   d!z   ez   d"z   ez   d#z   ez   e j"        ¦  «        Z$d&„ Z%d'„ Z& e j!        e¦  «        Z' e j!        ed(z   ez   d)z   ¦  «        Z( e j!        ed*z   ¦  «        Z) e j!        ed+z   ez   ¦  «        Z*e+d,„ ¦   «         Z, e j!        d-¦  «        Z-e+dYd/„¦   «         Z. e j!        ed0z   ez   d)z   ¦  «        Z/ e j!        ed1z   ez   d)z   ¦  «        Z0 e j!        ed2z   ez   d)z   ¦  «        Z1 e j!        ed3z   ez   d)z   ¦  «        Z2 e j!        ed4z   ez   d)z   ¦  «        Z3 e j!        ed5z   ¦  «        Z4 e j!        ed6z   ¦  «        Z5 e j!        ed7z   ez   d8z   ¦  «        Z6 e j!        ed9z   ¦  «        Z7 e j!        ed:z   ez   d:z   ez   d;z   ez   d)z   ¦  «        Z8 e j!        ed:z   ez   d:z   ez   d<z   ez   d)z   ¦  «        Z9 e j!        ed=z   ez   d)z   ¦  «        Z: e j!        d>ez   d?z   ez   d@z   ¦  «        Z; e j!        edAz   ¦  «        Z< e j!        edBz   ez   d)z   ¦  «        Z=e+dZdD„¦   «         Z> e j!        dE¦  «        Z?i dFdG“dHdI“dJdK“dLdM“dNdO“d>d>“d)d)“dPdP“ e@dF¦  «        dG“ e@dH¦  «        dI“ e@dJ¦  «        dK“ e@dL¦  «        dM“ e@dN¦  «        dO“ e@d>¦  «        d>“ e@d)¦  «        d)“ e@dP¦  «        dP“ZAe+dQ„ ¦   «         ZB e j!        edRz   ez   ¦  «        ZC e j!        ed"z   ez   d"z   ez   ez   ¦  «        ZD e j!        dS¦  «        ZEdT„ ZFd[dU„ZGdXdV„ZHdS )\r¥   z|Based on
    https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/PDF32000_2008.pdf
    Supports PDF up to 1.4
    Nr   Úrbc                 óÐ  — |r|rd}t          |¦  «        ‚|| _        || _        || _        || _        d| _        d| _        |� |€t          ||¦  «        x| _        }d| _        |�A|                      |¦  «        x| _        }d| _        |st          |d¦  «        r|j
        | _        i | _        |r|                      ¦   «          ndx| _        | _        t          ¦   «         | _        d | _        t          ¦   «         | _        d | _        i | _        g | _        g | _        d | _        d | _        i | _        t5          ¦   «         | _        d| j        _        |r|                      ¦   «          d S d S )Nz4specify buf or f or filename, but not both buf and fFTrš   r   )ÚRuntimeErrorÚfilenamerð   rŽ   Ústart_offsetÚshould_close_bufÚshould_close_fileÚopenÚget_buf_from_fileÚhasattrrš   Úcached_objectsÚread_pdf_infoÚfile_size_totalÚfile_size_thisrÁ   ÚrootÚroot_refÚinfoÚinfo_refÚpage_tree_rootÚpagesÚ
orig_pagesÚ	pages_refÚlast_xref_section_offsetÚtrailer_dictrk   Ú
xref_tablerp   Úseek_end)rT   r
  rŽ   rð   r  Úmoder   s          r	   rq   zPdfParser.__init__g  s€  € Øð 	$�1ð 	$ØHˆCÝ˜sÑ#Ô#Ð#Ø ˆŒØˆŒØˆŒØ(ˆÔØ %ˆÔØ!&ˆÔØÐ A IÝ˜h¨Ñ-Ô-Ð-ˆDŒF�QØ%)ˆDÔ"Øˆ=Ø!×3Ò3°AÑ6Ô6Ð6ˆDŒH�sØ$(ˆDÔ!Øð '¥¨¨6Ñ 2Ô 2ð 'Ø !¤�”Ø ˆÔØð 	*Ø×ÒÑ Ô Ð Ð à9:Ð:ˆDÔ  4Ô#6Ý™	œ	ˆDŒIØ ˆDŒMÝ™	œ	ˆDŒIØ ˆDŒMØ"$ˆDÔØˆDŒJØ ˆDŒOØ!ˆDŒNØ,0ˆDÔ)Ø "ˆDÔÝ'™kœkˆDŒOØ+/ˆŒÔ(Øð 	Ø�MŠM‰OŒOˆOˆOˆOð	ð 	r   c                 ó   — | S r9   rK   rS   s    r	   Ú	__enter__zPdfParser.__enter__�  s   € Øˆr   c                 ó.   — |                       ¦   «          dS )NF)Úclose)rT   Úexc_typeÚ	exc_valueÚ	tracebacks       r	   Ú__exit__zPdfParser.__exit__�  s   € Ø�
Š
‰ŒˆØˆur   c                 óV   — |                       ¦   «          |                      ¦   «          d S r9   )Ú	close_bufr   rS   s    r	   Ústart_writingzPdfParser.start_writing”  s#   € Ø�ŠÑÔÐØ�Š‰Œˆˆˆr   c                 ój   — 	 | j                              ¦   «          n# t          $ r Y nw xY wd | _         d S r9   )rð   r%  rÓ   rS   s    r	   r+  zPdfParser.close_buf˜  sG   € ð	ØŒH�NŠNÑÔÐÐøÝð 	ð 	ð 	ØˆDð	øøøàˆŒˆˆs   ‚ œ
)¨)c                 ó    — | j         r|                      ¦   «          | j        �)| j        r$| j                             ¦   «          d | _        d S d S d S r9   )r  r+  rŽ   r  r%  rS   s    r	   r%  zPdfParser.closeŸ  sU   € ØÔ ð 	Ø�NŠNÑÔÐØŒ6Ð $Ô"8ÐØŒF�LŠL‰NŒNˆNØˆDŒFˆFˆFð ÐÐÐr   c                 óP   — | j                              dt          j        ¦  «         d S )Nr   )rŽ   ÚseekÚosÚSEEK_ENDrS   s    r	   r   zPdfParser.seek_end¦  s    € ØŒ�Š�A•r”{Ñ#Ô#Ð#Ð#Ð#r   c                 ó:   — | j                              d¦  «         d S )Ns	   %PDF-1.4
)rŽ   r‹   rS   s    r	   Úwrite_headerzPdfParser.write_header©  s   € ØŒ�Š�]Ñ#Ô#Ð#Ð#Ð#r   c                 óf   — | j                              d|› d�                     ¦   «         ¦  «         d S )Nz% ú
)rŽ   r‹   r   )rT   r   s     r	   Úwrite_commentzPdfParser.write_comment¬  s0   € ØŒ�Š�Z˜!�Z�Z�Z×&Ò&Ñ(Ô(Ñ)Ô)Ð)Ð)Ð)r   c                 óØ  — |                       ¦   «          |                      | j                             ¦   «         ¦  «        | _        |                      d¦  «        | _        |                      ¦   «          |                      | j        t          d¦  «        | j        ¬¦  «         |                      | j        t          d¦  «        t          | j
        ¦  «        | j
        ¬¦  «         | j        S )Nr   ó   Catalog)ÚTypeÚPagesó   Pages)r:  ÚCountÚKids)Údel_rootÚnext_object_idrŽ   rŠ   r  r  Úrewrite_pagesÚ	write_objr—   r@   r  rS   s    r	   Úwrite_catalogzPdfParser.write_catalog¯  s¾   € Ø�Š‰ŒˆØ×+Ò+¨D¬F¯KªK©M¬MÑ:Ô:ˆŒØ×,Ò,¨QÑ/Ô/ˆŒØ×ÒÑÔÐØ�Š�t”}­7°:Ñ+>Ô+>ÀdÄnˆÑUÔUÐUØ�ŠØŒNÝ˜Ñ"Ô"Ý�d”j‘/”/Ø”ð	 	ñ 	
ô 	
ð 	
ð Œ}Ðr   c                 óZ  — g }t          | j        ¦  «        D ]Å\  }}| j        |         }| j        |j        = |                     |t          d¦  «                 ¦  «         || j        vrŒQi }|                     ¦   «         D ]\  }}||| 	                    ¦   «         <   Œ| j
        |d<    | j        di |¤Ž}t          | j        ¦  «        D ]\  }	}
|
|k    r
|| j        |	<   ŒŒÆ|D ]D}|r@| j        |         }|j        | j        v r| j        |j        = |                     dd ¦  «        }|°@ŒEg | _        d S )Ns   ParentÚParentr9   )rŒ   r  r  r  r\   r´   r—   r  rä   r�   r  Ú
write_pager;   )rT   Úpages_tree_nodes_to_deleteÚiÚpage_refÚ	page_infoÚstringified_page_infort   ru   Únew_page_refÚjÚcur_page_refÚpages_tree_node_refÚpages_tree_nodes                r	   rA  zPdfParser.rewrite_pages½  sƒ  € Ø%'Ð"Ý$ T¤_Ñ5Ô5ð 	1ð 	1‰KˆAˆxØÔ+¨HÔ5ˆIØ” Ô 2Ð3Ø&×-Ò-¨i½À	Ñ8JÔ8JÔ.KÑLÔLÐLØ˜tœzÐ)Ð)àà$&Ð!Ø'ŸošoÑ/Ô/ð Að A‘
��Uà;@Ð% c§o¢oÑ&7Ô&7Ñ8Ð8Ø.2¬nÐ! (Ñ+Ø*˜4œ?ÐIÐIÐ3HÐIÐIˆLÝ#,¨T¬ZÑ#8Ô#8ð 1ð 1‘��<Ø 8Ò+Ð+à$0�D”J˜q‘Møð1ð
 $>ð 	Kð 	KÐØ%ð KØ"&Ô"5Ð6IÔ"J�Ø&Ô0°D´OÐCÐCØœÐ(;Ô(EÐFØ&5×&9Ò&9¸)ÀTÑ&JÔ&JÐ#ð	 &ð Køð
 ˆŒˆˆr   c                 óÔ  — |r|                       ¦   «          || _        | j        r |                      d | j        ¦  «        | _        | j                             | j        ¦  «        }t          | j        ¦  «        }| j        |dœ}| j	        �
| j	        |d<   | j        r
| j        |d<   || _	        | j                             dt          t          |¦  «        ¦  «        z   d|z  z   ¦  «         d S )N)ó   Rootó   Sizeó   Prevó   Infos   trailer
s   
startxref
%d
%%%%EOF)r?  r  r  rB  r  r  r‹   rŽ   r@   r  r›   rÁ   )rT   Únew_root_refÚ
start_xrefÚnum_entriesr  s        r	   Úwrite_xref_and_trailerz PdfParser.write_xref_and_trailerÚ  sò   € Øð 	)Ø�MŠM‰OŒOˆOØ(ˆDŒMØŒ9ð 	<Ø ŸNšN¨4°´Ñ;Ô;ˆDŒMØ”_×*Ò*¨4¬6Ñ2Ô2ˆ
Ý˜$œ/Ñ*Ô*ˆØ!%¤¸ÐEÐEˆØÔ(Ð4Ø$(Ô$AˆL˜Ñ!ØŒ9ð 	2Ø$(¤MˆL˜Ñ!Ø(2ˆÔ%ØŒ�ŠØÝ•G˜LÑ)Ô)Ñ*Ô*ñ+à)¨JÑ6ñ7ñ	
ô 	
ð 	
ð 	
ð 	
r   c                 ó°   — t          |t          ¦  «        r| j        |         }d|vrt          d¦  «        |d<   d|vr
| j        |d<    | j        |g|¢R i |¤ŽS )Nr:  ó   PagerE  )r™   rÖ   r  r—   r  rB  )rT   ÚrefÚobjsÚdict_objs       r	   rF  zPdfParser.write_pageî  su   € Ý�c�3ÑÔð 	"Ø”*˜S”/ˆCØ˜Ð!Ð!Ý& wÑ/Ô/ˆH�VÑØ˜8Ð#Ð#Ø!%¤ˆH�XÑØˆtŒ~˜cÐ5 DÐ5Ð5Ð5¨HÐ5Ð5Ð5r   c                 ó   — | j         }|€(|                      |                     ¦   «         ¦  «        }n(|                     ¦   «         |j        f| j        |j        <   |                     t          t          |Ž ¦  «        ¦  «         | 	                    dd ¦  «        }|�t          |¦  «        |d<   |r"|                     t          |¦  «        ¦  «         |D ]$}|                     t          |¦  «        ¦  «         Œ%|�?|                     d¦  «         |                     |¦  «         |                     d¦  «         |                     d¦  «         |S )NÚstreamrõ   s   stream
s   
endstream
s   endobj
)rŽ   r@  rŠ   r]   r  r\   r‹   r›   rh   r�   r@   r¾   )rT   r\  r]  r^  rŽ   r`  Úobjs          r	   rB  zPdfParser.write_obj÷  s.  € ØŒFˆØˆ;Ø×%Ò% a§f¢f¡h¤hÑ/Ô/ˆCˆCà./¯fªf©h¬h¸¼Ð-GˆDŒO˜CœMÑ*Ø	�Š•Õ'¨Ð-Ñ.Ô.Ñ/Ô/Ð/Ø—’˜h¨Ñ-Ô-ˆØÐÝ!$ V¡¤ˆH�XÑØð 	(Ø�GŠG•H˜XÑ&Ô&Ñ'Ô'Ð'Øð 	#ð 	#ˆCØ�GŠG•H˜S‘M”MÑ"Ô"Ð"Ð"ØÐØ�GŠG�KÑ Ô Ð Ø�GŠG�F‰OŒOˆOØ�GŠGÐ$Ñ%Ô%Ð%Ø	�Š�ÑÔÐØˆ
r   c                 ól   — | j         €d S | j        | j         j        = | j        | j        d         j        = d S )Nr<  )r  r  r\   r  rS   s    r	   r?  zPdfParser.del_root  s8   € ØŒ=Ð ØˆFØŒO˜DœMÔ3Ð4ØŒO˜DœI hÔ/Ô9Ð:Ð:Ð:r   c                 ó  — t          | d¦  «        r|                      ¦   «         S t          | d¦  «        r|                      ¦   «         S 	 t          j        |                      ¦   «         dt          j        ¬¦  «        S # t          $ r Y dS w xY w)NÚ	getbufferÚgetvaluer   )Úaccessr   )r  rd  re  ÚmmapÚfilenoÚACCESS_READÚ
ValueError)rŽ   s    r	   r  zPdfParser.get_buf_from_file  s‹   € å�1�kÑ"Ô"ð 	Ø—;’;‘=”=Ð Ý�Q˜
Ñ#Ô#ð 	Ø—:’:‘<”<ÐðÝ”y §¢¡¤¨QµtÔ7GÐHÑHÔHÐHøÝð ð ð Ø�s�sðøøøs   Á
2A= Á=
BÂ
Bc                 ó�  — t          | j        ¦  «        | _        | j        | j        z
  | _        |                      ¦   «          | j        d         | _        | j                             dd ¦  «        | _	        t          |                      | j        ¦  «        ¦  «        | _        | j	        €t          ¦   «         | _        n,t          |                      | j	        ¦  «        ¦  «        | _        t          d| j        v d¦  «         t          | j        d         dk    d¦  «         t          d| j        v d¦  «         t          t          | j        d         t           ¦  «        d	¦  «         | j        d         | _        |                      | j        ¦  «        | _        |                      | j        ¦  «        | _        | j        d d …         | _        d S )
NrR  rU  ó   Typez/Type missing in Rootr9  z/Type in Root is not /Catalogr<  z/Pages missing in Rootz+/Pages in Root is not an indirect reference)r@   rð   r  r  r  Úread_trailerr  r  r;   r  rÁ   Úread_indirectr  r  rO   r™   rQ   r  r  Úlinearize_page_treer  r  rS   s    r	   r  zPdfParser.read_pdf_info  sŠ  € Ý" 4¤8™}œ}ˆÔØ"Ô2°TÔ5FÑFˆÔØ×ÒÑÔÐØÔ)¨'Ô2ˆŒØÔ)×-Ò-¨g°tÑ<Ô<ˆŒÝ˜D×.Ò.¨t¬}Ñ=Ô=Ñ>Ô>ˆŒ	ØŒ=Ð Ý™	œ	ˆDŒIˆIå × 2Ò 2°4´=Ñ AÔ AÑBÔBˆDŒIÝ˜w¨$¬)Ð3Ð5LÑMÔMÐMÝØŒI�gÔ *Ò,Ð.Mñ	
ô 	
ð 	
õ 	˜x¨4¬9Ð4Ð6NÑOÔOÐOÝÝ�t”y Ô*Õ,=Ñ>Ô>Ø9ñ	
ô 	
ð 	
ð œ 8Ô,ˆŒØ"×0Ò0°´Ñ@Ô@ˆÔØ×-Ò-¨dÔ.AÑBÔBˆŒ
ð œ* Q Q Qœ-ˆŒˆˆr   c                 óÞ   — 	 t          t          | j                             ¦   «         ¦  «        dz   d¦  «        }n # t          $ r t          dd¦  «        }Y nw xY w|�|df| j        |j        <   |S )Nr|   r   )rQ   Úmaxr  r…   rj  r\   )rT   rÞ   Ú	references      r	   r@  zPdfParser.next_object_id:  s€   € ð	0å)­#¨d¬o×.BÒ.BÑ.DÔ.DÑ*EÔ*EÈÑ*IÈ1ÑMÔMˆIˆIøÝð 	0ð 	0ð 	0Ý)¨!¨QÑ/Ô/ˆIˆIˆIð	0øøøàÐØ4:¸A°;ˆDŒO˜IÔ/Ñ0ØÐs   ‚7: ºAÁAs   [][()<>{}/%]s$   [][()<>{}/%\000\011\012\014\015\040]s   [\000\011\012\014\015\040]s#   [\000\011\012\014\015\0400-9a-fA-F]ó   *ó   +s   [\000\011\014\040]*s   [\r\n]+s   trailers   <<(.*>>)s	   startxrefs   ([0-9]+)s   %%EOFó   $s	   <<(.*?>>)c                 ó˜  — t          | j        ¦  «        dz
  }|| j        k     r| j        }| j                             | j        |¦  «        }t          |d¦  «         |}|r9|}| j                             | j        |                     ¦   «         dz   ¦  «        }|°9|s|}|                     d¦  «        }t          |                     d¦  «        ¦  «        | _	        |  
                    |¦  «        | _        t          ¦   «         | _        |                      | j	        ¬¦  «         d| j        v r"|                      | j        d         ¦  «         d S d S )Né @  ztrailer end not foundé   r|   rÈ   ©Úxref_section_offsetrT  )r@   rð   r  Úre_trailer_endÚsearchrO   ÚstartÚgrouprÖ   r  Úinterpret_trailerr  rk   r  Úread_xref_tableÚread_prev_trailer)rT   Úsearch_start_offsetÚmÚ
last_matchÚtrailer_datas        r	   rm  zPdfParser.read_trailerl  sE  € Ý! $¤(™mœm¨eÑ3ÐØ Ô!2Ò2Ð2Ø"&Ô"3ÐØÔ×&Ò& t¤xÐ1DÑEÔEˆÝ˜qÐ"9Ñ:Ô:Ð:àˆ
Øð 	EØˆJØÔ#×*Ò*¨4¬8°Q·W²W±Y´YÀ±^ÑDÔDˆAð ð 	Eð ð 	ØˆAØ—w’w˜q‘z”zˆÝ(+¨A¯GªG°A©J¬J©¬ˆÔ%Ø ×2Ò2°<Ñ@Ô@ˆÔÝ#™+œ+ˆŒØ×Ò°Ô1NÐÑOÔOÐOØ�dÔ'Ð'Ð'Ø×"Ò" 4Ô#4°WÔ#=Ñ>Ô>Ð>Ð>Ð>ð (Ð'r   c                 ó¤  — |                       |¬¦  «        }| j                             | j        ||dz   …         ¦  «        }t	          |d¦  «         |                     d¦  «        }t	          t          |                     d¦  «        ¦  «        |k    d¦  «         |                      |¦  «        }d|v r|                      |d         ¦  «         d S d S )Nry  rw  zprevious trailer not foundr|   rÈ   zGxref section offset in previous trailer doesn't match what was expectedrT  )	r€  Úre_trailer_prevr|  rð   rO   r~  rÖ   r  r�  )rT   rz  Útrailer_offsetrƒ  r…  r  s         r	   r�  zPdfParser.read_prev_trailer�  sÜ   € Ø×-Ò-ÐBUÐ-ÑVÔVˆØÔ ×'Ò'ØŒH�^ n°uÑ&<Ð<Ô=ñ
ô 
ˆõ 	˜qÐ">Ñ?Ô?Ð?Ø—w’w˜q‘z”zˆÝÝ�—’˜‘
”
‰OŒOÐ2Ò2ØUñ	
ô 	
ð 	
ð ×-Ò-¨lÑ;Ô;ˆØ�lÐ"Ð"Ø×"Ò" <°Ô#8Ñ9Ô9Ð9Ð9Ð9ð #Ð"r   s   /([!-$&'*-.0-;=?-Z\\^-z|~]+)(?=rü   râ   s   >>c           	      ó‚  — i }d}	 | j                              ||¦  «        }|si| j                             ||¦  «        }t          |o$|                     ¦   «         t          |¦  «        k    dt          ||d …         ¦  «        z   ¦  «         nY|                      |                     d¦  «        ¦  «        }|  	                    ||                     ¦   «         ¦  «        \  }}|||<   Œßt          d|v ot          |d         t          ¦  «        d¦  «         t          d|v ot          |d         t          ¦  «        d¦  «         |S )	Nr   Tz+name not found in trailer, remaining data: r|   rS  z&/Size not in trailer or not an integerrR  z1/Root not in trailer or not an indirect reference)Úre_nameÚmatchÚre_dict_endrO   Úendr@   r¢   r¦   r~  Ú	get_valuer™   rÖ   rQ   )r§   r…  ÚtrailerrÞ   rƒ  rt   ru   s          r	   r  zPdfParser.interpret_trailerš  sO  € àˆØˆð	!Ø”×!Ò! ,°Ñ7Ô7ˆAØð Ø”O×)Ò)¨,¸Ñ?Ô?�Ý&ØÐ6˜!Ÿ%š%™'œ'¥S¨Ñ%6Ô%6Ò6ØAÝ˜<¨¨¨Ô0Ñ1Ô1ñ2ñô ð ð
 Ø×$Ò$ Q§W¢W¨Q¡Z¤ZÑ0Ô0ˆCØŸMšM¨,¸¿º¹¼Ñ@Ô@‰MˆE�6Ø ˆG�C‰Lð	!õ 	Ø�wÐÐD¥:¨g°gÔ.>ÅÑ#DÔ#DØ4ñ	
ô 	
ð 	
õ 	Ø�wÐÐR¥:¨g°gÔ.>Õ@QÑ#RÔ#RØ?ñ	
ô 	
ð 	
ð ˆr   s   ([^#]*)(#([0-9a-fA-F]{2}))?Fc                 óš  — d}| j                              |¦  «        D ]‰}|                     d¦  «        rZ||                     d¦  «        t                               |                     d¦  «                             d¦  «        ¦  «        z   z  }Œq||                     d¦  «        z  }ŒŠ|r|                     d¦  «        S t          |¦  «        S )Nr   é   r|   rX   zutf-8)Úre_hashes_in_nameÚfinditerr~  r²   ÚfromhexrA   r›   )r§   ÚrawÚas_textrš   rƒ  s        r	   r¦   zPdfParser.interpret_name·  s¶   € àˆØÔ&×/Ò/°Ñ4Ô4ð 	#ð 	#ˆAØ�wŠw�q‰zŒzð #Ø˜Ÿš ™
œ
¥Y×%6Ò%6°q·w²w¸q±z´z×7HÒ7HÈÑ7TÔ7TÑ%UÔ%UÑUÑU��à˜Ÿš ™
œ
Ñ"��Øð 	Ø—;’;˜wÑ'Ô'Ð'å˜‘;”;Ðr   s   null(?=s   true(?=s   false(?=s   ([-+]?[0-9]+)(?=s)   ([-+]?([0-9]+\.[0-9]*|[0-9]*\.[0-9]+))(?=s   \[ó   ]s   <(s   *)>rÿ   s   ([-+]?[0-9]+)s   R(?=s   obj(?=s	   endobj(?=rþ   s	   %[^\r\n]*s   )*s   stream\r?\ns   endstream(?=rÒ   c                 óZ  — |dk    rdS | j                              ||¦  «        }|r|                     ¦   «         }| j                             ||¦  «        }|�rEt	          t          |                     d¦  «        ¦  «        dk    d¦  «         t	          t          |                     d¦  «        ¦  «        dk    d¦  «         t	          |d u pS|t          t          |                     d¦  «        ¦  «        t          |                     d¦  «        ¦  «        ¦  «        k    d¦  «         |                      ||                     ¦   «         |dz
  ¬¦  «        \  }}|€|d fS | j	                             ||¦  «        }t	          |d	¦  «         ||                     ¦   «         fS t	          | d
¦  «         | j
                             ||¦  «        }|rÌt	          t          |                     d¦  «        ¦  «        dk    d¦  «         t	          t          |                     d¦  «        ¦  «        dk    d¦  «         t          t          |                     d¦  «        ¦  «        t          |                     d¦  «        ¦  «        ¦  «        |                     ¦   «         fS | j                             ||¦  «        }|�rä|                     ¦   «         }i }| j                             ||¦  «        }|sj|                      |||dz
  ¬¦  «        \  }}|€|d fS |                      |||dz
  ¬¦  «        \  }	}|	||<   |€|d fS | j                             ||¦  «        }|¯j|                     ¦   «         }| j                             ||¦  «        }|�r	 t          |d         ¦  «        }
nH# t          t          t           f$ r.}d|                     dd ¦  «        z  }t%          |¦  «        |‚d }~ww xY w||                     ¦   «         |                     ¦   «         |
z   …         }| j                             ||                     ¦   «         |
z   ¦  «        }t	          |d¦  «         |                     ¦   «         }t)          t+          |¦  «        |¦  «        }nt+          |¦  «        }||fS | j                             ||¦  «        }|rŸ|                     ¦   «         }g }| j                             ||¦  «        }|sV|                      |||dz
  ¬¦  «        \  }	}|                     |	¦  «         |€|d fS | j                             ||¦  «        }|¯V||                     ¦   «         fS | j                             ||¦  «        }|rd |                     ¦   «         fS | j                             ||¦  «        }|rd|                     ¦   «         fS | j                             ||¦  «        }|rd|                     ¦   «         fS | j                             ||¦  «        }|rIt;          |                      |                     d¦  «        ¦  «        ¦  «        |                     ¦   «         fS | j                             ||¦  «        }|r6t          |                     d¦  «        ¦  «        |                     ¦   «         fS | j                              ||¦  «        }|r6tC          |                     d¦  «        ¦  «        |                     ¦   «         fS | j"                             ||¦  «        }|r¥tG          d„ |                     d¦  «        D ¦   «         ¦  «        }tI          |¦  «        dz  dk    r"|                     tK          d¦  «        ¦  «         tF           &                    | '                    d¦  «        ¦  «        |                     ¦   «         fS | j(                             ||¦  «        }|r(|  )                    ||                     ¦   «         ¦  «        S dtU          |||dz   …         ¦  «        z   }t%          |¦  «        ‚)Nr   )NNr|   z<indirect object definition: object ID must be greater than 0rÈ   z;indirect object definition: generation must be non-negativez2indirect object definition different than expected)Úmax_nestingz(indirect object definition end not foundz$indirect object definition not foundz;indirect object reference: object ID must be greater than 0z:indirect object reference: generation must be non-negatives   Lengthz)bad or missing Length in stream dict (%r)zstream end not foundTFc              3   ó"   K  — | ]
}|d v ¯|V — ŒdS )s   0123456789abcdefABCDEFNrK   rë   s     r	   r?   z&PdfParser.get_value.<locals>.<genexpr>b  s6   è è € ð #ð #Ø¨Ð.GÐ)GÐ)G�Ð)GÐ)GÐ)GÐ)Gð#ð #r   ó   0rX   zunrecognized object: é    )+Ú
re_commentr‹  r�  Úre_indirect_def_startrO   rÖ   r~  rQ   rŽ  Úre_indirect_def_endÚre_indirect_referenceÚre_dict_startrŒ  Úre_stream_startÚ	TypeErrorrx   rj  r;   rF   Úre_stream_endrí   rÁ   Úre_array_startÚre_array_endr´   Úre_nullÚre_trueÚre_falserŠ  r—   r¦   Úre_intÚre_realr   Úre_string_hexr²   r@   r­   r”  rA   Úre_string_litÚget_literal_stringr¢   )r§   r¨   rÞ   Úexpect_indirectr™  rƒ  Úobjectr¶   rt   ru   Ú
stream_lenrÜ   r   Ústream_dataÚ
hex_strings                  r	   rŽ  zPdfParser.get_valueõ  sÉ  € à˜!ÒÐØ�:ØŒN× Ò   vÑ.Ô.ˆØð 	Ø—U’U‘W”WˆFØÔ%×+Ò+¨D°&Ñ9Ô9ˆØñ 	#Ý"Ý�A—G’G˜A‘J”J‘” !Ò#ØNñô ð õ #Ý�A—G’G˜A‘J”J‘” 1Ò$ØMñô ð õ #Ø 4Ð'ð GØ"Ý$¥S¨¯ª°©¬¡_¤_µc¸!¿'º'À!¹*¼*±o´oÑFÔFòGàDñ	ô ð ð !Ÿ]š]¨4°·²±´ÀkÐTUÁo˜]ÑVÔV‰NˆF�FØˆ~Ø˜t�|Ð#ØÔ'×-Ò-¨d°FÑ;Ô;ˆAÝ" 1Ð&PÑQÔQÐQØ˜1Ÿ5š5™7œ7�?Ð"ÝØÐÐ!Gñ	
ô 	
ð 	
ð Ô%×+Ò+¨D°&Ñ9Ô9ˆØð 		PÝ"Ý�A—G’G˜A‘J”J‘” !Ò#ØMñô ð õ #Ý�A—G’G˜A‘J”J‘” 1Ò$ØLñô ð õ %¥S¨¯ª°©¬¡_¤_µc¸!¿'º'À!¹*¼*±o´oÑFÔFÈÏÊÉÌÐOÐOØÔ×#Ò# D¨&Ñ1Ô1ˆØñ 	"Ø—U’U‘W”WˆFØˆFØ”×%Ò% d¨FÑ3Ô3ˆAØð 8Ø!Ÿmšm¨D°&ÀkÐTUÁo˜mÑVÔV‘��VØ�>Ø! 4˜<Ð'Ø #§¢¨d°FÈÐVWÉ Ñ XÔ X‘��vØ#��s‘Ø�>Ø! 4˜<Ð'Ø”O×)Ò)¨$°Ñ7Ô7�ð ð 8ð —U’U‘W”WˆFØÔ#×)Ò)¨$°Ñ7Ô7ˆAØñ )ð5Ý!$ V¨IÔ%6Ñ!7Ô!7�J�JøÝ!¥8­ZÐ8ð 5ð 5ð 5ØEÈÏ
Ê
Ø! 4ñIô Iñ �Cõ )¨Ñ-Ô-°1Ð4øøøøð	5øøøð
 # 1§5¢5¡7¤7¨Q¯UªU©W¬W°zÑ-AÐ#AÔB�ØÔ%×+Ò+¨D°!·%²%±'´'¸JÑ2FÑGÔG�Ý& qÐ*@ÑAÔAÐAØŸš™œ�Ý"¥7¨6¡?¤?°KÑ@Ô@��å  ™œ�Ø˜6�>Ð!ØÔ×$Ò$ T¨6Ñ2Ô2ˆØð 
	#Ø—U’U‘W”WˆFØˆFØÔ ×&Ò& t¨VÑ4Ô4ˆAØð 9Ø #§¢¨d°FÈÐVWÉ Ñ XÔ X‘��vØ—’˜eÑ$Ô$Ð$Ø�>Ø! 4˜<Ð'ØÔ$×*Ò*¨4°Ñ8Ô8�ð ð 9ð ˜1Ÿ5š5™7œ7�?Ð"ØŒK×Ò˜d FÑ+Ô+ˆØð 	!Ø˜Ÿš™œ�=Ð ØŒK×Ò˜d FÑ+Ô+ˆØð 	!Ø˜Ÿš™œ�=Ð ØŒL×Ò˜t VÑ,Ô,ˆØð 	"Ø˜!Ÿ%š%™'œ'�>Ð!ØŒK×Ò˜d FÑ+Ô+ˆØð 	DÝ˜3×-Ò-¨a¯gªg°a©j¬jÑ9Ô9Ñ:Ô:¸A¿EºE¹G¼GÐCÐCØŒJ×Ò˜T 6Ñ*Ô*ˆØð 	,Ý�q—w’w˜q‘z”z‘?”? A§E¢E¡G¤GÐ+Ð+ØŒK×Ò˜d FÑ+Ô+ˆØð 	.å˜Ÿš ™œÑ$Ô$ a§e¢e¡g¤gÐ-Ð-ØÔ×#Ò# D¨&Ñ1Ô1ˆØð 	Må"ð #ð #ØŸ7š7 1™:œ:ð#ñ #ô #ñ ô ˆJõ �:‰Œ Ñ" aÒ'Ð'à×!Ò!¥# d¡)¤)Ñ,Ô,Ð,Ý×$Ò$ Z×%6Ò%6°zÑ%BÔ%BÑCÔCÀQÇUÂUÁWÄWÐLÐLØÔ×#Ò# D¨&Ñ1Ô1ˆØð 	9Ø×)Ò)¨$°·²±´Ñ8Ô8Ð8à%­¨T°&¸6ÀB¹;Ð2FÔ-GÑ(HÔ(HÑHˆÝ˜SÑ!Ô!Ð!s   ÎN ÎO Î2)OÏO sF   (\\[nrtbf()\\])|(\\[0-9]{1,3})|(\\(\r\n|\r|\n))|(\r\n|\r|\n)|(\()|(\))ó   nrã   ó   ró   ó   tó   	ó   bó   ó   fó   rý   c                 óè  — d}t          ¦   «         }| j                             ||¦  «        D �]µ}|                     |||                     ¦   «         …         ¦  «         |                     d¦  «        r;|                     | j        |                     d¦  «        d                  ¦  «         �n|                     d¦  «        r?|                     t          |                     d¦  «        dd …         d¦  «        ¦  «         nË|                     d¦  «        rnµ|                     d¦  «        r|                     d¦  «         nŠ|                     d¦  «        r|                     d	¦  «         |dz  }nZ|                     d
¦  «        rE|dk    r%t          |¦  «        | 
                    ¦   «         fc S |                     d¦  «         |dz  }| 
                    ¦   «         }�Œ·d}t          |¦  «        ‚)Nr   r|   rÈ   é   r‘  é   rã   é   rþ   é   rü   zunfinished literal string)r²   Úre_lit_str_tokenr“  rµ   r}  r~  Úescaped_charsr´   rÖ   r›   r�  rF   )r§   r¨   rÞ   Únesting_depthr¶   rƒ  r   s          r	   r®  zPdfParser.get_literal_string†  s¼  € àˆÝ‘”ˆØÔ%×.Ò.¨t°VÑ<Ô<ð 	ñ 	ˆAØ�MŠM˜$˜v¨¯ª©	¬	Ð1Ô2Ñ3Ô3Ð3Ø�wŠw�q‰zŒzð #Ø—’˜cÔ/°·²¸±
´
¸1´Ô>Ñ?Ô?Ð?Ñ?Ø—’˜‘”ð #Ø—’�c !§'¢'¨!¡*¤*¨Q¨R¨R¤.°!Ñ4Ô4Ñ5Ô5Ð5Ð5Ø—’˜‘”ð #ØØ—’˜‘”ð 	#Ø—’˜eÑ$Ô$Ð$Ð$Ø—’˜‘”ð #Ø—’˜dÑ#Ô#Ð#Ø Ñ"��Ø—’˜‘”ð #Ø  AÒ%Ð%Ý  ™=œ=¨!¯%ª%©'¬'Ð1Ð1Ð1Ð1Ø—’˜dÑ#Ô#Ð#Ø Ñ"�Ø—U’U‘W”WˆF‰FØ)ˆÝ˜SÑ!Ô!Ð!r   s   xrefs+   ([0-9]{10}) ([0-9]{5}) ([fn])( \r| \n|\r\n)c                 óž  — d}| j                              | j        || j        z   ¦  «        }t	          |d¦  «         |                     ¦   «         }	 | j                             | j        |¦  «        }|st	          |d¦  «         �nId}|                     ¦   «         }t          |                     d¦  «        ¦  «        }t          |                     d¦  «        ¦  «        }t          |||z   ¦  «        D ]Ù}| j
                             | j        |¦  «        }t	          |d¦  «         |                     ¦   «         }|                     d¦  «        d	k    }t          |                     d¦  «        ¦  «        }	|sVt          |                     d¦  «        ¦  «        |	f}
t	          || j        vp| j        |         |
k    d
¦  «         |
| j        |<   ŒÚ�Œ}|S )NFzxref section start not foundTzxref subsection start not foundr|   rÈ   zxref entry not foundr‘  r»  z)xref entry duplicated (and not identical))Úre_xref_section_startr‹  rð   r  rO   r�  Úre_xref_subsection_startrÖ   r~  r¸   Úre_xref_entryr  )rT   rz  Úsubsection_foundrƒ  rÞ   Úfirst_objectÚnum_objectsrH  Úis_freer]   Ú	new_entrys              r	   r€  zPdfParser.read_xref_table«  s½  € Ø ÐØÔ&×,Ò,ØŒHÐ)¨DÔ,=Ñ=ñ
ô 
ˆõ 	˜qÐ"@ÑAÔAÐAØ—’‘”ˆð	3ØÔ-×3Ò3°D´H¸fÑEÔEˆAØð Ý&Ø$Ð&Gñô ð ñ Ø#ÐØ—U’U‘W”WˆFÝ˜qŸwšw q™zœz™?œ?ˆLÝ˜aŸgšg a™jœj™/œ/ˆKÝ˜<¨¸Ñ)CÑDÔDð 3ð 3�ØÔ&×,Ò,¨T¬X°vÑ>Ô>�Ý& qÐ*@ÑAÔAÐAØŸš™œ�ØŸ'š' !™*œ*¨Ò,�Ý  §¢¨¡¤™_œ_�
Øð 3Ý!$ Q§W¢W¨Q¡Z¤Z¡¤°*Ð =�IÝ*Ø ¤Ð0ÐS°D´OÀAÔ4FÈ)Ò4SØCñô ð ð *3�D”O AÑ&øñ/	3ð0 ˆr   c                 ó  — | j         |d                  \  }}t          ||d         k    d|d         › d|d         › d|› d|› �¦  «         |                      | j        || j        z   t          |Ž |¬¦  «        d         }|| j        |<   |S )Nr   r|   zexpected to find generation z for object ID z) in xref table, instead found generation z at offset )r¯  r™  )r  rO   rŽ  rð   r  rQ   r  )rT   r\  r™  rÞ   r]   ru   s         r	   rn  zPdfParser.read_indirectÌ  sÐ   € Ø!œ_¨S°¬VÔ4Ñˆ�
ÝØ˜#˜aœ&Ò ðO¨3¨q¬6ð Oð OÀ#ÀaÄ&ð Oð OØ/9ðOð OØFLðOð Oñ	
ô 	
ð 	
ð
 —’ØŒHØ�TÔ&Ñ&Ý-¨sÐ3Ø#ð	 ñ 
ô 
ð
 ôˆð $)ˆÔ˜CÑ Øˆr   c                 ó&  — |€| j         }t          |d         dk    d¦  «         g }|d         D ]b}|                      |¦  «        }|d         dk    r|                     |¦  «         Œ9|                     |                      |¬¦  «        ¦  «         Œc|S )Nrl  r<  z%/Type of page tree node is not /Pagess   Kidsr[  )Únode)r  rO   rn  r´   rµ   ro  )rT   rÐ  r  ÚkidÚ
kid_objects        r	   ro  zPdfParser.linearize_page_treeÜ  s¯   € Øˆ<ØÔ&ˆDÝØ�ŒM˜XÒ%Ð'Nñ	
ô 	
ð 	
ð ˆØ˜”=ð 	Hð 	HˆCØ×+Ò+¨CÑ0Ô0ˆJØ˜'Ô" gÒ-Ð-Ø—’˜SÑ!Ô!Ð!Ð!à—’˜T×5Ò5¸:Ð5ÑFÔFÑGÔGÐGÐGØˆr   )NNNr   r  r9   )F)NrÒ   )rÒ   )IrG   rH   rI   rJ   rq   r#  r)  r,  r+  r%  r   r4  r7  rC  rA  rY  rF  rB  r?  Ústaticmethodr  r  r@  Ú	delimiterÚdelimiter_or_wsÚ
whitespaceÚwhitespace_or_hexÚwhitespace_optionalÚwhitespace_mandatoryÚwhitespace_optional_no_nlÚnewline_onlyÚnewlineÚreÚcompileÚDOTALLr{  r‡  rm  r�  Úre_whitespace_optionalrŠ  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€  rn  ro  rK   r   r	   r¥   r¥   a  sü  € € € € € ðð ð
$ð $ð $ð $ðLð ð ðð ð ðð ð ðð ð ðð ð ð$ð $ð $ð$ð $ð $ð*ð *ð *ðð ð ðð ð ð:
ð 
ð 
ð 
ð(6ð 6ð 6ðð ð ð*;ð ;ð ;ð ð	ð 	ñ „\ð	ð(ð (ð (ð8ð ð ð ð !€IØ>€OØ/€JØ?ÐØ$ tÑ+ÐØ%¨Ñ,Ðà 7ÐØ€LØ'¨,Ñ6Ð9RÑR€GØ�R”ZØØ
ñ	à
ñ	ð ñ	ð ñ		ð
 ñ	ð ñ	ð ñ	ð ñ	ð ñ		ð ñ
	ð ñ	ð 	Œ	ñô €Nð !�b”jØØ
ñ	à
ñ	ð ñ	ð ñ		ð
 ñ	ð ñ	ð ñ	ð ñ	ð ñ		ð ñ
	ð 	Œ	ñô €Oð?ð ?ð ?ð*:ð :ð :ð (˜RœZÐ(;Ñ<Ô<ÐØˆbŒjØØ
-ñ	.à
ñ	ð ñ	ñô €Gð �B”JÐ2°VÑ;Ñ<Ô<€MØ�"”*Ð0°6Ñ9Ð<OÑOÑPÔP€Kàðð ñ „[ðð4 #˜œ
Ð#BÑCÔCÐàð
ð 
ð 
ñ „[ð
ð ˆbŒjÐ,¨{Ñ:¸_ÑLÈuÑTÑUÔU€GØˆbŒjÐ,¨{Ñ:¸_ÑLÈuÑTÑUÔU€GØˆrŒzÐ-°Ñ<¸ÑNÐQVÑVÑWÔW€HØˆRŒZØÐ2Ñ2°_ÑDÀuÑLñô €Fð ˆbŒjØØ
7ñ	8à
ñ	ð ñ	ñô €Gð  �R”ZÐ 3°fÑ <Ñ=Ô=€NØ�2”:Ð1°EÑ9Ñ:Ô:€LØ�B”JØ˜fÑ$Ð'8Ñ8¸7ÑBñô €Mð �B”JÐ2°VÑ;Ñ<Ô<€MØ&˜BœJØØ
ñ	à
ñ	ð ñ	ð ñ		ð
 ñ	ð ñ	ð ñ	ñ	ô 	Ðð '˜BœJØØ
ñ	à
ñ	ð ñ	ð ñ		ð
 ñ	ð ñ	ð ñ	ñ	ô 	Ðð %˜"œ*Ø˜mÑ+¨oÑ=ÀÑEñô Ðð �”ØÐ#Ñ# mÑ3°gÑ=ÀÑFñô €Jð !�b”jÐ!4°Ñ!FÑGÔG€OØ�B”JØÐ.Ñ.°Ñ@À5ÑHñô €Mð ðx"ð x"ð x"ñ „[ðx"ðt "�r”zØRñô ÐðØˆeðàˆeðð 	ˆeðð 	ˆeð	ð
 	ˆeðð 	ˆdðð 	ˆdðð 	ˆuðð 	ˆˆD‰	Œ	�5ðð 	ˆˆD‰	Œ	�5ðð 	ˆˆD‰	Œ	�5ðð 	ˆˆD‰	Œ	�5ðð 	ˆˆD‰	Œ	�5ðð 	ˆˆD‰	Œ	�4ðð 	ˆˆD‰	Œ	�4ðð  	ˆˆE‰
Œ
�Eð!€Mð& ð"ð "ñ „[ð"ð2 '˜BœJÐ':¸XÑ'EÈÑ'OÑPÔPÐØ)˜rœzØØ
ñ	à
ñ	ð ñ	ð ñ		ð
 ñ	ñ ô  Ðð �B”JÐNÑOÔO€Mðð ð ðBð ð ð ð ð ð ð ð ð r   r¥   )rÚ   r   rÃ   rg  r1  rÝ  r×   rö   r
   r:   rD   r	  rF   rO   Ú
namedtuplerQ   rh   rk   r—   r  rº   rÄ   rÁ   rç   rí   r¾   r¥   rK   r   r	   ú<module>râ     sF  ðØ €€€Ø €€€Ø Ð Ð Ð Ø €€€Ø 	€	€	€	Ø 	€	€	€	Ø €€€Ø €€€ð
7ð 7ð 7ð*Øˆ(ð*àˆ(ð*ð 	ˆ(ð*ð 	ˆ(ð	*ð
 	ˆ(ð*ð 	ˆ(ð*ð 	ˆ(ð*ð 	ˆ(ð*ð 	ˆ(ð*ð 	ˆ(ð*ð 	ˆ(ð*ð 	ˆ(ð*ð 	ˆ(ð*ð 	ˆ(ð*ð 	ˆ(ð*ð  	ˆ(ð!*ð" 	ˆ(ð#*ð *ð$ 	ˆ(ð%*ð& 	ˆ(ð'*ð( 	ˆ(ð)*ð* 	ˆ(ð+*ð, 	ˆ(ð-*ð. 	ˆ(ð/*ð0 	ˆ(ð1*ð2 	ˆ(ð3*ð4 	ˆ(ð5*ð6 	ˆ(ð7*ð8 	ˆ(ð9*ð: 	ˆ(ð;*ð< 	ˆ(ð=*ð> 	ˆ(ð?*ð@ 	ˆ(ðA*ðB 	ˆ(ðC*ðD 	ˆ(ðE*ð *ðF Ø
Ø
Ø
Ø
Ø
Ø
ðS*ð *ð *€ðZJð Jð Jð	ð 	ð 	ð 	ð 	�\ñ 	ô 	ð 	ð,ð ,ð ,ð
7ð 7ð 7ð 7ð 7Ø€KÔÐ3°kÀ<Ð5PÑQÔQñ7ô 7ð 7ð."ð "ð "ð "ð "Ð)ñ "ô "ð "ð
Yð Yð Yð Yð Yñ Yô Yð Yðx$ð $ð $ð $ð $ñ $ô $ð $ðNDð Dð Dð Dð Dˆtñ Dô Dð Dð
-ð -ð -ð -ð -ˆkÔ"ñ -ô -ð -ð`Bð Bð Bð Bð Bñ Bô Bð Bð+ð +ð +ð +ð +ñ +ô +ð +ð*ð ð ð>H
ð H
ð H
ð H
ð H
ñ H
ô H
ð H
ð H
ð H
r   