Ë
    /æj‡Ó  ã                  ó¨  — d dl mZ h d£Zd dlZd dlZd dlZd dl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 ddlmZ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dl!m"Z" dZ#e#rd dl$m%Z% d dlm&Z&m'Z'm(Z( ddlm)Z)  ejT                  e+«      Z, ejZ                  d«      j\                  Z/dZ0dddddddddddd d!d"d#d$œZ1 ejZ                  d%«      Z2ejf                  Z4	 d&e4z  Z5	  G d'„ d(e
«      Z6 G d)„ d*e
«      Z7dWd+„Z8dXdYd,„Z9 G d-„ d.«      Z: G d/„ d0e;«      Z< G d1„ d2«      Z= G d3„ d4e«      Z> G d5„ d6e:«      Z?dZd7„Z@ G d8„ d9ej(                  «      ZAd:d;d<d=d>d?d@d@dAdBdCdDdEdFdGœZBd[dH„ZC G dI„ dJ«      ZD G dK„ dL«      ZEd\dM„ZF G dN„ dOe«      ZG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d]dP„ZHd^dQ„ZIeCdf	 	 	 	 	 	 	 	 	 	 	 d_dR„ZJd`dS„ZK ej˜                  eAjš                  eAe@«        ejœ                  eAjš                  eJ«        ejž                  eAjš                  eI«        ej                   eAjš                  dTdUg«        ej¢                  eAjš                  dV«       y)aé    )Úannotations>   ú	PIL._utilúPIL._binaryÚzlibÚstructÚwarningsÚ	fractionsÚ	itertoolsN)ÚIntEnum)ÚFraction)ÚIOÚ
NamedTupleÚcasté   )ÚImageÚ
ImageChopsÚ	ImageFileÚImagePaletteÚImageSequence)Úi16be)Úi32be)Úo8)Úo16be)Úo32be)ÚDeferredErrorF)ÚCallable)ÚAnyÚNoReturnÚSelf)Ú_imagings   \w\w\w\ws   ‰PNG

)Ú1r!   )ÚLúL;2)r"   úL;4)r"   r"   )úI;16úI;16B)ÚRGBr'   )r'   zRGB;16B)ÚPúP;1)r(   úP;2)r(   úP;4)r(   r(   )ÚLAr,   )ÚRGBAzLA;16B©r-   r-   )r-   zRGBA;16B))r   r   )é   r   )é   r   )é   r   )é   r   )r1   r/   )r2   r/   )r   é   )r/   r3   )r0   r3   )r1   r3   )r1   r0   )r2   r0   )r1   é   )r2   r4   s   ^ÿ* ÿ*$é@   c                  ó   — e Zd ZdZ	 dZ	 dZy)ÚDisposalr   r   r/   N)Ú__name__Ú
__module__Ú__qualname__ÚOP_NONEÚOP_BACKGROUNDÚOP_PREVIOUS© ó    úU/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/PIL/PngImagePlugin.pyr7   r7   w   s$   „ Ø€Gðð €Mðð
 €Kðr?   r7   c                  ó   — e Zd ZdZ	 dZy)ÚBlendr   r   N)r8   r9   r:   Ú	OP_SOURCEÚOP_OVERr>   r?   r@   rB   rB   Œ   s   „ Ø€Iðð
 €Gðr?   rB   c                óŒ   — t        j                  «       }|j                  | t        «      }|j                  rd}t        |«      ‚|S )Nz=Decompressed data too large for PngImagePlugin.MAX_TEXT_CHUNK)r   ÚdecompressobjÚ
decompressÚMAX_TEXT_CHUNKÚunconsumed_tailÚ
ValueError)ÚsÚdobjÚ	plaintextÚmsgs       r@   Ú_safe_zlib_decompressrO   š   s>   € Ü×ÑÓ€DØ—‘ ¤>Ó2€IØ×ÒØMˆÜ˜‹oÐØÐr?   c                ó4   — t        j                  | |«      dz  S )Nl   ÿÿ )r   Úcrc32)ÚdataÚseeds     r@   Ú_crc32rT   £   s   € Ü�:‰:�d˜DÓ! JÑ.Ð.r?   c                  ó^   — e Zd Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Z	dd„Z
dd	„Zddd
„Zy)ÚChunkStreamc                ó    — || _         g | _        y ©N)ÚfpÚqueue)ÚselfrY   s     r@   Ú__init__zChunkStream.__init__¬   s   € Ø$&ˆŒØ:<ˆ�
r?   c                ó¬  — d}| j                   €J ‚| j                  r:| j                  j                  «       \  }}}| j                   j                  |«       nE| j                   j	                  d«      }|dd }| j                   j                  «       }t        |«      }t        |«      s*t        j                  sdt        |«      › d�}t        |«      ‚|||fS )z.Fetch a new chunk. Returns header information.Nr1   r0   zbroken PNG file (chunk ú))rY   rZ   ÚpopÚseekÚreadÚtellÚi32Úis_cidr   ÚLOAD_TRUNCATED_IMAGESÚreprÚSyntaxError)r[   ÚcidÚposÚlengthrK   rN   s         r@   ra   zChunkStream.read°   s³   € àˆà�w‰wÐ"Ð"Ð"Ø�:Š:Ø#Ÿz™zŸ~™~Ó/ÑˆC��fØ�G‰G�L‰L˜Õà—‘—‘˜Q“ˆAØ�A�B�%ˆCØ—'‘'—,‘,“.ˆCÜ˜“VˆFä�cŒ{Ü×2Ò2Ø/´°S³	¨{¸!Ð<�Ü! #Ó&Ð&à�C˜ÐÐr?   c                ó   — | S rX   r>   ©r[   s    r@   Ú	__enter__zChunkStream.__enter__Å   s   € Øˆr?   c                ó$   — | j                  «        y rX   )Úclose)r[   Úargss     r@   Ú__exit__zChunkStream.__exit__È   s   € Ø�
‰
�r?   c                ó    — d x| _         | _        y rX   )rZ   rY   rl   s    r@   ro   zChunkStream.closeË   s   € Ø#Ð#ˆŒ
�T•Wr?   c                ó\   — | j                   €J ‚| j                   j                  |||f«       y rX   )rZ   Úappend©r[   rh   ri   rj   s       r@   ÚpushzChunkStream.pushÎ   s+   € Ø�z‰zÐ%Ð%Ð%Ø�
‰
×Ñ˜3  VÐ,Õ-r?   c                ó|   — t         j                  d|||«        t        | d|j                  d«      › �«      ||«      S )z"Call the appropriate chunk handlerzSTREAM %r %s %sÚchunk_Úascii)ÚloggerÚdebugÚgetattrÚdecoderu   s       r@   ÚcallzChunkStream.callÒ   s>   € ô 	�‰Ð&¨¨S°&Ô9Ø<Œw�t˜v c§j¡j°Ó&9Ð%:Ð;Ó<¸SÀ&ÓIÐIr?   c                óš  — t         j                  r|d   dz	  dz  r| j                  ||«       y| j                  €J ‚	 t	        |t	        |«      «      }t        | j                  j                  d«      «      }||k7  rdt        |«      › d�}t        |«      ‚y# t        j                  $ r }dt        |«      › d�}t        |«      |‚d}~ww xY w)	zRead and verify checksumr   é   r   Nr0   z(broken PNG file (bad header checksum in r^   z(broken PNG file (incomplete checksum in )r   re   Úcrc_skiprY   rT   rc   ra   rf   rg   r   Úerror)r[   rh   rR   Úcrc1Úcrc2rN   Úes          r@   ÚcrczChunkStream.crcØ   sÅ   € ô ×*Ò*°°A±¸!±¸a²Ø�M‰M˜#˜tÔ$Øà�w‰wÐ"Ð"Ð"ð	*Ü˜$¤ s£Ó,ˆDÜ�t—w‘w—|‘| A“Ó'ˆDØ�tŠ|Ø@ÄÀcÃÀÈ1ÐM�Ü! #Ó&Ð&ð øô �|‰|ò 	*Ø<¼TÀ#»Y¸KÀqÐIˆCÜ˜cÓ"¨Ð)ûð	*ús   ¾AB ÂC
Â*CÃC
c                óV   — | j                   €J ‚| j                   j                  d«       y)zRead checksumNr0   )rY   ra   )r[   rh   rR   s      r@   r�   zChunkStream.crc_skipí   s#   € ð �w‰wÐ"Ð"Ð"Ø�‰�‰�Q�r?   c                ó4  — g }| j                   €J ‚	 	 | j                  «       \  }}}||k(  r	 |S | j                  |t        j                  | j                   |«      «       |j                  |«       Œ_# t        j                  $ r}d}t	        |«      |‚d }~ww xY w)Nztruncated PNG file)	rY   ra   r   r‚   ÚOSErrorr†   r   Ú
_safe_readrt   )r[   ÚendchunkÚcidsrh   ri   rj   r…   rN   s           r@   ÚverifyzChunkStream.verifyó   sŸ   € ð ˆà�w‰wÐ"Ð"Ð"Øð*Ø#'§9¡9£;Ñ ��S˜&ð
 �hŠØð ˆð �H‰H�Sœ)×.Ñ.¨t¯w©w¸Ó?Ô@Ø�K‰K˜Ôð øô —<‘<ò *Ø*�Ü˜c“l¨Ð)ûð*ús   “A1 Á1BÂBÂBN©rY   ú	IO[bytes]ÚreturnÚNone)r�   ztuple[bytes, int, int])r�   r   )rp   Úobjectr�   r‘   ©r�   r‘   )rh   Úbytesri   Úintrj   r•   r�   r‘   )rh   r”   ri   r•   rj   r•   r�   r”   )rh   r”   rR   r”   r�   r‘   )ó   IEND)r‹   r”   r�   zlist[bytes])r8   r9   r:   r\   ra   rm   rq   ro   rv   r~   r†   r�   r�   r>   r?   r@   rV   rV   «   s5   „ ó=ó ó*óó$ó.óJó*ó*õr?   rV   c                  óJ   — e Zd ZU dZded<   ded<   e	 d	 	 	 	 	 	 	 dd„«       Zy)	ÚiTXtzq
    Subclass of string to allow iTXt chunks to look like strings while
    keeping their extra information

    zstr | bytes | NoneÚlangÚtkeyNc                óN   — t         j                  | |«      }||_        ||_        |S )zÇ
        :param cls: the class to use when creating the instance
        :param text: value for this key
        :param lang: language code
        :param tkey: UTF-8 version of the key name
        )ÚstrÚ__new__r™   rš   )ÚclsÚtextr™   rš   r[   s        r@   r�   ziTXt.__new__  s'   € ô �{‰{˜3 Ó%ˆØˆŒ	ØˆŒ	Øˆr?   )NN)rŸ   rœ   r™   ú
str | Nonerš   r    r�   r   )r8   r9   r:   Ú__doc__Ú__annotations__Ústaticmethodr�   r>   r?   r@   r˜   r˜   	  sJ   … ñð ÓØ
ÓààDHðØðØ(ðØ7Aðà	òó ñr?   r˜   c                  ób   — e Zd ZdZdd„Zdd	d„Z	 	 	 d
	 	 	 	 	 	 	 	 	 	 	 dd„Z	 d	 	 	 	 	 	 	 dd„Zy)ÚPngInfoz<
    PNG chunk container (for use with save(pnginfo=))

    c                ó   — g | _         y rX   )Úchunksrl   s    r@   r\   zPngInfo.__init__*  s	   € Ø79ˆ�r?   c                ó@   — | j                   j                  |||f«       y)a"  Appends an arbitrary chunk. Use with caution.

        :param cid: a byte string, 4 bytes long.
        :param data: a byte string of the encoded data
        :param after_idat: for use with private chunks. Whether the chunk
                           should be written after IDAT

        N)r§   rt   )r[   rh   rR   Ú
after_idats       r@   ÚaddzPngInfo.add-  s   € ð 	�‰×Ñ˜C  zÐ2Õ3r?   c                óÐ  — t        |t        «      s|j                  dd«      }t        |t        «      s|j                  dd«      }t        |t        «      s|j                  dd«      }t        |t        «      s|j                  dd«      }|r8| j                  d|dz   |z   dz   |z   dz   t	        j
                  |«      z   «       y| j                  d|dz   |z   dz   |z   dz   |z   «       y)	zùAppends an iTXt chunk.

        :param key: latin-1 encodable text key name
        :param value: value for this key
        :param lang: language code
        :param tkey: UTF-8 version of the key name
        :param zip: compression flag

        úlatin-1Ústrictúutf-8ó   iTXts     ó    ó      N)Ú
isinstancer”   Úencoderª   r   Úcompress)r[   ÚkeyÚvaluer™   rš   Úzips         r@   Úadd_itxtzPngInfo.add_itxt9  sÖ   € ô$ ˜#œuÔ%Ø—*‘*˜Y¨Ó1ˆCÜ˜%¤Ô'Ø—L‘L ¨(Ó3ˆEÜ˜$¤Ô&Ø—;‘;˜w¨Ó1ˆDÜ˜$¤Ô&Ø—;‘;˜w¨Ó1ˆDáØ�H‰HØØ�kÑ! DÑ(¨5Ñ0°4Ñ7¸%Ñ?Ä$Ç-Á-ÐPUÓBVÑVõð
 �H‰H�W˜c I™o°Ñ4°uÑ<¸tÑCÀeÑKÈeÑSÕTr?   c                ó  — t        |t        «      rL| j                  |||j                  �|j                  nd|j                  �|j                  |¬«      S d|¬«      S t        |t
        «      s	 |j                  dd«      }t        |t
        «      s|j                  dd«      }|r,| j                  d|dz   t        j                  |«      z   «       y| j                  d|d	z   |z   «       y# t        $ r | j                  |||¬«      cY S w xY w)
zæAppends a text chunk.

        :param key: latin-1 encodable text key name
        :param value: value for this key, text or an
           :py:class:`PIL.PngImagePlugin.iTXt` instance
        :param zip: compression flag

        Nr?   )r·   r¬   r­   ó   zTXtó     ó   tEXtr°   )r²   r˜   r¸   r™   rš   r”   r³   ÚUnicodeErrorrª   r   r´   )r[   rµ   r¶   r·   s       r@   Úadd_textzPngInfo.add_text\  s  € ô �eœTÔ"Ø—=‘=ØØØ#Ÿj™jÐ4�—
’
¸#Ø#Ÿj™jÐ4�—
‘
Øð !ó ð ð ;>Øð !ó ð ô ˜%¤Ô'ð:ØŸ™ Y°Ó9�ô ˜#œuÔ%Ø—*‘*˜Y¨Ó1ˆCáØ�H‰H�W˜c G™m¬d¯m©m¸EÓ.BÑBÕCà�H‰H�W˜c E™k¨EÑ1Õ2øô  ò :Ø—}‘} S¨%°S�}Ó9Ò9ð:ús   Á.C) Ã)D	ÄD	Nr“   ©F)rh   r”   rR   r”   r©   Úboolr�   r‘   )Ú rÁ   F)rµ   ústr | bytesr¶   rÂ   r™   rÂ   rš   rÂ   r·   rÀ   r�   r‘   )rµ   rÂ   r¶   zstr | bytes | iTXtr·   rÀ   r�   r‘   )r8   r9   r:   r¡   r\   rª   r¸   r¾   r>   r?   r@   r¥   r¥   $  s�   „ ñó
:ô
4ð  ØØð!Uàð!Uð ð!Uð ð	!Uð
 ð!Uð ð!Uð 
ó!UðH HMð!3Øð!3Ø'9ð!3Ø@Dð!3à	ô!3r?   r¥   c                  ó,   — e Zd ZU ded<   ded<   ded<   y)Ú_RewindStatez dict[str | tuple[int, int], Any]Úinfozlist[ImageFile._Tile]Útilez
int | NoneÚseq_numN©r8   r9   r:   r¢   r>   r?   r@   rÄ   rÄ   „  s   … Ø
*Ó*Ø
ÓØÔr?   rÄ   c                  óÀ   ‡ — e Zd Zdˆ fd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Z	dd„Z
dd	„Zdd
„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zˆ xZS )Ú	PngStreamc                óÔ   •— t         ‰| �  |«       i | _        i | _        d| _        d| _        g | _        d | _        d | _        d | _	        d | _
        t        i g d «      | _        d| _        y )N)r   r   rÁ   r   )Úsuperr\   Úim_infoÚim_textÚim_sizeÚim_modeÚim_tileÚ
im_paletteÚim_custom_mimetypeÚim_n_framesÚ_seq_numrÄ   Úrewind_stateÚtext_memory)r[   rY   Ú	__class__s     €r@   r\   zPngStream.__init__‹  sl   ø€ Ü‰Ñ˜Ôð :<ˆŒØ.0ˆŒØˆŒØˆŒØ.0ˆŒØ48ˆŒØ.2ˆÔØ'+ˆÔØ$(ˆŒÜ(¨¨R°Ó6ˆÔàˆÕr?   c                óŠ   — | xj                   |z  c_         | j                   t        kD  rd| j                   › d�}t        |«      ‚y )Nz%Too much memory used in text chunks: z>MAX_TEXT_MEMORY)r×   ÚMAX_TEXT_MEMORYrJ   )r[   ÚchunklenrN   s      r@   Úcheck_text_memoryzPngStream.check_text_memoryœ  sN   € Ø×Ò˜HÑ$ÕØ×ÑœoÒ-à7Ø×#Ñ#Ð$Ð$4ð6ð ô ˜S“/Ð!ð .r?   c                ó€   — t        | j                  j                  «       | j                  | j                  «      | _        y rX   )rÄ   rÍ   ÚcopyrÑ   rÕ   rÖ   rl   s    r@   Úsave_rewindzPngStream.save_rewind¥  s-   € Ü(Ø�L‰L×ÑÓØ�L‰LØ�M‰Mó
ˆÕr?   c                óÂ   — | j                   j                  j                  «       | _        | j                   j                  | _        | j                   j                  | _        y rX   )rÖ   rÅ   rÞ   rÍ   rÆ   rÑ   rÇ   rÕ   rl   s    r@   ÚrewindzPngStream.rewind¬  sD   € Ø×(Ñ(×-Ñ-×2Ñ2Ó4ˆŒØ×(Ñ(×-Ñ-ˆŒØ×)Ñ)×1Ñ1ˆ�r?   c                óÒ  — | j                   €J ‚t        j                  | j                   |«      }|j                  d«      }t        j                  d|d | «       ||dz      }t        j                  d|«       |dk7  rd|› d�}t        |«      ‚	 t        ||dz   d  «      }|| j                  d	<   |S # t        $ r t        j                  rd }n‚ Y Œ0t        j                  $ r d }Y ŒFw xY w)
Nr°   ziCCP profile name %rr   zCompression method %sr   úUnknown compression method z in iCCP chunkr/   Úicc_profile)rY   r   rŠ   Úfindrz   r{   rg   rO   rJ   re   r   r‚   rÍ   )r[   ri   rj   rK   ÚiÚcomp_methodrN   rä   s           r@   Ú
chunk_iCCPzPngStream.chunk_iCCP±  sñ   € à�w‰wÐ"Ð"Ð"Ü× Ñ  §¡¨&Ó1ˆð �F‰F�5‹MˆÜ�‰Ð+¨Q¨r°¨UÔ3Ø˜˜A™‘hˆÜ�‰Ð,¨kÔ:Ø˜!ÒØ/°¨}¸NÐKˆCÜ˜cÓ"Ð"ð	Ü/°°!°a±%°'°
Ó;ˆKð '2ˆ�‰�]Ñ#Øˆøô ò 	Ü×.Ò.Ø"‘àñ ô �z‰zò 	ØŠKð	ús   ÂB0 Â0C&ÃC&Ã%C&c                óŒ  — | j                   €J ‚t        j                  | j                   |«      }|dk  rt        j                  r|S d}t	        |«      ‚t        |d«      t        |d«      f| _        	 t        |d   |d   f   \  | _        | _	        |d   rd| j                  d	<   |d
   rd}t        |«      ‚|S # t        $ r Y Œ3w xY w)Né   zTruncated IHDR chunkr   r0   r1   é	   é   r   Ú	interlaceé   zunknown filter category)rY   r   rŠ   re   rJ   rc   rÏ   Ú_MODESrÐ   Ú
im_rawmodeÚKeyErrorrÍ   rg   ©r[   ri   rj   rK   rN   s        r@   Ú
chunk_IHDRzPngStream.chunk_IHDRÍ  sÏ   € à�w‰wÐ"Ð"Ð"Ü× Ñ  §¡¨&Ó1ˆØ�BŠ;Ü×.Ò.Ø�Ø(ˆCÜ˜S“/Ð!Ü˜1˜a“y¤# a¨£)Ð+ˆŒð	Ü,2°A°a±D¸!¸A¹$°<Ñ,@Ñ)ˆDŒL˜$œ/ð ˆRŠ5Ø()ˆD�L‰L˜Ñ%ØˆRŠ5Ø+ˆCÜ˜cÓ"Ð"Øˆøô ò 	Ùð	ús   Á1B7 Â7	CÃCc                óP  — d| j                   v r1t        j                  d| j                   d   || j                  «      g}nM| j                  �d| j                   d<   t        j                  dddg| j
                  ¢­|| j                  «      g}|| _        || _        d}t        |«      ‚)NÚbboxr·   TÚdefault_imager   zimage data found)	rÍ   r   Ú_Tilerð   rÔ   rÏ   rÑ   Úim_idatÚEOFError)r[   ri   rj   rÆ   rN   s        r@   Ú
chunk_IDATzPngStream.chunk_IDATâ  s’   € à�T—\‘\Ñ!Ü—O‘O E¨4¯<©<¸Ñ+?ÀÀdÇoÁoÓVÐW‰Dà×ÑÐ+Ø04�—‘˜_Ñ-Ü—O‘O E¨A¨qÐ+@°4·<±<Ñ+@À#ÀtÇÁÓWÐXˆDØˆŒØˆŒØ ˆÜ�s‹mÐr?   c                ó   — d}t        |«      ‚)Nzend of PNG image)rù   )r[   ri   rj   rN   s       r@   Ú
chunk_IENDzPngStream.chunk_IENDï  s   € Ø ˆÜ�s‹mÐr?   c                ó’   — | j                   €J ‚t        j                  | j                   |«      }| j                  dk(  r	d|f| _        |S )Nr(   r'   )rY   r   rŠ   rÐ   rÒ   ©r[   ri   rj   rK   s       r@   Ú
chunk_PLTEzPngStream.chunk_PLTEó  sD   € à�w‰wÐ"Ð"Ð"Ü× Ñ  §¡¨&Ó1ˆØ�<‰<˜3ÒØ# Q˜hˆDŒOØˆr?   c                óÆ  — | j                   €J ‚t        j                  | j                   |«      }| j                  dk(  rMt        j                  |«      r'|j                  d«      }|dk\  r || j                  d<   |S || j                  d<   |S | j                  dv rÈ|| j                  dk(  rdndk  rt        j                  r|S d	}t        |«      ‚| j                  d
k(  rt        |«      rdnd| j                  d<   |S | j                  dv rt        |«      | j                  d<   |S | j                  dk(  r/t        |«      t        |d«      t        |d«      f| j                  d<   |S )Nr(   r°   r   Útransparency)r!   r"   r%   r'   r'   r4   r/   zTruncated tRNS chunkr!   éÿ   )r"   r%   r0   )rY   r   rŠ   rÐ   Ú_simple_paletteÚmatchrå   rÍ   re   rJ   Úi16)r[   ri   rj   rK   ræ   rN   s         r@   Ú
chunk_tRNSzPngStream.chunk_tRNSû  sM  € à�w‰wÐ"Ð"Ð"Ü× Ñ  §¡¨&Ó1ˆØ�<‰<˜3ÒÜ×$Ñ$ QÔ'ð —F‘F˜5“M�Ø˜’6Ø34�D—L‘L Ñ0ð$ ˆð 01�—‘˜^Ñ,ð ˆð �\‰\Ð6Ñ6à˜dŸl™l¨eÒ3™¸Ò;Ü×2Ò2Ø�HØ,�Ü  “oÐ%Ø�|‰|˜sÒ"Ü69¸!´f©sÀ!�—‘˜^Ñ,ð
 ˆð	 —‘ Ñ.Ü/2°1«v�—‘˜^Ñ,ð ˆð —‘ Ò&Ü/2°1«v´s¸1¸a³yÄ#ÀaÈÃ)Ð/K�—‘˜^Ñ,Øˆr?   c                óà   — | j                   €J ‚t        j                  | j                   |«      }|dk  rt        j                  r|S d}t	        |«      ‚t        |«      dz  | j                  d<   |S )Nr0   zTruncated gAMA chunkç     jø@Úgamma©rY   r   rŠ   re   rJ   rc   rÍ   rò   s        r@   Ú
chunk_gAMAzPngStream.chunk_gAMA  sh   € à�w‰wÐ"Ð"Ð"Ü× Ñ  §¡¨&Ó1ˆØ�AŠ:Ü×.Ò.Ø�Ø(ˆCÜ˜S“/Ð!Ü # A£¨Ñ 1ˆ�‰�WÑØˆr?   c                ó  — | j                   €J ‚t        j                  | j                   |«      }|dk  rt        j                  r|S d}t	        |«      ‚t        j                  d|d d «      }t        d„ |D «       «      | j                  d<   |S )Né    zTruncated cHRM chunkz>8Ic              3  ó&   K  — | ]	  }|d z  –— Œ y­w)r  Nr>   )Ú.0Úelts     r@   ú	<genexpr>z'PngStream.chunk_cHRM.<locals>.<genexpr>1  s   è ø€ Ò,PÀ¨S°8­^Ñ,Pùs   ‚Úchromaticity)	rY   r   rŠ   re   rJ   r   ÚunpackÚtuplerÍ   )r[   ri   rj   rK   rN   Úraw_valss         r@   Ú
chunk_cHRMzPngStream.chunk_cHRM%  s‚   € ð �w‰wÐ"Ð"Ð"Ü× Ñ  §¡¨&Ó1ˆØ�BŠ;Ü×.Ò.Ø�Ø(ˆCÜ˜S“/Ð!Ü—=‘= ¨¨#¨2¨Ó/ˆÜ',Ñ,PÀxÔ,PÓ'Pˆ�‰�^Ñ$Øˆr?   c                óÎ   — | j                   €J ‚t        j                  | j                   |«      }|dk  rt        j                  r|S d}t	        |«      ‚|d   | j
                  d<   |S )Nr   zTruncated sRGB chunkr   Úsrgb)rY   r   rŠ   re   rJ   rÍ   rò   s        r@   Ú
chunk_sRGBzPngStream.chunk_sRGB4  se   € ð �w‰wÐ"Ð"Ð"Ü× Ñ  §¡¨&Ó1ˆØ�AŠ:Ü×.Ò.Ø�Ø(ˆCÜ˜S“/Ð!Ø  ™tˆ�‰�VÑØˆr?   c                óP  — | j                   €J ‚t        j                  | j                   |«      }|dk  rt        j                  r|S d}t	        |«      ‚t        |d«      t        |d«      }}|d   }|dk(  r|dz  |dz  f}|| j                  d<   |S |dk(  r||f| j                  d	<   |S )
Nrë   zTruncated pHYs chunkr   r0   r1   r   ç¦
F%uš?ÚdpiÚaspectr
  )	r[   ri   rj   rK   rN   ÚpxÚpyÚunitr  s	            r@   Ú
chunk_pHYszPngStream.chunk_pHYsE  s¸   € à�w‰wÐ"Ð"Ð"Ü× Ñ  §¡¨&Ó1ˆØ�AŠ:Ü×.Ò.Ø�Ø(ˆCÜ˜S“/Ð!Ü�Q˜“œC  1›IˆBˆØ�‰tˆØ�1Š9Ø�v‘+˜r F™{Ð*ˆCØ"%ˆD�L‰L˜Ñð ˆð �QŠYØ%'¨ VˆD�L‰L˜Ñ"Øˆr?   c                ó~  — | j                   €J ‚t        j                  | j                   |«      }	 |j                  dd«      \  }}|rc|j                  dd«      }|j                  dd«      }|dk(  r|n|| j                  |<   || j                  |<   | j                  t        |«      «       |S # t        $ r |}d}Y Œvw xY w)Nr°   r   r?   r¬   r­   Úreplaces   exif)
rY   r   rŠ   ÚsplitrJ   r}   rÍ   rÎ   rÜ   Úlen)r[   ri   rj   rK   ÚkÚvÚk_strÚv_strs           r@   Ú
chunk_tEXtzPngStream.chunk_tEXtW  s¼   € à�w‰wÐ"Ð"Ð"Ü× Ñ  §¡¨&Ó1ˆð	Ø—7‘7˜5 !Ó$‰DˆAˆqñ
 Ø—H‘H˜Y¨Ó1ˆEØ—H‘H˜Y¨	Ó2ˆEà'(¨G¢|¡!¸ˆD�L‰L˜ÑØ"'ˆD�L‰L˜ÑØ×"Ñ"¤3 u£:Ô.àˆøô ò 	àˆAØŠAð	ús   °B, Â,B<Â;B<c                ó@  — | j                   €J ‚t        j                  | j                   |«      }	 |j                  dd«      \  }}|r|d   }nd}|dk7  rd|› d�}t        |«      ‚	 t        |dd  «      }|r\|j                  dd«      }|j                  dd	«      }	|	x| j                  |<   | j                  |<   | j                  t        |	«      «       |S # t        $ r |}d}Y Œžw xY w# t        $ r t        j                  rd}n‚ Y Œ’t        j                  $ r d}Y Œ¨w xY w)
Nr°   r   r?   r   rã   z in zTXt chunkr¬   r­   r#  )rY   r   rŠ   r$  rJ   rg   rO   re   r   r‚   r}   rÍ   rÎ   rÜ   r%  )
r[   ri   rj   rK   r&  r'  rç   rN   r(  r)  s
             r@   Ú
chunk_zTXtzPngStream.chunk_zTXtk  s6  € à�w‰wÐ"Ð"Ð"Ü× Ñ  §¡¨&Ó1ˆð	Ø—7‘7˜5 !Ó$‰DˆAˆqñ Ø˜A™$‰KàˆKØ˜!ÒØ/°¨}¸NÐKˆCÜ˜cÓ"Ð"ð	Ü% a¨¨ eÓ,ˆAñ Ø—H‘H˜Y¨Ó1ˆEØ—H‘H˜Y¨	Ó2ˆEà8=Ð=ˆD�L‰L˜Ñ $§,¡,¨uÑ"5Ø×"Ñ"¤3 u£:Ô.àˆøô7 ò 	ØˆAØŠAð	ûô ò 	Ü×.Ò.Ø‘àñ ô �z‰zò 	ØŠAð	ús)   °C Á&C' ÃC$Ã#C$Ã'DÄDÄDc                óF  — | j                   €J ‚t        j                  | j                   |«      x}}	 |j                  dd«      \  }}t        |«      dk  r|S |d   |d   |dd  }}}	 |j                  dd«      \  }}	}
|dk7  r|dk(  r	 t        |
«      }
n|S |dk(  r|
| j                  d<   	 |j                  dd«      }|j                  d	d«      }|	j                  d	d«      }|
j                  d	d«      }t        |||«      x| j                  |<   | j                  |<   | j                  t        |«      «       |S # t        $ r |cY S w xY w# t        $ r |cY S w xY w# t        $ r t        j                  r|cY S ‚ t        j                  $ r |cY S w xY w# t        $ r |cY S w xY w)
Nr°   r   r/   r   s   XML:com.adobe.xmpÚxmpr¬   r­   r®   )rY   r   rŠ   r$  rJ   r%  rO   re   r   r‚   rÍ   r}   r½   r˜   rÎ   rÜ   )r[   ri   rj   ÚrrK   r&  ÚcfÚcmr™   Útkr'  r(  Úlang_strÚtk_strr)  s                  r@   Ú
chunk_iTXtzPngStream.chunk_iTXtŽ  sÁ  € à�w‰wÐ"Ð"Ð"Ü×$Ñ$ T§W¡W¨fÓ5Ð5ˆˆAð	Ø—7‘7˜5 !Ó$‰DˆAˆqô ˆq‹6�AŠ:ØˆHØ�a‘D˜!˜A™$  ! " �ˆBˆð	ØŸ'™' %¨Ó+‰KˆD�"�að �Š7Ø�QŠwðÜ-¨aÓ0‘Að �ØÐ$Ò$Ø"#ˆD�L‰L˜Ñð	Ø—H‘H˜Y¨Ó1ˆEØ—{‘{ 7¨HÓ5ˆHØ—Y‘Y˜w¨Ó1ˆFØ—H‘H˜W hÓ/ˆEô 59¸ÀÈ&Ó4QÐQˆ�‰�UÑ˜dŸl™l¨5Ñ1Ø×Ñœs 5›zÔ*àˆøôG ò 	ØŠHð	ûô ò 	ØŠHð	ûô "ò Ü ×6Ò6Ø šàÜ—z‘zò Ø’Hðûô ò 	ØŠHð	úsN   ²D8 Á'E	 ÂE Â+AF Ä8EÅEÅ	EÅEÅFÅ7FÆFÆF ÆF c                ó†   — | j                   €J ‚t        j                  | j                   |«      }d|z   | j                  d<   |S )Nó   Exif  Úexif)rY   r   rŠ   rÍ   rþ   s       r@   Ú
chunk_eXIfzPngStream.chunk_eXIf¹  s@   € Ø�w‰wÐ"Ð"Ð"Ü× Ñ  §¡¨&Ó1ˆØ.°Ñ2ˆ�‰�VÑØˆr?   c                ó¤  — | j                   €J ‚t        j                  | j                   |«      }|dk  rt        j                  r|S d}t	        |«      ‚| j
                  �d | _        t        j                  d«       |S t        |«      }|dk(  s|dkD  rt        j                  d«       |S || _        t        |d«      | j                  d<   d| _
        |S )	Nr1   z"APNG contains truncated acTL chunkz4Invalid APNG, will use default PNG image if possibler   l        r0   Úloopz
image/apng)rY   r   rŠ   re   rJ   rÔ   r   Úwarnrc   rÍ   rÓ   )r[   ri   rj   rK   rN   Ún_framess         r@   Ú
chunk_acTLzPngStream.chunk_acTLÀ  sÄ   € Ø�w‰wÐ"Ð"Ð"Ü× Ñ  §¡¨&Ó1ˆØ�AŠ:Ü×.Ò.Ø�Ø6ˆCÜ˜S“/Ð!Ø×ÑÐ'Ø#ˆDÔÜ�M‰MÐPÔQØˆHÜ�q“6ˆØ�qŠ=˜H zÒ1Ü�M‰MÐPÔQØˆHØ#ˆÔÜ" 1 a›yˆ�‰�VÑØ".ˆÔØˆr?   c                ó  — | j                   €J ‚t        j                  | j                   |«      }|dk  rt        j                  r|S d}t	        |«      ‚t        |«      }| j                  €|dk7  s| j                  �| j                  |dz
  k7  rd}t        |«      ‚|| _        t        |d«      t        |d«      }}t        |d«      t        |d	«      }	}| j                  \  }
}||z   |
kD  s|	|z   |kD  rd
}t        |«      ‚||	||z   |	|z   f| j                  d<   t        |d«      t        |d«      }}|dk(  rd}t        |«      t        |«      z  dz  | j                  d<   |d   | j                  d<   |d   | j                  d<   |S )Né   z"APNG contains truncated fcTL chunkr   r   ú#APNG contains frame sequence errorsr0   r1   rì   r2   zAPNG contains invalid framesrõ   é   é   éd   éè  Údurationé   Údisposalé   Úblend)rY   r   rŠ   re   rJ   rc   rÕ   rg   rÏ   rÍ   r  Úfloat)r[   ri   rj   rK   rN   ÚseqÚwidthÚheightr  r  Úim_wÚim_hÚ	delay_numÚ	delay_dens                 r@   Ú
chunk_fcTLzPngStream.chunk_fcTLÕ  s~  € Ø�w‰wÐ"Ð"Ð"Ü× Ñ  §¡¨&Ó1ˆØ�BŠ;Ü×.Ò.Ø�Ø6ˆCÜ˜S“/Ð!Ü�!‹fˆØ�M‰MÐ! c¨Q¢hØ�M‰MÐ%¨$¯-©-¸3À¹7Ò*Bà7ˆCÜ˜cÓ"Ð"ØˆŒÜ˜A˜q›	¤3 q¨!£9ˆvˆÜ�Q˜“œS  B›ZˆBˆØ—\‘\‰
ˆˆdØ�‰:˜Ò  V¡¨dÒ 2Ø0ˆCÜ˜cÓ"Ð"Ø " B¨¨U©
°B¸±KÐ@ˆ�‰�VÑÜ" 1 b›z¬3¨q°"«:�9ˆ	Ø˜Š>ØˆIÜ#(¨Ó#3´e¸IÓ6FÑ#FÈÑ#Mˆ�‰�ZÑ Ø#$ R¡5ˆ�‰�ZÑ Ø ! "¡ˆ�‰�WÑØˆr?   c                óx  — | j                   €J ‚|dk  r?t        j                  r"t        j                  | j                   |«      }|S d}t	        |«      ‚t        j                  | j                   d«      }t        |«      }| j                  |dz
  k7  rd}t        |«      ‚|| _        | j                  |dz   |dz
  «      S )Nr0   z"APNG contains truncated fDAT chunkr   rA  )	rY   r   re   rŠ   rJ   rc   rÕ   rg   rú   )r[   ri   rj   rK   rN   rL  s         r@   Ú
chunk_fdATzPngStream.chunk_fdATó  s«   € Ø�w‰wÐ"Ð"Ð"Ø�AŠ:Ü×.Ò.Ü×(Ñ(¨¯©°&Ó9�Ø�Ø6ˆCÜ˜S“/Ð!Ü× Ñ  §¡¨!Ó,ˆÜ�!‹fˆØ�=‰=˜C !™GÒ#Ø7ˆCÜ˜cÓ"Ð"ØˆŒØ�‰˜s Q™w¨°©
Ó3Ð3r?   rŽ   )rÛ   r•   r�   r‘   r“   )ri   r•   rj   r•   r�   r”   )ri   r•   rj   r•   r�   r   )r8   r9   r:   r\   rÜ   rß   rá   rè   ró   rú   rü   rÿ   r  r  r  r  r!  r*  r,  r5  r9  r>  rS  rU  Ú__classcell__©rØ   s   @r@   rÊ   rÊ   Š  sn   ø„ õó""ó
ó2ó
ó8ó*óóóó<
óóó"ó$ó(!óF)óVóó*÷<4r?   rÊ   c                ó,   — | j                  t        «      S rX   )Ú
startswithÚ_MAGIC)Úprefixs    r@   Ú_acceptr\    s   € Ø×ÑœVÓ$Ð$r?   c                  óˆ   ‡ — e Zd ZdZdZdd„Zedd„«       Zdˆ fd„Zdd„Z	ddd„Z
dd„Zdd	„Zdd
„Zdd„Zdd„Zdˆ fd„Zˆ xZS )ÚPngImageFileÚPNGzPortable network graphicsc                ób  — | j                   €J ‚t        | j                   j                  d«      «      sd}t        |«      ‚| j                   | _        d| _        g | _        t        | j                   «      | _        	 | j                  j                  «       \  }}}	 | j                  j                  |||«      }| j                  j%                  ||«       ŒY# t        $ r Y nvt        $ rk t        j                  d|||«       t        j                  | j                   |«      }|dd j!                  «       r| j                  j#                  ||f«       Y Œšw xY w| j                  j&                  | _        | j                  j*                  | _        | j                  j.                  | _        d | _        | j                  j4                  | _        | j                  j8                  | _        | j                  j<                  xs d| _        | j0                  jA                  dd«      | _!        | j                  jD                  r4| j                  jD                  \  }}tG        jH                  ||«      | _%        |d	k(  r|d
z
  | _&        n|| _&        | j                  j<                  �ƒd| _'        | j                  jQ                  «        | jL                  | _)        | j                  jU                  «       | _+        | jB                  r| xj>                  dz  c_        | jY                  d«       | j>                  dkD  | _-        y )Nr1   znot a PNG filer   ú%r %s %s (unknown)r   r/   rö   Fó   fdATr0   ).rY   r\  ra   rg   Ú_fpÚ_PngImageFile__frameÚprivate_chunksrÊ   Úpngr~   rù   ÚAttributeErrorrz   r{   r   rŠ   Úislowerrt   r†   rÐ   Ú_moderÏ   Ú_sizerÍ   rÅ   Ú_textrÑ   rÆ   rÓ   Úcustom_mimetyperÔ   r=  Úgetrö   rÒ   r   ÚrawÚpaletteÚ_PngImageFile__prepare_idatÚ!_close_exclusive_fp_after_loadingrß   Ú_PngImageFile__rewind_idatrb   Ú_PngImageFile__rewindÚ_seekÚis_animated)r[   rN   rh   ri   rj   rK   ÚrawmoderR   s           r@   Ú_openzPngImageFile._open  sx  € Ø�w‰wÐ"Ð"Ð"Ü�t—w‘w—|‘| A“Ô'Ø"ˆCÜ˜cÓ"Ð"Ø—7‘7ˆŒØˆŒð
 VXˆÔÜ%.¨t¯w©wÓ%7ˆŒàð  $Ÿx™xŸ}™}›ÑˆC��fð9Ø—H‘H—M‘M # s¨FÓ3�ð �H‰H�L‰L˜˜aÔ ð! øô ò ÙÜ!ò 9Ü—‘Ð1°3¸¸VÔDÜ×(Ñ(¨¯©°&Ó9�Ø�q˜�8×#Ñ#Ô%Ø×'Ñ'×.Ñ.°°Q¨xÔ8ùð	9úð —X‘X×%Ñ%ˆŒ
Ø—X‘X×%Ñ%ˆŒ
Ø—H‘H×$Ñ$ˆŒ	Ø37ˆŒ
Ø—H‘H×$Ñ$ˆŒ	Ø#Ÿx™x×:Ñ:ˆÔØŸ™×,Ñ,Ò1°ˆŒØ!ŸY™YŸ]™]¨?¸EÓBˆÔà�8‰8×ÒØ ŸH™H×/Ñ/‰MˆG�TÜ'×+Ñ+¨G°TÓ:ˆDŒLà�'Š>Ø"(¨1¡*ˆDÕà"(ˆDÔà�8‰8×ÑÐ+Ø5:ˆDÔ2Ø�H‰H× Ñ Ô"Ø!%×!4Ñ!4ˆDÔØ ŸH™HŸM™M›OˆDŒMØ×!Ò!à—’ Ñ"•Ø�J‰J�qŒMØŸ=™=¨1Ñ,ˆÕs   ÂC Ã	EÃA0EÅEc                ó  — | j                   €c| j                  r*| j                  }| j                  | j                  dz
  «       | j                  «        | j                  r| j                  «       | j                   €J ‚| j                   S )Nr   )rk  ru  rd  r`   r=  Úload)r[   Úframes     r@   rŸ   zPngImageFile.textX  so   € ð �:‰:Ðð ×ÒØŸ™�à—	‘	˜$Ÿ-™-¨!Ñ+Ô,Ø�I‰IŒKØ×ÒØ—	‘	˜%Ô Ø�z‰zÐ%Ð%Ð%Ø�z‰zÐr?   c                ó4  •— | j                   €d}t        |«      ‚| j                   j                  | j                  d   d   dz
  «       | j                  €J ‚| j                  j                  «        | j                  j                  «        t        ‰| �  «        y)zVerify PNG fileNz)verify must be called directly after openr   r/   r1   )rY   ÚRuntimeErrorr`   rÆ   rf  r�   ro   rÌ   )r[   rN   rØ   s     €r@   r�   zPngImageFile.verifyh  sw   ø€ ð �7‰7ˆ?Ø=ˆCÜ˜sÓ#Ð#ð 	�‰�‰�T—Y‘Y˜q‘\ !‘_ qÑ(Ô)à�x‰xÐ#Ð#Ð#Ø�‰�‰ÔØ�‰�‰Ôä‰‰Õr?   c                óH  — | j                  |«      sy || j                  k  r| j                  dd«       | j                  }	 t        | j                  dz   |dz   «      D ]  }| j                  |«       Œ y # t        $ r$}| j                  |«       d}t	        |«      |‚d }~ww xY w)Nr   Tr   zno more images in APNG file)Ú_seek_checkrd  rt  Úrangerù   r`   )r[   rz  Ú
last_frameÚfr…   rN   s         r@   r`   zPngImageFile.seekx  s–   € Ø×Ñ Ô&ØØ�4—<‘<ÒØ�J‰J�q˜$Ôà—\‘\ˆ
ð	'Ü˜4Ÿ<™<¨!Ñ+¨U°Q©YÓ7ò �Ø—
‘
˜1•ñøäò 	'Ø�I‰I�jÔ!Ø/ˆCÜ˜3“- QÐ&ûð	'ús   Á2A4 Á4	B!Á=BÂB!c                ó 
  — | j                   €J ‚t        | j                  t        «      r| j                  j                  ‚d }|dk(  �r,|rž| j                  j                  | j                  «       | j                   j                  «        | j                  | _	        d | _
        | j                   j                  | _        | j                   j                  | _        | j                  | _        d | _        | j                  j#                  dd«      | _        | j                  j#                  d«      | _        | j                  j#                  d«      | _        | j                  j#                  d«      }d| _        �n|| j*                  dz   k7  rd|› �}t-        |«      ‚| j&                  t.        j0                  k(  rD| j2                  \  }}}}t4        j6                  j9                  | j:                  ||z
  ||z
  f«      }	n`| j&                  t.        j<                  k(  rA| j                   �5| j?                  | j                   jA                  «       | j2                  «      }	nd }	| jC                  «        |	r&| jD                  jG                  |	| j2                  «       | jD                  jA                  «       | _        | j                  | _        | j                  r1tI        jJ                  | j                  | j                  «       d| _	        d}
	 | j                  jM                  d
«       	 | j                   jM                  «       \  }}}|dk(  rd}tU        |«      ‚|dk(  r|
rd}tS        |«      ‚d	}
	 | j                   jW                  |||«       Œ�|r|| _        | j                   €4| j&                  t.        j<                  k(  rt.        j0                  | _        y y y # tN        jP                  tR        f$ r Y n”w xY w# tX        $ r Y n…tT        $ r8 |dk(  r|d
z  }|
r	|| _	        Y nhtI        jJ                  | j                  |«       Y Œ´tZ        $ r; t\        j_                  d|||«       tI        jJ                  | j                  |«       Y Œöw xY w|| _        | j                   j                  | _        | j                  j#                  d«      | _        | j                  j#                  d«      | _        | j                  j#                  d«      }| j                  r�Œ„d}tU        |«      ‚)Nr   rö   FrH  rJ  rõ   r   zcannot seek to frame Tr0   r–   zNo more images in APNG fileó   fcTLzAPNG missing frame datarb  ra  zimage not found in APNG frame)0rf  r²   rc  r   Úexr`   rs  rá   rr  rp  Ú_imrÍ   rÅ   rÑ   rÆ   rY   Ú_prev_imrm  rö   Ú
dispose_opÚblend_oprd  rJ   r7   r<   Údispose_extentr   ÚcoreÚfillÚmoder=   Ú_croprÞ   ry  ÚimÚpaster   rŠ   ra   r   r‚   rg   rù   r~   ÚUnicodeDecodeErrorrg  rz   r{   )r[   rz  rá   r‰  rN   Úx0Úy0Úx1Úy1ÚdisposeÚframe_startrh   ri   rj   s                 r@   rt  zPngImageFile._seek‡  sï  € Ø�x‰xÐ#Ð#Ð#Ü�d—h‘h¤Ô.Ø—(‘(—+‘+ÐàˆØ�A‹:ÙØ—‘—‘˜dŸm™mÔ,Ø—‘—‘Ô!Ø&*×&8Ñ&8�Ô#Ø�”Ø ŸH™H×,Ñ,�”	Ø ŸH™H×,Ñ,�”	ØŸ(™(�”Ø9=ˆDŒMØ!%§¡§¡¨ÀÓ!FˆDÔØ"Ÿi™iŸm™m¨JÓ7ˆDŒOØ ŸI™IŸM™M¨'Ó2ˆDŒMØ!ŸY™YŸ]™]¨6Ó2ˆNØˆDŽLà˜Ÿ™ qÑ(Ò(Ø-¨e¨WÐ5�Ü  “oÐ%à�‰¤(×"8Ñ"8Ò8Ø!%×!4Ñ!4‘��B˜˜BÜŸ*™*Ÿ/™/¨$¯)©)°b¸2±g¸rÀB¹wÐ5GÓH‘Ø—‘¤H×$8Ñ$8Ò8¸T¿]¹]Ð=VØŸ*™* T§]¡]×%7Ñ%7Ó%9¸4×;NÑ;NÓO‘à�ð �I‰IŒKáØ—‘—‘˜g t×':Ñ':Ô;Ø ŸG™GŸL™L›NˆDŒMà—h‘hˆDŒGð ×"Ò"Ü×$Ñ$ T§W¡W¨d×.AÑ.AÔBØ&'�Ô#ØˆKØØ—‘—‘˜Q”ðØ'+§x¡x§}¡}£Ñ$�C˜˜fð ˜'’>Ø7�CÜ" 3›-Ð'Ø˜'’>Ù"à7˜Ü)¨#Ó.Ð.Ø"&�Kð:Ø—H‘H—M‘M # s¨FÔ3ð' ñT ØESˆDÔð �=‰=Ð  T§_¡_¼×8LÑ8LÒ%LÜ&×4Ñ4ˆD�Oð &MÐ øôS Ÿ™¤kÐ2ò Ùðûô *ò ÙÜò :Ø˜g’~Ø !™˜Ù&Ø28˜DÔ/Ù!Ü×(Ñ(¨¯©°&Ö9Ü%ò :Ü—L‘LÐ!5°s¸CÀÔHÜ×(Ñ(¨¯©°&Ö9ð:úð !ˆDŒLØŸ™×(Ñ(ˆDŒIØ"Ÿi™iŸm™m¨JÓ7ˆDŒOØ ŸI™IŸM™M¨'Ó2ˆDŒMØ!ŸY™YŸ]™]¨6Ó2ˆNà—9”9Ø5�Ü˜s“mÐ#s7   ÌO	 Í!O( Ï	O%Ï$O%Ï(	Q5Ï3Q5Ð Q5Ð2A Q5Ñ4Q5c                ó   — | j                   S rX   )rd  rl   s    r@   rb   zPngImageFile.tellè  s   € Ø�|‰|Ðr?   c                óÂ   — | j                   j                  d«      r| j                  dz   | _        | j                  | _        t
        j
                  j                  | «       y)z"internal: prepare to read PNG filerí   )r   N)rÅ   rm  Údecoderconfigrp  Ú_PngImageFile__idatr   Úload_preparerl   s    r@   r›  zPngImageFile.load_prepareë  sH   € ð �9‰9�=‰=˜Ô%Ø!%×!3Ñ!3°dÑ!:ˆDÔà×)Ñ)ˆŒÜ×Ñ×(Ñ(¨Õ.r?   c                ód  — | j                   €J ‚| j                  €J ‚| j                  dk(  r | j                  j                  d«       | j                   j                  «       \  }}}|dvr| j                   j	                  |||«       y|dk(  r)	 | j                   j                  |||«       |dz
  | _        n|| _        | j                  dk(  rŒ |dk  r| j                  }nt        || j                  «      }| j                  |z
  | _        | j                  j                  |«      S # t        $ r Y Œ„w xY w)zinternal: read more image datar   r0   )ó   IDATs   DDATrb  r?   rb  )rf  rY   rš  ra   rv   r~   rù   Úmin)r[   Ú
read_bytesrh   ri   rj   s        r@   Ú	load_readzPngImageFile.load_readô  s  € ð �x‰xÐ#Ð#Ð#Ø�w‰wÐ"Ð"Ð"Ø�k‰k˜QÒð �G‰G�L‰L˜ŒOà#Ÿx™xŸ}™}›ÑˆC��fàÐ5Ñ5Ø—‘—‘˜c 3¨Ô/Øà�gŠ~ðØ—H‘H—M‘M # s¨FÔ3ð % q™j�•à$�”ð% �k‰k˜QÓð* ˜Š?ØŸ™‰Jä˜Z¨¯©Ó5ˆJà—k‘k JÑ.ˆŒà�w‰w�|‰|˜JÓ'Ð'øô  ò Ùðús   ÂD# Ä#	D/Ä.D/c                ó$  — | j                   €J ‚| j                  €J ‚| j                  dk7  r%| j                  j                  | j                  «       	 | j                  j                  d«       	 | j                   j                  «       \  }}}|dk(  rnU|dk(  r1| j                  r%d| _        | j                   j                  |||«       n	 | j                   j                  |||«       Œ•| j                   j.                  | _        | j                  s"| j                   j3                  «        d| _         y| j4                  �rO| j6                  t8        j:                  k(  �r0| j=                  | j>                  | j@                  «      }| j>                  jB                  dk(  r.d| jD                  v r |jG                  d| jD                  d   «      }nŠ| j>                  jB                  dk(  r`d| jD                  v rR| jD                  d   }tI        |tJ        «      r|jM                  |«       n!tI        |tN        «      r|jQ                  |«       |jS                  d«      }| j4                  jU                  || j@                  |«       | j4                  | _        yyy# t        j
                  t        f$ r Y �ŒÂw xY w# t        $ r Y �ŒÒt        $ rZ |dk(  r|dz  }	 t        j                  | j                  |«       n*# t        $ r}t        j                   rY d}~Y �Œ&|‚d}~ww xY wY �Œ4t"        $ rm t$        j'                  d|||«       t        j                  | j                  |«      }|d	d
 j)                  «       r| j*                  j-                  ||df«       Y �Œ¨w xY w)z%internal: finished reading image dataNr   Tr0   r–   rƒ  rb  ra  r   r/   r'   r  r-   r(   )+rf  rY   rš  ra   r   r‚   rg   ru  rp  rv   r~   r�  rù   r   rŠ   r‰   re   rg  rz   r{   rh  re  rt   rÎ   rk  ro   r†  rˆ  rB   rD   r�  rŽ  r‰  rŒ  rÅ   Úconvert_transparentr²   r”   Úputpalettealphasr•   ÚputpalettealphaÚconvertr�  )	r[   rh   ri   rj   r…   rK   ÚupdatedÚmaskÚts	            r@   Úload_endzPngImageFile.load_end  sâ  € à�x‰xÐ#Ð#Ð#Ø�w‰wÐ"Ð"Ð"Ø�;‰;˜!ÒØ�G‰G�L‰L˜Ÿ™Ô%ØØ�G‰G�L‰L˜ŒOðØ#'§8¡8§=¡=£?Ñ ��S˜&ð �gŠ~ØØ˜’ D×$4Ò$4à&'�Ô#Ø—‘—‘˜c 3¨Ô/Øð?Ø—‘—‘˜c 3¨Ô/ð# ðF —X‘X×%Ñ%ˆŒ
Ø×ÒØ�H‰H�N‰NÔØˆD�Hà�}‹} §¡´%·-±-Ó!?ØŸ*™* T§W¡W¨d×.AÑ.AÓB�Ø—7‘7—<‘< 5Ò(¨^¸t¿y¹yÑ-HØ"×6Ñ6Ø §	¡	¨.Ñ 9ó‘Dð —w‘w—|‘| sÒ*¨~ÀÇÁÑ/JØ ŸI™I nÑ5˜Ü% a¬Ô/Ø#×4Ñ4°QÕ7Ü'¨¬3Ô/Ø#×3Ñ3°AÔ6Ø"Ÿ?™?¨6Ó2�DØ—‘×#Ñ# G¨T×-@Ñ-@À$ÔGØŸ-™-�•ð "@ˆ}øôG —L‘L¤+Ð.ò Úðûô &ò ÚÜò 	 Ø˜'’>Ø˜a‘K�Fð Ü×(Ñ(¨¯©°&Õ9øÜò  Ü ×6Ò6Þà˜ûð	 úò :ô "ò ?Ü—‘Ð1°3¸¸VÔDÜ×(Ñ(¨¯©°&Ó9�Ø�q˜�8×#Ñ#Ô%Ø×'Ñ'×.Ñ.°°Q¸¨~Ô>úð	?úsa   Á.J Ã	J- ÊJ*Ê)J*Ê-	NÊ9NË K-Ë,NË-	LË6LÌNÌLÌLÌNÌA1NÎNc                ó´   — d| j                   vr| j                  «        d| j                   vrd| j                   vry | j                  «       j                  «       S )Nr8  zRaw profile type exif)rÅ   ry  ÚgetexifÚ_get_merged_dictrl   s    r@   Ú_getexifzPngImageFile._getexifV  sG   € Ø˜Ÿ™Ñ"Ø�I‰IŒKØ˜Ÿ™Ñ"Ð'>ÀdÇiÁiÑ'OØØ�|‰|‹~×.Ñ.Ó0Ð0r?   c                ó\   •— d| j                   vr| j                  «        t        ‰| �  «       S )Nr8  )rÅ   ry  rÌ   r«  )r[   rØ   s    €r@   r«  zPngImageFile.getexif]  s%   ø€ Ø˜Ÿ™Ñ"Ø�I‰IŒKä‰w‰Ó Ð r?   r“   )r�   zdict[str, str | iTXt])rz  r•   r�   r‘   r¿   )rz  r•   rá   rÀ   r�   r‘   )r�   r•   )rŸ  r•   r�   r”   )r�   zdict[int, Any] | None)r�   z
Image.Exif)r8   r9   r:   ÚformatÚformat_descriptionrw  ÚpropertyrŸ   r�   r`   rt  rb   r›  r   r©  r­  r«  rV  rW  s   @r@   r^  r^    s_   ø„ Ø€FØ4ÐóB-ðH òó ðõó 'ô_5óBó/ó!(óF=(ó~1÷!ñ !r?   r^  )r!   ó   r°   )r"   ó   r°   )úL;1r²  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%   r&   r)   r*   r+   r(   r'   r-   c                óò   — dj                  |«      }| j                  t        t        |«      «      |z   «       | j                  |«       t	        |t	        |«      «      }| j                  t        |«      «       y)z'Write a PNG chunk (including CRC field)r?   N)ÚjoinÚwriteÚo32r%  rT   )rY   rh   rR   Ú	byte_datar†   s        r@   Úputchunkr¿  z  sW   € ð —‘˜“€Ià‡H�HŒS”�Y“Ó  3Ñ&Ô'Ø‡H�HˆYÔÜ
�œF 3›KÓ
(€CØ‡H�HŒS�‹XÕr?   c                  ó   — e Zd Zdd„Zdd„Zy)Ú_idatc                ó    — || _         || _        y rX   )rY   Úchunk)r[   rY   rÃ  s      r@   r\   z_idat.__init__ˆ  s   € ØˆŒØˆ�
r?   c                ó>   — | j                  | j                  d|«       y )Nr�  )rÃ  rY   ©r[   rR   s     r@   r¼  z_idat.writeŒ  s   € Ø�
‰
�4—7‘7˜G TÕ*r?   N)rY   r�   rÃ  úCallable[..., None]r�   r‘   ©rR   r”   r�   r‘   ©r8   r9   r:   r\   r¼  r>   r?   r@   rÁ  rÁ  …  s   „ óô+r?   rÁ  c                  ó   — e Zd Zdd„Zdd„Zy)Ú_fdatc                ó.   — || _         || _        || _        y rX   )rY   rÃ  rÇ   )r[   rY   rÃ  rÇ   s       r@   r\   z_fdat.__init__“  s   € ØˆŒØˆŒ
Øˆ�r?   c                ó�   — | j                  | j                  dt        | j                  «      |«       | xj                  dz  c_        y )Nrb  r   )rÃ  rY   r½  rÇ   rÅ  s     r@   r¼  z_fdat.write˜  s/   € Ø�
‰
�4—7‘7˜G¤S¨¯©Ó%6¸Ô=Ø�Š˜ÑŽr?   N)rY   r�   rÃ  rÆ  rÇ   r•   r�   r‘   rÇ  rÈ  r>   r?   r@   rÊ  rÊ  �  s   „ óô
r?   rÊ  c                óš   — |j                  dd«      |j                  dd«      |j                  dd«      |j                  dd«      f| _        y )NÚoptimizeFÚcompress_leveléÿÿÿÿÚcompress_typeÚ
dictionaryr?   )rm  Úencoderconfig)rŽ  Úencoderinfos     r@   Ú_apply_encoderinforÕ  �  sE   € à�‰˜
 EÓ*Ø�‰Ð(¨"Ó-Ø�‰˜¨Ó,Ø�‰˜ cÓ*ð	€BÕr?   c                  ó,   — e Zd ZU ded<   ded<   ded<   y)Ú_FrameúImage.ImagerŽ  z tuple[int, int, int, int] | Nonerõ   údict[str, Any]rÔ  NrÈ   r>   r?   r@   r×  r×  ¦  s   … ØƒOØ
*Ó*ØÔr?   r×  c                óV  — | j                   j                  d«      }| j                   j                  d| j                  j                  dd«      «      }| j                   j                  d| j                  j                  dt        j                  «      «      }	| j                   j                  d| j                  j                  dt
        j                  «      «      }
|rt        j                  |«      }nt        j                  | g|«      }g }d}|D �]
  }t        j                  |«      D �]î  }|j                  |k(  r|j                  «       }n|j                  |«      }| j                   j                  «       }t        |t        t         f«      r	||   |d<   n"|€ d|j                  v r|j                  d   |d<   t        |	t        t         f«      r|	|   |d<   t        |
t        t         f«      r|
|   |d<   |dz  }|�rý|d   }|j                   j                  d«      }|j                   j                  d«      }|t        j"                  k(  rt%        |«      dk  rt        j&                  }|t        j&                  k(  r‰|j(                  j                  «       }t*        j,                  j/                  d	| j0                  d
«      }|j2                  }|r|j5                  |«      }nddg| j0                  ¢­}|j7                  ||«       n/|t        j"                  k(  r|d   j(                  }n|j(                  }t9        j:                  |j                  d	«      |j                  d	«      «      }|j=                  d¬«      }|s€||j                  d«      k(  rl||j                  d«      k(  rXd|v rT|j                   d   |d   z   }t?        |dz  «      jA                  d«      }|jB                  dk  r||j                   d<   �ŒÑd }|jE                  tG        |||«      «       �Œñ �Œ t%        |«      dk(  r|s|d   j(                  S  ||dtI        t%        |«      «      tI        |«      «       |r‰| j                  |k(  r| n| j                  |«      }tK        || j                   «       tM        jN                  |tQ        dtS        ||«      «      tM        jT                  dddg| j0                  ¢­d|«      g«       d}tW        |«      D �],  \  }}|j(                  }|j2                  sddg|j0                  ¢­}n|j2                  }|j5                  |«      }|j0                  }|j                   }|j                  dd«      }t?        |dz  «      jA                  d«      }|jB                  dkD  rd} tY        | «      ‚|j                  d|	«      }!|j                  d|
«      }" ||dtI        |«      tI        |d   «      tI        |d   «      tI        |d   «      tI        |d   «      t[        |jB                  «      t[        |j\                  «      t_        |!«      t_        |"«      «       |dz  }tK        || j                   «       |dk(  rU|sStM        jN                  |tQ        dtS        ||«      «      tM        jT                  dddg|j0                  ¢­d|«      g«       �ŒÍta        |||«      }#tM        jN                  |tQ        d|#«      tM        jT                  dddg|j0                  ¢­d|«      g«       |#jb                  }�Œ/ y )NrF  r;  r   rH  rJ  r   rÐ  r/   r-   )r   r   r   r   éþÿÿÿF)Ú
alpha_onlyrE  éÿÿ  s   acTLr�   r·   zcannot write durationrƒ  )2rÔ  rm  rÅ   r7   r;   rB   rC   r
   Úchainr   ÚIteratorrŒ  rÞ   r¥  r²   Úlistr  r=   r%  r<   rŽ  r   rŠ  r‹  Úsizerõ   Úcropr�  r   Úsubtract_moduloÚgetbboxr   Úlimit_denominatorÚ	numeratorrt   r×  r½  rÕ  r   Ú_saver   rÁ  r÷   Ú	enumeraterJ   Úo16Údenominatorr   rÊ  rÇ   )$rŽ  rY   rÃ  rŒ  rv  rö   Úappend_imagesrF  r;  rH  rJ  rÞ  Ú	im_framesÚframe_countÚim_seqÚim_framerÔ  ÚpreviousÚprev_disposalÚ
prev_blendÚbase_imr•  rõ   ÚdeltaÚnew_durationÚdelayÚ
default_imrÇ   rz  Ú
frame_datará  Úframe_durationrN   Úframe_disposalÚframe_blendÚfdat_chunkss$                                       r@   Ú_write_multiple_framesrý  ¬  s3  € ð �~‰~×!Ñ! *Ó-€HØ�>‰>×Ñ˜f b§g¡g§k¡k°&¸!Ó&<Ó=€DØ�~‰~×!Ñ! *¨b¯g©g¯k©k¸*Äh×FVÑFVÓ.WÓX€HØ�N‰N×Ñ˜w¨¯©¯©°G¼U¿_¹_Ó(MÓN€EáÜ—‘ Ó.‰ä—‘   mÓ4ˆà €IØ€KØó 8BˆÜ%×.Ñ.¨vÓ6ó 7	BˆHØ�}‰} Ò$Ø#Ÿ=™=›?‘à#×+Ñ+¨DÓ1�ØŸ.™.×-Ñ-Ó/ˆKÜ˜(¤T¬5 MÔ2Ø*2°;Ñ*?�˜JÒ'ØÐ! j°H·M±MÑ&AØ*2¯-©-¸
Ñ*C�˜JÑ'Ü˜(¤T¬5 MÔ2Ø*2°;Ñ*?�˜JÑ'Ü˜%¤$¬ Ô/Ø',¨[Ñ'9�˜GÑ$Ø˜1ÑˆKâØ$ R™=�Ø (× 4Ñ 4× 8Ñ 8¸Ó D�Ø%×1Ñ1×5Ñ5°gÓ>�
Ø ¤H×$8Ñ$8Ò8¼SÀ»^ÈaÒ=OÜ$,×$:Ñ$:�Mà ¤H×$:Ñ$:Ò:Ø&Ÿk™k×.Ñ.Ó0�GÜ#Ÿj™jŸo™o¨f°b·g±g¸|ÓL�GØ#Ÿ=™=�DÙØ")§,¡,¨tÓ"4™à ! 1Ð/ r§w¡wÑ/˜Ø—M‘M '¨4Õ0Ø"¤h×&:Ñ&:Ò:Ø'¨™m×.Ñ.‘Gà&Ÿk™k�GÜ"×2Ñ2Ø×$Ñ$ VÓ,¨g¯o©o¸fÓ.Eó�ð —}‘}°�}Ó6�áØ%¨¯©¸Ó)DÒDØ" k§o¡o°gÓ&>Ò>Ø" kÑ1ð !×,Ñ,¨ZÑ8¸;ÀzÑ;RÑRð !ô % \°DÑ%8Ó9×KÑKÈEÓR�EØ—‘¨%Ò/Ø;G˜×,Ñ,¨ZÑ8Ù à�Ø×ÑœV H¨d°KÓ@ÖAòo7	Bð8Bôt ˆ9ƒ~˜Ò¡=Ø˜‰|�‰Ðñ 
Ø
ØÜŒC�	‹NÓÜˆD‹	ô	ñ ØŸ7™7 dš?‘R°·
±
¸4Ó0@ˆ
Ü˜: r§~¡~Ô6Ü�‰ØÜ�œe B¨Ó.Ó/Ü�_‰_˜U Q¨Ð$4¨B¯G©GÑ$4°a¸ÓAÐBô	
ð €GÜ& yÓ1ó /*ÑˆˆzØ—=‘=ˆØ�ŠØ�qÐ)˜8Ÿ=™=Ñ)‰Dà—?‘?ˆDØ—}‘} TÓ*ˆHØ�}‰}ˆØ ×,Ñ,ˆØ$Ÿ™¨°QÓ7ˆÜ˜¨$Ñ.Ó/×AÑAÀ%ÓHˆØ�?‰?˜UÒ"Ø)ˆCÜ˜S“/Ð!Ø$Ÿ™¨°XÓ>ˆØ!—o‘o g¨uÓ5ˆáØØÜ�‹LÜ��Q‘‹LÜ��Q‘‹LÜ��Q‘‹LÜ��Q‘‹LÜ�—‘Ó Ü�×!Ñ!Ó"Üˆ~ÓÜˆ{‹Oô	
ð 	�1‰ˆä˜8 R§^¡^Ô4Ø�AŠ:™mä�O‰OØÜ�[¤%¨¨EÓ"2Ó3Ü—‘ ¨¨AÐ(>°·±Ñ(>ÀÀ7ÓKÐLöô    E¨7Ó3ˆKÜ�O‰OØÜ�[ +Ó.Ü—‘ ¨¨AÐ(>°·±Ñ(>ÀÀ7ÓKÐLôð
 "×)Ñ)ŠGð_/*ð` r?   c                ó"   — t        | ||d¬«       y )NT)Úsave_all)rç  )rŽ  rY   Úfilenames      r@   Ú	_save_allr  D  s   € Ü	ˆ"ˆb�( TÖ*r?   c                ó&  ‡+— |�r‡| j                   j                  d| j                  j                  d«      «      }t        «       }t        «       Š+d }d }d }	| j                   j                  dg «      }
t	        j
                  | g|
«      D ]¾  }t        j                  |«      D ]¤  }|j                  |j                  «       ‰+j                  |j                  «       |j                  dk(  rL|j                  r|j                  j                  dk(  r|}|	�Œr|j                  «       xs g }|�	||k7  sŒŽd}	Œ‘|}Œ”|j                  dv sŒ£d}	Œ¦ ŒÀ |	r|rdnd}nd	D ]  }||v sŒ n |j                  «       }t        ˆ+fd
„t        d«      D «       «      }nZ| j                  }| j                  }|dk(  r=| j                  r1| j                  «       xs g }| j                  j                  dk(  r| nd }|}|dk(  rdt!        dt#        d| j                   j                  dd«      z  rt%        |«      dz  ndd«      «      }|dk  rT|dk  rd}n
|dk  rd}nd}|d|› �z  }n9|dk(  r4| j                   j                  dd«      dk7  r|d| j                   d   › �z  }	 t&        |   \  }}}|j-                  t.        «        ||dt1        |d   «      t1        |d   «      ||ddd«	       g d¢}| j                   j                  d| j                  j                  d«      «      x}r8d}|dz   t3        j4                  |«      z   } ||d|«       |j7                  d«       | j                   j                  d «      x}r‚g d!¢}|j8                  D ]o  }|d d \  }}||v r|j7                  |«        ||||«       Œ+||v r ||||«       Œ:|dd j;                  «       sŒNt%        |«      dk(  xr |d   } | rŒf ||||«       Œq |dk(  r#xr t=        |d dz   «      xs d"}! ||d#|!«       | j                   j                  d$| j                  j                  d$«      «      }"|"��z|dk(  rk}#t?        |"t<        «      r ||d%|"d |# «       �n†t?        |"t@        «      r-t!        dt#        d&|"«      «      }"d'|"z  dz   }$ ||d%|$d |# «       �nId(}tC        |«      ‚| j                  d)v rUt?        |"t@        «      r*t!        dt#        d*|"«      «      }" ||d%tE        |"«      «       nôd+| j                  › d,�}tC        |«      ‚| j                  dk(  rpt?        |"tF        t        f«      sd-}tC        |«      ‚t%        |"«      dk7  rd.}tC        |«      ‚|"\  }%}&}' ||d%tE        |%«      tE        |&«      z   tE        |'«      z   «       nZ| j                   j                  d$«      �?d/}t+        |«      ‚|dk(  r-r+|jH                  j                  dd0«      }$}# ||d%|$d |# «       | j                   j                  d1«      x}(rB ||d2t1        tA        |(d   d3z  d4z   «      «      t1        tA        |(d   d3z  d4z   «      «      d5«       |r=d6d7g}|j8                  D ]*  }|d d \  }}||v sŒ|j7                  |«        ||||«       Œ, | j                   j                  d8«      x})rKt?        |)tJ        jL                  «      r|)jO                  d«      })|)jQ                  d9«      r|)d:d  }) ||d;|)«       | }*|rtS        | ||||
«      }*|*rgtU        |*| j                   «       tW        jX                  |*t[        d<t]        ||«      «      tW        j^                  d=ddg|*j                  ¢­d|«      g«       |rO|j8                  D ]@  }|d d \  }}|dd j;                  «       sŒt%        |«      dk(  xr |d   } | sŒ7 ||||«       ŒB  ||d>d?«       ta        |d@«      r|jc                  «        y y # t(        $ r}d|› d�}t+        |«      |‚d }~ww xY w)ANrö   rë  r(   r-   Tr.   Fr'   )r-   r'   r(   c              3  óH   •‡K  — | ]  Št        ˆfd „‰D «       «      –— Œ y­w)c              3  ó(   •K  — | ]	  }|‰   –— Œ y ­wrX   r>   )r  Ú
frame_sizeræ   s     €r@   r  z"_save.<locals>.<genexpr>.<genexpr>t  s   øè ø€ Ò?¨:˜ A�Ñ?ùs   ƒN)Úmax)r  ræ   Úsizess    @€r@   r  z_save.<locals>.<genexpr>t  s   ùè ø€ ÒRÀA”SÓ?¸Ô?×?ÑRùs   „"r/   r   Úbitsr1   r3   r   é   r2   r0   ú;r"   zcannot write mode z as PNGs   IHDRr°   )s   cHRMs   cICPs   gAMAs   sBITó   sRGBs   tIMErä   s   ICC Profiler»   s   iCCPr  Úpnginfo)s   sPLTr¯   r¼   rº   r±   s   PLTEr  s   tRNSr  ó   ÿz.transparency for P must be an integer or bytes)r!   r"   ÚIr%   rÝ  ztransparency for z must be an integerz*transparency for RGB must be list or tuplez'transparency for RGB must have length 3z%cannot use transparency for this modeÚAr  s   pHYsr  g      à?r²  s   bKGDs   hISTr8  r7  r4   s   eXIfr�   r·   r–   r?   Úflush)2rÔ  rm  rÅ   Úsetr
   rÞ  r   rß  rª   rŒ  rá  ro  Ú
getpaletter_   r  r  r  rž  r%  Ú	_OUTMODESrñ   r‰   r¼  rZ  r½  r   r´   Úremover§   rh  r”   r²   r•   rJ   ré  rà  rŽ  r   ÚExifÚtobytesrY  rý  rÕ  r   rç  r   rÁ  r÷   Úhasattrr  ),rŽ  rY   r   rÃ  rÿ  rö   Úmodesro  Úpalette_frame_with_alphaÚdifferent_paletterë  rî  rï  Úframe_paletterŒ  rá  ÚoutmodeÚcolorsr  rv  Ú	bit_depthÚ
color_typer…   rN   r§   ÚiccÚnamerR   rÅ   Úchunks_multiple_allowedÚ
info_chunkrh   r©   Úpalette_bytesr  Úalpha_bytesÚalphaÚredÚgreenÚbluer  r8  Ú	single_imr  s,                                              @r@   rç  rç  H  s  ø€ ò ØŸ™×*Ñ*Ø˜RŸW™WŸ[™[¨Ó9ó
ˆô “ˆÜ“ˆØˆØ#'Ð Ø ÐØŸ™×*Ñ*¨?¸BÓ?ˆÜ—o‘o r d¨MÓ:ò 	.ˆFÜ)×2Ñ2°6Ó:ò .�Ø—	‘	˜(Ÿ-™-Ô(Ø—	‘	˜(Ÿ-™-Ô(Ø—=‘= CÒ'Ø×'Ò'¨H×,<Ñ,<×,AÑ,AÀVÒ,KØ3;Ð0Ø(Ñ0Ø(0×(;Ñ(;Ó(=Ò(CÀ˜Ø"Ð.Ø,°Ó7Ø48Ñ 1à&3™GØ—]‘]Ð&6Ò6Ø(-Ñ%ñ.ð	.ñ  á5‘6¸5‰Dà,ò #�Ø˜5’=Ùð#ð —y‘y“{�ÜÓRÌÈqËÔRÓR‰à�w‰wˆØ�w‰wˆØ�3Š;˜2Ÿ:š:Ø—m‘m“oÒ+¨ˆGØ-/¯Z©Z¯_©_ÀÒ-F¡rÈDÐ$à€GØˆs‚{ÜØÜà�R—^‘^×'Ñ'¨°Ó2Ñ2á%,”�G“ Ò!°!Øóó	
ˆð �RŠ<Ø˜Š{Ø‘Ø˜1’Ø‘à�Ø˜˜4˜&�zÑ!‰GØ	�Š˜Ÿ™×+Ñ+¨F°AÓ6¸!Ò;Ø�Q�r—~‘~ fÑ-Ð.Ð/Ñ/ˆð"Ü)2°7Ñ);Ñ&ˆ�˜Jð ‡H�HŒVÔá	Ø
ØÜˆD�‰G‹ÜˆD�‰G‹ØØØØØô
ò D€Fà�n‰n× Ñ  °·±·±¸MÓ0JÓKÐK€sÐKð ˆØ�g‰~¤§¡¨cÓ 2Ñ2ˆÙˆb�'˜4Ô ð 	�‰�gÔà�~‰~×!Ñ! )Ó,Ð,€tÐ,Ú"FÐØŸ+™+ò 	)ˆJØ" 2 A˜‰IˆC�Ø�f‰}Ø—‘˜cÔ"Ù�b˜#˜tÕ$ØÐ/Ñ/Ù�b˜#˜tÕ$Ø�Q�q�×!Ñ!Õ#ä  ›_°Ñ1ÒC°jÀ±m�
Ú!Ù˜"˜c 4Õ(ð	)ð ˆs‚{Ø ÒA¤U¨7°<°V¸a±ZÐ+@Ó%AÒUÀoˆÙˆb�'˜=Ô)à—>‘>×%Ñ% n°b·g±g·k±kÀ.Ó6QÓR€LàÑØ�3Š;à ˆKÜ˜,¬Ô.Ù�b˜' <°°Ð#=Ö>Ü˜L¬#Ô.Ü" 1¤c¨#¨|Ó&<Ó=�Ø ,Ñ.°Ñ6�Ù�b˜' 5¨¨+Ð#6Ö7àF�Ü  “oÐ%Ø�W‰WÐ/Ñ/Ü˜,¬Ô,Ü" 1¤c¨%°Ó&>Ó?�Ù�b˜'¤3 |Ó#4Õ5à)¨"¯'©'¨Ð2EÐF�Ü  “oÐ%Ø�W‰W˜ÒÜ˜l¬T´5¨MÔ:ØB�Ü  “oÐ%Ü�\Ó" aÒ'Ø?�Ü  “oÐ%à#/Ñ ��U˜DÙ�b˜'¤3 s£8¬c°%«jÑ#8¼3¸t»9Ñ#DÕEØ�^‰^×Ñ Ó/Ð;ð :ˆCÜ˜#“,ÐØ	�ŠÑ1Ø(×+Ñ+×6Ñ6°v¸sÓCˆØˆÙˆb�'˜5  +Ð.Ô/à�n‰n× Ñ  Ó'Ð'€sÐ'ÙØØÜ”�C˜‘F˜V‘O cÑ)Ó*Ó+Ü”�C˜‘F˜V‘O cÑ)Ó*Ó+Øô	
ñ Ø˜7Ð#ˆØŸ+™+ò 	%ˆJØ" 2 A˜‰IˆC�Ø�fŠ}Ø—‘˜cÔ"Ù�b˜#˜tÕ$ð		%ð �~‰~×!Ñ! &Ó)Ð)€tÐ)Ü�dœEŸJ™JÔ'Ø—<‘< “?ˆDØ�?‰?˜?Ô+Ø˜˜�8ˆDÙˆb�'˜4Ô à$&€IÙÜ*Ø��E˜4 ¨-¸ó
ˆ	ñ Ü˜9 b§n¡nÔ5Ü�‰ØÜ�œe B¨Ó.Ó/Ü�_‰_˜U Q¨Ð$;¨I¯N©NÑ$;¸QÀÓHÐIô	
ñ ØŸ+™+ò 	)ˆJØ" 2 A˜‰IˆC�Ø�1�Qˆx×ÑÕ!ä  ›_°Ñ1ÒC°jÀ±m�
ÚÙ˜"˜c 4Õ(ð	)ñ 
ˆ"ˆg�sÔäˆr�7ÔØ
�‰�
ð øôg ò "Ø" 4 &¨Ð0ˆÜ�c‹l Ð!ûð"ús   Ê_0 ß0	`ß9`à`c                óp   ‡— ddl m} g Šdˆfd„} |«       }	 || _        t        | |d|«       | `‰S # | `w xY w)z4Return a list of PNG chunks representing this image.r   )ÚBytesIOc                óŒ   •— dj                  |«      }t        t        |t        |«      «      «      }‰j                  |||f«       y )Nr?   )r»  r½  rT   rt   )rY   rh   rR   r¾  r†   r§   s        €r@   rt   zgetchunks.<locals>.append7  s8   ø€ Ø—H‘H˜T“Nˆ	Ü”&˜¤F¨3£KÓ0Ó1ˆØ�‰�s˜I sÐ+Õ,r?   rÁ   ©rY   r�   rh   r”   rR   r”   r�   r‘   )Úior,  rÔ  rç  )rŽ  Úparamsr,  rt   rY   r§   s        @r@   Ú	getchunksr1  1  sF   ø€ åà€Fõ-ñ
 
‹€BðØˆŒÜˆb�"�b˜&Ô!àˆNà€Møð ‰Nús   ˜1 ±5z.pngz.apngz	image/png)rK   r”   r�   r”   )r   )rR   r”   rS   r•   r�   r•   )r[  r”   r�   rÀ   r.  )rŽ  rØ  rÔ  rÙ  r�   r‘   )rŽ  rØ  rY   r�   rÃ  rÆ  rŒ  rœ   rv  rœ   rö   úImage.Image | Nonerë  zlist[Image.Image]r�   r2  )rŽ  rØ  rY   r�   r   rÂ   r�   r‘   )rŽ  rØ  rY   r�   r   rÂ   rÃ  rÆ  rÿ  rÀ   r�   r‘   )rŽ  rØ  r0  r   r�   z list[tuple[bytes, bytes, bytes]])RÚ
__future__r   Ú__lazy_modules__r
   ÚloggingÚrer   r   r   Úenumr   r	   r   Útypingr   r   r   rÁ   r   r   r   r   r   Ú_binaryr   r  r   rc   r   r   ré  r   r½  Ú_utilr   ÚTYPE_CHECKINGÚcollections.abcr   r   r   r   r    Ú	getLoggerr8   rz   Úcompiler  rd   rZ  rï   r  Ú	SAFEBLOCKrH   rÚ   r7   rB   rO   rT   rV   rœ   r˜   r¥   rÄ   rÊ   r\  r^  r  r¿  rÁ  rÊ  rÕ  r×  rý  r  rç  r1  Úregister_openr¯  Úregister_saveÚregister_save_allÚregister_extensionsÚregister_mimer>   r?   r@   ú<module>rE     s  ðõB #òÐ ó Û Û 	Û Û Û Ý Ý ß 'Ñ 'ç GÕ GÝ !Ý !Ý Ý !Ý !Ý  à€ÙÝ(ß*Ñ*åà	ˆ×	Ñ	˜8Ó	$€à	ˆ�‰�LÓ	!×	'Ñ	'€ð 
€ð ØØØØàØàØØØàØàØ!ñ+
€ð2 �"—*‘*Ð0Ó1€à×$Ñ$€ðð
 �~Ñ%€ðôˆwô ô*ˆGô óô/÷[ñ [ô|ˆ3ô ÷6Y3ñ Y3ô@�:ô ôw4�ô w4ó|%ôQ!�9×&Ñ&ô Q!ðr
 
!Ø	 Ø$Ø$Ø$Ø
"Ø'Ø(Ø$Ø$Ø$Ø	 Ø$Ø&ñ€	ó&÷+ñ +÷
ñ 
óô ˆZô  ðUØðUàðUð ðUð ð	Uð
 ðUð &ðUð %ðUð óUóp+ð "*ØðbØðbàðbð ðbð ð	bð
 ðbð 
óbóRð2 €× Ñ �L×'Ñ'¨°wÔ ?Ø €× Ñ �L×'Ñ'¨Ô /Ø €× Ñ ˜×+Ñ+¨YÔ 7à €× Ñ ˜,×-Ñ-°¸Ð/@Ô Aà €× Ñ �L×'Ñ'¨Õ 5r?   