§
    Å‡tjø#  ã                  óÀ   — d dl m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 dZerddlmZ  G d	„ d
¦  «        Z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"„ZdS )+é    )ÚannotationsN)ÚSequence)ÚIOé   )ÚGimpGradientFileÚGimpPaletteFileÚ
ImageColorÚPaletteFileF)ÚImagec                  óÐ   — e Zd ZdZ	 	 d#d$d
„Zed%d„¦   «         Zej        d&d„¦   «         Zed'd„¦   «         Zej        d(d„¦   «         Zd)d„Z	d*d„Z
d+d„ZeZ	 d,d-d„Z	 d.d/d„Zd0d"„ZdS )1ÚImagePalettea¥  
    Color palette for palette mapped images

    :param mode: The mode to use for the palette. See:
        :ref:`concept-modes`. Defaults to "RGB"
    :param palette: An optional palette. If given, it must be a bytearray,
        an array or a list of ints between 0-255. The list must consist of
        all channels for one color followed by the next color (e.g. RGBRGBRGB).
        Defaults to an empty palette.
    ÚRGBNÚmodeÚstrÚpaletteú(Sequence[int] | bytes | bytearray | NoneÚreturnÚNonec                óZ   — || _         d | _        |pt          ¦   «         | _        d | _        d S ©N)r   ÚrawmodeÚ	bytearrayr   Údirty)Úselfr   r   s      úN/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/PIL/ImagePalette.pyÚ__init__zImagePalette.__init__+   s-   € ð
 ˆŒ	Ø#'ˆŒØÐ-¥)¡+¤+ˆŒØ!%ˆŒ
ˆ
ˆ
ó    ú!Sequence[int] | bytes | bytearrayc                ó   — | j         S r   )Ú_palette©r   s    r   r   zImagePalette.palette5   s
   € àŒ}Ðr   c                ó"   — d | _         || _        d S r   )Ú_colorsr    )r   r   s     r   r   zImagePalette.palette9   s   € à:>ˆŒØˆŒˆˆr   údict[tuple[int, ...], int]c                ó  — | j         €wt          | j        ¦  «        }i | _         t          dt          | j        ¦  «        |¦  «        D ]8}t          | j        |||z   …         ¦  «        }|| j         v rŒ+||z  | j         |<   Œ9| j         S )Nr   )r#   Úlenr   Úranger   Útuple)r   Úmode_lenÚiÚcolors       r   ÚcolorszImagePalette.colors>   s‹   € àŒ<ÐÝ˜4œ9‘~”~ˆHØˆDŒLÝ˜1�c $¤,Ñ/Ô/°Ñ:Ô:ð 4ð 4�Ý˜dœl¨1¨q°8©|Ð+;Ô<Ñ=Ô=�Ø˜DœLÐ(Ð(ØØ&'¨8¡m�”˜UÑ#Ð#ØŒ|Ðr   r,   c                ó   — || _         d S r   )r#   )r   r,   s     r   r,   zImagePalette.colorsJ   s   € àˆŒˆˆr   c                ó    — t          ¦   «         }| j        |_        | j        |_        | j        �| j        d d …         |_        | j        |_        |S r   )r   r   r   r   r   )r   Únews     r   ÚcopyzImagePalette.copyN   sD   € Ý‰nŒnˆà”9ˆŒØ”lˆŒØŒ<Ð#Øœ, q q qœ/ˆCŒKØ”JˆŒ	àˆ
r   ú-tuple[str, Sequence[int] | bytes | bytearray]c                ób   — | j         r| j         | j        fS | j        |                      ¦   «         fS )z£
        Get palette contents in format suitable for the low-level
        ``im.putpalette`` primitive.

        .. warning:: This method is experimental.
        )r   r   r   Útobytesr!   s    r   ÚgetdatazImagePalette.getdataY   s2   € ð Œ<ð 	.Ø”< ¤Ð-Ð-ØŒy˜$Ÿ,š,™.œ.Ð(Ð(r   Úbytesc                óÐ   — | j         rd}t          |¦  «        ‚t          | j        t          ¦  «        r| j        S t          j        d| j        ¦  «        }|                     ¦   «         S )zUConvert palette to bytes.

        .. warning:: This method is experimental.
        ú!palette contains raw palette dataÚB)r   Ú
ValueErrorÚ
isinstancer   r5   Úarrayr3   )r   ÚmsgÚarrs      r   r3   zImagePalette.tobytesd   s\   € ð
 Œ<ð 	"Ø5ˆCÝ˜S‘/”/Ð!Ý�d”l¥EÑ*Ô*ð 	 Ø”<ÐÝŒk˜#˜tœ|Ñ,Ô,ˆØ�{Š{‰}Œ}Ðr   ÚimageúImage.Image | NoneÚeúException | NoneÚintc                ó&  — t          | j        t          ¦  «        st          | j        ¦  «        | _        t	          | j        ¦  «        t	          | j        ¦  «        z  }d}|rA|j                             d¦  «        |j                             d¦  «        f}||v r	|dz  }||v °	|dk    ri|rOt          t          t          |                     ¦   «         ¦  «        ¦  «        ¦  «        D ]\  }}|dk    r||vr|} nŒ|dk    rd}t          |¦  «        |‚|S )N© Ú
backgroundÚtransparencyr   é   r   z$cannot allocate more than 256 colors)r:   r   r   r    r&   r   ÚinfoÚgetÚreversedÚlistÚ	enumerateÚ	histogramr9   )r   r>   r@   ÚindexÚspecial_colorsr*   Úcountr<   s           r   Ú_new_color_indexzImagePalette._new_color_indext   s#  € õ ˜$œ,­	Ñ2Ô2ð 	4Ý% d¤lÑ3Ô3ˆDŒMÝ�D”LÑ!Ô!¥S¨¬¡^¤^Ñ3ˆØCEˆØð 	à”
—’˜|Ñ,Ô,Ø”
—’˜~Ñ.Ô.ðˆNð ˜>Ð)Ð)Ø˜‘
�ð ˜>Ð)Ð)à�CŠ<ˆ<Øð å (­­i¸¿ºÑ8IÔ8IÑ.JÔ.JÑ)KÔ)KÑ LÔ Lð ð ‘H�A�uØ ’z�z a¨~Ð&=Ð&=Ø !˜Ø˜øØ˜Š|ˆ|Ø<�Ý  ‘o”o¨1Ð,Øˆr   r+   útuple[int, ...]c                óZ  — | j         rd}t          |¦  «        ‚t          |t          ¦  «        �r]| j        dk    r;t          |¦  «        dk    r'|d         dk    rd}t          |¦  «        ‚|dd…         }n#| j        dk    rt          |¦  «        dk    r|d	z  }	 | j        |         S # t          $ rÙ}|                      ||¦  «        }t          | j	        t          ¦  «        sJ ‚|| j        |<   t          | j        ¦  «        }||z  t          | j        ¦  «        k     r>| j	        d||z  …         t          |¦  «        z   | j	        ||z  |z   d…         z   | _	        n| xj	        t          |¦  «        z  c_	        d
| _        |cY d}~S d}~ww xY wdt          |¦  «        › �}t          |¦  «        ‚)zgGiven an rgb tuple, allocate palette entry.

        .. warning:: This method is experimental.
        r7   r   é   é   éÿ   z/cannot add non-opaque RGBA color to RGB paletteNÚRGBA©rV   r   zunknown color specifier: )r   r9   r:   r(   r   r&   r,   ÚKeyErrorrQ   r    r   r   r5   r   Úrepr)r   r+   r>   r<   r@   rN   r)   s          r   ÚgetcolorzImagePalette.getcolorŽ   sÊ  € ð Œ<ð 	"Ø5ˆCÝ˜S‘/”/Ð!Ý�e�UÑ#Ô#ñ 	"ØŒy˜EÒ!Ð!Ý�u‘:”: ’?�?Ø˜Q”x 3’�ØO˜Ý(¨™oœoÐ-Ø! " 1 "œI�EøØ”˜fÒ$Ð$Ý�u‘:”: ’?�?Ø˜V‘O�EðØ”{ 5Ô)Ð)øÝð ð ð à×-Ò-¨e°QÑ7Ô7�Ý! $¤-µÑ;Ô;Ð;Ð;Ð;Ø%*�”˜EÑ"Ý˜tœy™>œ>�Ø˜8Ñ#¥c¨$¬,Ñ&7Ô&7Ò7Ð7àœÐ&8¨°Ñ(8Ð&8Ô9Ý ™,œ,ñ'àœ-¨°Ñ(8¸8Ñ(CÐ(EÐ(EÔFñGð ”M�Mð �M”M¥U¨5¡\¤\Ñ1�M”MØ�”
Ø������øøøøðøøøð" <­d°5©k¬kÐ;Ð;ˆCÝ˜S‘/”/Ð!s   ÂB& Â&
F	Â0CFÅ>F	ÆF	Úfpústr | IO[str]c                óÒ  — | j         rd}t          |¦  «        ‚d}t          |t          ¦  «        rt	          |d¦  «        }d}	 |                     d¦  «         |                     d| j        › d�¦  «         t          | j        ¦  «        }t          d¦  «        D ]˜}|                     |› ¦  «         t          |t          | j        ¦  «        z  |d	z   t          | j        ¦  «        z  ¦  «        D ]-}|                     d
||k     r| j        |         nd› �¦  «         Œ.|                     d¦  «         Œ™	 |r| 
                    ¦   «          dS dS # |r| 
                    ¦   «          w w xY w)zVSave palette to text file.

        .. warning:: This method is experimental.
        r7   FÚwTz
# Palette
z# Mode: ú
rG   r   ú r   N)r   r9   r:   r   ÚopenÚwriter   r&   r   r'   Úclose)r   r\   r<   Úopen_fpÚpalette_lenr*   Újs          r   ÚsavezImagePalette.saveº   sz  € ð
 Œ<ð 	"Ø5ˆCÝ˜S‘/”/Ð!ØˆÝ�b�#ÑÔð 	Ý�b˜#‘”ˆBØˆGð	Ø�HŠH�]Ñ#Ô#Ð#Ø�HŠHÐ- ¤	Ð-Ð-Ð-Ñ.Ô.Ð.Ý˜dœlÑ+Ô+ˆKÝ˜3‘Z”Zð ð �Ø—’˜A˜Ñ Ô Ð Ý˜q¥3 t¤y¡>¤>Ñ1°A¸±E½SÀÄ¹^¼^Ñ3KÑLÔLð Nð N�AØ—H’HÐL°A¸²O°O ¤¨a¤ ÈÐLÐLÑMÔMÐMÐMØ—’˜‘”��ð	ð ð Ø—’‘
”
�
�
�
ðð øˆwð Ø—’‘
”
�
�
ðøøøs   ÁC/E ÅE&)r   N)r   r   r   r   r   r   )r   r   )r   r   r   r   )r   r$   )r,   r$   r   r   )r   r   )r   r1   )r   r5   )NN)r>   r?   r@   rA   r   rB   r   )r+   rR   r>   r?   r   rB   )r\   r]   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úpropertyr   Úsetterr,   r0   r4   r3   ÚtostringrQ   r[   rh   rD   r   r   r   r      sY  € € € € € ð	ð 	ð Ø<@ð&ð &ð &ð &ð &ð ðð ð ñ „Xðð „^ð ð  ð  ñ „^ð ð ð	ð 	ð 	ñ „Xð	ð „]ðð ð ñ „]ðð	ð 	ð 	ð 	ð	)ð 	)ð 	)ð 	)ðð ð ð ð €Hð GKðð ð ð ð ð: %)ð*"ð *"ð *"ð *"ð *"ðXð ð ð ð ð r   r   r   r   Údatar   r   c                óL   — t          ¦   «         }| |_        ||_        d|_        |S )Nr   )r   r   r   r   )r   rp   r   s      r   Úrawrr   Ø   s%   € Ý‰nŒn€GØ€G„OØ€G„OØ€G„MØ€Nr   ÚblackrB   ÚwhiteÚfloatú	list[int]c                óh   ‡— | dk    rˆfd„t          d¦  «        D ¦   «         S d}t          |¦  «        ‚)Nr   c                ó:   •— g | ]}t          ‰|z  d z  ¦  «        ‘ŒS rX   ©rB   )Ú.0r*   rt   s     €r   ú
<listcomp>z#make_linear_lut.<locals>.<listcomp>æ   s*   ø€ Ð:Ð:Ð:¨!•�E˜A‘I Ñ$Ñ%Ô%Ð:Ð:Ð:r   rG   z"unavailable when black is non-zero)r'   ÚNotImplementedError)rs   rt   r<   s    ` r   Úmake_linear_lutr}   ä   s?   ø€ Ø�‚z€zØ:Ð:Ð:Ð:­u°S©z¬zÐ:Ñ:Ô:Ð:à
.€CÝ
˜cÑ
"Ô
"Ð"r   Úexpc                ó:   ‡ — ˆ fd„t          d¦  «        D ¦   «         S )Nc                óF   •— g | ]}t          |d z  ‰z  d z  dz   ¦  «        ‘ŒS )g     ào@g      à?ry   )rz   r*   r~   s     €r   r{   z"make_gamma_lut.<locals>.<listcomp>í   s4   ø€ ÐHÐHÐH¸�C�!�e‘) Ñ# uÑ,¨sÑ2Ñ3Ô3ÐHÐHÐHr   rG   )r'   )r~   s   `r   Úmake_gamma_lutr�   ì   s#   ø€ ØHÐHÐHÐH½UÀ3¹Z¼ZÐHÑHÔHÐHr   r   r   c                ó¼   ‡ — t          t          dt          ‰ ¦  «        z  ¦  «        ¦  «        }|                     ¦   «          t	          ‰ ˆ fd„|D ¦   «         ¦  «        S )NrG   c                ó4   •— g | ]}|t          ‰¦  «        z  ‘ŒS rD   ©r&   ©rz   r*   r   s     €r   r{   znegative.<locals>.<listcomp>ó   ó#   ø€ Ð?Ð?Ð?°!˜q¥C¨¡I¤I™~Ð?Ð?Ð?r   )rK   r'   r&   Úreverser   ©r   r   s   ` r   Únegativer‰   ð   sW   ø€ Ý•5˜�s 4™yœy™Ñ)Ô)Ñ*Ô*€GØ‡O‚OÑÔÐÝ˜Ð?Ð?Ð?Ð?°wÐ?Ñ?Ô?Ñ@Ô@Ð@r   c                ó†   ‡— ddl mŠ ˆfd„t          dt          | ¦  «        z  ¦  «        D ¦   «         }t	          | |¦  «        S )Nr   )Úrandintc                ó(   •— g | ]} ‰d d¦  «        ‘ŒS )r   rV   rD   )rz   Ú_r‹   s     €r   r{   zrandom.<locals>.<listcomp>ù   s#   ø€ Ð?Ð?Ð? 1ˆwˆw�q˜#‰ŒÐ?Ð?Ð?r   rG   )Úrandomr‹   r'   r&   r   )r   r   r‹   s     @r   rŽ   rŽ   ö   sP   ø€ ØÐÐÐÐÐà?Ð?Ð?Ð?­¨cµC¸±I´I©oÑ(>Ô(>Ð?Ñ?Ô?€GÝ˜˜gÑ&Ô&Ð&r   ú#fff0c0c                ó’   ‡— d„ t          j        | ¦  «        D ¦   «         Št          dˆfd„t          d¦  «        D ¦   «         ¦  «        S )Nc                ó.   — g | ]}t          d |¦  «        ‘ŒS )r   )r}   )rz   Úbands     r   r{   zsepia.<locals>.<listcomp>þ   s"   € ÐKÐKÐK¨$�_˜Q Ñ%Ô%ÐKÐKÐKr   r   c                ó8   •— g | ]}‰|d z           |d z           ‘ŒS )rU   rD   )rz   r*   Úbandss     €r   r{   zsepia.<locals>.<listcomp>ÿ   s*   ø€ ÐMÐMÐM¸  a¨!¡e¤¨Q°!©VÔ 4ÐMÐMÐMr   i   )r	   Úgetrgbr   r'   )rt   r”   s    @r   Úsepiar–   ý   sL   ø€ ØKÐKµ*Ô2CÀEÑ2JÔ2JÐKÑKÔK€EÝ˜ÐMÐMÐMÐM½eÀG¹n¼nÐMÑMÔMÑNÔNÐNr   c                ó”   ‡ — t          t          dt          ‰ ¦  «        z  ¦  «        ¦  «        }t          ‰ ˆ fd„|D ¦   «         ¦  «        S )NrG   c                ó4   •— g | ]}|t          ‰¦  «        z  ‘ŒS rD   r„   r…   s     €r   r{   zwedge.<locals>.<listcomp>  r†   r   )rK   r'   r&   r   rˆ   s   ` r   Úwedger™     sG   ø€ Ý•5˜�s 4™yœy™Ñ)Ô)Ñ*Ô*€GÝ˜Ð?Ð?Ð?Ð?°wÐ?Ñ?Ô?Ñ@Ô@Ð@r   Úfilenameútuple[bytes, str]c                óf  — t          | d¦  «        5 }t          j        t          j        t          j        g}|D ]P}	 |                     d¦  «          ||¦  «                             ¦   «         }|r n)Œ:# t          t          f$ r Y ŒMw xY wd}t          |¦  «        ‚	 d d d ¦  «         n# 1 swxY w Y   |S )NÚrbr   zcannot load palette)	rb   r   r   r
   ÚseekÚ
getpaletteÚSyntaxErrorr9   ÚOSError)rš   r\   ÚpaletteHandlersÚpaletteHandlerÚlutr<   s         r   Úloadr¥     s  € õ 
ˆh˜Ñ	Ô	ð  õ Ô+ÝÔ-ÝÔ#ð
ð 	ð .ð 
	ð 
	ˆNðØ—’˜‘
”
�
Ø$�n RÑ(Ô(×3Ò3Ñ5Ô5�Øð Ø�Eðøå¥Ð,ð ð ð Ø�ðøøøð (ˆCÝ˜#‘,”,Ðð ð#ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð0 €Js4   ‘(B&º4A1Á.B&Á1BÂB&ÂBÂB&Â&B*Â-B*)r   r   rp   r   r   r   )rs   rB   rt   ru   r   rv   )r~   ru   r   rv   )r   )r   r   r   r   )r�   )rt   r   r   r   )rš   r   r   r›   )Ú
__future__r   r;   Úcollections.abcr   Útypingr   Ú r   r   r	   r
   ÚTYPE_CHECKINGr   r   rr   r}   r�   r‰   rŽ   r–   r™   r¥   rD   r   r   ú<module>r«      s‹  ðð$ #Ð "Ð "Ð "Ð "Ð "à €€€Ø $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð à HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ Hà€Øð ØÐÐÐÐÐðrð rð rð rð rñ rô rð rðrð ð ð ð#ð #ð #ð #ðIð Ið Ið IðAð Að Að Að Að'ð 'ð 'ð 'ð 'ðOð Oð Oð Oð Oð
Að Að Að Að Að
ð ð ð ð ð r   