
    :h0                       d dl mZ d dlZd dlmZ d dlmZmZ d dlm	Z	m
Z
 ddlmZmZmZmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ dZddZddZ G d de
      Z G d d      Z G d dej                        Z ej@                  ejB                  ee        ejD                  ejB                  e        ejF                  ejB                  d        ejH                  ejB                  d       y)    )annotationsN)BytesIO)ceillog)IO
NamedTuple   )BmpImagePluginImage	ImageFilePngImagePlugin)i16le)i32le)o8)o16le)o32les      c                &   |j                  t               | j                  j                  d      dk(  }| j                  j                  dg d      }g }| g| j                  j                  dg       z   }| j                  \  }}t        t        |            D ]  }	|	d   |kD  s|	d   |kD  s|	d   dkD  s|	d   dkD  r%|D ]  }
|
j                  |	k7  r|j                  |
       |rt        j                  |
j                     d   }|g}|D ]Y  }|j                  |	k7  rt        j                  |j                     d   }||vs8|j                  |       |j                  |       [   
j                         }|j                  |	t        j                  j                  d 	       |j                  |         |j                  t!        t#        |                   |j%                         t#        |      d
z  z   }|D ]  }|j                  \  }}|j                  t'        |dk  r|nd             |j                  t'        |dk  r|nd             |r t        j                  |j                     dd  nd\  }}|j                  t'        |             |j                  d       |j                  d       |j                  t!        |             t)               }|r_|j+                  |d       |dk7  rZt        j,                  d	      }t/        j0                  ||t/        j2                  dd|	z   dd      g       n|j+                  |d       |j5                  d       |j7                         }|r|d d t9        |dz        z   |dd  z   }t#        |      }|j                  t9        |             |j                  t9        |             |j%                         }|j5                  |       |j                  |       ||z   }|j5                  |        y )Nbitmap_formatbmpsizes))   r   )   r   )    r   )0   r   )@   r   )   r   )   r   append_imagesr   r	   r   )reducing_gapr   )r   r       s     dibr   1rawr   r   )r"   r   png         )write_MAGICencoderinfogetsizesortedsetappendr
   SAVEmodecopy	thumbnailr   
ResamplingLANCZOSo16lentellr   r   savenewr   _save_Tileseekreado32)imfpfilenamer   r   framesprovided_imswidthheightr.   provided_imbits	bits_usedother_imframeoffsetcolorsimage_ioand_maskimage_bytes	bytes_lencurrents                         P/var/www/urcfiles/bundle/venv/lib/python3.12/site-packages/PIL/IcoImagePlugin.pyr=   r=   +   sq   HHV
..

_
-
6CNNRE F4"..,,_bAALGGME6s5z"7U?d1g.$q'C-47S='K4'MM+&%**;+;+;<Q?!F	 ,H}}, )..x}}=a@D9, h/!((. !- ! (&  $$&EOOD%"2"2":":ONMM% 3 #4 HHSVWWYVr))F

v
US[Ea01
fslF23>A~**5::6qr:wf
F


T9JJx'rz 99S$/__UFTM1lKL JJx'ammo%bq/C
O;k"#>NNK$	
Y 
V'')

)#
I     c                ,    | j                  t              S N)
startswithr+   )prefixs    rU   _acceptr[   x   s    V$$rV   c                  |    e Zd ZU ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded	<   d
ed<   ded<   ded<   y)
IconHeaderintrG   rH   nb_colorreservedplanesbppr.   rN   tuple[int, int]dimsquarecolor_depthN)__name__
__module____qualname____annotations__ rV   rU   r]   r]   |   s;    JKMMK	H
IK	KrV   r]   c                  8    e Zd ZddZddZd	d
dZd	ddZddZy)IcoFilec                   |j                  d      }t        |      sd}t        |      || _        g | _        t        |d      | _        t        | j                        D ]  }|j                  d      }|d   xs d}|d   xs d}|d   }t        |d      }t        ||||d	   t        |d      t        |d      t        |d
      t        |d      ||f||z  |xs  |dk7  xr t        t        |d            xs d      }	| j                  j                  |	        t        | j                  d       | _        t        | j                  d d      | _        y)zL
        Parse image from file-like object containing ico file data
           znot an ICO file   r   r   r   r	   r(      r'   r)   )rG   rH   r_   r`   ra   rb   r.   rN   rd   re   rf   c                    | j                   S rX   )rf   xs    rU   <lambda>z"IcoFile.__init__.<locals>.<lambda>   s    ammrV   )keyc                    | j                   S rX   )re   rs   s    rU   ru   z"IcoFile.__init__.<locals>.<lambda>   s    ahhrV   T)rv   reverseN)r@   r[   SyntaxErrorbufentryi16nb_itemsranger]   i32r   r   r1   r/   )
selfrz   smsgirG   rH   r_   rb   icon_headers
             rU   __init__zIcoFile.__init__   sH    HHQKqz#Cc""
 Aq	 t}}%AA aDKCEqT[SF tHa)C$!11ay1IAY1bzFOv~  THM$Ld3x;K6LTQTK  JJk*5 &8 DJJ,CD
DJJ,>M
rV   c                l    | j                   D ch c]  }|j                  |j                  f c}S c c}w )zI
        Get a set of all available icon sizes and color depths.
        )r{   rG   rH   )r   hs     rU   r   zIcoFile.sizes   s-     .2ZZ8Z!((#Z888s   1c                    t        | j                        D ],  \  }}||j                  k(  s|du s||j                  k(  s*|c S  y)NFr   )	enumerater{   rd   rf   )r   r.   rb   r   r   s        rU   getentryindexzIcoFile.getentryindex   s?    djj)DAqquu}#,#2F * rV   c                D    | j                  | j                  ||            S )z,
        Get an image from the icon
        )rM   r   )r   r.   rb   s      rU   getimagezIcoFile.getimage   s      zz$,,T3788rV   c                   | j                   |   }| j                  j                  |j                         | j                  j	                  d      }| j                  j                  |j                         |dd t
        j                  k(  r@t        j                  | j                        }t        j                  |j                         |S t        j                  | j                        }t        j                  |j                         |j                  d   t        |j                  d   dz        f|_        |j                  d   \  }}}}t!        j"                  |d|j                  z   ||      |j                  d<   |j$                  dk(  r| j                  j                  |       | j                  j	                  |j                  d   |j                  d   z  dz        d	dd   }		 t        j&                  d
|j                  |	dd      }
n|j                  d   }|dz  dkD  r|d|j                  d   dz  z
  z  }t        ||j                  d   z  dz        }|j                  |j                  z   |z
  }| j                  j                  |       | j                  j	                  |      }	 t        j&                  d|j                  |ddt        |dz        df      }
|
r"|j-                  d      }|j/                  |
       |S # t(        $ r t         j*                  rd}
n Y Ew xY w# t(        $ r t         j*                  rd}
n Y hw xY w)z-
        Get an image from frame idx
        r'   Nr   r	   r(   r$   r   rp   rq   Lr#   )r   r   r%   r"   z1;Ir%   RGBA)r{   rz   r?   rN   r@   r   r+   PngImageFiler   _decompression_bomb_checkr.   r
   DibImageFiler^   _sizetiler   r>   rb   
frombuffer
ValueErrorLOAD_TRUNCATED_IMAGESconvertputalpha)r   idxheaderdatarB   deoaalpha_bytesmaskwtotal_bytesand_mask_offset	mask_datas                  rU   rM   zIcoFile.frame   s   
 Cfmm$xx}}Qfmm$ 8~,,,,,TXX6B++BGG4V 	Q  ,,TXX6B++BGG4 
C
Q$78BHJAq!Q"FRWW,<aCBGGAJ zzR a "hhmmBGGAJ,Ca,GHAN ++#$D GGAJFa<rwwqzB//A
 "1rwwqz>Q"67"(--&++"="Ko. HHMM+6	 ++!AE
B/D  ZZ'D!	W "  66# < "  66# s$   *#L .2L) L&%L&)M	M	N)rz   	IO[bytes]returnNone)r   zset[tuple[int, int]])F)r.   rc   rb   
int | boolr   r^   )r.   rc   rb   r   r   Image.Image)r   r^   r   r   )rg   rh   ri   r   r   r   r   rM   rk   rV   rU   rm   rm      s    0Nd99ZrV   rm   c                  h    e Zd ZdZdZdZd
dZedd       Zej                  dd       ZddZ
ddZy	)IcoImageFilea  
    PIL read-only image support for Microsoft Windows .ico files.

    By default the largest resolution image in the file will be loaded. This
    can be changed by altering the 'size' attribute before calling 'load'.

    The info dictionary has a key 'sizes' that is a list of the sizes available
    in the icon file.

    Handles classic, XP and Vista icon formats.

    When saving, PNG compression is used. Support for this was only added in
    Windows Vista. If you are unable to view the icon in Windows, convert the
    image to "RGBA" mode before saving.

    This plugin is a refactored version of Win32IconImagePlugin by Bryan Davis
    <casadebender@gmail.com>.
    https://code.google.com/archive/p/casadebender/wikis/Win32IconImagePlugin.wiki
    ICOzWindows Iconc                    t        | j                        | _        | j                  j                         | j                  d<   | j                  j
                  d   j                  | _        | j                          y )Nr   r   )	rm   rC   icor   infor{   rd   r.   loadr   s    rU   _openzIcoImageFile._openH  sN    477#!XX^^-		'HHNN1%))			rV   c                    | j                   S rX   )r   r   s    rU   r.   zIcoImageFile.sizeN  s    zzrV   c                N    || j                   d   vrd}t        |      || _        y )Nr   z2This is not one of the allowed sizes of this image)r   r   r   )r   valuer   s      rU   r.   zIcoImageFile.sizeR  s)    		'**FCS/!
rV   c                   | j                   B| j                  j                  | j                  k(  rt        j                  j	                  |       S | j
                  j                  | j                        }|j	                          |j                  | _        |j                  | _        |j                  r|j                  | _	        |j                  | j                  k7  rt        j                  d       | j
                  j                  | j                        }t        | j                  d         }|j                  ||<   t        |      | j                  d<   |j                  | _        y )NzImage was not the expected sizer   )_imrB   r.   r   r   r   r   r3   _modepalettewarningswarnr   listr   r0   )r   rB   indexr   s       rU   r   zIcoImageFile.loadY  s    88DGGLLDII$=;;##D))XXtyy)
	%%WW
::::DL77diiMM;<HH**4995E7+,E77E%L!$UDIIgDIrV   c                     y rX   rk   )r   poss     rU   	load_seekzIcoImageFile.load_seeko  s     	rV   N)r   r   )r   rc   )r   rc   r   r   )r   zImage.core.PixelAccess | None)r   r^   r   r   )rg   rh   ri   __doc__formatformat_descriptionr   propertyr.   setterr   r   rk   rV   rU   r   r   0  sO    ( F'   
[[ ,rV   r   z.icozimage/x-icon)rB   r   rC   r   rD   zstr | bytesr   r   )rZ   bytesr   bool)%
__future__r   r   ior   mathr   r   typingr   r    r
   r   r   r   _binaryr   r|   r   r   r   r   r8   r   rA   r+   r=   r[   r]   rm   r   register_openr   register_saveregister_extensionregister_mimerk   rV   rU   <module>r      s   . #    ! > > ! !  ! !
 
JZ% _ _LB9&& BR   L''w ?   L'' /   ,,f 5   L'' 8rV   