+
    ÂHàjOŠ  ã                  óF  a € 0 t $ ^ RIHt RR0t^ RIt^ RIt^ RIHt ^RIH	t	H
t
HtHt Rt]'       d%   ^ 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 ]	P2                  P4                  tR]R&     ! R R4      tRR R lltRR R lltRR R llt R R lt!R R lt"R# )é    )ÚannotationsÚmathÚstructN)Úcast)ÚImageÚ
ImageColorÚ	ImageFontÚ	ImageTextF)ÚCallableÚSequence)Ú
ModuleType)ÚAnyÚAnyStr©Ú
ImageDraw2)ÚCoordsÚ_Inkz!Callable[[], Image.core._Outline]ÚOutlinec                  ó²  € ] tR t^>t$ RtR]R&   R5R R lltR R ltR R	 ltR5R
 R llt	R6R R llt
R5R R lltR7R R lltR7R R lltR7R R lltR R ltR8R R lltR9R R lltR7R R lltR5R R lltR7R  R! lltR:R" R# lltR7R$ R% lltR:R&R/R' R( llltR;R) R* lltR;R+R/R, R- llltR<R+R/R. R/ llltR=R+R/R0 R1 llltR=R+R/R2 R3 llltR4tR# )>Ú	ImageDrawNúImageFont.BaseImageFont | NoneÚfontc               ó$   € V ^8„  d   QhRRRRRR/# )é   ÚimúImage.ImageÚmodeú
str | NoneÚreturnÚNone© )Úformats   "Ú�/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/venv/lib/python3.14/site-packages/PIL/ImageDraw.pyÚ__annotate__ÚImageDraw.__annotate__A   s!   € ÷ &ñ &˜;ð &¨jð &ÀDñ &ó    c                ó\  € VP                  4        ^ pVf   VP                  pW!P                  8w  d)   VR8X  d   VP                  R8X  d   ^pMRp\        V4      hVR8X  d   VP                  V n        MRV n        Wn        VP
                  V n        \        P                  P                  V P
                  V4      V n        W n        VR	9   d"   V P                  P                  ^4      V n
        M V P                  P                  R
4      V n
        VR9   d	   RV n        MRV n        RV n        R# )aX  
Create a drawing instance.

:param im: The image to draw in.
:param mode: Optional mode to use for color values.  For RGB
   images, this argument can be RGB or RGBA (to blend the
   drawing into the image).  For all other modes, this argument
   must be the same as the image mode.  If omitted, the mode
   defaults to the mode of the image.
NÚRGBAÚRGBzmode mismatchÚPÚ1ÚLF)ÚIÚFéÿÿÿÿ)r+   r*   r-   r.   )Ú_ensure_mutabler   Ú
ValueErrorÚpaletteÚ_imager   r   ÚcoreÚdrawÚdraw_inkÚinkÚfontmodeÚfill)Úselfr   r   ÚblendÚmsgs   &&&  r#   Ú__init__ÚImageDraw.__init__A   sì   € ð 	×ÑÔØˆØŠ<Ø—7‘7ˆDØ—7‘7Œ?Ø�vŒ~ "§'¡'¨UÔ"2Ø‘à%�Ü  “oÐ%Ø�3Œ;ØŸ:™:ˆD�LàˆDŒLØŒØ—%‘%ˆŒÜ—J‘J—O‘O D§G¡G¨UÓ3ˆŒ	ØŒ	Ø�:ÔØ—y‘y×)Ñ)¨!Ó,ˆD�Hà—y‘y×)Ñ)¨"Ó-ˆDŒHØÐ'Ô'àˆD�MàˆDŒMØˆŽ	r&   c               ó   € V ^8„  d   QhRR/# )r   r   úImageFont.BaseImageFontr!   )r"   s   "r#   r$   r%   i   s   € ÷ ñ à	 ñr&   c                ór   € V P                   '       g   \        P                  ! 4       V n         V P                   # )aí  
Get the current default font.

To set the default font for this ImageDraw instance::

    from PIL import ImageDraw, ImageFont
    draw.font = ImageFont.truetype("Tests/fonts/FreeMono.ttf")

To set the default font for all future ImageDraw instances::

    from PIL import ImageDraw, ImageFont
    ImageDraw.ImageDraw.font = ImageFont.truetype("Tests/fonts/FreeMono.ttf")

If the current default font is ``None``,
it is initialized with ``ImageFont.load_default()``.

:returns: An image font.)r   r	   Úload_default)r:   s   &r#   ÚgetfontÚImageDraw.getfonti   s'   € ð( �y�yˆyä!×.Ò.Ó0ˆDŒIØ�y‰yÐr&   c               ó    € V ^8„  d   QhRRRR/# )r   Ú	font_sizeúfloat | Noner   r@   r!   )r"   s   "r#   r$   r%   ‚   s   € ÷ "ñ " ,ð "Ð3Jñ "r&   c                	óV   € Ve   \         P                  ! V4      # V P                  4       # ©N)r	   rB   rC   )r:   rF   s   &&r#   Ú_getfontÚImageDraw._getfont‚   s%   € ØÒ Ü×)Ò)¨)Ó4Ð4à—<‘<“>Ð!r&   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r7   ú_Ink | Noner9   r   ztuple[int | None, int | None]r!   )r"   s   "r#   r$   r%   ˆ   s$   € ÷ 'ñ 'Øð'Ø&1ð'à	&ñ'r&   c                	ó
  € R pR pVf6   Vf2   V P                   '       d   V P                  pW43# V P                  p W43# VeŸ   \        V\        4      '       d!   \        P
                  ! WP                  4      pV P                  '       d<   \        V\        4      '       d&   V P                  P                  WP                  4      pV P                  P                  V4      pVeŸ   \        V\        4      '       d!   \        P
                  ! W P                  4      pV P                  '       d<   \        V\        4      '       d&   V P                  P                  W P                  4      pV P                  P                  V4      pW43# rI   )r9   r7   Ú
isinstanceÚstrr   Úgetcolorr   r2   Útupler3   r5   r6   )r:   r7   r9   Ú
result_inkÚresult_fills   &&&  r#   Ú_getinkÚImageDraw._getinkˆ   s$  € ð ˆ
ØˆØŠ;˜4š<Ø�y�yˆyØ"Ÿh™h�ð  Ð&Ð&ð "ŸX™X‘
ð Ð&Ð&ð ŠÜ˜c¤3×'Ò'Ü$×-Ò-¨c·9±9Ó=�CØ—<—<�<¤J¨s´E×$:Ò$:ØŸ,™,×/Ñ/°·[±[ÓA�CØ!ŸY™Y×/Ñ/°Ó4�
ØÒÜ˜d¤C×(Ò(Ü%×.Ò.¨t·Y±YÓ?�DØ—<—<�<¤J¨t´U×$;Ò$;ØŸ<™<×0Ñ0°·{±{ÓC�DØ"Ÿi™i×0Ñ0°Ó6�ØÐ&Ð&r&   c               ó0   € V ^8„  d   QhRRRRRRRRRR	R
R/# )r   Úxyr   ÚstartÚfloatÚendr9   rM   ÚwidthÚintr   r    r!   )r"   s   "r#   r$   r%   ¡   sF   € ÷ ;ñ ;àð;ð ð;ð ð	;ð
 ð;ð ð;ð 
ñ;r&   c                ó„   € V P                  V4      w  rdVe)   V^ 8w  d    V P                  P                  WW6V4       R# R# R# )zDraw an arc.N)rU   r5   Údraw_arc)r:   rX   rY   r[   r9   r\   r7   s   &&&&&& r#   ÚarcÚImageDraw.arc¡   s<   € ð —L‘L Ó&‰	ˆØŠ?˜u¨œzØ�I‰I×Ñ˜r¨#°EÖ:ñ  *‰?r&   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   rX   zSequence[int]Úbitmapr   r9   rM   r   r    r!   )r"   s   "r#   r$   r%   ®   s,   € ÷ 	6ñ 	6Øð	6Ø)4ð	6Ø<Gð	6à	ñ	6r&   c                ó°   € VP                  4        V P                  V4      w  rCVf   TpVe)   V P                  P                  WP                  V4       R# R# )zDraw a bitmap.N)ÚloadrU   r5   Údraw_bitmapr   )r:   rX   rc   r9   r7   s   &&&& r#   rc   ÚImageDraw.bitmap®   sI   € ð 	�‰ŒØ—L‘L Ó&‰	ˆØŠ;ØˆCØŠ?Ø�I‰I×!Ñ! "§i¡i°Ö5ñ r&   c               ó4   € V ^8„  d   QhRRRRRRRRRRR	R
RR/# ©r   rX   r   rY   rZ   r[   r9   rM   Úoutliner\   r]   r   r    r!   )r"   s   "r#   r$   r%   ¹   sY   € ÷ @ñ @àð@ð ð@ð ð	@ð
 ð@ð ð@ð ð@ð 
ñ@r&   c                óØ   € V P                  WT4      w  rxVe   V P                  P                  WW8^4       Ve2   Wx8w  d*   V^ 8w  d!   V P                  P                  WW7^ V4       R# R# R# R# )zDraw a chord.N)rU   r5   Ú
draw_chord©	r:   rX   rY   r[   r9   rj   r\   r7   Úfill_inks	   &&&&&&&  r#   ÚchordÚImageDraw.chord¹   s`   € ð Ÿ™ WÓ3‰ˆØÒØ�I‰I× Ñ  ¨C¸1Ô=ØŠ?˜sœ°5¸A´:Ø�I‰I× Ñ  ¨C°a¸Ö?ñ 4>™‰?r&   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# ©
r   rX   r   r9   rM   rj   r\   r]   r   r    r!   )r"   s   "r#   r$   r%   É   s<   € ÷ 6ñ 6àð6ð ð6ð ð	6ð
 ð6ð 
ñ6r&   c                óÔ   € V P                  W24      w  rVVe   V P                  P                  W^4       Ve1   WV8w  d)   V^ 8w  d    V P                  P                  W^ V4       R# R# R# R# )zDraw an ellipse.N)rU   r5   Údraw_ellipse©r:   rX   r9   rj   r\   r7   rn   s   &&&&&  r#   ÚellipseÚImageDraw.ellipseÉ   s\   € ð Ÿ™ WÓ3‰ˆØÒØ�I‰I×"Ñ" 2°Ô3ØŠ?˜sœ°5¸A´:Ø�I‰I×"Ñ" 2¨A¨uÖ5ñ 4>™‰?r&   c               ó0   € V ^8„  d   QhRRRRRRRRRR	R
R/# )r   rX   úSequence[float]ÚradiusrZ   r9   rM   rj   r\   r]   r   r    r!   )r"   s   "r#   r$   r%   ×   sF   € ÷ 
7ñ 
7àð
7ð ð
7ð ð	
7ð
 ð
7ð ð
7ð 
ñ
7r&   c                ó¦   € V^ ,          V,
          V^,          V,
          V^ ,          V,           V^,          V,           3pV P                  WcWE4       R# )z4Draw a circle given center coordinates and a radius.N)rv   )r:   rX   rz   r9   rj   r\   Ú
ellipse_xys   &&&&&& r#   ÚcircleÚImageDraw.circle×   s@   € ð ˜•e˜f•n b¨¥e¨f¥n°b¸µe¸fµnÀbÈÅeÈfÅnÐUˆ
Ø�‰�Z wÖ6r&   c               ó    € V ^8„  d   QhRRRR/# )r   rX   r   r   úSequence[Sequence[float]]r!   )r"   s   "r#   r$   r%   ã   s   € ÷ ñ  Fð Ð/Hñ r&   c                óî   € \        V^ ,          \        \        34      '       d   \        RV4      # \	        ^ \        V4      ^4       Uu. uF!  p\        R\        WV^,            4      4      NK#  	  up# u upi )z=Normalize 1 or 2 dimensional coord sequence into 2d sequence.r€   ry   )rO   ÚlistrR   r   ÚrangeÚlen)r:   rX   Úis   && r#   Ú_normalize_coordsÚImageDraw._normalize_coordsã   sn   € ä�b˜•eœd¤E˜]×+Ò+ÜÐ3°RÓ8Ð8ô ˜q¤# b£'¨1Ô-óá-�Aô Ð&¬¨b°Q¸µU¨mÓ(<Ö=Ù-ñð ùò s   Á'A2c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r   rX   r   r9   rM   r\   r]   Újointr   r   r    r!   )r"   s   "r#   r$   r%   í   sC   € ÷ D=ñ D=àðD=ð ðD=ð ð	D=ð
 ðD=ð 
ñD=r&   c                óD  a€ V P                  V4      ^ ,          pVEeü   S^ 8w  Edò   V P                  P                  WS4       VR8X  EdÌ   S^8”  EdÂ   V P                  V4      p\	        ^\        V4      ^,
          4       EF�  pWg,          pWg^,
          ,          V3W†V^,           ,          33 U	U
u. uFa  w  rš\        P                  ! \        P                  ! V
^ ,          V	^ ,          ,
          V	^,          V
^,          ,
          4      4      R,          NKc  	  pp	p
V^ ,          V^,          8X  d   K²  R V3R llpV^,          V^ ,          8„  ;'       d#    V^,          ^´,
          V^ ,          8„  ;'       g6    V^,          V^ ,          8  ;'       d    V^,          ^´,           V^ ,          8„  pV^ ,          S^,          ,
          ^,           V^,          S^,          ,
          ^,           3V^ ,          S^,          ,           ^,
          V^,          S^,          ,           ^,
          3.pV'       d!   V^,          ^Z,           V^ ,          ^Z,           r©MV^ ,          ^Z,
          V^,          ^Z,
          r©V P                  Wé^Z,
          V
^Z,
          V4       S^8”  g   EK  V'       d/   V! W‹^ ,          ^Z,           4      VV! W‹^,          ^Z,           4      .pM-V! W‹^ ,          ^Z,
          4      VV! W‹^,          ^Z,
          4      .pV P                  Wò^R7       EK�  	  R# R# R# R# R# u up
p	i )z6Draw a line, or a connected sequence of line segments.NÚcurveéh  c               ó$   € V ^8„  d   QhRRRRRR/# )r   Úcoordry   ÚanglerZ   r   ztuple[float, ...]r!   )r"   s   "r#   r$   Ú$ImageDraw.line.<locals>.__annotate__  s$   € ÷ ñ Ø.ðØ7<ðà*ñr&   c                ó  <€ V w  r#V^Z,          pS^,          ^,
          p\         ;QJ dv    . R W$\        P                  ! \        P                  ! V4      4      ,          3W4\        P                  ! \        P                  ! V4      4      ,          33 4       F  NK  	  5# ! R W$\        P                  ! \        P                  ! V4      4      ,          3W4\        P                  ! \        P                  ! V4      4      ,          33 4       4      # )éZ   c              3  ó˜   "  € T F@  w  rY^ 8”  d   \         P                  ! V4      M\         P                  ! V4      ,           x € KB  	  R# 5i)r   N)r   ÚfloorÚceil)Ú.0ÚpÚp_ds   &  r#   Ú	<genexpr>Ú9ImageDraw.line.<locals>.coord_at_angle.<locals>.<genexpr>  s;   é € ð %ñ+¡ ð ¸!´G¤§¢¨C¤ÄÇÂÈ3Ã×PÒPó+ùs   ‚AA
)rR   r   ÚcosÚradiansÚsin)rŽ   r�   ÚxÚyÚdistancer\   s   &&   €r#   Úcoord_at_angleÚ&ImageDraw.line.<locals>.coord_at_angle  sÐ   ø€ ð  %™˜Ø �˜Ø#(¨1¥9¨q¥=˜ß$œuñ %ð "#¬t¯xªx¼¿ºÀUÓ8KÓ/LÕ$LÐ MØ!"¬t¯xªx¼¿ºÀUÓ8KÓ/LÕ$LÐ Mñ+ó%Ÿuð ˜uñ %ð "#¬t¯xªx¼¿ºÀUÓ8KÓ/LÕ$LÐ MØ!"¬t¯xªx¼¿ºÀUÓ8KÓ/LÕ$LÐ Mñ+ó%ó  ð r&   )r\   )rU   r5   Ú
draw_linesr†   rƒ   r„   r   ÚdegreesÚatan2ÚpiesliceÚline)r:   rX   r9   r\   r‰   r7   Úpointsr…   ÚpointrY   r[   Úanglesr¡   ÚflippedÚcoordsÚ
gap_coordss   &&&f&           r#   r§   ÚImageDraw.lineí   s®  ø€ ð �l‰l˜4Ó  Õ#ˆØ‹?˜u¨�zØ�I‰I× Ñ  ¨%Ô0Ø˜Õ E¨A¥IØ×/Ñ/°Ó3�Ü˜q¤# f£+°¥/×2�AØ"�I�Eð
 $¨¥E�]¨EÐ2Ø"¨1¨q­5¥MÐ2ñ+ôñ+™J˜Eô Ÿš¤T§Z¢Z°°Aµ¸¸q½Õ0AÀ5ÈÅ8ÈcÐRSÍfÕCTÓ%UÓVØ÷ð ñ+ð ñ ð ˜a•y F¨1¥IÔ-á ÷ð ð ˜q�	 F¨1¥IÑ-×MÐM°&¸µ)¸cµ/ÀFÈ1ÅIÑ2M÷Qð Qà  �) f¨Q¥iÑ/×OÐO°F¸1µIÀµOÀfÈQÅiÑ4Oð ð ˜q� E¨A¥IÕ-°Õ1°5¸µ8¸eÀa½iÕ3GÈ!Õ3KÐLØ˜q� E¨A¥IÕ-°Õ1°5¸µ8¸eÀa½iÕ3GÈ!Õ3KÐLð�F÷ Ø&,¨Q¥i°"¥n°f¸QµiÀ"µn™sà&,¨Q¥i°"¥n°f¸QµiÀ"µn˜sØ—M‘M &°"­*°c¸BµhÀÔEà˜q—yç"á .¨u¸QµiÀ"µnÓ EØ %Ù .¨u¸QµiÀ"µnÓ Eð*™Jñ !/¨u¸QµiÀ"µnÓ EØ %Ù .¨u¸QµiÀ"µnÓ Eð*˜Jð
 Ÿ	™	 *¸!˜	×<óo 3ñ %.Ññ  *‰?ùós   Â1A'Lc               ó(   € V ^8„  d   QhRRRRRRRR/# )r   ÚshapezImage.core._Outliner9   rM   rj   r   r    r!   )r"   s   "r#   r$   r%   3  s2   € ÷ 2ñ 2à"ð2ð ð2ð ð	2ð
 
ñ2r&   c                óà   € VP                  4        V P                  W24      w  rEVe   V P                  P                  W^4       Ve'   WE8w  d   V P                  P                  W^ 4       R# R# R# )z(Experimental) Draw a shape.N)ÚcloserU   r5   Údraw_outline)r:   r°   r9   rj   r7   rn   s   &&&&  r#   r°   ÚImageDraw.shape3  s[   € ð 	�‰ŒØŸ™ WÓ3‰ˆØÒØ�I‰I×"Ñ" 5°AÔ6ØŠ?˜sœØ�I‰I×"Ñ" 5¨qÖ1ñ  /‰?r&   c               ó4   € V ^8„  d   QhRRRRRRRRRRR	R
RR/# ri   r!   )r"   s   "r#   r$   r%   A  sY   € ÷ Cñ CàðCð ðCð ð	Cð
 ðCð ðCð ðCð 
ñCr&   c                óØ   € V P                  WT4      w  rxVe   V P                  P                  WW8^4       Ve2   Wx8w  d*   V^ 8w  d!   V P                  P                  WW7^ V4       R# R# R# R# )zDraw a pieslice.N)rU   r5   Údraw_pieslicerm   s	   &&&&&&&  r#   r¦   ÚImageDraw.piesliceA  s`   € ð Ÿ™ WÓ3‰ˆØÒØ�I‰I×#Ñ# B¨s¸aÔ@ØŠ?˜sœ°5¸A´:Ø�I‰I×#Ñ# B¨s¸¸EÖBñ 4>™‰?r&   c               ó$   € V ^8„  d   QhRRRRRR/# )r   rX   r   r9   rM   r   r    r!   )r"   s   "r#   r$   r%   Q  s!   € ÷ +ñ +˜ð + kð +¸Tñ +r&   c                ón   € V P                  V4      w  r2Ve   V P                  P                  W4       R# R# )z#Draw one or more individual pixels.N)rU   r5   Údraw_points)r:   rX   r9   r7   s   &&& r#   r©   ÚImageDraw.pointQ  s.   € à—L‘L Ó&‰	ˆØŠ?Ø�I‰I×!Ñ! "Ö*ñ r&   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# rr   r!   )r"   s   "r#   r$   r%   W  sC   € ÷ Kñ KàðKð ðKð ð	Kð
 ðKð 
ñKr&   c                óF  € V P                  W24      w  rVVe   V P                  P                  W^4       Veê   WV8w  dâ   V^ 8w  dÙ   V^8X  d    V P                  P                  W^ V4       R# V P                  e£   \        P
                  ! RV P                  P                  4      pV P                  ^4      ^ ,          p\        V4      p	V	P                  P                  W^4       V P                  P                  W^ V^,          ^,
          VP                  4       R# R# R# R# R# )zDraw a polygon.Nr+   )rU   r5   Údraw_polygonr   r   ÚnewÚsizeÚDraw)
r:   rX   r9   rj   r\   r7   rn   ÚmaskÚmask_inkr5   s
   &&&&&     r#   ÚpolygonÚImageDraw.polygonW  sß   € ð Ÿ™ WÓ3‰ˆØÒØ�I‰I×"Ñ" 2°Ô3ØŠ?˜sœ°5¸A´:Ø˜ŒzØ—	‘	×&Ñ& r°°5Ö9Ø—‘Ò$ô —y’y  d§g¡g§l¡lÓ3�ØŸ<™<¨›?¨1Õ-�Ü˜D“z�Ø—	‘	×&Ñ& r°QÔ7à—	‘	×&Ñ& r°°5¸1µ9¸qµ=À$Ç'Á'ÖJñ %ñ 4>™‰?r&   c               ó4   € V ^8„  d   QhRRRRRRRRR	RR
RRR/# )r   Úbounding_circleú!Sequence[Sequence[float] | float]Ún_sidesr]   ÚrotationrZ   r9   rM   rj   r\   r   r    r!   )r"   s   "r#   r$   r%   o  sP   € ÷ /ñ /à:ð/ð ð/ð ð	/ð
 ð/ð ð/ð ð/ð 
ñ/r&   c                óB   € \        WV4      pV P                  WtWV4       R# )zDraw a regular polygon.N)Ú!_compute_regular_polygon_verticesrÅ   )r:   rÈ   rÊ   rË   r9   rj   r\   rX   s   &&&&&&& r#   Úregular_polygonÚImageDraw.regular_polygono  s   € ô /¨ÈÓRˆØ�‰�R˜wÖ.r&   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# rr   r!   )r"   s   "r#   r$   r%   |  s<   € ÷ 8ñ 8àð8ð ð8ð ð	8ð
 ð8ð 
ñ8r&   c                óÔ   € V P                  W24      w  rVVe   V P                  P                  W^4       Ve1   WV8w  d)   V^ 8w  d    V P                  P                  W^ V4       R# R# R# R# )zDraw a rectangle.N)rU   r5   Údraw_rectangleru   s   &&&&&  r#   Ú	rectangleÚImageDraw.rectangle|  s\   € ð Ÿ™ WÓ3‰ˆØÒØ�I‰I×$Ñ$ R°1Ô5ØŠ?˜sœ°5¸A´:Ø�I‰I×$Ñ$ R¨a°Ö7ñ 4>™‰?r&   Úcornersc               ó4   € V ^8„  d   QhRRRRRRRRRR	R
RRR/# )r   rX   r   rz   rZ   r9   rM   rj   r\   r]   rÕ   z$tuple[bool, bool, bool, bool] | Noner   r    r!   )r"   s   "r#   r$   r%   Š  sY   € ÷ G8ñ G8àðG8ð ðG8ð ð	G8ð
 ðG8ð ðG8ð 6ðG8ð 
ñG8r&   c               óF  a aaaaaaaaaaa€ S P                  V4      w  w  oow  ooSS8  d   Rp\        V4      hSS8  d   Rp\        V4      hSf   Ro\        SS,
          SS,
          V^,          4      o\        S4      o\        S4      o\        S4      o\        S4      oRRuoo\	        S4      '       dl   SSS,
          ^,
          8¬  oS'       d
   SS,
          oSSS,
          ^,
          8¬  oS'       d
   SS,
          oS'       d   S'       d   S P                  WVS4      # S^ 8X  g   \        S4      '       g   S P                  WVS4      # \        S^,          4      pS P                  WC4      w  ooR VVVVVVV VVVVV3R llp	SEeÁ   V	! R4       S'       d?   S P                  P                  SSV,           ^,           SSV,
          ^,
          3S^4       M`SV,
          ^,
          SV,           ^,           8¼  d>   S P                  P                  SV,           ^,           SSV,
          ^,
          S3S^4       S'       Eg
   S'       Eg   SSSV,           S.p
S^ ,          '       d   V
^;;,          V^,           ,          uu&   S^,          '       d   V
^;;,          V^,           ,          uu&   S P                  P                  V
S^4       SV,
          SSS.pS^,          '       d   V^;;,          V^,           ,          uu&   S^,          '       d   V^;;,          V^,           ,          uu&   S P                  P                  VS^4       SEeO   SS8w  EdE   S^ 8w  Ed;   V	! R4       S'       Eg   SSSSS,           ^,
          .pS^ ,          '       d   V^ ;;,          V^,           ,          uu&   S^,          '       d   V^;;,          V^,           ,          uu&   S P                  P                  VS^4       SSS,
          ^,           SS.pS^,          '       d   V^ ;;,          V^,           ,          uu&   S^,          '       d   V^;;,          V^,           ,          uu&   S P                  P                  VS^4       S'       Eg   SSSS,           ^,
          S.p
S^ ,          '       d   V
^;;,          V^,           ,          uu&   S^,          '       d   V
^;;,          V^,           ,          uu&   S P                  P                  V
S^4       SS,
          ^,           SSS.pS^,          '       d   V^;;,          V^,           ,          uu&   S^,          '       d   V^;;,          V^,           ,          uu&   S P                  P                  VS^4       R# R# R# R# R# )	zDraw a rounded rectangle.z&x1 must be greater than or equal to x0z&y1 must be greater than or equal to y0NTFc               ó    € V ^8„  d   QhRRRR/# )r   r¦   Úboolr   r    r!   )r"   s   "r#   r$   Ú1ImageDraw.rounded_rectangle.<locals>.__annotate__¼  s   € ÷  	?ñ  	? 4ð  	?¨Dñ  	?r&   c                ó€  <€ S'       d1   SSSS,           SS,           3^´R3SSS,
          SS,           S3^ ^´33pEM+S'       d0   SSSS,           SS,           3^ZR3SS,
          SSSS,           3R^Z33pMô\         ;QJ dx    . V3R l\        SSSS,           SS,           3^´R3SS,
          SSSS,           3RR3SS,
          SS,
          SS3^ ^Z3SSS,
          SS,           S3^Z^´334       4       F  NK  	  5Mq! V3R l\        SSSS,           SS,           3^´R3SS,
          SSSS,           3RR3SS,
          SS,
          SS3^ ^Z3SSS,
          SS,           S3^Z^´334       4       4      pV FS  pV '       d&   S	P                  P                  ! VS^3,           !   K0  S	P                  P                  ! VSS
3,           !   KU  	  R# )é´   rŒ   é  c              3  óN   <"  € T F  w  rSV,          '       g   K  Vx € K  	  R # 5irI   r!   )r–   r…   ÚpartrÕ   s   &  €r#   r™   ÚDImageDraw.rounded_rectangle.<locals>.draw_corners.<locals>.<genexpr>Ì  s+   øé € ð ñ$™˜ð ˜q—z‘z÷ ’Dó$ùs   ƒ%›
%N)rR   Ú	enumerater5   r·   r_   )r¦   Úpartsrß   rÕ   Údrn   Úfull_xÚfull_yr7   r:   r\   Úx0Úx1Úy0Úy1s   &  €€€€€€€€€€€€r#   Údraw_cornersÚ1ImageDraw.rounded_rectangle.<locals>.draw_corners¼  sæ  ø€ çð ˜"˜b 1�f b¨1¥fÐ-¨s°CÐ8Ø˜"˜q�& " q¥&¨"Ð-¨q°#Ð6ð’÷ ð ˜"˜b 1�f b¨1¥fÐ-¨r°3Ð7Ø˜1•f˜b " b¨1¥fÐ-¨s°BÐ7ð‘÷ œô ä#,à  " b¨1¥f¨b°1­fÐ5°s¸CÐ@Ø  1�f b¨"¨b°1­fÐ5°s¸CÐ@Ø  1�f b¨1¥f¨b°"Ð5°q¸"Ð=Ø  " q¥&¨"¨q­&°"Ð5°r¸3Ð?ð	ô$óŸ™ô ä#,à  " b¨1¥f¨b°1­fÐ5°s¸CÐ@Ø  1�f b¨"¨b°1­fÐ5°s¸CÐ@Ø  1�f b¨1¥f¨b°"Ð5°q¸"Ð=Ø  " q¥&¨"¨q­&°"Ð5°r¸3Ð?ð	ô$óó �ó �ßØ—I‘I×+Ò+¨d°hÀ°]Õ.BÔDà—I‘I×&Ò&¨°°e°Õ)<Ô>ó	 r&   )TTTT)r†   r1   ÚminÚroundÚallrv   ÚanyrÓ   r]   rU   r5   rÒ   )r:   rX   rz   r9   rj   r\   rÕ   r<   Úrrê   ÚleftÚrightÚtopÚbottomrã   rn   rä   rå   r7   ræ   rç   rè   ré   s   f&&&&fd       @@@@@@@@@r#   Úrounded_rectangleÚImageDraw.rounded_rectangleŠ  sY  ÿû€ ð "×3Ñ3°BÓ7Ñ‰ˆˆR‘(�2�rØ�Œ7Ø:ˆCÜ˜S“/Ð!Ø�Œ7Ø:ˆCÜ˜S“/Ð!ØŠ?Ø.ˆGä��R•˜˜b� &¨1¥*Ó-ˆä�2‹YˆÜ�2‹YˆÜ�2‹YˆÜ�2‹YˆØ ˆˆ�Üˆw�<Š<Ø˜"˜r�' A�+Ñ%ˆFßà˜•G�Ø˜"˜r�' A�+Ñ%ˆFßà˜•G�ßŸ&à—|‘| B¨g°uÓ=Ð=à�Œ6œ˜WŸšð —>‘> "¨G°UÓ;Ð;ä��Q•‹KˆØŸ™ WÓ3‰ˆˆX÷ 	?÷  	?ó  	?ðD ÓÙ˜ÔçØ—	‘	×(Ñ(¨"¨b°1­f°q­j¸"¸bÀ1½fÀq½jÐ)IÈ8ÐUVÕWØ�a•˜!•˜r A�v¨�zÔ)Ø—	‘	×(Ñ(¨"¨q­&°1­*°b¸"¸q½&À1½*ÀbÐ)IÈ8ÐUVÔWß�6§& &Ø˜B  Q¥¨Ð+�Ø˜1—:”:Ø˜—G˜q 1�uÕ$“GØ˜1—:”:Ø˜—G˜q 1�uÕ$“GØ—	‘	×(Ñ(¨¨x¸Ô;à˜a�  R¨Ð,�Ø˜1—:”:Ø˜!—H  A¥Õ%“HØ˜1—:”:Ø˜!—H  A¥Õ%“HØ—	‘	×(Ñ(¨°¸!Ô<Ø‹?˜s h�°5¸Aµ:Ù˜Ôç�6Ø˜2˜r 2¨¥:°¥>Ð2�Ø˜1—:”:Ø˜—F˜a !�e•O“FØ˜1—:”:Ø˜—F˜a !�e•O“FØ—	‘	×(Ñ(¨¨c°1Ô5à˜b 5�j¨1�n¨b°"Ð5�Ø˜1—:”:Ø˜1—I  Q¥Õ&“IØ˜1—:”:Ø˜1—I  Q¥Õ&“IØ—	‘	×(Ñ(¨°°aÔ8ß�6Ø˜B  U¥
¨Q¥°Ð3�Ø˜1—:”:Ø˜—G˜q 1�uÕ$“GØ˜1—:”:Ø˜—G˜q 1�uÕ$“GØ—	‘	×(Ñ(¨¨s°AÔ6à˜e� a�¨¨R°Ð4�Ø˜1—:”:Ø˜!—H  A¥Õ%“HØ˜1—:”:Ø˜!—H  A¥Õ%“HØ—	‘	×(Ñ(¨°°QÖ7ñ ñ# 4>™‰?r&   c                óX   € V ^8„  d   QhRRRRRRRRR	R
RRRRRR
RRRR
RRRRRRRRRRRR/# )r   rX   útuple[float, float]ÚtextzAnyStr | ImageText.Text[AnyStr]r9   rM   r   r   Úanchorr   ÚspacingrZ   ÚalignrP   Ú	directionÚfeaturesúlist[str] | NoneÚlanguageÚstroke_widthÚstroke_fillÚembedded_colorrÙ   Úargsr   Úkwargsr   r    r!   )r"   s   "r#   r$   r%     s¼   € ÷ uñ uàðuð .ðuð ð	uð
 -ðuð ðuð ðuð ðuð ðuð #ðuð ðuð ðuð !ðuð ðuð ðuð  ð!uð" 
ñ#ur&   c                ó¨  a aa	a
aaaaa€ \        V\        P                  4      '       d   VoMzVf!   S P                  SP	                  R4      4      p\        P                  ! W$S P
                  VSS	S
4      oS'       d   SP                  4        V'       d   SP                  W¼4       R V 3R llpV! V4      pVf   R# RpSP                  '       d#   SP                  e   V! SP                  4      MTpSP                  WV4       FH  oRR VVVV	VVV
VV 3	R lllpVe'   V! VSP                  4       VV8w  d   V! V4       K>  K@  V! V4       KJ  	  R# )z
Draw text.NrF   c               ó    € V ^8„  d   QhRRRR/# )r   r9   rM   r   r]   r!   )r"   s   "r#   r$   Ú$ImageDraw.text.<locals>.__annotate__3  s   € ÷ 	ñ 	˜ð 	¨ñ 	r&   c                óF   <€ SP                  V 4      w  rVf	   Vf   Q hV# V# rI   )rU   )r9   r7   rn   r:   s   &  €r#   ÚgetinkÚImageDraw.text.<locals>.getink3  s.   ø€ Ø ŸL™L¨Ó.‰MˆCØŠ{ØÒ+Ð+Ð+Ø�ØˆJr&   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r7   r]   r  rZ   r   r    r!   )r"   s   "r#   r$   r  H  s!   € ÷ 5=ñ 5=˜sð 5=°%ð 5=Àñ 5=r&   c                ó¶  <	€ SP                   pV^ 8X  d   S'       d   Rp\        SP                  4      p\        SP                  4      p\        P
                  ! SP                  4      ^ ,          \        P
                  ! SP                  4      ^ ,          3p\        SP                  \        P                  4      '       d`   SP                  P                  ! SP                  VSSSVSP                  V V.	S
O5RR/SB w  rgW7^ ,          ,          pWG^,          ,          pM> SP                  P                  ! SP                  VSSSVSP                  V .S
O5RV/SB pVR8X  d¢   YfP                  ^4      rh\         P"                  ! RV 4      ^,          p	VP%                  ^V	4       SP&                  eQ   SP&                  P)                  WƒWCVP*                  ^ ,          ,           WFP*                  ^,          ,           3V4       R# R# SP,                  P/                  W43W`4       R#   \         d)    SP                  P                  SP                  4      p Lùi ; i)r   r(   Ústroke_filledTrY   r…   N)r8   r]   rž   rŸ   r   ÚmodfrO   r   r	   ÚFreeTypeFontÚgetmask2rù   rú   ÚgetmaskÚ	TypeErrorÚgetbandr   ÚpackÚfillbandr   ÚpasterÁ   r5   rf   )r7   r  r   rž   rŸ   rY   rÃ   ÚoffsetÚcolorÚ	ink_alphar  rý   r  rþ   Ú
image_textr  r   r§   r:   s   &&        €€€€€€€€€r#   Ú	draw_textÚ!ImageDraw.text.<locals>.draw_textH  s  ø€ Ø—}‘}�Ø 1Ô$¯Ø!�DÜ˜Ÿ™“K�Ü˜Ÿ™“K�ÜŸš 4§6¡6Ó*¨1Õ-¬t¯yªy¸¿¹Ó/@ÀÕ/CÐD�Ü˜jŸo™o¬y×/EÑ/E×FÒFØ#-§?¡?×#;Ò#;ØŸ	™	ØØ!Ø Ø Ø$ØŸ™ØØð$ð ò$ð '+ð$ð !ñ$‘L�Dð  �•N�AØ �•N‘AðBØ)Ÿ™×6Ò6Ø ŸI™IØ Ø%Ø$Ø$Ø(Ø ŸK™KØð ð "ò ð #(ð ð %ñ ˜ð ˜6”>ð #'¯©°Q«˜4Ü &§¢¨C°Ó 5°aÕ 8�IØ—N‘N 1 iÔ0Ø—w‘wÒ*ØŸ™Ÿ™Ø! q¨d¯i©i¸­lÕ*:¸AÇ	Á	È!ÅÕ<LÐ#MÈtöñ +ð
 —I‘I×)Ñ)¨1¨&°$Ö<øô %ô BØ)Ÿ™×6Ñ6°t·y±yÓAšðBús   Ä!=H% È%0IÉI©r   )rO   r
   ÚTextrJ   Úgetr   Úembed_colorÚstroker  r  Ú_split)r:   rX   rù   r9   r   rú   rû   rü   rý   rþ   r   r  r  r  r  r  r
  r7   Ú
stroke_inkr  r  r§   s   f&&&&&&&fff&&fjl    @@r#   rù   ÚImageDraw.text  s.  ÿø€ ô& �dœIŸN™N×+Ò+Ø‰JàŠ|Ø—}‘} V§Z¡Z°Ó%<Ó=�Ü"ŸšØ˜DŸI™I w°	¸8ÀXóˆJ÷ Ø×&Ñ&Ô(ßØ×!Ñ! ,Ô<÷	ð 	ñ �T‹lˆØŠ;Ùàˆ
Ø×"×"Ð"ð ×)Ñ)Ò5ñ �z×-Ñ-Ô.àð ð ×%Ñ% b°%Ö8ˆD÷5=÷ 5=ò 5=ðn Ò%á˜* j×&=Ñ&=Ô>ð ˜*Ô$Ù˜c–Nñ %ñ ˜#–óE 9r&   rF   c               óT   € V ^8„  d   QhRRRRRRRRR	R
RRRRRR
RRRR
RRRRRRRRRR/# )r   rX   rø   rù   r   r9   rM   r   r   rú   r   rû   rZ   rü   rP   rý   rþ   rÿ   r   r  r  r  rÙ   rF   rG   r   r    r!   )r"   s   "r#   r$   r%   Š  s    € ÷ !
ñ !
àð!
ð ð!
ð ð	!
ð
 -ð!
ð ð!
ð ð!
ð ð!
ð ð!
ð #ð!
ð ð!
ð ð!
ð !ð!
ð ð!
ð   ð!!
ð" 
ñ#!
r&   c               	ó@   € V P                  VVVVVVVVV	V
VVVVR 7      # ©)rF   )rù   )r:   rX   rù   r9   r   rú   rû   rü   rý   rþ   r   r  r  r  rF   s   &&&&&&&&&&&&&&$r#   Úmultiline_textÚImageDraw.multiline_textŠ  sD   € ð$ �y‰yØØØØØØØØØØØØØØð ó 
ð 	
r&   c               ó8   € V ^8„  d   Qh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Ù   rF   rG   r   rZ   r!   )r"   s   "r#   r$   r%   ­  sZ   € ÷ 'ñ 'àð'ð -ð'ð ð	'ð
 #ð'ð ð'ð ð'ð  ð'ð 
ñ'r&   c          	     óÈ   € Vf   V P                  V4      p\        P                  ! VVV P                  VVVR7      pV'       d   VP	                  4        VP                  4       # )z@Get the length of a given string, in pixels with 1/64 precision.)rý   rþ   r   )rJ   r
   r  r   r!  Ú
get_length)	r:   rù   r   rý   rþ   r   r  rF   r  s	   &&&&&&&$ r#   Ú
textlengthÚImageDraw.textlength­  s[   € ð Š<Ø—=‘= Ó+ˆDÜ—^’^ØØØ�I‰IØØØô
ˆ
÷ Ø×"Ñ"Ô$Ø×$Ñ$Ó&Ð&r&   c               óL   € V ^8„  d   Qh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   rX   rø   rù   r   r   r   rú   r   rû   rZ   rü   rP   rý   rþ   rÿ   r   r  r  rÙ   rF   rG   r   z!tuple[float, float, float, float]r!   )r"   s   "r#   r$   r%   Ç  sŒ   € ÷ 6ñ 6àð6ð ð6ð -ð	6ð
 ð6ð ð6ð ð6ð ð6ð #ð6ð ð6ð ð6ð ð6ð  ð6ð 
+ñ6r&   c          	     óø   € Vf   V P                  V4      p\        P                  ! W#V P                  WWW‰4      pV'       d   VP	                  4        V
'       d   VP                  V
4       VP                  WV4      # )z2Get the bounding box of a given string, in pixels.)rJ   r
   r  r   r!  r"  Úget_bbox)r:   rX   rù   r   rú   rû   rü   rý   rþ   r   r  r  rF   r  s   &&&&&&&&&&&&$ r#   ÚtextbboxÚImageDraw.textbboxÇ  sg   € ð" Š<Ø—=‘= Ó+ˆDÜ—^’^Ø˜Ÿ	™	 7°xó
ˆ
÷ Ø×"Ñ"Ô$ßØ×Ñ˜lÔ+Ø×"Ñ" 2¨uÓ5Ð5r&   c               óL   € V ^8„  d   Qh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/# r1  r!   )r"   s   "r#   r$   r%   ã  sŒ   € ÷ 
ñ 
àð
ð ð
ð -ð	
ð
 ð
ð ð
ð ð
ð ð
ð #ð
ð ð
ð ð
ð ð
ð  ð
ð 
+ñ
r&   c               	ó<   € V P                  VVVVVVVVV	V
VVR 7      # r(  )r4  )r:   rX   rù   r   rú   rû   rü   rý   rþ   r   r  r  rF   s   &&&&&&&&&&&&$r#   Úmultiline_textbboxÚImageDraw.multiline_textbboxã  s>   € ð  �}‰}ØØØØØØØØØØØØð ó 
ð 	
r&   )	r3   r5   r9   r   r8   r   r7   r   r2   rI   )Né   )NNr:  )Nr:  N)NN)r   NNr:  )NNNé   rñ   NNNr   NF)NNNNF)	NNr;  rñ   NNNr   F)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   Ú__annotations__r=   rC   rJ   rU   r`   rc   ro   rv   r}   r†   r§   r°   r¦   r©   rÅ   rÎ   rÓ   rõ   rù   r)  r.  r4  r8  Ú__static_attributes__r!   r&   r#   r   r   >   sØ   ‡ Ø+/€DÐ
(Ó/÷&õPõ2"÷'÷2;÷	6÷@÷ 6÷
7õ÷D=÷L2÷C÷ +÷K÷0/÷8ñG8ð 9=÷G8ð G8÷Ruñn!
ð  #'÷!!
ð !
ñF'ð #'÷'ð 'ñ46ð #'÷6ð 6ñ8
ð #'÷
ô 
r&   r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r   r   r   r   r   r   r!   )r"   s   "r#   r$   r$     s!   € ÷ #ñ #ˆ[ð # 
ð #°iñ #r&   c                ó`   €  \        V R4      ! V4      #   \         d    \        Y4      u # i ; i)ak  
A simple 2D drawing interface for PIL images.

:param im: The image to draw in.
:param mode: Optional mode to use for color values.  For RGB
   images, this argument can be RGB or RGBA (to blend the
   drawing into the image).  For all other modes, this argument
   must be the same as the image mode.  If omitted, the mode
   defaults to the mode of the image.
Úgetdraw)ÚgetattrÚAttributeErrorr   )r   r   s   &&r#   rÂ   rÂ     s3   € ð#Ü�r˜9Ô% dÓ+Ð+øÜô #Ü˜Ó"Ò"ð#ús   ‚ ”-¬-c               ó    € V ^8„  d   QhRRRR/# )r   r   zImage.Image | Noner   z)tuple[ImageDraw2.Draw | None, ModuleType]r!   )r"   s   "r#   r$   r$     s   € ÷ ñ Ð"ð Ð.Wñ r&   c                óD   € ^RI Hp V e   VP                  ! V 4      MRpW!3# )za
:param im: The image to draw in.
:returns: A (drawing context, drawing resource factory) tuple.
r   N)Ú r   rÂ   )r   r   r5   s   &  r#   rD  rD    s$   € õ
 à"$¢.ˆ:�?Š?˜2Ô°d€DØÐÐr&   c               ó0   € V ^8„  d   QhRRRRRRRRR	R
RR/# )r   Úimager   rX   ztuple[int, int]Úvalueúfloat | tuple[int, ...]Úborderzfloat | tuple[int, ...] | NoneÚthreshrZ   r   r    r!   )r"   s   "r#   r$   r$     sD   € ÷ >ñ >Øð>àð>ð #ð>ð +ð	>ð
 ð>ð 
ñ>r&   c                ó€  € V P                  4       pVf   Q hVw  rg WVV3,          p\        W(4      V8:  d   R# W%Wg3&   Yg30p	\	        4       p
T	'       d¼   \	        4       pT	 F¥  w  rgT^,           T3T^,
          T3Yg^,           3Yg^,
          33 Ft  w  rÍYÍ3T
9   g   T^ 8  g   T^ 8  d   K   Y\T3,          pT
P                  YÍ34       Tf   \        Yè4      T8*  pMYâT39  pT'       d   Y%YÍ3&   TP                  YÍ34       Kt  Kv  	  K§  	  T	p
Tp	KÃ  R#   \        \        3 d     R# i ; i  \        \        3 d     K°  i ; i)a³  
.. warning:: This method is experimental.

Fills a bounded region with a given color.

:param image: Target image.
:param xy: Seed position (a 2-item coordinate tuple). See
    :ref:`coordinate-system`.
:param value: Fill color.
:param border: Optional border value.  If given, the region consists of
    pixels with a color different from the border color.  If not given,
    the region consists of pixels having the same color as the seed
    pixel.
:param thresh: Optional threshold value which specifies a maximum
    tolerable difference of a pixel value from the 'background' in
    order for it to be replaced. Useful for filling regions of
    non-homogeneous, but similar, colors.
N)re   Ú_color_diffr1   Ú
IndexErrorÚsetÚadd)rK  rX   rL  rN  rO  Úpixelrž   rŸ   Ú
backgroundÚedgeÚ	full_edgeÚnew_edgeÚsÚtr—   r9   s   &&&&&           r#   Ú	floodfillr\    sa  € ð6 �J‰J‹L€EØÒÐÐØ�D€AðØ˜a˜4•[ˆ
Ü�uÓ)¨VÔ3ÙØˆaˆd‰ð ˆFˆ8€Dô “€Iß
Ü“5ˆÛ‰DˆAØ˜a�% ˜ a¨!¥e¨Q Z°!¸µU°¸aÀQÅ¸ZÓH‘�à�6˜YÔ&¨!¨a¬%°1°q´5Ùð-Ø ˜d��Að —M‘M 1 &Ô)Ø’~Ü*¨1Ó9¸VÑC™à °¨Ñ7˜ßØ&+˜a˜d™Ø Ÿ™ a VÖ,ñ ó Iñ ð$ ˆ	ØŠñ+ øô œ
Ð#ô Úðûô #¤JÐ/ô Úðús(   œD ¸D Â*
D(ÄD%Ä$D%Ä(D=Ä<D=c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   rÈ   rÉ   rÊ   r]   rË   rZ   r   zlist[tuple[float, float]]r!   )r"   s   "r#   r$   r$   `  s8   € ÷ @ñ @Ø6ð@ØADð@ØPUð@àñ@r&   c                ó¶  aa	a
€ \        V\        4      '       g   Rp\        V4      hV^8  d   Rp\        V4      h\        V \        \
        34      '       g   Rp\        V4      h\        V 4      ^8X  db   \        ;QJ d    R V  4       F  '       d   K   RM	  RM! R V  4       4      '       g   Rp\        V4      h\        R\	        V 4      4      Ev o	o
EM\        V 4      ^8X  dð   \        V ^ ,          \        \
        34      '       dÍ   \        ;QJ d#    R	 V ^ ,           4       F  '       d   K   RM	  RM! R	 V ^ ,           4       4      '       d$   \        V ^,          \        \        34      '       g   Rp\        V4      h\        V ^ ,          4      ^8w  d   R
p\        V4      h\        R\	        V ^ ,          4      4      o	\        RV ^,          4      o
MRp\        V4      hS
^ 8:  d   Rp\        V4      h\        V\        \        34      '       g   Rp\        V4      hR V	3R lloR VV
3R llpR R lpV! W4      pV Uu. uF
  qt! V4      NK  	  up# u upi )u  
Generate a list of vertices for a 2D regular polygon.

:param bounding_circle: The bounding circle is a sequence defined
    by a point and radius. The polygon is inscribed in this circle.
    (e.g. ``bounding_circle=(x, y, r)`` or ``((x, y), r)``)
:param n_sides: Number of sides
    (e.g. ``n_sides=3`` for a triangle, ``6`` for a hexagon)
:param rotation: Apply an arbitrary rotation to the polygon
    (e.g. ``rotation=90``, applies a 90 degree rotation)
:return: List of regular polygon vertices
    (e.g. ``[(25, 50), (50, 50), (50, 25), (25, 25)]``)

How are the vertices computed?
1. Compute the following variables
    - theta: Angle between the apothem & the nearest polygon vertex
    - side_length: Length of each polygon edge
    - centroid: Center of bounding circle (1st, 2nd elements of bounding_circle)
    - polygon_radius: Polygon radius (last element of bounding_circle)
    - angles: Location of each polygon vertex in polar grid
        (e.g. A square with 0 degree rotation => [225.0, 315.0, 45.0, 135.0])

2. For each angle in angles, get the polygon vertex at that angle
    The vertex is computed using the equation below.
        X= xcos(Ï†) + ysin(Ï†)
        Y= âˆ’xsin(Ï†) + ycos(Ï†)

    Note:
        Ï† = angle in degrees
        x = 0
        y = polygon_radius

    The formula above assumes rotation around the origin.
    In our case, we are rotating around the centroid.
    To account for this, we use the formula below
        X = xcos(Ï†) + ysin(Ï†) + centroid_x
        Y = âˆ’xsin(Ï†) + ycos(Ï†) + centroid_y
zn_sides should be an intzn_sides should be an int > 2z$bounding_circle should be a sequencec              3  óN   "  € T F  p\        V\        \        34      x € K  	  R # 5irI   ©rO   r]   rZ   ©r–   r…   s   & r#   r™   Ú4_compute_regular_polygon_vertices.<locals>.<genexpr>˜  s   é € ÐH¹°1”:˜a¤#¤u ×.Ð.»ùó   ‚#%FTz0bounding_circle should only contain numeric dataúlist[float]c              3  óN   "  € T F  p\        V\        \        34      x € K  	  R # 5irI   r`  ra  s   & r#   r™   rb  ž  s"   é € ð 
Ù1C¨AŒJ�qœ3¤˜,×'Ð'Ó1Cùrc  zBbounding_circle centre should contain 2D coordinates (e.g. (x, y))rZ   z[bounding_circle should contain 2D coordinates and a radius (e.g. (x, y, r) or ((x, y), r) )z$bounding_circle radius should be > 0z"rotation should be an int or floatc               ó$   € V ^8„  d   QhRRRRRR/# )r   r©   rd  r¤   rZ   r   rø   r!   )r"   s   "r#   r$   Ú7_compute_regular_polygon_vertices.<locals>.__annotate__»  s"   € ÷ 
ñ 
˜{ð 
°Uð 
Ð?Rñ 
r&   c                óp  <€ \        V ^ ,          \        P                  ! \        P                  ! RV,
          4      4      ,          V ^,          \        P                  ! \        P                  ! RV,
          4      4      ,          ,
          S^ ,          ,           ^4      \        V ^,          \        P                  ! \        P                  ! RV,
          4      4      ,          V ^ ,          \        P                  ! \        P                  ! RV,
          4      4      ,          ,           S^,          ,           ^4      3# )r   rŒ   )rí   r   r›   rœ   r�   )r©   r¤   Úcentroids   &&€r#   Ú_apply_rotationÚ:_compute_regular_polygon_vertices.<locals>._apply_rotation»  sÕ   ø€ äØ�a•œ4Ÿ8š8¤D§L¢L°°wµÓ$?Ó@Õ@Ø˜•(œTŸXšX¤d§l¢l°3¸µ=Ó&AÓBÕBõCà˜1•+õð ó	ô Ø�a•œ4Ÿ8š8¤D§L¢L°°wµÓ$?Ó@Õ@Ø˜•(œTŸXšX¤d§l¢l°3¸µ=Ó&AÓBÕBõCà˜1•+õð ó	ð
ð 	
r&   c               ó    € V ^8„  d   QhRRRR/# )r   r�   rZ   r   rø   r!   )r"   s   "r#   r$   rg  Ë  s   € ÷ 3ñ 3 uð 3Ð1Dñ 3r&   c                ó   <€ S^ .pS! W4      # r  r!   )r�   Ústart_pointrj  Úpolygon_radiuss   & €€r#   Ú_compute_polygon_vertexÚB_compute_regular_polygon_vertices.<locals>._compute_polygon_vertexË  s   ø€ Ø% qÐ)ˆÙ˜{Ó2Ð2r&   c               ó$   € V ^8„  d   QhRRRRRR/# )r   rÊ   r]   rË   rZ   r   rd  r!   )r"   s   "r#   r$   rg  Ï  s!   € ÷ 
ñ 
˜Sð 
¨Eð 
°kñ 
r&   c                óÄ   € . pR V ,          pRRV,          ,
          V,           p\        V 4       F.  pVP                  V4       WC,          pVR 8”  g   K%  VR ,          pK0  	  V# )rŒ   rÝ   g      à?)rƒ   Úappend)rÊ   rË   rª   r¤   Úcurrent_angleÚ_s   &&    r#   Ú_get_anglesÚ6_compute_regular_polygon_vertices.<locals>._get_anglesÏ  s^   € ØˆØ˜•-ˆà˜s W�}Õ,°Õ8ˆÜ�w–ˆAØ�M‰M˜-Ô(ØÕ$ˆMØ˜sÖ"Ø Õ$’ñ	  ð
 ˆr&   )
rO   r]   r  r1   r‚   rR   r„   rî   r   rZ   )rÈ   rÊ   rË   r<   rp  rw  rª   r�   rj  ri  ro  s   &&&     @@@r#   rÍ   rÍ   `  s	  ú€ ôV �gœs×#Ò#Ø(ˆÜ˜‹nÐØ�„{Ø,ˆÜ˜‹oÐô �o¬¬e }×5Ò5Ø4ˆÜ˜‹nÐä
ˆ?Ó˜qÔ ß‹sÑH¹ÓH�s�sŠsÑH¹ÓH×HÒHØDˆCÜ˜S“/Ð!ä$(¨¼¸_Ó8MÓ$NÑ!ˆ’>Ü	ˆ_Ó	 Ô	"¤z°/À!Õ2DÄtÌUÀm×'TÒ'Tß‹sñ 
Ø1@ÀÖ1Có
�s�sŠsñ 
Ø1@ÀÖ1Có
÷ 
ò 
ä˜O¨AÕ.´´e°×=Ò=ØDˆCÜ˜S“/Ð!äˆ˜qÕ!Ó" aÔ'ØVˆCÜ˜S“/Ð!ä˜¤t¨O¸AÕ,>Ó'?Ó@ˆÜ˜g °qÕ'9Ó:‰ð<ð 	ô ˜‹oÐà˜ÔØ4ˆÜ˜‹oÐô �h¤¤e ×-Ò-Ø2ˆÜ˜‹oÐ÷
ð 
÷ 3ñ 3õ
ñ ˜Ó+€Fñ 9?Ó?¹¨uÐ# EÖ*¹Ñ?Ð?ùÒ?s   ÉIc               ó$   € V ^8„  d   QhRRRRRR/# )r   Úcolor1rM  Úcolor2r   rZ   r!   )r"   s   "r#   r$   r$   â  s)   € ÷ 	Fñ 	FØ#ð	FØ-Dð	Fà
ñ	Fr&   c                óÂ   aa€ \        V \        4      '       d   T MV 3o\        V\        4      '       d   TMV3o\        VV3R l\        \	        S4      4       4       4      # )zB
Uses 1-norm distance to calculate difference between two values.
c              3  ód   <"  € T F%  p\        SV,          SV,          ,
          4      x € K'  	  R # 5irI   )Úabs)r–   r…   ÚfirstÚseconds   & €€r#   r™   Ú_color_diff.<locals>.<genexpr>ë  s(   øé € ÐEÑ2D¨QŒs�5˜•8˜f Q�iÕ'×(Ð(Ó2Dùs   ƒ-0)rO   rR   Úsumrƒ   r„   )rz  r{  r  r€  s   &&@@r#   rQ  rQ  â  sI   ù€ ô ! ¬×/Ò/‰F°f°Y€EÜ! &¬%×0Ò0‰V°v°i€FäÕE´%¼¸F»Ô2DÓEÓEÐEr&   rI   )Nr   )#Ú__conditional_annotations__Ú
__future__r   Ú__lazy_modules__r   r   Útypingr   rI  r   r   r	   r
   ÚTYPE_CHECKINGÚcollections.abcr   r   Útypesr   r   r   r   Ú_typingr   r   r4   rj   r   r@  r   rÂ   rD  r\  rÍ   rQ  )rƒ  s   @r#   Ú<module>r‹     s‡   øð÷@ #Ð "à˜HÐ%Ð ã Û Ý ç 5Ó 5à€ßß2Ý ß"åß%ð .3¯Z©Z×-?Ñ-?€Ð	*Ó ?ð÷B
ñ B
÷J#÷"÷>õB@÷D	Fr&   