ó
    "%vgW  ã                  ó.  • S SK Jr  S SKrSSKJrJr  SSKJr  SS jr	 " S S\R
                  5      r
 " S	 S
\R                  5      r\R                  " \
R                  \
\	5        \R                  " S\5        \R                   " \
R                  S5        g)é    )ÚannotationsNé   )ÚImageÚ	ImageFile)Úi32bec                ó   • U S S S:H  $ )Né   s   qoif© )Úprefixs    Ú4/usr/lib/python3/dist-packages/PIL/QoiImagePlugin.pyÚ_acceptr      s   € Ø�"�1ˆ:˜Ñ Ð ó    c                  ó&   • \ rS rSrSrSrSS jrSrg)ÚQoiImageFileé   ÚQOIzQuite OK Imagec                ó>  • [        U R                  R                  S5      5      (       d  Sn[        U5      e[	        U R                  R                  S5      5      [	        U R                  R                  S5      5      4U l        U R                  R                  S5      S   nUS:X  a  SOSU l        U R                  R                  S[        R                  5        [        R                  " SS	U R
                  -   U R                  R                  5       5      /U l        g )
Nr	   znot a QOI filer   r   é   ÚRGBÚRGBAÚqoi)r   r   )r   ÚfpÚreadÚSyntaxErrorÚi32Ú_sizeÚ_modeÚseekÚosÚSEEK_CURr   Ú_TileÚtellÚtile)ÚselfÚmsgÚchannelss      r   Ú_openÚQoiImageFile._open   s¼   € Ü�t—w‘w—|‘| A“×'Ñ'Ø"ˆCÜ˜cÓ"Ð"ä˜Ÿ™Ÿ™ a›Ó)¬3¨t¯w©w¯|©|¸A«Ó+?Ð?ˆŒ
à—7‘7—<‘< “? 1Ñ%ˆØ&¨!›m‘U°ˆŒ
à�‰�‰�QœŸ™Ô$Ü—_’_ U¨F°T·Z±ZÑ,?ÀÇÁÇÁÃÓPÐQˆ�	r   )r   r   r#   N)ÚreturnÚNone)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚformatÚformat_descriptionr'   Ú__static_attributes__r
   r   r   r   r      s   † Ø€FØ)Ð÷Rr   r   c                  óJ   • \ rS rSr% SrSrS\S'   0 rS\S'   SS jrSS	 jr	S
r
g)Ú
QoiDecoderé&   TNzbytes | bytearray | NoneÚ_previous_pixelzdict[int, bytes | bytearray]Ú_previously_seen_pixelsc                ój   • Xl         Uu  p#pEUS-  US-  -   US-  -   US-  -   S-  nXR                  U'   g )Nr   é   é   é   é@   ©r5   r6   )r$   ÚvalueÚrÚgÚbÚaÚ
hash_values          r   Ú_add_to_previous_pixelsÚ"QoiDecoder._add_to_previous_pixels+   sG   € Ø$Ôà‰
ˆˆaØ˜!‘e˜a !™e‘m a¨!¡eÑ+¨a°"©fÑ4¸Ñ:ˆ
Ø38×$Ñ$ ZÒ0r   c           
     óò  ^ ^• T R                   c   e0 T l        T R                  [        S5      5        [        5       n[        R
                  " T R                  5      nT R                  R                  T R                  R                  -  U-  n[        U5      U:  GaJ  T R                   R                  S5      S   nUS:X  aG  T R                  (       a6  [        T R                   R                  S5      5      T R                  SS  -   nGO­US:X  a  T R                   R                  S5      nGOŠUS-	  nUS:X  a,  US	-  nT R                  R                  U[        S
5      5      nGOSUS:X  a  T R                  (       an  [        T R                  S   US-  S-	  -   S-
  S-  T R                  S   US-  S-	  -   S-
  S-  T R                  S   US-  -   S-
  S-  T R                  S   45      nOÎUS:X  aˆ  T R                  (       aw  T R                   R                  S5      S   n	US	-  S-
  mU	S-  S-	  S-
  n
U	S-  S-
  n[        [        UU 4S j[        U
SU45       5       5      5      nUT R                  SS  -  nO@US:X  a:  T R                  (       a)  US	-  S-   nT R                  nUS:X  a  US S nX&U-  -  nGM(  T R                  W5        US:X  a  US S nX&-  n[        U5      U:  a  GMJ  T R!                  U5        g)N)r   r   r   éÿ   r   r   éþ   r   rF   r	   é   é?   )r   r   r   r   é0   é   é   é   é    éð   é   é   c              3  óX   >#   • U  H  u  pTR                   U   T-   U-   S -  v •  M!     g7f)rL   N)r5   )Ú.0ÚiÚdiffÚ
diff_greenr$   s      €€r   Ú	<genexpr>Ú$QoiDecoder.decode.<locals>.<genexpr>[   s4   øé € ð â+N¡ ð "×1Ñ1°!Ñ4°zÑAÀDÑHÈCÖOÚ+Nùs   ƒ'*)éÿÿÿÿr   )Úfdr6   rC   Ú	bytearrayr   ÚgetmodebandsÚmodeÚstateÚxsizeÚysizeÚlenr   r5   ÚgetÚtupleÚ	enumerateÚ
set_as_raw)r$   ÚbufferÚdataÚbandsÚdest_lengthÚbyter=   ÚopÚop_indexÚsecond_byteÚdiff_redÚ	diff_blueÚ
run_lengthrV   s   `            @r   ÚdecodeÚQoiDecoder.decode2   sð  ù€ Ø�w‰wÑ"Ð"Ð"à')ˆÔ$Ø×$Ñ$¤Y¨~Ó%>Ô?ä‹{ˆÜ×"Ò" 4§9¡9Ó-ˆØ—j‘j×&Ñ&¨¯©×)9Ñ)9Ñ9¸EÑAˆÜ�$‹i˜+Ô%Ø—7‘7—<‘< “? 1Ñ%ˆDà�zÓ! d×&:×&:Ü! $§'¡'§,¡,¨q£/Ó2°T×5IÑ5IÈ!È"Ð5MÑM’Ø˜Ó#ØŸ™Ÿ™ Q›’à˜Q‘Y�Ø˜“7Ø# jÑ0�HØ ×8Ñ8×<Ñ<Ø ¤)¨LÓ"9ó’Eð ˜1“W ×!5×!5Ü%à!×1Ñ1°!Ñ4¸À
Ñ9JÈqÑ8PÑQÐTUÑUØ!ñ"à!×1Ñ1°!Ñ4¸À
Ñ9JÈqÑ8PÑQÐTUÑUØ!ñ"à!×1Ñ1°!Ñ4¸¸zÑ8IÑJÈQÑNÐRUÑUØ ×0Ñ0°Ñ3ðó	‘Eð ˜1“W ×!5×!5Ø"&§'¡'§,¡,¨q£/°!Ñ"4�KØ"&¨Ñ"3°rÑ!9�JØ!,¨zÑ!9¸aÑ ?À1ÑD�HØ!,¨zÑ!9¸QÑ >�Iä%Üõ ä+4°hÀÀ9Ð5MÔ+Nóó ó�Eð ˜T×1Ñ1°!°"Ð5Ñ5‘EØ˜1“W ×!5×!5Ø"&¨Ñ"3°qÑ!8�JØ ×0Ñ0�EØ “zØ % b q 	˜Ø JÑ.Ñ.�DÚØ×(Ñ(¨Ô/à˜‹zØ˜b˜q˜	�Ø‰MˆDôc �$‹i˜+Ö%ðd 	�‰˜ÔØr   r<   )r=   zbytes | bytearrayr)   r*   )rf   z$bytes | Image.SupportsArrayInterfacer)   ztuple[int, int])r+   r,   r-   r.   Ú	_pulls_fdr5   Ú__annotations__r6   rC   rq   r1   r
   r   r   r3   r3   &   s(   ‡ Ø€IØ04€OÐ-Ó4Ø<>ÐÐ9Ó>ô9÷<r   r3   r   z.qoi)r   Úbytesr)   Úbool)Ú
__future__r   r   Ú r   r   Ú_binaryr   r   r   r   Ú	PyDecoderr3   Úregister_openr/   Úregister_decoderÚregister_extensionr
   r   r   Ú<module>r~      s�   ðõ #ã 	ç Ý !ô!ôR�9×&Ñ&ô Rô$H�×$Ñ$ô HðV × Ò �L×'Ñ'¨°wÔ ?Ø × Ò �u˜jÔ )Ø × Ò ˜×,Ñ,¨fÕ 5r   