Ë
    ^ãjAX ã                  ó  — U d dl mZ h d£Zd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
mZmZ d dlmZ d dlmZmZ d dlmZmZmZ dd	lmZmZmZmZmZmZ dd
lmZ ddlm Z! ddl"m#Z#m$Z$ ddlm%Z% dZ&e&rd dl
m'Z' d dlm(Z(m)Z) ddl*m+Z+m,Z,m-Z-  ej\                  e/«      Z0dZ1dZ2dZ3dZ4dZ5dZ6dZ7dZ8dZ9dZ:dZ;dZ<dZ=dZ>dZ?dZ@d ZAd!ZBd"ZCd#ZDd$ZEd%ZFd&ZGd'ZHd(ZId)ZJd*ZKd+ZLd,ZMd-ZNd.ZOd/ZPd0ZQd1ZRd2ZSd3ZTd4ZUd5ZVd6ZWd7ZXd8ZYd9ZZd:Z[d;Z\d<Z]d=Z^i dd>“d?d@“dAdB“dCdD“dEdF“dGdH“dIdJ“dKdL“dMdN“dOdP“dQdR“dSdT“dUdV“dWdX“dYdZ“d[d\“d]d^“Z_e_jÁ                  «       D � �ci c]  \  } }|| “Œ
 c}} Zai e4d d_dd_d`fda“e5d d_dd_d`fda“e4d d_d?d_d`fdb“e5d d_d?d_d`fdb“e4dd_dd_d`fdc“e5dd_dd_d`fdc“e4dd_d?d_d`fdd“e5dd_d?d_d`fdd“e4d d_dded`fdf“e5d d_dded`fdf“e4d d_d?ded`fdg“e5d d_d?ded`fdg“e4dd_dded`fdh“e5dd_dded`fdh“e4dd_d?ded`fdi“e5dd_d?ded`fdi“e4d d_ddjd`fdk“i e5d d_ddjd`fdk“e4d d_d?djd`fdl“e5d d_d?djd`fdl“e4dd_ddjd`fdm“e5dd_ddjd`fdm“e4dd_d?djd`fdn“e5dd_d?djd`fdn“e4d d_ddod`fdp“e5d d_ddod`fdp“e4d d_d?dod`fdq“e5d d_d?dod`fdq“e4dd_ddod`fdr“e5dd_ddod`fdr“e4ddeddod`fdr“e5ddeddod`fdr“e4dd_d?dod`fds“e5dd_d?dod`fds“¥i e4dd_ddtd`fdu“e4d d_ddvd`fdw“e4dd_ddvd`fdw“e5dd_ddvd`fdx“e4dd_d?dvd`fdy“e4ddeddvd`fdz“e5ddeddvd`fd{“e4d d|dd}d`fd~“e5d d|dd}d`fd“e4dd_dd}d`fd€“e4ddedd}d`fd�“e5ddedd}d`fd‚“e4dd|dd}d`fd~“e5dd|dd}d`fd“e4dd_ddƒd„fd…“e5dd_ddƒd„fd…“e4dd_ddƒd_fd†“¥i e5dd_ddƒd_fd†“e4dd_ddƒdefd‡“e5dd_ddƒdefd‡“e4d?d_ddˆd`fd‰“e5d?d_ddˆd`fd‰“e4d?d_d?dˆd`fdŠ“e5d?d_d?dˆd`fdŠ“e4d?d_dd‹d`fdŒ“e5d?d_dd‹d`fdŒ“e4d?d_dd‹d„fd�“e5d?d_dd‹d„fd�“e4d?d_ddŽd�fd�“e5d?d_ddŽd�fd�“e4d?d_dd‘d’fd““e5d?d_dd‘d’fd““e4d?d_dd‹d_fd”“e5d?d_dd‹d_fd”“¥i e4d?d_ddŽd•fd–“e5d?d_ddŽd•fd–“e4d?d_dd‘d—fd˜“e5d?d_dd‘d—fd˜“e4d?d_dd‹defdŒ“e5d?d_dd‹defdŒ“e4d?d_ddŽd™fdš“e5d?d_ddŽd™fdš“e4d?d_dd‘d›fdœ“e5d?d_dd‘d›fdœ“e4d?d_dd‹d�fdŒ“e5d?d_dd‹d�fdŒ“e4d?d_ddžd`fdŸ“e5d?d_ddžd`fd “e4d?d_dd¡d`fd¢“e5d?d_dd¡d`fd£“e4d?d_dd¡d„fd¤“¥i e5d?d_dd¡d„fd¥“e4d?d_dd¡d_fd¦“e5d?d_dd¡d_fd§“e4d?d_dd¡defd¢“e5d?d_dd¡defd£“e4dAd_dd_d`fd¨“e5dAd_dd_d`fd¨“e4dAd_d?d_d`fd©“e5dAd_d?d_d`fd©“e4dAd_dded`fdª“e5dAd_dded`fdª“e4dAd_d?ded`fd«“e5dAd_d?ded`fd«“e4dAd_ddjd`fd¬“e5dAd_ddjd`fd¬“e4dAd_d?djd`fd­“e5dAd_d?djd`fd­“¥i e4dAd_ddod`fd®“e5dAd_ddod`fd®“e4dAd_ddƒd„fd¯“e5dAd_ddƒd„fd¯“e4dAd_ddƒdefd°“e5dAd_ddƒdefd°“e4dAd_d?dod`fd±“e5dAd_d?dod`fd±“e4dEd_dd‹d`fd²“e5dEd_dd‹d`fd²“e4dEd_ddŽd„fd³“e5dEd_ddŽd„fd³“e4dEd_dd‘d�fd´“e5dEd_dd‘d�fd´“e4dEd_dd¡d`fdµ“e5dEd_dd¡d`fd¶“e4dGd_ddod`fdr“¥e5dGd_ddod`fdre4dGd_ddˆd`fd·e5dGd_ddˆd`fd·e4dKd_ddˆd`fd¸e5dKd_ddˆd`fd¸i¥Zb ecd¹„ ebD «       «      Zdg dº¢Zedìd»„Zf	 	 	 	 	 	 díd¼„Zg	 	 	 	 	 	 	 	 dîd¾„Zhi Zid¿ejdÀ<   i ZkdÁejdÂ<   dïdÃ„Zl G dÄ„ d½e«      ZmedÅeneogef   ZpdðdÆ„ZqdñdÇ„ZrdòdÈ„Zse&reetef   ZuneZu G dÉ„ dÅeu«      Zveiev_i        ekev_k         e%jÀ                  «       D ]:  \  ZwZxexjó                  dÊdË«      Zx ezevdÌex› �eiew   d   «        ezevdÍex› �ekew   «       Œ< [i[k[w[x G dÎ„ dÏev«      Z{e{Z| G dÐ„ dÑej2                  «      Z}i dÒdÒe4ddd_df“dÓdÓe4dddodf“dÔdÔe4dddƒd?f“dÕdÕe4dAddodf“dÖdÖe4dAddƒd?f“d×dØe4dd?d}df“dÙdÙe4dddvdf“dÚdÚe4dddvdf“dÛdÜe4ddAd}df“dÝdÝe4d?ddˆdf“dÞdÞe4d?dd‹d f“dßdße4d?dd‹d?f“dàdàe4dEdd‹df“dádáe4dGddˆdf“dâdâe4dKddˆdf“dãdãe5dddvdf“Z~dódä„Zdôdå„Z€ G dæ„ dçe�j                  «      Z‚dôdè„Zƒ e�j                  e}�j
                  e}ef«        e�j                  e}�j
                  e€«        e�j                  e}�j
                  eƒ«        e�j                  e}�j
                  dédêg«        e�j                  e}�j
                  dë«       yc c}} w )õé    )Úannotations>   ú	PIL._utilúPIL._binaryÚmathÚstructÚwarningsÚ	fractionsÚ	itertoolsN)ÚCallableÚMutableMapping)ÚFraction)ÚNumberÚRational)ÚIOÚAnyÚcasté   )ÚExifTagsÚImageÚ	ImageFileÚImageOpsÚImagePaletteÚTiffTags)Úi16be)Úi32be)ÚDeferredErrorÚis_path©ÚTYPESF)ÚIterator)ÚNoReturnÚSelf)ÚBufferÚIntegralLikeÚStrOrBytesPathé   s   IIs   MMéÿ   é   i  i  i  i  i
  i  é  i  i  i  i  i  i  i(  i-  i1  i2  i;  i=  i@  iB  iC  éD  iE  iJ  iR  iS  i[  i  i  i˜‚  i»ƒ  iI†  is‡  ii‡  i¼  i  i–Æ  i—Æ  Úrawé   Ú
tiff_ccitté   Úgroup3é   Úgroup4é   Útiff_lzwé   Ú	tiff_jpegé   Újpegé   Útiff_adobe_deflatei€  Útiff_raw_16i€  Úpackbitsi)€  Útiff_thunderscani²€  Útiff_deflateit‡  Útiff_sgilogiu‡  Útiff_sgilog24imˆ  ÚlzmaiPÃ  ÚzstdiQÃ  Úwebp©r   © )Ú1z1;I)rE   z1;IR)rE   rE   )rE   z1;R)r,   )ÚLzL;2I)rF   zL;2IR)rF   zL;2)rF   zL;2R)r0   )rF   zL;4I)rF   zL;4IR)rF   zL;4)rF   zL;4R)r8   )rF   zL;I)rF   zL;IR)rF   rF   )rF   zL;R)é   )úI;16zI;12)é   )rH   rH   )úI;16BrJ   )rH   zI;16R)ÚIzI;16S)rK   zI;16BS)r.   )é    )ÚFúF;32F)rM   zF;32BF)rK   zI;32N)rK   úI;32S)rK   zI;32BS)r8   r8   ©r   )rF   ÚLX)ÚLarR   )ÚLArS   )r8   r8   r8   )ÚRGBrT   )rT   zRGB;R)r8   r8   r8   r8   )ÚRGBArU   )rT   ÚRGBX)r8   r8   r8   r8   r8   )r   r   )rT   ÚRGBXX)r8   r8   r8   r8   r8   r8   )r   r   r   )rT   ÚRGBXXX)rU   ÚRGBa)r   r   )rU   ÚRGBaX)r   r   r   )rU   ÚRGBaXX)r,   r   )rU   ÚRGBAX)r,   r   r   )rU   ÚRGBAXX)iç  )rI   rI   rI   )rT   zRGB;16L)rT   zRGB;16B)rI   rI   rI   rI   )rU   zRGBA;16L)rU   zRGBA;16B)rT   zRGBX;16L)rT   zRGBX;16B)rU   zRGBa;16L)rU   zRGBa;16B)ÚPzP;1)r^   zP;1R)r^   zP;2)r^   zP;2R)r^   zP;4)r^   zP;4R)r^   r^   )r^   ÚPX)ÚPAr`   )r^   zP;R)ÚCMYKra   )ra   ÚCMYKX)ra   ÚCMYKXX)ra   zCMYK;16L)ra   zCMYK;16B)ÚYCbCrrd   )ÚLABre   c              #  ó8   K  — | ]  }t        |d    «      –— Œ y­w)r0   N)Úlen)Ú.0Úkey_tps     úU/var/www/html/metafoliadorv2/venv/lib/python3.12/site-packages/PIL/TiffImagePlugin.pyú	<genexpr>rk   !  s   è ø€ ÒA¨Vœ#˜f Q™iŸ.ÑAùs   ‚)s   MM *s   II* s   MM* s   II *s   MM +s   II+ c                ó>   — | j                  t        t        «      «      S ©N)Ú
startswithÚtupleÚPREFIXES©Úprefixs    rj   Ú_acceptrs   -  s   € Ø×ÑœU¤8›_Ó-Ð-ó    c                óx   — t        | «      dkD  }t        |rd| z  n| «      j                  |«      }|r|d d d…   S |S )Nr   éÿÿÿÿ)ÚabsÚIFDRationalÚlimit_rational)ÚvalÚmax_valÚinvÚn_ds       rj   Ú_limit_rationalr~   1  sC   € ô ˆc‹(�Q‰,€CÜ
¡�a˜#’g¨#Ó
.×
=Ñ
=¸gÓ
F€CÙˆ3‰t�ˆt‰9Ð$ Ð$rt   rx   c                ó
  — t        | «      }|j                  |j                  f}t        d„ |D «       «      |k  rt	        | t        |«      «      }t        d„ |D «       «      }t        |«      |kD  rt	        |d   |d   z  |«      }|S )Nc              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrm   ©Úfloat©rh   Úis     rj   rk   z)_limit_signed_rational.<locals>.<genexpr>?  s   è ø€ Ò
!˜Œ5��8Ñ
!ùó   ‚c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrm   r�   rƒ   s     rj   rk   z)_limit_signed_rational.<locals>.<genexpr>B  s   è ø€ Ò, 1”e˜A—hÑ,ùr…   r   r   )r   Ú	numeratorÚdenominatorÚminr~   rw   ro   Úmax)rz   r{   Úmin_valÚfracr}   Ú	n_d_floats         rj   Ú_limit_signed_rationalrŽ   9  s~   € ô �C‹=€DØ-1¯^©^¸T×=MÑ=MÐ-M€Cä
Ñ
!˜SÔ
!Ó! GÒ+Ü˜c¤3 w£<Ó0ˆäÑ,¨Ô,Ó,€IÜ
ˆ9ƒ~˜ÒÜ˜i¨™l¨Y°q©\Ñ9¸7ÓCˆà€Jrt   ú"dict[int, tuple[int, _LoaderFunc]]Ú_load_dispatchúdict[int, Callable[..., Any]]Ú_write_dispatchc                ó    ‡ — 	 	 	 	 	 	 dˆ fd„}|S )Nc                ó6   •—  t        | j                  ‰«      |Ž S rm   )ÚgetattrÚ_val)ÚselfÚargsÚops     €rj   Údelegatez_delegate.<locals>.delegateQ  s   ø€ ð &Œw�t—y‘y "Ó% tÐ,Ð,rt   )r—   rx   r˜   ztuple[float, ...]Úreturnzbool | float | FractionrD   )r™   rš   s   ` rj   Ú	_delegaterœ   P  s'   ø€ ð-Øð-Ø"3ð-à	 õ-ð
 €Ort   c                  óB  — e Zd ZdZ	 dZ	 d)	 	 	 	 	 d*d„Zed+d„«       Zed,d„«       Zd-d„Z	d.d„Z
d,d„Zd/d	„Zd0d
„Zd1d„Z	  ed«      Z ed«      Z ed«      Z ed«      Z ed«      Z ed«      Z ed«      Z ed«      Z ed«      Z ed«      Z ed«      Z ed«      Z ed«      Z ed«      Z ed«      Z ed«      Z ed«      Z  ed«      Z! ed«      Z" ed«      Z# ed «      Z$ ed!«      Z% ed"«      Z& ed#«      Z' ed$«      Z( ed%«      Z) ed&«      Z* ed'«      Z+y()2rx   zÀImplements a rational class where 0/0 is a legal value to match
    the in the wild use of exif rationals.

    e.g., DigitalZoomRatio - 0.00/0.00  indicates that no digital zoom was used
    )Ú
_numeratorÚ_denominatorr–   c                ó  — |  t        |t        «      r4|j                  | _        |j                  | _        |j                  | _        yt        |t        «      r#|j                  | _        |j                  | _        n&t        rt        d|«      | _        n|| _        || _        |dk(  rt        d«      | _        y|dk(  rt        |«      | _        yt        |«      |k(  rt        t        |«      |«      | _        yt        ||z  «      | _        y)z®
        :param value: either an integer numerator, a
        float/rational/other number, or an IFDRational
        :param denominator: Optional integer denominator
        Nr$   r   Únanr   )Ú
isinstancerx   r‡   rž   rˆ   rŸ   r–   r   ÚTYPE_CHECKINGr   r‚   Úint)r—   Úvaluerˆ   s      rj   Ú__init__zIFDRational.__init__g  sÐ   € ñ 	Ü�eœ[Ô)Ø#Ÿo™oˆDŒOØ %× 1Ñ 1ˆDÔØŸ
™
ˆDŒIØä�eœXÔ&Ø#Ÿo™oˆDŒOØ %× 1Ñ 1ˆDÕåÜ"& ~°uÓ"=�•à"'�”Ø +ˆDÔà˜!ÒÜ˜e›ˆD�IØ˜AÒÜ  ›ˆD�IÜ�‹Z˜5Ò Ü ¤ U£¨[Ó9ˆD�Iä  ¨Ñ!4Ó5ˆD�Irt   c                ó   — | j                   S rm   )rž   ©r—   s    rj   r‡   zIFDRational.numerator‰  s   € à�‰Ðrt   c                ó   — | j                   S rm   )rŸ   r¨   s    rj   rˆ   zIFDRational.denominator�  s   € à× Ñ Ð rt   c                óî   — | j                   dk(  r| j                  | j                   fS t        | j                  t        «      sJ ‚| j                  j                  |«      }|j                  |j                   fS )z…

        :param max_denominator: Integer, the maximum denominator value
        :returns: Tuple of (numerator, denominator)
        r   )rˆ   r‡   r¢   r–   r   Úlimit_denominator)r—   Úmax_denominatorÚfs      rj   ry   zIFDRational.limit_rational‘  sb   € ð ×Ñ˜qÒ Ø—>‘> 4×#3Ñ#3Ð3Ð3ä˜$Ÿ)™)¤XÔ.Ð.Ð.Ø�I‰I×'Ñ'¨Ó8ˆØ�{‰{˜AŸM™MÐ)Ð)rt   c                ó>   — t        t        | j                  «      «      S rm   )Ústrr‚   r–   r¨   s    rj   Ú__repr__zIFDRational.__repr__Ÿ  s   € Ü”5˜Ÿ™Ó#Ó$Ð$rt   c                ó6   — | j                   j                  «       S rm   )r–   Ú__hash__r¨   s    rj   r²   zIFDRational.__hash__¢  s   € Ø�y‰y×!Ñ!Ó#Ð#rt   c                ó’   — | j                   }t        |t        «      r|j                   }t        |t        «      rt        |«      }||k(  S rm   )r–   r¢   rx   r‚   )r—   Úotherrz   s      rj   Ú__eq__zIFDRational.__eq__¥  s;   € Ø�i‰iˆÜ�eœ[Ô)Ø—J‘JˆEÜ�eœUÔ#Ü˜“*ˆCØ�e‰|Ðrt   c                óH   — | j                   | j                  | j                  gS rm   )r–   rž   rŸ   r¨   s    rj   Ú__getstate__zIFDRational.__getstate__­  s   € Ø—	‘	˜4Ÿ?™?¨D×,=Ñ,=Ð>Ð>rt   c                óê   — t         j                  | d«       |\  }}}t        |t        t        f«      sJ ‚|| _        t        rt        d|«      | _        n|| _        t        |t        «      sJ ‚|| _
        y )Nr   r$   )rx   r¦   r¢   r‚   r   r–   r£   r   rž   r¤   rŸ   )r—   Ústater–   rž   rŸ   s        rj   Ú__setstate__zIFDRational.__setstate__°  sj   € Ü×Ñ˜T 1Ô%Ø).Ñ&ˆˆj˜,Ü˜$¤¬Ð 1Ô2Ð2Ð2ØˆŒ	ÝÜ" >°:Ó>ˆD�Oà(ˆDŒOÜ˜,¬Ô,Ð,Ð,Ø(ˆÕrt   Ú__add__Ú__radd__Ú__sub__Ú__rsub__Ú__mul__Ú__rmul__Ú__truediv__Ú__rtruediv__Ú__floordiv__Ú__rfloordiv__Ú__mod__Ú__rmod__Ú__pow__Ú__rpow__Ú__pos__Ú__neg__Ú__abs__Ú	__trunc__Ú__lt__Ú__gt__Ú__le__Ú__ge__Ú__bool__Ú__ceil__Ú	__floor__Ú	__round__Ú	__float__Ú__int__NrC   )r¥   úfloat | Fraction | IFDRationalrˆ   r¤   r›   ÚNone)r›   r$   ©r›   r¤   )r¬   r¤   r›   ztuple[IntegralLike, int]©r›   r¯   )r´   Úobjectr›   Úbool)r›   ú%list[float | Fraction | IntegralLike])r¹   rÝ   r›   rØ   ),Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r¦   Úpropertyr‡   rˆ   ry   r°   r²   rµ   r·   rº   rœ   r»   r¼   r½   r¾   r¿   rÀ   rÁ   rÂ   rÃ   rÄ   rÅ   rÆ   rÇ   rÈ   rÉ   rÊ   rË   rÌ   rÍ   rÎ   rÏ   rÐ   rÑ   rÒ   rÓ   rÔ   rÕ   rÖ   rD   rt   rj   rx   rx   Y  s�  „ ñðð
 7€Ið IJð 6Ø3ð 6ØBEð 6à	ó 6ðD òó ðð ò!ó ð!ó*ó%ó$óó?ó
)ðñ ˜	Ó"€GÙ˜Ó$€HÙ˜	Ó"€GÙ˜Ó$€HÙ˜	Ó"€GÙ˜Ó$€HÙ˜MÓ*€KÙ˜^Ó,€LÙ˜^Ó,€LÙ˜oÓ.€MÙ˜	Ó"€GÙ˜Ó$€HÙ˜	Ó"€GÙ˜Ó$€HÙ˜	Ó"€GÙ˜	Ó"€GÙ˜	Ó"€GÙ˜+Ó&€IÙ�xÓ €FÙ�xÓ €FÙ�xÓ €FÙ�xÓ €FÙ˜Ó$€HÙ˜Ó$€HÙ˜+Ó&€IÙ˜+Ó&€IÙ˜+Ó&€IÙ˜	Ó"�Grt   ÚImageFileDirectory_v2c                ó   ‡ ‡— dˆ ˆfd„}|S )Nc                ó¤   •— ddl m} | j                  j                  d«      r"| j                  dd  j	                  dd«      |‰<   ‰| ft
        ‰<   | S )Nr   r   Úload_r2   Ú_ú )r   r   rÞ   rn   Úreplacer�   )Úfuncr   ÚidxÚsizes     €€rj   Ú	decoratorz#_register_loader.<locals>.decoratoræ  sL   ø€ Ý#à�=‰=×#Ñ# GÔ,ØŸ™ q rÐ*×2Ñ2°3¸Ó<ˆE�#‰JØ" D˜jŒ�sÑØˆrt   )rë   Ú_LoaderFuncr›   rï   rD   )rì   rí   rî   s   `` rj   Ú_register_loaderrð   å  s   ù€ öð Ðrt   c                ó   ‡ — dˆ fd„}|S )Nc                ó   •— | t         ‰<   | S rm   )r’   )rë   rì   s    €rj   rî   z#_register_writer.<locals>.decoratorò  s   ø€ Ø#Œ˜ÑØˆrt   )rë   úCallable[..., Any]r›   ró   rD   )rì   rî   s   ` rj   Ú_register_writerrô   ñ  s   ø€ õð Ðrt   c                ó¨   ‡‡— ddl m} | \  }Š}|||<   t        j                  d‰› �«      Š	 d	 	 	 	 	 	 	 dˆˆfd„}‰|ft        |<   ˆfd„t
        |<   y )Nr   r   ú=c                óH   •— | j                  t        |«      ‰z  › ‰› �|«      S rm   )Ú_unpackrg   )r—   ÚdataÚ
legacy_apiÚfmtrí   s      €€rj   Úbasic_handlerz&_register_basic.<locals>.basic_handler   s)   ø€ ð �|‰|œs 4›y¨DÑ0Ð1°#°Ð7¸Ó>Ð>rt   c                ó<   •‡ — dj                  ˆˆ fd„|D «       «      S )Nrt   c              3  óB   •K  — | ]  }‰j                  ‰|«      –— Œ y ­wrm   )Ú_pack)rh   r¥   rû   r—   s     €€rj   rk   z4_register_basic.<locals>.<lambda>.<locals>.<genexpr>  s   øè ø€ Ò<¨E�—‘˜C ×'Ñ<ùs   ƒ©Újoin)r—   Úvaluesrû   s   ` €rj   ú<lambda>z!_register_basic.<locals>.<lambda>  s   ù€ Ø�‰Ô<°VÔ<Ó<ð rt   ©T)r—   rä   rù   Úbytesrú   rÜ   r›   útuple[Any, ...])r   r   r   Úcalcsizer�   r’   )Úidx_fmt_namer   rì   Únamerü   rû   rí   s        @@rj   Ú_register_basicr
  ù  sw   ù€ Ýà!�N€CˆˆdØ€Eˆ#�JÜ�?‰?˜Q˜s˜e˜9Ó%€Dð FJð?Ø#ð?Ø+0ð?Ø>Bð?à	ö?ð
  Ð-„N�3Ñó„O�CÒrt   c                  ó¤  — e Zd ZU dZi Zded<   i Zded<   	 	 	 d=	 	 	 	 	 	 	 d>d„Z ed„ «      Z	 ed	„ «      Z
ed?d
„«       Zej                  d@d„«       ZdAd„ZdBd„ZdCd„ZdDd„ZdEd„ZdFd„ZdGd„ZdHd„ZdId„ZdJd„ZdKd„ZdLd„Z e eeej:                  ddfej<                  ddfej>                  ddfej@                  ddfejB                  d d!fejD                  d"d#fejF                  d$d%fejH                  ddfejJ                  d&d'fg	«      «        e&d(d(«      dMdNd)„«       Z' e(d(«      dOd*„«       Z) e&d+d(«      dMdPd,„«       Z* e(d+«      dQd-„«       Z+ e&d.d/«      	 dM	 	 	 	 	 dRd0„«       Z, e(d.«      dSd1„«       Z- e&d2d(«      dMdNd3„«       Z. e(d2«      dTd4„«       Z/ e&d5d/«      	 dM	 	 	 	 	 dRd6„«       Z0 e(d5«      dSd7„«       Z1dUd8„Z2dVd9„Z3dWd:„Z4dXdYd;„Z5dZd<„Z6y)[rä   a  This class represents a TIFF tag directory.  To speed things up, we
    don't decode tags unless they're asked for.

    Exposes a dictionary interface of the tags in the directory::

        ifd = ImageFileDirectory_v2()
        ifd[key] = 'Some Data'
        ifd.tagtype[key] = TiffTags.ASCII
        print(ifd[key])
        'Some Data'

    Individual values are returned as the strings or numbers, sequences are
    returned as tuples of the values.

    The tiff metadata type of each item is stored in a dictionary of
    tag types in
    :attr:`~PIL.TiffImagePlugin.ImageFileDirectory_v2.tagtype`. The types
    are read from a tiff file, guessed from the type added, or added
    manually.

    Data Structures:

        * ``self.tagtype = {}``

          * Key: numerical TIFF tag number
          * Value: integer corresponding to the data type from
            :py:data:`.TiffTags.TYPES`

          .. versionadded:: 3.0.0

    'Internal' data structures:

        * ``self._tags_v2 = {}``

          * Key: numerical TIFF tag number
          * Value: decoded data, as tuple for multiple values

        * ``self._tagdata = {}``

          * Key: numerical TIFF tag number
          * Value: undecoded byte string from file

        * ``self._tags_v1 = {}``

          * Key: numerical TIFF tag number
          * Value: decoded data in the v1 format

    Tags will be found in the private attributes ``self._tagdata``, and in
    ``self._tags_v2`` once decoded.

    ``self.legacy_api`` is a value for internal use, and shouldn't be changed
    from outside code. In cooperation with
    :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1`, if ``legacy_api``
    is true, then decoded tags will be populated into both ``_tags_v1`` and
    ``_tags_v2``. ``_tags_v2`` will be used if this IFD is used in the TIFF
    save routine. Tags should be read from ``_tags_v1`` if
    ``legacy_api == true``.

    r�   r�   r‘   r’   Nc                óæ  — t        |«      sdt        |«      › d�}t        |«      ‚|�|n|dd | _        | j                  t        k(  rd| _        n(| j                  t        k(  rd| _        nd}t        |«      ‚|d   dk(  | _        || _        i | _	        	 | j                  «        d| _        | j                  r| j                  d	|d
d «      d   n| j                  d|dd «      d   | _        d| _        y)a—  Initialize an ImageFileDirectory.

        To construct an ImageFileDirectory from a real file, pass the 8-byte
        magic header to the constructor.  To only set the endianness, pass it
        as the 'prefix' keyword argument.

        :param ifh: One of the accepted magic headers (cf. PREFIXES); also sets
              endianness.
        :param prefix: Override the endianness of the file.
        znot a TIFF file (header z not valid)Nr,   ú>ú<znot a TIFF IFDé+   ÚQr8   r   rF   r0   F)rs   ÚreprÚSyntaxErrorÚ_prefixÚMMÚ_endianÚIIÚ_bigtiffÚgroupÚtagtypeÚresetÚ_tag_data_limitrø   ÚnextÚ_legacy_api)r—   Úifhrr   r  Úmsgs        rj   r¦   zImageFileDirectory_v2.__init__Q  só   € ô  �sŒ|Ø,¬T°#«Y¨K°{ÐCˆCÜ˜cÓ"Ð"Ø!'Ð!3‘v¸¸R¸a¸ˆŒØ�<‰<œ2ÒØˆD�LØ�\‰\œRÒØˆD�Là"ˆCÜ˜cÓ"Ð"Ø˜A™ "™ˆŒØˆŒ
Ø')ˆŒØ'Ø�
‰
Œð ,0ˆÔð �}Š}ð �L‰L˜˜c ! "˜gÓ& qÒ)à—‘˜c 3 q r 7Ó+¨AÑ.ð 	Œ	ð
 !ˆÕrt   c                ó   — | j                   S rm   )r  r¨   s    rj   r  zImageFileDirectory_v2.<lambda>|  ó
   €  4§<¡<€ rt   c                ó   — | j                   S rm   )Ú_offsetr¨   s    rj   r  zImageFileDirectory_v2.<lambda>}  r!  rt   c                ó   — | j                   S rm   )r  r¨   s    rj   rú   z ImageFileDirectory_v2.legacy_api  s   € à×ÑÐrt   c                ó   — d}t        |«      ‚)Nz"Not allowing setting of legacy api)Ú	Exception)r—   r¥   r  s      rj   rú   z ImageFileDirectory_v2.legacy_apiƒ  s   € à2ˆÜ˜‹nÐrt   c                óX   — i | _         i | _        i | _        i | _        d | _        d | _        y rm   )Ú_tags_v1Ú_tags_v2Ú_tagdatar  Ú_nextr#  r¨   s    rj   r  zImageFileDirectory_v2.resetˆ  s,   € Ø(*ˆŒØ(*ˆŒØ*,ˆŒØˆŒØˆŒ
Ø#'ˆ�rt   c                ó*   — t        t        | «      «      S rm   )r¯   Údictr¨   s    rj   Ú__str__zImageFileDirectory_v2.__str__�  s   € Ü”4˜“:‹Ðrt   c                ó¦   — | j                  «       D ��ci c]0  \  }}t        j                  || j                  «      j                  |“Œ2 c}}S c c}}w )z�
        :returns: dict of name|key: value

        Returns the complete tag dictionary, with named tags where possible.
        )Úitemsr   Úlookupr  r	  )r—   Úcoder¥   s      rj   ÚnamedzImageFileDirectory_v2.named“  sH   € ð  $Ÿz™z›|÷
á��eô �O‰O˜D $§*¡*Ó-×2Ñ2°EÑ9ó
ð 	
ùó 
s   ”5Ac                ój   — t        t        | j                  «      t        | j                  «      z  «      S rm   )rg   Úsetr*  r)  r¨   s    rj   Ú__len__zImageFileDirectory_v2.__len__ž  ó$   € Ü”3�t—}‘}Ó%¬¨D¯M©MÓ(:Ñ:Ó;Ð;rt   c                ó  — || j                   vrG| j                  |   }| j                  |   }| j                  |   \  }} || || j                  «      | |<   | j                   |   }| j                  rt        |t        t        f«      s|f}|S rm   )r)  r*  r  r�   rú   r¢   ro   r  )r—   Útagrù   Útyprí   Úhandlerrz   s          rj   Ú__getitem__z!ImageFileDirectory_v2.__getitem__¡  s‚   € Ø�d—m‘mÑ#Ø—=‘= Ñ%ˆDØ—,‘,˜sÑ#ˆCØ ×/Ñ/°Ñ4‰MˆD�'Ù  d¨D¯O©OÓ<ˆD�‰IØ�m‰m˜CÑ ˆØ�?Š?¤:¨c´E¼5°>Ô#BØ�&ˆCØˆ
rt   c                ó>   — || j                   v xs || j                  v S rm   )r)  r*  ©r—   r9  s     rj   Ú__contains__z"ImageFileDirectory_v2.__contains__¬  ó   € Ø�d—m‘mÐ#Ò; s¨d¯m©mÐ';Ð;rt   c                ó>   — | j                  ||| j                  «       y rm   )Ú_setitemrú   )r—   r9  r¥   s      rj   Ú__setitem__z!ImageFileDirectory_v2.__setitem__¯  s   € Ø�‰�c˜5 $§/¡/Õ2rt   c           	     óŽ  ‡— t         t        t        f}t        j                  || j
                  «      Št        ||«      r|gn|}|| j                  v�r‰j                  r‰j                  | j                  |<   �nît        j                  | j                  |<   t        d„ |D «       «      rT|D ]0  }|t        d«      k  sŒt        j                  | j                  |<    �n‹ t        j                  | j                  |<   �nkt        d„ |D «       «      rÊd}d}d}	|D ]A  }t        |t        «      sJ ‚|rd|cxk  rdk  sn d}|rd|cxk  rdk  sn d}|	sŒ:|dk  sŒ@d}	ŒC |rt        j                  | j                  |<   ní|rt        j                   | j                  |<   nÍ|	rt        j"                  | j                  |<   n­t        j$                  | j                  |<   n�t        d	„ |D «       «      rt        j&                  | j                  |<   n_t        d
„ |D «       «      rt        j(                  | j                  |<   n/t        d„ |D «       «      rt        j*                  | j                  |<   | j                  |   t        j                  k(  r2|D �cg c]&  }t        |t        «      r|j-                  dd«      n|‘Œ( }}nJ| j                  |   t        j                  k(  r*|D �cg c]  }t        |t        «      rt/        |«      n|‘Œ! }}| j                  |   t        j"                  k(  xr t        |t0        «      }
|
st3        ˆfd„|D «       «      }|r| j4                  n| j6                  }|
sˆ‰j8                  dk(  s<| j                  |   t        j*                  k(  s‰j8                  €Mt;        |«      dk(  r?|s=|r2| j                  |   t        j                  t        j                  fv r|f}	 |\  ||<   y |||<   y c c}w c c}w # t<        $ r; |t>        k7  r/tA        jB                  d|› dt;        |«      › d�«       |d   ||<   Y y Y y w xY w)Nc              3  ó<   K  — | ]  }t        |t        «      –— Œ y ­wrm   )r¢   rx   ©rh   Úvs     rj   rk   z1ImageFileDirectory_v2._setitem.<locals>.<genexpr>½  s   è ø€ ÒB°a”z !¤[×1ÑBùó   ‚r   c              3  ó<   K  — | ]  }t        |t        «      –— Œ y ­wrm   )r¢   r¤   rF  s     rj   rk   z1ImageFileDirectory_v2._setitem.<locals>.<genexpr>Ä  ó   è ø€ Ò<°œ A¤s×+Ñ<ùrH  Tr&   Fi €ÿÿi €  c              3  ó<   K  — | ]  }t        |t        «      –— Œ y ­wrm   )r¢   r‚   rF  s     rj   rk   z1ImageFileDirectory_v2._setitem.<locals>.<genexpr>Ø  ó   è ø€ Ò>°!œ A¤u×-Ñ>ùrH  c              3  ó<   K  — | ]  }t        |t        «      –— Œ y ­wrm   )r¢   r¯   rF  s     rj   rk   z1ImageFileDirectory_v2._setitem.<locals>.<genexpr>Ú  rJ  rH  c              3  ó<   K  — | ]  }t        |t        «      –— Œ y ­wrm   )r¢   r  rF  s     rj   rk   z1ImageFileDirectory_v2._setitem.<locals>.<genexpr>Ü  rL  rH  Úasciirê   c              3  ód   •K  — | ]'  }t        |t        «      r‰j                  |«      n|–— Œ) y ­wrm   )r¢   r¯   Úcvt_enum)rh   r¥   Úinfos     €rj   rk   z1ImageFileDirectory_v2._setitem.<locals>.<genexpr>é  s0   øè ø€ ò àô )3°5¼#Ô(>�—‘˜eÔ$ÀEÓIñùs   ƒ-0r   zMetadata Warning, tag z had too many entries: z, expected 1)"r   r  r¯   r   r1  r  r¢   r  ÚtypeÚ	UNDEFINEDÚallrx   ÚSIGNED_RATIONALÚRATIONALr¤   ÚSHORTÚSIGNED_SHORTÚLONGÚSIGNED_LONGÚDOUBLEÚASCIIÚBYTEÚencoder‚   r-  ro   r(  r)  Úlengthrg   Ú
ValueErrorÚPHOTOMETRIC_INTERPRETATIONr   Úwarn)r—   r9  r¥   rú   Ú	basetypesr  rG  ÚshortÚsigned_shortÚlongÚis_ifdÚdestrR  s               @rj   rB  zImageFileDirectory_v2._setitem²  sµ  ø€ ÜœU¤CÐ(ˆ	ä�‰˜s D§J¡JÓ/ˆÜ& u¨iÔ8�%‘¸eˆà�d—l‘lÒ"Ø�yŠyØ$(§I¡I�—‘˜SÓ!ä$,×$6Ñ$6�—‘˜SÑ!ÜÑB¸6ÔBÔBØ#ò >˜Øœ{¨1›~Ó-Ü08×0HÑ0H˜DŸL™L¨Ñ-Ú!ð>ô
 -5×,=Ñ,=˜Ÿ™ SÓ)ÜÑ<°VÔ<Ô<Ø �EØ#'�LØ�DØ#ò )˜Ü)¨!¬SÔ1Ð1Ð1Ù ¨!¨q¬.°5¬.Ø$)˜EÙ'°¸AÔ1EÀÔ1EØ+0˜LÚ A¨£EØ#(™Dð)ñ Ü,4¯N©N˜Ÿ™ SÒ)Ù%Ü,4×,AÑ,A˜Ÿ™ SÒ)ÙÜ,4¯M©M˜Ÿ™ SÒ)ä,4×,@Ñ,@˜Ÿ™ SÒ)ÜÑ>°vÔ>Ô>Ü(0¯©�D—L‘L Ò%ÜÑ<°VÔ<Ô<Ü(0¯©�D—L‘L Ò%ÜÑ>°vÔ>Ô>Ü(0¯©�D—L‘L Ñ%à�<‰<˜Ñ¤× 2Ñ 2Ò2ð  öàô 1;¸1¼cÔ0B�—‘˜ )Ô,ÈÑIðˆFñ ð �\‰\˜#Ñ¤(×"3Ñ"3Ò3ØEKÖLÀ¤*¨Q´Ô"4”e˜A”h¸!Ñ;ÐLˆFÐLà—‘˜cÑ"¤h§m¡mÑ3ÒP¼
À6Ì4Ó8PˆÙÜó à#ôó ˆFñ
 !+ˆt�}Š}°·±ˆñ Ø�[‰[˜AÒØ�|‰|˜CÑ ¤H§M¡MÒ1Ø—‘Ð#¬¨F«°qÒ(8Áñ ˜dŸl™l¨3Ñ/Ü×!Ñ!Ü×(Ñ(ð4ñ ð !˜�ð	*Ø%‘��c’ð ˆD�ŠIùò]ùò
 Møô: ò *àÔ4Ò4Ü—M‘MØ0°°Ð5LÜ˜v›;˜- |ð5ôð !' q¡	�D˜“Iñ 5ð*ús   Ê+O6Ë$O;Ï(P  Ð ?QÑQc                ó¬   — | j                   j                  |d «       | j                  j                  |d «       | j                  j                  |d «       y rm   )r)  Úpopr(  r*  r>  s     rj   Ú__delitem__z!ImageFileDirectory_v2.__delitem__  s>   € Ø�‰×Ñ˜#˜tÔ$Ø�‰×Ñ˜#˜tÔ$Ø�‰×Ñ˜#˜tÕ$rt   c                ój   — t        t        | j                  «      t        | j                  «      z  «      S rm   )Úiterr5  r*  r)  r¨   s    rj   Ú__iter__zImageFileDirectory_v2.__iter__  ó$   € Ü”C˜Ÿ™Ó&¬¨T¯]©]Ó);Ñ;Ó<Ð<rt   c                óH   — t        j                  | j                  |z   |«      S rm   )r   Úunpackr  )r—   rû   rù   s      rj   rø   zImageFileDirectory_v2._unpack  s   € Ü�}‰}˜TŸ\™\¨CÑ/°Ó6Ð6rt   c                óH   — t        j                  | j                  |z   g|¢­Ž S rm   )r   Úpackr  )r—   rû   r  s      rj   rÿ   zImageFileDirectory_v2._pack  s   € Ü�{‰{˜4Ÿ<™<¨#Ñ-Ð7°Ò7Ð7rt   ÚHre  rF   rg  Úbzsigned byteÚhzsigned shortÚlzsigned longr­   r‚   ÚdÚdoubler  Úlong8r   c                ó   — |S rm   rD   ©r—   rù   rú   s      rj   Ú	load_bytezImageFileDirectory_v2.load_byte/  ó   € àˆrt   c                ót   — t        |t        «      rt        |«      }t        |t        «      rt        |f«      }|S rm   )r¢   rx   r¤   r  ©r—   rù   s     rj   Ú
write_bytez ImageFileDirectory_v2.write_byte3  s/   € ä�dœKÔ(Ü�t“9ˆDÜ�dœCÔ Ü˜$˜“>ˆDØˆrt   r,   c                óR   — |j                  d«      r|d d }|j                  dd«      S )Nó    rv   zlatin-1rê   )ÚendswithÚdecoder}  s      rj   Úload_stringz!ImageFileDirectory_v2.load_string;  s*   € à�=‰=˜ÔØ˜˜�9ˆDØ�{‰{˜9 iÓ0Ð0rt   c                ó†   — t        |t        «      rt        |«      }t        |t        «      s|j	                  dd«      }|dz   S )NrO  rê   r„  )r¢   r¤   r¯   r  r_  ©r—   r¥   s     rj   Úwrite_stringz"ImageFileDirectory_v2.write_stringA  s;   € ô �eœSÔ!Ü˜“JˆEÜ˜%¤Ô'Ø—L‘L ¨)Ó4ˆEØ�u‰}Ðrt   r2   r8   c           
     ó¨   ‡‡— | j                  t        |«      dz  › d�|«      }dˆfd„Št        ˆfd„t        |d d d…   |dd d…   «      D «       «      S )Nr0   rF   c                ó(   •— ‰r| |fS t        | |«      S rm   ©rx   ©Úarv  rú   s     €rj   Úcombinez4ImageFileDirectory_v2.load_rational.<locals>.combineP  ó   ø€ Ù'�A�q�6Ð>¬[¸¸AÓ->Ð>rt   c              3  ó6   •K  — | ]  \  }} ‰||«      –— Œ y ­wrm   rD   ©rh   ÚnumÚdenomr�  s      €rj   rk   z6ImageFileDirectory_v2.load_rational.<locals>.<genexpr>S  ó   øè ø€ ÒV©Z¨S°%‘W˜S %×(ÑVùó   ƒr,   r   ©r�  r¤   rv  r¤   r›   ztuple[int, int] | IFDRational©rø   rg   ro   Úzip©r—   rù   rú   Úvalsr�  s     ` @rj   Úload_rationalz#ImageFileDirectory_v2.load_rationalJ  óW   ù€ ð �|‰|œs 4›y¨A™~Ð.¨aÐ0°$Ó7ˆõ	?ô ÓV¼3¸tÁCÀaÀC¹yÈ$ÈqÈtÐRSÈtÉ*Ó;UÔVÓVÐVrt   c                ó8   ‡ — dj                  ˆ fd„|D «       «      S )Nrt   c              3  óX   •K  — | ]!  } ‰j                   d gt        |d«      ¢­Ž –— Œ# y­w)Ú2Ll   ÿÿ N)rÿ   r~   ©rh   rŒ   r—   s     €rj   rk   z7ImageFileDirectory_v2.write_rational.<locals>.<genexpr>W  s-   øè ø€ ò 
ØDHˆJˆD�J‰J�tÐ?œo¨d°IÓ>Ö?ñ
ùs   ƒ'*r   ©r—   r  s   ` rj   Úwrite_rationalz$ImageFileDirectory_v2.write_rationalU  s!   ø€ à�x‰xó 
ØLRô
ó 
ð 	
rt   r6   c                ó   — |S rm   rD   r}  s      rj   Úload_undefinedz$ImageFileDirectory_v2.load_undefined[  r  rt   c                ó’   — t        |t        «      rt        |«      }t        |t        «      rt        |«      j	                  dd«      }|S )NrO  rê   )r¢   rx   r¤   r¯   r_  r‰  s     rj   Úwrite_undefinedz%ImageFileDirectory_v2.write_undefined_  s:   € ä�eœ[Ô)Ü˜“JˆEÜ�eœSÔ!Ü˜“J×%Ñ% g¨yÓ9ˆEØˆrt   é
   c           
     ó¨   ‡‡— | j                  t        |«      dz  › d�|«      }dˆfd„Št        ˆfd„t        |d d d…   |dd d…   «      D «       «      S )Nr0   rx  c                ó(   •— ‰r| |fS t        | |«      S rm   r�  rŽ  s     €rj   r�  z;ImageFileDirectory_v2.load_signed_rational.<locals>.combinem  r‘  rt   c              3  ó6   •K  — | ]  \  }} ‰||«      –— Œ y ­wrm   rD   r“  s      €rj   rk   z=ImageFileDirectory_v2.load_signed_rational.<locals>.<genexpr>p  r–  r—  r,   r   r˜  r™  r›  s     ` @rj   Úload_signed_rationalz*ImageFileDirectory_v2.load_signed_rationalg  rž  rt   c                ó8   ‡ — dj                  ˆ fd„|D «       «      S )Nrt   c           	   3  óZ   •K  — | ]"  } ‰j                   d gt        |dd«      ¢­Ž –— Œ$ y­w)Ú2liÿÿÿi   €N)rÿ   rŽ   r¢  s     €rj   rk   z>ImageFileDirectory_v2.write_signed_rational.<locals>.<genexpr>t  s3   øè ø€ ò 
àð ˆD�J‰J�tÐPÔ4°T¸9ÀhÓOÖPñ
ùs   ƒ(+r   r£  s   ` rj   Úwrite_signed_rationalz+ImageFileDirectory_v2.write_signed_rationalr  s!   ø€ à�x‰xó 
àô
ó 
ð 	
rt   c                ó~   — |j                  |«      }t        |«      |k7  rd|› dt        |«      › d�}t        |«      ‚|S )Nz&Corrupt EXIF data.  Expecting to read ú bytes but only got z. )Úreadrg   ÚOSError)r—   Úfprí   Úretr  s        rj   Ú_ensure_readz"ImageFileDirectory_v2._ensure_ready  sN   € Ø�g‰g�d‹mˆÜˆs‹8�tÒð%Ø%) FÐ*>¼sÀ3»x¸jÈðLð ô ˜#“,ÐØˆ
rt   c           
     ó2  — | j                  «        |j                  «       | _        |j                  dt        j
                  «       |j                  «       }|j                  | j                  «       | j                  �t        || j                  «      }d| _        	 | j                  r"| j                  d| j                  |d«      «      n!| j                  d| j                  |d«      «      d   }d}t        |«      D �]g  }| j                  r"| j                  d| j                  |d«      «      n!| j                  d| j                  |d	«      «      \  }}}}	|| j                  v rŒht        j                  || j                   «      j"                  }
t%        j&                  |d
«      }d|
› d|› d|› d|› d�	}	 | j(                  |   \  }}||z  }|| j                  rdndkD  rË|j                  «       }| j                  | j                  rdnd|	«      \  }|d|› d|› �z  }|dk\  rt1        j2                  d«       �Œ;||z  }||kD  rt1        j2                  d|› �«       �Œ_| xj                  |z  c_        |j                  |«       t5        j6                  ||«      }	|j                  |«       n|	d | }	t9        |	«      |k7  r>t1        j2                  d|› dt9        |	«      › d|› �«       t,        j/                  |«       �Œþ|	st,        j/                  |«       �Œ|	| j                  |<   || j:                  |<   |dz  }||dkD  rd|› d�n
t=        |	«      z  }t,        j/                  |«       �Œj | j                  r"| j                  d| j                  |d«      «      n!| j                  d| j                  |d«      «      \  | _        y # t*        $ r t,        j/                  d||«       Y �Œæw xY w# t@        $ r(}t1        j2                  tC        |«      «       Y d }~y d }~ww xY w)Nr   r  r8   ru  r,   ÚHHQ8sé   ÚHHL4srG   Úunknownztag: ú (ú
) - type: ú)z%s - unsupported type %sr0   rF   z Tag Location: z - Data Location: ì            zTag offset too largez(Tag data larger than file. Skipping tag z/Possibly corrupt EXIF data.  Expecting to read r³  z. Skipping tag z
 - value: rL   ú<table: ú bytes>)"r  Útellr#  ÚseekÚioÚSEEK_ENDr  r‰   Ú_tag_data_sizer  rø   r¸  Úranger*  r   r1  r  r	  r   Úgetr�   ÚKeyErrorÚloggerÚdebugr   rc  r   Ú
_safe_readrg   r  r  r  rµ  r¯   )r—   r¶  ÚlimitÚ	tag_countÚ
total_sizer„   r9  r:  Úcountrù   ÚtagnameÚtypnamer  Ú	unit_sizer;  rí   ÚhereÚoffsets                     rj   ÚloadzImageFileDirectory_v2.loadƒ  sÃ  € Ø�
‰
ŒØ—w‘w“yˆŒØ
�‰�”2—;‘;ÔØ—‘“	ˆØ
�‰�—‘ÔØ×ÑÐ+Ü˜˜t×3Ñ3Ó4ˆEØˆÔðJ	ð —=’=ð —‘˜S $×"3Ñ"3°B¸Ó":Ô;à—\‘\ # t×'8Ñ'8¸¸QÓ'?Ó@Øñ	ˆIð
 ˆJÜ˜9Ó%ó :"�ð —}’}ð —L‘L ¨$×*;Ñ*;¸BÀÓ*CÔDàŸ™ g¨t×/@Ñ/@ÀÀRÓ/HÓIñ &��S˜% ð
 ˜$Ÿ-™-Ñ'Øä"Ÿ/™/¨#¨t¯z©zÓ:×?Ñ?�ÜŸ)™) C¨Ó3�Ø˜g˜Y b¨¨¨Z¸°yÀÀ3À%ÀqÐI�ðØ)-×)<Ñ)<¸SÑ)AÑ&�I˜wð ˜yÑ(�Ø §¢™1°1Ò5ØŸ7™7›9�DØ $§¡°D·M²M©SÀsÈDÓ Q‘I�VØ˜_¨T¨FÐ2DÀVÀHÐMÑM�CØ ’Ü Ÿ™Ð&<Ô=Ù ð  $Ñ&�JØ! EÒ)Ü Ÿ™Ð(PÐQTÐPUÐ&VÔWÙ Ø×'Ò'¨4Ñ/Õ'Ø—G‘G˜F”OÜ$×/Ñ/°°DÓ9�DØ—G‘G˜D•Mà  ˜;�Dä�t“9 Ò$Ü—M‘Mð-Ø-1¨FÐ2FÄsÈ4ÃyÀkð R)Ø),¨ð/ôô
 —L‘L Ô%ÙáÜ—L‘L Ô%Ùà%)�—‘˜cÑ"Ø$'�—‘˜SÑ!à�|Ñ#�Ø°4¸"²9˜ $  wÑ/Ä$ÀtÃ*ÑL�ä—‘˜SÖ!ðu:"ð| —=’=ð —‘˜S $×"3Ñ"3°B¸Ó":Ô;à—\‘\ # t×'8Ñ'8¸¸QÓ'?Ó@ñ ˆT�Yøô[  ò Ü—L‘LÐ!;¸SÀ#ÔFÚðûôd ò 	Ü�M‰Mœ#˜c›(Ô#Üûð	ús>   ÂDO% Æ3N>ÇG8O% Î> O"ÏO% Ï!O"Ï"O% Ï%	PÏ.PÐPc                ó  — | j                   | j                  d| j                  rdnd«      z   }| j                  r|| j                  ddd«      z  }|| j                  r| j                  dd«      z  }|S | j                  d	d«      z  }|S )
Nru  r  é*   ÚHHr8   r   r  rI   rF   )r  rÿ   r  ©r—   r  s     rj   Ú_get_ifhzImageFileDirectory_v2._get_ifhÙ  s{   € Ø�l‰l˜TŸZ™Z¨°4·=²=©RÀbÓIÑIˆØ�=Š=Ø�4—:‘:˜d A qÓ)Ñ)ˆCØ d§m¢mˆt�z‰z˜#˜rÓ"ÑKˆàˆ
ð :>¿¹ÀCÈÓ9KÑKˆàˆ
rt   c                ó\  — | j                  | j                  rdndt        | j                  «      «      }g }| j                  rdnd}| j                  rdnd}|t        |«      t        | j                  «      | j                  rdndz  z   |z   z  }d }t	        | j                  j                  «       «      D �]H  \  }}|t        k(  rt        |«      }| j                  |   }	t        j                  d||	t        |«      «       |	t        j                  k(  xr t        |t        «      }
|
rYt        | j!                  «       |¬	«      }| j                  |   }|j                  «       D ]
  \  }}|||<   Œ |j#                  |«      }n+t        |t$        «      r|n|f} | j&                  |	   | g|¢­Ž }t        j(                  || j*                  «      j,                  }|
rd
nt/        j0                  |	d«      }d|› d|› d|› d|	› d�	}|t        |«      dk\  rdt        |«      › d�n
t3        |«      z  }t        j                  |«       |
rd}nH|	t        j4                  t        j6                  t        j8                  fv rt        |«      }nt        |«      }t        |«      |k  r(|j;                  ||	||j=                  |d«      df«       �Œ|j;                  ||	|| j                  ||«      |f«       |t        |«      dz   dz  dz  z  }�ŒK |�Œ||   \  }}	}}}|rM| j>                  |	   \  }} || || j@                  «      D �cg c]  }||z   ‘Œ	 }} | j&                  |	   | g|¢­Ž }n(| j                  || jC                  ||«      d   |z   «      }||	|||f||<   |D ]Z  \  }}	}}}t        j                  d||	|t        |«      t        |«      «       || j                  | j                  rdnd||	||«      z  }Œ\ || j                  |d«      z  }|D ]!  \  }}	}}}||z  }t        |«      dz  sŒ|dz  }Œ# |S c c}w )Nr  ru  rF   r8   r0   r»  rG   zTag %s, Type: %s, Value: %s)r  Úifdr½  zsave: r¾  r¿  z) - value: rI   rÂ  rÃ  r   r„  rt   r,   r   z%s %s %s %s %srº  r¼  )"rÿ   r  rg   r)  Úsortedr0  ÚSTRIPOFFSETSr  rÌ  rÍ  r  r   rZ  r¢   r-  rä   rÝ  Útobytesro   r’   r1  r  r	  r   rÊ  r¯   r^  r]  rT  ÚappendÚljustr�   rú   rø   )r—   r×  ÚresultÚentriesrû   Úfmt_sizeÚstripoffsetsr9  r¥   r:  rh  rß  r  Úifd_tagÚ	ifd_valuerù   rÓ  rÔ  r  rÒ  rí   r;  rz   s                          rj   râ  zImageFileDirectory_v2.tobytesá  s	  € à—‘ 4§=¢=™C°c¼3¸t¿}¹}Ó;MÓNˆà<>ˆà—]’]‰c¨ˆØŸš‘1¨1ˆØÜ�‹Kœ#˜dŸm™mÓ,°d·m²m±ÈÑLÑLÈxÑWñ	
ˆð ˆô ! §¡×!4Ñ!4Ó!6Ó7ó "	3‰JˆC�Ø”lÒ"Ü" 7›|�Ø—,‘,˜sÑ#ˆCÜ�L‰LÐ6¸¸SÄ$ÀuÃ+ÔNØœHŸM™MÑ)ÒE¬j¸ÄÓ.EˆFÙÜ+¨D¯M©M«OÀ3ÔG�ØŸ™ sÑ+�Ø*0¯,©,«.ò -Ñ&�G˜YØ#,�C˜’Lð-à—{‘{ 6Ó*‘ä",¨U´EÔ":™ÀÀ�Ø0�t×+Ñ+¨CÑ0°Ð?¸Ò?�ä—o‘o c¨4¯:©:Ó6×;Ñ;ˆGÙ%‘e¬5¯9©9°S¸)Ó+DˆGØ˜7˜) 2 c U¨*°W°I¸RÀ¸uÀKÐPˆCØ´C¸³IÀ²O�Xœc $›i˜[¨Ñ0ÌÈVËÑTˆCÜ�L‰L˜Ôñ Ø‘ØœŸ™¬¯©¼×8JÑ8JÐKÑKÜ˜D›	‘ä˜F›�ä�4‹y˜HÒ$Ø—‘  S¨%°·±¸HÀeÓ1LÈcÐRÖSà—‘  S¨%°·±¸CÀÓ1HÈ$ÐOÔPØœ3˜t›9 q™=¨QÑ.°Ñ2Ñ2’ðE"	3ðJ Ð#Ø+2°<Ñ+@Ñ(ˆC��e˜U DÙØ $× 3Ñ 3°CÑ 8‘��gÙ29¸$ÀÀdÇoÁoÓ2VÖW¨3˜# ›,ÐW�ÐWØ0�t×+Ñ+¨CÑ0°Ð?¸Ò?‘àŸ
™
 3¨¯©°S¸%Ó(@ÀÑ(CÀfÑ(LÓM�Ø$'¨¨e°U¸DÐ$@ˆG�LÑ!ð -4ò 	Ñ(ˆC��e˜U DÜ�L‰LÐ)¨3°°U¼DÀ»KÌÈdËÔTØ�d—j‘jØŸ=š=‘¨g°s¸CÀÈóñ ‰Fð	ð 	�$—*‘*˜S !Ó$Ñ$ˆð -4ò 	 Ñ(ˆC��e˜U DØ�d‰NˆFÜ�4‹y˜1‹}Ø˜%‘‘ð	 ð
 ˆùò- Xs   Ì6P)c                óæ   — |j                  «       dk(  r|j                  | j                  «       «       |j                  «       }| j                  |«      }|j                  |«       |t	        |«      z   S )Nr   )rÄ  ÚwriterÝ  râ  rg   )r—   r¶  r×  rå  s       rj   ÚsavezImageFileDirectory_v2.save1  sU   € Ø�7‰7‹9˜Š>Ø�H‰H�T—]‘]“_Ô%à—‘“ˆØ—‘˜fÓ%ˆØ
�‰�ÔØœ˜F›Ñ#Ð#rt   )s   II*     NN)r  r  rr   zbytes | Noner  ú
int | Noner›   rØ   )r›   rÜ   )r¥   rÜ   r›   r!   ©r›   rØ   rÚ   )r›   zdict[str, Any]rÙ   ©r9  r¤   r›   r   ©r9  rÛ   r›   rÜ   ©r9  r¤   r¥   r   r›   rØ   )r9  r¤   r¥   r   rú   rÜ   r›   rØ   )r9  r¤   r›   rØ   ©r›   zIterator[int])rû   r¯   rù   r  r›   r  )rû   r¯   r  r   r›   r  r  )rù   r  rú   rÜ   r›   r  )rù   úbytes | int | IFDRationalr›   r  )rù   r  rú   rÜ   r›   r¯   )r¥   zstr | bytes | intr›   r  )rù   r  rú   rÜ   r›   z)tuple[tuple[int, int] | IFDRational, ...])r  rx   r›   r  )r¥   rô  r›   r  )r¶  ú	IO[bytes]rí   r¤   r›   r  )r¶  rõ  r›   rØ   )r›   r  rP   )r×  r¤   r›   r  )r¶  rõ  r›   r¤   )7rÞ   rß   rà   rá   r�   Ú__annotations__r’   r¦   rã   rr   r×  rú   Úsetterr  r.  r3  r6  r<  r?  rC  rB  rl  ro  rø   rÿ   ÚlistÚmapr
  r   rX  rZ  ÚSIGNED_BYTErY  r[  ÚFLOATr\  ÚIFDÚLONG8rð   r~  rô   r‚  r‡  rŠ  r�  r¤  r¦  r¨  r­  r±  r¸  rØ  rÝ  râ  rí  rD   rt   rj   rä   rä     sØ  … ñ:ðx :<€NÐ6Ó;Ø57€OÐ2Ó7ð 3Ø#Ø ð	)!àð)!ð ð)!ð ð	)!ð
 
ó)!ñV Ñ/Ó0€FÙÑ/Ó0€Fàò ó ð ð ×Ñòó ðó(óó	
ó<ó	ó<ó3ó\ó|%ó
=ó7ó8ñ 	ÙØà—‘  gÐ.Ø—‘  VÐ,Ø×%Ñ% s¨MÐ:Ø×&Ñ&¨¨^Ð<Ø×%Ñ% s¨MÐ:Ø—‘  gÐ.Ø—‘ # xÐ0Ø—‘˜s FÐ+Ø—‘  gÐ.ð
ó	
ôñ" �a˜Óóó ðñ �aÓòó ðñ �a˜Óó1ó ð1ñ
 �aÓòó ðñ �a˜Óà.2ðWØðWØ'+ðWà	2òWó ðWñ �aÓò
ó ð
ñ
 �a˜Óóó ðñ �aÓòó ðñ �b˜!Óà.2ðWØðWØ'+ðWà	2òWó ðWñ �bÓò
ó ð
óóTólôNô`$rt   ré   rè   rç   Úwrite_c                  ó˜   ‡ — e Zd ZU dZdˆ fd„Z ed„ «      Z ed„ «      Zded<   	 e	dd„«       Z
dd„Zdd	„Zdd
„Zdd„Zdd„Zdd„Zˆ xZS )ÚImageFileDirectory_v1aþ  This class represents the **legacy** interface to a TIFF tag directory.

    Exposes a dictionary interface of the tags in the directory::

        ifd = ImageFileDirectory_v1()
        ifd[key] = 'Some Data'
        ifd.tagtype[key] = TiffTags.ASCII
        print(ifd[key])
        ('Some Data',)

    Also contains a dictionary of tag types as read from the tiff image file,
    :attr:`~PIL.TiffImagePlugin.ImageFileDirectory_v1.tagtype`.

    Values are returned as a tuple.

    ..  deprecated:: 3.0.0
    c                ó2   •— t        ‰| �  |i |¤Ž d| _        y )NT)Úsuperr¦   r  )r—   r˜   ÚkwargsÚ	__class__s      €rj   r¦   zImageFileDirectory_v1.__init__X  s   ø€ Ü‰Ñ˜$Ð) &Ò)ØˆÕrt   c                ó   — | j                   S rm   )r(  r¨   s    rj   r  zImageFileDirectory_v1.<lambda>\  s
   €  §¡€ rt   c                ó   — | j                   S rm   )r*  r¨   s    rj   r  zImageFileDirectory_v1.<lambda>]  s
   €  D§M¡M€ rt   zdict[int, int]r  c                ó’   —  | |j                   ¬«      }|j                  |_        |j                  |_        |j                  |_        |S )a2  Returns an
        :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1`
        instance with the same data as is contained in the original
        :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v2`
        instance.

        :returns: :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1`

        rq   )rr   r*  r  r  )ÚclsÚoriginalrß  s      rj   Úfrom_v2zImageFileDirectory_v1.from_v2c  s<   € ñ ˜Ÿ™Ô)ˆØ×(Ñ(ˆŒØ×&Ñ&ˆŒØ—=‘=ˆŒØˆ
rt   c                óÎ   — t        | j                  ¬«      }t        | j                  «      |_        t        | j                  «      |_        t        | j
                  «      |_        |S )a2  Returns an
        :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v2`
        instance with the same data as is contained in the original
        :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1`
        instance.

        :returns: :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v2`

        rq   )rä   rr   r-  r*  r  r)  )r—   rß  s     rj   Úto_v2zImageFileDirectory_v1.to_v2u  sG   € ô $¨4¯;©;Ô7ˆÜ˜DŸM™MÓ*ˆŒÜ˜4Ÿ<™<Ó(ˆŒÜ˜DŸM™MÓ*ˆŒØˆ
rt   c                ó>   — || j                   v xs || j                  v S rm   )r(  r*  r>  s     rj   r?  z"ImageFileDirectory_v1.__contains__†  r@  rt   c                ój   — t        t        | j                  «      t        | j                  «      z  «      S rm   )rg   r5  r*  r(  r¨   s    rj   r6  zImageFileDirectory_v1.__len__‰  r7  rt   c                ój   — t        t        | j                  «      t        | j                  «      z  «      S rm   )rn  r5  r*  r(  r¨   s    rj   ro  zImageFileDirectory_v1.__iter__Œ  rp  rt   c                ó8   — dD ]  }| j                  |||«       Œ y ©N)FT)rB  )r—   r9  r¥   rú   s       rj   rC  z!ImageFileDirectory_v1.__setitem__�  s!   € Ø'ò 	2ˆJØ�M‰M˜#˜u jÕ1ñ	2rt   c           	     ó  — || j                   vrR| j                  |   }| j                  |   }| j                  |   \  }}dD ]  }| j	                  | || ||«      |«       Œ | j                   |   }t        |t        t        f«      s|f}|S r  )r(  r*  r  r�   rB  r¢   ro   r  )r—   r9  rù   r:  rí   r;  Úlegacyrz   s           rj   r<  z!ImageFileDirectory_v1.__getitem__“  s�   € Ø�d—m‘mÑ#Ø—=‘= Ñ%ˆDØ—,‘,˜sÑ#ˆCØ ×/Ñ/°Ñ4‰MˆD�'Ø'ò H�Ø—‘˜c¡7¨4°°vÓ#>ÀÕGðHà�m‰m˜CÑ ˆÜ˜#¤¤u˜~Ô.Ø�&ˆCØˆ
rt   )r˜   r   r  r   r›   rØ   )r	  rä   r›   r   )r›   rä   rñ  rÙ   ró  rò  rð  )rÞ   rß   rà   rá   r¦   rã   ÚtagsÚtagdatarö  Úclassmethodr
  r  r?  r6  ro  rC  r<  Ú__classcell__©r  s   @rj   r   r   E  s`   ø… ñõ$ ñ Ñ.Ó/€DÙÑ1Ó2€Gð ÓØ!àòó ðó"ó"<ó<ó=ó2÷
rt   r   c                  ó    ‡ — e Zd ZdZdZdZ	 d	 	 	 	 	 dˆ fd„Zdd„Zedd„«       Z	dd„Z
dd„Zdd	„Zdd
„Zdˆ fd„Zdd„Zdd„Zdd„Zdd„Zˆ xZS )ÚTiffImageFileÚTIFFz
Adobe TIFFFc                ó@   •— |  	 |  	 d | _         t        ‰| �	  ||«       y rm   )Ú	_n_framesr  r¦   )r—   r¶  Úfilenamer  s      €rj   r¦   zTiffImageFile.__init__­  s'   ø€ ñ
 	Ø5áØ"à%)ˆŒÜ‰Ñ˜˜XÕ&rt   c                ó®  — | j                   €J ‚| j                   j                  d«      }|d   dk(  r|| j                   j                  d«      z  }t        |«      | _        | j                  j                  x| _        | _        d| _        | j                   | _        g | _	        | j                   j                  dt        j                  «       | j                   j                  «       | _        g | _        t         j#                  d«       t         j#                  d| j
                  «       t         j#                  d	t%        |«      «       | j'                  d«       y)
z#Open the first image in a TIFF fileNr8   r,   r  rv   r   z*** TiffImageFile._open ***z- __first: %sz	- ifh: %s)r¶  r´  rä   Útag_v2r  Ú_TiffImageFile__firstÚ_TiffImageFile__nextÚ_TiffImageFile__frameÚ_fpÚ
_frame_posrÅ  rÆ  rÇ  rÄ  Ú_tag_data_remainingÚ_tag_data_limitsrÌ  rÍ  r  Ú_seekrÜ  s     rj   Ú_openzTiffImageFile._open»  sõ   € ð �w‰wÐ"Ð"Ð"Ø�g‰g�l‰l˜1‹oˆØˆq‰6�RŠ<Ø�4—7‘7—<‘< “?Ñ"ˆCä+¨CÓ0ˆŒð &*§[¡[×%5Ñ%5Ð5ˆŒ�t”{ØˆŒØ—7‘7ˆŒØ%'ˆŒð
 	�‰�‰�QœŸ™Ô$Ø#'§7¡7§<¡<£>ˆÔ Ø+-ˆÔä�‰Ð2Ô3Ü�‰�_ d§l¡lÔ3Ü�‰�[¤$ s£)Ô,ð 	�
‰
�1�rt   c                óR  — | j                   }|€€| j                  «       }| j                  t        | j                  «      «       | j                   €/| j                  | j                  «       dz   «       | j                   €Œ/| j                  |«       | j                   €J ‚| j                   S )Nr   )r  rÄ  r(  rg   r%  rÅ  )r—   Úcurrent_n_framesÚcurrents      rj   Ún_frameszTiffImageFile.n_framesÚ  s„   € àŸ>™>ÐØÐ#Ø—i‘i“kˆGØ�J‰J”s˜4Ÿ?™?Ó+Ô,Ø—.‘.Ð(Ø—
‘
˜4Ÿ9™9›;¨™?Ô+ð —.‘.Ñ(à�I‰I�gÔØ�~‰~Ð)Ð)Ð)Ø�~‰~Ðrt   c                ó  — | j                  |«      sy| j                  |«       | j                  �[| j                  j                  | j
                  k7  s/| j                  j                  | j                  k7  s| j                  rd| _        yyy)z%Select a given frame as current imageN)Ú_seek_checkr(  Ú_imÚimrí   Ú
_tile_sizeÚmodeÚreadonly)r—   Úframes     rj   rÅ  zTiffImageFile.seekæ  si   € à×Ñ Ô&ØØ�
‰
�5ÔØ�8‰8ÐØ�G‰G�L‰L˜DŸO™OÒ+Ø�w‰w�|‰|˜tŸy™yÒ(Ø�}Š}àˆD�Hð ð  rt   c                óŠ  — t        | j                  t        «      r| j                  j                  ‚| j                  | _        t        | j                  «      |k  �r9| j                  sd}t        |«      ‚t        j                  d|| j                  | j                  | j                  j                  «       «       | j                  dk\  rd}t        |«      ‚| j                  j                  | j                  «       | j                  j                  | j                  «       | j                   j                  | j"                  «       t        j                  d| j                  j                  «       «       | j"                  | j$                  _        | j$                  j)                  | j                  «       | xj"                  | j$                  j*                  z  c_        | j$                  j,                  | j                  v rd| _        n| j$                  j,                  | _        | j                  dk(  r| j.                  €
|dz   | _        t1        | d«      s| j                  dk7  | _        | xj                  dz  c_        t        | j                  «      |k  r�Œ9| j                  j                  | j                  |   «       | j                   |   | j$                  _        | j$                  j)                  | j                  «       t4        | j$                  v rF| j$                  t4           }t        |t6        «      rt        |«      dk(  r|d   }|| j8                  d	<   nd	| j8                  v r| j8                  d	= | j;                  «        t<        j?                  | j$                  «      x| _         | _!        || _        | jE                  «        y )
Nzno more images in TIFF filez9Seeking to frame %s, on frame %s, __next %s, location: %srÁ  zUnable to seek to framezLoading tags, location: %sr   r   Úis_animatedÚxmp)#r¢   r$  r   Úexr¶  rg   r%  r"  ÚEOFErrorrÌ  rÍ  r#  rÄ  ra  rÅ  rã  r'  r&  r   r  rØ  rÈ  r  r  Úhasattrr7  ÚXMPro   rR  Ú_reload_exifr   r
  r9  rß  Ú_setup)r—   r5  r  r8  s       rj   r(  zTiffImageFile._seekò  s¥  € Ü�d—h‘h¤Ô.Ø—(‘(—+‘+ÐØ—(‘(ˆŒä�$—/‘/Ó" eÓ+Ø—;’;Ø3�Ü˜s“mÐ#Ü�L‰LØKØØ—‘Ø—‘Ø—‘—‘“ôð �{‰{˜eÒ#Ø/�Ü  “oÐ%Ø�G‰G�L‰L˜Ÿ™Ô%Ø�O‰O×"Ñ" 4§;¡;Ô/Ø×!Ñ!×(Ñ(¨×)AÑ)AÔBÜ�L‰LÐ5°t·w±w·|±|³~ÔFØ*.×*BÑ*BˆD�K‰KÔ'Ø�K‰K×Ñ˜TŸW™WÔ%Ø×$Ò$¨¯©×(BÑ(BÑBÕ$Ø�{‰{×Ñ 4§?¡?Ñ2ð  �•à"Ÿk™k×.Ñ.�”Ø�{‰{˜aÒ D§N¡NÐ$:Ø!&¨¡�”Ü˜4 Ô/Ø#'§;¡;°!Ñ#3�Ô Ø�LŠL˜AÑ�Lô? �$—/‘/Ó" eÔ+ð@ 	�‰�‰�T—_‘_ UÑ+Ô,Ø&*×&;Ñ&;¸EÑ&Bˆ�‰Ô#Ø�‰×Ñ˜Ÿ™Ô!Ü�$—+‘+ÑØ—+‘+œcÑ"ˆCÜ˜#œuÔ%¬#¨c«(°aª-Ø˜!‘f�Ø"ˆD�I‰I�eÒØ�d—i‘iÑØ—	‘	˜%Ð Ø×ÑÔä3×;Ñ;¸D¿K¹KÓHÐHˆŒ�4”8ØˆŒØ�‰�rt   c                ó   — | j                   S )zReturn the current frame number)r#  r¨   s    rj   rÄ  zTiffImageFile.tell'  s   € à�|‰|Ðrt   c                ó   — i }| j                   j                  t        j                  j                  «      }|r¼|j                  d«      r«t        |«      dk\  r�t        |dd «      }t        j                  |d   dz   dz  «      dz  }	 t        |d|z   d|z    «      }|d|z   d|z   |z    }d|i||<   |t        j                  d|z   |z   dz  «      dz  d	 }|j                  d«      rt        |«      dk\  rŒ�|S # t        j                  $ r Y |S w xY w)
a5  
        Returns a dictionary of Photoshop "Image Resource Blocks".
        The keys are the image resource ID. For more information, see
        https://www.adobe.com/devnet-apps/photoshop/fileformatashtml/#50577409_pgfId-1037727

        :returns: Photoshop "Image Resource Blocks" in a dictionary.
        s   8BIMrG   r0   r4   r   r,   r©  rù   N)r   rÊ  r   ÚBaseÚImageResourcesrn   rg   Úi16r   ÚceilÚi32r   Úerror)r—   Úblocksrz   ÚidÚnrí   rù   s          rj   Úget_photoshop_blocksz"TiffImageFile.get_photoshop_blocks+  s  € ð ˆØ�k‰k�o‰oœhŸm™m×:Ñ:Ó;ˆÙØ—.‘. Ô)¬c°#«h¸"ªnÜ˜˜Q˜q˜“]�Ü—I‘I˜s 1™v¨™z¨QÑ.Ó/°!Ñ3�ðÜ˜s 1 q¡5¨2°©6Ð2Ó3�Dð ˜2 ™6 B¨¡F¨T¡MÐ2�Ø$ d˜^��r‘
àœ$Ÿ)™) R¨!¡V¨d¡]°aÑ$7Ó8¸1Ñ<Ð>Ð?�ð —.‘. Ô)¬c°#«h¸"«nð ˆøô —|‘|ò Øð
 ˆðús   ÂC6 Ã6DÄDc                óp   •— | j                   r| j                  r| j                  «       S t        ‰| �  «       S rm   )ÚtileÚuse_load_libtiffÚ_load_libtiffr  rØ  )r—   r  s    €rj   rØ  zTiffImageFile.loadC  s-   ø€ Ø�9Š9˜×.Ò.Ø×%Ñ%Ó'Ð'Ü‰w‰|‹~Ðrt   c                ó
  — | j                   €Xt        j                  | j                  «       t        j                  j                  | j                  | j                  «      | _        t        j                  j                  | «       y rm   )
r0  r   Ú_decompression_bomb_checkr2  ÚcoreÚnewr3  r1  r   Úload_preparer¨   s    rj   rS  zTiffImageFile.load_prepareH  sP   € Ø�8‰8ÐÜ×+Ñ+¨D¯O©OÔ<Ü—j‘j—n‘n T§Y¡Y°·±Ó@ˆDŒGÜ×Ñ×(Ñ(¨Õ.rt   c                óf  — | j                   sBd| _        | j                  «       }t        j                  D ]  }||vrŒ|j                  |«       Œ t        j                  | d¬«       t        j                  j                  | j                  v r&| j                  t        j                  j                  = y y )NT)Úin_place)r7  Ú!_close_exclusive_fp_after_loadingÚgetexifr   ÚTAGS_V2_GROUPSÚget_ifdr   Úexif_transposer   rA  ÚOrientationr   )r—   ÚexifÚkeys      rj   Úload_endzTiffImageFile.load_endN  s�   € ð ×ÒØ59ˆDÔ2ð —<‘<“>ˆDÜ×.Ñ.ò "�Ø˜d‘?ØØ—‘˜SÕ!ð"ô
 	×Ñ ¨tÕ4Ü�=‰=×$Ñ$¨¯©Ñ3Ø—‘œHŸM™M×5Ñ5Ñ6ð 4rt   c                óð  — t         j                   j                  | «       | j                  «        t        | j                  «      dk(  sd}t        |«      ‚| j                  d   j                  }| j                  d   j                  }| j                  €J ‚	 t        | j                  d«      xr | j                  j                  «       }t        | j                  d«      r| j                  j                  «        |r-t        |t        «      sJ ‚t        |«      }||d<   t        |«      }t        j                  | j                   d|| j"                  «      }	 |j%                  | j&                  |«       | j*                  xr | j,                   }t        | j                  d
«      rBt.        j1                  d«       |j3                  | j                  j5                  «       «      \  }	}
nï|r‘t.        j1                  d«       |s| j                  j7                  d«       t9        j:                  |dt8        j<                  «      }|j3                  d«      \  }	}
t9        j:                  ||t8        j>                  «       n\t.        j1                  d«       | j                  j7                  d«       |j3                  | j                  jA                  «       «      \  }	}
g | _        d| _!        | jE                  «        |r!| j                  jG                  «        d| _        |
dk  rd|
› �}t        |«      ‚t         j                   j                  | «      S # t
        $ r d}Y �Œ]w xY w# t(        $ r}d	}t        |«      |‚d}~ww xY w)zWOverload method triggered when we detect a compressed tiff
        Calls out to libtiffr   zNot exactly one tiler   NÚfilenoÚflushFÚlibtiffzCouldn't set the imageÚgetvaluez5have getvalue. just sending in a string from getvaluez3have fileno, calling fileno version of the decoder.s   fpfpz+don't have fileno or getvalue. just readingzdecoder error )$r   rØ  rS  rg   rL  rµ  Úextentsr˜   r¶  r;  r`  ra  r¢   ro   rø  Ú_getdecoderr3  ÚdecoderconfigÚsetimager1  ra  Ú_exclusive_fpr7  rÌ  rÍ  r†  rc  rÅ  ÚosÚlseekÚSEEK_CURÚSEEK_SETr´  r4  r^  Úclose)r—   r  rd  r˜   r¶  Ú	args_listÚdecoderÚeÚclose_self_fprI  ÚerrÚposs               rj   rN  zTiffImageFile._load_libtiff_  s±  € ô 	�‰×Ñ˜Ôà×ÑÔä�4—9‘9‹~ Ò"Ø(ˆCÜ˜#“,Ðà—)‘)˜A‘,×&Ñ&ˆØ�y‰y˜‰|× Ñ ˆð
 �w‰wÐ"Ð"Ð"ð
	Ü˜Ÿ™ (Ó+Ò@°·±·±Ó0@ˆBô �t—w‘w Ô(Ø—‘—‘”ñ Ü˜d¤EÔ*Ð*Ð*Ü˜T›
ˆIØˆI�a‰LÜ˜Ó#ˆDä×#Ñ# D§I¡I¨y¸$À×@RÑ@RÓSˆð	&Ø×Ñ˜TŸW™W gÔ.ð
 ×*Ñ*ÒC°4×3CÑ3CÐ/CˆÜ�4—7‘7˜JÔ'ô �L‰LÐPÔQØ—^‘^ D§G¡G×$4Ñ$4Ó$6Ó7‰FˆA‰sÙä�L‰LÐNÔOÙ Ø—‘—‘˜Q”ô —(‘(˜2˜q¤"§+¡+Ó.ˆCà—^‘^ GÓ,‰FˆAˆsÜ�H‰H�R˜œbŸk™kÕ*ô �L‰LÐFÔGØ�G‰G�L‰L˜ŒOà—^‘^ D§G¡G§L¡L£NÓ3‰FˆAˆsàˆŒ	ØˆŒà�‰ŒáØ�G‰G�M‰MŒOØˆDŒGà�Š7Ø" 3 %Ð(ˆCÜ˜#“,Ðä�{‰{×Ñ Ó%Ð%øôG ò 	ð ‹Bð	ûô ò 	&Ø*ˆCÜ˜#“, AÐ%ûð	&ús+   ÂA"M ÅM ÍMÍMÍ	M5Í"M0Í0M5c                óú  — d| j                   v rd}t        |«      ‚t        | j                   j                  t        d«         | _        | j                   j                  t        d«      | _        | j                   j                  t        d«      }| j
                  dk(  rd}| j                   j                  t        d«      }t        j                  d«       t        j                  d| j
                  «       t        j                  d	|«       t        j                  d
| j                  «       t        j                  d|«       t        j                  d| j                   j                  t        «      «       	 | j                   t           }| j                   t           }t#        |t$        «      rt#        |t$        «      sd}t'        |«      ‚||f| _        | j                   j                  t*        j,                  j.                  «      }|dv r
||f| _        n	||f| _        t        j                  d| j2                  «       | j                   j                  t4        d«      }t7        |«      dkD  rt9        |«      t;        |«      k(  r|d   f}| j                   j                  t<        d«      }	| j                   j                  t>        d«      }
| j                   j                  t@        | j
                  dk(  r|dv rdnd«      }|dv rd}n
|dk(  rd}nd}| j                  dk(  r/|
r-t9        |
«      dk(  r|	dt7        |
«        }	|t7        |
«      z  }d}
|t7        |
«      z  }t7        |	«      }|tB        kD  r#t        jE                  d|«       d}tG        |«      ‚||k  r|	d| }	n||kD  r
|dk(  r|	|z  }	t7        |	«      |k7  rd}tG        |«      ‚| j                   jH                  ||||	|
f}t        j                  d|«       	 tJ        |   \  | _&        }t        j                  d |«       t        j                  d!| jN                  «       | j
                  | jP                  d"<   | j                   j                  tR        d«      }| j                   j                  tT        d«      }|r‹|r‰| j                   j                  tV        «      }|dk(  r||f| jP                  d#<   nS|dk(  r|d$z  |d$z  f| jP                  d#<   n6|€#||f| jP                  d#<   ||f| jP                  d%<   n||f| jP                  d%<   dx}x}}g | _,        tZ        xs | j
                  d&k7  | _.        | j\                  rÚ|dk(  r5|dd dz   |dd z   }t        j                  d|«       tJ        |   \  | _&        }|dk(  r*d'| _&        | j
                  d(v r| j                  dk(  rd'}n$d)}n!|d*k(  rd+}n|j_                  d,«      r|dd- d.z   }|d/| j                   j`                  f}| jX                  jc                  te        jf                  d0dd||fd|«      «       �nòth        | j                   v stj        | j                   v �r«th        | j                   v r6| j                   th           }| j                   j                  tl        |«      }|}n€| j                   tj           }| j                   j                  tn        «      }| j                   j                  tp        «      }t#        |t$        «      rt#        |t$        «      sd1}t'        |«      ‚|}||k(  r||k(  r| j                  dk7  r|d-d }|D ]¿  }||z   |kD  r|ts        |	«      z  d2z  }nd}|}| j                  dk(  r
||   }||z  }|t%        |«      df}| jX                  jc                  te        jf                  | j
                  ||t;        ||z   |«      t;        ||z   |«      f||«      «       ||z  }||k\  sŒ¬d||z   }}||k\  sŒ¹d}|dz  }ŒÁ n"t        j                  d3«       d}tG        |«      ‚tt        | j                   v r | j                   tt           | jP                  d4<   | jN                  d5v r?tw        d6„ | j                   tx           D «       «      }t{        j|                  d7|«      | _?        yd| _?        y# t        $ r}d}t!        |«      |‚d}~ww xY w# t        $ r(}t        j                  d«       d}tG        |«      |‚d}~ww xY w)8z-Setup this image object based on current tagsi¼  z+Windows Media Photo files not yet supportedr   r   r5   r4   z*** Summary ***z- compression: %sz - photometric_interpretation: %sz- planar_configuration: %sz- fill_order: %sz- YCbCr subsampling: %szMissing dimensionsNzInvalid dimensions)r2   r4   r6   r8   z
- size: %srC   rD   )r,   r4   r.   )r,   r4   r8   r2   r0   r,   z.More samples per pixel than can be decoded: %sz#Invalid value for samples per pixelzunknown data organizationzformat key: %sz- unsupported formatzunknown pixel modez- raw mode: %sz- pil mode: %sÚcompressionÚdpigR¸…ëQ@Ú
resolutionr+   rT   r7   rV   rH   úI;16N)z;16Bz;16Lrv   ÚNFrb  zInvalid tile dimensionsr8   z- unsupported data organizationÚicc_profile©r^   r`   c              3  ó&   K  — | ]	  }|d z  –— Œ y­w)r(   NrD   )rh   rv  s     rj   rk   z'TiffImageFile._setup.<locals>.<genexpr>²  s   è ø€ ÒD¨˜A �HÑDùs   ‚úRGB;L)@r   rµ  ÚCOMPRESSION_INFOrÊ  ÚCOMPRESSIONÚ_compressionÚPLANAR_CONFIGURATIONÚ_planar_configurationrb  Ú	FILLORDERrÌ  rÍ  ÚYCBCRSUBSAMPLINGÚ
IMAGEWIDTHÚIMAGELENGTHrË  Ú	TypeErrorr¢   r¤   ra  r2  r   rA  r[  Ú_sizerí   ÚSAMPLEFORMATrg   rŠ   r‰   ÚBITSPERSAMPLEÚEXTRASAMPLESÚSAMPLESPERPIXELÚMAX_SAMPLESPERPIXELrF  r  rr   Ú	OPEN_INFOÚ_moder3  rR  ÚX_RESOLUTIONÚY_RESOLUTIONÚRESOLUTION_UNITrL  ÚREAD_LIBTIFFrM  r…  r×  rã  r   Ú_Tilerá  ÚTILEOFFSETSÚROWSPERSTRIPÚ	TILEWIDTHÚ
TILELENGTHÚsumÚ
ICCPROFILEro   ÚCOLORMAPr   r+   Úpalette) r—   r  ÚphotoÚ	fillorderÚxsizeÚysizerp  ÚorientationÚsample_formatÚ	bps_tupleÚextra_tupleÚsamples_per_pixelÚ	bps_countÚbps_actual_countr]  ÚrawmodeÚxresÚyresÚresunitÚxÚyÚlayerr�  Úoffsetsrw  ÚwÚ	tilewidthr×  ÚstrideÚtile_rawmoder˜   rœ  s                                    rj   r>  zTiffImageFile._setup¾  s+  € ð �T—[‘[Ñ Ø?ˆCÜ˜#“,Ðô -¨T¯[©[¯_©_¼[È!Ó-LÑMˆÔØ%)§[¡[§_¡_Ô5IÈ1Ó%MˆÔ"ð —‘—‘Ô :¸AÓ>ˆð ×Ñ Ò+ØˆEà—K‘K—O‘O¤I¨qÓ1ˆ	ä�‰Ð&Ô'Ü�‰Ð(¨$×*;Ñ*;Ô<Ü�‰Ð7¸Ô?Ü�‰Ð1°4×3MÑ3MÔNÜ�‰Ð'¨Ô3Ü�‰Ð.°·±·±Ô@PÓ0QÔRð	(Ø—K‘K¤
Ñ+ˆEØ—K‘K¤Ñ,ˆEô ˜%¤Ô%¬Z¸¼sÔ-CØ&ˆCÜ˜S“/Ð!Ø ˜,ˆŒØ—k‘k—o‘o¤h§m¡m×&?Ñ&?Ó@ˆØ˜,Ñ&Ø ˜ˆD�Jà ˜ˆDŒJä�‰�\ 4§9¡9Ô-àŸ™Ÿ™¬°dÓ;ˆÜˆ}Ó Ò!¤c¨-Ó&8¼CÀÓ<NÒ&Nð +¨1Ñ-Ð/ˆMà—K‘K—O‘O¤M°4Ó8ˆ	Ø—k‘k—o‘o¤l°BÓ7ˆØ ŸK™KŸO™OÜØ×"Ñ" kÒ1°e¸v±o‰AÈ1ó
Ðð �IÑØ‰IØ�aŠZØ‰IàˆIØ×%Ñ%¨Ò*©{¼sÀ;Ó?OÐSTÒ?Tð "Ð"5¤S¨Ó%5Ð$5Ð6ˆIØ¤ [Ó!1Ñ1ÐØˆKØ”S˜Ó%Ñ%ˆ	Ü˜y›>ÐàÔ2Ò2ä�L‰LØ@ÐBSôð 8ˆCÜ˜cÓ"Ð"àÐ/Ò/ð "Ð"4Ð#4Ð5‰IØÐ!1Ò1Ð6FÈ!Ò6Kð "Ð$5Ñ5ˆIäˆy‹>Ð.Ò.Ø-ˆCÜ˜cÓ"Ð"ð �K‰K×ÑØØØØØð
ˆô 	�‰Ð% sÔ+ð	*Ü"+¨C¡.ÑˆDŒJ˜ô 	�‰Ð% wÔ/Ü�‰Ð% t§y¡yÔ1à#'×#4Ñ#4ˆ�	‰	�-Ñ à�{‰{�‰œ|¨QÓ/ˆØ�{‰{�‰œ|¨QÓ/ˆá‘DØ—k‘k—o‘o¤oÓ6ˆGØ˜!Š|Ø$(¨$ <�—	‘	˜%Ò Ø˜A’Ø$(¨4¡K°¸±Ð#=�—	‘	˜%Ò Ø�Ø$(¨$ <�—	‘	˜%Ñ ð +/°¨*�—	‘	˜,Ò'à*.°¨*�—	‘	˜,Ñ'ð ÐˆÐˆA�ØˆŒ	Ü ,Ò J°×0AÑ0AÀUÑ0JˆÔØ× Ò ð ˜AŠ~à˜"˜1�g ‘n s¨1¨2 wÑ.�Ü—‘Ð-¨sÔ3ô '0°¡nÑ#�”
˜GØ˜ŠzØ"�”
Ø×$Ñ$¨Ñ.°4×3MÑ3MÐQRÒ3Rð $‘Gà$‘Gð
 ˜FÒ"Ø!‘Ø×!Ñ!Ð"2Ô3Ø! # 2˜,¨Ñ,�ð ˜% §¡×!3Ñ!3Ð4ˆAØ�I‰I×ÑœYŸ_™_¨Y¸¸A¸uÀeÐ8LÈaÐQRÓSÖTä˜TŸ[™[Ñ(¬K¸4¿;¹;Ò,Fä˜tŸ{™{Ñ*ØŸ+™+¤lÑ3�Ø—K‘K—O‘O¤L°%Ó8�Ø‘ð Ÿ+™+¤kÑ2�Ø ŸK™KŸO™O¬IÓ6�	Ø—K‘K—O‘O¤JÓ/�Ü! )¬SÔ1¼ÀAÄsÔ9KØ3�CÜ$ S›/Ð)Ø�à�EŠz˜a 5šj¨T×-GÑ-GÈ1Ò-Là! " #˜,�à!ò #�Ø�q‘5˜5’=Ø¤ Y£Ñ/°!Ñ3‘Fà�Fà&�Ø×-Ñ-°Ò2à#*¨5¡>�Là˜iÑ'�Fà$¤c¨&£k°1Ð5�Ø—	‘	× Ñ Ü—O‘OØ×)Ñ)Ø˜Aœs 1 q¡5¨%Ó0´#°a¸!±e¸UÓ2CÐDØØó	ôð �Q‘�Ø˜“:Ø˜a !™e�q�AØ˜E“zØ˜Ø ™
™ñ7#ô: �L‰LÐ:Ô;Ø-ˆCÜ˜cÓ"Ð"ô ˜Ÿ™Ñ$Ø'+§{¡{´:Ñ'>ˆD�I‰I�mÑ$ð �9‰9˜Ñ#ÜÑD¨d¯k©k¼(Ñ.CÔDÓDˆGÜ'×+Ñ+¨G°WÓ=ˆD�LàˆD�Løôo ò 	(Ø&ˆCÜ˜C“. aÐ'ûð	(ûô\ ò 	*Ü�L‰LÐ/Ô0Ø&ˆCÜ˜cÓ"¨Ð)ûð	*ús0   Å3&b* Ï5c	 â*	câ3cãcã		c:ã#c5ã5c:rm   )r¶  úStrOrBytesPath | IO[bytes]r  zstr | bytes | Noner›   rØ   rï  rÙ   )r5  r¤   r›   rØ   )r›   zdict[int, dict[str, bytes]])r›   zImage.core.PixelAccess | None)rÞ   rß   rà   ÚformatÚformat_descriptionrV  r¦   r)  rã   r-  rÅ  r(  rÄ  rJ  rØ  rS  r^  rN  r>  r  r  s   @rj   r  r  ¨  s„   ø„ Ø€FØ%ÐØ(-Ð%ð
 (,ð'à&ð'ð %ð'ð 
õ	'óð> ò	ó ð	ó
ó3ójóõ0ó
/ó7ó"]&÷~w rt   r  rE   rF   rS   r^   r`   rK   rO   rH   úI;16LrM   rN   rT   rV   rU   ra   rd   re   rJ   c                óÈ   — t         | v rZ| j                  t        d«      }t        |t        «      r|d   }d|z  dz  }t        | t            «      |k7  rd|› d�}t        |«      ‚y y )Nr   r   r.   z
Requiring z items for Colormap)r›  rÊ  rŠ  r¢   ro   rg   ra  )r  ÚbpsÚexpectedr  s       rj   Ú_validate_tagsr»  Õ  sn   € Ü�4ÑØ�h‰h”} aÓ(ˆÜ�cœ5Ô!Ø�a‘&ˆCØ˜‘H ‘>ˆÜˆt”H‰~Ó (Ò*Ø˜x˜jÐ(;Ð<ˆCÜ˜S“/Ð!ð +ð rt   c                ó’  — 	 t         | j                     \  }}}}}}| j                  }| j
                  }t        |¬«      }|j                  d«      rd|_        	 |d   }|€d}n|dk(  rd	}n|d
k(  rd}t        xs |dk7  }d|t        <   | j                  d   |t        <   | j                  d   |t         <   d|v r|d   }nCd|v r=|d   }t        |t"        «      r*t%        j&                  «       }|j)                  |«       |}ni }t*        j-                  dt/        |«      «       t        |t0        «      r|j3                  «       }|D ]t  }t        |t$        j&                  «      r'|t4        j6                  v r|j9                  |«      ||<   n|j                  |«      ||<   	 |j:                  |   |j:                  |<   Œv i }t?        | d«      r| j@                  j3                  «       }i |¥tC        | di «      ¥}|j                  t        «      dk(  r8tD        |v r0tF        |v r!|tF        xx   tI        |tD           «      z  cc<   |tD        = tJ        tL        fD ]
  }||v sŒ||= Œ t?        | d«      r²tN        tP        tR        tT        tV        tX        fD ]�  }|| jZ                  v sŒ|tT        k(  r=| jZ                  j:                  |   t4        j\                  t4        j^                  fvr||= ŒX| jZ                  |   ||<   | jZ                  j:                  |   |j:                  |<   Œ‘ |j                  d| j                  j                  d«      «      }|r	||t`        <   tb        dftP        dftR        dftP        dftR        dftN        dftd        dftf        dfth        dftj        dff
D ]  \  }}||v sŒ||   ||<   Œ |j                  d«      }|r!d|tN        <   |d   |tP        <   |d   |tR        <   |dk7  r)||tl        <   tI        |«      dk7  rtI        |«      |tF        <   |�	||tD        <   |dk7  r	||tL        <   tn        |vr
||tn        <   nª| j                  d v rœ|tn           dk(  r�| j                  d!k(  rl| jq                  «       }|j)                  «       }|�_ts        |jt                  «      D ]/  }ts        |jv                  «      D ]  }|||f   d"k(  rdnd"|||f<   Œ Œ1 |} nty        jz                  | «      } | j                  d#v rs| j|                  j                  d$d%«      }g }tI        |«      d&z  }ts        d&«      D ]0  } |||| z  || dz   z   D �!cg c]  }!|!d'z  ‘Œ	 c}!z  }|dgd'|z
  z  z  }Œ2 ||t€        <   |t           |t            }#}"tI        |«      |"|d   z  d(z   d)z  z  }$t‚        |vr[|rG|j                  d*t„        «      }%|$dk(  rdnt‡        |%|$z  |#«      }&|d	k(  rt‡        |&d(z   d)z  d)z  |#«      }&n|#}&|&dk(  rd}&|&|t‚        <   |$dk(  rdn|$|t‚           z  }'|#|t‚           z   dz
  |t‚           z  }(|'d+k\  r!t4        jˆ                  |j:                  tŠ        <   |'f|(dz
  z  |$|#z  |'|(dz
  z  z
  fz   |tŠ        <   t�        ts        d|'|(z  |'«      «      |tŽ        <   t�        j                  |d«      |t’        <   | j                  d,k(  r6t”        d-t–        d.ij™                  «       D ]  \  }})|j›                  ||)«       Œ tœ        tž        t         t¢        g}*|�r˜d/|v rG|d/   }+t        |+t        «      r
|+dk  s|+d0kD  rd1}
t¥        |
«      ‚|d	k7  rd2}
t¥        |
«      ‚|+|t¦        <   t*        j-                  d3«       t*        j-                  d4t©        |j™                  «       «      «       d},t?        |d5«      r"	 |j«                  d«       |j­                  «       },i }-|*t²        tŠ        tŽ        t´        t¶        gz  }*tl        |d   i}.t¹        jº                  |j™                  «       |j™                  «       «      D �]  \  }}/|t4        j¼                  vr¯|t4        j6                  v rt4        j¾                  |-|<   n‰||j:                  v r|j:                  |   |-|<   nht        |/t        tÀ        tÂ        t"        f«      s"t        |/tŒ        «      r8tÅ        d6„ |/D «       «      r&t5        jÆ                  |«      jÈ                  }0|0r|0|-|<   ||.vsŒÍ||*vsŒÒt        |/tÂ        «      r|/jË                  d7d8«      d9z   |.|<   Œût        |/tÌ        «      rtÁ        |/«      |.|<   �Œ|/|.|<   �Œ" tL        |.v r(tI        |.tL           «      dk(  r|.tL           d   |.tL        <   tÏ        |.«       t*        j-                  d:t©        |.j™                  «       «      «       | j                  d;v rd<}t/        |.j™                  «       «      }1|1jÑ                  «        ||,||1|-f}2t%        jÒ                  | j                  d=|2|«      }3	 |3jÕ                  | j|                  ddg| j                  ¢­«       	 |3jË                  tÖ        jØ                  «      dd  \  }4}5|,s|jÛ                  |5«       |4rnŒ<|4dk  rd>|4› d?�}
t        |
«      ‚	 |3jÝ                  «        np|*D ]  }||= Œ tÏ        |jÞ                  «       |já                  |«      }6t×        jâ                  | |t×        jä                  dddg| j                  ¢­|6||$df«      g«       d@|v rtç        | d@|«       y y # t        $ r!}	d| j                  › d�}
t        |
«      |	‚d }	~	ww xY w# t        $ r1 | j                  j                  d«      }t        |t        «      rd }Y �Œ#w xY w# t<        $ r Y �
ŒOw xY wc c}!w # t®        j°                  $ r Y �Œów xY w# |3jÝ                  «        w xY w)ANzcannot write mode z as TIFFrq   Úbig_tiffTru  r+   r5   r7   r=   r9   r   r   Útiffinfor\  zTiffinfo Keys: %sr9  r   r,   rz  Údescriptionrw  Úx_resolutionÚy_resolutionÚresolution_unitÚsoftwareÚ	date_timeÚartistÚ	copyrightrv  rC   )rE   rF   rE   r'   r{  rT   r}  r.   r(   r6   r8   Ú
strip_sizer&   rd   )r   r   )r   r'   é€   r'   rÈ  r'   Úqualityéd   zInvalid quality settingz5quality setting only supported for 'jpeg' compressionzSaving using libtiff encoderz	Items: %sr`  c              3  óR   K  — | ]  }t        |t        t        t        f«      –— Œ! y ­wrm   )r¢   r¤   r‚   rx   rF  s     rj   rk   z_save.<locals>.<genexpr>Û  s   è ø€ ÒTÈœJ q¬3´´{Ð*C×DÑTùs   ‚%'rO  rê   r„  zConverted items: %s)rH   rJ   r·  rx  rb  zencoder error z when writing image fileÚ_debug_multipage)tÚ	SAVE_INFOr3  rË  rµ  ÚencoderinfoÚencoderconfigrä   rÊ  r  rR  r¢   r¤   ÚWRITE_LIBTIFFr�  rí   r…  r†  r  r   ÚExifrØ  rÌ  rÍ  rø  r   r  r   rX  rY  r  r&  r;  r9  r•   r‹  rŒ  rg   ÚEXIFIFDr‰  r’  r�  r‘  ÚIPTC_NAA_CHUNKÚPHOTOSHOP_CHUNKr<  r   r^  rT  rš  ÚIMAGEDESCRIPTIONÚSOFTWAREÚ	DATE_TIMEÚARTISTÚ	COPYRIGHTrŠ  rb  ÚcopyrÉ  ÚheightÚwidthr   Úinvertr1  Ú
getpaletter›  r–  Ú
STRIP_SIZEr‰   rZ  ÚSTRIPBYTECOUNTSro   rá  ÚCOMPRESSION_INFO_REVr  r„  ÚREFERENCEBLACKWHITEr0  Ú
setdefaultr—  r˜  r•  ÚTILEBYTECOUNTSra  ÚJPEGQUALITYrà  rÅ  r`  rÆ  ÚUnsupportedOperationÚOSUBFILETYPEÚTRANSFERFUNCTIONÚSUBIFDr
   ÚchainÚLIBTIFF_CORErý  r‚   r¯   rU  r1  rS  r_  rx   r»  ÚsortÚ_getencoderrg  r   ÚMAXBLOCKrì  Úcleanupr)  rí  Ú_saver”  Úsetattr)7r1  r¶  r  r¨  rr   r�  rµ  ÚbitsÚextrarp  r  rÎ  rÏ  rß  ru  rb  rR  r\  r]  Ú
legacy_ifdÚsupplied_tagsr9  Úiccr	  rv  Úinverted_imÚpxr­  r¬  ÚlutÚcolormapÚcolorsr„   rG  r°  rw  r²  Úim_strip_sizeÚrows_per_stripÚstrip_byte_countsÚstrips_per_imageÚdefault_valueÚ	blocklistrÉ  r$  ÚtypesÚattsr¥   rS  r  r�  ÚencoderÚerrcoderù   r×  s7                                                          rj   rð  rð  à  s­  € ð"Ü6?ÀÇÁÑ6HÑ3ˆ�˜ ¨¨eð
 —.‘.€KØ×$Ñ$€Mä
 vÔ
.€CØ‡��zÔ"ØˆŒðØ! -Ñ0ˆð ÐØ‰Ø	˜Ò	#à‰Ø	˜Ò	&Ø*ˆäÒ3˜{¨eÑ3€Gð !"€CÔÑà—g‘g˜a‘j€CŒ
�OØ—w‘w˜q‘z€CŒÑð �[Ñ Ø˜:Ñ&‰Ø	�;Ñ	Ø˜6Ñ"ˆÜ�dœEÔ"Ü—:‘:“<ˆDØ�I‰I�dŒOØ‰DàˆÜ
‡L�LÐ$¤d¨4£jÔ1Ü�$Ô-Ô.Ø�z‰z‹|ˆØò ˆÜ�dœEŸJ™JÔ'¨C´8×3JÑ3JÑ,JØ—|‘| CÓ(ˆC�ŠHà—x‘x “}ˆC�‰Hð	Ø#Ÿ|™|¨CÑ0ˆC�K‰K˜Òðð €JÜˆr�5ÔØ—V‘V—\‘\“^ˆ
à?�zÐ?¤W¨R°¸2Ó%>Ð?€MØ×ÑÔ-Ó.°!Ò3¼ÈÑ8Uô ˜mÑ+Øœ/Ó*¬c°-ÄÑ2MÓ.NÑNÓ*Øœ,Ð'ô 	äð	ò #ˆð �-ÒØ˜cÑ"ð#ô ˆr�8Ôô ÜÜÜÜÜð
ò 	>ˆCð �b—i‘iÒØœ.Ò(¨R¯Y©Y×->Ñ->¸sÑ-CÜ—M‘MÜ×&Ñ&ðLñ .ð & cÑ*à!Ÿy™y¨™~�C˜‘HØ')§y¡y×'8Ñ'8¸Ñ'=�C—K‘K Ò$ð!	>ð( �/‰/˜-¨¯©¯©°]Ó)CÓ
D€CÙ
ØˆŒJ‰ô 
˜=Ð)Ü	�|Ð$Ü	�|Ð$Ü	�~Ð&Ü	�~Ð&Ü	Ð+Ð,Ü	�:ÐÜ	�KÐ Ü	�ÐÜ	�KÐ ðò )‰	ˆˆTð �;ÒØ" 4Ñ(ˆC�ŠHð)ð �/‰/˜%Ó
 €CÙ
Ø ˆŒOÑØ ™FˆŒLÑØ ™FˆŒLÑàˆt‚|Ø!ˆŒMÑÜˆt‹9˜Š>Ü#& t£9ˆC”Ñ ØÐØ!ˆŒLÑØ�‚{Ø"ˆŒLÑä!¨Ñ,Ø*/ˆÔ&Ò'Ø	�‰�JÑ	 3Ô'AÑ#BÀaÒ#GØ�7‰7�cŠ>ØŸ'™'›)ˆKØ×!Ñ!Ó#ˆBØˆ~Ü˜{×1Ñ1Ó2ò A�AÜ" ;×#4Ñ#4Ó5ò A˜Ø(*¨1¨a¨4©°Cª¡1¸S˜˜1˜a˜4šñAðAð !‘ä—‘ Ó$ˆBà	‡w�w�+ÑØ�e‰e×Ñ˜u gÓ.ˆØˆÜ�S“˜Q‘ˆÜ�q“ò 	-ˆAØ¨#¨f°q©j¸6ÀQÈÁUÑ;KÐ*LÖM Q˜˜S›ÒMÑMˆHØ˜˜˜s V™|Ñ,Ñ,‰Hð	-ð !ˆŒH‰àŒz‰?˜C¤Ñ,€q€AÜ�‹Y˜1˜t A™w™;¨™?¨qÑ0Ñ1€FÜ˜3ÑáØ'ŸO™O¨L¼*ÓEˆMØ"(¨A¢+™Q´3°}ÈÑ7NÐPQÓ3RˆNà˜fÒ$Ü!$ ~¸Ñ'9¸aÑ&?À1Ñ%DÀaÓ!H‘àˆNØ˜QÒØˆNØ*ˆŒLÑØ# qš[™¨f°s¼<Ñ7HÑ.HÐØ˜C¤Ñ-Ñ-°Ñ1°c¼,Ñ6GÑGÐØ˜EÒ!Ü'/§}¡}ˆ�‰”OÑ$Ø-Ð/Ð3CÀaÑ3GÑHØ�‰
Ð&Ð*:¸QÑ*>Ñ?Ñ?ðLñ €CŒÑô ÜˆaÐ"Ð%5Ñ5Ð7HÓIó€CŒÑô ,×/Ñ/°¸QÓ?€CŒÑà	‡w�w�'Òä˜fÜÐ!=ð#
÷ ‰%‹'ò	/ÑˆC�ð �N‰N˜3 Õ.ð		/ô œJ¬´^ÐD€IÚØ˜Ñ#Ø! )Ñ,ˆGÜ˜g¤sÔ+¨w¸ª{¸gÈºmØ/�Ü  “oÐ%Ø˜fÒ$ØM�Ü  “oÐ%Ø&ˆC”Ñä�‰Ð3Ô4Ü�‰�[¤&¨¯©«Ó"5Ô6ØˆÜ�2�xÔ ðØ—‘˜”
Ø—i‘i“k�ð
 ˆð 	ÜÜÜÜÜð
ñ 	
ˆ	ô !.¨t°A©wÐ7ˆô $Ÿ/™/¨#¯)©)«+°}×7JÑ7JÓ7LÓMó 	&‰JˆC�ð
 œ(×/Ñ/Ñ/Øœ(×1Ñ1Ñ1Ü!)§¡�E˜#’JØ˜CŸK™KÑ'Ø!$§¡¨SÑ!1�E˜#’JÜ ¬¬U´C¼Ð'?Ô@Ü˜u¤eÔ,ÜÑTÈeÔTÔTä#Ÿ?™?¨3Ó/×4Ñ4�DÙØ%)˜˜c™
Ø˜$Š 3¨iÒ#7Ü˜e¤SÔ)Ø %§¡¨W°iÓ @À5Ñ H�D˜’IÜ ¤{Ô3Ü % e£�D˜“Ià %�D˜“Ið/	&ô2 ˜4Ñ¤C¨¬\Ñ(:Ó$;¸qÒ$@Ø!%¤lÑ!3°AÑ!6ˆD”ÑÜ�tÔä�‰Ð*¬F°4·:±:³<Ó,@ÔAð �7‰7Ð0Ñ0ØˆGô
 �D—J‘J“LÓ!ˆØ�	‰	ŒØ�c˜8 T¨5Ð1ˆÜ×#Ñ# B§G¡G¨Y¸¸=ÓIˆð	Ø×Ñ˜RŸU™U Q¨Ð$4¨B¯G©GÑ$4Ô5ØØ '§¡¬y×/AÑ/AÓ BÀ1À2Ð F‘�˜ÙØ—H‘H˜T”NÙØð ð ˜Š{Ø& w iÐ/GÐH�Ü˜c“lÐ"ð ð �O‰OÕð ò 	ˆCØ�C‘ð	ä�s—|‘|Ô$Ø—‘˜"“ˆä�‰ØØÜ�_‰_˜U Q¨Ð$4¨B¯G©GÑ$4°f¸wÈÐPQÐ>RÓSÐTô	
ð ˜[Ñ(ä�Ð&¨Õ,ð )øôi	 ò "Ø" 2§7¡7 )¨8Ð4ˆÜ�c‹l Ð!ûð"ûô ò Ø—g‘g—k‘k -Ó0ˆÜ�k¤3Ô'àˆKúð	ûôT ò 	Úð	üòH Nøôt ×*Ñ*ò Úðûð` �O‰OÕús`   ‚l Ám ÆnÔ<nÞ!n èA>n4 ì	mì$m í mí6nînî	nînîn1î0n1î4oc                  óD  — e Zd Zg d¢Zh d£Zd d!d„Zd"d„Zd"d„Zd"d„Zd#d„Z	d$d„Z
d%d	„Zej                  fd&d
„Zd"d„Zd'd„Zd"d„Zd(d„Zd)d„Zd*d„Zd%d„Zd%d„Zed+d„«       Z	 d,	 	 	 	 	 	 	 d-d„Zd.d„Zd.d„Zd.d„Zd/d„Zd.d„Zd.d„Zd"d„Z d"d„Z!d0d„Z"	 d1	 	 	 	 	 	 	 d2d„Z#y)3ÚAppendingTiffWriter)r   r   r   r,   r0   r8   r   r   r,   r0   r8   r0   r8   r0   r,   r0   r8   >   é  é  é	  é   r)   r*   c                ó6  — |  t        |«      r%|| _        d| _        	 t        ||rdnd«      | _        nt        d|«      | _        d| _        | j                  j                  «       | _        | j                  «        y # t
        $ r t        |d«      | _        Y ŒLw xY w)NTzw+bzr+brõ  F)
r   r	  Úclose_fpÚopenr­   rµ  r   rÄ  Ú	beginningÚsetup)r—   ÚfnrR  s      rj   r¦   zAppendingTiffWriter.__init__:  s€   € ÙÜ�2Œ;ØˆDŒIØ ˆDŒMð)Ü˜b©3¡%°EÓ:�•ô ˜+ rÓ*ˆDŒFØ!ˆDŒMØŸ™Ÿ™›ˆŒØ�
‰
�øô ò )Ü˜b %›�–ð)ús   �A; Á;BÂBc                ó&  — | j                   j                  | j                  t        j                  «       d | _        d| _        | j                   j                  d«      x| _        }d|v | _	        |sd| _
        y d| _
        |t        vrd}t        |«      ‚| j                  |j                  t        «      rdnd«       | j                  r*| j                   j                  dt        j                   «       | j#                  «        | j%                  «        y )	Nr   r0   ó   +TFzInvalid TIFF file headerr  r  )r­   rÅ  r  ri  rl  ÚwhereToWriteNewIFDOffsetÚoffsetOfNewPager´  ÚIIMMr  ÚisFirstrp   ÚRuntimeErrorÚ	setEndianrn   r  rk  ÚskipIFDsÚgoToEnd)r—   Úiimmr  s      rj   r  zAppendingTiffWriter.setupI  sÃ   € à�‰�‰�D—N‘N¤B§K¡KÔ0à48ˆÔ%Ø ˆÔàŸ6™6Ÿ;™; q›>Ð)ˆŒ	�DØ 4˜ˆŒÙàˆDŒLØàˆŒØ”xÑØ,ˆCÜ˜sÓ#Ð#à�‰˜dŸo™o¬bÔ1‘s°sÔ;à�=Š=Ø�F‰F�K‰K˜œ2Ÿ;™;Ô'Ø�‰ŒØ�‰�rt   c                ó   — | j                   ry | j                  j                  | j                  «       | j                  j	                  d«      }|sy || j
                  k7  rd}t        |«      ‚| j                  r*| j                  j                  dt        j                  «       | j                  | j                  rdnd«      }|| j                  z  }| j                  €J ‚| j                  j                  | j                  «       | j                  || j                  rdnd«       | j                  j                  |«       | j                  «        y )Nr0   z1IIMM of new page doesn't match IIMM of first pager8   )r  r­   rÅ  r  r´  r  r  r  ri  rk  Ú_readr  Ú_writeÚfixIFD)r—   r  r  Ú
ifd_offsets       rj   ÚfinalizezAppendingTiffWriter.finalizec  sñ   € Ø�<Š<Øð 	�‰�‰�D×(Ñ(Ô)à�v‰v�{‰{˜1‹~ˆÙàà�4—9‘9ÒØEˆCÜ˜sÓ#Ð#à�=Š=Ø�F‰F�K‰K˜œ2Ÿ;™;Ô'Ø—Z‘Z T§]¢]¡¸Ó:ˆ
Ø�d×*Ñ*Ñ*ˆ
Ø×,Ñ,Ð8Ð8Ð8Ø�‰�‰�D×1Ñ1Ô2Ø�‰�J T§]¢]¡¸Ô:Ø�‰�‰�JÔØ�‰�rt   c                óD   — | j                  «        | j                  «        y rm   )r"  r  r¨   s    rj   ÚnewFramezAppendingTiffWriter.newFrame}  s   € à�‰ŒØ�
‰
�rt   c                ó   — | S rm   rD   r¨   s    rj   Ú	__enter__zAppendingTiffWriter.__enter__‚  s   € Øˆrt   c                ó>   — | j                   r| j                  «        y y rm   )r  rm  )r—   r˜   s     rj   Ú__exit__zAppendingTiffWriter.__exit__…  s   € Ø�=Š=Ø�J‰J�Lð rt   c                óP   — | j                   j                  «       | j                  z
  S rm   )r­   rÄ  r  r¨   s    rj   rÄ  zAppendingTiffWriter.tell‰  s   € Ø�v‰v�{‰{‹}˜t×3Ñ3Ñ3Ð3rt   c                óž   — |t         j                  k(  r|| j                  z  }| j                  j	                  ||«       | j                  «       S )zé
        :param offset: Distance to seek.
        :param whence: Whether the distance is relative to the start,
                       end or current position.
        :returns: The resulting position, relative to the start.
        )ri  rl  r  r­   rÅ  rÄ  )r—   r×  Úwhences      rj   rÅ  zAppendingTiffWriter.seekŒ  s>   € ð ”R—[‘[Ò Ø�d×*Ñ*Ñ*ˆFà�‰�‰�F˜FÔ#Ø�y‰y‹{Ðrt   c                ó>  — | j                   j                  dt        j                  «       | j                   j	                  «       }d|dz  z
  }d|cxk  rdk  r'n n$| j                   j                  t        |«      «       | j                   j	                  «       | _        y )Nr   rI   )r­   rÅ  ri  rÇ  rÄ  rì  r  r  )r—   rs  Ú	pad_bytess      rj   r  zAppendingTiffWriter.goToEnd™  sj   € Ø�‰�‰�A”r—{‘{Ô#Ø�f‰f�k‰k‹mˆð ˜˜r™‘Mˆ	ØˆyÔ˜2ÕØ�F‰F�L‰Lœ˜yÓ)Ô*Ø#Ÿv™vŸ{™{›}ˆÕrt   c                ó¼   — || _         | j                   › d�| _        | j                   › d�| _        | j                   › d�| j                  r
dz   | _        y dz   | _        y )NrF   ru  rÛ  r  )ÚendianÚlongFmtÚshortFmtr  Ú	tagFormat)r—   r/  s     rj   r  zAppendingTiffWriter.setEndian£  sS   € ØˆŒØŸ+™+˜ aÐ(ˆŒØŸ;™;˜- qÐ)ˆŒØ ŸK™K˜=¨Ð+°d·m²m¨sÑMˆ�ÈÑMˆ�rt   c                óª  — 	 | j                  | j                  rdnd«      }|dk(  r9| j                  j                  «       | j                  r
dz
  | _        y dz
  | _        y | j                  j                  |«       | j                  | j                  rdnd«      }| j                  j                  || j                  rdndz  t        j                  «       ŒÓ)Nr8   r0   r   r,   r»  rG   )r  r  r­   rÄ  r  rÅ  ri  rk  )r—   r!  Únum_tagss      rj   r  zAppendingTiffWriter.skipIFDs©  s©   € ØØŸ™¨¯ª¡A¸AÓ>ˆJØ˜QŠØ04·±·±³ØŸš�Añ1�Ô-ð ð -.ñ1�Ô-ð à�F‰F�K‰K˜
Ô#Ø—z‘z t§}¢}¡!¸!Ó<ˆHØ�F‰F�K‰K˜¨$¯-ª-¡B¸RÑ@Ä"Ç+Á+ÔNð rt   c               ó8   — | j                   j                  |«      S rm   )r­   rì  r�  s     rj   rì  zAppendingTiffWriter.write¶  s   € Ø�v‰v�|‰|˜DÓ!Ð!rt   c                óJ   — 	 ddddœ|   S # t         $ r d}t        |«      ‚w xY w)Nru  rF   r  )r,   r0   r8   zoffset is not supported)rË  r  )r—   Ú
field_sizer  s      rj   Ú_fmtzAppendingTiffWriter._fmt¹  s8   € ð	$Ø˜s sÑ+¨JÑ7Ð7øÜò 	$Ø+ˆCÜ˜sÓ#Ð#ð	$ús   ‚ ‹"c                ó    — t        j                  | j                  | j                  |«      z   | j                  j                  |«      «      \  }|S rm   )r   rr  r/  r8  r­   r´  )r—   r7  r¥   s      rj   r  zAppendingTiffWriter._readÀ  s=   € Ü—=‘=Ø�K‰K˜$Ÿ)™) JÓ/Ñ/°·±·±¸ZÓ1Hó
‰ˆð ˆrt   c                ó$   — | j                  d«      S ©Nr,   ©r  r¨   s    rj   Ú	readShortzAppendingTiffWriter.readShortÆ  ó   € Ø�z‰z˜!‹}Ðrt   c                ó$   — | j                  d«      S ©Nr0   r<  r¨   s    rj   ÚreadLongzAppendingTiffWriter.readLongÉ  r>  rt   c                ó:   — | �| |k7  rd| › d|› �}t        |«      ‚y y )Nzwrote only z bytes but wanted )r  )Úbytes_writtenrº  r  s      rj   Ú_verify_bytes_writtenz)AppendingTiffWriter._verify_bytes_writtenÌ  s6   € àÐ$¨¸(Ò)BØ ˜Ð.@ÀÀ
ÐKˆCÜ˜sÓ#Ð#ð *CÐ$rt   c                ó  — | j                   j                  | t        j                  «       |s|}| j                   j	                  t        j                  | j                  | j                  |«      z   |«      «      }| j                  ||«       y rm   )
r­   rÅ  ri  rk  rì  r   rt  r/  r8  rD  )r—   r¥   r7  Únew_field_sizerC  s        rj   Ú_rewriteLastz AppendingTiffWriter._rewriteLastÒ  sh   € ð 	�‰�‰�Z�K¤§¡Ô-ÙØ'ˆNØŸ™Ÿ™Ü�K‰K˜Ÿ™ d§i¡i°Ó&?Ñ?ÀÓGó
ˆð 	×"Ñ" =°.ÕArt   c                ó*   — | j                  |dd«       y )Nr,   r0   ©rG  r‰  s     rj   ÚrewriteLastShortToLongz*AppendingTiffWriter.rewriteLastShortToLongÝ  s   € Ø×Ñ˜%  AÕ&rt   c                ó&   — | j                  |d«      S r;  rI  r‰  s     rj   ÚrewriteLastShortz$AppendingTiffWriter.rewriteLastShortà  ó   € Ø× Ñ  ¨Ó*Ð*rt   c                ó&   — | j                  |d«      S r@  rI  r‰  s     rj   ÚrewriteLastLongz#AppendingTiffWriter.rewriteLastLongã  rM  rt   c                ó¾   — | j                   j                  t        j                  | j                  | j                  |«      z   |«      «      }| j                  ||«       y rm   )r­   rì  r   rt  r/  r8  rD  )r—   r¥   r7  rC  s       rj   r  zAppendingTiffWriter._writeæ  sF   € ØŸ™Ÿ™Ü�K‰K˜Ÿ™ d§i¡i°
Ó&;Ñ;¸UÓCó
ˆð 	×"Ñ" =°*Õ=rt   c                ó(   — | j                  |d«       y r;  ©r  r‰  s     rj   Ú
writeShortzAppendingTiffWriter.writeShortì  ó   € Ø�‰�E˜1Õrt   c                ó(   — | j                  |d«       y r@  rR  r‰  s     rj   Ú	writeLongzAppendingTiffWriter.writeLongï  rT  rt   c                ór   — | j                  «        | j                  r| j                  j                  «        y y rm   )r"  r  r­   rm  r¨   s    rj   rm  zAppendingTiffWriter.closeò  s$   € Ø�‰ŒØ�=Š=Ø�F‰F�L‰L�Nð rt   c           
     óò  — | j                  | j                  rdnd«      }t        |«      D �]É  }t        j                  | j
                  | j                  j                  | j                  rdnd«      «      \  }}}| j                  |   }||z  }| j                  rdnd}||k  }	|	s0| j                  |«      | j                  z   }
| j                  |
|«       || j                  v rä| j                  j                  «       }t        j                  dt        j                   |«      j"                  |t%        j&                  |d«      |||«       |	r2| j)                  ||«       | j                  j+                  ||z   «       �ŒR| j                  j+                  
«       | j)                  ||«       | j                  j+                  |«       �Œœ|	s�Œ | j                  j+                  |t,        j.                  «       �ŒÌ y )Nr8   r,   rG   r0   z;fixIFD: %s (%d) - type: %s (%d) - type size: %d - count: %dr½  )r  r  rÉ  r   rr  r2  r­   r´  Ú
fieldSizesr  rG  ÚTagsrÄ  rÌ  rÍ  r   r1  r	  r   rÊ  Ú_fixOffsetsrÅ  ri  rk  )r—   r4  r„   r9  Ú
field_typerÒ  r7  rÑ  rç  Úis_localr×  Úcur_poss               rj   r   zAppendingTiffWriter.fixIFD÷  s…  € Ø—:‘: 4§=¢=™a°aÓ8ˆä�x“ó $	3ˆAÜ%+§]¡]Ø—‘ §¡§¡°$·-²-©BÀQÓ Gó&Ñ"ˆC�˜Uð Ÿ™¨Ñ4ˆJØ# eÑ+ˆJØ ŸMšM‘q¨qˆHØ! XÑ-ˆHÙØŸ™ HÓ-°×0DÑ0DÑD�Ø×!Ñ! &¨(Ô3à�d—i‘iÑØŸ&™&Ÿ+™+›-�ä—‘ØQÜ—O‘O CÓ(×-Ñ-ØÜ—I‘I˜j¨)Ó4ØØØôñ Ø×$Ñ$ U¨JÔ7Ø—F‘F—K‘K ¨(Ñ 2Ö3à—F‘F—K‘K Ô'Ø×$Ñ$ U¨JÔ7Ø—F‘F—K‘K Ö(ãà—‘—‘˜H¤b§k¡kÖ2ñI$	3rt   c                ó  — t        |«      D ]ó  }| j                  |«      }|| j                  z  }d}| j                  r|dv r|dk\  rd}n|dk(  r|dk\  rd}|r—|dk7  rd	}t	        |«      ‚| j                  |||«       | dz
  dz
  }| j                  j                  |t        j                  «       | j                  |«       | j                  j                  d|z
  t        j                  «       Œâ| j                  ||«       Œõ y )
Nr   )r,   r0   l        r8   r,   r&   r0   r   znot implemented)rÉ  r  r  r  r  rG  r­   rÅ  ri  rk  rS  )r—   rÒ  r7  r„   r×  rF  r  Úrewinds           rj   r[  zAppendingTiffWriter._fixOffsets 	  sî   € Ü�u“ò 	6ˆAØ—Z‘Z 
Ó+ˆFØ�d×*Ñ*Ñ*ˆFàˆNØ�}Š} ¨vÑ!5¸&ÀEº/à!"‘Ø˜q’ V¨u¢_à!"�ÙØ˜A’:Ø+�CÜ& sÓ+Ð+ð ×!Ñ! &¨*°nÔEà(˜¨1Ñ,¨qÑ0�Ø—‘—‘˜F¤B§K¡KÔ0Ø—‘ Ô/Ø—‘—‘˜A ™J¬¯©Õ4à×!Ñ! &¨*Õ5ñ3	6rt   c                ó>   — |rd}n|rd}nd}| j                  ||«      S )Nr,   r0   r   )r[  )r—   rÒ  ÚisShortÚisLongr7  s        rj   Ú
fixOffsetszAppendingTiffWriter.fixOffsets<	  s,   € ñ Ø‰JÙØ‰JàˆJØ×Ñ  zÓ2Ð2rt   N)F)r  r´  rR  rÜ   r›   rØ   rï  )r›   r"   )r˜   rÛ   r›   rØ   rÙ   )r×  r¤   r+  r¤   r›   r¤   )r/  r¯   r›   rØ   )rù   r#   r›   r¤   )r7  r¤   r›   r¯   )r7  r¤   r›   r¤   )rC  rî  rº  r¤   r›   rØ   rP   )r¥   r¤   r7  r¤   rF  r¤   r›   rØ   )r¥   r¤   r›   rØ   )r¥   r¤   r7  r¤   r›   rØ   )rÒ  r¤   r7  r¤   r›   rØ   )FF)rÒ  r¤   rb  rÜ   rc  rÜ   r›   rØ   )$rÞ   rß   rà   rY  rZ  r¦   r  r"  r$  r&  r(  rÄ  rÆ  rl  rÅ  r  r  r  rì  r8  r  r=  rA  ÚstaticmethodrD  rG  rJ  rL  rO  r  rS  rV  rm  r   r[  rd  rD   rt   rj   r  r    s
  „ ò€Jò(€Dôóó4ó4ó
óó4ð /1¯k©kô ó-óNóOó"ó$óóóð ò$ó ð$ð BCð	BØð	BØ&)ð	BØ;>ð	Bà	ó	Bó'ó+ó+ó>óóóó
'3óR6ð: AFð	3Øð	3Ø#'ð	3Ø9=ð	3à	ô	3rt   r  c                óX  — t        | j                  j                  dg «      «      }t        | d«      s|st	        | ||«      S | j                  «       }	 t        |«      5 }| g|z   D ]ˆ  }|j                  | «      }t        |d«      sd|_        t        |dd«      }t        |«      D ]@  }	|j                  |	«       |j                  «        t	        |||«       |j                  «        ŒB ||_        ŒŠ 	 d d d «       | j                  |«       y # 1 sw Y   ŒxY w# | j                  |«       w xY w)NÚappend_imagesr-  rÏ  rD   r   )rø  rÎ  rÊ  r;  rð  rÄ  r  Ú_attach_default_encoderinforÏ  r•   rÉ  rÅ  rØ  r$  )
r1  r¶  r  rg  Úcur_idxÚtfÚimsrÎ  Únfrrì   s
             rj   Ú	_save_allrm  H	  s  € Ü˜Ÿ™×+Ñ+¨O¸RÓ@ÓA€MÜ�2�zÔ"©=Ü�R˜˜XÓ&Ð&à�g‰g‹i€GðÜ  Ó$ð 	.¨Ø�t˜mÑ+ò .�Ø!×=Ñ=¸bÓA�Ü˜s OÔ4Ø(*�CÔ%Ü˜c :¨qÓ1�ä  ›:ò "�CØ—H‘H˜S”MØ—H‘H”JÜ˜#˜r 8Ô,Ø—K‘K•Mð	"ð
 #.�•ñ.÷	.ð 	�‰�Õ÷	.ð 	.ûð 	�‰�Õús%   ÁD ÁBD
Ã0D Ä
DÄD ÄD)z.tifz.tiffz
image/tiff)rr   r  r›   rÜ   )rz   r×   r{   r¤   r›   ú!tuple[IntegralLike, IntegralLike])rz   rx   r{   r¤   r‹   r¤   r›   rn  )r™   r¯   r›   r   )rì   r¤   rí   r¤   r›   z$Callable[[_LoaderFunc], _LoaderFunc])rì   r¤   r›   z2Callable[[Callable[..., Any]], Callable[..., Any]])r  ztuple[int, str, str]r›   rØ   )r  zdict[int, Any]r›   rØ   )r1  zImage.Imager¶  rõ  r  zstr | bytesr›   rØ   )ŠÚ
__future__r   Ú__lazy_modules__rÆ  r
   Úloggingr   ri  r   r   Úcollections.abcr   r   r	   r   Únumbersr   r   Útypingr   r   r   Ú r   r   r   r   r   r   Ú_binaryr   rC  r   rE  Ú_utilr   r   r   r£   r    r!   r"   Ú_typingr#   r$   r%   Ú	getLoggerrÞ   rÌ  r“  rÐ  rß  r  r  rç  r…  r†  rŠ  r  rb  rƒ  rÕ  rá  rŒ  r–  rà  r�  r‘  r�  r’  rè  rÖ  r×  rØ  Ú	PREDICTORr›  r—  r˜  r•  rä  ré  r‹  r‰  Ú
JPEGTABLESr„  râ  rÙ  rÓ  rÔ  rš  rÒ  r<  rå  ÚIMAGEJ_META_DATA_BYTE_COUNTSÚIMAGEJ_META_DATAr~  r0  rá  rŽ  rŠ   r�  rp   rs   r~   rŽ   r�   rö  r’   rœ   rx   r  rÜ   rï   rð   rô   r
  r¤   Ú
_IFDv2Baserä   rì   r	  rê   rñ  r   ÚImageFileDirectoryr  rÍ  r»  rð  ÚBytesIOr  rm  Úregister_openrµ  Úregister_saveÚregister_save_allÚregister_extensionsÚregister_mime)ÚkrG  s   00rj   ú<module>r‡     s£  ðöR #òÐ ó 
Û Û Û Û 	Û Û ß 4Ý ß $ß  Ñ  ç J× JÝ !Ý !ß )Ý à€ÙÝ(ß%ç=Ñ=à	ˆ×	Ñ	˜8Ó	$€ð €Ø€Ø€
à
€Ø
€ð €Ø€
Ø€Ø€Ø€Ø Ð Ø€	ØÐ Ø€Ø€Ø€Ø€Ø€Ø€ØÐ Ø€ØÐ Ø€Ø€	Ø	€Ø€	Ø€Ø€	Ø€
Ø€Ø€Ø	€Ø€Ø€Ø€
ØÐ ØÐ Ø€	Ø€Ø€Ø€
Ø
€Ø	€Ø€ð  %Ð ØÐ ðà€uðð €|ðð €xð	ð
 €xðð €zðð €{ðð €vðð Ððð 
ˆ=ðð 
ˆ:ðð 
Ððð 
ˆ>ðð 
ˆ=ðð 
ˆ?ðð  
ˆ6ð!ð" 
ˆ6ð#ð$ 
ˆ6ð%Ð ð* *:×)?Ñ)?Ó)A×B¡  A˜˜1™ÓBÐ ðð ˆˆD�!�T˜2Ð ðð ˆˆD�!�T˜2Ð ð	ð
 ˆˆD�!�T˜2Ð ðð ˆˆD�!�T˜2Ð ðð ˆˆD�!�T˜2Ð 
ðð ˆˆD�!�T˜2Ð 
ðð ˆˆD�!�T˜2Ð ðð ˆˆD�!�T˜2Ð ðð ˆˆD�!�T˜2Ð ðð ˆˆD�!�T˜2Ð ðð ˆˆD�!�T˜2Ð ðð ˆˆD�!�T˜2Ð ðð ˆˆD�!�T˜2Ð ðð  ˆˆD�!�T˜2Ð ð!ð" ˆˆD�!�T˜2Ð ð#ð$ ˆˆD�!�T˜2Ð ð%ð& ˆˆD�!�T˜2Ð ñ'ð( ˆˆD�!�T˜2Ð ð)ð* ˆˆD�!�T˜2Ð ð+ð, ˆˆD�!�T˜2Ð ð-ð. ˆˆD�!�T˜2Ð ð/ð0 ˆˆD�!�T˜2Ð ð1ð2 ˆˆD�!�T˜2Ð ð3ð4 ˆˆD�!�T˜2Ð ð5ð6 ˆˆD�!�T˜2Ð ð7ð8 ˆˆD�!�T˜2Ð ð9ð: ˆˆD�!�T˜2Ð ð;ð< ˆˆD�!�T˜2Ð ð=ð> ˆˆD�!�T˜2Ð 
ð?ð@ ˆˆD�!�T˜2Ð 
ðAðB ˆˆD�!�T˜2Ð 
ðCðD ˆˆD�!�T˜2Ð 
ðEðF ˆˆD�!�T˜2Ð ðGðH ˆˆD�!�T˜2Ð òIðJ ˆˆD�!�U˜BÐÐ!1ðKðL ˆˆD�!�U˜BÐÐ!1ðMðN ˆˆD�!�U˜BÐÐ!1ðOðP ˆˆD�!�U˜BÐÐ!3ðQðR ˆˆD�!�U˜BÐÐ!2ðSðT ˆˆD�!�U˜BÐ ðUðV ˆˆD�!�U˜BÐ ðWðX ˆˆD�!�U˜BÐ ðYðZ ˆˆD�!�U˜BÐ ð[ð\ ˆˆD�!�U˜BÐ ð]ð^ ˆˆD�!�U˜BÐ ð_ð` ˆˆD�!�U˜BÐ ðaðb ˆˆD�!�U˜BÐ ðcðd ˆˆD�!�U˜BÐ ðeðf ˆˆD�!�V˜TÐ" Kðgðh ˆˆD�!�V˜TÐ" Kðiðj ˆˆD�!�V˜TÐ" Lòkðl ˆˆD�!�V˜TÐ" Lðmðn ˆˆD�!�V˜TÐ" Lðoðp ˆˆD�!�V˜TÐ" Lðqðr ˆˆD�!�Y Ð# ^ðsðt ˆˆD�!�Y Ð# ^ðuðv ˆˆD�!�Y Ð#Ð%5ðwðx ˆˆD�!�Y Ð#Ð%5ðyðz ˆˆD�!�\ 2Ð&Ð(8ð{ð| ˆˆD�!�\ 2Ð&Ð(8ð}ð~ ˆˆD�!�\ 4Ð(¨/ðð@ ˆˆD�!�\ 4Ð(¨/ðAðB ˆˆD�!�_ fÐ-Ð/?ðCðD ˆˆD�!�_ fÐ-Ð/?ðEðF ˆˆD�!Ð'¨Ð3Ð5FðGðH ˆˆD�!Ð'¨Ð3Ð5FðIðJ ˆˆD�!�\ 4Ð(Ð*:ðKðL ˆˆD�!�\ 4Ð(Ð*:òMðN ˆˆD�!�_ fÐ-Ð/@ðOðP ˆˆD�!�_ fÐ-Ð/@ðQðR ˆˆD�!Ð'¨Ð3Ð5GðSðT ˆˆD�!Ð'¨Ð3Ð5GðUðV ˆˆD�!�\ 4Ð(Ð*:ðWðX ˆˆD�!�\ 4Ð(Ð*:ðYðZ ˆˆD�!�_ fÐ-Ð/@ð[ð\ ˆˆD�!�_ fÐ-Ð/@ð]ð^ ˆˆD�!Ð'¨Ð3Ð5Gð_ð` ˆˆD�!Ð'¨Ð3Ð5Gðaðb ˆˆD�!�\ 6Ð*Ð,<ðcðd ˆˆD�!�\ 6Ð*Ð,<ðeðf ˆˆD�!�\ 2Ð&Ð(:ðgðh ˆˆD�!�\ 2Ð&Ð(:ðiðj ˆˆD�!Ð% rÐ*Ð,@ðkðl ˆˆD�!Ð% rÐ*Ð,@ðmðn ˆˆD�!Ð% tÐ,Ð.Aòoðp ˆˆD�!Ð% tÐ,Ð.Aðqðr ˆˆD�!Ð% tÐ,Ð.Bðsðt ˆˆD�!Ð% tÐ,Ð.Bðuðv ˆˆD�!Ð% tÐ,Ð.Bðwðx ˆˆD�!Ð% tÐ,Ð.Bðyðz ˆˆD�!�T˜2Ð ð{ð| ˆˆD�!�T˜2Ð ð}ð~ ˆˆD�!�T˜2Ð ðð@ ˆˆD�!�T˜2Ð ðAðB ˆˆD�!�T˜2Ð ðCðD ˆˆD�!�T˜2Ð ðEðF ˆˆD�!�T˜2Ð ðGðH ˆˆD�!�T˜2Ð ðIðJ ˆˆD�!�T˜2Ð ðKðL ˆˆD�!�T˜2Ð ðMðN ˆˆD�!�T˜2Ð ðOðP ˆˆD�!�T˜2Ð òQðR ˆˆD�!�T˜2Ð 
ðSðT ˆˆD�!�T˜2Ð 
ðUðV ˆˆD�!�V˜TÐ" KðWðX ˆˆD�!�V˜TÐ" KðYðZ ˆˆD�!�V˜TÐ" Lð[ð\ ˆˆD�!�V˜TÐ" Lð]ð^ ˆˆD�!�T˜2Ð ð_ð` ˆˆD�!�T˜2Ð ðaðb ˆˆD�!�\ 2Ð&Ð(8ðcðd ˆˆD�!�\ 2Ð&Ð(8ðeðf ˆˆD�!�_ dÐ+Ð->ðgðh ˆˆD�!�_ dÐ+Ð->ðiðj ˆˆD�!Ð'¨Ð0Ð2Dðkðl ˆˆD�!Ð'¨Ð0Ð2Dðmðn ˆˆD�!Ð% rÐ*Ð,@ðoðp ˆˆD�!Ð% rÐ*Ð,@ðqðr ˆˆD�!�T˜2Ð 
ñsðt ˆˆD�!�T˜2Ð 
ØˆˆD�!�Y Ð#Ð%7ØˆˆD�!�Y Ð#Ð%7ØˆˆD�!�Y Ð# ^ØˆˆD�!�Y Ð# ^ñ}€	ñB ÑA°yÔAÓAÐ ò€ó.ð%Ø	'ð%Ø25ð%à&ó%ðØ	ðØ"ðØ-0ðà&óð& 68€Ð2Ó 7Ø13€Ð.Ó 3óôF#�(ô F#ðR Ð/°¸Ð=¸sÐBÑC€ó	óóñ$ Ø  S Ñ)�Jà€Jôg$˜Jô g$ðT (6Ð Ô $Ø(7Ð Ô %Ø�—‘“ò J�I€CˆØ�<‰<˜˜SÓ!€DÙÐ! U¨4¨& >°>À#Ñ3FÀqÑ3IÔJÙÐ! V¨D¨6 ?°OÀCÑ4HÕIðJð �O S¨$ôXÐ1ô Xðx +Ð ôM �I×'Ñ'ô M ðnð ˆ#ˆr�1�a˜˜tÐ	$ðð ˆ#ˆr�1�a˜˜tÐ	$ð	ð
 	ˆ4��Q˜˜6 1Ð
%ðð ˆ#ˆr�1�a˜˜tÐ	$ðð 	ˆ4��Q˜˜6 1Ð
%ðð ˆ'�2�q˜!˜U DÐ	)ðð ˆV�R˜˜A˜u dÐ+ðð ˆg�r˜1˜a ¨Ð-ðð ˆ'�2�q˜!˜U DÐ	)ðð 
ˆE�2�q˜!˜Y¨Ð-ðð ˆV�R˜˜A˜|¨QÐ/ðð ˆV�R˜˜A˜|¨QÐ/ðð ˆV�R˜˜A˜|¨TÐ2ðð  ˆg�r˜1˜a ¨DÐ1ð!ð" 
ˆE�2�q˜!˜Y¨Ð-ð#ð$ ˆg�r˜1˜a ¨Ð-ð%€	ó,"óy-ôx	i3˜"Ÿ*š*ô i3óX	ð8 €× Ò �M×(Ò(¨-¸Ô AØ €× Ò �M×(Ò(¨%Ô 0Ø €× Ò ˜×,Ò,¨iÔ 8à €× Ò ˜-×.Ò.°¸Ð0AÔ Bà €× Ò �M×(Ò(¨,Õ 7ùóYF Cs   Å`