Ë
    ñEj°/  ã                  ó@  — d dl mZ d dlZd dlmZ ddlmZmZ ddlm	Z
 ddlmZ ddlmZ d	Zd
ddd
ddddddddœZdd„Z G d„ dej                  «      Z G d„ dej$                  «      Z G d„ dej$                  «      Zdd„Z ej,                  ej.                  ee«        ej0                  ej.                  e«        ej2                  de«        ej2                  de«        ej4                  ej.                  g d¢«        ej6                  ej.                  d«       y) é    )ÚannotationsN)ÚIOé   )ÚImageÚ	ImageFile)Úi16be)Úo8)Úo32les    	
Ú1ÚLÚRGBÚCMYKÚFÚPÚRGBA)ó   P1ó   P2ó   P3ó   P4ó   P5ó   P6s   P0CMYKó   Pfs   PyPs   PyRGBAs   PyCMYKc                ó$   — | dd dk(  xr | d   dv S )Nr   r   ó   Ps	   0123456fy© )Úprefixs    úU/var/www/html/peoplehubportal/venv/lib/python3.12/site-packages/PIL/PpmImagePlugin.pyÚ_acceptr   1   s!   € Ø�!�Aˆ;˜$ÑÒ< 6¨!¡9°Ð#<Ð<ó    c                  ó,   — e Zd ZdZdZdd„Zdd„Zdd„Zy)	ÚPpmImageFileÚPPMzPbmplus imagec                ó    — | j                   €J ‚d}t        d«      D ]/  }| j                   j                  d«      }|r|t        v r |S ||z  }Œ1 |S )Nr   é   r   )ÚfpÚrangeÚreadÚb_whitespace)ÚselfÚmagicÚ_Úcs       r   Ú_read_magiczPpmImageFile._read_magic=   s_   € Ø�w‰wÐ"Ð"Ð"àˆä�q“ò 	ˆAØ—‘—‘˜Q“ˆAÙ˜œ\Ñ)Øàˆð �Q‰J‰Eð		ð
 ˆr   c                ó¸  — | j                   €J ‚d}t        |«      dk  r€| j                   j                  d«      }|snb|t        v r|sŒ7nV|dk(  r=| j                   j                  d«      dvr	 | j                   j                  d«      dvrŒŒz||z  }t        |«      dk  rŒ€|sd}t	        |«      ‚t        |«      dkD  rd|j                  «       › �}t	        |«      ‚|S )Nr   é
   r   ó   #s   
z Reached EOF while reading headerzToken too long in file header: )r%   Úlenr'   r(   Ú
ValueErrorÚdecode)r)   Útokenr,   Úmsgs       r   Ú_read_tokenzPpmImageFile._read_tokenI   sÚ   € Ø�w‰wÐ"Ð"Ð"àˆÜ�%‹j˜BÒØ—‘—‘˜Q“ˆAÙØØ”lÑ"ÙàØØ�d’à—g‘g—l‘l 1“o¨WÑ4Øð —g‘g—l‘l 1“o¨WÒ4àØ�Q‰JˆEô �%‹j˜BÓñ à4ˆCÜ˜S“/Ð!Ü�‹Z˜"Š_Ø3°E·L±L³NÐ3CÐDˆCÜ˜S“/Ð!Øˆr   c                óx  — | j                   €J ‚| j                  «       }	 t        |   }|| _        |dv rd| _        n|dv rd| _        n|dv rd| _        t        | j                  «       «      t        | j                  «       «      f| _	        d}|d	v rd
}|dk(  rd}nÖ|dk(  rgt        | j                  «       «      }|dk(  st        j                  |«      sd}t        |«      ‚t        |«      | j                  d<   |dk  rdnd}|ddf}njt        | j                  «       «      }d|cxk  rdk  sn d}t        |«      ‚|dkD  r|dk(  rd| _        |}|d
k7  r|dk(  r|dk(  rd}n|dk7  rd}|dk(  r|n||f}|d| j                   z   | j                   j#                  «       |fg| _        y # t        $ r d}t	        |«      ‚w xY w)Nznot a PPM file)r   r   zimage/x-portable-bitmap)r   r   zimage/x-portable-graymap)r   r   zimage/x-portable-pixmapÚraw)r   r   r   Ú	ppm_plainr   ú1;Ir   g        z!scale must be finite and non-zeroÚscaler   úF;32FzF;32BFéÿÿÿÿi   z1maxval must be greater than 0 and less than 65536éÿ   r   ÚIéÿÿ  úI;16BÚppm©r   r   )r%   r-   ÚMODESÚKeyErrorÚSyntaxErrorÚ_modeÚcustom_mimetypeÚintr6   Ú_sizeÚfloatÚmathÚisfiniter2   ÚabsÚinfoÚsizeÚtellÚtile)	r)   Úmagic_numberÚmoder5   Údecoder_nameÚargsr;   ÚrawmodeÚmaxvals	            r   Ú_openzPpmImageFile._opene   sà  € Ø�w‰wÐ"Ð"Ð"à×'Ñ'Ó)ˆð	#Ü˜Ñ&ˆDð ˆŒ
à˜>Ñ)Ø#<ˆDÕ Ø˜^Ñ+Ø#=ˆDÕ Ø˜^Ñ+Ø#<ˆDÔ ä˜×)Ñ)Ó+Ó,¬c°$×2BÑ2BÓ2DÓ.EÐEˆŒ
àˆØÐ0Ñ0Ø&ˆLð �3Š;Ø‰DØ�SŠ[Ü˜$×*Ñ*Ó,Ó-ˆEØ˜Š|¤4§=¡=°Ô#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¸'À6Ð9JˆDØ" F¨T¯Y©YÑ$6¸¿¹¿¹»ÈÐMÐNˆ�	øô_ ò 	#Ø"ˆCÜ˜cÓ"Ð"ð	#ús    	F" Æ"F9N©ÚreturnÚbytes)r[   ÚNone)Ú__name__Ú
__module__Ú__qualname__ÚformatÚformat_descriptionr-   r6   rY   r   r   r   r!   r!   9   s   „ Ø€FØ(Ðó
óô85Or   r!   c                  óN   — e Zd ZU dZded<   dd„Zddd„Zdd„Zdd„Zdd„Z	dd	„Z
y
)ÚPpmPlainDecoderTÚboolÚ_comment_spansc                óp   — | j                   €J ‚| j                   j                  t        j                  «      S )N)Úfdr'   r   Ú	SAFEBLOCK)r)   s    r   Ú_read_blockzPpmPlainDecoder._read_block¥   s+   € Ø�w‰wÐ"Ð"Ð"à�w‰w�|‰|œI×/Ñ/Ó0Ð0r   c                óŠ   — |j                  d|«      }|j                  d|«      }||z  dkD  rt        ||«      S t        ||«      S )Nó   
ó   r   )ÚfindÚminÚmax)r)   ÚblockÚstartÚaÚbs        r   Ú_find_comment_endz!PpmPlainDecoder._find_comment_endª   sC   € Ø�J‰J�u˜eÓ$ˆØ�J‰J�u˜eÓ$ˆØ ™E AšIŒs�1�a‹yÐ4¬3¨q°!«9Ð4r   c                ó0  — | j                   r4|r2| j                  |«      }|dk7  r	||dz   d  }n| j                  «       }|rŒ2d| _         	 |j                  d«      }|dk(  r	 |S | j                  ||«      }|dk7  r|d | ||dz   d  z   }n|d | }d| _         	 |S ŒO)Nr=   r   FTr0   )rf   ru   rj   rn   )r)   rq   Úcomment_endÚcomment_starts       r   Ú_ignore_commentsz PpmPlainDecoder._ignore_comments¯   sÜ   € Ø×ÒáØ"×4Ñ4°UÓ;�Ø "Ò$ð " +°¡/Ð"3Ð4�EØð !×,Ñ,Ó.�Eò ð $ˆÔØØ!ŸJ™J tÓ,ˆMØ Ò"àð ˆð ×0Ñ0°¸ÓFˆKØ˜bÒ ð ˜n˜}Ð-°°kÀA±oÐ6GÐ0HÑH‘ð ˜n˜}Ð-�Ø&*�Ô#ØØˆð r   c                óØ  — t        «       }| j                  j                  | j                  j                  z  }t	        |«      |k7  r| j                  «       }|snl| j                  |«      }dj                  |j                  «       «      }|D ]   }|dvsŒdt        |g«      z  }t        |«      ‚ ||z   d| }t	        |«      |k7  rŒt        j                  dd«      }|j                  |«      S )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   )é0   é1   s   Invalid token for this mode: %sNs   01s   ÿ )Ú	bytearrayÚstateÚxsizeÚysizer1   rj   ry   ÚjoinÚsplitr\   r2   Ú	maketransÚ	translate)r)   ÚdataÚtotal_bytesrq   Útokensr4   r5   Úinverts           r   Ú_decode_bitonalz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›/Ð)ð*ð ˜6‘M < KÐ0ˆDô �$‹i˜;Ó&ô —‘ ¨Ó4ˆØ�~‰~˜fÓ%Ð%r   c                óÎ  — t        «       }d}| j                  dk(  rdnd}| j                  dk(  rdnd}t        j                  | j                  «      }| j                  j
                  | j                  j                  z  |z  |z  }d}t        |«      |k7  �rO| j                  «       }	|	s|rt        d«      }	n	 |S | j                  |	«      }	|r||	z   }	d}|	j                  «       }
|	rG|	d	d  j                  «       s4|
j                  «       }t        |«      |kD  rd
|d |dz    z  }t        |«      ‚|
D ]¤  }t        |«      |kD  rd
|d |dz    z  }t        |«      ‚t        |«      }|dk  rd|› �}t        |«      ‚||kD  rd|› �}t        |«      ‚t        ||z  |z  «      }|| j                  dk(  rt!        |«      n
t#        |«      z  }t        |«      |k(  sŒ¤ n t        |«      |k7  r�ŒO|S )Nr/   r?   é   r   r@   r>   r   ó    r=   s    Token too long found in data: %sr   zChannel value is negative: z'Channel value too large for this mode: )r}   rT   r   Úgetmodebandsr~   r   r€   r1   rj   ry   r‚   ÚisspaceÚpopr2   rI   ÚroundÚo32r	   )r)   rX   r…   Úmax_lenÚout_byte_countÚout_maxÚbandsr†   Ú
half_tokenrq   r‡   r5   r4   ÚvalueÚmsg_strs                  r   Ú_decode_blocksz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áØ" UÑ*�Ø �
à—[‘[“]ˆFá˜U 2 3˜Z×/Ñ/Ô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Ó-Ð-Ø˜6’>Ø GÈÀwÐO�GÜ$ WÓ-Ð-Ü˜e f™n¨wÑ6Ó7�Ø d§i¡i°3Ò&6œ˜Eœ
¼B¸u»IÑE�Ü�t“9 Ó+Ùðô3 �$‹i˜;Ô&ðP ˆr   c                ó  — d| _         | j                  dk(  r| j                  «       }d}n=| j                  d   }| j	                  |«      }| j                  dk(  rdn| j                  }| j                  t        |«      |«       y)NFr   z1;8r=   r?   úI;32©r=   r   )rf   rT   r‰   rV   r™   Ú
set_as_rawr\   )r)   Úbufferr…   rW   rX   s        r   r3   zPpmPlainDecoder.decode  sq   € Ø#ˆÔØ�9‰9˜ÒØ×'Ñ'Ó)ˆDØ‰Gà—Y‘Y˜r‘]ˆFØ×&Ñ& vÓ.ˆDØ $§	¡	¨SÒ 0‘f°d·i±iˆGØ�‰œ˜d› WÔ-Ør   NrZ   )r   )rq   r\   rr   rI   r[   rI   )rq   r\   r[   r\   )r[   r}   )rX   rI   r[   r}   ©rž   r\   r[   ztuple[int, int])r^   r_   r`   Ú	_pulls_fdÚ__annotations__rj   ru   ry   r‰   r™   r3   r   r   r   rd   rd   ¡   s-   … Ø€IØÓó1ô
5ó
 óD&ó21ôf
r   rd   c                  ó   — e Zd ZdZdd„Zy)Ú
PpmDecoderTc                ó6  — | j                   €J ‚t        «       }| j                  d   }|dk  rdnd}| j                  dk(  rdnd}| j                  dk(  rdnd}t	        j
                  | j                  «      }| j                  j                  | j                  j                  z  |z  |z  }t        |«      |k  r«| j                   j                  ||z  «      }	t        |	«      ||z  k  rn{t        |«      D ]^  }
|dk(  r|	|
   nt        |	|
|z  «      }t        |t        ||z  |z  «      «      }|| j                  dk(  rt        |«      n
t!        |«      z  }Œ` t        |«      |k  rŒ«| j                  dk(  rd	n| j                  }| j#                  t%        |«      |«       y
)Nr=   é   r   é   r?   r‹   r@   r>   r›   rœ   )rh   r}   rV   rT   r   r�   r~   r   r€   r1   r'   r&   Úi16ro   r�   r‘   r	   r�   r\   )r)   rž   r…   rX   Úin_byte_countr“   r”   r•   Údest_lengthÚpixelsrt   r—   rW   s                r   r3   zPpmDecoder.decode-  sv  € Ø�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‹{˜]¨UÑ2Ò2àÜ˜5“\ò F�à!.°!Ò!3�F˜1’I¼¸VÀQÈÑEVÓ9Wð ô ˜G¤U¨5°6©>¸GÑ+CÓ%DÓE�Ø d§i¡i°3Ò&6œ˜Eœ
¼B¸u»IÑE‘ðFô �$‹i˜+Ó%ð !ŸI™I¨Ò,‘&°$·)±)ˆØ�‰œ˜d› WÔ-Ør   NrŸ   )r^   r_   r`   r    r3   r   r   r   r£   r£   *  s   „ Ø€Iôr   r£   c           
     ó€  — | j                   dk(  rd\  }}nn| j                   dk(  rd\  }}nY| j                   dk(  rd\  }}nD| j                   dv rd\  }}n0| j                   d	k(  rd
\  }}nd| j                   › d�}t        |«      ‚|j                  |d| j                  z  z   «       |dk(  r|j                  d«       nD|dk(  r)|dk(  r|j                  d«       n(|j                  d«       n|dk(  r|j                  d«       | j                   d	k(  rdnd}t	        j
                  | |dd| j                  z   d|d|ffg«       y )Nr   )r:   r   r   )r   r   r?   )rA   r   )r   r   )r   r   r   )r<   r   zcannot write mode z as PPMs   
%d %d
r   s   255
r   s   65535
r   s   -1.0
r=   r   r8   rC   r   )rT   ÚOSErrorÚwriterP   r   Ú_save)Úimr%   ÚfilenamerW   Úheadr5   Ú	row_orders          r   r®   r®   K  s&  € Ø	‡w�w�#‚~Ø$‰ˆ‘Ø	�‰�CŠØ"‰ˆ‘Ø	�‰�CŠØ&‰ˆ‘Ø	�‰�OÑ	#Ø$‰ˆ‘Ø	�‰�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�B˜˜e V¨b¯g©gÑ%5°q¸7ÀAÀyÐ:QÐRÐSÕTr   rB   r9   )z.pbmz.pgmz.ppmz.pnmz.pfmzimage/x-portable-anymap)r   r\   r[   re   )r¯   zImage.Imager%   z	IO[bytes]r°   Ústrr[   r]   )Ú
__future__r   rL   Útypingr   Ú r   r   Ú_binaryr   r§   r	   r
   r‘   r(   rD   r   r!   Ú	PyDecoderrd   r£   r®   Úregister_openra   Úregister_saveÚregister_decoderÚregister_extensionsÚregister_mimer   r   r   ú<module>r¾      s"  ðõ  #ã Ý ç Ý !Ý Ý !ð
 +€ð ØØØØØàØàØØñ	€ó$=ôaO�9×&Ñ&ô aOôPF�i×)Ñ)ô FôR�×$Ñ$ô óBUð@ €× Ñ �L×'Ñ'¨°wÔ ?Ø €× Ñ �L×'Ñ'¨Ô /à €× Ñ �u˜jÔ )Ø €× Ñ �{ OÔ 4à €× Ñ ˜,×-Ñ-Ò/WÔ Xà €× Ñ �L×'Ñ'Ð)BÕ Cr   