+
    JV-j‰�  ã                  óF  a € 0 t $ ^ RIHt ^ RIt^ RIt^ RIHt ^ RIHt ^RI	H
t
HtHt Rt]'       d%   ^ RIHt ^ RIHt ^ R	IHtHt ^R
I	HtHt ^RIHtHt ]
P0                  P2                  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# )é    )ÚannotationsN)ÚSequence)Úcast)ÚImageÚ
ImageColorÚ	ImageTextF)ÚCallable)Ú
ModuleType)ÚAnyÚAnyStr)Ú
ImageDraw2Ú	ImageFont)ÚCoordsÚ_Inkz!Callable[[], Image.core._Outline]ÚOutlinec                  ó¦  € ] tR t^=t$ RtR]R&   R3R R lltR R ltR R	 ltR3R
 R llt	R4R R llt
R3R R lltR5R R lltR5R R lltR5R R lltR6R R lltR7R R lltR5R R lltR3R R lltR5R R lltR8R  R! lltR5R" R# lltR8R$R/R% R& llltR9R' R( lltR9R)R/R* R+ l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R2tR# )<Ú	ImageDrawNúNImageFont.ImageFont | ImageFont.FreeTypeFont | ImageFont.TransposedFont | NoneÚfontc               ó$   € V ^8„  d   QhRRRRRR/# )é   ÚimúImage.ImageÚmodeú
str | NoneÚreturnÚNone© )Úformats   "Ú^/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/PIL/ImageDraw.pyÚ__annotate__ÚImageDraw.__annotate__B   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__B   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   úGImageFont.ImageFont | ImageFont.FreeTypeFont | ImageFont.TransposedFontr   )r   s   "r    r!   r"   j   s   € ÷ ñ à	Pñr#   c                óv   € V P                   '       g   ^RIHp V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   Ú r   Úload_default)r7   r   s   & r    ÚgetfontÚImageDraw.getfontj   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   € ÷ "ñ "Ø%ð"à	Pñ"r#   c                	óZ   € Ve   ^RI Hp VP                  ! V4      # V P                  4       # )Nr?   )r@   r   rA   rB   )r7   rE   r   s   && r    Ú_getfontÚImageDraw._getfont…   s*   € ð Ò Ý#à×)Ò)¨)Ó4Ð4à—<‘<“>Ð!r#   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r4   ú_Ink | Noner6   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# ©N)r6   r4   Ú
isinstanceÚstrr   Úgetcolorr   r/   Útupler0   r2   r3   )r7   r4   r6   Ú
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Úendr6   rK   ÚwidthÚintr   r   r   )r   s   "r    r!   r"   ¨   sF   € ÷ ;ñ ;àð;ð ð;ð ð	;ð
 ð;ð ð;ð 
ñ;r#   c                ór   € V P                  V4      w  rdVe    V P                  P                  WW6V4       R# R# )zDraw an arc.N)rT   r2   Údraw_arc)r7   rW   rX   rZ   r6   r[   r4   s   &&&&&& r    ÚarcÚImageDraw.arc¨   s4   € ð —L‘L Ó&‰	ˆØŠ?Ø�I‰I×Ñ˜r¨#°EÖ:ñ r#   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   rW   zSequence[int]Úbitmapr   r6   rK   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)ÚloadrT   r2   Údraw_bitmapr   )r7   rW   rb   r6   r4   s   &&&& r    rb   Ú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   rW   r   rX   rY   rZ   r6   rK   Ú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)rT   r2   Ú
draw_chord©	r7   rW   rX   rZ   r6   ri   r[   r4   Ú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   rW   r   r6   rK   ri   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)rT   r2   Údraw_ellipse©r7   rW   r6   ri   r[   r4   rm   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   rW   úSequence[float]ÚradiusrY   r6   rK   ri   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)ru   )r7   rW   ry   r6   ri   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RRRR	R
/# )r   rW   r   r6   rK   r[   r\   Újointr   r   r   r   )r   s   "r    r!   r"   ê   sC   € ÷ K=ñ K=àðK=ð ðK=ð ð	K=ð
 ðK=ð 
ñK=r#   c                óL  a€ V P                  V4      ^ ,          pVEe{   V P                  P                  WS4       VR8X  EdU   S^8”  EdK   \        V^ ,          \        \
        34      '       d(   \        \        \        \        ,          ,          V4      pMP\        ^ \        V4      ^4       Uu. uF0  p\        \        \        ,          \        WV^,            4      4      NK2  	  p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# u upi 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   Úcoordrx   ÚanglerY   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)ÚmathÚ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
)rQ   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[   )rT   r2   Ú
draw_linesrN   ÚlistrQ   r   r   rY   ÚrangeÚlenrŠ   ÚdegreesÚatan2ÚpiesliceÚline)r7   rW   r6   r[   r   r4   ÚpointsÚiÚpointrX   rZ   Úanglesr˜   ÚflippedÚcoordsÚ
gap_coordss   &&&f&           r    r¡   ÚImageDraw.lineê   s  ø€ ð �l‰l˜4Ó  Õ#ˆØ‹?Ø�I‰I× Ñ  ¨%Ô0Ø˜Õ E¨A¥Iä˜b �e¤d¬E ]×3Ò3Ü!¤(¬8´E­?Õ";¸RÓ@‘Fô "' q¬#¨b«'°1Ô!5óá!5˜Aô œX¤e�_¬e°B¸1¸q½5°MÓ.BÖCÙ!5ð ð ô ˜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   Â-6NÄ2A'N c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   ÚshapezImage.core._Outliner6   rK   ri   r   r   r   )r   s   "r    r!   r"   7  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)ÚcloserT   r2   Údraw_outline)r7   r«   r6   ri   r4   rm   s   &&&&  r    r«   ÚImageDraw.shape7  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/# rh   r   )r   s   "r    r!   r"   E  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)rT   r2   Údraw_pieslicerl   s	   &&&&&&&  r    r    ÚImageDraw.piesliceE  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   rW   r   r6   rK   r   r   r   )r   s   "r    r!   r"   U  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)rT   r2   Údraw_points)r7   rW   r6   r4   s   &&& r    r¤   ÚImageDraw.pointU  s.   € à—L‘L Ó&‰	ˆØŠ?Ø�I‰I×!Ñ! "Ö*ñ r#   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# rq   r   )r   s   "r    r!   r"   [  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(   )rT   r2   Údraw_polygonr   r   ÚnewÚsizeÚDraw)
r7   rW   r6   ri   r[   r4   rm   ÚmaskÚmask_inkr2   s
   &&&&&     r    ÚpolygonÚImageDraw.polygon[  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\   ÚrotationrY   r6   rK   ri   r[   r   r   r   )r   s   "r    r!   r"   s  sP   € ÷ /ñ /à:ð/ð ð/ð ð	/ð
 ð/ð ð/ð ð/ð 
ñ/r#   c                óB   € \        WV4      pV P                  WtWV4       R# )zDraw a regular polygon.N)Ú!_compute_regular_polygon_verticesrÀ   )r7   rÃ   rÅ   rÆ   r6   ri   r[   rW   s   &&&&&&& r    Úregular_polygonÚImageDraw.regular_polygons  s   € ô /¨ÈÓRˆØ�‰�R˜wÖ.r#   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# rq   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)rT   r2   Údraw_rectanglert   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   rW   r   ry   rY   r6   rK   ri   r[   r\   rÐ   z$tuple[bool, bool, bool, bool] | Noner   r   r   )r   s   "r    r!   r"   Ž  sY   € ÷ J8ñ J8àðJ8ð ðJ8ð ð	J8ð
 ðJ8ð ðJ8ð 6ðJ8ð 
ñJ8r#   c               óÆ  a aaaaaaaaaaa€ \        V^ ,          \        \        34      '       d1   \        \        \        \
        ,          ,          V4      w  w  oow  ooM \        \        \
        ,          V4      w  ooooSS8  d   Rp\        V4      hSS8  d   Rp\        V4      hSf   RoV^,          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rM   r   )r�   r£   ÚpartrÐ   s   &  €r    r�   ÚDImageDraw.rounded_rectangle.<locals>.draw_corners.<locals>.<genexpr>Ó  s+   øé € ð ñ$™˜ð ˜q—z‘z÷ ’Dó$ùs   ƒ%›
%N)rQ   Ú	enumerater2   r²   r^   )r    ÚpartsrÚ   rÐ   Údrm   Úfull_xÚfull_yr4   r7   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)rN   r›   rQ   r   r   rY   r.   ÚroundÚallru   ÚanyrÎ   r\   rT   r2   rÍ   )r7   rW   ry   r6   ri   r[   rÐ   r9   Úrrå   ÚleftÚrightÚtopÚbottomrÞ   rm   rß   rà   r4   rá   râ   rã   rä   s   f&&&&fd       @@@@@@@@@r    Úrounded_rectangleÚImageDraw.rounded_rectangleŽ  sz  ÿû€ ô �b˜•eœd¤E˜]×+Ò+Ü!%¤h¬x¼­Õ&?ÀÓ!DÑ‰HˆR�‘h�r™2ä!¤(¬5¥/°2Ó6‰NˆB��B˜Ø�Œ7Ø:ˆCÜ˜S“/Ð!Ø�Œ7Ø:ˆCÜ˜S“/Ð!ØŠ?Ø.ˆGà�Q�Jˆä�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   rW   útuple[float, float]ÚtextzAnyStr | ImageText.Text[AnyStr]r6   rK   r   r   Úanchorr   ÚspacingrY   ÚalignrO   Ú	directionÚfeaturesúlist[str] | NoneÚlanguageÚstroke_widthÚstroke_fillÚembedded_colorrÔ   Úargsr   Úkwargsr   r   r   )r   s   "r    r!   r"     s¼   € ÷ zñ zàðzð .ðzð ð	zððzð ðzð ðzð ðzð ðzð #ðzð  ð!zð" ð#zð$ !ð%zð& ð'zð( ð)zð* ð+zð, 
ñ-z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.NrE   c               ó    € V ^8„  d   QhRRRR/# )r   r6   rK   r   r\   r   )r   s   "r    r!   Ú$ImageDraw.text.<locals>.__annotate__?  s   € ÷ 	ñ 	˜ð 	¨ñ 	r#   c                óF   <€ SP                  V 4      w  rVf	   Vf   Q hV# V# rM   )rT   )r6   r4   rm   r7   s   &  €r    ÚgetinkÚImageDraw.text.<locals>.getink?  s.   ø€ Ø ŸL™L¨Ó.‰MˆCØŠ{ØÒ+Ð+Ð+Ø�ØˆJr#   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r4   r\   rû   rY   r   r   r   )r   s   "r    r!   r  T  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                  ! SP                  V.S
O5RSRSRSRVRRRSP                  R	V R
V/SB w  rgW7^ ,          ,          pWG^,          ,          pTR8X  d¢   YfP                  ^4      rh\        P                  ! RT 4      ^,          p	TP!                  ^T	4       SP"                  eQ   SP"                  P%                  YƒYCTP&                  ^ ,          ,           YFP&                  ^,          ,           3T4       R# R# SP(                  P+                  Y43Y`4       R#   \         d{     SP                  P                  ! SP                  TSSSTSP                  T .S
O5R
T/SB p EL  \         d+    SP                  P                  SP                  4      p  ELGi ; ii ; i)r   r%   r÷   rø   rú   rû   Ústroke_filledTrô   r4   rX   r£   N)r5   r\   r•   r–   rŠ   Úmodfr   Úgetmask2ró   rô   ÚAttributeErrorÚgetmaskÚ	TypeErrorÚgetbandÚstructÚpackÚfillbandr   Úpaster¼   r2   re   )r4   rû   r   r•   r–   rX   r¾   ÚoffsetÚcolorÚ	ink_alpharþ   r÷   rý   rø   Ú
image_textrÿ   rú   r¡   r7   s   &&        €€€€€€€€€r    Ú	draw_textÚ!ImageDraw.text.<locals>.draw_textT  s5  ø€ Ø—}‘}�Ø 1Ô$¯Ø!�DÜ˜Ÿ™“K�Ü˜Ÿ™“K�ÜŸš 4§6¡6Ó*¨1Õ-¬t¯yªy¸¿¹Ó/@ÀÕ/CÐD�ð!BØ#-§?¡?×#;Ò#;ØŸ	™	Øð$ð ò$ð #,ð$ð "*ð	$ð
 "*ð$ð &2ð$ð '+ð$ð  $Ÿ{™{ð$ð  ð$ð $ð$ð !ñ$‘L�Dð  �•N�AØ �•N�Að$ ˜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ðBØ)Ÿ™×6Ò6Ø ŸI™IØ Ø%Ø$Ø$Ø(Ø ŸK™KØð ð "ò ð #(ð ð %ñ ›øô %ô BØ)Ÿ™×6Ñ6°t·y±yÓAœðBúðBús+   ÂA%G ÇI	Ç=HÈ0IÉ I	ÉIÉI	©r   )rN   r   ÚTextrH   Úgetr   Úembed_colorÚstrokerû   rü   Ú_split)r7   rW   ró   r6   r   rô   rõ   rö   r÷   rø   rú   rû   rü   rý   rþ   rÿ   r  r4   Ú
stroke_inkr  r  r¡   s   f&&&&&&&fff&&fjl    @@r    ró   ÚImageDraw.text  s.  ÿø€ ô0 �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#   rE   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   rW   rò   ró   r   r6   rK   r   r   rô   r   rõ   rY   rö   rO   r÷   rø   rù   rú   rû   rü   rý   rÔ   rE   rF   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      # ©)rE   )ró   )r7   rW   ró   r6   r   rô   rõ   rö   r÷   rø   rú   rû   rü   rý   rE   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Ô   rE   rF   r   rY   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ú   )rH   r   r  r   r  Ú
get_length)	r7   ró   r   r÷   rø   rú   rý   rE   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   rW   rò   ró   r   r   r   rô   r   rõ   rY   rö   rO   r÷   rø   rù   rú   rû   rý   rÔ   rE   rF   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.)rH   r   r  r   r  r  Úget_bbox)r7   rW   ró   r   rô   rõ   rö   r÷   rø   rú   rû   rý   rE   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/# r,  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#  )r/  )r7   rW   ró   r   rô   rõ   rö   r÷   rø   rú   rû   rý   rE   s   &&&&&&&&&&&&$r    Úmultiline_textbboxÚImageDraw.multiline_textbboxþ  s>   € ð* �}‰}ØØØØØØØØØØØØð ó 
ð 	
r#   )	r0   r2   r6   r   r5   r   r4   r   r/   rM   )Né   )NNr5  )Nr   N)NN)r   NNr5  )NNNé   rë   NNNr   NF)NNNNF)	NNr6  rë   NNNr   F)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   Ú__annotations__r:   rB   rH   rT   r_   rb   rn   ru   r|   r¡   r«   r    r¤   rÀ   rÉ   rÎ   rï   ró   r$  r)  r/  r3  Ú__static_attributes__r   r#   r    r   r   =   sÛ   ‡ ð 	ð 	ØVó÷&õPõ6"÷'÷2;÷	6÷@÷ 6÷
7÷K=÷Z2÷C÷ +÷K÷0/÷8ñJ8ð 9=÷J8ð J8÷Xzñx&
ð* #'÷+&
ð &
ñP'ð #'÷'ð 'ñ>6ð& #'÷'6ð 6ñB"
ð& #'÷'"
ô "
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)Úgetattrr  r   )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!   4  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   r   r2   s   &  r    r?  r?  4  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   rW   ztuple[int, int]Úvalueúfloat | tuple[int, ...]Úborderzfloat | tuple[int, ...] | NoneÚthreshrY   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)rd   Ú_color_diffr.   Ú
IndexErrorÚsetÚadd)rD  rW   rE  rG  rH  Úpixelr•   r–   Ú
backgroundÚedgeÚ	full_edgeÚnew_edgeÚsÚtrŽ   r6   s   &&&&&           r    Ú	floodfillrU  ?  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Æ   rY   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  dq   \        ;QJ d    R V  4       F  '       d   K   RM	  RM! R V  4       4      '       g   Rp\        V4      h\        \        \        ,          \	        V 4      4      Ev o	o
EM \        V 4      ^8X  E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\        \        \        ,          \	        V ^ ,          4      4      o	\        \        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rM   ©rN   r\   rY   ©r�   r£   s   & r    r�   Ú4_compute_regular_polygon_vertices.<locals>.<genexpr>¸  s   é € ÐH¹°1”:˜a¤#¤u ×.Ð.»ùó   ‚#%FTz0bounding_circle should only contain numeric datac              3  óN   "  € T F  p\        V\        \        34      x € K  	  R # 5irM   rY  rZ  s   & r    r�   r[  ¾  s"   é € ð 
Ù1C¨AŒJ�qœ3¤˜,×'Ð'Ó1Cùr\  zBbounding_circle centre should contain 2D coordinates (e.g. (x, y))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¤   úlist[float]rž   rY   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…   rY   r   rò   r   )r   s   "r    r!   r`  ë  s   € ÷ 3ñ 3 uð 3Ð1Dñ 3r#   c                ó   <€ S^ .pS! W4      # r  r   )r…   Ústart_pointrc  Ú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Æ   rY   r   r_  r   )r   s   "r    r!   r`  ï  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#   )
rN   r\   r  r.   r›   rQ   r�   rè   r   rY   )rÃ   rÅ   rÆ   r9   ri  rp  r¥   r…   rc  rb  rh  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“/Ð!ä$(¬¬e­´d¸?Ó6KÓ$LÑ!ˆ’>Ü	ˆ_Ó	 Õ	"¤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“/Ð!äœœU�¤T¨/¸!Õ*<Ó%=Ó>ˆÜœe _°QÕ%7Ó8‰ð<ð 	ô ˜‹oÐà˜ÔØ4ˆÜ˜‹oÐô �h¤¤e ×-Ò-Ø2ˆÜ˜‹oÐ÷
ð 
÷ 3ñ 3õ
ñ ˜Ó+€Fñ 9?Ó?¹¨uÐ# EÖ*¹Ñ?Ð?ùÒ?s   É&I9c               ó$   € V ^8„  d   QhRRRRRR/# )r   Úcolor1rF  Úcolor2r   rY   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rM   )Úabs)r�   r£   ÚfirstÚseconds   & €€r    r�   Ú_color_diff.<locals>.<genexpr>  s(   øé € ÐEÑ2D¨QŒs�5˜•8˜f Q�iÕ'×(Ð(Ó2Dùs   ƒ-0)rN   rQ   Úsumrœ   r�   )rs  rt  rx  ry  s   &&@@r    rJ  rJ    sI   ù€ ô ! ¬×/Ò/‰F°f°Y€EÜ! &¬%×0Ò0‰V°v°i€FäÕE´%¼¸F»Ô2DÓEÓEÐEr#   rM   )Nr   )"Ú__conditional_annotations__Ú
__future__r   rŠ   r  Úcollections.abcr   Útypingr   r@   r   r   r   ÚTYPE_CHECKINGr	   Útypesr
   r   r   r   r   Ú_typingr   r   r1   ri   r   r;  r   r½   r?  rU  rÈ   rJ  )r|  s   @r    Ú<module>rƒ     s   øð÷@ #Ð "ã Û Ý $Ý ç *Ñ *à€ßÝ(Ý ß"ç'ß%ð .3¯Z©Z×-?Ñ-?€Ð	*Ó ?ð÷c
ñ c
÷L#÷"÷>õB@÷D	Fr#   