
    h	                       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KJr  SS jrSS	 jr " S
 S\R*                  5      r\
R.                  " \R0                  \5        \
R2                  " \R0                  \5        \
R4                  " \R0                  S5        \
R6                  " \R0                  S5        g)    )annotationsN)IOAnycast   )Image	ImageFileImageSequenceJpegImagePluginTiffImagePlugin)o32le)DeferredErrorc                2    [         R                  " XU5        g N)r   _save)imfpfilenames      D/var/www/html/env/lib/python3.13/site-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XR                   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  pUS:X  a  SnOSnU
[        R                  " SXUSS5      -  n
US:X  a  X-  nX-  nM=     XS'   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>HX   s   MPF sR                                                                                     extraexif   JPEGs   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_allrC   *   s   NN&&;M]E!B!BbhJGoordM:
%..z:H  &++dF";;hFR $$W-  ++//7dEJJ//<<>D37((0!c$i-/J%%hH=rwwy)b&)rwwy72;67# ; ;( 
/
/
1CCKg,CKIKW%6FFV[[6aKK	6%K & KGGJHH]U1X%A67GGAr{{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   r5   r   JpegImageFile_open_after_jpeg_openselfs    r   rJ   MpoImageFile._opene   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   _fpr5   _MpoImageFile__frameoffsetreadonly)rM   mpheadermsgmpents       r   rK   MpoImageFile._after_jpeg_openj   s   "*"6hDKKM;;<CS/!F+EI[[QWEX
EXE,$))J"77EX
   }}D$4$4 5555IIj!==1,77d&&q)*
s   D$c                    [        U R                  [        5      (       a  U R                  R                  eU R                  R	                  U5        g r   )r,   rX   r   exr5   )rM   poss     r   	load_seekMpoImageFile.load_seek   s1    dhh..((++cr   c                ~   U R                  U5      (       d  g [        U R                  [        5      (       a  U R                  R                  e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_checkr,   rX   r   ra   r   rW   rZ   rV   r%   r5   readrT   r   rI   rJ   _reload_exifr	   _TilerA   tilerY   )rM   frameoriginal_exifr]   s       r   r5   MpoImageFile.seek   s<   &&dhh..((++((&&u-		f-TYY		&!T[[1_%ww||A+CS/!T[[!%%++D199== M1 OOFFTYY$6TYYq\RTEUV
	 r   c                    U R                   $ r   )rY   rL   s    r   r1   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.
)rE   	__class__r   rK   )jpeg_instancer\   mpo_instances      r   adoptMpoImageFile.adopt   s,     #/L-8%%h/r   )
__frame__mpoffsetsrX   r   r   rS   rU   rZ   r[   rl   )returnNoner   )r\   dict[int, Any] | Nonerz   r{   )rb   intrz   r{   )rm   r}   rz   r{   )rz   r}   )rt   zJpegImagePlugin.JpegImageFiler\   r|   rz   rE   )__name__
__module____qualname____firstlineno__formatformat_description!_close_exclusive_fp_after_loadingrJ   rK   rc   r5   r1   staticmethodrv   __static_attributes__ r   r   rE   rE   `   s_    F,(-% 
,
4  +/4' 
 r   rE   z.mpoz	image/mpo)r   zImage.Imager   z	IO[bytes]r   zstr | bytesrz   r{   )
__future__r   r'   r7   r*   typingr   r   r    r   r	   r
   r   r   _binaryr   _utilr   r   rC   rI   rE   register_saver   register_save_allregister_extensionregister_mimer   r   r   <module>r      s   ( #  	         ,/lT?00 T|   L'' /   ++Y 7   ,,f 5   L'' 5r   