+
    JV-jg0  ã                  ó^  € ^ 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tR	R
RRRRRR
RRRRRRRRRRRRRR/tR R lt ! R R]P                  4      t ! R R ]P$                  4      t ! R! R"]P$                  4      tR# R$ lt]P,                  ! ]P.                  ]]4       ]P0                  ! ]P.                  ]4       ]P2                  ! R%]4       ]P2                  ! R&]4       ]P4                  ! ]P.                  . R(O4       ]P6                  ! ]P.                  R'4       R# ))é    )ÚannotationsN)ÚIO)ÚImageÚ	ImageFile)Úi16be)Úo8)Úo32les    	
ó   P1Ú1ó   P2ÚLó   P3ÚRGBó   P4ó   P5ó   P6s   P0CMYKÚCMYKó   PfÚFs   PyPÚPs   PyRGBAÚRGBAs   PyCMYKc               ó    € V ^8„  d   QhRRRR/# )é   ÚprefixÚbytesÚreturnÚbool© )Úformats   "Úc/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/PIL/PpmImagePlugin.pyÚ__annotate__r!   1   s   € ÷ Vñ V�Eð V˜dñ Vó    c                óx   € \        V 4      ^8¬  ;'       d&    V P                  R4      ;'       d    V ^,          R9   # )r   ó   Ps	   0123456fy)ÚlenÚ
startswith)r   s   &r    Ú_acceptr'   1   s5   € Üˆv‹;˜!Ñ×UÐU × 1Ñ 1°$Ó 7×UÐU¸FÀ1½IÈÑ<UÐUr"   c                  óB   € ] tR t^9tRtRtR R ltR R ltR R ltR	t	R
# )ÚPpmImageFileÚPPMzPbmplus imagec               ó   € V ^8„  d   QhRR/# ©r   r   r   r   )r   s   "r    r!   ÚPpmImageFile.__annotate__=   s   € ÷ 
ñ 
˜Uñ 
r"   c                	óÀ   € V P                   f   Q hRp\        ^4       F<  pV P                   P                  ^4      pV'       d   V\        9   d    V# W,          pK>  	  V# )Nr"   )ÚfpÚrangeÚreadÚb_whitespace)ÚselfÚmagicÚ_Úcs   &   r    Ú_read_magicÚPpmImageFile._read_magic=   sX   € Ø�w‰wÒ"Ð"Ð"àˆä�q–ˆAØ—‘—‘˜Q“ˆAß˜œ\Ô)Øàˆð �JŠEñ	 ð
 ˆr"   c               ó   € V ^8„  d   QhRR/# r,   r   )r   s   "r    r!   r-   I   s   € ÷ ñ ˜Uñ r"   c                	óš  € V P                   f   Q hRp\        V4      ^
8:  dp   V P                   P                  ^4      pV'       g   MKV\        9   d   V'       g   KI  M5VR8X  d%   V P                   P                  ^4      R9  d   K"  Ku  W,          pK  V'       g   Rp\	        V4      h\        V4      ^
8”  d   RV,          p\	        V4      hV# )Nr"   ó   #s   
z Reached EOF while reading headers!   Token too long in file header: %s)r/   r%   r1   r2   Ú
ValueError)r3   Útokenr6   ÚmsgÚmsg_too_longs   &    r    Ú_read_tokenÚPpmImageFile._read_tokenI   sª   € Ø�w‰wÒ"Ð"Ð"àˆÜ�%‹j˜BÔØ—‘—‘˜Q“ˆAßØØ”lÔ"ßáØØ�d”à—g‘g—l‘l 1“o¨WÔ4ÙÙØ�JŠEßà4ˆCÜ˜S“/Ð!Ü�‹Z˜"Œ_Ø?À%ÕGˆLÜ˜\Ó*Ð*Øˆr"   c               ó   € V ^8„  d   QhRR/# )r   r   ÚNoner   )r   s   "r    r!   r-   e   s   € ÷ 7
ñ 7
�tñ 7
r"   c                	ó  € V P                   f   Q hV P                  4       p \        V,          pY n        TR9   d	   RT n        MTR9   d	   RT n        MTR9   d   RT n        \        T P                  4       4      \        T P                  4       4      3T n	        RpTR9   d   RpTR8X  d   RpMôTR	8X  ds   \        T P                  4       4      pTR
8X  g   \        P                  ! T4      '       g   Rp\        T4      h\        T4      T P                  R&   T^ 8  d   RMRpT^ R3pM{\        T P                  4       4      p^ Tu;8  d   R8  g   M Rp\        T4      hT^ÿ8”  d   TR8X  d   RT n        TpTR8w  d   TR8X  d   TR8X  d   RpM	T^ÿ8w  d   RpTR8X  d   TMYx3p\         P"                  ! TRT P$                  ,           T P                   P'                  4       T4      .T n        R #   \         d    Rp\	        T4      hi ; i)Nznot a PPM filezimage/x-portable-bitmapzimage/x-portable-graymapzimage/x-portable-pixmapÚrawÚ	ppm_plainr   ú1;Ir   g        z!scale must be finite and non-zeroÚscaleúF;32FzF;32BFi   z1maxval must be greater than 0 and less than 65536r   ÚIéÿÿ  úI;16BÚppm)r
   r   )r   r   )r   r   )r
   r   r   éÿÿÿÿ©r   r   )r/   r7   ÚMODESÚKeyErrorÚSyntaxErrorÚ_modeÚcustom_mimetypeÚintr@   Ú_sizeÚfloatÚmathÚisfiniter<   ÚabsÚinfor   Ú_TileÚsizeÚtellÚtile)	r3   Úmagic_numberÚmoder>   Údecoder_nameÚargsrH   ÚrawmodeÚmaxvals	   &        r    Ú_openÚPpmImageFile._opene   sç  € Ø�w‰wÒ"Ð"Ð"à×'Ñ'Ó)ˆð	#Ü˜Õ&ˆDð Œ
à˜>Ô)Ø#<ˆDÕ Ø˜^Ô+Ø#=ˆDÕ Ø˜^Ô+Ø#<ˆDÔ ä˜×)Ñ)Ó+Ó,¬c°$×2BÑ2BÓ2DÓ.EÐEˆŒ
àˆØÐ0Ô0Ø&ˆLð �3Œ;Ø‰DØ�SŒ[Ü˜$×*Ñ*Ó,Ó-ˆEØ˜Œ|¤4§=¢=°×#7Ò#7Ø9�Ü  “oÐ%Ü!$ U£ˆD�I‰I�gÑà!&¨¤‘g°ˆGØ˜Q Ð#‰Dä˜×)Ñ)Ó+Ó,ˆFØ�vÖ% Ö%ØI�Ü  “oÐ%Ø˜Œ| ¨¤Ø �”
àˆGØ˜{Ô*à˜U”? t¨s¤{Ø%‘GØ˜s”]Ø#(�Là*¨eÔ3‘7¸'Ð9JˆDä�OŠO˜L¨&°4·9±9Õ*<¸d¿g¹g¿l¹l»nÈdÓSð
ˆŽ	øô_ ô 	#Ø"ˆCÜ˜cÓ"Ð"ð	#ús   ¢G+ Ç+H)rS   rV   rT   r_   N)
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   Úformat_descriptionr7   r@   rf   Ú__static_attributes__r   r"   r    r)   r)   9   s!   † Ø€FØ(Ðõ
õ÷87
ñ 7
r"   r)   c                  ór   € ] tR t^£t$ RtR]R&   R R ltRR R lltR R	 ltR
 R lt	R R lt
R R ltRtR# )ÚPpmPlainDecoderTr   Ú_comment_spansc               ó   € V ^8„  d   QhRR/# r,   r   )r   s   "r    r!   ÚPpmPlainDecoder.__annotate__§   s   € ÷ 1ñ 1˜Uñ 1r"   c                	ót   € V P                   f   Q hV P                   P                  \        P                  4      # )N)Úfdr1   r   Ú	SAFEBLOCK)r3   s   &r    Ú_read_blockÚPpmPlainDecoder._read_block§   s+   € Ø�w‰wÒ"Ð"Ð"à�w‰w�|‰|œI×/Ñ/Ó0Ð0r"   c               ó$   € V ^8„  d   QhRRRRRR/# )r   Úblockr   ÚstartrU   r   r   )r   s   "r    r!   rr   ¬   s!   € ÷ 5ñ 5 uð 5°Sð 5Àñ 5r"   c                	ó�   € VP                  R V4      pVP                  RV4      pW4,          ^ 8”  d   \        W44      # \        W44      # )ó   
ó   )ÚfindÚminÚmax)r3   ry   rz   ÚaÚbs   &&&  r    Ú_find_comment_endÚ!PpmPlainDecoder._find_comment_end¬   s=   € Ø�J‰J�u˜eÓ$ˆØ�J‰J�u˜eÓ$ˆØ�E AœIŒs�1‹yÐ4¬3¨q«9Ð4r"   c               ó    € V ^8„  d   QhRRRR/# )r   ry   r   r   r   )r   s   "r    r!   rr   ±   s   € ÷  ñ   eð  °ñ  r"   c                	ód  € V P                   '       d?   V'       d7   V P                  V4      pVR8w  d   W^,           R pMV P                  4       pK>  RV n          VP                  R4      pVR8X  d    V# V P                  W4      pVR8w  d   VRV W^,           R ,           pKK  VRV pRV n          V# )é   NFTr;   rN   )rp   rƒ   rv   r~   )r3   ry   Úcomment_endÚcomment_starts   &&  r    Ú_ignore_commentsÚ PpmPlainDecoder._ignore_comments±   sÏ   € Ø××ÐçØ"×4Ñ4°UÓ;�Ø "Ô$ð "°¥/Ð"3Ð4�EØð !×,Ñ,Ó.’Eð $ˆÔØØ!ŸJ™J tÓ,ˆMØ Ô"àð ˆð ×0Ñ0°ÓFˆKØ˜bÔ ð ˜n˜}Ð-°ÀAµoÐ6GÐ0HÕH’ð ˜n˜}Ð-�Ø&*�Ô#ØØˆr"   c               ó   € V ^8„  d   QhRR/# )r   r   Ú	bytearrayr   )r   s   "r    r!   rr   Ó   s   € ÷ &ñ & ñ &r"   c                óî  € \        4       pV P                  P                  V P                  P                  ,          p\	        V4      V8w  d…   V P                  4       pV'       g   MkV P                  V4      pRP                  VP                  4       4      pV F(  pVR9  g   K  R\        V.4      ,          p\        V4      h	  W,           RV pK”  \        P                  RR4      pVP                  V4      # )z�
This is a separate method because in the plain PBM format, all data tokens are
exactly one byte, so the inter-token whitespace is optional.
r"   s   Invalid token for this mode: %sNs   01s   ÿ )é0   é1   )r�   ÚstateÚxsizeÚysizer%   rv   rŠ   ÚjoinÚsplitr   r<   Ú	maketransÚ	translate)r3   ÚdataÚtotal_bytesry   Útokensr=   r>   Úinverts   &       r    Ú_decode_bitonalÚPpmPlainDecoder._decode_bitonalÓ   sÈ   € ô
 ‹{ˆØ—j‘j×&Ñ&¨¯©×)9Ñ)9Õ9ˆä�$‹i˜;Ô&Ø×$Ñ$Ó&ˆEßàà×)Ñ)¨%Ó0ˆEà—X‘X˜eŸk™k›mÓ,ˆFÛ�Ø Ö(Ø<¼uÀeÀW»~ÕM�CÜ$ S›/Ð)ñ  ð •M < KÐ0ŠDÜ—‘ ¨Ó4ˆØ�~‰~˜fÓ%Ð%r"   c               ó    € V ^8„  d   QhRRRR/# )r   re   rU   r   r�   r   )r   s   "r    r!   rr   ì   s   € ÷ 1ñ 1 Sð 1¨Yñ 1r"   c                	ón  € \        4       p^
pV P                  R8X  d   ^M^pV P                  R8X  d   RM^ÿp\        P                  ! V P                  4      pV P                  P
                  V P                  P                  ,          V,          V,          pRp\        V4      V8w  Ed�   V P                  4       p	V	'       g   V'       d   \        R4      p	M V# V P                  V	4      p	V'       d   W‰,           p	RpV	P                  4       p
V	'       dX   V	R	R P                  4       '       g?   V
P                  4       p\        V4      V8”  d   RVRV^,            ,          p\        V4      hV
 FÂ  p\        V4      V8”  d   RVRV^,            ,          p\        V4      h\        V4      pV^ 8  d   RV 2p\        V4      hWÑ8”  d   RV 2p\        V4      h\        WÑ,          V,          4      pY P                  R8X  d   \!        V4      M
\#        V4      ,          p\        V4      V8X  g   KÀ   EK˜  	  EK�  V# )
é
   rJ   rK   r"   ó    Ns    Token too long found in data: %szChannel value is negative: z'Channel value too large for this mode: rN   )r�   ra   r   Úgetmodebandsr‘   r’   r“   r%   rv   rŠ   r•   ÚisspaceÚpopr<   rU   ÚroundÚo32r   )r3   re   r˜   Úmax_lenÚout_byte_countÚout_maxÚbandsr™   Ú
half_tokenry   rš   r>   r=   ÚvalueÚmsg_strs   &&             r    Ú_decode_blocksÚPpmPlainDecoder._decode_blocksì   sæ  € Ü‹{ˆØˆØ"Ÿi™i¨3Ô.™°AˆØŸ9™9¨Ô+‘%°ˆÜ×"Ò" 4§9¡9Ó-ˆØ—j‘j×&Ñ&¨¯©×)9Ñ)9Õ9¸EÕAÀNÕRˆàˆ
Ü�$‹i˜;Õ&Ø×$Ñ$Ó&ˆEßßÜ% d›O‘Eð ðB ˆð? ×)Ñ)¨%Ó0ˆEçØ"Õ*�Ø �
à—[‘[“]ˆFç˜U 2 3˜Z×/Ñ/×1Ò1Ø#ŸZ™Z›\�
Ü�z“? WÔ,à;¸jÈÈ7ÐUVÍ;Ð>WÕWð ô % S›/Ð)ã�Ü�u“: Ô'Ø=ÀÀmÈÐRSÍÐ@TÕT�CÜ$ S›/Ð)Ü˜E›
�Ø˜1”9Ø ;¸E¸7ÐC�GÜ$ WÓ-Ð-Ø”>Ø GÈÀwÐO�GÜ$ WÓ-Ð-Ü˜e�n¨wÕ6Ó7�Ø§i¡i°3Ô&6œ˜Eœ
¼B¸u»IÕE�Ü�t“9 Ö+Ûô  ð ˆr"   c               ó    € V ^8„  d   QhRRRR/# ©r   Úbufferz$bytes | Image.SupportsArrayInterfacer   ztuple[int, int]r   )r   s   "r    r!   rr     s   € ÷ 
ñ 
ÐAð 
Àoñ 
r"   c                	ó  € R V n         V P                  R8X  d   V P                  4       pRpMCV P                  R,          pV P	                  V4      pV P                  R8X  d   RMV P                  pV P                  \        V4      V4       R# )Fr   z1;8rJ   úI;32rN   ©rN   r   )rp   ra   rœ   rc   r®   Ú
set_as_rawr   )r3   r²   r˜   rd   re   s   &&   r    ÚdecodeÚPpmPlainDecoder.decode  ss   € Ø#ˆÔØ�9‰9˜ÔØ×'Ñ'Ó)ˆDØ‰Gà—Y‘Y˜r•]ˆFØ×&Ñ& vÓ.ˆDØ $§	¡	¨SÔ 0‘f°d·i±iˆGØ�‰œ˜d› WÔ-Øˆr"   )rp   N)r   )rh   ri   rj   rk   Ú	_pulls_fdÚ__annotations__rv   rƒ   rŠ   rœ   r®   r·   rm   r   r"   r    ro   ro   £   s2   ‡ Ø€IØÓõ1÷
5õ
 õD&õ21÷f
ñ 
r"   ro   c                  ó&   € ] tR tRtRtR R ltRtR# )Ú
PpmDecoderi,  Tc               ó    € V ^8„  d   QhRRRR/# r±   r   )r   s   "r    r!   ÚPpmDecoder.__annotate__/  s   € ÷ ñ ÐAð Àoñ r"   c                	ó”  € V P                   f   Q h\        4       pV P                  R,          pVR8  d   ^M^pV P                  R8X  d   ^M^pV P                  R8X  d   RM^ÿp\        P
                  ! V P                  4      pV P                  P                  V P                  P                  ,          V,          V,          p\        V4      V8  d½   V P                   P                  WG,          4      p	\        V	4      WG,          8  d   M„\        V4       Fs  p
V^8X  d	   Wš,          M\        WšV,          4      p\        V\        W³,          V,          4      4      pY P                  R8X  d   \        V4      M
\!        V4      ,          pKu  	  KÌ  V P                  R8X  d   RMV P                  pV P#                  \%        V4      V4       R# )Né   rJ   rK   r´   rN   rµ   )rt   r�   rc   ra   r   r¢   r‘   r’   r“   r%   r1   r0   Úi16r   r¥   r¦   r   r¶   r   )r3   r²   r˜   re   Úin_byte_countr¨   r©   rª   Údest_lengthÚpixelsr‚   r¬   rd   s   &&           r    r·   ÚPpmDecoder.decode/  sW  € Ø�w‰wÒ"Ð"Ð"ä‹{ˆØ—‘˜2•ˆØ# cœ\™¨qˆØ"Ÿi™i¨3Ô.™°AˆØŸ9™9¨Ô+‘%°ˆÜ×"Ò" 4§9¡9Ó-ˆØ—j‘j×&Ñ&¨¯©×)9Ñ)9Õ9¸EÕAÀNÕRˆÜ�$‹i˜+Ô%Ø—W‘W—\‘\ -Õ"7Ó8ˆFÜ�6‹{˜]Õ2Ô2àÜ˜5–\�à!.°!Ô!3�F–I¼¸VÈÕEVÓ9Wð ô ˜G¤U¨5­>¸GÕ+CÓ%DÓE�Ø§i¡i°3Ô&6œ˜Eœ
¼B¸u»IÕE’ó "ð !ŸI™I¨Ô,‘&°$·)±)ˆØ�‰œ˜d› WÔ-Øˆr"   r   N)rh   ri   rj   rk   r¹   r·   rm   r   r"   r    r¼   r¼   ,  s   † Ø€I÷ñ 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   rC   r   )r   s   "r    r!   r!   M  s(   € ÷ ñ ˆkð ˜yð °Kð ÀDñ r"   c                óÖ  € V P                   R 8X  d   RRrCMoV P                   R8X  d   RRrCMZV P                   R9   d   RRrCMEV P                   R9   d   RRrCM0V P                   R8X  d   R	R
rCMRV P                    R2p\        V4      hVP                  VRV P                  ,          ,           4       VR8X  d   VP                  R4       MJVR8X  d,   VR8X  d   VP                  R4       M*VP                  R4       MVR
8X  d   VP                  R4       V P                   R8X  d   RM^p\        P
                  ! W\        P                  ! RRV P                  ,           ^ V^ V34      .4       R# )r   rG   r   r   r   rL   r   r   r   rI   r   zcannot write mode z as PPMs   
%d %d
s   255
s   65535
s   -1.0
rE   N)rJ   zI;16)r   r   rN   rO   )ra   ÚOSErrorÚwriter]   r   Ú_saver\   )rÇ   r/   rÈ   rd   Úheadr>   Ú	row_orders   &&&    r    rÌ   rÌ   M  s$  € Ø	‡w�w�#„~Ø˜u‘Ø	�‰�CŒØ˜U‘Ø	�‰�MÔ	!Ø ‘Ø	�‰�OÔ	#Ø˜u‘Ø	�‰�CŒØ ‘à" 2§7¡7 )¨7Ð3ˆÜ�c‹lÐØ‡H�HˆT�L 2§7¡7Õ*Õ*Ô+Øˆu„}Ø
�‰�ÕØ	�ŒØ�cŒ>Ø�H‰H�XÕà�H‰H�ZÕ Ø	�ŒØ
�‰�ÔØ—g‘g ”n‘¨!€IÜ‡O‚OØ
”—’ ¨°·±Õ(8¸!¸gÀqÈ)Ð=TÓUÐVör"   rM   rF   zimage/x-portable-anymap)z.pbmz.pgmz.ppmz.pnmz.pfm)Ú
__future__r   rX   Útypingr   Ú r   r   Ú_binaryr   rÁ   r   r	   r¦   r2   rP   r'   r)   Ú	PyDecoderro   r¼   rÌ   Úregister_openr   Úregister_saveÚregister_decoderÚregister_extensionsÚregister_mimer   r"   r    Ú<module>rÙ      s*  ðõ  #ã Ý ç Ý !Ý Ý !ð
 +€ð 
ˆ3Ø	ˆ3Ø	ˆ5Ø	ˆ3Ø	ˆ3Ø	ˆ5àˆvØ	ˆ3à
ˆCØˆvØˆvð	€õ$Vôc
�9×&Ñ&ô c
ôTF�i×)Ñ)ô FôR�×$Ñ$ô õBðD × Ò �L×'Ñ'¨°wÔ ?Ø × Ò �L×'Ñ'¨Ô /à × Ò �u˜jÔ )Ø × Ò �{ OÔ 4à × Ò ˜,×-Ñ-Ò/WÔ Xà × Ò �L×'Ñ'Ð)BÖ Cr"   