ó
    "%vgL  ã                  óŠ  • S SK Jr  S SKrS SKrS SKrS SKJrJrJr  SSK	J
r
JrJrJrJr  SSKJr  SS jrSS jr " S	 S
\R&                  5      r\
R*                  " \R,                  \5        \
R.                  " \R,                  \5        \
R0                  " \R,                  S5        \
R2                  " \R,                  S5        g)é    )ÚannotationsN)ÚIOÚAnyÚcasté   )ÚImageÚ	ImageFileÚImageSequenceÚJpegImagePluginÚTiffImagePlugin)Úo32lec                ó2   • [         R                  " XU5        g ©N)r   Ú_save)ÚimÚfpÚfilenames      Ú4/usr/lib/python3/dist-packages/PIL/MpoImagePlugin.pyr   r   %   s   € Ü×Ò˜" (Õ+ó    c           
     óê  • U R                   R                  S/ 5      nU(       d  [        U SS5      (       d  [        XU5        g Sn/ n[        R
                  " U /U5       GH6  n[        R                  " U5       GH  nU(       dÕ  S[        R                  " SS5      -   S-   S	-   UR                   S
'   UR                   R                  S5      n[        U[        R                  5      (       a  UR                  5       nX‡R                   S'   U(       a  US[        U5      -   -  n[        R                  " XqU5        UR!                  UR#                  5       5        Mà  UR%                  US5        UR!                  UR#                  5       US   -
  5        GM     GM9     [&        R(                  " 5       n	SU	S'   [        U5      U	S'   Sn
Sn[+        U5       H;  u  pÍUS:X  a  SnOSnU
[        R                  " SXíUSS5      -  n
US:X  a  X´-  nX½-  nM=     X©S'   UR-                  U5        UR/                  S[1        S5      -   U	R                  S5      -   5        UR-                  S[2        R4                  5        g )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_allrB   )   s  € Ø—N‘N×&Ñ& ¸Ó;€MÞ¤¨¨]¸E×!BÑ!BÜˆb�hÔØà€JØ€GÜ—o’o r d¨M×:ˆ
Ü%×.Ò.¨z×:ˆHÞð  ¤&§+¢+¨d°FÓ";Ñ;¸hÑFÈÑRð ×$Ñ$ WÑ-ð  ×+Ñ+×/Ñ/°Ó7�Ü˜d¤E§J¡J×/Ñ/ØŸ<™<›>�DØ37×(Ñ(¨Ñ0ÞØ !¤c¨$£i¡-Ñ/�Jä×%Ò% h°HÔ=Ø—‘˜rŸw™w›yÖ)à—‘˜b &Ô)Ø—‘˜rŸw™w›y¨7°2©;Ñ6×7ô# ;ñ ;ô( ×
/Ò
/Ó
1€CØ€Cˆ�KÜ�g“,€Cˆ�Kà€IØ€KÜ˜WÖ%‰ˆØ�‹6Ø‰FàˆFØ”V—[’[ ¨6¸ÀaÈÓKÑKˆ	Ø�‹6ØÑ%ˆKØÑŠñ &ð ˆ�Kà‡G�GˆJÔØ‡H�Hˆ]œU 1›XÑ%¨¯©°A«Ñ6Ô7Ø‡G�GˆAŒr�{‰{Õr   c                  óz   • \ rS rSrSrSrSrSS jrSSS jjrSS jr	SS	 jr
SS
 jr\ S     SS jj5       rSrg)ÚMpoImageFileé_   ÚMPOzMPO (CIPA DC-007)Fc                ó˜   • U R                   R                  S5        [        R                  R	                  U 5        U R                  5         g )Nr   )r   r4   r   ÚJpegImageFileÚ_openÚ_after_jpeg_open©Úselfs    r   rI   ÚMpoImageFile._opend   s1   € Ø�‰�‰�QŒÜ×%Ñ%×+Ñ+¨DÔ1Ø×ÑÕr   Nc                óR  • Ub  UOU R                  5       U l        U R                  c  Sn[        U5      eU R                  S   U l        U R                  S    Vs/ s H  o3S   U R                  S   -   PM     snU l        SU R
                  S'   U R                  [        U R
                  5      :X  d   eU R                  S	 U R                  S:„  U l        U R                  U l	        U R                  R                  U R
                  S   5        SU l        SU l        SU l        g s  snf )Nz(Image appears to be a malformed MPO filer    r!   Ú
DataOffsetÚmpoffsetr   r   )Ú_getmpÚmpinfoÚ
ValueErrorÚn_framesÚinfoÚ_MpoImageFile__mpoffsetsr.   r   r   Ú_fpr4   Ú_MpoImageFile__frameÚoffsetÚreadonly)rL   ÚmpheaderÚmsgÚmpents       r   rJ   ÚMpoImageFile._after_jpeg_openi   s  € Ø"*Ñ"6‘h¸D¿K¹K»MˆŒØ�;‰;ÑØ<ˆCÜ˜S“/Ð!ØŸ™ FÑ+ˆŒàEIÇ[Á[ÐQWÒEXó
ÚEX¸E�,Ñ $§)¡)¨JÑ"7Ô7ÑEXñ
ˆÔð  ˆ×Ñ˜Ñð �}‰}¤ D×$4Ñ$4Ó 5Ó5Ð5Ð5Ø�I‰I�jÐ!ØŸ=™=¨1Ñ,ˆÔØ—7‘7ˆŒØ�‰�‰�d×&Ñ& qÑ)Ô*ØˆŒØˆŒàˆ�ùò
s   ÁD$c                ó:   • U R                   R                  U5        g r   )rW   r4   )rL   Úposs     r   Ú	load_seekÚMpoImageFile.load_seek   s   € Ø�‰�‰�cÕr   c                ó  • U R                  U5      (       d  g U R                  U l        U R                  U   U l        U R
                  R                  S5      nSU R
                  ;   a  U R
                  S	 U R                  R                  U R                  S-   5        U R                  R                  S5      (       d  Sn[        U5      eU R                  R                  U R                  5        [        R                  R                  U 5        U R
                  R                  S5      U:w  a  U R                  5         [        R                  " SSU R                   -   U R                  U R"                  S   S   5      /U l        Xl        g )Nr   é   zNo data found for frameÚjpeg)r   r   r   r   )Ú_seek_checkrW   r   rV   rY   rU   r$   r4   ÚreadrS   r   rH   rI   Ú_reload_exifr	   Ú_Tiler@   ÚtilerX   )rL   ÚframeÚoriginal_exifr\   s       r   r4   ÚMpoImageFile.seek‚   s  € Ø×Ñ ×&Ñ&ØØ—(‘(ˆŒØ×&Ñ& uÑ-ˆŒàŸ	™	Ÿ™ fÓ-ˆØ�T—Y‘YÓØ—	‘	˜&Ð!à�‰�‰�T—[‘[ 1‘_Ô%Ø�w‰w�|‰|˜A�‰Ø+ˆCÜ˜S“/Ð!Ø�‰�‰�T—[‘[Ô!Ü×%Ñ%×+Ñ+¨DÔ1Ø�9‰9�=‰=˜Ó  MÓ1Ø×ÑÔô �OŠO˜F F¨T¯Y©YÑ$6¸¿¹ÀTÇYÁYÈqÁ\ÐRTÑEUÓVð
ˆŒ	ð �r   c                ó   • U R                   $ r   )rX   rK   s    r   r0   ÚMpoImageFile.tellš   s   € Ø�|‰|Ðr   c                ó^   • [         U l        [        [         U 5      nUR                  U5        U$ )a  
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.
)rD   Ú	__class__r   rJ   )Újpeg_instancer[   Úmpo_instances      r   ÚadoptÚMpoImageFile.adopt�   s,   € ô #/ˆÔÜœL¨-Ó8ˆØ×%Ñ% hÔ/ØÐr   )
Ú__frameÚ__mpoffsetsrW   r   r   rR   rT   rY   rZ   rj   )ÚreturnÚNoner   )r[   údict[int, Any] | Nonerx   ry   )r`   Úintrx   ry   )rk   r{   rx   ry   )rx   r{   )rr   zJpegImagePlugin.JpegImageFiler[   rz   rx   rD   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚformatÚformat_descriptionÚ!_close_exclusive_fp_after_loadingrI   rJ   ra   r4   r0   Ústaticmethodrt   Ú__static_attributes__© r   r   rD   rD   _   s_   † Ø€FØ,ÐØ(-Ð%ô ö
ô,ôô0ð ð +/ðØ4ðà'ðð 
ôó ór   rD   z.mpoz	image/mpo)r   zImage.Imager   z	IO[bytes]r   zstr | bytesrx   ry   )Ú
__future__r   r&   r6   r)   Útypingr   r   r   Ú r   r	   r
   r   r   Ú_binaryr   r   rB   rH   rD   Úregister_saver€   Úregister_save_allÚregister_extensionÚregister_mimer…   r   r   Ú<module>rŽ      s¢   ðõ( #ã Û 	Û ß  Ñ  ÷õ õ ô,ô/ôlP�?×0Ñ0ô Pðt × Ò �L×'Ñ'¨Ô /Ø × Ò ˜×+Ñ+¨YÔ 7à × Ò ˜×,Ñ,¨fÔ 5à × Ò �L×'Ñ'¨Õ 5r   