
    h\                    .   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 R                  S5      $ )Ns   qoif)
startswith)prefixs    D/var/www/html/env/lib/python3.13/site-packages/PIL/QoiImagePlugin.py_acceptr      s    W%%    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 )
N   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    tww||A''"Cc""a)3tww||A+??
77<<?1%&!mU
Q$__UFTZZ,?PQ	r   )r   r   r#   N)returnNone)__name__
__module____qualname____firstlineno__formatformat_descriptionr'   __static_attributes__ 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            @   r6   r7   )r$   valuergba
hash_values          r   _add_to_previous_pixels"QoiDecoder._add_to_previous_pixels+   sG    $
a!ea!ema!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OUS:X  a  T R                   R                  S5      nGOU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OU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   rG   r      ?   )r   r   r   r   0                         c              3  X   >#    U  H  u  pTR                   U   T-   U-   S -  v   M!     g7f)rM   N)r6   ).0idiff
diff_greenr$   s      r   	<genexpr>$QoiDecoder.decode.<locals>.<genexpr>[   s4      +N "11!4zADHCO+Ns   '*)r   )fdr7   rD   	bytearrayr   getmodebandsmodestatexsizeysizelenr   r6   gettuple	enumerate
set_as_raw)r$   bufferdatabandsdest_lengthbyter>   opop_indexsecond_bytediff_red	diff_blue
run_lengthrW   s   `            @r   decodeQoiDecoder.decode2   s   ww"""')$$$Y~%>?{""499-jj&&)9)99EA$i+%77<<?1%Dz!d&:&:!$'',,q/2T5I5I!"5MM#QQY7#j0H 88<< )L"9E 1W!5!5%!11!4
9Jq8PQTUU!"!11!4
9Jq8PQTUU!"!11!4z8IJQNRUU 003	E 1W!5!5"&'',,q/!"4K"&"3r!9J!,z!9a ?1DH!,z!9Q >I% +4h95M+N E T11!"55E1W!5!5"&"3q!8J 00Ez %bq	J..D((/zbq	MDc $i+%d 	r   r=   )r>   zbytes | bytearrayr)   r*   )rg   z$bytes | Image.SupportsArrayInterfacer)   ztuple[int, int])r+   r,   r-   r.   	_pulls_fdr6   __annotations__r7   rD   rr   r1   r2   r   r   r4   r4   &   s(    I04O-4<>9>9<r   r4   r   z.qoi)r
   bytesr)   bool)
__future__r   r    r   r   _binaryr   r   r   r   	PyDecoderr4   register_openr/   register_decoderregister_extensionr2   r   r   <module>r      s    # 	  !&R9&& R$H$$ HV   L''w ?   uj )   ,,f 5r   