+
    Žvjbƒ  ã                   óÄ  € ^ RI t ^ RIt^ RIHtHtHt ^ RIHtHtH	t	H
t
 ^ RIHt ^ RIHtHt ^ RIHt ^ RIHtHt ^ RIHt ^ R	IHtHtHtHtHtHtHtHtH t H!t!H"t"H#t#H$t$ ]PJ                  ! ]&4      t' ! R
 R4      t( ! R R4      t) ! R R4      t* ! R R4      t+ ! R R]*4      t, ! R R],4      t- ! R R]-4      t. ! R R]-4      t/ ! R R],4      t0 ! R R]*]+4      t1 ! R R],]+4      t2]! R ]*R!7      t3 ! R" R#],]]3,          4      t4 ! R$ R%]4]3,          4      t5 ! R& R']5]3,          ]+4      t6]	]2]13,          t7 ! R( R)]6]7,          4      t8 ! R* R+]84      t9 ! R, R-]84      t: ! R. R/]6]8,          4      t; ! R0 R1];4      t< ! R2 R3];4      t=]	];R43,          t> ! R5 R4]6]>,          4      t? ! R6 R7]?4      t@ ! R8 R9]?4      tA ! R: R;]4],,          4      tB ! R< R=]B4      tC ! R> R?]B4      tDR# )@é    N)ÚIterableÚIteratorÚSequence)ÚGenericÚTypeVarÚUnionÚcast)ÚPDFColorSpace)ÚPDFTypeErrorÚPDFValueError)ÚPDFFont)ÚColorÚPDFGraphicState)Ú	PDFStream)ÚINFÚLTComponentTÚMatrixÚPathSegmentÚPlaneÚPointÚRectÚapply_matrix_rectÚbbox2strÚfsplitÚ	get_boundÚ
matrix2strÚuniqc                   óH   a € ] tR t^#t o RV 3R lR lltV 3R lR ltRtV tR# )ÚIndexAssignerc                ó$   <€ V ^8„  d   QhRS[ RR/# )é   ÚindexÚreturnN©Úint)ÚformatÚ__classdict__s   "€ÚS/var/www/html/daimler-pipeline/venv/lib/python3.14/site-packages/pdfminer/layout.pyÚ__annotate__ÚIndexAssigner.__annotate__$   s   ø€ ÷ ñ ™cð ¨$ñ ó    c                ó   € Wn         R # ©N©r"   )Úselfr"   s   &&r(   Ú__init__ÚIndexAssigner.__init__$   s   € ØŽ
r+   c                ó"   <€ V ^8„  d   QhRRRR/# )r!   ÚobjÚLTItemr#   N© )r&   r'   s   "€r(   r)   r*   '   s   ø€ ÷ ñ �xð  Dñ r+   c                óî   € \        V\        4      '       d-   V P                  Vn        V ;P                  ^,          un        R# \        V\        4      '       d   V F  pV P	                  V4       K  	  R# R# )é   N)Ú
isinstanceÚ	LTTextBoxr"   ÚLTTextGroupÚrun)r/   r3   Úxs   && r(   r;   ÚIndexAssigner.run'   sN   € Ü�cœ9×%Ò%ØŸ
™
ˆCŒIØ�JŠJ˜!�O�JÜ˜œ[×)Ò)Û�Ø—‘˜–ó ñ *r+   r.   N©r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r0   r;   Ú__static_attributes__Ú__classdictcell__©r'   s   @r(   r   r   #   s   ø‡ € ÷ò ÷ö r+   r   c                   ó^   a € ] tR t^0t o RtR
V 3R lR lltV 3R lR ltV 3R lR ltRtV t	R	# )ÚLAParamsa·  Parameters for layout analysis

:param line_overlap: If two characters have more overlap than this they
    are considered to be on the same line. The overlap is specified
    relative to the minimum height of both characters.
:param char_margin: If two characters are closer together than this
    margin they are considered part of the same line. The margin is
    specified relative to the width of the character.
:param word_margin: If two characters on the same line are further apart
    than this margin then they are considered to be two separate words, and
    an intermediate space will be added for readability. The margin is
    specified relative to the width of the character.
:param line_margin: If two lines are are close together they are
    considered to be part of the same paragraph. The margin is
    specified relative to the height of a line.
:param boxes_flow: Specifies how much a horizontal and vertical position
    of a text matters when determining the order of text boxes. The value
    should be within the range of -1.0 (only horizontal position
    matters) to +1.0 (only vertical position matters). You can also pass
    `None` to disable advanced layout analysis, and instead return text
    based on the position of the bottom left corner of the text box.
:param detect_vertical: If vertical text should be considered during
    layout analysis
:param all_texts: If layout analysis should be performed on text in
    figures.
c                óV   <€ V ^8„  d   QhRS[ RS[ RS[ RS[ RS[ R,          RS[RS[R	R/# )
r!   Úline_overlapÚchar_marginÚline_marginÚword_marginÚ
boxes_flowNÚdetect_verticalÚ	all_textsr#   )ÚfloatÚbool)r&   r'   s   "€r(   r)   ÚLAParams.__annotate__L   s_   ø€ ÷ ñ áðñ ðñ ð	ñ
 ðñ ˜D•Lðñ ðñ ðð 
ñr+   c                óz   € Wn         W n        W0n        W@n        WPn        W`n        Wpn        V P                  4        R # r-   )rI   rJ   rK   rL   rM   rN   rO   Ú	_validate)r/   rI   rJ   rK   rL   rM   rN   rO   s   &&&&&&&&r(   r0   ÚLAParams.__init__L   s6   € ð )ÔØ&ÔØ&ÔØ&ÔØ$ŒØ.ÔØ"Œà�‰Ör+   c                ó   <€ V ^8„  d   QhRR/# ©r!   r#   Nr5   )r&   r'   s   "€r(   r)   rR   `   s   ø€ ÷ 8ñ 8˜4ñ 8r+   c                óØ   € V P                   e\   Rp\        V P                   \        \        34      '       g   \	        V4      hRV P                   u;8:  d   ^8:  g   M \        V4      hR # R # )Nz@LAParam boxes_flow should be None, or a number between -1 and +1éÿÿÿÿ)rM   r8   r%   rP   r   r   )r/   Úboxes_flow_err_msgs   & r(   rT   ÚLAParams._validate`   s^   € Ø�?‰?Ò&àRð ô ˜tŸ™´´e°×=Ò=Ü"Ð#5Ó6Ð6Ø˜Ÿ™Ö-¨AÖ-Ü#Ð$6Ó7Ð7ñ .ñ 'r+   c                ó    <€ V ^8„  d   QhRS[ /# ©r!   r#   ©Ústr)r&   r'   s   "€r(   r)   rR   j   s   ø€ ÷ 
ñ 
™#ñ 
r+   c           	     óx   € R V P                   R RV P                  R RV P                  R RV P                  : R2	# )z<LAParams: char_margin=z.1fz, line_margin=z, word_margin=z all_texts=Ú>)rJ   rK   rL   rO   ©r/   s   &r(   Ú__repr__ÚLAParams.__repr__j   sS   € à% d×&6Ñ&6°sÐ%;ð <Ø×+Ñ+¨CÐ0ð 1Ø×+Ñ+¨CÐ0ð 1ØŸ™Ñ*¨!ð-ð	
r+   )rO   rM   rJ   rN   rK   rI   rL   N)ç      à?g       @re   gš™™™™™¹?re   FF)
r?   r@   rA   rB   Ú__doc__r0   rT   rc   rC   rD   rE   s   @r(   rG   rG   0   s(   ø‡ € ñ÷6ò ÷(8ð 8÷
ö 
r+   rG   c                   ó6   a € ] tR t^st o RtV 3R lR ltRtV tR# )r4   z)Interface for things that can be analyzedc                ó$   <€ V ^8„  d   QhRS[ RR/# ©r!   Úlaparamsr#   N©rG   )r&   r'   s   "€r(   r)   ÚLTItem.__annotate__v   s   ø€ ÷ +ñ +¡ð +¨Tñ +r+   c                ó   € R# )zPerform the layout analysis.Nr5   ©r/   rj   s   &&r(   ÚanalyzeÚLTItem.analyzev   s   ‚ r+   r5   N)r?   r@   rA   rB   rf   ro   rC   rD   rE   s   @r(   r4   r4   s   s   ø‡ € Ù3÷+ö +r+   r4   c                   óH   a € ] tR t^zt o RtV 3R lR ltV 3R lR ltRtV tR# )ÚLTTextz#Interface for things that have textc                ó    <€ V ^8„  d   QhRS[ /# r]   r^   )r&   r'   s   "€r(   r)   ÚLTText.__annotate__}   s   ø€ ÷ Bñ B™#ñ Br+   c                óZ   € R V P                   P                   RV P                  4       : R2# ©Ú<Ú ra   )Ú	__class__r?   Úget_textrb   s   &r(   rc   ÚLTText.__repr__}   s)   € Ø�4—>‘>×*Ñ*Ð+¨1¨T¯]©]«_Ñ,?¸qÐAÐAr+   c                ó    <€ V ^8„  d   QhRS[ /# r]   r^   )r&   r'   s   "€r(   r)   rt   €   s   ø€ ÷ "ñ "™#ñ "r+   c                ó   € \         h)zText contained in this object©ÚNotImplementedErrorrb   s   &r(   rz   ÚLTText.get_text€   s   € ä!Ð!r+   r5   N)	r?   r@   rA   rB   rf   rc   rz   rC   rD   rE   s   @r(   rr   rr   z   s   ø‡ € Ù-÷Bð B÷"ö "r+   rr   c                   ó   a € ] tR t^…t o RtV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR	 ltV 3R
 lR lt	V 3R lR lt
V 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltRtV tR# ) ÚLTComponentzObject with a bounding boxc                ó$   <€ V ^8„  d   QhRS[ RR/# ©r!   Úbboxr#   N©r   )r&   r'   s   "€r(   r)   ÚLTComponent.__annotate__ˆ   s   ø€ ÷ ñ ™Tð  dñ r+   c                óR   € \         P                  V 4       V P                  V4       R # r-   )r4   r0   Úset_bbox©r/   r…   s   &&r(   r0   ÚLTComponent.__init__ˆ   s   € Ü�‰˜ÔØ�‰�dÖr+   c                ó    <€ V ^8„  d   QhRS[ /# r]   r^   )r&   r'   s   "€r(   r)   r‡   Œ   s   ø€ ÷ Dñ D™#ñ Dr+   c                ób   € R V P                   P                   R\        V P                  4       R2# rv   )ry   r?   r   r…   rb   s   &r(   rc   ÚLTComponent.__repr__Œ   s,   € Ø�4—>‘>×*Ñ*Ð+¨1¬X°d·i±iÓ-@Ð,AÀÐCÐCr+   c                ó&   <€ V ^8„  d   QhRS[ RS[/# ©r!   Ú_r#   ©ÚobjectrQ   )r&   r'   s   "€r(   r)   r‡   �   ó   ø€ ÷ ñ ™ð ¡4ñ r+   c                ó   € \         hr-   ©r   ©r/   r‘   s   &&r(   Ú__lt__ÚLTComponent.__lt__�   ó   € ÜÐr+   c                ó&   <€ V ^8„  d   QhRS[ RS[/# r�   r’   )r&   r'   s   "€r(   r)   r‡   “   r”   r+   c                ó   € \         hr-   r–   r—   s   &&r(   Ú__le__ÚLTComponent.__le__“   rš   r+   c                ó&   <€ V ^8„  d   QhRS[ RS[/# r�   r’   )r&   r'   s   "€r(   r)   r‡   –   r”   r+   c                ó   € \         hr-   r–   r—   s   &&r(   Ú__gt__ÚLTComponent.__gt__–   rš   r+   c                ó&   <€ V ^8„  d   QhRS[ RS[/# r�   r’   )r&   r'   s   "€r(   r)   r‡   ™   r”   r+   c                ó   € \         hr-   r–   r—   s   &&r(   Ú__ge__ÚLTComponent.__ge__™   rš   r+   c                ó$   <€ V ^8„  d   QhRS[ RR/# r„   r†   )r&   r'   s   "€r(   r)   r‡   œ   s   ø€ ÷ ñ ™Tð  dñ r+   c                ó€   € Vw  r#rEW n         W0n        W@n        WPn        WB,
          V n        WS,
          V n        Wn        R # r-   )Úx0Úy0Úx1Úy1ÚwidthÚheightr…   )r/   r…   r©   rª   r«   r¬   s   &&    r(   r‰   ÚLTComponent.set_bboxœ   s7   € ØÑˆ�ØŒØŒØŒØŒØ•WˆŒ
Ø•gˆŒØŽ	r+   c                ó    <€ V ^8„  d   QhRS[ /# r]   ©rQ   )r&   r'   s   "€r(   r)   r‡   ¦   s   ø€ ÷ 3ñ 3™$ñ 3r+   c                óN   € V P                   ^ 8*  ;'       g    V P                  ^ 8*  # r>   )r­   r®   rb   s   &r(   Úis_emptyÚLTComponent.is_empty¦   s!   € Ø�z‰z˜Q‰×2Ð2 $§+¡+°Ñ"2Ð2r+   c                ó$   <€ V ^8„  d   QhRRRS[ /# ©r!   r3   r‚   r#   r±   )r&   r'   s   "€r(   r)   r‡   ©   ó   ø€ ÷ 7ñ 7˜}ð 7±ñ 7r+   c                óÔ   € \        V\        4      '       g   Q \        \        V4      4      4       hVP                  V P
                  8*  ;'       d    V P                  VP
                  8*  # r-   )r8   r‚   r_   Útyper©   r«   ©r/   r3   s   &&r(   Úis_hoverlapÚLTComponent.is_hoverlap©   óJ   € Ü˜#œ{×+Ò+Ð;¬S´°c³«^Ó;Ð+Ø�v‰v˜Ÿ™Ñ ×6Ð6 T§W¡W°·±Ñ%6Ð6r+   c                ó$   <€ V ^8„  d   QhRRRS[ /# r¶   ©rP   )r&   r'   s   "€r(   r)   r‡   ­   ó   ø€ ÷ Eñ E˜]ð E©uñ Er+   c                ó:  € \        V\        4      '       g   Q \        \        V4      4      4       hV P	                  V4      '       d   ^ # \        \        V P                  VP                  ,
          4      \        V P                  VP                  ,
          4      4      # r>   ©	r8   r‚   r_   r¹   r»   ÚminÚabsr©   r«   rº   s   &&r(   Ú	hdistanceÚLTComponent.hdistance­   óg   € Ü˜#œ{×+Ò+Ð;¬S´°c³«^Ó;Ð+Ø×Ñ˜C× Ò Ùä”s˜4Ÿ7™7 S§V¡VÕ+Ó,¬c°$·'±'¸C¿F¹FÕ2BÓ.CÓDÐDr+   c                ó$   <€ V ^8„  d   QhRRRS[ /# r¶   r¿   )r&   r'   s   "€r(   r)   r‡   ´   ó   ø€ ÷ ñ ˜Mð ©eñ r+   c                ó:  € \        V\        4      '       g   Q \        \        V4      4      4       hV P	                  V4      '       dU   \        \        V P                  VP                  ,
          4      \        V P                  VP                  ,
          4      4      # ^ # r>   rÂ   rº   s   &&r(   ÚhoverlapÚLTComponent.hoverlap´   óg   € Ü˜#œ{×+Ò+Ð;¬S´°c³«^Ó;Ð+Ø×Ñ˜C× Ò Ü”s˜4Ÿ7™7 S§V¡VÕ+Ó,¬c°$·'±'¸C¿F¹FÕ2BÓ.CÓDÐDár+   c                ó$   <€ V ^8„  d   QhRRRS[ /# r¶   r±   )r&   r'   s   "€r(   r)   r‡   »   r·   r+   c                óÔ   € \        V\        4      '       g   Q \        \        V4      4      4       hVP                  V P
                  8*  ;'       d    V P                  VP
                  8*  # r-   )r8   r‚   r_   r¹   rª   r¬   rº   s   &&r(   Úis_voverlapÚLTComponent.is_voverlap»   r½   r+   c                ó$   <€ V ^8„  d   QhRRRS[ /# r¶   r¿   )r&   r'   s   "€r(   r)   r‡   ¿   rÀ   r+   c                ó:  € \        V\        4      '       g   Q \        \        V4      4      4       hV P	                  V4      '       d   ^ # \        \        V P                  VP                  ,
          4      \        V P                  VP                  ,
          4      4      # r>   ©	r8   r‚   r_   r¹   rÐ   rÃ   rÄ   rª   r¬   rº   s   &&r(   Ú	vdistanceÚLTComponent.vdistance¿   rÇ   r+   c                ó$   <€ V ^8„  d   QhRRRS[ /# r¶   r¿   )r&   r'   s   "€r(   r)   r‡   Æ   rÉ   r+   c                ó:  € \        V\        4      '       g   Q \        \        V4      4      4       hV P	                  V4      '       dU   \        \        V P                  VP                  ,
          4      \        V P                  VP                  ,
          4      4      # ^ # r>   rÔ   rº   s   &&r(   ÚvoverlapÚLTComponent.voverlapÆ   rÍ   r+   )r…   r®   r­   r©   r«   rª   r¬   N)r?   r@   rA   rB   rf   r0   rc   r˜   r�   r¡   r¥   r‰   r³   r»   rÅ   rË   rÐ   rÕ   rÙ   rC   rD   rE   s   @r(   r‚   r‚   …   sš   ø‡ € Ù$÷ð ÷Dð D÷ð ÷ð ÷ð ÷ð ÷ð ÷3ð 3÷7ð 7÷Eð E÷ð ÷7ð 7÷Eð E÷ö r+   r‚   c                   óL   a € ] tR t^Ît o RtRV 3R lR lltV 3R lR ltRtV tR# )	ÚLTCurvezÐA generic Bezier curve

The parameter `original_path` contains the original
pathing information from the pdf (e.g. for reconstructing Bezier Curves).

`dashing_style` contains the Dashing information if any.
Nc                óÂ   <€ V ^8„  d   QhRS[ RS[S[,          RS[RS[RS[RS[R,          RS[R,          R	S[S[,          R,          R
S[S[S[3,          R,          RR/
# )r!   Ú	linewidthÚptsÚstrokeÚfillÚevenoddÚstroking_colorNÚnon_stroking_colorÚoriginal_pathÚdashing_styler#   )rP   Úlistr   rQ   r   r   Útupler“   )r&   r'   s   "€r(   r)   ÚLTCurve.__annotate__×   s“   ø€ ÷ +ñ +áð+ñ ‘%�[ð+ñ ð	+ñ
 ð+ñ ð+ñ  �ð+ñ " D�Lð+ñ ™KÕ(¨4Õ/ð+ñ ™V¡V˜^Õ,¨tÕ3ð+ð 
ñ+r+   c
                ó°   € \         P                  V \        V4      4       W n        Wn        W0n        W@n        WPn        W`n        Wpn	        W€n
        W�n        R # r-   )r‚   r0   r   rß   rÞ   rà   rá   râ   rã   rä   rå   ræ   )
r/   rÞ   rß   rà   rá   râ   rã   rä   rå   ræ   s
   &&&&&&&&&&r(   r0   ÚLTCurve.__init__×   sI   € ô 	×Ñ˜T¤9¨S£>Ô2ØŒØ"ŒØŒØŒ	ØŒØ,ÔØ"4ÔØ*ÔØ*Ör+   c                ó    <€ V ^8„  d   QhRS[ /# r]   r^   )r&   r'   s   "€r(   r)   ré   î   s   ø€ ÷ Fñ F™ñ Fr+   c                óF   € R P                  R V P                   4       4      # )Ú,c              3   óB   "  € T F  pR P                   ! V!  x € K  	  R# 5i)z{:.3f},{:.3f}N)r&   )Ú.0Úps   & r(   Ú	<genexpr>Ú"LTCurve.get_pts.<locals>.<genexpr>ï   s   é € ÐE¹H°q˜×.Ò.°Ö2»Hùs   ‚)Újoinrß   rb   s   &r(   Úget_ptsÚLTCurve.get_ptsî   s   € Ø�x‰xÑE¸D¿HºHÓEÓEÐEr+   )	ræ   râ   rá   rÞ   rä   rå   rß   rà   rã   ©FFFNNNN)	r?   r@   rA   rB   rf   r0   rõ   rC   rD   rE   s   @r(   rÜ   rÜ   Î   s    ø‡ € ñ÷+ò +÷.Fö Fr+   rÜ   c                   ó:   a € ] tR t^òt o RtRV 3R lR lltRtV tR# )ÚLTLinezGA single straight line.

Could be used for separating text or figures.
Nc                ó¸   <€ V ^8„  d   QhRS[ RS[RS[RS[RS[RS[RS[R,          R	S[R,          R
S[S[,          R,          RS[S[S[3,          R,          RR/# )r!   rÞ   Úp0Úp1rà   rá   râ   rã   Nrä   rå   ræ   r#   )rP   r   rQ   r   rç   r   rè   r“   )r&   r'   s   "€r(   r)   ÚLTLine.__annotate__ø   s™   ø€ ÷ 
ñ 
áð
ñ ð
ñ ð	
ñ
 ð
ñ ð
ñ ð
ñ  �ð
ñ " D�Lð
ñ ™KÕ(¨4Õ/ð
ñ ™V¡V˜^Õ,¨tÕ3ð
ð 
ñ
r+   c                óD   € \         P                  V VW#.VVVVVV	V
4
       R # r-   ©rÜ   r0   )r/   rÞ   rû   rü   rà   rá   râ   rã   rä   rå   ræ   s   &&&&&&&&&&&r(   r0   ÚLTLine.__init__ø   s2   € ô 	×ÑØØØˆHØØØØØØØö	
r+   r5   r÷   ©r?   r@   rA   rB   rf   r0   rC   rD   rE   s   @r(   rù   rù   ò   ó   ø‡ € ñ÷

÷ 
ð 
r+   rù   c                   ó:   a € ] tR tRt o RtRV 3R lR lltRtV tR# )ÚLTRecti  zEA rectangle.

Could be used for framing another pictures or figures.
Nc                ó²   <€ V ^8„  d   QhRS[ RS[RS[RS[RS[RS[R,          RS[R,          R	S[S[,          R,          R
S[S[S[3,          R,          RR/
# )r!   rÞ   r…   rà   rá   râ   rã   Nrä   rå   ræ   r#   )rP   r   rQ   r   rç   r   rè   r“   )r&   r'   s   "€r(   r)   ÚLTRect.__annotate__  s�   ø€ ÷ 
ñ 
áð
ñ ð
ñ ð	
ñ
 ð
ñ ð
ñ  �ð
ñ " D�Lð
ñ ™KÕ(¨4Õ/ð
ñ ™V¡V˜^Õ,¨tÕ3ð
ð 
ñ
r+   c
                ó\   € Vw  r«rÍ\         P                  V VW«3WË3WÍ3W­3.VVVVVVV	4
       R # r-   rÿ   )r/   rÞ   r…   rà   rá   râ   rã   rä   rå   ræ   r©   rª   r«   r¬   s   &&&&&&&&&&    r(   r0   ÚLTRect.__init__  sK   € ð  Ñˆ�Ü×ÑØØØˆX˜�x " ¨B¨8Ð4ØØØØØØØö	
r+   r5   r÷   r  rE   s   @r(   r  r    r  r+   r  c                   óH   a € ] tR tRt o RtV 3R lR ltV 3R lR ltRtV tR# )	ÚLTImagei4  zCAn image object.

Embedded images can be in JPEG, Bitmap or JBIG2.
c                ó0   <€ V ^8„  d   QhRS[ RS[RS[RR/# )r!   ÚnameÚstreamr…   r#   N)r_   r   r   )r&   r'   s   "€r(   r)   ÚLTImage.__annotate__:  s)   ø€ ÷ 	0ñ 	0™Sð 	0©)ð 	0¹4ð 	0ÀDñ 	0r+   c                ó„  € \         P                  W4       Wn        W n        VP	                  R4      VP	                  R4      3V n        VP	                  R4      V n        VP	                  R^4      V n        VP	                  R4      V n        \        V P                  \        4      '       g   V P                  .V n        R# R# )ÚWN)r  ÚWidth)ÚHÚHeight)ÚIMÚ	ImageMask)ÚBPCÚBitsPerComponent)ÚCSÚ
ColorSpace)r‚   r0   r  r  Úget_anyÚsrcsizeÚ	imagemaskÚbitsÚ
colorspacer8   rç   )r/   r  r  r…   s   &&&&r(   r0   ÚLTImage.__init__:  s‘   € Ü×Ñ˜TÔ(ØŒ	ØŒØŸ™ ~Ó6¸¿¹ÀÓ8WÐXˆŒØŸ™Ð(;Ó<ˆŒØ—N‘NÐ#>ÀÓBˆŒ	Ø Ÿ.™.Ð)=Ó>ˆŒÜ˜$Ÿ/™/¬4×0Ò0Ø#Ÿ™Ð/ˆDŽOñ 1r+   c                ó    <€ V ^8„  d   QhRS[ /# r]   r^   )r&   r'   s   "€r(   r)   r  E  ó   ø€ ÷ 
ñ 
™#ñ 
r+   c           	     ó˜   € R V P                   P                   RV P                   R\        V P                  4       RV P
                  : R2	# ©rw   Ú(ú) rx   ra   )ry   r?   r  r   r…   r  rb   s   &r(   rc   ÚLTImage.__repr__E  sF   € à�—‘×'Ñ'Ð(¨¨$¯)©)¨°BÜ˜Ÿ	™	Ó"Ð# 1 T§\¡\Ñ$4°Að7ð	
r+   )r  r  r  r  r  r  N©	r?   r@   rA   rB   rf   r0   rc   rC   rD   rE   s   @r(   r
  r
  4  s   ø‡ € ñ÷
	0ð 	0÷
ö 
r+   r
  c                   óH   a € ] tR tRt o RtV 3R lR ltV 3R lR ltRtV tR# )	ÚLTAnnoiL  a  Actual letter in the text as a Unicode string.

Note that, while a LTChar object has actual boundaries, LTAnno objects does
not, as these are "virtual" characters, inserted by a layout analyzer
according to the relationship between two characters (e.g. a space).
c                ó$   <€ V ^8„  d   QhRS[ RR/# )r!   Útextr#   Nr^   )r&   r'   s   "€r(   r)   ÚLTAnno.__annotate__T  s   ø€ ÷ ñ ™Sð  Tñ r+   c                ó   € Wn         R # r-   ©Ú_text)r/   r+  s   &&r(   r0   ÚLTAnno.__init__T  s   € ØŽ
r+   c                ó    <€ V ^8„  d   QhRS[ /# r]   r^   )r&   r'   s   "€r(   r)   r,  W  ó   ø€ ÷ ñ ™#ñ r+   c                ó   € V P                   # r-   r.  rb   s   &r(   rz   ÚLTAnno.get_textW  ó   € Ø�z‰zÐr+   r.  N)	r?   r@   rA   rB   rf   r0   rz   rC   rD   rE   s   @r(   r)  r)  L  s   ø‡ € ñ÷ð ÷ö r+   r)  c                   óZ   a € ] tR tRt o RtV 3R lR ltV 3R lR ltV 3R lR ltR	tV t	R
# )ÚLTChari[  z.Actual letter in the text as a Unicode string.c                óŽ   <€ V ^8„  d   QhRS[ RS[RS[RS[RS[RS[RS[RS[S[S[R	,          S[3,          ,          R
S[RS[RR	/# )r!   ÚmatrixÚfontÚfontsizeÚscalingÚriser+  Ú	textwidthÚtextdispNÚncsÚgraphicstater#   )r   r   rP   r_   rè   r
   r   )r&   r'   s   "€r(   r)   ÚLTChar.__annotate__^  sŒ   ø€ ÷ +$ñ +$áð+$ñ ð+$ñ ð	+$ñ
 ð+$ñ ð+$ñ ð+$ñ ð+$ñ ™%¡¨¥©eÐ 3Õ4Õ4ð+$ñ ð+$ñ &ð+$ð 
ñ+$r+   c                óÊ  € \         P                  V 4       W`n        Wn        VP                  V n        W�n        W n        Ws,          V,          V n        VP                  4       '       d}   \        V\        4      '       g   Q hVw  r¼Vf
   VR,          MW³,          R,          pRV,
          V,          R,          pV) WÅ,           V P                  ,           V) V,           WÅ,           3pM:VP                  4       V,          p^ Wå,           V P                  Wå,           V,           3pV P                  w  ppppppVV,          V,          ^ 8„  ;'       d    VV,          ^ 8*  V n        \        V P                  V4      w  ppppVV8  d   TTppVV8  d   TTpp\        P                  V VVVV34       VP                  4       '       d   V P                  V n        R # V P"                  V n        R # )Nre   gü©ñÒMbP?iè  )rr   r0   r/  r9  Úfontnamer@  rA  ÚadvÚis_verticalr8   rè   Úget_descentÚuprightr   r‚   r­   Úsizer®   )r/   r9  r:  r;  r<  r=  r+  r>  r?  r@  rA  ÚvxÚvyr…   ÚdescentÚaÚbÚcÚdÚ_eÚ_fr©   rª   r«   r¬   s   &&&&&&&&&&&              r(   r0   ÚLTChar.__init__^  s•  € ô 	�‰˜ÔØŒ
ØŒØŸ™ˆŒØŒØ(ÔØÕ'¨'Õ1ˆŒà×Ñ×Òä˜h¬×.Ò.Ð.Ð.Ø‰HˆRØ#%¢:�˜C–°2µ=À5Õ3HˆBØ˜•)˜xÕ'¨%Õ/ˆBØ�C˜� T§X¡XÕ-°¨s°X­~¸r½yÐI‰Dð ×&Ñ&Ó(¨8Õ3ˆGØ�w•~ t§x¡x°µÀ(Õ1JÐKˆDØ#Ÿ{™{ÑˆˆAˆq�!�R˜Ø˜1•u˜w•¨Ñ*×9Ð9¨q°1­u¸©zˆŒÜ,¨T¯[©[¸$Ó?ÑˆˆR��RØ�Œ7Ø˜B�ˆRØ�Œ7Ø˜B�ˆRÜ×Ñ˜T B¨¨B°Ð#3Ô4Ø×Ñ×ÒØŸ
™
ˆDŽIàŸ™ˆDŽIr+   c                ó    <€ V ^8„  d   QhRS[ /# r]   r^   )r&   r'   s   "€r(   r)   rB  ‹  s   ø€ ÷ 
ñ 
™#ñ 
r+   c                óè   € R V P                   P                   R\        V P                  4       R\	        V P
                  4       RV P                  : RV P                   RV P                  4       : R2# )rw   rx   ú matrix=z font=z adv=z text=ra   )	ry   r?   r   r…   r   r9  rD  rE  rz   rb   s   &r(   rc   ÚLTChar.__repr__‹  sr   € à�—‘×'Ñ'Ð(¨¬(°4·9±9Ó*=Ð)>ð ?Ü  §¡Ó-Ð.ð /Ø—M‘MÑ$ð %Ø—8‘8�*ð Ø—M‘M“OÑ& að	)ð	
r+   c                ó    <€ V ^8„  d   QhRS[ /# r]   r^   )r&   r'   s   "€r(   r)   rB  ”  r2  r+   c                ó   € V P                   # r-   r.  rb   s   &r(   rz   ÚLTChar.get_text”  r5  r+   )r/  rE  rD  rA  r9  r@  rI  rH  N)
r?   r@   rA   rB   rf   r0   rc   rz   rC   rD   rE   s   @r(   r7  r7  [  s'   ø‡ € Ù8÷+$ð +$÷Z
ð 
÷ö r+   r7  ÚLTItemT)Úboundc                   ó�   a € ] tR tRt o RtV 3R lR ltV 3R lR ltV 3R lR ltV 3R	 lR
 ltV 3R lR lt	V 3R lR lt
RtV tR# )ÚLTContaineri›  z(Object that can be extended and analyzedc                ó$   <€ V ^8„  d   QhRS[ RR/# r„   r†   )r&   r'   s   "€r(   r)   ÚLTContainer.__annotate__ž  s   ø€ ÷ 'ñ '™Tð ' dñ 'r+   c                ó>   € \         P                  W4       . V n        R # r-   )r‚   r0   Ú_objsrŠ   s   &&r(   r0   ÚLTContainer.__init__ž  s   € Ü×Ñ˜TÔ(Ø$&ˆŽ
r+   c                ó0   <€ V ^8„  d   QhRS[ S[,          /# r]   )r   r[  )r&   r'   s   "€r(   r)   r`  ¢  s   ø€ ÷  ñ  ™(¡7Õ+ñ  r+   c                ó,   € \        V P                  4      # r-   )Úiterrb  rb   s   &r(   Ú__iter__ÚLTContainer.__iter__¢  s   € Ü�D—J‘JÓÐr+   c                ó    <€ V ^8„  d   QhRS[ /# r]   r$   )r&   r'   s   "€r(   r)   r`  ¥  s   ø€ ÷ ñ ™ñ r+   c                ó,   € \        V P                  4      # r-   )Úlenrb  rb   s   &r(   Ú__len__ÚLTContainer.__len__¥  s   € Ü�4—:‘:‹Ðr+   c                ó$   <€ V ^8„  d   QhRS[ RR/# ©r!   r3   r#   N)r[  )r&   r'   s   "€r(   r)   r`  ¨  s   ø€ ÷ ñ ‘wð  4ñ r+   c                ó<   € V P                   P                  V4       R # r-   )rb  Úappendrº   s   &&r(   ÚaddÚLTContainer.add¨  s   € Ø�
‰
×Ñ˜#Ör+   c                ó4   <€ V ^8„  d   QhRS[ S[,          RR/# ©r!   Úobjsr#   N)r   r[  )r&   r'   s   "€r(   r)   r`  «  s    ø€ ÷ ñ ™8¡GÕ,ð °ñ r+   c                ó:   € V F  pV P                  V4       K  	  R # r-   )rr  )r/   rv  r3   s   && r(   ÚextendÚLTContainer.extend«  s   € ÛˆCØ�H‰H�SŽMó r+   c                ó$   <€ V ^8„  d   QhRS[ RR/# ri   rk   )r&   r'   s   "€r(   r)   r`  ¯  s   ø€ ÷ "ñ "¡ð "¨Tñ "r+   c                óN   € V P                    F  pVP                  V4       K  	  R # r-   )rb  ro   ©r/   rj   r3   s   && r(   ro   ÚLTContainer.analyze¯  s   € Ø—:”:ˆCØ�K‰K˜Ö!ó r+   )rb  N)r?   r@   rA   rB   rf   r0   rg  rl  rr  rx  ro   rC   rD   rE   s   @r(   r^  r^  ›  sD   ø‡ € Ù2÷'ð '÷ ð  ÷ð ÷ð ÷ð ÷"ö "r+   r^  c                   óD   a € ] tR tRt o V 3R lR ltV 3R lR ltRtV tR# )ÚLTExpandableContaineri´  c                ó   <€ V ^8„  d   QhRR/# rW   r5   )r&   r'   s   "€r(   r)   Ú"LTExpandableContainer.__annotate__µ  s   ø€ ÷ =ñ =˜$ñ =r+   c                ób   € \         P                  V \        5\        5\        ) \        ) 34       R # r-   )r^  r0   r   rb   s   &r(   r0   ÚLTExpandableContainer.__init__µ  s#   € Ü×Ñ˜T¤S D¬3¨$´°´s°dÐ#;Ö<r+   c                ó$   <€ V ^8„  d   QhRS[ RR/# ro  ©r‚   )r&   r'   s   "€r(   r)   r�  º  s   ø€ ÷ 	
ñ 	
‘{ð 	
 tñ 	
r+   c           	     óh  € \         P                  V \        \        V4      4       V P	                  \        V P                  VP                  4      \        V P                  VP                  4      \        V P                  VP                  4      \        V P                  VP                  4      34       R # r-   )r^  rr  r	   r[  r‰   rÃ   r©   rª   Úmaxr«   r¬   rº   s   &&r(   rr  ÚLTExpandableContainer.addº  sp   € Ü�‰˜œd¤7¨CÓ0Ô1Ø�‰ä�D—G‘G˜SŸV™VÓ$Ü�D—G‘G˜SŸV™VÓ$Ü�D—G‘G˜SŸV™VÓ$Ü�D—G‘G˜SŸV™VÓ$ð	ö	
r+   r5   N)r?   r@   rA   rB   r0   rr  rC   rD   rE   s   @r(   r  r  ´  s   ø‡ € ÷=ð =÷
	
ö 	
r+   r  c                   óD   a € ] tR tRt o V 3R lR ltV 3R lR ltRtV tR# )ÚLTTextContaineriÆ  c                ó   <€ V ^8„  d   QhRR/# rW   r5   )r&   r'   s   "€r(   r)   ÚLTTextContainer.__annotate__Ç  s   ø€ ÷ -ñ -˜$ñ -r+   c                óZ   € \         P                  V 4       \        P                  V 4       R # r-   )rr   r0   r  rb   s   &r(   r0   ÚLTTextContainer.__init__Ç  s   € Ü�‰˜ÔÜ×&Ñ& tÖ,r+   c                ó    <€ V ^8„  d   QhRS[ /# r]   r^   )r&   r'   s   "€r(   r)   rŒ  Ë  s   ø€ ÷ 
ñ 
™#ñ 
r+   c                ó2   € R P                  R V  4       4      # )Ú c              3   óŽ   "  € T F;  p\        V\        4      '       g   K  \        \        V4      P                  4       x € K=  	  R # 5ir-   )r8   rr   r	   rz   )rð   r3   s   & r(   rò   Ú+LTTextContainer.get_text.<locals>.<genexpr>Ì  s2   é € ð 
Ù48¨S¼JÀsÌF×<SÔ(ŒD”˜Ó×&Ñ&×(Ð(³Dùs
   ‚AŸ&A)rô   rb   s   &r(   rz   ÚLTTextContainer.get_textË  s    € Ø�w‰wñ 
Ù48ó
ó 
ð 	
r+   r5   N)r?   r@   rA   rB   r0   rz   rC   rD   rE   s   @r(   rŠ  rŠ  Æ  s   ø‡ € ÷-ð -÷
ö 
r+   rŠ  c                   ó�   a a€ ] tR tRt oRtV3R lV 3R lltV3R lR ltV3R lR ltV3R	 lR
 ltV3R lV 3R llt	Rt
VtV ;t# )Ú
LTTextLineiÔ  zªContains a list of LTChar objects that represent a single text line.

The characters are aligned either horizontally or vertically, depending on
the text's writing mode.
c                ó$   <€ V ^8„  d   QhRS[ RR/# ©r!   rL   r#   Nr¿   )r&   r'   s   "€r(   r)   ÚLTTextLine.__annotate__Û  s   ø€ ÷ 'ñ '¡Eð '¨dñ 'r+   c                ó0   <€ \         SV `  4        Wn        R # r-   )Úsuperr0   rL   )r/   rL   ry   s   &&€r(   r0   ÚLTTextLine.__init__Û  s   ø€ Ü‰ÑÔØ&Ör+   c                ó    <€ V ^8„  d   QhRS[ /# r]   r^   )r&   r'   s   "€r(   r)   r™  ß  s   ø€ ÷ Xñ X™#ñ Xr+   c                ó†   € R V P                   P                   R\        V P                  4       RV P	                  4       : R2# rv   )ry   r?   r   r…   rz   rb   s   &r(   rc   ÚLTTextLine.__repr__ß  s:   € Ø�4—>‘>×*Ñ*Ð+¨1¬X°d·i±iÓ-@Ð,AÀÀ4Ç=Á=Ã?ÑBUÐUVÐWÐWr+   c                ó$   <€ V ^8„  d   QhRS[ RR/# ri   rk   )r&   r'   s   "€r(   r)   r™  â  s   ø€ ÷ ,ñ ,¡ð ,¨Tñ ,r+   c                óŒ   € V P                    F  pVP                  V4       K  	  \        P                  V \	        R 4      4       R# )Ú
N)rb  ro   r^  rr  r)  r|  s   && r(   ro   ÚLTTextLine.analyzeâ  s.   € Ø—:”:ˆCØ�K‰K˜Ö!ñ ä�‰˜œf T›lÖ+r+   c                óJ   <€ V ^8„  d   QhRS[ S[,          RS[RS[R,          /# )r!   ÚplaneÚratior#   r–  )r   r   rP   rç   )r&   r'   s   "€r(   r)   r™  ç  s3   ø€ ÷ "ñ "á‘\Õ"ð"ñ ð"ñ 
ˆlÕ	ñ	"r+   c                ó   € \         hr-   r~   )r/   r¥  r¦  s   &&&r(   Úfind_neighborsÚLTTextLine.find_neighborsç  s
   € ô
 "Ð!r+   c                ó    <€ V ^8„  d   QhRS[ /# r]   r±   )r&   r'   s   "€r(   r)   r™  î  s   ø€ ÷ ?ñ ?™$ñ ?r+   c                ól   <€ \         SV `  4       ;'       g    V P                  4       P                  4       # r-   )r›  r³   rz   Úisspace)r/   ry   s   &€r(   r³   ÚLTTextLine.is_emptyî  s(   ø€ Ü‰wÑÓ!×>Ð> T§]¡]£_×%<Ñ%<Ó%>Ð>r+   )rL   )r?   r@   rA   rB   rf   r0   rc   ro   r¨  r³   rC   rD   Ú__classcell__©ry   r'   s   @@r(   r–  r–  Ô  sC   ù‡ € ñ÷'ó '÷Xð X÷,ð ,÷
"ð "÷?÷ ?ó ?r+   r–  c                   óº   a a€ ] tR tRt oV3R lR ltV3R lV 3R lltV3R lR ltRV3R lR	 lltRV3R
 lR lltRV3R lR llt	RV3R lR llt
RtVtV ;t# )ÚLTTextLineHorizontaliò  c                ó$   <€ V ^8„  d   QhRS[ RR/# r˜  r¿   )r&   r'   s   "€r(   r)   Ú!LTTextLineHorizontal.__annotate__ó  ó   ø€ ÷ ñ ¡Eð ¨dñ r+   c                óH   € \         P                  W4       \        5V n        R # r-   )r–  r0   r   Ú_x1©r/   rL   s   &&r(   r0   ÚLTTextLineHorizontal.__init__ó  ó   € Ü×Ñ˜DÔ.Ü˜$ˆŽr+   c                ó$   <€ V ^8„  d   QhRS[ RR/# ro  r…  )r&   r'   s   "€r(   r)   r³  ù  ó   ø€ ÷ ñ ‘{ð  tñ r+   c                ó|  <€ \        V\        4      '       d…   V P                  '       ds   V P                  \        VP                  VP
                  4      ,          pV P                  VP                  V,
          8  d    \        P                  V \        R 4      4       VP                  V n        \        SV `%  V4       R# ©rx   N)r8   r7  rL   r‡  r­   r®   r¶  r©   r^  rr  r)  r«   r›  ©r/   r3   Úmarginry   s   && €r(   rr  ÚLTTextLineHorizontal.addù  sw   ø€ Ü�cœ6×"Ò" t×'7×'7Ð'7Ø×%Ñ%¬¨C¯I©I°s·z±zÓ(BÕBˆFØ�x‰x˜#Ÿ&™& 6�/Ô)Ü—‘ ¤f¨S£kÔ2Ø—6‘6ˆŒÜ‰‰�CÖr+   c                óL   <€ V ^8„  d   QhRS[ S[,          RS[RS[S[,          /# ©r!   r¥  r¦  r#   ©r   r   rP   rç   r–  )r&   r'   s   "€r(   r)   r³    ó3   ø€ ÷ 
ñ 
á‘\Õ"ð
ñ ð
ñ 
‰jÕ	ñ	
r+   c                óâ  € W P                   ,          pVP                  V P                  V P                  V,
          V P                  V P
                  V,           34      pV Uu. uF�  p\        V\        4      '       g   K  V P                  WSR7      '       g   K5  V P                  WSR7      '       g3   V P                  WSR7      '       g   V P                  WSR7      '       g   K  VNKƒ  	  up# u upi )a  Finds neighboring LTTextLineHorizontals in the plane.

Returns a list of other LTTestLineHorizontals in the plane which are
close to self. "Close" can be controlled by ratio. The returned objects
will be the same height as self, and also either left-, right-, or
centrally-aligned.
©Ú	tolerance)r®   Úfindr©   rª   r«   r¬   r8   r±  Ú_is_same_height_asÚ_is_left_aligned_withÚ_is_right_aligned_withÚ_is_centrally_aligned_with©r/   r¥  r¦  rP  rv  r3   s   &&&   r(   r¨  Ú#LTTextLineHorizontal.find_neighbors  sË   € ð —K‘KÕˆØ�z‰z˜4Ÿ7™7 D§G¡G¨a¥K°·±¸$¿'¹'ÀA½+ÐFÓGˆñ ó
á�ä˜3Ô 4×5ô ð ×+Ñ+¨CÐ+×=ô	 ð ×.Ñ.¨sÐ.×@Ò@Ø×2Ñ2°3Ð2×DÒDØ×6Ñ6°sÐ6×H÷ ˆCÙñ
ð 	
ùò 
ó   Á"C,Á?C,ÂAC,Ã#C,c                ó,   <€ V ^8„  d   QhRS[ RS[RS[/# ©r!   ÚotherrÇ  r#   ©r‚   rP   rQ   )r&   r'   s   "€r(   r)   r³    s#   ø€ ÷ 4ñ 4©;ð 4Á5ð 4ÑQUñ 4r+   c                óT   € \        VP                  V P                  ,
          4      V8*  # )z<Whether the left-hand edge of `other` is within `tolerance`.)rÄ   r©   ©r/   rÒ  rÇ  s   &&&r(   rÊ  Ú*LTTextLineHorizontal._is_left_aligned_with  ó   € ä�5—8‘8˜dŸg™gÕ%Ó&¨)Ñ3Ð3r+   c                ó,   <€ V ^8„  d   QhRS[ RS[RS[/# rÑ  rÓ  )r&   r'   s   "€r(   r)   r³  !  ó#   ø€ ÷ 4ñ 4©Kð 4ÁEð 4ÑRVñ 4r+   c                óT   € \        VP                  V P                  ,
          4      V8*  # )z=Whether the right-hand edge of `other` is within `tolerance`.)rÄ   r«   rÕ  s   &&&r(   rË  Ú+LTTextLineHorizontal._is_right_aligned_with!  r×  r+   c                ó,   <€ V ^8„  d   QhRS[ RS[RS[/# rÑ  rÓ  )r&   r'   s   "€r(   r)   r³  %  ó.   ø€ ÷ Uñ UáðUñ ðUñ 
ñ	Ur+   c                ó´   € \        VP                  VP                  ,           ^,          V P                  V P                  ,           ^,          ,
          4      V8*  # )z?Whether the horizontal center of `other` is within `tolerance`.)rÄ   r©   r«   rÕ  s   &&&r(   rÌ  Ú/LTTextLineHorizontal._is_centrally_aligned_with%  ó=   € ô �E—H‘H˜uŸx™xÕ'¨1Õ,°·±¸$¿'¹'Õ0AÀQÕ/FÕFÓGÈ9ÑTÐTr+   c                ó,   <€ V ^8„  d   QhRS[ RS[RS[/# rÑ  rÓ  )r&   r'   s   "€r(   r)   r³  -  s"   ø€ ÷ <ñ <©ð <Áð <Édñ <r+   c                óT   € \        VP                  V P                  ,
          4      V8*  # r-   )rÄ   r®   rÕ  s   &&&r(   rÉ  Ú'LTTextLineHorizontal._is_same_height_as-  s   € Ü�5—<‘< $§+¡+Õ-Ó.°)Ñ;Ð;r+   )r¶  r>   )r?   r@   rA   rB   r0   rr  r¨  rÊ  rË  rÌ  rÉ  rC   rD   r®  r¯  s   @@r(   r±  r±  ò  sR   ù‡ € ÷ð ÷ó ÷
ð 
÷84ò 4÷4ò 4÷Uò U÷<÷ <ò <r+   r±  c                   ó¶   a a€ ] tR tRt oV3R lR ltV3R lV 3R lltV3R lR ltRV3R lR	 lltRV3R
 lR lltRV3R lR llt	V3R lR lt
RtVtV ;t# )ÚLTTextLineVerticali1  c                ó$   <€ V ^8„  d   QhRS[ RR/# r˜  r¿   )r&   r'   s   "€r(   r)   ÚLTTextLineVertical.__annotate__2  r´  r+   c                óH   € \         P                  W4       \        ) V n        R # r-   )r–  r0   r   Ú_y0r·  s   &&r(   r0   ÚLTTextLineVertical.__init__2  r¹  r+   c                ó$   <€ V ^8„  d   QhRS[ RR/# ro  r…  )r&   r'   s   "€r(   r)   rç  8  r»  r+   c                ó|  <€ \        V\        4      '       d…   V P                  '       ds   V P                  \        VP                  VP
                  4      ,          pVP                  V,           V P                  8  d    \        P                  V \        R 4      4       VP                  V n        \        SV `%  V4       R# r½  )r8   r7  rL   r‡  r­   r®   r¬   ré  r^  rr  r)  rª   r›  r¾  s   && €r(   rr  ÚLTTextLineVertical.add8  sw   ø€ Ü�cœ6×"Ò" t×'7×'7Ð'7Ø×%Ñ%¬¨C¯I©I°s·z±zÓ(BÕBˆFØ�v‰v˜� §¡Ô)Ü—‘ ¤f¨S£kÔ2Ø—6‘6ˆŒÜ‰‰�CÖr+   c                óL   <€ V ^8„  d   QhRS[ S[,          RS[RS[S[,          /# rÂ  rÃ  )r&   r'   s   "€r(   r)   rç  @  rÄ  r+   c                óâ  € W P                   ,          pVP                  V P                  V,
          V P                  V P                  V,           V P
                  34      pV Uu. uF�  p\        V\        4      '       g   K  V P                  WSR7      '       g   K5  V P                  WSR7      '       g3   V P                  WSR7      '       g   V P                  WSR7      '       g   K  VNKƒ  	  up# u upi )a  Finds neighboring LTTextLineVerticals in the plane.

Returns a list of other LTTextLineVerticals in the plane which are
close to self. "Close" can be controlled by ratio. The returned objects
will be the same width as self, and also either upper-, lower-, or
centrally-aligned.
rÆ  )r­   rÈ  r©   rª   r«   r¬   r8   rå  Ú_is_same_width_asÚ_is_lower_aligned_withÚ_is_upper_aligned_withrÌ  rÍ  s   &&&   r(   r¨  Ú!LTTextLineVertical.find_neighbors@  sË   € ð —J‘JÕˆØ�z‰z˜4Ÿ7™7 Q�;¨¯©°·±¸1µ¸d¿g¹gÐFÓGˆñ ó
á�ä˜3Ô 2×3ô ð ×*Ñ*¨3Ð*×<ô	 ð ×/Ñ/°Ð/×AÒAØ×2Ñ2°3Ð2×DÒDØ×6Ñ6°sÐ6×H÷ ˆCÙñ
ð 	
ùò 
rÏ  c                ó,   <€ V ^8„  d   QhRS[ RS[RS[/# rÑ  rÓ  )r&   r'   s   "€r(   r)   rç  \  rÙ  r+   c                óT   € \        VP                  V P                  ,
          4      V8*  # )z8Whether the lower edge of `other` is within `tolerance`.)rÄ   rª   rÕ  s   &&&r(   rñ  Ú)LTTextLineVertical._is_lower_aligned_with\  r×  r+   c                ó,   <€ V ^8„  d   QhRS[ RS[RS[/# rÑ  rÓ  )r&   r'   s   "€r(   r)   rç  `  rÙ  r+   c                óT   € \        VP                  V P                  ,
          4      V8*  # )z8Whether the upper edge of `other` is within `tolerance`.)rÄ   r¬   rÕ  s   &&&r(   rò  Ú)LTTextLineVertical._is_upper_aligned_with`  r×  r+   c                ó,   <€ V ^8„  d   QhRS[ RS[RS[/# rÑ  rÓ  )r&   r'   s   "€r(   r)   rç  d  rÝ  r+   c                ó´   € \        VP                  VP                  ,           ^,          V P                  V P                  ,           ^,          ,
          4      V8*  # )z=Whether the vertical center of `other` is within `tolerance`.)rÄ   rª   r¬   rÕ  s   &&&r(   rÌ  Ú-LTTextLineVertical._is_centrally_aligned_withd  rà  r+   c                ó,   <€ V ^8„  d   QhRS[ RS[RS[/# rÑ  rÓ  )r&   r'   s   "€r(   r)   rç  l  s"   ø€ ÷ :ñ :¡{ð :¹uð :Éñ :r+   c                óT   € \        VP                  V P                  ,
          4      V8*  # r-   )rÄ   r­   rÕ  s   &&&r(   rð  Ú$LTTextLineVertical._is_same_width_asl  s   € Ü�5—;‘; §¡Õ+Ó,°	Ñ9Ð9r+   )ré  r>   )r?   r@   rA   rB   r0   rr  r¨  rñ  rò  rÌ  rð  rC   rD   r®  r¯  s   @@r(   rå  rå  1  sR   ù‡ € ÷ð ÷ó ÷
ð 
÷84ò 4÷4ò 4÷Uò U÷:÷ :ð :r+   rå  c                   óZ   a € ] tR tRt o RtV 3R lR ltV 3R lR ltV 3R lR ltR	tV t	R
# )r9   ip  zÜRepresents a group of text chunks in a rectangular area.

Note that this box is created by geometric analysis and does not
necessarily represents a logical boundary of the text. It contains a list
of LTTextLine objects.
c                ó   <€ V ^8„  d   QhRR/# rW   r5   )r&   r'   s   "€r(   r)   ÚLTTextBox.__annotate__x  s   ø€ ÷ ñ ˜$ñ r+   c                ó>   € \         P                  V 4       RV n        R# )r7   NrY   )rŠ  r0   r"   rb   s   &r(   r0   ÚLTTextBox.__init__x  s   € Ü× Ñ  Ô&ØˆŽ
r+   c                ó    <€ V ^8„  d   QhRS[ /# r]   r^   )r&   r'   s   "€r(   r)   r  |  r!  r+   c           	     ó    € R V P                   P                   RV P                   R\        V P                  4       RV P                  4       : R2	# r#  )ry   r?   r"   r   r…   rz   rb   s   &r(   rc   ÚLTTextBox.__repr__|  sH   € à�—‘×'Ñ'Ð(¨¨$¯*©*¨°RÜ˜Ÿ	™	Ó"Ð# 1 T§]¡]£_Ñ$7°qð:ð	
r+   c                ó    <€ V ^8„  d   QhRS[ /# r]   r^   )r&   r'   s   "€r(   r)   r  ‚  s   ø€ ÷ "ñ "¡#ñ "r+   c                ó   € \         hr-   r~   rb   s   &r(   Úget_writing_modeÚLTTextBox.get_writing_mode‚  s   € Ü!Ð!r+   r.   N)
r?   r@   rA   rB   rf   r0   rc   r
  rC   rD   rE   s   @r(   r9   r9   p  s(   ø‡ € ñ÷ð ÷
ð 
÷"ö "r+   r9   c                   óP   a a€ ] tR tRt oV3R lV 3R lltV3R lR ltRtVtV ;t# )ÚLTTextBoxHorizontali†  c                ó$   <€ V ^8„  d   QhRS[ RR/# ri   rk   )r&   r'   s   "€r(   r)   Ú LTTextBoxHorizontal.__annotate__‡  ó   ø€ ÷ 1ñ 1¡ð 1¨Tñ 1r+   c                ó`   <€ \         SV `  V4       V P                  P                  R  R7       R# )c                 ó   € V P                   ) # r-   )r¬   ©r3   s   &r(   Ú<lambda>Ú-LTTextBoxHorizontal.analyze.<locals>.<lambda>‰  ó
   € ¨¯©©r+   ©ÚkeyN©r›  ro   rb  Úsort©r/   rj   ry   s   &&€r(   ro   ÚLTTextBoxHorizontal.analyze‡  ó"   ø€ Ü‰‰˜Ô!Ø�
‰
�‰Ñ/ˆÖ0r+   c                ó    <€ V ^8„  d   QhRS[ /# r]   r^   )r&   r'   s   "€r(   r)   r  ‹  ó   ø€ ÷ ñ ¡#ñ r+   c                ó   € R # )zlr-tbr5   rb   s   &r(   r
  Ú$LTTextBoxHorizontal.get_writing_mode‹  ó   € Ùr+   r5   ©	r?   r@   rA   rB   ro   r
  rC   rD   r®  r¯  s   @@r(   r  r  †  ó   ù‡ € ÷1ó 1÷÷ ð r+   r  c                   óP   a a€ ] tR tRt oV3R lV 3R lltV3R lR ltRtVtV ;t# )ÚLTTextBoxVerticali�  c                ó$   <€ V ^8„  d   QhRS[ RR/# ri   rk   )r&   r'   s   "€r(   r)   ÚLTTextBoxVertical.__annotate__�  r  r+   c                ó`   <€ \         SV `  V4       V P                  P                  R  R7       R# )c                 ó   € V P                   ) # r-   )r«   r  s   &r(   r  Ú+LTTextBoxVertical.analyze.<locals>.<lambda>’  r  r+   r  Nr  r  s   &&€r(   ro   ÚLTTextBoxVertical.analyze�  r  r+   c                ó    <€ V ^8„  d   QhRS[ /# r]   r^   )r&   r'   s   "€r(   r)   r(  ”  r  r+   c                ó   € R # )ztb-rlr5   rb   s   &r(   r
  Ú"LTTextBoxVertical.get_writing_mode”  r"  r+   r5   r#  r¯  s   @@r(   r&  r&  �  r$  r+   r&  r:   c                   ó>   a a€ ] tR tRt oV3R lV 3R lltRtVtV ;t# )r:   i›  c                ó4   <€ V ^8„  d   QhRS[ S[,          RR/# ru  )r   ÚTextGroupElement)r&   r'   s   "€r(   r)   ÚLTTextGroup.__annotate__œ  s!   ø€ ÷ ñ ™XÑ&6Õ7ð ¸Dñ r+   c                óF   <€ \         SV `  4        V P                  V4       R # r-   )r›  r0   rx  )r/   rv  ry   s   &&€r(   r0   ÚLTTextGroup.__init__œ  s   ø€ Ü‰ÑÔØ�‰�DÖr+   r5   )r?   r@   rA   rB   r0   rC   rD   r®  r¯  s   @@r(   r:   r:   ›  s   ù‡ € ÷÷ ó r+   c                   ó>   a a€ ] tR tRt oV3R lV 3R lltRtVtV ;t# )ÚLTTextGroupLRTBi¡  c                ó$   <€ V ^8„  d   QhRS[ RR/# ri   rk   )r&   r'   s   "€r(   r)   ÚLTTextGroupLRTB.__annotate__¢  ó   ø€ ÷ 
ñ 
¡ð 
¨Tñ 
r+   c                ó    <a€ \         SV `  V4       VP                  f   Q hVP                  oV P                  P	                  V3R lR7       R # )Nc                 ó˜   <€ ^S,
          V P                   ,          ^S,           V P                  V P                  ,           ,          ,
          # ©r7   )r©   rª   r¬   ©r3   rM   s   &€r(   r  Ú)LTTextGroupLRTB.analyze.<locals>.<lambda>¨  s/   ø€ ˜Q �^¨s¯v©vÕ5Ø�:�~ #§&¡&¨3¯6©6¥/Õ2ö3r+   r  ©r›  ro   rM   rb  r  ©r/   rj   rM   ry   s   &&@€r(   ro   ÚLTTextGroupLRTB.analyze¢  sF   ù€ Ü‰‰˜Ô!Ø×"Ñ"Ò.Ð.Ð.Ø×(Ñ(ˆ
à�
‰
�‰ô3ð 	ö 	
r+   r5   ©r?   r@   rA   rB   ro   rC   rD   r®  r¯  s   @@r(   r7  r7  ¡  ó   ù‡ € ÷
÷ 
ó 
r+   r7  c                   ó>   a a€ ] tR tRt oV3R lV 3R lltRtVtV ;t# )ÚLTTextGroupTBRLi­  c                ó$   <€ V ^8„  d   QhRS[ RR/# ri   rk   )r&   r'   s   "€r(   r)   ÚLTTextGroupTBRL.__annotate__®  r:  r+   c                ó    <a€ \         SV `  V4       VP                  f   Q hVP                  oV P                  P	                  V3R lR7       R # )Nc                 óš   <€ ^S,           ) V P                   V P                  ,           ,          ^S,
          V P                  ,          ,
          # r=  )r©   r«   r¬   r>  s   &€r(   r  Ú)LTTextGroupTBRL.analyze.<locals>.<lambda>´  s2   ø€ ˜a *�nÐ-°·±¸#¿&¹&µÕAØ�:�~ §¡Õ'ö(r+   r  r@  rA  s   &&@€r(   ro   ÚLTTextGroupTBRL.analyze®  sF   ù€ Ü‰‰˜Ô!Ø×"Ñ"Ò.Ð.Ð.Ø×(Ñ(ˆ
à�
‰
�‰ô(ð 	ö 	
r+   r5   rC  r¯  s   @@r(   rF  rF  ­  rD  r+   rF  c                   óz   a € ] tR tRt o V 3R lR ltV 3R lR ltV 3R lR ltV 3R lR	 ltV 3R
 lR ltRt	V t
R# )ÚLTLayoutContaineri¹  c                ó$   <€ V ^8„  d   QhRS[ RR/# r„   r†   )r&   r'   s   "€r(   r)   ÚLTLayoutContainer.__annotate__º  s   ø€ ÷ 5ñ 5™Tð 5 dñ 5r+   c                ó>   € \         P                  W4       R V n        R # r-   )r^  r0   ÚgroupsrŠ   s   &&r(   r0   ÚLTLayoutContainer.__init__º  s   € Ü×Ñ˜TÔ(Ø04ˆŽr+   c                óL   <€ V ^8„  d   QhRS[ RS[S[,          RS[S[,          /# )r!   rj   rv  r#   )rG   r   r‚   r   r–  )r&   r'   s   "€r(   r)   rP  ¿  s8   ø€ ÷ Kñ KáðKñ ‘{Õ#ðKñ 
‘*Õ	ñ	Kr+   c              #  ó�  "  € R pR pV EF‚  pVEex   VP                  V4      ;'       d�    \        VP                  VP                  4      VP                  ,          VP	                  V4      8  ;'       dD    VP                  V4      \        VP                  VP                  4      VP                  ,          8  pVP                  ;'       d¨    VP                  V4      ;'       d�    \        VP                  VP                  4      VP                  ,          VP                  V4      8  ;'       dD    VP                  V4      \        VP                  VP                  4      VP                  ,          8  pV'       d   \        V\        4      '       g   V'       d)   \        V\        4      '       d   VP!                  V4       MÇVe   Vx € R pM¼V'       dA   V'       g9   \        VP"                  4      pVP!                  V4       VP!                  V4       MtV'       dA   V'       g9   \        VP"                  4      pVP!                  V4       VP!                  V4       M,\        VP"                  4      pVP!                  V4       Vx € R pTpEK…  	  Vf-   \        VP"                  4      pVf   Q hVP!                  V4       Vx € R # 5ir-   )rÐ   rÃ   r®   rI   rÙ   rÅ   r‡  r­   rJ   rN   r»   rË   rÕ   r8   r±  rå  rr  rL   )r/   rj   rv  Úobj0ÚlineÚobj1ÚhalignÚvaligns   &&&     r(   Úgroup_objectsÚLTLayoutContainer.group_objects¿  s@  é € ð
 ˆØ"&ˆÜˆDØÓð ×$Ñ$ TÓ*÷ Ið IÜ˜DŸK™K¨¯©Ó5¸×8MÑ8MÕMØ—m‘m DÓ)ñ*÷Ið Ið Ÿ™ tÓ,Ü˜$Ÿ*™* d§j¡jÓ1°H×4HÑ4HÕHñIð	 ð. ×,Ñ,÷ Kð KØ×(Ñ(¨Ó.÷Kð Kä˜DŸJ™J¨¯
©
Ó3°h×6KÑ6KÕKØ—m‘m DÓ)ñ*÷Kð Kð Ÿ™ tÓ,Ü˜$Ÿ+™+ t§{¡{Ó3°h×6JÑ6JÕJñKð ÷ œz¨$Ô0D×EÒEßœz¨$Ô0B×CÒCà—H‘H˜T•NØÒ%Ø’JØ‘Dß§FÜ-¨h×.BÑ.BÓC�DØ—H‘H˜T”NØ—H‘H˜T•Nß§FÜ/°×0DÑ0DÓE�DØ—H‘H˜T”NØ—H‘H˜T•Nä/°×0DÑ0DÓE�DØ—H‘H˜T”NØ’JØ�DØ‹Dñ ð@ Š<Ü'¨×(<Ñ(<Ó=ˆDØÒ#Ð#Ð#Ø�H‰H�TŒNØŒ
ùsK   ‚'KªA
KÁ5AKÃKÃ%A
KÄ0AKÅ<KÆ:KÇKÇ?KÈKÈ%B!Kc                óL   <€ V ^8„  d   QhRS[ RS[S[,          RS[S[,          /# )r!   rj   Úlinesr#   )rG   r   r–  r   r9   )r&   r'   s   "€r(   r)   rP    s3   ø€ ÷  ñ  áð ñ ™
Õ#ð ñ 
‘)Õ	ñ	 r+   c              #  ó„  "  € \        V P                  4      pVP                  V4       / pV Fµ  pVP                  W1P                  4      pV.pV F<  pVP                  V4       W„9   g   K  VP                  VP                  V4      4       K>  	  \        V\        4      '       d   \        4       p	M
\        4       p	\        V4       F  p
V	P                  V
4       W”V
&   K  	  K·  	  \        4       pV FH  pWT9  d   K  WE,          p	W›9   d   K  VP                  V	4       V	P                  4       '       d   KD  V	x € KJ  	  R# 5i)z$Group neighboring lines to textboxesN)r   r…   rx  r¨  rK   rq  Úpopr8   r±  r  r&  r   rr  Úsetr³   )r/   rj   r^  r¥  ÚboxesrW  Ú	neighborsÚmembersrX  Úboxr3   Údones   &&&         r(   Úgroup_textlinesÚ!LTLayoutContainer.group_textlines  s  é € ô $)¨¯©Ó#3ˆØ�‰�UÔØ-/ˆÛˆDØ×+Ñ+¨E×3GÑ3GÓHˆIØ�fˆGÛ!�Ø—‘˜tÔ$Ø–=Ø—N‘N 5§9¡9¨T£?Ö3ñ "ô ˜$Ô 4×5Ò5Ü!4Ó!6‘ä'Ó)�Ü˜G–}�Ø—‘˜”Ø �c“
ó %ñ ô ‹uˆÛˆDØÔ ÙØ•+ˆCØŒ{ÙØ�H‰H�SŒMØ—<‘<—>”>Ø”	ó ùs   ‚A%E Á,CE Ä6
E c                óL   <€ V ^8„  d   QhRS[ RS[S[,          RS[S[,          /# )r!   rj   rb  r#   )rG   r   r9   rç   r:   )r&   r'   s   "€r(   r)   rP  .  s8   ø€ ÷ [5ñ [5áð[5ñ ™	Õ"ð[5ñ 
‰kÕ	ñ	[5r+   c           
     ó¾  aa€ \         \        \        3,          o\        V P                  4      oR R lpV3R lV3R llp. p\        \        V4      4       Fd  pW&,          p\        V^,           \        V4      4       F9  pW(,          p	VP                  RV! Wy4      \        V4      \        V	4      Wy34       K;  	  Kf  	  \        P                  ! V4       SP                  V4       \        4       p
\        V4      ^ 8”  Ed:   \        P                  ! V4      w  r¼rÞppWÚ9  g   K4  Wê9  g   K<  V'       g-   V! VV4      '       d   \        P                  ! VRWÍWïV34       Kp  \        V\         \"        34      '       g   \        V\         \"        34      '       d   \#        VV.4      pM\%        VV.4      pSP'                  V4       SP'                  V4       V
P)                  WÞ.4       S F9  p\        P                  ! VRV! VV4      \        V4      \        V4      VV34       K;  	  SP+                  V4       EKJ  S Uu. uF  p\-        \        V4      NK  	  up# u upi )a  Group textboxes hierarchically.

Get pair-wise distances, via dist func defined below, and then merge
from the closest textbox pair. Once obj1 and obj2 are merged /
grouped, the resulting group is considered as a new object, and its
distances to other objects & groups are added to the process queue.

For performance reason, pair-wise distances and object pair info are
maintained in a heap of (idx, dist, id(obj1), id(obj2), obj1, obj2)
tuples. It ensures quick access to the smallest element. Note that
since comparison operators, e.g., __lt__, are disabled for
LTComponent, id(obj) has to appear before obj in element tuples.

:param laparams: LAParams object.
:param boxes: All textbox objects to be grouped.
:return: a list that has only one element, the final top level group.
c                ó<   € V ^8„  d   QhR\         R\         R\        /# ©r!   rX  Úobj2r#   )r‚   rP   )r&   s   "r(   r)   Ú7LTLayoutContainer.group_textboxes.<locals>.__annotate__G  s!   € ÷ 	ñ 	”{ð 	¬+ð 	¼%ñ 	r+   c                ó´  € \        V P                  VP                  4      p\        V P                  VP                  4      p\        V P                  VP                  4      p\        V P
                  VP
                  4      pWB,
          WS,
          ,          V P                  V P                  ,          ,
          VP                  VP                  ,          ,
          # )aX  A distance function between two TextBoxes.

Consider the bounding rectangle for obj1 and obj2.
Return its area less the areas of obj1 and obj2,
shown as 'www' below. This value may be negative.
        +------+..........+ (x1, y1)
        | obj1 |wwwwwwwwww:
        +------+www+------+
        :wwwwwwwwww| obj2 |
(x0, y0) +..........+------+
)rÃ   r©   rª   r‡  r«   r¬   r­   r®   )rX  rm  r©   rª   r«   r¬   s   &&    r(   ÚdistÚ/LTLayoutContainer.group_textboxes.<locals>.distG  s�   € ô �T—W‘W˜dŸg™gÓ&ˆBÜ�T—W‘W˜dŸg™gÓ&ˆBÜ�T—W‘W˜dŸg™gÓ&ˆBÜ�T—W‘W˜dŸg™gÓ&ˆBà•˜R�WÕ%Ø—*‘*˜tŸ{™{Õ*õ+à—*‘*˜tŸ{™{Õ*õ+ðr+   c                ó<   <€ V ^8„  d   QhRSRSR\         S,          /# rl  )ra  )r&   ÚElementTs   "€r(   r)   rn  ]  s&   ø€ ÷ 	1ñ 	1˜ð 	1¨ð 	1´S¸µ]ñ 	1r+   c                ó`  <€ \        V P                  VP                  4      p\        V P                  VP                  4      p\        V P                  VP                  4      p\        V P
                  VP
                  4      p\        SP                  W#WE34      4      pVP                  W34      # )z8Check if there's any other object between obj1 and obj2.)	rÃ   r©   rª   r‡  r«   r¬   ra  rÈ  Ú
difference)rX  rm  r©   rª   r«   r¬   rv  r¥  s   &&     €r(   ÚisanyÚ0LTLayoutContainer.group_textboxes.<locals>.isany]  s|   ø€ ä�T—W‘W˜dŸg™gÓ&ˆBÜ�T—W‘W˜dŸg™gÓ&ˆBÜ�T—W‘W˜dŸg™gÓ&ˆBÜ�T—W‘W˜dŸg™gÓ&ˆBÜ�u—z‘z 2¨2Ð"2Ó3Ó4ˆDØ—?‘? D <Ó0Ð0r+   FT)r   r9   r:   r   r…   Úrangerk  rq  ÚidÚheapqÚheapifyrx  ra  ÚheappopÚheappushr8   r&  rF  r7  ÚremoveÚupdaterr  r	   )r/   rj   rb  rp  rv  ÚdistsÚiÚbox1ÚjÚbox2rf  Ú
skip_isanyrP  Úid1Úid2rX  rm  ÚgrouprÒ  Úgrs  r¥  s   &&&                 @@r(   Úgroup_textboxesÚ!LTLayoutContainer.group_textboxes.  sã  ù€ ô, œ¤KÐ/Õ0ˆÜ!& t§y¡yÓ!1ˆõ	÷,	1ó 	1ð IKˆÜ”s˜5“zÖ"ˆAØ•8ˆDÜ˜1˜q�5¤# e£*Ö-�Ø•x�Ø—‘˜e¡T¨$Ó%5´r¸$³xÄÀDÃÈ4ÐVÖWó .ñ #ô
 	�Š�eÔà�‰�UÔÜ‹uˆÜ�%‹j˜1�nÜ49·M²MÀ%Ó4HÑ1ˆZ˜C d¨Dà– c¦oß!¡e¨D°$×&7Ò&7Ü—N’N 5¨4°¸ÀDÐ*IÔJÙÜ˜dÔ%6¼Ð$H×IÒIÌZØÜ&¬Ð8÷Nò Nô *9¸$À¸Ó)F‘Eä+¨T°4¨LÓ9�EØ—‘˜TÔ"Ø—‘˜TÔ"Ø—‘˜S˜JÔ'ã"�EÜ—N’NØØ¡ U¨EÓ 2´B°u³I¼rÀ%»yÈ%ÐQVÐWöñ #ð
 —	‘	˜%× á.3Ó4©e¨””[ !Ö$©eÑ4Ð4ùÒ4s   È>Ic                ó$   <€ V ^8„  d   QhRS[ RR/# ri   rk   )r&   r'   s   "€r(   r)   rP  ‹  s   ø€ ÷ #
ñ #
¡ð #
¨Tñ #
r+   c                ó  € \        R  V 4      w  r#V F  pVP                  V4       K  	  V'       g   R# \        V P                  W4      4      p\        R V4      w  reV F  pVP                  V4       K  	  \        V P	                  W4      4      pVP
                  f4   V F  pVP                  V4       K  	  R R lp	VP                  V	R7       MhV P                  W4      V n        \        4       p
V P                   F%  pVP                  V4       V
P                  V4       K'  	  VP                  R R7       \        \        \        ,          V4      V,           \        \        \        ,          V4      ,           V n        R# )c                 ó"   € \        V \        4      # r-   )r8   r7  r  s   &r(   r  Ú+LTLayoutContainer.analyze.<locals>.<lambda>Ž  s   € ´:¸cÄ6Ô3Jr+   Nc                 ó"   € V P                  4       # r-   )r³   r  s   &r(   r  r�  ”  s
   € °#·,±,´.r+   c                ó\   € V ^8„  d   QhR\         R\        \        \        \        3,          /# )r!   re  r#   )r9   rè   r%   rP   )r&   s   "r(   r)   Ú/LTLayoutContainer.analyze.<locals>.__annotate__œ  s&   € ÷ 0ñ 0œIð 0¬%´´U¼EÐ0AÕ*Bñ 0r+   c                 ó˜   € \        V \        4      '       d   ^ V P                  ) V P                  ) 3# ^V P                  ) V P                  3# r>   )r8   r&  r«   rª   r©   ©re  s   &r(   ÚgetkeyÚ)LTLayoutContainer.analyze.<locals>.getkeyœ  s@   € Ü˜cÔ#4×5Ò5Ø §¡˜w¨¯©¨Ð0Ð0à §¡˜w¨¯©Ð/Ð/r+   r  c                 ó   € V P                   # r-   r.   r”  s   &r(   r  r�  ©  s   € ¨3¯9ª9r+   )r   ro   rç   r[  rg  rM   r  rŠ  rR  r   r;   r	   r‚   rb  )r/   rj   ÚtextobjsÚ	otherobjsr3   Ú	textlinesÚemptiesÚ	textboxesÚtextboxr•  Úassignerrˆ  s   &&          r(   ro   ÚLTLayoutContainer.analyze‹  s9  € ô !'Ñ'JÈDÓ QÑˆÛˆCØ�K‰K˜Ö!ñ çÙÜ˜×+Ñ+¨HÓ?Ó@ˆ	Ü%Ñ&@À)ÓLÑˆÛˆCØ�K‰K˜Ö!ñ ä˜×-Ñ-¨hÓBÓCˆ	Ø×ÑÒ&Û$�Ø—‘ Ö)ñ %õ0ð �N‰N˜vˆNÕ&à×.Ñ.¨xÓCˆDŒKÜ$“ˆHØŸœ�Ø—‘˜hÔ'Ø—‘˜UÖ#ñ %ð �N‰NÑ4ˆNÔ5ä””kÕ" IÓ.Øõä”4œÕ$ gÓ.õ/ð 	Ž
r+   )rb  rR  N)r?   r@   rA   rB   r0   r[  rg  rŠ  ro   rC   rD   rE   s   @r(   rN  rN  ¹  s>   ø‡ € ÷5ð 5÷
Kð K÷Z ð  ÷D[5ð [5÷z#
ö #
r+   rN  c                   óZ   a € ] tR tRt o RtV 3R lR ltV 3R lR ltV 3R lR ltR	tV t	R
# )ÚLTFigurei±  zËRepresents an area used by PDF Form objects.

PDF Forms can be used to present figures or pictures by embedding yet
another PDF document within a page. Note that LTFigure objects can appear
recursively.
c                ó0   <€ V ^8„  d   QhRS[ RS[RS[RR/# )r!   r  r…   r9  r#   N)r_   r   r   )r&   r'   s   "€r(   r)   ÚLTFigure.__annotate__¹  s)   ø€ ÷ /ñ /™Sð /©ð /±fð /Àñ /r+   c                óŠ   € Wn         W0n        Vw  rErgWEWF,           WW,           3p\        W84      p\        P	                  W4       R # r-   )r  r9  r   rN  r0   )	r/   r  r…   r9  r<   ÚyÚwÚhÚrects	   &&&&     r(   r0   ÚLTFigure.__init__¹  s=   € ØŒ	ØŒØ‰ˆˆqØ�a•e˜Q�UÐ#ˆÜ  Ó.ˆÜ×"Ñ" 4Ö.r+   c                ó    <€ V ^8„  d   QhRS[ /# r]   r^   )r&   r'   s   "€r(   r)   r£  Á  ó   ø€ ÷ 
ñ 
™#ñ 
r+   c           
     ó¨   € R V P                   P                   RV P                   R\        V P                  4       R\        V P                  4       R2	# )rw   r$  r%  rV  ra   )ry   r?   r  r   r…   r   r9  rb   s   &r(   rc   ÚLTFigure.__repr__Á  sO   € à�—‘×'Ñ'Ð(¨¨$¯)©)¨°BÜ˜Ÿ	™	Ó"Ð#ð $Ü  §¡Ó-Ð.¨að1ð	
r+   c                ó$   <€ V ^8„  d   QhRS[ RR/# ri   rk   )r&   r'   s   "€r(   r)   r£  È  s   ø€ ÷ 2ñ 2¡ð 2¨Tñ 2r+   c                óX   € VP                   '       g   R # \        P                  W4       R # r-   )rO   rN  ro   rn   s   &&r(   ro   ÚLTFigure.analyzeÈ  s   € Ø×!×!Ð!ÙÜ×!Ñ! $Ö1r+   )r9  r  N)
r?   r@   rA   rB   rf   r0   rc   ro   rC   rD   rE   s   @r(   r¡  r¡  ±  s(   ø‡ € ñ÷/ð /÷
ð 
÷2ö 2r+   r¡  c                   óL   a € ] tR tRt o RtR	V 3R lR lltV 3R lR ltRtV tR# )
ÚLTPageiÎ  z¯Represents an entire page.

Like any other LTLayoutContainer, an LTPage can be iterated to obtain child
objects like LTTextBox, LTFigure, LTImage, LTRect, LTCurve and LTLine.
c                ó0   <€ V ^8„  d   QhRS[ RS[RS[RR/# )r!   Úpageidr…   Úrotater#   N)r%   r   rP   )r&   r'   s   "€r(   r)   ÚLTPage.__annotate__Õ  s)   ø€ ÷ ñ ™sð ©$ð ¹ð Àdñ r+   c                óH   € \         P                  W4       Wn        W0n        R # r-   )rN  r0   r´  rµ  )r/   r´  r…   rµ  s   &&&&r(   r0   ÚLTPage.__init__Õ  s   € Ü×"Ñ" 4Ô.ØŒØŽr+   c                ó    <€ V ^8„  d   QhRS[ /# r]   r^   )r&   r'   s   "€r(   r)   r¶  Ú  r«  r+   c           	     óš   € R V P                   P                   RV P                  : R\        V P                  4       RV P
                  : R2	# )rw   r$  r%  z rotate=ra   )ry   r?   r´  r   r…   rµ  rb   s   &r(   rc   ÚLTPage.__repr__Ú  sI   € à�—‘×'Ñ'Ð(¨¨$¯+©+©¸Ü˜Ÿ	™	Ó"Ð#ð $Ø—k‘k‘_ Að'ð	
r+   )r´  rµ  Nr>   r'  rE   s   @r(   r²  r²  Î  s   ø‡ € ñ÷ò ÷

ö 
r+   r²  )Erz  ÚloggingÚcollections.abcr   r   r   Útypingr   r   r   r	   Úpdfminer.pdfcolorr
   Úpdfminer.pdfexceptionsr   r   Úpdfminer.pdffontr   Úpdfminer.pdfinterpr   r   Úpdfminer.pdftypesr   Úpdfminer.utilsr   r   r   r   r   r   r   r   r   r   r   r   r   Ú	getLoggerr?   Úloggerr   rG   r4   rr   r‚   rÜ   rù   r  r
  r)  r7  r[  r^  r  rŠ  ÚTextLineElementr–  r±  rå  r9   r  r&  r2  r:   r7  rF  rN  r¡  r²  r5   r+   r(   Ú<module>rÈ     sò  ðÛ Û ß 8Ñ 8÷ó õ ,ß >Ý $ß 5Ý '÷÷ ÷ õ ð  
×	Ò	˜8Ó	$€÷
ñ 
÷@
ñ @
÷F+ñ +÷"ñ "ôF�&ô FôR!Fˆkô !FôH
ˆWô 
ôB
ˆWô 
ôB
ˆkô 
ô0ˆV�Vô ô:ˆ[˜&ô :ñz �) 6Ô
*€ô"�+˜w wÕ/ô "ô2
˜K¨Õ0ô 
ô$
Ð+¨GÕ4°fô 
ð ˜ ˜Õ'€ô?� Õ1ô ?ô<<<˜:ô <<ô~<:˜ô <:ô~"� 
Õ+ô "ô,˜)ô ô˜	ô ð ˜ MÐ1Õ2Ð ô�/Ð"2Õ3ô ô	
�kô 	
ô	
�kô 	
ôu
˜ KÕ0ô u
ôp2Ð ô 2ô:
Ðö 
r+   