+
    �vjü   ã                   ó\  € ^ RI t ^ RIHt ^ RIHtHtHt ^RIHtH	t	H
t
Ht ^RIHt R R ltR R	 lt]! R
RRR4      tR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR  R! ltR" R# ltR$ R% ltR& R' ltR( R) ltR* R+ ltR, R- lt R. R/ lt!R2R0 R1 llt"R# )3é    N)Ú
itemgetter)ÚDictÚIterableÚOptional)ÚT_bboxÚT_numÚT_objÚ
T_obj_list)Úcluster_objectsc                óh   € V ^8„  d   QhR\         \        ,          R\        \        \        3,          /# ©é   ÚobjectsÚreturn)r   r	   r   Ústrr   )Úformats   "Ú]/var/www/html/daimler-pipeline/venv/lib/python3.14/site-packages/pdfplumber/utils/geometry.pyÚ__annotate__r   	   s'   € ÷ 2ñ 2œX¤e�_ð 2´´c¼5°jÕ1Añ 2ó    c                ó*   € \        \        V 4      4      # )z�
Given an iterable of objects, return the smallest rectangle (i.e. a
dict with "x0", "top", "x1", and "bottom" keys) that contains them
all.
)Úbbox_to_rectÚobjects_to_bbox©r   s   &r   Úobjects_to_rectr   	   s   € ô œ¨Ó0Ó1Ð1r   c                óF   € V ^8„  d   QhR\         \        ,          R\        /# r   )r   r	   r   )r   s   "r   r   r      s   € ÷ 3ñ 3œX¤e�_ð 3´ñ 3r   c                ó4   € \        \        \        V 4      4      # )zX
Given an iterable of objects, return the smallest bounding box that
contains them all.
)Úmerge_bboxesÚmapÚbbox_getterr   s   &r   r   r      s   € ô
 œœK¨Ó1Ó2Ð2r   Úx0ÚtopÚx1Úbottomc                ó0   € V ^8„  d   QhR\         R\        /# ©r   Úobjr   )r	   r   )r   s   "r   r   r      s   € ÷ ñ ”Uð œvñ r   c                ó   € \        V 4      pV# )z(
Return the bounding box for an object.
)r   )r&   Úbboxs   & r   Úobj_to_bboxr)      s   € ô ˜sÓ#€DØ€Kr   c                óR   € V ^8„  d   QhR\         R\        \        \        3,          /# ©r   r(   r   )r   r   r   r   )r   s   "r   r   r   %   s'   € ÷ Mñ M”vð M¤$¤s¬E zÕ"2ñ Mr   c           	     óN   € RV ^ ,          RV ^,          RV ^,          RV ^,          /# )zX
Return the rectangle (i.e a dict with keys "x0", "top", "x1",
"bottom") for an object.
r    r!   r"   r#   © )r(   s   &r   r   r   %   s+   € ð
 �$�q•'˜5 $ q¥'¨4°°aµ¸(ÀDÈÅGÐLÐLr   c                óF   € V ^8„  d   QhR\         \        ,          R\        /# )r   Úbboxesr   )r   r   )r   s   "r   r   r   -   s   € ÷ 5ñ 5œ¤&Õ)ð 5¬fñ 5r   c                ón   € \        V !  w  rr4\        V4      \        V4      \        V4      \        V4      3# )z_
Given an iterable of bounding boxes, return the smallest bounding box
that contains them all.
)ÚzipÚminÚmax)r/   r    r!   r"   r#   s   &    r   r   r   -   s1   € ô
 ˜v™,Ñ€BˆRÜ�‹G”S˜“Xœs 2›w¬¨F«Ð4Ð4r   c                óR   € V ^8„  d   QhR\         R\         R\        \         ,          /# )r   ÚaÚbr   )r   r   )r   s   "r   r   r   6   s&   € ÷ ñ œð ¤6ð ¬h´vÕ.>ñ r   c                 óÐ   € V w  r#rEVw  rgr‰\        W&4      p
\        WH4      p\        WY4      p\        W74      pWº,
          pWÍ,
          pV^ 8¼  d   V^ 8¼  d   Wþ,           ^ 8”  d   W­W¼3# R# )r   N)r3   r2   )r5   r6   Úa_leftÚa_topÚa_rightÚa_bottomÚb_leftÚb_topÚb_rightÚb_bottomÚo_leftÚo_rightÚo_bottomÚo_topÚo_widthÚo_heights   &&              r   Úget_bbox_overlaprF   6   ss   € Ø'(Ñ$€F�7Ø'(Ñ$€F�7Ü�Ó €FÜ�'Ó#€GÜ�8Ó&€HÜ�Ó€EØÕ€GØÕ€HØ�1„}˜ Aœ¨(Õ*<¸qÔ*@Ø˜wÐ1Ð1ár   c                ó0   € V ^8„  d   QhR\         R\        /# r+   )r   r   )r   s   "r   r   r   E   s   € ÷ +ñ +œð +¤Eñ +r   c                 ój   € V w  rr4W8”  g   W$8”  d   \        V  R 24      hW1,
          WB,
          ,          # )z  has a negative width or height.)Ú
ValueError)r(   Úleftr!   Úrightr#   s   &    r   Úcalculate_arearL   E   s7   € Ø#Ñ€DˆuØ„|�s”|Ü˜D˜6Ð!AÐBÓCÐCØ�L˜V�\Õ*Ð*r   c                óR   € V ^8„  d   QhR\         R\        R\        \         ,          /# )r   r&   r(   r   )r	   r   r   )r   s   "r   r   r   L   s%   € ÷ ñ ”%ð œvð ¬(´5­/ñ r   c                 óX  € \        \        V 4      V4      pVf   R # \        V4      p\        V 4      pR F  pW5,          WE&   K  	  VR,          V R,          ,
          pRV9   d   V R,          V,           VR&   VR,          VR,          ,
          VR&   VR,          VR,          ,
          VR&   V# )	Nr    r!   r"   r#   ÚdoctopÚwidthÚheight)r    r!   r"   r#   )rF   r)   r   Údict)r&   r(   ÚoverlapÚdimsÚcopyÚattrÚdiffs   &&     r   Úclip_objrX   L   s    € Üœ{¨3Ó/°Ó6€GØ‚Ùä˜Ó €DÜ�‹9€Dã-ˆØ•Zˆ‹
ñ .ð ��;˜˜U�Õ#€DØ�4ÔØ˜X�¨Õ-ˆˆX‰Ø˜•J  d¥Õ+€Dˆ�MØ˜(•^ d¨5¥kÕ1€Dˆ�Nà€Kr   c                óR   € V ^8„  d   QhR\         \        ,          R\        R\        /# ©r   Úobjsr(   r   ©r   r	   r   r
   )r   s   "r   r   r   `   s*   € ÷ Yñ Yœ(¤5�/ð Y´ð Y¼Jñ Yr   c                ób   € V  Uu. uF  p\        \        V4      V4      f   K  VNK   	  up# u upi )z2
Filters objs to only those intersecting the bbox
©rF   r)   ©r[   r(   r&   s   && r   Úintersects_bboxr`   `   s-   € ñ  ÓX™4�CÔ#3´KÀÓ4DÀdÓ#K�CˆC™4ÑXÐXùÒXó   …,£,c                óR   € V ^8„  d   QhR\         \        ,          R\        R\        /# rZ   r\   )r   s   "r   r   r   g   s%   € ÷ ñ ”hœu•oð ¬Vð ¼
ñ r   c                óz   € V  Uu. uF*  p\        \        V4      V4      \        V4      8X  g   K(  VNK,  	  up# u upi )z2
Filters objs to only those fully within the bbox
r^   r_   s   && r   Úwithin_bboxrd   g   sD   € ñ óáˆCÜœK¨Ó,¨dÓ3´{À3Ó7GÑG÷ 	ˆÙñð ùò s   …%8¯8c                óR   € V ^8„  d   QhR\         \        ,          R\        R\        /# rZ   r\   )r   s   "r   r   r   r   s*   € ÷ Uñ U”x¤•ð U¬fð U¼ñ Ur   c                ób   € V  Uu. uF  p\        \        V4      V4      e   K  VNK   	  up# u upi )z3
Filters objs to only those fully outside the bbox
r^   r_   s   && r   Úoutside_bboxrg   r   s-   € ñ  ÓT™4�CÔ#3´KÀÓ4DÀdÓ#K�CˆC™4ÑTÐTùÒTra   c                óR   € V ^8„  d   QhR\         \        ,          R\        R\        /# rZ   r\   )r   s   "r   r   r   y   s*   € ÷ Eñ E”x¤•ð E¬fð E¼ñ Er   c                óB   a€ \        \        RV3R lV  4       4      4      # )zd
Filters objs to only those intersecting the bbox,
and crops the extent of the objects to the bbox.
Nc              3   ó<   <"  € T F  p\        VS4      x € K  	  R # 5i)N)rX   )Ú.0r&   r(   s   & €r   Ú	<genexpr>Úcrop_to_bbox.<locals>.<genexpr>~   s   øé € ÐB¹T°cœh s¨D×1Ð1»Tùs   ƒ)ÚlistÚfilter)r[   r(   s   &fr   Úcrop_to_bboxrp   y   s   ø€ ô
 ”�tÔB¹TÓBÓCÓDÐDr   c                óH   € V ^8„  d   QhR\         R\        R\        R\         /# )r   r&   ÚaxisÚvaluer   ©r	   r   r   )r   s   "r   r   r   �   s.   € ÷ @ñ @”Uð @¤#ð @¬eð @¼ñ @r   c                 óÖ  € VR	9   g   Q hVR 8X  d%   RV R,          V,           3RV R,          V,           3.pVR8X  dx   RV R,          V,           3RV R,          V,           3.pRV 9   d   VRV R,          V,           3.,          pRV 9   d,   VRV R,          V,
          3RV R,          V,
          3.,          pV P                  \        V P                  4       4      \        X4      ,           4      # )
ÚhÚvr    r"   r!   r#   rO   Úy0Úy1)rv   rw   )Ú	__class__ÚtupleÚitems)r&   rr   rs   Ú	new_itemss   &&& r   Úmove_objectr~   �   sô   € Ø�:ÔÐÐØˆs„{à�3�t•9˜uÕ$Ð%Ø�3�t•9˜uÕ$Ð%ð
ˆ	ð ˆs„{à�C˜•J Õ&Ð'Ø�s˜8•} uÕ,Ð-ð
ˆ	ð �sŒ?Ø˜8 S¨¥]°UÕ%:Ð;Ð<Õ<ˆIØ�3Œ;ØØ�s˜4•y 5Õ(Ð)Ø�s˜4•y 5Õ(Ð)ðõ ˆIð �=‰=œ˜sŸy™y›{Ó+¬e°IÓ.>Õ>Ó?Ð?r   c                ó^   € V ^8„  d   QhR\         \        ,          R\        R\        R\        /# )r   r[   rV   Ú	tolerancer   )r   r	   r   r   r
   )r   s   "r   r   r   —   s,   € ÷ 	4ñ 	4”x¤•ð 	4¬cð 	4¼eð 	4Ì
ñ 	4r   c                 óÊ  € R RRRRRRR/V,          p\        V 4      p\        V\        V4      V4      pV Uu. uF1  p\        \	        \        V4      V4      4      \        V4      ,          NK3  	  pp\        WW4       UUU	u. uF.  w  rhV U	u. uF  p	\        W“W‰V,          ,
          4      NK  	  up	NK0  	  p
ppp	\        \        P                  ! V
!  4      # u upi u up	i u up	ppi )r    rv   r"   r!   rw   r#   )
rn   r   r   Úsumr   Úlenr1   r~   Ú	itertoolsÚchain)r[   rV   r€   rr   Ú	list_objsÚclustersÚclusterÚavgsÚavgr&   Úsnapped_clusterss   &&&        r   Úsnap_objectsrŒ   —   sÕ   € Ø�#�t˜S %¨¨h¸Ð<¸TÕB€DÜ�T“
€IÜ˜y¬*°TÓ*:¸IÓF€HÙNVÓWÉhÀ7ŒC””J˜tÓ$ gÓ.Ó/´#°g³,×>Ð>Éh€DÐWô   Ô/õá/‰LˆGñ =DÓD¹G°SŒ�S ¨$¥i¥Ö	0¹GÔDÙ/ð ò ô ”	—’Ð!1Ñ2Ó3Ð3ùò XùâDùôs   ·7CÁ?CÂ
"CÂ,CÃCc                óH   € V ^8„  d   QhR\         R\        R\        R\         /# )r   r&   Úkeyrs   r   rt   )r   s   "r   r   r   £   s.   € ÷ @ñ @”uð @¤3ð @¬uð @¼ñ @r   c                 óL  € VR	9   g   Q hW,          pW#,
          pW3.pVR 8X  d3   W R,          8:  g   Q hVP                  RV R,          V,
          34       EMVR8X  d1   W R ,          8¼  g   Q hVP                  RW R ,          ,
          34       MàVR8X  d{   W R,          8:  g   Q hVP                  RV R,          V,           34       VP                  RV R,          V,
          34       RV 9   d"   VP                  RV R,          V,
          34       M_VR8X  dY   W R,          8¼  g   Q hVP                  RV R,          V,           34       RV 9   d"   VP                  RV R,          V,
          34       V P                  \        V P                  4       4      \        V4      ,           4      # )
r    r"   r!   r#   rP   rO   rQ   ry   rx   )r    r"   r!   r#   )Úappendrz   r{   r|   )r&   rŽ   rs   Ú	old_valuerW   r}   s   &&&   r   Úresize_objectr’   £   s  € ØÐ/Ô/Ð/Ð/Ø•€IØÕ€Dà	ˆð€Ið ˆd„{Ø˜D�	Ô!Ð!Ð!Ø×Ñ˜' 3 t¥9¨uÕ#4Ð5Ö6Ø	�ŒØ˜D�	Ô!Ð!Ð!Ø×Ñ˜' 5¨t­9Õ#4Ð5Õ6Ø	�ŒØ˜H�Ô%Ð%Ð%Ø×Ñ˜( C¨¥M°DÕ$8Ð9Ô:Ø×Ñ˜( C¨¥M°DÕ$8Ð9Ô:Ø�3Œ;Ø×Ñ˜d C¨¥I°Õ$4Ð5Ô6øØ	�ŒØ˜E�
Ô"Ð"Ð"Ø×Ñ˜( C¨¥M°DÕ$8Ð9Ô:Ø�3Œ;Ø×Ñ˜d C¨¥I°Õ$4Ð5Ô6Ø�=‰=œ˜sŸy™y›{Ó+¬e°IÓ.>Õ>Ó?Ð?r   c                ó0   € V ^8„  d   QhR\         R\        /# )r   Úcurver   ©r	   r
   )r   s   "r   r   r   ¾   s   € ÷ ñ œ%ð ¤Jñ r   c                 ó   € \        V R ,          V R ,          R,          4      pV UUu. uEF  w  r#RRR\        V^ ,          V^ ,          4      R\        V^ ,          V^ ,          4      R\        V^,          V^,          4      R\        V^,          V^,          4      V R,          V R,          ,
          ,           R\        V^,          V^,          4      R	\        V^ ,          V^ ,          ,
          4      R
\        V^,          V^,          ,
          4      RV^ ,          V^ ,          8X  d   RMV^,          V^,          8X  d   RMR/	NEK  	  upp# u uppi )Úpts:é   NNÚobject_typeÚ
curve_edger    r"   r!   rO   r#   rP   rQ   Úorientationrw   rv   N)r1   r2   r3   Úabs)r”   Úpoint_pairsÚp0Úp1s   &   r   Úcurve_to_edgesr    ¾   s  € Ü�e˜E•l E¨%¥L°Õ$4Ó5€Kñ "ôò "‰FˆBð ˜<Ø”#�b˜•e˜R �UÓ#Ø”#�b˜•e˜R �UÓ#Ø”3�r˜!•u˜b �eÓ$Ø”c˜"˜Q�%  A¥Ó'¨5°­?¸UÀ5½\Õ+IÕJØ”c˜"˜Q�%  A¥Ó'Ø”S˜˜A�  A¥�Ó'Ø”c˜"˜Q�% " Q¥%�-Ó(Ø " Q¥%¨2¨a­5¤.™3¸bÀ½eÀrÈ!Åu¼n±sÐRVô
	
ñ "òð ùó s   §DE
c                ó0   € V ^8„  d   QhR\         R\        /# )r   Úrectr   r•   )r   s   "r   r   r   Ð   s   € ÷ %&ñ %&œð %&¤*ñ %&r   c                 óÐ  € \        ^4       Uu. uF  p\        V 4      NK  	  upw  r#rEVP                  RRR^ RV R,          RV R,          RR	/4       VP                  RRR^ RV R,          RV R,          V R,          ,           R
V R
,          V R,          ,           RR	/4       VP                  RRR^ RV R,          RR/4       VP                  RRR^ RV R,          RR/4       W#WE.# u upi )é   r™   Ú	rect_edgerQ   rx   ry   r#   r!   r›   rv   rO   rP   r"   r    rw   )ÚrangerR   Úupdate)r¢   Úxr!   r#   rJ   rK   s   &     r   Úrect_to_edgesr©   Ð   s  € Ü49¸!´HÓ=±H¨q¤ T¦
±HÑ=Ñ€C�Ø‡J�Jà˜;Ø�aØ�$�t•*Ø�d˜5•kØ˜3ð	
ôð ‡M�Mà˜;Ø�aØ�$�t•*Ø�4˜•;  h¥Õ/Ø�d˜8•n t¨H¥~Õ5Ø˜3ð	
ô	ð 	‡K�Kà˜;Ø�QØ�$�t•*Ø˜3ð		
ôð 
‡L�Là˜;Ø�QØ�$�t•*Ø˜3ð		
ôð ˜Ð%Ð%ùòI  >s   ŽC#c                ó0   € V ^8„  d   QhR\         R\         /# )r   Úliner   )r	   )r   s   "r   r   r   ø   s   € ÷ ñ ”uð ¤ñ r   c                 óT   € \        V 4      pV R ,          V R,          8X  d   RMRVR&   V# )r!   r#   rv   rw   r›   )rR   )r«   Úedges   & r   Úline_to_edger®   ø   s+   € Ü�‹:€DØ"& u¥+°°hµÔ"?™#Àc€DˆÑØ€Kr   c                ó0   € V ^8„  d   QhR\         R\        /# r%   r•   )r   s   "r   r   r   þ   s   € ÷ Hñ H”eð H¤
ñ Hr   c                 ó„   € V R ,          pRV9   d   V .# VR8X  d   \        V 4      .# R\        R\        /V,          ! V 4      # )r™   Ú_edger«   r¢   r”   )r®   r©   r    )r&   Úts   & r   Úobj_to_edgesr³   þ   sH   € ØˆMÕ€AØ�!„|ØˆuˆØ	
ˆfŒÜ˜SÓ!Ð"Ð"àœ w´Ð?ÀÖBÀ3ÓGÐGr   c          
      ó–   € V ^8„  d   QhR\         \        ,          R\        \        ,          R\        \        ,          R\        R\
        /# )r   Úedgesr›   Ú	edge_typeÚ
min_lengthr   )r   r	   r   r   r   r
   )r   s   "r   r   r     sF   € ÷ %ñ %Ü”E�?ð%äœ#•ð%ô œ�}ð%ô ð	%ô
 ñ%r   c                 ój   aaa€ SR9  d   \        R4      hR VVV3R llp\        \        W@4      4      # )rw   zOrientation must be 'v' or 'h'c                ó0   € V ^8„  d   QhR\         R\        /# )r   Úer   )r	   Úbool)r   s   "r   r   Ú"filter_edges.<locals>.__annotate__  s   € ÷ Nñ N”ð Nœ$ñ Nr   c                 óÌ   <€ V R ,          R8X  d   RMRpSe   V R,          S8H  MRpSRJ ;'       g    V R ,          S8H  p\        T;'       d    T;'       d    W,          S8¬  4      # )r›   rw   rQ   rP   Nr™   T)r»   )rº   ÚdimÚ
et_correctÚorient_correctr¶   r·   r›   s   &   €€€r   ÚtestÚfilter_edges.<locals>.test  sk   ø€ Ø˜MÕ*¨cÔ1‰h°wˆØ6?Ò6K�Q�}Õ%¨Ò2ÐQUˆ
Ø$¨Ð,×OÐO°°-Õ0@ÀKÑ0OˆÜ�J×LÐL >×LÐL°qµvÀÑ7KÓMÐMr   )rw   rv   N)rI   rn   ro   )rµ   r›   r¶   r·   rÁ   s   &fff r   Úfilter_edgesrÃ     s8   ú€ ð Ð*Ô*ÜÐ9Ó:Ð:÷Nò Nô ”�tÓ#Ó$Ð$r   )NNr˜   )#r„   Úoperatorr   Útypingr   r   r   Ú_typingr   r   r	   r
   Ú
clusteringr   r   r   r   r)   r   r   rF   rL   rX   r`   rd   rg   rp   r~   rŒ   r’   r    r©   r®   r³   rÃ   r-   r   r   Ú<module>rÈ      s�   ðÛ Ý ß +Ñ +ç 6Ó 6Ý 'õ2õ3ñ ˜˜u d¨HÓ5€õõMõ5õõ+õõ(YõõUõEõ@õ,	4õ@õ6õ$%&õPõH÷%ñ %r   