Ë
    ¦üàg#¥  ã                  óˆ  — U d dl mZ d dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
mZmZmZmZ ddlmZmZ ddlmZ dd	lmZ d
ed<   	 ej.                  j0                  Ze	rddlmZmZ eeeedf   e f   Z!	  G d„ d«      Z"ddd„Z#	 d	 	 	 	 	 dd„Z$	 	 d	 	 	 	 	 	 	 	 	 	 	 dd„Z%	 	 	 	 	 	 	 	 dd„Z&	 	 	 	 	 	 dd„Z'y# e$ r dZY Œdw xY w)é    )ÚannotationsN)ÚSequence)Ú
ModuleType)ÚTYPE_CHECKINGÚAnyÚAnyStrÚCallableÚUnionÚcasté   )ÚImageÚ
ImageColor)Ú	deprecate)ÚCoordsz(Callable[[], Image.core._Outline] | NoneÚOutline)Ú
ImageDraw2Ú	ImageFont.c                  óâ  — e Zd ZU dZded<   dd d„Z	 	 d!d„Z	 	 	 	 d"d„Z	 d	 	 	 	 	 d#d„Z	 	 d$	 	 	 	 	 	 	 	 	 	 	 d%d„Z		 d	 	 	 	 	 	 	 d&d	„Z
	 	 	 d'	 	 	 	 	 	 	 	 	 	 	 	 	 d(d
„Z	 	 	 d'	 	 	 	 	 	 	 	 	 d)d„Z	 	 	 d'	 	 	 	 	 	 	 	 	 	 	 d*d„Z	 	 	 d+	 	 	 	 	 	 	 	 	 d,d„Z	 	 d-	 	 	 	 	 	 	 d.d„Z	 	 	 d'	 	 	 	 	 	 	 	 	 	 	 	 	 d(d„Zdd/d„Z	 	 	 d'	 	 	 	 	 	 	 	 	 d)d„Z	 	 	 	 d0	 	 	 	 	 	 	 	 	 	 	 	 	 d1d„Z	 	 	 d'	 	 	 	 	 	 	 	 	 d)d„Z	 	 	 	 d0ddœ	 	 	 	 	 	 	 	 	 	 	 	 	 d2d„Zd3d„Zd4d„Z	 	 	 	 	 	 	 	 d5d„Z	 	 	 	 	 	 	 	 	 	 	 d6	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d7d„Z	 	 	 	 	 	 	 	 	 	 	 d6ddœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d8d„Z	 	 	 	 	 d9ddœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d:d„Z	 	 	 	 	 	 	 	 	 d;ddœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d<d„Z	 	 	 	 	 	 	 	 	 d;ddœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d<d„Zy)=Ú	ImageDrawNúNImageFont.ImageFont | ImageFont.FreeTypeFont | ImageFont.TransposedFont | NoneÚfontc                ó†  — |j                  «        |j                  r|j                  «        d}|€|j                  }||j                  k7  r$|dk(  r|j                  dk(  rd}nd}t	        |«      ‚|dk(  r|j
                  | _        nd| _        || _        |j                  | _        t        j                  j                  | j                  |«      | _
        || _        |dv r!| j                  j                  d«      | _        n | j                  j                  d	«      | _        |d
v rd| _        d| _        yd| _        d| _        y)a˜  
        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.
        r   NÚRGBAÚRGBr   zmode mismatchÚP)ÚIÚFéÿÿÿÿ)Ú1r   r   r   r   ÚLF)ÚloadÚreadonlyÚ_copyÚmodeÚ
ValueErrorÚpaletteÚ_imageÚimr   ÚcoreÚdrawÚdraw_inkÚinkÚfontmodeÚfill)Úselfr(   r$   ÚblendÚmsgs        úK/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/PIL/ImageDraw.pyÚ__init__zImageDraw.__init__E   s
  € ð 	�‰Œ	Ø�;Š;Ø�H‰HŒJØˆØˆ<Ø—7‘7ˆDØ�2—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Øˆ�	ó    c                ój   — | j                   sddlm}  |j                  «       | _         | j                   S )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   Ú r   Úload_default)r/   r   s     r2   ÚgetfontzImageDraw.getfonto   s*   € ð( �yŠyå#à.˜	×.Ñ.Ó0ˆDŒIØ�y‰yÐr4   c                óV   — |�ddl m}  |j                  |«      S | j                  «       S )Nr   r6   )r7   r   r8   r9   )r/   Ú	font_sizer   s      r2   Ú_getfontzImageDraw._getfontŠ   s,   € ð Ð Ý#à)�9×)Ñ)¨)Ó4Ð4à—<‘<“>Ð!r4   c                ó®  — d }d }|€.|€,| j                   r| j                  }||fS | j                  }||fS |��t        |t        «      r t	        j
                  || j                  «      }| j                  r6t        |t        «      r&| j                  j                  || j                  «      }| j                  j                  |«      }|��t        |t        «      r t	        j
                  || j                  «      }| j                  r6t        |t        «      r&| j                  j                  || j                  «      }| j                  j                  |«      }||fS ©N)r.   r,   Ú
isinstanceÚstrr   Úgetcolorr$   r&   Útupler'   r*   r+   )r/   r,   r.   Ú
result_inkÚresult_fills        r2   Ú_getinkzImageDraw._getink”   s   € ð ˆ
ØˆØˆ;˜4˜<Ø�yŠyØ"Ÿh™h�ð  ˜;Ð&Ð&ð "ŸX™X�
ð ˜;Ð&Ð&ð ˆÜ˜c¤3Ô'Ü$×-Ñ-¨c°4·9±9Ó=�CØ—<’<¤J¨s´EÔ$:ØŸ,™,×/Ñ/°°T·[±[ÓA�CØ!ŸY™Y×/Ñ/°Ó4�
ØÐÜ˜d¤CÔ(Ü%×.Ñ.¨t°T·Y±YÓ?�DØ—<’<¤J¨t´UÔ$;ØŸ<™<×0Ñ0°°t·{±{ÓC�DØ"Ÿi™i×0Ñ0°Ó6�Ø˜;Ð&Ð&r4   c                óp   — | j                  |«      \  }}|� | j                  j                  |||||«       yy)zDraw an arc.N)rE   r*   Údraw_arc)r/   ÚxyÚstartÚendr.   Úwidthr,   s          r2   ÚarczImageDraw.arc­   s:   € ð —L‘L Ó&‰	ˆˆTØˆ?Ø�I‰I×Ñ˜r 5¨#¨s°EÕ:ð r4   c                ó¨   — |j                  «        | j                  |«      \  }}|€|}|�(| j                  j                  ||j                  |«       yy)zDraw a bitmap.N)r!   rE   r*   Údraw_bitmapr(   )r/   rH   Úbitmapr.   r,   s        r2   rO   zImageDraw.bitmapº   sM   € ð 	�‰ŒØ—L‘L Ó&‰	ˆˆTØˆ;ØˆCØˆ?Ø�I‰I×!Ñ! " f§i¡i°Õ5ð r4   c                óÎ   — | j                  ||«      \  }}|�| j                  j                  ||||d«       |�-||k7  r'|dk7  r!| j                  j                  ||||d|«       yyyy)zDraw a chord.Nr   r   )rE   r*   Ú
draw_chord©	r/   rH   rI   rJ   r.   ÚoutlinerK   r,   Úfill_inks	            r2   ÚchordzImageDraw.chordÅ   sn   € ð Ÿ™ W¨dÓ3‰ˆˆXØÐØ�I‰I× Ñ   U¨C°¸1Ô=Øˆ?˜s hš°5¸A²:Ø�I‰I× Ñ   U¨C°°a¸Õ?ð 4>˜ˆ?r4   c                óÆ   — | j                  ||«      \  }}|�| j                  j                  ||d«       |�+||k7  r%|dk7  r| j                  j                  ||d|«       yyyy)zDraw an ellipse.Nr   r   )rE   r*   Údraw_ellipse©r/   rH   r.   rS   rK   r,   rT   s          r2   ÚellipsezImageDraw.ellipseÕ   sf   € ð Ÿ™ W¨dÓ3‰ˆˆXØÐØ�I‰I×"Ñ" 2 x°Ô3Øˆ?˜s hš°5¸A²:Ø�I‰I×"Ñ" 2 s¨A¨uÕ5ð 4>˜ˆ?r4   c                óh   — |d   |z
  |d   |z
  |d   |z   |d   |z   f}| j                  ||||«       y)z4Draw a circle given center coordinates and a radius.r   r   N)rY   )r/   rH   Úradiusr.   rS   rK   Ú
ellipse_xys          r2   ÚcirclezImageDraw.circleã   sD   € ð ˜‘e˜f‘n b¨¡e¨f¡n°b¸±e¸f±nÀbÈÁeÈfÁnÐUˆ
Ø�‰�Z  w°Õ6r4   c                óî  ‡— | j                  |«      d   }|��R| j                  j                  ||‰«       |dk(  �r.‰dkD  �r't        |d   t        t
        f«      rt        t        t        t              |«      }nGt        dt        |«      d«      D �cg c](  }t        t        t           t        |||dz    «      «      ‘Œ* }}t        dt        |«      dz
  «      D �]‹  }||   }||dz
     |f|||dz      ffD �	�
cg c]C  \  }	}
t        j                  t        j                  |
d   |	d   z
  |	d   |
d   z
  «      «      dz  ‘ŒE }}	}
|d   |d   k(  rŒw	 	 	 	 	 	 dˆfd„}|d   |d   kD  xr |d   d	z
  |d   kD  xs |d   |d   k  xr |d   d	z   |d   kD  }|d   ‰dz  z
  dz   |d   ‰dz  z
  dz   f|d   ‰dz  z   dz
  |d   ‰dz  z   dz
  fg}|r|d   d
z   |d   d
z   }
}	n|d   d
z
  |d   d
z
  }
}	| j                  ||	d
z
  |
d
z
  |«       ‰dkD  s�Œ7|r  |||d   d
z   «      | |||d   d
z   «      g}n |||d   d
z
  «      | |||d   d
z
  «      g}| j                  ||d¬«       �ŒŽ yyyyc c}w c c}
}	w )z6Draw a line, or a connected sequence of line segments.r   NÚcurveé   é   r   éh  c                óü   •— | \  }}|dz  }‰dz  dz
  }t        d„ ||t        j                  t        j                  |«      «      z  f||t        j                  t        j                  |«      «      z  ffD «       «      S )NéZ   ra   r   c              3  ó†   K  — | ]9  \  }}||d kD  rt        j                  |«      nt        j                  |«      z   –— Œ; y­w)r   N)ÚmathÚfloorÚceil)Ú.0ÚpÚp_ds      r2   ú	<genexpr>z9ImageDraw.line.<locals>.coord_at_angle.<locals>.<genexpr>  s9   è ø€ ò %á &  3ð °C¸!²G¤§¡¨C¤ÄÇÁÈ3ÃÕPñ%ùs   ‚?A)rB   rf   ÚcosÚradiansÚsin)ÚcoordÚangleÚxÚyÚdistancerK   s        €r2   Úcoord_at_anglez&ImageDraw.line.<locals>.coord_at_angle  s€   ø€ ð  %™˜˜1Ø ™˜Ø#(¨1¡9¨q¡=˜Ü$ñ %ð "# H¬t¯x©x¼¿¹ÀUÓ8KÓ/LÑ$LÐ MØ!" H¬t¯x©x¼¿¹ÀUÓ8KÓ/LÑ$LÐ Mð+ô%ó  ð r4   é´   rd   é   é   )rK   )rp   úSequence[float]rq   ÚfloatÚreturnztuple[float, ...])rE   r*   Ú
draw_linesr?   ÚlistrB   r   r   rz   ÚrangeÚlenrf   ÚdegreesÚatan2ÚpiesliceÚline)r/   rH   r.   rK   Újointr,   ÚpointsÚiÚpointrI   rJ   Úanglesru   ÚflippedÚcoordsÚ
gap_coordss      `            r2   rƒ   zImageDraw.lineï   s&  ø€ ð �l‰l˜4Ó  Ñ#ˆØ‰?Ø�I‰I× Ñ   S¨%Ô0Ø˜Ó E¨A£Iä˜b ™e¤d¬E ]Ô3Ü!¤(¬8´E©?Ñ";¸RÓ@‘Fô "' q¬#¨b«'°1Ó!5öàô œX¤e™_¬e°B°q¸1¸q¹5°MÓ.BÕCð�Fð ô ˜q¤# f£+°¡/Ó2ó 7=�AØ" 1™I�Eð
 $ A¨¡E™]¨EÐ2Ø" F¨1¨q©5¡MÐ2ð+÷ñ '˜E 3ô Ÿ™¤T§Z¡Z°°A±¸¸q¹Ñ0AÀ5ÈÁ8ÈcÐRSÉfÑCTÓ%UÓVØóð�Fñ ð ˜a‘y F¨1¡IÒ-à ðØ.ðØ7<ðà*õð ˜q™	 F¨1¡IÑ-ÒM°&¸±)¸c±/ÀFÈ1ÁIÑ2MòQà  ™) f¨Q¡iÑ/Ò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°f¸Q±iÀ"±nÓ EØ %Ù .¨u°f¸Q±iÀ"±nÓ Eð*™Jñ !/¨u°f¸Q±iÀ"±nÓ EØ %Ù .¨u°f¸Q±iÀ"±nÓ Eð*˜Jð
 Ÿ	™	 *¨d¸!˜	Ö<ño7=ð %.Ðð ùòùós   Â-I,Ã9AI1c                óØ   — |j                  «        | j                  ||«      \  }}|�| j                  j                  ||d«       |�$||k7  r| j                  j                  ||d«       yyy)z(Experimental) Draw a shape.Nr   r   )ÚcloserE   r*   Údraw_outline)r/   Úshaper.   rS   r,   rT   s         r2   r�   zImageDraw.shape<  se   € ð 	�‰ŒØŸ™ W¨dÓ3‰ˆˆXØÐØ�I‰I×"Ñ" 5¨(°AÔ6Øˆ?˜s hšØ�I‰I×"Ñ" 5¨#¨qÕ1ð  /ˆ?r4   c                óÎ   — | j                  ||«      \  }}|�| j                  j                  ||||d«       |�-||k7  r'|dk7  r!| j                  j                  ||||d|«       yyyy)zDraw a pieslice.Nr   r   )rE   r*   Údraw_pieslicerR   s	            r2   r‚   zImageDraw.piesliceJ  sn   € ð Ÿ™ W¨dÓ3‰ˆˆXØÐØ�I‰I×#Ñ# B¨¨s°H¸aÔ@Øˆ?˜s hš°5¸A²:Ø�I‰I×#Ñ# B¨¨s°C¸¸EÕBð 4>˜ˆ?r4   c                ój   — | j                  |«      \  }}|�| j                  j                  ||«       yy)z#Draw one or more individual pixels.N)rE   r*   Údraw_points)r/   rH   r.   r,   s       r2   r‡   zImageDraw.pointZ  s2   € à—L‘L Ó&‰	ˆˆTØˆ?Ø�I‰I×!Ñ! " cÕ*ð r4   c                ó¾  — | j                  ||«      \  }}|�| j                  j                  ||d«       |��¦||k7  �rŸ|dk7  �r˜|dk(  r| j                  j                  ||d|«       y| j                  ��ft	        j
                  d| j                  j                  «      }| j                  d«      d   }|j                  «       }	t        |	«      }
|
j                  j                  ||d«       |j                  «       }t        |«      }
|dz  dz
  }|
j                  j                  ||d|«       |j                  ||	¬«       t	        j
                  | j                  | j                  j                  «      }t        |«      }
|
j                  j                  ||d|«       | j                  j                  |j                  d|j                  z   |j                  «       yyyyy)zDraw a polygon.Nr   r   r   ra   )Úmask©r   r   )rE   r*   Údraw_polygonr(   r   ÚnewÚsizeÚcopyÚDrawÚpaster$   )r/   rH   r.   rS   rK   r,   rT   r•   Úmask_inkÚfill_imr*   Úink_imr(   s                r2   ÚpolygonzImageDraw.polygon`  s}  € ð Ÿ™ W¨dÓ3‰ˆˆXØÐØ�I‰I×"Ñ" 2 x°Ô3Ø‰?˜s h›°5¸A³:Ø˜ŠzØ—	‘	×&Ñ& r¨3°°5Õ9Ø—‘Ñ$ô —y‘y  d§g¡g§l¡lÓ3�ØŸ<™<¨›?¨1Ñ-�àŸ)™)›+�Ü˜G“}�Ø—	‘	×&Ñ& r¨8°QÔ7àŸ™›�Ü˜F“|�Ø ™	 A™�Ø—	‘	×&Ñ& r¨8°Q¸Ô>à—
‘
˜6¨�
Ô0ä—Y‘Y˜tŸy™y¨$¯'©'¯,©,Ó7�Ü˜B“x�Ø—	‘	×&Ñ& r¨3°°5Ô9Ø—‘—‘˜bŸe™e V¨b¯g©gÑ%5°t·w±wÕ?ð) %ð 4>˜ˆ?r4   c                óF   — t        |||«      }| j                  ||||«       y)zDraw a regular polygon.N)Ú!_compute_regular_polygon_verticesr    )r/   Úbounding_circleÚn_sidesÚrotationr.   rS   rK   rH   s           r2   Úregular_polygonzImageDraw.regular_polygon„  s$   € ô /¨ÀÈÓRˆØ�‰�R˜˜w¨Õ.r4   c                óÆ   — | j                  ||«      \  }}|�| j                  j                  ||d«       |�+||k7  r%|dk7  r| j                  j                  ||d|«       yyyy)zDraw a rectangle.Nr   r   )rE   r*   Údraw_rectanglerX   s          r2   Ú	rectanglezImageDraw.rectangle‘  sf   € ð Ÿ™ W¨dÓ3‰ˆˆXØÐØ�I‰I×$Ñ$ R¨°1Ô5Øˆ?˜s hš°5¸A²:Ø�I‰I×$Ñ$ R¨¨a°Õ7ð 4>˜ˆ?r4   )Úcornersc               óà  ‡ ‡‡‡‡‡‡‡‡‡‡‡— t        |d   t        t        f«      r(t        t        t        t
              |«      \  \  ŠŠ\  ŠŠnt        t        t
           |«      \  ŠŠŠŠ‰‰k  rd}t        |«      ‚‰‰k  rd}t        |«      ‚‰€dŠ|dz  Št        ‰«      Št        ‰«      Št        ‰«      Št        ‰«      Šd\  ŠŠt        ‰«      r<‰‰‰z
  dz
  k\  Š‰r‰‰z
  Š‰‰‰z
  dz
  k\  Š‰r‰‰z
  Š‰r‰r‰ j                  |||‰«      S ‰dk(  st        ‰«      s‰ j                  |||‰«      S t        ‰dz  «      }‰ j                  ||«      \  ŠŠdˆˆˆˆˆˆˆ ˆˆˆˆˆfd	„}	‰�� |	d
«       ‰r.‰ j                  j                  ‰‰|z   dz   ‰‰|z
  dz
  f‰d«       n>‰|z
  dz
  ‰|z   dz   kD  r-‰ j                  j                  ‰|z   dz   ‰‰|z
  dz
  ‰f‰d«       ‰s¢‰s ‰‰‰|z   ‰g}
‰d   r|
dxx   |dz   z  cc<   ‰d   r|
dxx   |dz   z  cc<   ‰ j                  j                  |
‰d«       ‰|z
  ‰‰‰g}‰d   r|dxx   |dz   z  cc<   ‰d   r|dxx   |dz   z  cc<   ‰ j                  j                  |‰d«       ‰��h‰‰k7  �ra‰dk7  �rZ |	d«       ‰s¦‰‰‰‰‰z   dz
  g}‰d   r|dxx   |dz   z  cc<   ‰d   r|dxx   |dz   z  cc<   ‰ j                  j                  |‰d«       ‰‰‰z
  dz   ‰‰g}‰d   r|dxx   |dz   z  cc<   ‰d   r|dxx   |dz   z  cc<   ‰ j                  j                  |‰d«       ‰s§‰‰‰‰z   dz
  ‰g}
‰d   r|
dxx   |dz   z  cc<   ‰d   r|
dxx   |dz   z  cc<   ‰ j                  j                  |
‰d«       ‰‰z
  dz   ‰‰‰g}‰d   r|dxx   |dz   z  cc<   ‰d   r|dxx   |dz   z  cc<   ‰ j                  j                  |‰d«       yyyyy)zDraw a rounded rectangle.r   z&x1 must be greater than or equal to x0z&y1 must be greater than or equal to y0N)TTTTra   )FFr   c                óÀ  •— ‰r‰‰‰‰z   ‰‰z   fddf‰‰‰z
  ‰‰z   ‰fddff}nv‰r‰‰‰‰z   ‰‰z   fddf‰‰z
  ‰‰‰‰z   fddff}nUt        ˆfd„t        ‰‰‰‰z   ‰‰z   fddf‰‰z
  ‰‰‰‰z   fddf‰‰z
  ‰‰z
  ‰‰fddf‰‰‰z
  ‰‰z   ‰fddff«      D «       «      }|D ]A  }| r ‰	j                  j                  |‰dfz   Ž  Œ$ ‰	j                  j                  |‰‰
fz   Ž  ŒC y )Nrv   rb   r   rd   é  c              3  ó2   •K  — | ]  \  }}‰|   r|–— Œ y ­wr>   © )ri   r†   Úpartrª   s      €r2   rl   zDImageDraw.rounded_rectangle.<locals>.draw_corners.<locals>.<genexpr>ä  s&   øè ø€ ò á˜˜4ð ˜q’zô ñùs   ƒr   )rB   Ú	enumerater*   r‘   rG   )r‚   Úpartsr°   rª   ÚdrT   Úfull_xÚfull_yr,   r/   rK   Úx0Úx1Úy0Úy1s      €€€€€€€€€€€€r2   Údraw_cornersz1ImageDraw.rounded_rectangle.<locals>.draw_cornersÔ  sf  ø€ áð ˜"˜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Ð?ð	ó$ôó �ð ò ?�ÙØ+�D—I‘I×+Ñ+¨d°hÀ°]Ñ.BÒDà&�D—I‘I×&Ñ&¨°°e°Ñ)<Ò>ñ	?r4   Trx   F)r‚   Úboolr{   ÚNone)r?   r}   rB   r   r   rz   r%   ÚroundÚallrY   Úanyr©   ÚintrE   r*   r¨   )r/   rH   r[   r.   rS   rK   rª   r1   Úrrº   ÚleftÚrightÚtopÚbottomr³   rT   r´   rµ   r,   r¶   r·   r¸   r¹   s   `    ``       @@@@@@@@@r2   Úrounded_rectanglezImageDraw.rounded_rectangleŸ  sW  ÿû€ ô �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œð —>‘> " d¨G°UÓ;Ð;ä��Q‘‹KˆØŸ™ W¨dÓ3‰ˆˆX÷ 	?÷  	?ð  	?ðD ÑÙ˜ÔáØ—	‘	×(Ñ(¨"¨b°1©f°q©j¸"¸bÀ1¹fÀq¹jÐ)IÈ8ÐUVÕWØ�a‘˜!‘˜b 1™f q™jÒ(Ø—	‘	×(Ñ(¨"¨q©&°1©*°b¸"¸q¹&À1¹*ÀbÐ)IÈ8ÐUVÔWÙ¡&Ø˜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³:Ù˜ÔáØ˜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ÙØ˜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>˜ˆ?r4   c                ó2   — t        |t        «      rdnd}||v S ©Nú
ó   
)r?   r@   )r/   ÚtextÚsplit_characters      r2   Ú_multiline_checkzImageDraw._multiline_check+  s   € Ü",¨T´3Ô"7™$¸Uˆà $Ð&Ð&r4   c                óP   — |j                  t        |t        «      rd«      S d«      S rÈ   )Úsplitr?   r@   )r/   rË   s     r2   Ú_multiline_splitzImageDraw._multiline_split0  s"   € Ø�z‰z¤*¨T´3Ô"7˜$ÓCÐC¸UÓCÐCr4   c                ó>   — | j                  dd||¬«      d   |z   |z   S )Nr–   ÚA)Ústroke_widthrx   )Útextbbox)r/   r   ÚspacingrÓ   s       r2   Ú_multiline_spacingzImageDraw._multiline_spacing3  s2   € ð �M‰M˜& # t¸,ˆMÓGÈÑJØñàñð	
r4   c                ó’  ‡ ‡‡‡‡‡‡	‡
‡‡‡— ‰r‰ j                   dvrd}t        |«      ‚‰€ ‰ j                  ‰j                  d«      «      Š‰ j	                  ‰«      r‰ j                  ‰‰|‰‰||‰‰	‰
||‰«      S dˆ fd„}d	d
ˆˆˆˆˆ	ˆˆˆ
ˆ ˆˆfd„} ||«      }|�.d}|r|� ||«      n|}|� |||«        ||d«       y ||«       yy)z
Draw text.©r   r   ú3Embedded color supported only in RGB and RGBA modesNr;   c                ó@   •— ‰j                  | «      \  }}|€|€J ‚|S |S r>   )rE   )r.   r,   rT   r/   s      €r2   ÚgetinkzImageDraw.text.<locals>.getinko  s0   ø€ Ø ŸL™L¨Ó.‰MˆC�Øˆ{ØÐ+Ð+Ð+Ø�ØˆJr4   r   c                óv  •— ‰j                   }|dk(  r‰rd}g }t        d«      D ]  }|j                  t        ‰|   «      «       Œ! t	        j
                  ‰d   «      d   t	        j
                  ‰d   «      d   f}	  ‰j                  ‰|g‰¢­‰‰‰|‰| |dœ‰¤Ž\  }}|d   |d   z   |d   |d   z   g}|dk(  r’||j                  d«      }}t        j                  d| «      d   }	|j                  d|	«       |\  }
}‰j                  �B‰j                  j                  ||
||
|j                   d   z   ||j                   d   z   f|«       y y ‰j"                  j%                  ||| «       y # t        $ rE 	  ‰j                  ‰|‰‰‰|‰| g‰¢­d|i‰¤Ž}n # t        $ r ‰j                  ‰«      }Y nw xY wY �Œw xY w)	Nr   r   ra   r   )Ú	directionÚfeaturesÚlanguagerÓ   Úanchorr,   rI   rI   rx   r†   )r-   r~   ÚappendrÀ   rf   ÚmodfÚgetmask2ÚAttributeErrorÚgetmaskÚ	TypeErrorÚgetbandÚstructÚpackÚfillbandr(   rœ   r™   r*   rN   )r,   rÓ   r$   rp   r†   rI   r•   ÚoffsetÚcolorÚ	ink_alpharr   rs   rà   ÚargsrÝ   Úembedded_colorrÞ   r   Úkwargsrß   r/   rË   rH   s               €€€€€€€€€€€r2   Ú	draw_textz!ImageDraw.text.<locals>.draw_textv  s  ø€ Ø—=‘=ˆDØ˜qÒ ¡^Ø�ØˆEÜ˜1“Xò )�Ø—‘œS  A¡›ZÕ(ð)ä—Y‘Y˜r !™uÓ% aÑ(¬$¯)©)°B°q±EÓ*:¸1Ñ*=Ð>ˆEð.Ø,˜tŸ}™}ØØð ð ñ ð (Ø%Ø%Ø!-Ø!ØØñ ð ñ ‘��fð ˜q™ F¨1¡IÑ-¨u°Q©x¸&À¹)Ñ/CÐD�ð$ �vŠ~ð # D§L¡L°£O�t�Ü"ŸK™K¨¨SÓ1°!Ñ4�	Ø—‘˜q )Ô,Ø‘��1Ø—7‘7Ð&Ø—G‘G—M‘MØ  1 a¨$¯)©)°A©,Ñ&6¸¸D¿I¹IÀa¹LÑ8HÐIÈ4õð 'ð
 —	‘	×%Ñ% e¨T°3Õ7øô; "ò .ð.Ø'˜4Ÿ<™<ØØØ!Ø Ø Ø$ØØðð òð $ðð !ñ‘Døô !ò .ØŸ<™<¨Ó-’Dð.ýð.ús6   Á=8E* Å*	F8Å4FÆF8ÆF1Æ.F8Æ0F1Æ1F8Æ7F8)r.   ú_Ink | Noner{   rÀ   )r   )r,   rÀ   rÓ   rz   r{   r¼   )r$   r%   r<   ÚgetrÍ   Úmultiline_text)r/   rH   rË   r.   r   rà   rÕ   ÚalignrÝ   rÞ   rß   rÓ   Ústroke_fillrï   rî   rð   r1   rÛ   rñ   r,   Ú
stroke_inks   ``` ``  ```  ```     r2   rË   zImageDraw.text?  sð   ÿú€ ñ0 ˜dŸi™i¨Ñ>ØGˆCÜ˜S“/Ð!àˆ<Ø—=‘= §¡¨KÓ!8Ó9ˆDà× Ñ  Ô&Ø×&Ñ&ØØØØØØØØØØØØØóð õ 	÷4	8÷ 4	8ð 4	8ñl �T‹lˆØˆ?ØˆJÙØ4?Ð4K™V KÔ0ÐQT�
àÐ%á˜* lÔ3ñ ˜#˜qÕ!ñ ˜#•ð r4   )r;   c               ó  — |dk(  rd}t        |«      ‚|€d}n/t        |«      dk7  rd}t        |«      ‚|d   dv rd}t        |«      ‚|€| j                  |«      }g }d	}| j                  |«      }| j	                  |||«      }|D ]5  }| j                  ||||	|
¬
«      }|j                  |«       t        ||«      }Œ7 |d   }|d   dk(  r|t        |«      dz
  |z  dz  z  }n|d   dk(  r|t        |«      dz
  |z  z  }t        |«      D ]  \  }}|d	   }|||   z
  }|d	   dk(  r	||dz  z  }n|d	   dk(  r||z  }|dk(  rn&|dk(  r	||dz  z  }n|dk(  r||z  }nd}t        |«      ‚| j                  ||f||||||	|
|||¬«       ||z  }Œ� y )NÚttbú/ttb direction is unsupported for multiline textÚlara   ú#anchor must be a 2 character stringr   Útbú'anchor not supported for multiline textr   )rÝ   rÞ   rß   Úmç       @r³   rÁ   rÂ   ÚcenterrÃ   ú)align must be "left", "center" or "right")rÝ   rÞ   rß   rÓ   rö   rï   )
r%   r   r<   rÐ   rÖ   Ú
textlengthrá   Úmaxr±   rË   )r/   rH   rË   r.   r   rà   rÕ   rõ   rÝ   rÞ   rß   rÓ   rö   rï   r;   r1   ÚwidthsÚ	max_widthÚlinesÚline_spacingrƒ   Ú
line_widthrÄ   ÚidxrÂ   Úwidth_differences                             r2   rô   zImageDraw.multiline_text¼  s'  € ð. ˜ÒØCˆCÜ˜S“/Ð!àˆ>Ø‰FÜ�‹[˜AÒØ7ˆCÜ˜S“/Ð!Ø�A‰Y˜$ÑØ;ˆCÜ˜S“/Ð!àˆ<Ø—=‘= Ó+ˆDàˆØˆ	Ø×%Ñ% dÓ+ˆØ×.Ñ.¨t°W¸lÓKˆØò 	3ˆDØŸ™Ø�d i¸(ÈXð )ó ˆJð �M‰M˜*Ô%Ü˜I zÓ2‰Ið	3ð �‰eˆØ�!‰9˜ÒØ”C˜“J ‘N lÑ2°SÑ8Ñ8‰CØ�A‰Y˜#ÒØ”C˜“J ‘N lÑ2Ñ2ˆCä" 5Ó)ò "	 ‰IˆC�Ø�a‘5ˆDØ(¨6°#©;Ñ6Ðð �a‰y˜CÒØÐ(¨3Ñ.Ñ.‘Ø˜‘˜cÒ!ØÐ(Ñ(�ð ˜ŠØØ˜(Ò"ØÐ(¨3Ñ.Ñ.‘Ø˜'Ò!ØÐ(Ñ(‘àA�Ü  “oÐ%à�I‰IØ�s�ØØØØØ#Ø!Ø!Ø)Ø'Ø-ð ô ð �<Ñ‰CñE"	 r4   c               óè   — | j                  |«      rd}t        |«      ‚|r| j                  dvrd}t        |«      ‚|€| j                  |«      }|rdn| j                  }	|j                  ||	|||«      S )z@Get the length of a given string, in pixels with 1/64 precision.z&can't measure length of multiline textrØ   rÙ   r   )rÍ   r%   r$   r<   r-   Ú	getlength)
r/   rË   r   rÝ   rÞ   rß   rï   r;   r1   r$   s
             r2   r  zImageDraw.textlength  su   € ð" × Ñ  Ô&Ø:ˆCÜ˜S“/Ð!Ù˜dŸi™i¨Ñ>ØGˆCÜ˜S“/Ð!àˆ<Ø—=‘= Ó+ˆDÙ'‰v¨T¯]©]ˆØ�~‰~˜d D¨)°X¸xÓHÐHr4   c               ó\  — |r| j                   dvrd}t        |«      ‚|€| j                  |«      }| j                  |«      r| j	                  |||||||||	|
|«      S |rdn| j
                  }|j                  |||||	|
|«      }|d   |d   z   |d   |d   z   |d   |d   z   |d   |d   z   fS )z2Get the bounding box of a given string, in pixels.rØ   rÙ   r   r   r   ra   rx   )r$   r%   r<   rÍ   Úmultiline_textbboxr-   Úgetbbox)r/   rH   rË   r   rà   rÕ   rõ   rÝ   rÞ   rß   rÓ   rï   r;   r1   r$   Úbboxs                   r2   rÔ   zImageDraw.textbbox5  sã   € ñ, ˜dŸi™i¨Ñ>ØGˆCÜ˜S“/Ð!àˆ<Ø—=‘= Ó+ˆDà× Ñ  Ô&Ø×*Ñ*ØØØØØØØØØØØóð ñ (‰v¨T¯]©]ˆØ�|‰|Ø�$˜	 8¨X°|ÀVó
ˆð �A‰w˜˜A™‰  Q¡¨"¨Q©%¡°°a±¸2¸a¹5±À$ÀqÁ'ÈBÈqÉEÁ/ÐQÐQr4   c               óØ  — |dk(  rd}t        |«      ‚|€d}n/t        |«      dk7  rd}t        |«      ‚|d   dv rd}t        |«      ‚|€| j                  |«      }g }d	}| j                  |«      }| j	                  |||
«      }|D ]6  }| j                  |||||	|¬
«      }|j                  |«       t        ||«      }Œ8 |d   }|d   dk(  r|t        |«      dz
  |z  dz  z  }n|d   dk(  r|t        |«      dz
  |z  z  }d }t        |«      D ]È  \  }}|d	   }|||   z
  }|d	   dk(  r	||dz  z  }n|d	   dk(  r||z  }|dk(  rn&|dk(  r	||dz  z  }n|dk(  r||z  }nd}t        |«      ‚| j                  ||f||||||	|
|¬«	      }|€|}nFt        |d	   |d	   «      t        |d   |d   «      t        |d   |d   «      t        |d   |d   «      f}||z  }ŒÊ |€|d	   |d   |d	   |d   fS |S )Nrù   rú   rû   ra   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  r±   rÔ   Úmin)r/   rH   rË   r   rà   rÕ   rõ   rÝ   rÞ   rß   rÓ   rï   r;   r1   r  r  r  r  rƒ   r	  rÄ   r  r
  rÂ   r  Ú	bbox_lines                             r2   r  zImageDraw.multiline_textbboxg  s¸  € ð* ˜ÒØCˆCÜ˜S“/Ð!àˆ>Ø‰FÜ�‹[˜AÒØ7ˆCÜ˜S“/Ð!Ø�A‰Y˜$ÑØ;ˆCÜ˜S“/Ð!àˆ<Ø—=‘= Ó+ˆDàˆØˆ	Ø×%Ñ% dÓ+ˆØ×.Ñ.¨t°W¸lÓKˆØò 
	3ˆDØŸ™ØØØ#Ø!Ø!Ø-ð )ó ˆJð �M‰M˜*Ô%Ü˜I zÓ2‰Ið
	3ð �‰eˆØ�!‰9˜ÒØ”C˜“J ‘N lÑ2°SÑ8Ñ8‰CØ�A‰Y˜#ÒØ”C˜“J ‘N lÑ2Ñ2ˆCà9=ˆä" 5Ó)ò *	 ‰IˆC�Ø�a‘5ˆDØ(¨6°#©;Ñ6Ðð �a‰y˜CÒØÐ(¨3Ñ.Ñ.‘Ø˜‘˜cÒ!ØÐ(Ñ(�ð ˜ŠØØ˜(Ò"ØÐ(¨3Ñ.Ñ.‘Ø˜'Ò!ØÐ(Ñ(‘àA�Ü  “oÐ%àŸ™Ø�s�ØØØØ#Ø!Ø!Ø)Ø-ð &ó 
ˆIð ˆ|Ø ‘ô ˜˜Q™ ¨1¡Ó.Ü˜˜Q™ ¨1¡Ó.Ü˜˜Q™ ¨1¡Ó.Ü˜˜Q™ ¨1¡Ó.ð	�ð �<Ñ‰CðU*	 ðX ˆ<Ø�a‘5˜"˜Q™%  A¡¨¨1©Ð-Ð-Øˆr4   r>   )r(   úImage.Imager$   ú
str | Noner{   r¼   )r{   úGImageFont.ImageFont | ImageFont.FreeTypeFont | ImageFont.TransposedFont)r;   úfloat | Noner{   r  )r,   rò   r.   rò   r{   ztuple[int | None, int | None])Nr   )rH   r   rI   rz   rJ   rz   r.   rò   rK   rÀ   r{   r¼   )rH   zSequence[int]rO   r  r.   rò   r{   r¼   )NNr   )rH   r   rI   rz   rJ   rz   r.   rò   rS   rò   rK   rÀ   r{   r¼   )
rH   r   r.   rò   rS   rò   rK   rÀ   r{   r¼   )rH   ry   r[   rz   r.   rò   rS   rò   rK   rÀ   r{   r¼   )Nr   N)
rH   r   r.   rò   rK   rÀ   r„   r  r{   r¼   ©NN)r�   zImage.core._Outliner.   rò   rS   rò   r{   r¼   )rH   r   r.   rò   r{   r¼   )r   NNr   )r£   ú!Sequence[Sequence[float] | float]r¤   rÀ   r¥   rz   r.   rò   rS   rò   rK   rÀ   r{   r¼   )rH   r   r[   rz   r.   rò   rS   rò   rK   rÀ   rª   z$tuple[bool, bool, bool, bool] | Noner{   r¼   )rË   r   r{   r»   )rË   r   r{   zlist[AnyStr])r   r  rÕ   rz   rÓ   rz   r{   rz   )NNNr`   rÂ   NNNr   NF) rH   útuple[float, float]rË   r   r.   rò   r   r   rà   r  rÕ   rz   rõ   r@   rÝ   r  rÞ   úlist[str] | Nonerß   r  rÓ   rz   rö   rò   rï   r»   rî   r   rð   r   r{   r¼   )rH   r  rË   r   r.   rò   r   r   rà   r  rÕ   rz   rõ   r@   rÝ   r  rÞ   r  rß   r  rÓ   rz   rö   rò   rï   r»   r;   r  r{   r¼   )NNNNF)rË   r   r   r   rÝ   r  rÞ   r  rß   r  rï   r»   r;   r  r{   rz   )	NNr`   rÂ   NNNr   F)rH   r  rË   r   r   r   rà   r  rÕ   rz   rõ   r@   rÝ   r  rÞ   r  rß   r  rÓ   rz   rï   r»   r;   r  r{   z!tuple[float, float, float, float])Ú__name__Ú
__module__Ú__qualname__r   Ú__annotations__r3   r9   r<   rE   rL   rO   rU   rY   r]   rƒ   r�   r‚   r‡   r    r¦   r©   rÆ   rÍ   rÐ   rÖ   rË   rô   r  rÔ   r  r¯   r4   r2   r   r   @   sµ  … ð 	ð 	ØVóô(ðTà	Póð6"Ø%ð"à	Pó"ð 59ð'Øð'Ø&1ð'à	&ó'ð< !Øð;àð;ð ð;ð ð	;ð
 ð;ð ð;ð 
ó;ð KOð	6Øð	6Ø)4ð	6Ø<Gð	6à	ó	6ð  !Ø#Øð@àð@ð ð@ð ð	@ð
 ð@ð ð@ð ð@ð 
ó@ð& !Ø#Øð6àð6ð ð6ð ð	6ð
 ð6ð 
ó6ð$ !Ø#Øð
7àð
7ð ð
7ð ð	
7ð
 ð
7ð ð
7ð 
ó
7ð !ØØ ðK=àðK=ð ðK=ð ð	K=ð
 ðK=ð 
óK=ð` !Ø#ð	2à"ð2ð ð2ð ð	2ð
 
ó2ð& !Ø#ØðCàðCð ðCð ð	Cð
 ðCð ðCð ðCð 
óCô +ð !Ø#Øð"@àð"@ð ð"@ð ð	"@ð
 ð"@ð 
ó"@ðP Ø Ø#Øð/à:ð/ð ð/ð ð	/ð
 ð/ð ð/ð ð/ð 
ó/ð  !Ø#Øð8àð8ð ð8ð ð	8ð
 ð8ð 
ó8ð" Ø Ø#ØðJ8ð 9=ñJ8àðJ8ð ðJ8ð ð	J8ð
 ðJ8ð ðJ8ð 6ðJ8ð 
óJ8óX'ó
Dð

àUð

ð ð

ð ð	

ð
 
ó

ð  !ð Ø!ØØØ $Ø%)Ø#ØØ#'Ø$ð'{àð{ð ð{ð ð	{ðð{ð ð{ð ð{ð ð{ð ð{ð #ð{ð  ð!{ð" ð#{ð$ !ð%{ð& ð'{ð( ð){ð* ð+{ð, 
ó-{ðB !ð Ø!ØØØ $Ø%)Ø#ØØ#'Ø$ð'Z ð* #'ñ+Z àðZ ð ðZ ð ð	Z ððZ ð ðZ ð ðZ ð ðZ ð ðZ ð #ðZ ð  ð!Z ð" ð#Z ð$ !ð%Z ð& ð'Z ð*  ð+Z ð, 
ó-Z ðH Ø $Ø%)Ø#Ø$ðIð #'ñIàðIðð	Ið ðIð #ðIð ðIð ðIð  ðIð 
óIðL Ø!ØØØ $Ø%)Ø#ØØ$ð#0Rð& #'ñ'0Ràð0Rð ð0Rð
ð0Rð ð0Rð ð0Rð ð0Rð ð0Rð #ð0Rð ð0Rð  ð!0Rð" ð#0Rð&  ð'0Rð( 
+ó)0Rðv Ø!ØØØ $Ø%)Ø#ØØ$ð#kð& #'ñ'kàðkð ðkð
ðkð ðkð ðkð ðkð ðkð #ðkð ðkð  ð!kð" ð#kð&  ð'kð( 
+ô)kr4   r   c                ó^   — 	  t        | d«      |«      S # t        $ r t        | |«      cY S w xY w)a‹  
    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     r2   r›   r›   Õ  s7   € ð#Ø%Œw�r˜9Ó% dÓ+Ð+øÜò #Ü˜˜TÓ"Ò"ð#ús   ‚ ”,«,c                ó^   — |�t        dd«       ddlm} | � |j                  | «      nd}||fS )z¦
    :param im: The image to draw in.
    :param hints: An optional list of hints. Deprecated.
    :returns: A (drawing context, drawing resource factory) tuple.
    Nz'hints' parameteré   r   )r   )r   r7   r   r›   )r(   Úhintsr   r*   s       r2   r"  r"  æ  s9   € ð ÐÜÐ% rÔ*Ýà"$ .ˆ?ˆ:�?‰?˜2Ô°d€DØ�ÐÐr4   c                ó(  — | j                  «       }|€J ‚|\  }}	 |||f   }t        ||«      |k  ry||||f<   ||fh}	t	        «       }
|	rŸt	        «       }|	D ]ˆ  \  }}|dz   |f|dz
  |f||dz   f||dz
  ffD ]f  \  }}||f|
v s
|dk  s|dk  rŒ	 |||f   }|
j                  ||f«       |€t        ||«      |k  }n|||fv}|sŒM||||f<   |j                  ||f«       Œh ŒŠ |	}
|}	|	rŒžyy# t        t        f$ r Y yw xY w# t        t        f$ r Y Œšw xY w)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.
    Nr   r   )r!   Ú_color_diffr%   Ú
IndexErrorÚsetÚadd)ÚimagerH   ÚvalueÚborderÚthreshÚpixelrr   rs   Ú
backgroundÚedgeÚ	full_edgeÚnew_edgeÚsÚtrj   r.   s                   r2   Ú	floodfillr7  ö  s‰  € ð6 �J‰J‹L€EØÐÐÐØ�D€A€qðØ˜1˜a˜4‘[ˆ
Ü�u˜jÓ)¨VÒ3ØØˆˆa�ˆd‰ð �ˆFˆ8€Dô “€IÙ
Ü“5ˆØò 	-‰DˆAˆqØ˜a™% ˜ a¨!¡e¨Q Z°!°Q¸±U°¸aÀÀQÁ¸ZÐHò -‘��1à�q�6˜YÑ&¨!¨aª%°1°q²5Øð-Ø˜a ˜d™�Að —M‘M 1 a &Ô)Ø�~Ü*¨1¨jÓ9¸VÑC™à ¨°¨Ð7˜ÚØ&+˜˜a ˜d™Ø Ÿ™ a¨ VÕ,ñ!-ð	-ð$ ˆ	Øˆô+ øô œ
Ð#ò Ùðûô #¤JÐ/ò Ùðús(   ›C* ²C* ÂC?Ã*C<Ã;C<Ã?DÄDc                óª  ‡‡	‡
— t        |t        «      sd}t        |«      ‚|dk  rd}t        |«      ‚t        | t        t
        f«      sd}t        |«      ‚t        | «      dk(  rCt        d„ | D «       «      sd}t        |«      ‚t        t        t           t	        | «      «      �^ Š	Š
nÄt        | «      dk(  r©t        | d   t        t
        f«      r�t        d	„ | d   D «       «      rt        | d
   t        t        f«      sd}t        |«      ‚t        | d   «      dk7  rd}t        |«      ‚t        t        t           t	        | d   «      «      Š	t        t        | d
   «      Š
nd}t        |«      ‚‰
dk  rd}t        |«      ‚t        |t        t        f«      sd}t        |«      ‚dˆ	fd„Šdˆˆ
fd„}dd„} |||«      }|D �cg c]
  } ||«      ‘Œ c}S c c}w )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 intrx   zn_sides should be an int > 2z$bounding_circle should be a sequencec              3  óH   K  — | ]  }t        |t        t        f«      –— Œ y ­wr>   ©r?   rÀ   rz   ©ri   r†   s     r2   rl   z4_compute_regular_polygon_vertices.<locals>.<genexpr>o  s   è ø€ ÒH°1”:˜a¤#¤u ×.ÑHùó   ‚ "z0bounding_circle should only contain numeric datara   r   c              3  óH   K  — | ]  }t        |t        t        f«      –— Œ y ­wr>   r:  r;  s     r2   rl   z4_compute_regular_polygon_vertices.<locals>.<genexpr>u  s    è ø€ ò 
Ø,-ŒJ�qœ3¤˜,×'ñ
ùr<  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                óÐ  •— t        | d   t        j                  t        j                  d|z
  «      «      z  | d   t        j                  t        j                  d|z
  «      «      z  z
  ‰d   z   d«      t        | d   t        j                  t        j                  d|z
  «      «      z  | d   t        j                  t        j                  d|z
  «      «      z  z   ‰d   z   d«      fS )Nr   rb   r   ra   )r½   rf   rm   rn   ro   )r‡   r€   Úcentroids     €r2   Ú_apply_rotationz:_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‘+ñð ó	ð
ð 	
r4   c                ó   •— ‰dg} ‰|| «      S ©Nr   r¯   )rq   Ústart_pointr@  Úpolygon_radiuss     €€r2   Ú_compute_polygon_vertexzB_compute_regular_polygon_vertices.<locals>._compute_polygon_vertex¢  s   ø€ Ø% qÐ)ˆÙ˜{¨EÓ2Ð2r4   c                óŽ   — g }d| z  }dd|z  z
  |z   }t        d| «      D ]#  }|j                  |«       ||z  }|dkD  sŒ|dz  }Œ% |S )Nrb   r­   g      à?r   )r~   rá   )r¤   r¥   rˆ   r€   Úcurrent_angleÚ_s         r2   Ú_get_anglesz6_compute_regular_polygon_vertices.<locals>._get_angles¦  sh   € ØˆØ˜‘-ˆà˜s W™}Ñ,°Ñ8ˆÜ�q˜'Ó"ò 	%ˆAØ�M‰M˜-Ô(Ø˜WÑ$ˆMØ˜sÓ"Ø Ñ$‘ð		%ð
 ˆr4   )r‡   úlist[float]r€   rz   r{   r  )rq   rz   r{   r  )r¤   rÀ   r¥   rz   r{   rJ  )
r?   rÀ   ræ   r%   r}   rB   r   r¾   r   rz   )r£   r¤   r¥   r1   rE  rI  rˆ   rq   r@  r?  rD  s           @@@r2   r¢   r¢   7  sÄ  ú€ ôV �gœsÔ#Ø(ˆÜ˜‹nÐØ�‚{Ø,ˆÜ˜‹oÐô �o¬¬e }Ô5Ø4ˆÜ˜‹nÐä
ˆ?Ó˜qÒ ÜÑH¸ÔHÔHØDˆCÜ˜S“/Ð!ä$(¬¬e©´d¸?Ó6KÓ$LÑ!ˆ‘>Ü	ˆ_Ó	 Ò	"¤z°/À!Ñ2DÄtÌUÀmÔ'TÜñ 
Ø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ó
ñ ˜ (Ó+€Fð 9?Ö?¨uÑ# EÕ*Ò?Ð?ùÒ?s   Æ>Gc           	     óª   ‡‡— t        | t        «      r| n| fŠt        |t        «      r|n|fŠt        ˆˆfd„t        dt	        ‰«      «      D «       «      S )zJ
    Uses 1-norm distance to calculate difference between two values.
    c              3  óF   •K  — | ]  }t        ‰|   ‰|   z
  «      –— Œ y ­wr>   )Úabs)ri   r†   ÚfirstÚseconds     €€r2   rl   z_color_diff.<locals>.<genexpr>Â  s#   øè ø€ ÒH¨QŒs�5˜‘8˜f Q™iÑ'×(ÑHùs   ƒ!r   )r?   rB   Úsumr~   r   )Úcolor1Úcolor2rN  rO  s     @@r2   r(  r(  ¹  sE   ù€ ô ! ¬Ô/‰F°f°Y€EÜ! &¬%Ô0‰V°v°i€FäÔH´%¸¼3¸v»;Ó2GÔHÓHÐHr4   r>   )r(   r  r$   r  r{   r   r  )r(   zImage.Image | Noner&  r  r{   z)tuple[ImageDraw2.Draw | None, ModuleType]rB  )r,  r  rH   ztuple[int, int]r-  úfloat | tuple[int, ...]r.  zfloat | tuple[int, ...] | Noner/  rz   r{   r¼   )r£   r  r¤   rÀ   r¥   rz   r{   zlist[tuple[float, float]])rQ  rS  rR  rS  r{   rz   )(Ú
__future__r   rf   rè   Úcollections.abcr   Útypesr   Útypingr   r   r   r	   r
   r   r7   r   r   Ú
_deprecater   Ú_typingr   r   r)   rS   r   rä   r   r   rz   rB   rÀ   r@   Ú_Inkr   r›   r"  r7  r¢   r(  r¯   r4   r2   ú<module>r[     sK  ðö@ #ã Û Ý $Ý ß D× Dç Ý !Ý ð 
2Ó 1ðØ�j‰j× Ñ €Gñ ß'àˆU�E˜#˜s˜(‘O SÐ(Ñ)€ð÷Rñ Rôj#ð$ >BðØðØ*:ðà.óð( .2Øð>Øð>àð>ð #ð>ð +ð	>ð
 ð>ð 
ó>ðB@Ø6ð@ØADð@ØPUð@àó@ðD	IØ#ð	IØ-Dð	Ià
ô	IøðS$ ò Ø‚Gðús   ÁB7 Â7CÃ C