+
    UBi|!                       ^ RI Ht ^ RIt^ RIHt ^RIHtHt ^RIH	t
 ^RIHt ^RIHt R R	 lt ! R
 R]P                  4      t ! R R]P                   4      tR R lt ! R R]P&                  4      t]P*                  ! ]P,                  ]]4       ]P.                  ! R]4       ]P0                  ! ]P,                  R4       ]P2                  ! ]P,                  ]4       ]P4                  ! R]4       R# )    )annotationsN)IO)Image	ImageFile)i32be)o8)o32bec                    V ^8  d   QhRRRR/# )   prefixbytesreturnbool )formats   "7/usr/lib/python3.14/site-packages/PIL/QoiImagePlugin.py__annotate__r      s     & &E &d &    c                $    V P                  R 4      # )   qoif)
startswith)r   s   &r   _acceptr      s    W%%r   c                  *    ] tR t^tRtRtR R ltRtR# )QoiImageFileQOIzQuite OK Imagec                   V ^8  d   QhRR/# )r   r   Noner   )r   s   "r   r   QoiImageFile.__annotate__   s     R Rt Rr   c                	T   \        V P                  P                  ^4      4      '       g   Rp\        V4      h\	        V P                  P                  ^4      4      \	        V P                  P                  ^4      4      3V n        V P                  P                  ^4      ^ ,          pV^8X  d   RMRV n        V P                  P                  ^\        P                  4       \        P                  ! RRV P
                  ,           V P                  P                  4       4      .V n        R# )   znot a QOI fileRGBRGBAqoiN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)   r0   N)__name__
__module____qualname____firstlineno__r   format_descriptionr4   __static_attributes__r   r   r   r   r      s    F)R Rr   r   c                  P    ] tR t^)t$ RtRtR]R&   / tR]R&   R R ltR	 R
 lt	Rt
R# )
QoiDecoderTNzbytes | bytearray | None_previous_pixelzdict[int, bytes | bytearray]_previously_seen_pixelsc                    V ^8  d   QhRRRR/# )r   valuezbytes | bytearrayr   r   r   )r   s   "r   r   QoiDecoder.__annotate__.   s     9 9-> 94 9r   c                	    Wn         Vw  r#rEV^,          V^,          ,           V^,          ,           V^,          ,           ^@,          pWP                  V&   R# )   Nr>   r?   )r1   rA   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                    V ^8  d   QhRRRR/# )r   bufferz$bytes | Image.SupportsArrayInterfacer   ztuple[int, int]r   )r   s   "r   r   rB   5   s     < <A <o <r   c           
     	  a a S P                   f   Q h/ S n        \        R4      S n        \        4       p\        P
                  ! S P                  4      pS P                  P                  S P                  P                  ,          V,          p\        V4      V8  Ed   S P                   P                  ^4      ^ ,          pV^8X  dQ   S P                  '       d?   \        S P                   P                  ^4      4      S P                  R,          ,           pEMmV^8X  d   S P                   P                  ^4      pEMIV^,	          pV^ 8X  d1   V^?,          pS P                  P                  V\        R4      4      pEM	V^8X  d   S P                  '       d   \        S P                  ^ ,          V^0,          ^,	          ,           ^,
          R,          S P                  ^,          V^,          ^,	          ,           ^,
          R,          S P                  ^,          V^,          ,           ^,
          R,          S P                  ^,          34      pEM9V^8X  d   S P                  '       d   S P                   P                  ^4      ^ ,          p	V^?,          ^ ,
          oV	^,          ^,	          ^,
          p
V	^,          ^,
          p\        \        ;QJ d$    . VV 3R l\        V
^ V34       4       F  NK  	  5M! VV 3R l\        V
^ V34       4       4      4      pVS P                  R,          ,          pMWV^8X  dQ   S P                  '       d?   V^?,          ^,           pS P                  pV^8X  d
   VR,          pW&V,          ,          pEK  S P                  X4       V^8X  d
   VR,          pW&,          pEK#  S P!                  V4       R# )N:rD   NN   c              3  x   <"   T F/  w  rSP                   V,          S,           V,           R ,          x  K1  	  R# 5i)rP   N)r>   ).0idiff
diff_greenr1   s   &  r   	<genexpr>$QoiDecoder.decode.<locals>.<genexpr>^   s7      +N "11!4zADHCOO+Ns   7:NrD   Nr   r   r      r   r   r   r   )r   )fdr?   	bytearrayr>   r   getmodebandsmodestatexsizeysizelenr&   gettuple	enumeraterK   
set_as_raw)r1   rN   databandsdest_lengthbyterA   opop_indexsecond_bytediff_red	diff_blue
run_lengthrU   s   f&           @r   decodeQoiDecoder.decode5   s   ww"""')$(8{""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!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!5"&'',,q/!"4K"&"3r!9J!,z!9a ?1DH!,z!9Q >I% +4h95M+N +4h95M+N E T11"55E1W!5!5!5"&"3q!8J 00Ez %b	J..D((/zb	MDr   rE   )r6   r7   r8   r9   	_pulls_fdr>   __annotations__r?   rK   rs   r;   r   r   r   r=   r=   )   s-    I04O-4<>9>9< <r   r=   c               (    V ^8  d   QhRRRRRRRR/# )	r   imzImage.Imager%   z	IO[bytes]filenamezstr | bytesr   r   r   )r   s   "r   r   r   t   s.     H Hk Hy HK HD Hr   c           	     j   V P                   R 8X  d   ^pM!V P                   R8X  d   ^pMRp\        V4      hV P                  P                  R4      R8X  d   ^ M^pVP	                  R4       VP	                  \        V P                  ^ ,          4      4       VP	                  \        V P                  ^,          4      4       VP	                  \        V4      4       VP	                  \        V4      4       \        P                  ! W\        P                  ! RRV P                  ,           4      .4       R# )	r!   r"   zUnsupported QOI image mode
colorspacesRGBr   r#   Nr$   )r`   
ValueErrorencoderinfore   writeo32sizer   r   _saver.   )rx   r%   ry   r3   r2   r{   s   &&&   r   r   r   t   s    	ww%	F	*onn((6&@aJHHWHHS_HHS_HHR\HHR
^OOBY__UFRWW4DEFGr   c                  `    ] tR t^t$ RtRtR]R&   / tR]R&   ^ tR R lt	R	 R
 lt
R R ltRtR# )
QoiEncoderTNz tuple[int, int, int, int] | Noner>   z$dict[int, tuple[int, int, int, int]]r?   c                   V ^8  d   QhRR/# )r   r   r   r   )r   s   "r   r   QoiEncoder.__annotate__   s      E r   c                	Z    \        ^V P                  ^,
          ,          4      p^ V n        V# )   )r   _run)r1   ri   s   & r   
_write_runQoiEncoder._write_run   s%    *		A./	r   c               $    V ^8  d   QhRRRRRR/# )r   leftintrightr   r   )r   s   "r   r   r      s!      3 s s r   c                	D    W,
          ^,          pV^8  d
   VR,          pV# )rZ   rP   r   )r1   r   r   results   &&& r   _deltaQoiEncoder._delta   s#    ,#%S=cMFr   c                    V ^8  d   QhRRRR/# )r   bufsizer   r   ztuple[int, int, bytes]r   )r   s   "r   r   r      s     I" I"c I"&< I"r   c                	   V P                   f   Q h^ R/V n        RV n        \        4       pV P                   P                  w  r4\
        P                  ! V P                  4      p\        V4       EF  p\        V4       EF  pV P                   P                  Wv34      pV^8X  d   . VO^N5pWP                  8X  dC   V ;P                  ^,          un
        V P                  ^>8X  d   W P                  4       ,          pEMV P                  '       d   W P                  4       ,          pVw  rrV	^,          V
^,          ,           V^,          ,           V^,          ,           ^@,          pV P                  P                  V4      V8X  d   V\        V4      ,          pEMV P                  '       Ed   WP                  V&   V P                  w  rppVV8X  Ed   V P                  W4      pV P                  W4      pV P                  VV4      pRTu;8:  d   ^8  ds   M MoRTu;8:  d   ^8  da   M M]RTu;8:  d   ^8  dO   M MKV\        ^@V^,           ^,          ,          V^,           ^,          ,          V^,           ,          4      ,          pMV P                  VV4      pV P                  VV4      pRTu;8:  d   ^8  dw   M MsRTu;8:  d   ^ 8  de   M MaRTu;8:  d   ^8  dS   M MOV\        ^V^ ,           ,          4      ,          pV\        V^,           ^,          V^,           ,          4      ,          pMPV\        ^4      ,          pV\        VR,          4      ,          pM$V\        ^4      ,          pV\        V4      ,          pWn        EK  	  EK  	  V P                  '       d   W P                  4       ,          pV\        R4      ,          p\!        V4      ^ V3# )NrX   r[   rY   ii)r   r   r   r   r   r   r      )rx   r?   r>   r^   r   r   r_   r`   rangegetpixelr   r   re   r   r   r   rd   )r1   r   ri   whrj   yxpixelrF   rG   rH   rI   rJ   prev_rprev_gprev_bprev_adelta_rdelta_gdelta_bdelta_grdelta_gbs   &&                     r   encodeQoiEncoder.encode   s   ww"""()<'8$-{ww||""499-qA1X((!0A:)eMSME000IINIyyB 11yyy 11!&JA!"#a%!a%-!a%"7!b&"@B!FJ3377
CuL:.---CH44Z@9=9M9M6!Q;&*kk!&<G&*kk!&<G&*kk!V&<G !#g 1 1$&'$5A$5$&'$5A$5 $$.'.{q&8%9'.{q&8%9 (/{%4)" !" ,0;;w+H+/;;w+H$&($6Q$6(+w(;(;(*h(:(:$(B(2gl(C-& %&D %)B1/BhQRl/S,T$TD$(BzN$:D$(E%),<$<D BzN2D E%L0D',$q  v 999OO%%D.//4y!T!!r   )r>   r?   r   )r6   r7   r8   r9   
_pushes_fdr>   rv   r?   r   r   r   r   r;   r   r   r   r   r      s9    J8<O5<DFAFD
I" I"r   r   r#   z.qoi)
__future__r   r,   typingr    r   r   _binaryr   r(   r   r	   r   r   r   	PyDecoderr=   r   	PyEncoderr   register_openr   register_decoderregister_extensionregister_saveregister_encoderr   r   r   <module>r      s    # 	   !  !&R9&& R$H$$ HVH(Z"$$ Z"z   L''w ?   uj )   ,,f 5   L'' /   uj )r   