§
    aÒ³gL  ã                  óL  — d dl mZ d dlZd dlZd dlZd dlmZmZmZ ddl	m
Z
mZmZmZmZ ddlmZ dd„Zdd„Z G d„ dej        ¦  «        Z e
j        ej        e¦  «          e
j        ej        e¦  «          e
j        ej        d¦  «          e
j        ej        d¦  «         dS )é    )ÚannotationsN)ÚIOÚAnyÚcasté   )ÚImageÚ	ImageFileÚImageSequenceÚJpegImagePluginÚTiffImagePlugin)Úo32leÚimúImage.ImageÚfpú	IO[bytes]Úfilenameústr | bytesÚreturnÚNonec                ó2   — t          j        | ||¦  «         d S ©N)r   Ú_save)r   r   r   s      úP/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/PIL/MpoImagePlugin.pyr   r   %   s   € ÝÔ˜"˜b (Ñ+Ô+Ð+Ð+Ð+ó    c           
     ó   — | j                              dg ¦  «        }|s$t          | dd¦  «        st          | ||¦  «         d S d}g }t	          j        | g|¦  «        D �]1}t          j        |¦  «        D �]}|sÍdt          j	        dd¦  «        z   dz   d	z   |j         d
<   |j                              d¦  «        }t          |t          j        ¦  «        r|                     ¦   «         }||j         d<   |r|dt          |¦  «        z   z  }t          j        |||¦  «         |                     |                     ¦   «         ¦  «         ŒÒ|                     |d¦  «         |                     |                     ¦   «         |d         z
  ¦  «         �Œ�Œ3t'          j        ¦   «         }	d|	d<   t          |¦  «        |	d<   d}
d}t+          |¦  «        D ]<\  }}|dk    rd}nd}|
t          j	        d|||dd¦  «        z  }
|dk    r||z  }||z  }Œ=|
|	d<   |                     |¦  «         |                     dt1          d¦  «        z   |	                     d¦  «        z   ¦  «         |                     dt2          j        ¦  «         d S )NÚappend_imagesÚis_animatedFé   s   ÿâz>HéX   s   MPF sR                                                                                     ÚextraÚexifé   ÚJPEGéÿÿÿÿs   0100i °  é°  r   r   i   z<LLLHHé°  s   II* é   )ÚencoderinfoÚgetÚgetattrr   Ú	itertoolsÚchainr
   ÚIteratorÚstructÚpackÚ
isinstancer   ÚExifÚtobytesÚlenr   ÚappendÚtellÚsaver   ÚImageFileDirectory_v2Ú	enumerateÚseekÚwriter   ÚosÚSEEK_END)r   r   r   r   Ú
mpf_offsetÚoffsetsÚ
imSequenceÚim_framer!   ÚifdÚ	mpentriesÚdata_offsetÚiÚsizeÚmptypes                  r   Ú	_save_allrG   )   s–  € Ø”N×&Ò& ¸Ñ;Ô;€MØð ¥¨¨]¸EÑ!BÔ!Bð Ýˆb�"�hÑÔÐØˆà€JØ€GÝ”o r d¨MÑ:Ô:ð 8ñ 8ˆ
Ý%Ô.¨zÑ:Ô:ð 	8ñ 	8ˆHØð 8ð  ¥&¤+¨d°FÑ";Ô";Ñ;¸hÑFÈÑRð Ô$ WÑ-ð  Ô+×/Ò/°Ñ7Ô7�Ý˜d¥E¤JÑ/Ô/ð 8ØŸ<š<™>œ>�DØ37�HÔ(¨Ñ0Øð 0Ø !¥c¨$¡i¤i¡-Ñ/�JåÔ% h°°HÑ=Ô=Ð=Ø—’˜rŸwšw™yœyÑ)Ô)Ð)Ð)à—’˜b &Ñ)Ô)Ð)Ø—’˜rŸwšw™yœy¨7°2¬;Ñ6Ñ7Ô7Ð7Ñ7ñ#	8õ& Ô
/Ñ
1Ô
1€CØ€Cˆ�KÝ�g‘,”,€Cˆ�Kà€IØ€KÝ˜WÑ%Ô%ð ð ‰ˆˆ4Ø�Š6ˆ6ØˆFˆFàˆFØ•V”[ ¨6°4¸ÀaÈÑKÔKÑKˆ	Ø�Š6ˆ6Ø˜:Ñ%ˆKØ�tÑˆˆØ€Cˆ�Kà‡G‚GˆJÑÔÐØ‡H‚Hˆ]�U 1™XœXÑ%¨¯ª°A©¬Ñ6Ñ7Ô7Ð7Ø‡G‚GˆA�rŒ{ÑÔÐÐÐr   c                  ó`   — e Zd ZdZdZdZdd„Zddd
„Zdd„Zdd„Z	dd„Z
e	 ddd„¦   «         ZdS )ÚMpoImageFileÚMPOzMPO (CIPA DC-007)Fr   r   c                ó    — | j                              d¦  «         t          j                             | ¦  «         |                      ¦   «          d S )Nr   )r   r9   r   ÚJpegImageFileÚ_openÚ_after_jpeg_open©Úselfs    r   rM   zMpoImageFile._opend   sB   € ØŒ�Š�Q‰ŒˆÝÔ%×+Ò+¨DÑ1Ô1Ð1Ø×ÒÑÔÐÐÐr   NÚmpheaderúdict[int, Any] | Nonec                óà  ‡ — |�|n‰                       ¦   «         ‰ _        ‰ j        €d}t          |¦  «        ‚‰ j        d         ‰ _        ˆ fd„‰ j        d         D ¦   «         ‰ _        d‰ j        d<   ‰ j        t          ‰ j        ¦  «        k    sJ ‚‰ j        d= ‰ j        dk    ‰ _        ‰ j        ‰ _	        ‰ j	         
                    ‰ j        d         ¦  «         d‰ _        d‰ _        d‰ _        d S )Nz(Image appears to be a malformed MPO filer%   c                ó<   •— g | ]}|d          ‰j         d         z   ‘ŒS )Ú
DataOffsetÚmpoffset)Úinfo)Ú.0ÚmpentrP   s     €r   ú
<listcomp>z1MpoImageFile._after_jpeg_open.<locals>.<listcomp>o   s7   ø€ ð 
ð 
ð 
Ø<AˆE�,Ô $¤)¨JÔ"7Ñ7ð
ð 
ð 
r   r&   r   rV   r   )Ú_getmpÚmpinfoÚ
ValueErrorÚn_framesÚ_MpoImageFile__mpoffsetsr3   rW   r   r   Ú_fpr9   Ú_MpoImageFile__frameÚoffsetÚreadonly)rP   rQ   Úmsgs   `  r   rN   zMpoImageFile._after_jpeg_openi   sû   ø€ Ø"*Ð"6�h�h¸D¿KºK¹M¼MˆŒØŒ;ÐØ<ˆCÝ˜S‘/”/Ð!Øœ FÔ+ˆŒð
ð 
ð 
ð 
ØEIÄ[ÐQWÔEXð
ñ 
ô 
ˆÔð  ˆÔ˜Ñð Œ}¥ DÔ$4Ñ 5Ô 5Ò5Ð5Ð5Ð5ØŒI�jÐ!Øœ=¨1Ò,ˆÔØ”7ˆŒØŒ�Š�dÔ& qÔ)Ñ*Ô*Ð*ØˆŒØˆŒàˆŒˆˆr   ÚposÚintc                ó:   — | j                              |¦  «         d S r   )r`   r9   )rP   re   s     r   Ú	load_seekzMpoImageFile.load_seek   s   € ØŒ�Š�cÑÔÐÐÐr   Úframec                óÄ  — |                       |¦  «        sd S | j        | _        | j        |         | _        | j                             d¦  «        }d| j        v r| j        d= | j                             | j        dz   ¦  «         | j                             d¦  «        sd}t          |¦  «        ‚| j                             | j        ¦  «         t          j                             | ¦  «         | j                             d¦  «        |k    r|                      ¦   «          t          j        dd| j        z   | j        | j        d         d         ¦  «        g| _        || _        d S )Nr!   é   zNo data found for frameÚjpeg)r   r   r   r$   )Ú_seek_checkr`   r   r_   rb   rW   r)   r9   Úreadr]   r   rL   rM   Ú_reload_exifr	   Ú_TilerE   Útilera   )rP   ri   Úoriginal_exifrd   s       r   r9   zMpoImageFile.seek‚   s6  € Ø×Ò Ñ&Ô&ð 	ØˆFØ”(ˆŒØÔ& uÔ-ˆŒàœ	Ÿš fÑ-Ô-ˆØ�T”YÐÐØ”	˜&Ð!àŒ�Š�T”[ 1‘_Ñ%Ô%Ð%ØŒw�|Š|˜A‰Œð 	"Ø+ˆCÝ˜S‘/”/Ð!ØŒ�Š�T”[Ñ!Ô!Ð!ÝÔ%×+Ò+¨DÑ1Ô1Ð1ØŒ9�=Š=˜Ñ Ô  MÒ1Ð1Ø×ÒÑÔÐõ ŒO˜F F¨T¬YÑ$6¸¼ÀTÄYÈqÄ\ÐRTÔEUÑVÔVð
ˆŒ	ð ˆŒˆˆr   c                ó   — | j         S r   )ra   rO   s    r   r5   zMpoImageFile.tellš   s
   € ØŒ|Ðr   Újpeg_instanceúJpegImagePlugin.JpegImageFilec                ór   — t           | _        t          t           | ¦  «        }|                     |¦  «         |S )aC  
        Transform the instance of JpegImageFile into
        an instance of MpoImageFile.
        After the call, the JpegImageFile is extended
        to be an MpoImageFile.

        This is essentially useful when opening a JPEG
        file that reveals itself as an MPO, to avoid
        double call to _open.
        )rI   Ú	__class__r   rN   )rt   rQ   Úmpo_instances      r   ÚadoptzMpoImageFile.adopt�   s5   € õ #/ˆÔÝ�L¨-Ñ8Ô8ˆØ×%Ò% hÑ/Ô/Ð/ØÐr   )r   r   r   )rQ   rR   r   r   )re   rf   r   r   )ri   rf   r   r   )r   rf   )rt   ru   rQ   rR   r   rI   )Ú__name__Ú
__module__Ú__qualname__ÚformatÚformat_descriptionÚ!_close_exclusive_fp_after_loadingrM   rN   rh   r9   r5   Ústaticmethodry   © r   r   rI   rI   _   s¸   € € € € € Ø€FØ,ÐØ(-Ð%ð ð  ð  ð  ð
ð ð ð ð ð,ð ð ð ðð ð ð ð0ð ð ð ð ð +/ðð ð ð ñ „\ðð ð r   rI   z.mpoz	image/mpo)r   r   r   r   r   r   r   r   )Ú
__future__r   r+   r;   r.   Útypingr   r   r   Ú r   r	   r
   r   r   Ú_binaryr   r   rG   rL   rI   Úregister_saver}   Úregister_save_allÚregister_extensionÚregister_mimer�   r   r   ú<module>rŠ      sv  ðð( #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø 	€	€	€	Ø €€€Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ð  ðð ð ð ð ð ð ð ð ð ð ð ð ð ð Ð Ð Ð Ð Ð ð,ð ,ð ,ð ,ð/ð /ð /ð /ðlPð Pð Pð Pð P�?Ô0ñ Pô Pð Pðt €Ô �LÔ'¨Ñ /Ô /Ð /Ø €Ô ˜Ô+¨YÑ 7Ô 7Ð 7à €Ô ˜Ô,¨fÑ 5Ô 5Ð 5à €Ô �LÔ'¨Ñ 5Ô 5Ð 5Ð 5Ð 5r   