Ë
    £ehë}  ã                   ó
  — d dl mZmZmZmZm	Z	 d dl
mZ d dlZd dlmZmZ d dlZd dlZd dlZd dlZdZdZdZdZd	Zd
Zd
ZdZdZdZdZdZdZ  ejB                  e"«      Z# G d„ de$«      Z%d„ Z&e dz   fd„Z'	 dddœd„Z(d„ Z)d„ Z*d„ Z+y)é    )ÚfixedToFloatÚfloatToFixedÚfloatToFixedToStrÚstrToFixedToFloatÚotRound)ÚsafeEvalN)ÚCounterÚdefaultdicti €  i @  i    é€   é@   éÀ   é?   é   iÿ  c                   ó8  — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	i dfd	d
œd„Z
d„ Zd„ Zed„ «       Zed„ «       Zed„ «       Zd d„Zed!d	d
œd„«       Zed„ «       Zed d„«       Zed d„«       Zed d„«       Zed"d„«       Zed„ «       Zd„ Zd„ Zd„ Zd„ Zd#d„Zd„ Zd„ Zy)$ÚTupleVariationc                 óN   — |j                  «       | _        t        |«      | _        y ©N)ÚcopyÚaxesÚlistÚcoordinates)Úselfr   r   s      úc/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/fontTools/ttLib/tables/TupleVariation.pyÚ__init__zTupleVariation.__init__(   s   € Ø—I‘I“KˆŒ	Ü Ó,ˆÕó    c                 óÈ   — dj                  t        | j                  j                  «       D ��cg c]  \  }}|›d|›�‘Œ c}}«      «      }d|›d| j                  ›d�S c c}}w )Nú,ú=z<TupleVariation ú ú>)ÚjoinÚsortedr   Úitemsr   )r   ÚnameÚvaluer   s       r   Ú__repr__zTupleVariation.__repr__,   sP   € Ø�x‰xÜÀÇÁÇÁÓAR×S±°°ušt¡UÒ+ÓSÓTó
‰ò ,0°×1AÓ1AÐBÐBùó Ts   ®Ac                 ój   — | j                   |j                   k(  xr | j                  |j                  k(  S r   )r   r   )r   Úothers     r   Ú__eq__zTupleVariation.__eq__2   s+   € Ø×Ñ 5×#4Ñ#4Ñ4ÒP¸¿¹ÀeÇjÁjÑ9PÐPr   c                 ó²   — d | j                   vr
t        «       S t        t        | j                   «      D ��cg c]
  \  }}|€Œ	|‘Œ c}}«      }|r|S d S c c}}w r   )r   Ú	frozensetÚ	enumerate)r   ÚiÚpÚuseds       r   ÚgetUsedPointszTupleVariation.getUsedPoints5   sS   € à�t×'Ñ'Ñ'Ü“;ÐÜ¬	°$×2BÑ2BÓ(C×U¡  1ÀqÁ}š!ÓUÓVˆáˆtÐ% Ð%ùó Vs   ¶
A
ÁA
c                 ó:   — t        d„ | j                  D «       «      S )zÄReturns True if this TupleVariation has any visible impact.

        If the result is False, the TupleVariation can be omitted from the font
        without making any visible difference.
        c              3   ó$   K  — | ]  }|d u–— Œ
 y ­wr   © ©Ú.0Úcs     r   ú	<genexpr>z+TupleVariation.hasImpact.<locals>.<genexpr>C   s   è ø€ Ò; Q�1˜D”=Ñ;ùó   ‚)Úanyr   )r   s    r   Ú	hasImpactzTupleVariation.hasImpact=   s   € ô Ñ;¨$×*:Ñ*:Ô;Ó;Ð;r   c           	      ó
  — |j                  d«       |j                  «        |D ]µ  }| j                  j                  |«      }|€Œ!|\  }}}t	        |d«      }t        |d«      }||k(  r$||k(  r|j                  d|t        |d«      ¬«       n>d|fdt        |d«      fdt        |d«      fd	t        |d«      fg}	|j                  d|	«       |j                  «        Œ· d
}
t        | j                  «      D ]Ê  \  }}t        |«      t        k(  r<t        |«      dk(  r.|j                  d||d   |d   ¬«       |j                  «        d}
ŒTt        |«      t        k(  r'|j                  d||¬«       |j                  «        d}
Œ�|€Œ�t        j                  d«       |j!                  d|z  «       |j                  «        d}
ŒÌ |
s!|j!                  d«       |j                  «        |j#                  d«       |j                  «        y )NÚtupleç        Úcoordé   )Úaxisr%   r@   Úminr%   ÚmaxFé   Údeltar   é   )ÚptÚxÚyT)Úcvtr%   zbad delta formatzbad delta #%dz	no deltas)ÚbegintagÚnewliner   ÚgetrA   rB   Ú	simpletagÚfl2strr,   r   Útyper<   ÚlenÚintÚlogÚerrorÚcommentÚendtag)r   ÚwriterÚaxisTagsr@   r%   ÚminValueÚmaxValueÚdefaultMinValueÚdefaultMaxValueÚattrsÚwrote_any_deltasr-   rD   s                r   ÚtoXMLzTupleVariation.toXMLE   sæ  € Ø�‰˜Ô Ø�‰ÔØò 	!ˆDØ—I‘I—M‘M $Ó'ˆEØÑ Ø,1Ñ)�˜% Ü"% e¨S£/�Ü"% e¨S£/�Ø˜Ò.°8¸Ò3NØ×$Ñ$ W°4¼vÀeÈRÓ?PÐ$ÕQð   ˜Ø¤ x°Ó 4Ð5Ø ¤&¨°Ó"3Ð4Ø¤ x°Ó 4Ð5ð	�Eð ×$Ñ$ W¨eÔ4Ø—‘Õ ð!	!ð" !ÐÜ! $×"2Ñ"2Ó3ò 	(‰HˆAˆuÜ�E‹{œeÒ#¬¨E«
°aªØ× Ñ  ¨Q°%¸±(¸eÀA¹hÐ ÔGØ—‘Ô Ø#'Ñ Ü�e“¤Ò#Ø× Ñ  ¨a°uÐ Ô=Ø—‘Ô Ø#'Ñ ØÑ"Ü—	‘	Ð,Ô-Ø—‘˜°Ñ2Ô3Ø—‘Ô Ø#'Ñ ð	(ñ  Ø�N‰N˜;Ô'Ø�N‰NÔØ�‰�gÔØ�‰Õr   c           	      ód  — |dk(  rw|d   }t        |d   d«      }t        |d«      }t        |d«      }t        |j                  d|«      d«      }t        |j                  d|«      d«      }	|||	f| j                  |<   y |dk(  r¯d	|v r<t        |d	   «      }
t        |d
   «      }t        |d   «      }||f| j                  |
<   y d|v r,t        |d   «      }t        |d   «      }|| j                  |<   y t        j                  ddj                  t        |j                  «       «      «      z  «       y y )Nr>   r@   r%   r?   r=   rA   rB   rD   rF   rG   rH   rI   zbad delta format: %sz, )Ústr2flrA   rB   rL   r   r   r   rR   Úwarningr!   r"   Úkeys)r   r$   r\   Ú_contentr@   r%   rZ   r[   rX   rY   ÚpointrG   rH   rI   s                 r   ÚfromXMLzTupleVariation.fromXMLn   s$  € Ø�7Š?Ø˜‘=ˆDÜ˜5 ™>¨2Ó.ˆEÜ! %¨›oˆOÜ! %¨›oˆOÜ˜eŸi™i¨¨Ó?ÀÓDˆHÜ˜eŸi™i¨¨Ó?ÀÓDˆHØ'¨°Ð9ˆD�I‰I�dŠOØ�WŠ_Ø�u‰}Ü   t¡Ó-�Ü˜U 3™ZÓ(�Ü˜U 3™ZÓ(�Ø+,¨a¨&�× Ñ  Ò'Ø˜%‘Ü˜u U™|Ó,�Ü   w¡Ó0�Ø(-�× Ñ  Ò%ä—‘Ð2°T·Y±Y¼vÀeÇjÁjÃlÓ?SÓ5TÑTÕUð r   NT©ÚoptimizeSizec          	      óê  — t        | j                  j                  «       «      t        |«      k  s"J d| j                  j                  «       |f«       ‚g }g }|€$| j                  «       }|€y| j	                  |«      }| j                  |«      }|j                  |«      }	|	€t        }	|j                  |«       | j                  |«      }
|
�|	t        z  }	|j                  |
«       |r|	t        z  }	|j                  |«       |j                  | j                  |¬«      «       dj                  |«      }|j                  dt        j                   dt#        |«      |	«      «       dj                  |«      |fS )NzUnknown axis tag found.)r   r   rf   r   r   ú>HH)Úsetr   rb   r0   ÚcompilePointsÚcompileCoordrL   ÚEMBEDDED_PEAK_TUPLEÚappendÚcompileIntermediateCoordÚINTERMEDIATE_REGIONÚPRIVATE_POINT_NUMBERSÚcompileDeltasr!   ÚinsertÚstructÚpackrP   )r   rW   ÚsharedCoordIndicesÚ	pointDatarg   Ú	tupleDataÚauxDataÚ
usedPointsr>   ÚflagsÚintermediateCoords              r   ÚcompilezTupleVariation.compile„   sa  € ô �4—9‘9—>‘>Ó#Ó$¬¨H«Ò5ð 	
Ø%Ø�I‰I�N‰NÓØð8
ó 	
Ð5ð ˆ	ØˆàÐØ×+Ñ+Ó-ˆJØÐ!ØØ×*Ñ*¨:Ó6ˆIà×!Ñ! (Ó+ˆØ"×&Ñ& uÓ-ˆØˆ=Ü'ˆEØ×Ñ˜UÔ#à ×9Ñ9¸(ÓCÐØÐ(ØÔ(Ñ(ˆEØ×ÑÐ.Ô/ñ ØÔ*Ñ*ˆEØ�N‰N˜9Ô%à�‰�t×)Ñ)°|Ð)ÓDÔEØ—(‘(˜7Ó#ˆà×Ñ˜œFŸK™K¨¬s°7«|¸UÓCÔDØ�x‰x˜	Ó" GÐ+Ð+r   c           
      óü   — g }| j                   }|D ]Y  }|j                  |«      }|€|j                  d«       Œ(|j                  t        j                  dt        |d   d«      «      «       Œ[ dj                  |«      S )Ns     ú>hrE   r?   r   )r   rL   rn   rt   ru   Úfl2fir!   )r   rW   Úresultr   r@   Útriples         r   rl   zTupleVariation.compileCoord¬   sr   € ØˆØ�y‰yˆØò 	GˆDØ—X‘X˜d“^ˆFØˆ~Ø—‘˜gÕ&à—‘œfŸk™k¨$´°f¸Q±iÀÓ0DÓEÕFð	Gð �x‰x˜ÓÐr   c           
      óà  — d}|D ]H  }| j                   j                  |d«      \  }}}t        |d«      }t        |d«      }||k7  s||k7  sŒFd} n |sy g }	g }
|D ]€  }| j                   j                  |d«      \  }}}|	j	                  t        j                  dt        |d«      «      «       |
j	                  t        j                  dt        |d«      «      «       Œ‚ dj                  |	|
z   «      S )NF©r=   r=   r=   r=   Tr   r?   r   )	r   rL   rA   rB   rn   rt   ru   r€   r!   )r   rW   Úneededr@   rX   r%   rY   rZ   r[   Ú	minCoordsÚ	maxCoordss              r   ro   z'TupleVariation.compileIntermediateCoord·   sò   € ØˆØò 	ˆDØ(,¯	©	¯©°d¸OÓ(LÑ%ˆH�e˜XÜ! %¨›oˆOÜ! %¨›oˆOØ˜OÒ+°¸_Ó1LØ�Ùð	ñ ØØˆ	Øˆ	Øò 	EˆDØ(,¯	©	¯©°d¸OÓ(LÑ%ˆH�e˜XØ×ÑœVŸ[™[¨¬u°X¸rÓ/BÓCÔDØ×ÑœVŸ[™[¨¬u°X¸rÓ/BÓCÕDð	Eð �x‰x˜	 IÑ-Ó.Ð.r   c           
      ó‚   — i }|}| D ]3  }t        t        j                  d|||dz    «      d   d«      ||<   |dz  }Œ5 ||fS )Nr   rC   r   r?   )Úfi2flrt   Úunpack)rW   ÚdataÚoffsetr>   Úposr@   s         r   ÚdecompileCoord_zTupleVariation.decompileCoord_Ê   s[   € àˆØˆØò 	ˆDÜ¤§¡¨d°D¸¸sÀQ¹wÐ4GÓ HÈÑ KÈRÓPˆE�$‰KØ�1‰H‰Cð	ð �cˆzÐr   c                 ó’  — | syt        | «      } | j                  «        t        | «      }t        «       }|dk  r|j	                  |«       n+|j	                  |dz	  dz  «       |j	                  |dz  «       d}d}d}||k  rÆd}t        |«      }|j	                  d«       d }||k  r�||k  r|| |   }	|	|z
  }
|€d|
cxk  xr dk  nc }|r|
dkD  s|
dk  rnS|r|j	                  |
«       n(|j	                  |
dz	  «       |j	                  |
dz  «       |	}|dz  }|dz  }||k  r||k  rŒ||r	|dz
  ||<   n|dz
  t
        z  ||<   ||k  rŒÆ|S )Nó    r   é   éÿ   r   r   rE   )r   ÚsortrP   Ú	bytearrayrn   ÚPOINTS_ARE_WORDS)ÚpointsÚ	numPointsr�   ÚMAX_RUN_LENGTHr�   Ú	lastValueÚ	runLengthÚ	headerPosÚuseByteEncodingÚcurValuerD   s              r   rk   zTupleVariation.compilePointsÓ   sv  € ñ Øô �f“ˆØ�‰ŒÜ˜“Kˆ	ä“ˆð �tÒØ�M‰M˜)Õ$à�M‰M˜9¨™>¨TÑ1Ô2Ø�M‰M˜) dÑ*Ô+àˆØˆØˆ	Ø�IŠoØˆIä˜F›ˆIØ�M‰M˜!Ôà"ˆOØ˜	’/ i°>Ò&AØ! #™;�Ø  9Ñ,�Ø"Ð*Ø&'¨5Ö&8°DÔ&8�OÙ"¨°ª¸Àº	àñ #Ø—M‘M %Õ(à—M‘M %¨1¡*Ô-Ø—M‘M %¨$¡,Ô/Ø$�	Ø�q‘�Ø˜Q‘�	ð# ˜	’/ i°>Ó&Añ$ Ø$-°¡M��yÒ!à%.°¡]Ô6FÑ$F��yÑ!ð9 �I‹oð< ˆr   c                 óF  — |dv sJ ‚|}||   }|dz  }|t         z  dk7  r|t        z  dz  ||   z  }|dz  }|dk(  rt        | «      |fS g }t        |«      |k  rÅ||   }|dz  }|t        z  dz   }d}	|t         z  dk7  rt	        j                  d«      }
|dz  }nt	        j                  d«      }
|}|
j                  ||||z    «       t        j                  dk7  r|
j                  «        t        |
«      |k(  sJ ‚||z  }|j                  |
«       t        |«      |k  rŒÅg }d}|D ]  }||z  }|j                  |«       Œ |}~|D �ch c]  }|dk  s|| k\  sŒt        |«      ’Œ }}|r4t        j                  d	d
j                  t        |«      «      ›d|›d�«       ||fS c c}w )zJ(numPoints, data, offset, tableTag) --> ([point1, point2, ...], newOffset)©ÚcvarÚgvarrE   r   r‘   ÚHrC   ÚBÚbigzpoint r   z out of range in 'z' table)r•   ÚPOINT_RUN_COUNT_MASKÚrangerP   ÚarrayÚ	frombytesÚsysÚ	byteorderÚbyteswapÚextendrn   ÚstrrR   ra   r!   r"   )r—   r‹   rŒ   ÚtableTagr�   ÚnumPointsInDatar�   Ú	runHeaderÚnumPointsInRunrd   r–   Ú
pointsSizeÚabsoluteÚcurrentrD   r.   Ú	badPointss                    r   ÚdecompilePoints_zTupleVariation.decompilePoints_  sá  € ð Ð+Ñ+Ð+Ð+ØˆØ˜s™)ˆØˆq‰ˆØÔ.Ñ.°1Ò4Ø.Ô1EÑEÈ!ÑKÈdÐSVÉiÑWˆOØ�1‰HˆCØ˜aÒÜ˜)Ó$ cÐ*Ð*àˆÜ�&‹k˜OÒ+Ø˜S™	ˆIØ�1‰HˆCØ'Ô*>Ñ>À!ÑCˆNØˆEØÔ,Ñ,°Ò2ÜŸ™ SÓ)�Ø+¨aÑ/‘
äŸ™ SÓ)�Ø+�
Ø×Ñ˜T #¨¨jÑ(8Ð9Ô:Ü�}‰} Ò%Ø—‘Ô!ä�v“; .Ò0Ð0Ð0Ø�:ÑˆCà�M‰M˜&Ô!ô% �&‹k˜OÓ+ð* ˆØˆØò 	%ˆEØ�uÑˆGØ�O‰O˜GÕ$ð	%ð ˆØà%+ÖG ¨q°1ªu¸¸Y»”S˜•VÐGˆ	ÐGÙÜ�KŠKà—8‘8œF 9Ó-Õ.²ð:ôð ˜ˆ}Ðùò Hs   ÅFÅFc                 ó\  — g }g }| j                  «       dk(  r=| j                  D ]-  }|€Œ|j                  |d   «       |j                  |d   «       Œ/ n%| j                  D ]  }|€Œ|j                  |«       Œ t        «       }| j	                  |||¬«       | j	                  |||¬«       |S )NrC   r   rE   rf   )ÚgetCoordWidthr   rn   r”   ÚcompileDeltaValues_)r   rg   ÚdeltaXÚdeltaYr6   Úbytearrs         r   rr   zTupleVariation.compileDeltasG  s½   € ØˆØˆØ×ÑÓ 1Ò$Ø×%Ñ%ò $�Ø�9ØØ—‘˜a ™dÔ#Ø—‘˜a ™dÕ#ñ	$ð ×%Ñ%ò !�Ø�9ØØ—‘˜aÕ ð!ô “+ˆØ× Ñ  ¨¸|Ð ÔLØ× Ñ  ¨¸|Ð ÔLØˆr   c                óÞ  — |€
t        «       }d}t        | «      }|r’||k  �r=| |   }|dk(  rt        j                  | ||«      }ncd|cxk  rdk  rn nt        j	                  | ||«      }n=d|cxk  rdk  rn nt        j                  | ||«      }nt        j                  | ||«      }||k  rŒ‹n±t        | «      t        | «      }}|dcxk(  r|k(  rn nt        j                  | ||«      }nud|cxk  r|cxk  rdk  rn nt        j	                  | ||d¬«      }nGd|cxk  r|cxk  rdk  rn nt        j                  | ||d¬«      }nt        j                  | ||d¬«      }||k(  s	J ||f«       ‚|S )aê  [value1, value2, value3, ...] --> bytearray

        Emits a sequence of runs. Each run starts with a
        byte-sized header whose 6 least significant bits
        (header & 0x3F) indicate how many values are encoded
        in this run. The stored length is the actual length
        minus one; run lengths are thus in the range [1..64].
        If the header byte has its most significant bit (0x80)
        set, all values in this run are zero, and no data
        follows. Otherwise, the header byte is followed by
        ((header & 0x3F) + 1) signed values.  If (header &
        0x40) is clear, the delta values are stored as signed
        bytes; if (header & 0x40) is set, the delta values are
        signed 16-bit integers.
        r   é€ÿÿÿr   é €ÿÿéÿ  Frf   )	r”   rP   r   ÚencodeDeltaRunAsZeroes_ÚencodeDeltaRunAsBytes_ÚencodeDeltaRunAsWords_ÚencodeDeltaRunAsLongs_rA   rB   )Údeltasr¼   rg   r�   Ú	numDeltasr%   ÚminValÚmaxVals           r   r¹   z"TupleVariation.compileDeltaValues_Z  s€  € ð" ˆ?Ü“kˆGàˆÜ˜“Kˆ	áØ˜	“/Ø˜s™�Ø˜A’:Ü(×@Ñ@ÀÈÈgÓV‘CØ˜UÔ) cÕ)Ü(×?Ñ?ÀÈÈWÓU‘CØ˜uÔ-¨Õ-Ü(×?Ñ?ÀÈÈWÓU‘Cä(×?Ñ?ÀÈÈWÓU�Cð ˜	”/ô ! ›[¬#¨f«+�FˆFØ˜Ô$˜fÕ$Ü$×<Ñ<¸VÀSÈ'ÓR‘Ø˜Ô0 6Ô0¨SÕ0Ü$×;Ñ;Ø˜C °uð <ó ‘ð ˜6Ô4 VÔ4¨uÕ4Ü$×;Ñ;Ø˜C °uð <ó ‘ô %×;Ñ;Ø˜C °uð <ó �ð �iÒÐ1 # yÐ!1Ó1Ðàˆr   c                 óô   — |}t        | «      }||k  r| |   dk(  r|dz  }||k  r	| |   dk(  rŒ||z
  }|dk\  r#|j                  t        dz  «       |dz  }|dk\  rŒ#|r|j                  t        |dz
  z  «       |S )Nr   rE   r   r   )rP   rn   ÚDELTAS_ARE_ZERO)rÅ   rŒ   r¼   r�   rÆ   rš   s         r   rÁ   z&TupleVariation.encodeDeltaRunAsZeroes_‘  s‘   € àˆÜ˜“Kˆ	Ø�IŠo &¨¡+°Ò"2Ø�1‰HˆCð �IŠo &¨¡+°Ó"2à˜&‘Lˆ	Ø˜2ŠoØ�N‰Nœ?¨RÑ/Ô0Ø˜‰OˆIð ˜2‹oñ Ø�N‰Nœ?¨i¸!©mÑ<Ô=Øˆ
r   c           	      óÄ  — |}t        | «      }||k  r9| |   }d|cxk  rdk  sn n&|r|dk(  r|dz   |k  r| |dz      dk(  rn|dz  }||k  rŒ9||z
  }|dk\  rL|j                  d«       |j                  t        j                  d| ||dz    «      «       |dz  }|dz  }|dk\  rŒL|r<|j                  |dz
  «       |j                  t        j                  d| || «      «       |S )Nr¾   r   r   rE   r   r   Úb)rP   rn   r¬   r§   )rÅ   rŒ   r¼   rg   r�   rÆ   r%   rš   s           r   rÂ   z%TupleVariation.encodeDeltaRunAsBytes_Ÿ  s   € àˆÜ˜“Kˆ	Ø�IŠoØ˜3‘KˆEØ˜EÔ( SÔ(Øñ Ø˜Q’JØ˜!‘G˜iÒ'Ø˜3 ™7‘O qÒ(àØ�1‰HˆCð' �I‹oð( ˜&‘Lˆ	Ø˜2ŠoØ�N‰N˜2ÔØ�N‰Nœ5Ÿ;™; s¨F°6¸FÀR¹KÐ,HÓIÔJØ�b‰LˆFØ˜‰OˆIð	 ˜2‹oñ
 Ø�N‰N˜9 q™=Ô)Ø�N‰Nœ5Ÿ;™; s¨F°6¸#Ð,>Ó?Ô@Øˆ
r   c                 ó¨  — |}t        | «      }||k  rS| |   }|r|dk(  rnF|r+d|cxk  rdk  r n n|dz   |k  rd| |dz      cxk  rdk  rn nnd|cxk  rdk  sn n|dz  }||k  rŒS||z
  }|dk\  rx|j                  t        dz  «       t        j                  d	| ||dz    «      }t        j
                  d
k7  r|j                  «        |j                  |«       |dz  }|dz  }|dk\  rŒx|rh|j                  t        |dz
  z  «       t        j                  d	| || «      }t        j
                  d
k7  r|j                  «        |j                  |«       |S )Nr   r¾   r   rE   r¿   rÀ   r   r   Úhr¤   )rP   rn   ÚDELTAS_ARE_WORDSr§   r©   rª   r«   r¬   ©	rÅ   rŒ   r¼   rg   r�   rÆ   r%   rš   Úas	            r   rÃ   z%TupleVariation.encodeDeltaRunAsWords_Â  sY  € àˆÜ˜“Kˆ	Ø�IŠoØ˜3‘KˆEñ  ¨¢
Øñ Ø˜UÔ) cÕ)Ø˜!‘G˜iÒ'Ø˜V C¨!¡G™_Ô3°Õ3àà˜eÔ, uÔ,Øà�1‰HˆCð= �I‹oð> ˜&‘Lˆ	Ø˜2ŠoØ�N‰NÔ+¨bÑ0Ô1Ü—‘˜C ¨°¸"±Ð!=Ó>ˆAÜ�}‰} Ò%Ø—
‘
”Ø�N‰N˜1ÔØ�b‰LˆFØ˜‰OˆIð ˜2‹oñ Ø�N‰NÔ+¨y¸1©}Ñ=Ô>Ü—‘˜C ¨¨sÐ!3Ó4ˆAÜ�}‰} Ò%Ø—
‘
”Ø�N‰N˜1ÔØˆ
r   c                 óD  — |}t        | «      }||k  r!| |   }|rd|cxk  rdk  rn nn|dz  }||k  rŒ!||z
  }|dk\  rx|j                  t        dz  «       t        j                  d| ||dz    «      }t        j
                  dk7  r|j                  «        |j                  |«       |dz  }|dz  }|dk\  rŒx|rh|j                  t        |dz
  z  «       t        j                  d| || «      }t        j
                  dk7  r|j                  «        |j                  |«       |S )Nr¿   rÀ   rE   r   r   r-   r¤   )rP   rn   ÚDELTAS_ARE_LONGSr§   r©   rª   r«   r¬   rÐ   s	            r   rÄ   z%TupleVariation.encodeDeltaRunAsLongs_ö  s  € àˆÜ˜“Kˆ	Ø�IŠoØ˜3‘KˆEÙ ¨%Ô 8°5Õ 8ØØ�1‰HˆCð	 �I‹oð
 ˜&‘Lˆ	Ø˜2ŠoØ�N‰NÔ+¨bÑ0Ô1Ü—‘˜C ¨°¸"±Ð!=Ó>ˆAÜ�}‰} Ò%Ø—
‘
”Ø�N‰N˜1ÔØ�b‰LˆFØ˜‰OˆIð ˜2‹oñ Ø�N‰NÔ+¨y¸1©}Ñ=Ô>Ü—‘˜C ¨¨sÐ!3Ó4ˆAÜ�}‰} Ò%Ø—
‘
”Ø�N‰N˜1ÔØˆ
r   c                 óð  — g }|}| �t        |«      | k  �rLn|t        |«      k  �r<||   }|dz  }|t        z  dz   }|t        z  t        k(  r|j	                  dg|z  «       nÝ|t        z  t
        k(  rt        j                  d«      }|dz  }nB|t        z  t        k(  rt        j                  d«      }|dz  }nt        j                  d«      }|}|j                  ||||z    «       t        j                  dk7  r|j                  «        t        |«      |k(  sJ t        |«      |f«       ‚||z  }|j	                  |«       | �t        |«      | k  r�Œ+n|t        |«      k  r�Œ<| �t        |«      | k(  sJ ‚||fS )	z>(numDeltas, data, offset) --> ([delta, delta, ...], newOffset)rE   r   r-   é   rÎ   rC   rÌ   r¤   )rP   ÚDELTA_RUN_COUNT_MASKÚDELTAS_SIZE_MASKrÊ   r¬   rÓ   r§   rÏ   r¨   r©   rª   r«   )	rÆ   r‹   rŒ   r�   r�   r°   ÚnumDeltasInRunrÅ   Ú
deltasSizes	            r   ÚdecompileDeltas_zTupleVariation.decompileDeltas_  ss  € ð ˆØˆØ)2Ð)>Œc�&‹k˜IÔ%ÀCÌ#ÈdË)ÃOØ˜S™	ˆIØ�1‰HˆCØ'Ô*>Ñ>À!ÑCˆNØÔ,Ñ,´Ò@Ø—‘˜q˜c NÑ2Õ3àÔ 0Ñ0Ô5EÒEÜ"Ÿ[™[¨Ó-�FØ!/°!Ñ!3‘JØÔ"2Ñ2Ô7GÒGÜ"Ÿ[™[¨Ó-�FØ!/°!Ñ!3‘Jä"Ÿ[™[¨Ó-�FØ!/�JØ× Ñ   c¨C°*Ñ,<Ð!=Ô>Ü—=‘= EÒ)Ø—O‘OÔ%Ü˜6“{ nÒ4ÐS´s¸6³{ÀNÐ6SÓSÐ4Ø�zÑ!�Ø—‘˜fÔ%ð+ *3Ð)>Œc�&‹k˜IÕ%ÀCÌ#ÈdË)ÄOð, Ð ¤C¨£K°9Ò$<Ð<Ð<Ø˜ˆ}Ðr   c                 óZ   — d}| t         z  dk7  r||dz  z  }| t        z  dk7  r||dz  z  }|S )NrÕ   r   rC   )rm   rp   )r{   Ú	axisCountÚsizes      r   ÚgetTupleSize_zTupleVariation.getTupleSize_.  sD   € àˆØÔ'Ñ'¨AÒ-Ø�I ‘MÑ!ˆDØÔ'Ñ'¨AÒ-Ø�I ‘MÑ!ˆDØˆr   c                 óÎ   — t        d„ | j                  D «       d«      }|€yt        |«      t        t        fv ryt        |«      t
        u rt        |«      dk(  ryt        d|z  «      ‚)zmReturn 2 if coordinates are (x, y) as in gvar, 1 if single values
        as in cvar, or 0 if empty.
        c              3   ó&   K  — | ]	  }|€Œ|–— Œ y ­wr   r3   r4   s     r   r7   z/TupleVariation.getCoordWidth.<locals>.<genexpr>;  s   è ø€ ÒH ¸!¹-œ1ÑHùs   ‚ŠNr   rE   rC   zSinvalid type of delta; expected (int or float) number, or Tuple[number, number]: %r)Únextr   rO   rQ   Úfloatr<   rP   Ú	TypeError)r   Ú
firstDeltas     r   r¸   zTupleVariation.getCoordWidth7  sn   € ô ÑH d×&6Ñ&6ÔHÈ$ÓOˆ
ØÐØÜ�
Ó¤¤U˜|Ñ+ØÜ�
ÓœuÑ$¬¨Z«¸AÒ)=ØÜð(Ø*4ñ5ó
ð 	
r   c                 ó°   — |dk(  ry | j                  «       }| j                  D �cg c]   }|€d n|dk(  r||z  n|d   |z  |d   |z  f‘Œ" c}| _        y c c}w )Ng      ð?rE   r   )r¸   r   )r   ÚscalarÚ
coordWidthÚds       r   ÚscaleDeltaszTupleVariation.scaleDeltasG  su   € Ø�SŠ=ØØ×'Ñ'Ó)ˆ
ð ×%Ñ%ö
ð ð �9ñ à#-°¢?�Q˜’Z¸¸1¹À¹ÈÈ!ÉÈvÉÐ8VñWò
ˆÕùò 
s   ¥%Ac                 óÈ   — | j                  «       }| j                  D �cg c]2  }|€d n+|dk(  rt        |«      nt        |d   «      t        |d   «      f‘Œ4 c}| _        y c c}w ©NrE   r   )r¸   r   r   )r   rç   rè   s      r   ÚroundDeltaszTupleVariation.roundDeltasT  sn   € Ø×'Ñ'Ó)ˆ
ð ×%Ñ%ö
ð ð �9ñ à#-°¢?”W˜Q”Z¼ÀÀ1Á»ÌÐPQÐRSÑPTËÐ8VñWò
ˆÕùò 
s   Ÿ7Ac                 ó6  — ddl m} | j                  «       dk(  rt        d«      ‚d | j                  v rgt        | j                  «      t        |«      k7  r,t        dt        | j                  «      t        |«      fz  «      ‚ || j                  ||«      | _        y y )Nr   )Ú	iup_deltarE   z3Only 'gvar' TupleVariation can have inferred deltasz(Expected len(origCoords) == %d; found %d)ÚfontTools.varLib.iuprî   r¸   rã   r   rP   Ú
ValueError)r   Ú
origCoordsÚendPtsrî   s       r   ÚcalcInferredDeltasz!TupleVariation.calcInferredDeltas_  s‘   € Ý2à×ÑÓ 1Ò$ÜÐQÓRÐRØ�4×#Ñ#Ñ#Ü�4×#Ñ#Ó$¬¨J«Ò7Ü Ø>Ü˜4×+Ñ+Ó,¬c°*«oÐ>ñ?óð ñ  )¨×)9Ñ)9¸:ÀvÓNˆDÕð $r   c                 ó  — ddl m} d | j                  v ry  || j                  |||¬«      }d |v rÑ|r(t        d„ |D «       «      rdgd gt	        |«      dz
  z  z   }t        | j                  |«      }t        | j                  j                  «       «      }| j                  |«      \  }	}
t	        |	«      t	        |
«      z   }|j                  |«      \  }	}
t	        |	«      t	        |
«      z   }||k  r|j                  | _        y y y )Nr   )Úiup_delta_optimize)Ú	tolerancec              3   ó$   K  — | ]  }|d u –— Œ
 y ­wr   r3   )r5   rè   s     r   r7   z*TupleVariation.optimize.<locals>.<genexpr>v  s   è ø€ Ò"?° 1¨¤9Ñ"?ùr8   )r   r   rE   )
rï   rõ   r   ÚallrP   r   r   r"   rb   r}   )r   rñ   rò   rö   ÚisCompositerõ   ÚdeltaOptÚvarOptrW   rx   ry   ÚunoptimizedLengthÚoptimizedLengths                r   ÚoptimizezTupleVariation.optimizel  sú   € Ý;à�4×#Ñ#Ñ#Øá%Ø×Ñ˜j¨&¸Iô
ˆð �8ÑÙœsÑ"?°hÔ"?Ô?ð #˜8 t f´°H³ÀÑ0AÑ&BÑB�ä# D§I¡I¨xÓ8ˆFô ˜dŸi™iŸn™nÓ.Ó/ˆHØ!%§¡¨hÓ!7ÑˆI�wÜ # I£´°W³Ñ =ÐØ!'§¡°Ó!9ÑˆI�wÜ! )›n¬s°7«|Ñ;ˆOàÐ!2Ò2Ø#)×#5Ñ#5�Õ ð 3ð r   c                 ó(   — | j                  |«       | S r   )ré   )r   ræ   s     r   Ú__imul__zTupleVariation.__imul__‡  s   € Ø×Ñ˜Ô Øˆr   c                 óð  — t        |t        «      st        S | j                  }t	        |«      }|j                  }t	        |«      |k7  rt        d«      ‚| j                  «       dk(  r>t        t        |«      |«      D ]$  \  }}||   }	 |d   |d   z   |d   |d   z   f||<   Œ& | S t        t        |«      |«      D ]"  \  }}||   }|�|�	||z   ||<   Œ|�Œ|€Œ|||<   Œ$ | S # t        $ r t        d«      ‚w xY w)Nz7cannot sum TupleVariation deltas with different lengthsrC   r   rE   z+cannot sum gvar deltas with inferred points)
Ú
isinstancer   ÚNotImplementedr   rP   rð   r¸   Úzipr¦   rã   )r   r(   Údeltas1ÚlengthÚdeltas2r-   Úd2Úd1s           r   Ú__iadd__zTupleVariation.__iadd__‹  s/  € Ü˜%¤Ô0Ü!Ð!Ø×"Ñ"ˆÜ�W“ˆØ×#Ñ#ˆÜˆw‹<˜6Ò!ÜÐVÓWÐWð ×ÑÓ 1Ò$ÜœU 6›]¨GÓ4ò T‘��2Ø˜Q‘Z�ðTØ"$ Q¡%¨"¨Q©%¡-°°A±¸¸A¹±Ð!?�G˜A’JðTð ˆô œU 6›]¨GÓ4ò $‘��2Ø˜Q‘Z�Ø�> b nØ!# b¡�G˜A’JØ‘Z B¡NØ!#�G˜A’Jð$ð ˆøô !ò TÜ$Ð%RÓSÐSðTús   ÂC Ã C5©Tr   )r   )g      à?F) Ú__name__Ú
__module__Ú__qualname__r   r&   r)   r0   r:   r^   re   r}   rl   ro   ÚstaticmethodrŽ   rk   r¶   rr   r¹   rÁ   rÂ   rÃ   rÄ   rÚ   rÞ   r¸   ré   rì   ró   rþ   r   r
  r3   r   r   r   r   '   sE  „ ò-òCòQò&ò<ò'òRVð. ,.¸ð&,ØOSô&,òP	 ò/ð& ñó ðð ñ>ó ð>ð@ ñ0ó ð0ódð& ð4À$ó 4ó ð4ðl ñó ðð ò ó ð ðD ò1ó ð1ðf òó ðð2 òó ðð: ñó ðò
ò 
ò	
òOó6ò6ór   r   c                 ó€   — g }t        |«      D ]-  }t        j                  | ||«      \  }}|j                  |«       Œ/ |S r   )r¦   r   rŽ   rn   )rW   ÚsharedTupleCountr‹   rŒ   r�   Ú_Úts          r   ÚdecompileSharedTuplesr  ­  sG   € Ø€FÜÐ#Ó$ò ˆÜ"×2Ñ2°8¸TÀ6ÓJ‰	ˆˆ6Ø�‰�aÕðð €Mr   rE   c                 óÜ   — t        «       }|D ]   }|j                  | «      }||xx   dz  cc<   Œ" t        |j                  |«      d„ ¬«      }|D �cg c]  }|d   dkD  sŒ|d   ‘Œ c}S c c}w )NrE   c                 ó   — | d    | d   fS rë   r3   )Úitems    r   ú<lambda>z%compileSharedTuples.<locals>.<lambda>À  s   € ˜4 ™7˜( D¨¡GÐ,€ r   ©Úkeyr   )r	   rl   r"   Úmost_common)rW   Ú
variationsÚMAX_NUM_SHARED_COORDSÚ
coordCountÚvarr>   ÚsharedCoordsr6   s           r   ÚcompileSharedTuplesr!  µ  s|   € ô “€JØò ˆØ× Ñ  Ó*ˆØ�5Ó˜QÑÔðô
 Ø×ÑÐ4Ó5Ù,ô€Lð 'Ö3�Q¨!¨A©$°«(ˆAˆa‹DÒ3Ð3ùÒ3s   ÁA)ÁA)Trf   c                óP  ‡‡— ~g }g }d }t        t        «      }	| D ]D  }
|
j                  «       }|€Œ|	|xx   dz  cc<   |j                  |
«       |j                  |«       ŒF |} ~| syt	        | d   j
                  «      Št        ˆfd„| D «       «      sJ d«       ‚|	D �ci c]  }|t        j                  |«      “Œ c}Št	        | «      }g }g }|r@ˆfd„}t        |	j                  «       |¬«      d   }|j                  ‰|   «       |t        z  }|D �cg c]  }||k7  r‰|   nd‘Œ }}t        | |«      D ]?  \  }
}|
j                  ||||¬	«      \  }}|j                  |«       |j                  |«       ŒA dj                  |«      }dj                  |«      }|||fS c c}w c c}w )
NrE   )r   r   r   r   c              3   óN   •K  — | ]  }t        |j                  «      ‰k(  –— Œ y ­wr   )rP   r   )r5   ÚvÚns     €r   r7   z-compileTupleVariationStore.<locals>.<genexpr>å  s$   øè ø€ ò Ø$%ŒˆA�M‰MÓ˜aÕñùs   ƒ"%z#Variation sets have different sizesc                 ó@   •— | d   }| d   }t        ‰|   «      |dz
  z  S )Nr   rE   )rP   )ÚpnÚpointSetÚcountÚcompiledPointss      €r   r  z'compileTupleVariationStore.<locals>.keyó  s.   ø€ Ø˜!‘uˆHØ�q‘EˆEÜ�~ hÑ/Ó0°E¸A±IÑ>Ð>r   r  r   )rw   rg   )r
   rQ   r0   rn   rP   r   rø   r   rk   rB   r#   ÚTUPLES_SHARE_POINT_NUMBERSr  r}   r!   )r  Ú
pointCountrW   ÚsharedTupleIndicesÚuseSharedPointsrg   ÚnewVariationsÚ
pointDatasÚsharedPointsÚpointSetCountr$  r–   r(  ÚtupleVariationCountÚtuplesr‹   r  r.   Ú	thisTupleÚthisDatar*  r%  s                       @@r   ÚcompileTupleVariationStorer7  Å  sú  ù€ ð 	Ø€MØ€Jà€Lô  ¤Ó$€MØò "ˆØ—‘Ó"ˆØˆ>ØØ�fÓ Ñ"ÓØ×Ñ˜QÔØ×Ñ˜&Õ!ð"ð €JØáØäˆJ�q‰M×%Ñ%Ó&€AÜó Ø)3ôô ð -à,ó-ð ð
 JWöØ=Eˆ”.×.Ñ.¨xÓ8Ñ8ò€Nô ˜j›/ÐØ€FØ€Dáô	?ô
 ˜=×.Ñ.Ó0°cÔ:¸1Ñ=ˆà�‰�N <Ñ0Ô1ØÔ9Ñ9Ðð
 !öàð #)¨LÒ"8ˆ�vÒ¸cÑAð€Jð ô
 �J 
Ó+ò ‰ˆˆ1ØŸi™iØÐ(°AÀLð (ó 
Ñˆ	�8ð 	�‰�iÔ Ø�‰�HÕðð �X‰X�fÓ€FØ�8‰8�D‹>€DØ ¨Ð,Ð,ùòIùò*s   ÂFÄF#c                 ó€  — t        |«      }g }	|t        z  dk7  rt        j                  |||| «      \  }
}ng }
t	        |t
        z  «      D ]q  }t        j                  d|||dz    «      \  }}t        j                  ||«      }||||z    }||||z    }|	j                  t        |||
| |||«      «       ||z  }||z  }Œs |	S )Nr   ri   rÕ   )rP   r+  r   r¶   r¦   ÚTUPLE_COUNT_MASKrt   rŠ   rÞ   rn   ÚdecompileTupleVariation_)r®   rW   r3  r,  ÚsharedTuplesr‹   r�   ÚdataPosÚnumAxesr�   r1  r  ÚdataSizer{   Ú	tupleSizerx   ÚpointDeltaDatas                    r   ÚdecompileTupleVariationStorerA    sø   € ô �(‹m€GØ€FØÔ8Ñ8¸QÒ>Ü .× ?Ñ ?Ø˜˜g xó!
Ñˆ‘gð ˆÜÐ&Ô)9Ñ9Ó:ò ˆÜ Ÿ-™-¨¨t°C¸#À¹'Ð/BÓC‰ˆ�%Ü"×0Ñ0°¸Ó@ˆ	Ø˜˜s Y™Ð/ˆ	Ø˜g¨°(Ñ(:Ð;ˆØ�‰Ü$ØØØØØØØóô
	
ð 	ˆyÑˆØ�8Ñ‰ð#ð$ €Mr   c                 ó¨  — |dv sJ |«       ‚t        j                  d|dd «      d   }d}|t        z  dk(  r||t        z     }	nt        j                  |||«      \  }	}|t        z  dk7  r5t        j                  |||«      \  }
}t        j                  |||«      \  }}nt        |	«      \  }
}i }|D ]  }|
|   |	|   ||   f}|dk7  sŒ|||<   Œ d}|t        z  dk7  rt        j                  | |||«      \  }}n|}d g| z  }|dk(  rLt        j                  t        |«      ||«      \  }}t        ||«      D ]  \  }}d|cxk  r| k  sŒn Œ|||<   Œ nw|dk(  rrt        j                  t        |«      ||«      \  }}t        j                  t        |«      ||«      \  }}t        |||«      D ]  \  }}}d|cxk  r| k  sŒn Œ||f||<   Œ t	        ||«      S )	NrŸ   z>HrC   rÕ   r   r„   r    r¡   )rt   rŠ   rm   ÚTUPLE_INDEX_MASKr   rŽ   rp   ÚinferRegion_rq   r¶   rÚ   rP   r  )r,  r;  r1  r®   rW   r‹   rx   r{   r�   ÚpeakÚstartÚendr   r@   Úregionr–   rÅ   Ú
deltas_cvtr.   rD   Údeltas_xÚdeltas_yrG   rH   s                           r   r:  r:  7  s  € ð Ð'Ñ'Ð1¨Ó1Ð'Ü�M‰M˜$  Q q 	Ó*¨1Ñ-€EØ
€CØÔ#Ñ#¨Ò)Ø˜EÔ$4Ñ4Ñ5‰ä"×2Ñ2°8¸TÀ3ÓG‰	ˆˆcØÔ#Ñ#¨Ò)Ü#×3Ñ3°H¸dÀCÓH‰
ˆˆsÜ!×1Ñ1°(¸DÀ#ÓF‰ˆ‰Sä! $Ó'‰
ˆˆsØ€DØò  ˆØ�t‘˜d 4™j¨#¨d©)Ð3ˆØ�_Ó$ØˆD�ŠJð ð €CØÔ%Ñ%¨!Ò+Ü$×5Ñ5Ø˜	 3¨ó
‰ˆ‘ð ˆàˆV�jÑ €Fà�6ÒÜ(×9Ñ9¼#¸f»+ÀyÐRUÓV‰ˆ
�CÜ˜F JÓ/ò 	"‰HˆAˆuØ�AÔ"˜
Ö"Ø!��q’	ñ	"ð 
�VÒ	Ü&×7Ñ7¼¸F»ÀYÐPSÓT‰ˆ�#Ü&×7Ñ7¼¸F»ÀYÐPSÓT‰ˆ�#Ü˜6 8¨XÓ6ò 	#‰GˆAˆq�!Ø�AÔ"˜
Ö"Ø ˜F��q’	ð	#ô ˜$ Ó'Ð'r   c                 ó~   — i i }}| j                  «       D ]#  \  }}t        |d«      ||<   t        |d«      ||<   Œ% ||fS )aî  Infer start and end for a (non-intermediate) region

    This helper function computes the applicability region for
    variation tuples whose INTERMEDIATE_REGION flag is not set in the
    TupleVariationHeader structure.  Variation tuples apply only to
    certain regions of the variation space; outside that region, the
    tuple has no effect.  To make the binary encoding more compact,
    TupleVariationHeaders can omit the intermediateStartTuple and
    intermediateEndTuple fields.
    r=   )r#   rA   rB   )rE  rF  rG  r@   r%   s        r   rD  rD  e  sP   € ð �Rˆ3€EØ—z‘z“|ò $‰ˆˆeÜ˜% “oˆˆd‰Ü˜˜s“OˆˆDŠ	ð$ð �3ˆ<Ðr   r  ),ÚfontTools.misc.fixedToolsr   r‰   r   r€   r   rN   r   r`   r   ÚfontTools.misc.textToolsr   r§   Úcollectionsr	   r
   ÚioÚloggingrt   r©   rm   rp   rq   rÊ   rÏ   rÓ   r×   rÖ   r•   r¥   r+  r9  rC  Ú	getLoggerr  rR   Úobjectr   r  r!  r7  rA  r:  rD  r3   r   r   ú<module>rT     sÓ   ð÷õ õ .Û ß ,Û 	Û Û Û 
ð
 Ð ØÐ ØÐ à€ØÐ ØÐ ØÐ ØÐ àÐ ØÐ à#Ð ØÐ ØÐ à€g×Ñ˜Ó!€ôC
�Vô C
òLð 1AÀ1Ñ0Dó4ð* ðH-ð ôH-òV$òN+(ó\r   