Ë
    £eh‚í  ã                   ó„	  — d Z ddlZddlZddlZddlmZ ddlZddlmZm	Z	 ddl
mZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZmZmZ ddlmZm Z m!Z!m"Z"m#Z# ddl$m%Z% ddl&m'Z' ddl(m)Z) ddl*m+Z+m,Z,  ejZ                  d«      Z.ddl/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:  G d„ de;«      Z< G d„ de<«      Z=e=j}                  ej~                  d«      d„ «       Z@d„ ZAdQd„ZBe=j}                  ej†                  «      d„ «       Z@e=j}                  ejˆ                  «      d„ «       Z@d „ ZEd!„ ZFe=j}                  ejŽ                  «      d"„ «       Z@e=j}                  ej�                  «      d#„ «       Z@d$„ ZIdRd%„ZJdRd&„ZKdSd'„ZLd(„ ZMe=j}                  ejœ                  «      d)„ «       Z@dTd*„ZOe=j}                  ej                   «      d+„ «       Z@e=j}                  ej¢                  «      d,„ «       Z@d-„ ZRd.„ ZSd/„ ZTd0„ ZUd1„ ZVe=j}                  ej®                  «      d2„ «       Z@e=j}                  ej°                  «      d3„ «       Z@e=j}                  ej²                  «      d4„ «       Z@ G d5„ d6e=«      ZZeZj}                  ej¶                  «      d7„ «       Z@eZj}                  ejˆ                  «      d8„ «       Z@eZj}                  ej†                  «      d9„ «       Z@ G d:„ d;e=«      Z\e\j}                  ej¶                  «      d<„ «       Z@e\j}                  ejˆ                  «      d=„ «       Z@e\j}                  ej†                  «      d>„ «       Z@ G d?„ d@e=«      Z]dA„ Z^e]j}                  ej¾                  «      dB„ «       Z@e]j}                  ej¶                  «      dC„ «       Z@e]j}                  ejˆ                  «      dD„ «       Z@e]j}                  ej†                  «      dE„ «       Z@ G dF„ dGe]«      Z`e`j}                  ejÂ                  «      dH„ «       Z@e`j}                  ejÄ                  «      dI„ «       Z@dJ„ ZcdK„ Zde`j}                  ejÊ                  ejÌ                  f«      dL„ «       Z@e`j}                  ejÎ                  ejÐ                  f«      dM„ «       Z@e`j}                  ejÒ                  «      dN„ «       Z@e`j}                  ejÔ                  dO«      dP„ «       Z@y)Uz4
Merge OpenType Layout tables (GDEF / GPOS / GSUB).
é    N)Úior)ÚMAX_PAINT_COLR_LAYER_COUNTÚLayerReuseCache)ÚclassifyTools)ÚotRound)Úbuild_n_ary_tree)ÚotTables)ÚotBase)ÚBaseFixedValue)Údfs_base_table)ÚDefaultTable)ÚbuilderÚmodelsÚvarStore)ÚnonNoneÚallNoneÚallEqualÚ
allEqualToÚsubList)ÚVarStoreInstancer)Úreduce)ÚbuildSinglePos)Ú_compression_level_from_envÚcompact_pair_poszfontTools.varLib.mergeré   )ÚShouldBeConstantÚ
FoundANoneÚMismatchedTypesÚNotANoneÚLengthsDifferÚ
KeysDifferÚInconsistentGlyphOrderÚInconsistentExtensionsÚInconsistentFormatsÚUnsupportedFormatÚVarLibMergeErrorc                   óT   — e Zd Zdd„Zed
d„«       Zei fd„«       Zdd„Zd„ Zd„ Z	d	„ Z
y)ÚMergerNc                 ó    — || _         d | _        y ©N)ÚfontÚttfs)Úselfr+   s     úU/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/fontTools/varLib/merger.pyÚ__init__zMerger.__init__/   s   € ØˆŒ	àˆ�	ó    r*   c                 óÖ   ‡ ‡‡— ‰ t         k7  sJ d«       ‚d‰ j                  vri ‰ _        t        ‰«      t        t        j
                  fv r‰fŠt        ‰«      t        k(  r‰fŠˆˆ ˆfd„}|S )NzSubclass Merger instead.Úmergersc                 óî   •— | j                   dk(  sJ ‚g }‰D ]\  }||v rŒ|j                  |«       ‰j                  j                  |i «      }‰D ]#  }||vsJ d|j                   ›d|›d�«       ‚| ||<   Œ% Œ^ y )NÚmergezOops, class 'z' has merge function for 'z' defined already.)Ú__name__Úappendr2   Ú
setdefault)ÚmethodÚdoneÚclazzr2   ÚattrÚattrsÚcelfÚclazzess        €€€r.   ÚwrapperzMerger.merger.<locals>.wrapper>   s—   ø€ Ø—?‘? gÒ-Ð-Ð-ØˆDØ ò 
+�Ø˜D‘=ØØ—‘˜EÔ"ØŸ,™,×1Ñ1°%¸Ó<�Ø!ò +�DØ wÑ.ñ à Ÿ>›>ª4ð1óÐ.ð %+�G˜D’Mñ+ð
+ð r0   )r(   Ú__dict__r2   ÚtypeÚenumÚEnumMetaÚstr)r=   r>   r<   r?   s   ``` r.   ÚmergerzMerger.merger4   sc   ú€ à”vŠ~Ð9Ð9Ó9ˆ~Ø˜DŸM™MÑ)ØˆDŒLÜ�‹=œT¤4§=¡=Ð1Ñ1Ø�jˆGÜ�‹;œ#ÒØ�HˆEö	ð  ˆr0   c                 ó®   — t        |«      }| j                  «       D ]6  } t        | dd «      }|€ |S | j                  j	                  |d «      }|€Œ4|c S  |S )Nr2   )rA   ÚmroÚgetattrr2   Úget)r=   ÚthingÚ_defaultÚtypr2   Úms         r.   Ú
mergersForzMerger.mergersForP   sf   € ä�5‹kˆà—H‘H“Jò 	ˆDÜ˜d I¨tÓ4ˆGØˆØð ˆð	 —‘× Ñ   dÓ+ˆAØ‰}Ø’ð	ð ˆr0   c                 óð  ‡— t        |d«      r|j                  d¬«       |D ]!  }t        |d«      sŒ|j                  d¬«       Œ# t        t        |«      j	                  «       «      Št        ˆfd„|D «       «      s<t        | ‰|D �cg c]$  }t        t        |«      j	                  «       «      ‘Œ& c}¬«      ‚| j                  |«      }|j                  d| j                  j                  «      }	 ‰D ]H  }||v rŒt        ||«      }	|D �
cg c]  }
t        |
|«      ‘Œ }}
|j                  ||«      } || |	|«       ŒJ y c c}w c c}
w # t        $ r$}|j                  j                  dz   «       ‚ d }~ww xY w)NÚensureDecompiledF)Úrecursec              3   óh   •K  — | ])  }‰t        t        |«      j                  «       «      k(  –— Œ+ y ­wr*   )ÚsortedÚvarsÚkeys)Ú.0ÚvrU   s     €r.   ú	<genexpr>z&Merger.mergeObjects.<locals>.<genexpr>f   s%   øè ø€ Ò?°a�4œ6¤$ q£'§,¡,£.Ó1Õ1Ñ?ùs   ƒ/2©ÚexpectedÚgotÚ*ú.)ÚhasattrrP   rS   rT   rU   Úallr!   rN   rI   Ú	__class__ÚmergeThingsrH   r&   Ústackr6   )r-   ÚoutÚlstÚexcludeÚitemrW   r2   ÚdefaultMergerÚkeyÚvalueÚtableÚvaluesÚ
mergerFuncÚerU   s                 @r.   ÚmergeObjectszMerger.mergeObjects_   s\  ø€ Ü�3Ð*Ô+Ø× Ñ ¨Ð Ô/Øò 	5ˆDÜ�tÐ/Õ0Ø×%Ñ%¨eÐ%Õ4ð	5ô ”d˜3“i—n‘nÓ&Ó'ˆÜÓ?¸3Ô?Ô?ÜØ˜tÈ#Ö)NÀQ¬&´°a³·±³Õ*@Ò)Nôð ð —/‘/ #Ó&ˆØŸ™ C¨¯©×)CÑ)CÓDˆð
	Øò 0�Ø˜'‘>ØÜ  SÓ)�Ø;>Ö?°%œ' %¨Õ-Ð?�Ð?Ø$Ÿ[™[¨¨mÓ<�
Ù˜4 ¨Õ/ñ0ùò *Oùò @øô  ò 	Ø�G‰G�N‰N˜3 ™9Ô%Øûð	ús0   Â)D>Ã0E Ä
EÄ E ÅE Å	E5ÅE0Å0E5c           
      ó^  — t        ||t        «      s.t        | t        |«      |D �cg c]  }t        |«      ‘Œ c}¬«      ‚t        t	        |t	        |Ž «      «      D ]  \  }\  }}	 | j                  ||«       Œ y c c}w # t        $ r$}|j                  j                  d|z  «       ‚ d }~ww xY w)NrY   z[%d])	r   Úlenr    Ú	enumerateÚzipra   r&   rb   r6   )r-   rc   rd   ÚxÚiri   rk   rm   s           r.   Ú
mergeListszMerger.mergeListsx   sœ   € Ü˜#˜s¤CÔ(Ü ¬s°3«xÈcÖ=RÈ¼cÀ!½fÒ=RÔSÐSÜ"+¬C°´S¸#°YÓ,?Ó"@ò 	ÑˆA‰��vðØ× Ñ  ¨Õ/ñ	ùò >Søô $ò Ø—‘—‘˜v¨™zÔ*Øûðús   ¦A:Á%A?Á?	B,ÂB'Â'B,c           
      ó2  — t        ||t        «      sBt        | t        |«      j                  |D �cg c]  }t        |«      j                  ‘Œ c}¬«      ‚| j	                  |«      j                  d d «      }|� || ||«       y t        |t        j                  «      rt        ||«      st        | ||¬«      ‚y t        |d«      r| j                  ||«       y t        |t        «      r| j                  ||«       y t        ||«      st        | ||¬«      ‚y c c}w )NrY   r@   )r   rA   r   r5   rN   rI   Ú
isinstancerB   ÚEnumr   r^   rn   Úlistru   )r-   rc   rd   rs   rl   s        r.   ra   zMerger.mergeThings‚   sõ   € Ü˜#˜s¤DÔ)Ü!Øœt C›y×1Ñ1ÐRUÖ7VÈQ¼¸Q»×8HÓ8HÒ7Vôð ð —_‘_ SÓ)×-Ñ-¨d°DÓ9ˆ
ØÐ!Ù�t˜S #Õ&Ü˜œTŸY™YÔ'ô ˜c 3Ô'Ü& t°c¸sÔCÐCð (ä�S˜*Ô%Ø×Ñ˜c 3Õ'Ü˜œTÔ"Ø�O‰O˜C Õ%ä˜c 3Ô'Ü& t°c¸sÔCÐCð (ùò 8Ws   °Dc           
      óô   — |D ]A  }||vrŒ	 || _         | j                  ||   |D �cg c]  }|j                  |«      ‘Œ c}«       ŒC y c c}w # t        $ r!}|j                  j                  |«       ‚ d }~ww xY wr*   )r,   ra   rI   r&   rb   r6   )r-   r+   Úmaster_ttfsÚ	tableTagsÚtagrM   rm   s          r.   ÚmergeTableszMerger.mergeTables—   sw   € Øò 	ˆCØ˜$‰ØðØ'�”	Ø× Ñ   c¡ÀÖ,M¸A¨Q¯U©U°3­ZÒ,MÕNñ	ùò
 -NøÜ#ò Ø—‘—‘˜sÔ#Øûðús'   ŒA¦A¾AÁAÁ	A7ÁA2Á2A7)r*   )© )r5   Ú
__module__Ú__qualname__r/   ÚclassmethodrE   rN   rn   ru   ra   r~   r   r0   r.   r(   r(   .   sG   „ óð
 òó ðð6 Ø)+ò ó ðóò2òDó*	r0   r(   c                   ó   — e Zd Zy)ÚAligningMergerN)r5   r€   r�   r   r0   r.   r„   r„   ¦   s   „ Ør0   r„   ÚGlyphClassDefc                 ó¬  ‡— |€t        |«      st        | d |¬«      ‚y |D �cg c]  }|j                  ‘Œ }}i |_        |j                  }t        «       } |j                  |D �cg c]  }|j                  «       ‘Œ c}Ž  |D ]G  Št        ˆfd„|D «       «      }t        |«      st        | |d   |d‰z   g¬«      ‚|sd |‰<   Œ@|d   |‰<   ŒI y c c}w c c}w )NrY   c              3   ó@   •K  — | ]  }|j                  ‰«      –— Œ y ­wr*   )rI   )rV   ÚlÚks     €r.   rX   zmerge.<locals>.<genexpr>¹   s   øè ø€ Ò2¨˜AŸE™E !ŸHÑ2ùs   ƒr   r]   )rZ   r[   rb   )	r   r   Ú	classDefsÚsetÚupdaterU   r   r   r   )rE   r-   rd   rˆ   ÚallKeysÚ	allValuesr‰   s         @r.   r4   r4   ª   sÚ   ø€ à€|Ü�sŒ|Ü˜6¨D°cÔ:Ð:Øà #Ö
$˜1ˆ1�;‹;Ð
$€CÐ
$Ø€D„Nà�>‰>€Dä‹e€GØ€G‡N�N sÖ+ !�Q—V‘V•XÒ+Ñ,Øò 	#ˆÜÓ2¨cÔ2Ó2ˆ	Ü˜	Ô"Ü"Ø ¨1¡°3¸sÀQ¹w¸iôð ñ ØˆD�ŠGà ‘lˆD�ŠGñ	#ùò %ùò ,s   ¢CÁ$Cc                 óF  — | j                   dk(  r| S t        j                  «       }d|_         | j                  |_        | j                  |_        |j                  j
                  D �cg c]  }| j                  ‘Œ c}|_        t        |j                  «      |_        |S c c}w )Né   )	ÚFormatÚotÚ	SinglePosÚCoverageÚValueFormatÚglyphsÚValuerp   Ú
ValueCount)r-   ÚretÚ_s      r.   Ú_SinglePosUpgradeToFormat2r›   Ä   sv   € Ø‡{�{�aÒØˆä
�,‰,‹.€CØ€C„JØ—=‘=€C„LØ×&Ñ&€C„OØ%(§\¡\×%8Ñ%8Ö9 �—“Ò9€C„IÜ˜Ÿ™“^€C„Nà€Jùò :s   Á'Bc                 ó®  ‡— |€|D �cg c]  }t        |«      ‘Œ }}n@t        ||«      D ����cg c]%  \  }}t        ||«      D ��ci c]  \  }}||“Œ
 c}}‘Œ' }}}}}t        «       }	 |	j                  |Ž  | j                  «       j                  Št        |	‰¬«      }
t        ˆfd„|D «       «      s
t        «       ‚~	d}|€)|D ��cg c]  }|
D �cg c]
  }||v r|n|‘Œ c}‘Œ }}}|
|fS t        |«      t        |«      k(  sJ ‚|D ��cg c]  }|
D �cg c]  }||v r||   n|‘Œ c}‘Œ }}}|
|fS c c}w c c}}w c c}}}}w c c}w c c}}w c c}w c c}}w )aT  Takes font and list of glyph lists (must be sorted by glyph id), and returns
    two things:
    - Combined glyph list,
    - If values_lst is None, return input glyph lists, but padded with None when a glyph
      was missing in a list.  Otherwise, return values_lst list-of-list, padded with None
      to match combined glyph lists.
    N©rh   c              3   ó>   •K  — | ]  }t        |‰¬ «      |k(  –— Œ y­w)r�   N)rS   )rV   ÚvsÚsortKeys     €r.   rX   z%_merge_GlyphOrders.<locals>.<genexpr>ä   s   øè ø€ Ò;°Œv�b˜gÔ&¨"Õ,Ñ;ùs   ƒ)	r‹   rr   rŒ   ÚgetReverseGlyphMapÚ__getitem__rS   r_   r"   rp   )r+   rd   Ú
values_lstÚdefaultrˆ   Ú	dict_setsrŸ   ÚgrW   ÚcombinedÚorderÚpaddedValuesÚdict_setÚglyphÚpaddedr    s                  @r.   Ú_merge_GlyphOrdersr­   Ò   s{  ø€ ð ÐØ%(Ö) ”S˜•VÐ)ˆ	Ñ)ä@CÀCÈÓ@T×UÑU±u°q¸"¤s¨1¨b£z×2™t˜q !�a˜‘dÕ2ÐUˆ	ÓUÜ‹u€HØ€H‡O�O�YÑà×%Ñ%Ó'×3Ñ3€GÜ�8 Ô)€EäÓ;°sÔ;Ô;Ü$Ó&Ð&Øà€LØÐð &÷
àð CHÖH¸�e˜xÑ'‰U¨WÑ4ÔHð
ˆñ 
ð �&ˆ=Ðô �3‹xœ3˜z›?Ò*Ð*Ð*ð &÷
àð MRÖRÀ5 ¨Ñ 1ˆX�eŠ_°wÑ>ÔRð
ˆñ 
ð �&ˆ=Ðùò3 *ùã2ùÕUùò Iùó
ùò Sùó
sL   ˆD.®D9
ÁD3ÁD9
Ã	EÃEÃEÄ	EÄEÄ"EÄ3D9
ÅEÅEc                 ól   — |d   j                   j                  «       |_         | j                  ||«       y ©Nr   ©r@   Úcopyrn   ©rE   r-   rd   s      r.   r4   r4   ÷   ó,   € ð ˜‘F—O‘O×(Ñ(Ó*€D„MØ
×Ñ˜˜cÕ"r0   c                 ól   — |d   j                   j                  «       |_         | j                  ||«       y r¯   r°   r²   s      r.   r4   r4   ÿ   r³   r0   c                 óp  — |D ]±  }|�@t        |«      t        j                  k7  s$|j                  �||j                  j                  vrŒF|j
                  dk(  r|j                  c S |j
                  dk(  r4|j                  |j                  j                  j                  |«         c S t        | d¬«      ‚ y )Nr   r�   úsingle positioning lookup©Úsubtable)	rA   r’   r“   r”   r–   r‘   r—   Úindexr%   )rE   Ú	subtablesr«   r-   s       r.   Ú%_Lookup_SinglePos_get_effective_valuer»     s    € Øò RˆàˆLÜ�D‹zœRŸ\™\Ò)Ø�}‰}Ð$Ø˜DŸM™M×0Ñ0Ñ0àØ�;‰;˜!ÒØ—:‘:ÒØ�[‰[˜AÒØ—:‘:˜dŸm™m×2Ñ2×8Ñ8¸Ó?Ñ@Ò@ä# FÐ5PÔQÐQðRð r0   c                 óx  — |D �]4  }|�@t        |«      t        j                  k7  s$|j                  �||j                  j                  vrŒG|j
                  dk(  r[|j                  |j                  j                  j                  |«         }|j                  }|D ]  }|j                  |k(  sŒ|c c S  Œ±|j
                  dk(  rj|j                  j                  j                  |d«      }|j                  j                  j                  |d«      }	|j                  |   j                  |	   c S t!        | d¬«      ‚ y )Nr   r�   r   úpair positioning lookupr·   )rA   r’   ÚPairPosr”   r–   r‘   ÚPairSetr¹   ÚPairValueRecordÚSecondGlyphÚ	ClassDef1rŠ   rI   Ú	ClassDef2ÚClass1RecordÚClass2Recordr%   )
rE   rº   Ú
firstGlyphÚsecondGlyphr-   ÚpsÚpvrÚrecÚklass1Úklass2s
             r.   Ú(_Lookup_PairPos_get_effective_value_pairrÍ     s  € ð ó PˆàˆLÜ�D‹zœRŸZ™ZÒ'Ø�}‰}Ð$Ø §¡×!5Ñ!5Ñ5àØ�;‰;˜!ÒØ—‘˜dŸm™m×2Ñ2×8Ñ8¸ÓDÑEˆBØ×$Ñ$ˆCØò �Ø—?‘? kÓ1Ø”Jðð Ø�[‰[˜AÒØ—^‘^×-Ñ-×1Ñ1°*¸aÓ@ˆFØ—^‘^×-Ñ-×1Ñ1°+¸qÓAˆFØ×$Ñ$ VÑ,×9Ñ9¸&ÑAÒAä# FÐ5NÔOÐOð)Pð* r0   c                 óö  ‡— t        t        j                  |D �cg c]  }|j                  ‘Œ c}d«      x|_        }t	        |«      dk(  s|dz  dk(  st        | d¬«      ‚|j                  j                  Št        d„ |D «       «      r²t        ˆfd„|D «       «      ržt        j                  ||j                  «      |_        |dk7  rT| j                  |j                  |D �cg c].  }|j                  �|j                  nt        j                  «       ‘Œ0 c}«       |j                  j                  «       |_        y d|_        |D �cg c]  }t        |«      ‘Œ }}t!        | j"                  |D �cg c]  }|j                  j                  ‘Œ c}|D �cg c]  }|j                  ‘Œ c}«      \  }}||j                  _        |D �cg c]  }t        j                  |«      ‘Œ c}|_        t	        |j                  «      |_        t'        |«      D ]T  \  }	}
t'        |«      D ]A  \  }}|
|   �Œt)        | | j*                  |	   |«      }|€t        j                  |«      }||
|<   ŒC ŒV | j-                  |j                  |«       | j/                  ||d	¬
«       t        t        j                  |j                  D �cg c]  }|j1                  «       ‘Œ c}d«      |_        y c c}w c c}w c c}w c c}w c c}w c c}w c c}w )Nr   r   iðÿÿÿr¶   r·   c              3   ó:   K  — | ]  }|j                   d k(  –— Œ y­w)r   N©r‘   ©rV   rW   s     r.   rX   zmerge.<locals>.<genexpr><  s   è ø€ Ò
&˜Qˆ1�8‰8�q�=Ñ
&ùs   ‚c              3   óP   •K  — | ]  }‰|j                   j                  k(  –— Œ y ­wr*   )r”   r–   )rV   rW   ÚcoverageGlyphss     €r.   rX   zmerge.<locals>.<genexpr><  s%   øè ø€ ò /Ø01ˆ˜!Ÿ*™*×+Ñ+Õ+ñ/ùs   ƒ#&r�   )r‘   r”   r—   r˜   r•   ©re   )r   ÚintÚ__or__r•   rp   r%   r”   r–   r_   r
   ÚValueRecordr—   ra   Ú	getFormatr‘   r›   r­   r+   r˜   rq   r»   Úlookup_subtablesru   rn   ÚgetEffectiveFormat)rE   r-   rd   rˆ   ÚvalueFormatrW   r–   r¬   rš   rt   rk   Újr«   rÓ   s                @r.   r4   r4   4  s£  ø€ ä%+¬C¯J©JÐPSÖ8TÈ1¸¿»Ò8TÐVWÓ%XÐX€DÔ�{Ü�‹H˜ŠM˜k¨DÑ0°AÒ5Ü Ð1LÔMÐMð —]‘]×)Ñ)€NÜ
Ñ
& #Ô
&Ô&¬3ó /Ø58ô/ô ,ô ×'Ñ'¨°T·Z±ZÓ@ˆŒ
Ø˜!Òð ×ÑØ—
‘
ØSVÖWÈa˜AŸG™GÐ/�—’´V×5GÑ5GÓ5IÑIÒWôð  Ÿ:™:×/Ñ/Ó1ˆÔØð €D„KØ25Ö
6¨QÔ% aÕ(Ð
6€CÐ
6ô (Ø�‰°Ö5¨A�a—j‘j×'Ó'Ò5ÈÖ7MÀA¸¿»Ò7Mó�N€FˆFð "€D‡M�MÔØ;AÖB°a”&×$Ñ$ [Õ1ÒB€D„JÜ˜$Ÿ*™*“o€D„Oä˜vÓ&ò ‰	ˆˆ6Ü! &Ó)ò 	‰HˆAˆuØ�a‰yÐ$Øô
 6Ø˜×/Ñ/°Ñ2°EóˆAð ˆyÜ×&Ñ& {Ó3�ØˆF�1ŠIñ	ðð ×Ñ�d—j‘j &Ô)ð ×ÑØˆcÐWð ô ô Ü�
‰
°T·Z±ZÖ@°�Q×)Ñ)Õ+Ò@À!ó€DÕùòo 9Uùò  Xùò 7ùò 6ùÒ7Mùò Cùò2 As)   šK
Ã3K
ÅK"Å,K'
ÆK,ÇK1Ê3K6
c                 óœ  — t        | j                  |D ��cg c]&  }|j                  D �cg c]  }|j                  ‘Œ c}‘Œ( c}}|D �cg c]  }|j                  ‘Œ c}«      \  }}g x|_        }|D ]’  }t	        j                  «       }	||	_        | j
                  rt        j                  | j
                  «      nd |	_        | j                  rt        j                  | j                  «      nd |	_
        |j                  |	«       Œ” t        |j                  «      |_        t        |«      D ]ò  \  }
}t        |«      D ]ß  \  }}t	        j                  «       }||_        ||   �||   }n%t        | | j                   |
   |j"                  |«      }|€d\  }}nt%        |dd «      }t%        |dd «      }| j
                  r!t        j                  | j
                  |¬«      nd |_        | j                  r!t        j                  | j                  |¬«      nd |_
        |||<   Œá Œô |`| j'                  |j                  |«       y c c}w c c}}w c c}w )N©NNÚValue1ÚValue2)Úsrc)r­   r+   rÀ   rÁ   r’   ÚvalueFormat1r
   r×   rß   ÚvalueFormat2rà   r6   rp   ÚPairValueCountrq   rÍ   rÙ   Ú_firstGlyphrH   ru   )rE   r-   rd   rŸ   rW   r–   r¬   Úpvrsr«   rÉ   rt   rk   rÜ   ÚvpairÚv1Úv2s                   r.   r4   r4   r  s+  € ô (Ø�‰Ø?B×C¸ ×!3Ñ!3Ö	4˜Aˆ!�-‹-Ô	4ÓCØ&)Ö* ˆ×	Ó	Ò*ó�N€FˆFð #%Ð$€DÔ˜4Øò 	ˆÜ× Ñ Ó"ˆØˆŒà7=×7JÒ7JŒF×Ñ˜v×2Ñ2Ô3ÐPTð 	Œ
ð 8>×7JÒ7JŒF×Ñ˜v×2Ñ2Ô3ÐPTð 	Œ
ð 	�‰�CÕð	ô ˜d×2Ñ2Ó3€DÔä˜vÓ&ò ‰	ˆˆ6Ü! &Ó)ò 	‰HˆAˆuä×"Ñ"Ó$ˆAØ!ˆAŒMØ�a‰yÐ$Ø˜q™	‘ä@Ø˜F×3Ñ3°AÑ6¸×8HÑ8HÈ%ó�ð ˆ}Ø#‘�‘Bä˜U H¨dÓ3�Ü˜U H¨dÓ3�ð ×&Ò&ô ×"Ñ" 6×#6Ñ#6¸BÕ?àð ŒHð ×&Ò&ô ×"Ñ" 6×#6Ñ#6¸BÕ?àð ŒHð
 ˆF�1ŠIñ3	ðð6 	Ðà
×Ñ�d×*Ñ*¨FÕ3ùò] 
5ùÓCùÚ*s   –I©H>¼IÁI	È>Ic                 óÞ  — t        |D �cg c]  }|j                  sŒ|j                  dk(  ‘Œ  c}«      sJ d«       ‚|j                  | |d¬«       t	        j                  «       }g |_        d|_        t        |j                  |D �cg c]  }|j                  j                  ‘Œ c}|D �cg c]  }|j                  ‘Œ c}|¬«      \  }}|| j                  _
        |D �cg c]  }t	        j                  «       ‘Œ c}| _        t        | j                  «      | _        t        || j                  «      D ]  \  }	}
|	|
_        Œ |j                  | j                  |«       y c c}w c c}w c c}w c c}w )Nr   úReport bug against fonttools.)r”   r¿   ÚPairSetCountÚValueFormat1ÚValueFormat2rÔ   ©r¤   )r   r¿   rî   rn   r’   rÀ   rä   r­   r+   r”   r–   rp   rì   rr   rå   ru   )r-   rd   rE   rˆ   ÚemptyrW   r–   r¬   rš   r«   rÈ   s              r.   Ú_PairPosFormat1_mergerñ   ¨  s<  € ÜØ&)Ö7 ¨Q¯Y«Yˆ�‰˜1Ó	Ò7ôð 'à&ó'ð ð
 ×ÑØØØWð ô ô �J‰J‹L€EØ€EÔØ€EÔô (Ø�‰Ø$'Ö(˜qˆ�‰×	Ó	Ò(ØÖ �qˆ�‹Ò Øô	�N€FˆFð "€D‡M�MÔØ*0Ö1 Q”B—J‘J•LÒ1€D„LÜ˜DŸL™LÓ)€DÔÜ˜ §¡Ó.ò ‰	ˆˆrØˆ�ðð ×Ñ�d—l‘l FÕ+ùò9 	8ùò" 	)ùÚ ùò
 2s   ŠEœEÂE 
Â(E%ÃE*c                 óÜ  — t        | t        «      r| }n| r| j                  r| j                  ni }|rt        |j	                  «       «      nd}g }t        |dz   «      D ]  }|j                  t        «       «       Œ |j                  «       D ]  \  }}||   j                  |«       Œ |€d |d<   |S t        |«      x|d<   }|dd  D ]$  }	|	j                  |«       |j                  |	«       Œ& |S )Nr   r   )rw   ÚdictrŠ   Úmaxrk   Úranger6   r‹   ÚitemsÚaddÚintersection_updateÚdifference_update)
r-   Ú	allGlyphsrŠ   rM   r™   rš   r‰   rW   Úclass0Úss
             r.   Ú_ClassDef_invertrý   É  sô   € Ü�$œÔØ‰	á&*¨t¯~ª~�D—N’NÀ2ˆ	Ù#,ŒˆI×ÑÓÔ°!€Aà
€CÜ�1�q‘5‹\ò ˆØ�
‰
”3“5Õðð —‘Ó!ò ‰ˆˆ1ØˆA‰�
‰
�1�ðð ÐØˆˆA‰ð €Jô ˜i›.Ð(ˆˆA‰�Ø�Q�R�ò 	(ˆAØ×!Ñ! &Ô)Ø×$Ñ$ QÕ'ð	(ð €Jr0   c                 ó¨  — t        j                  «       }i x|_        }|d u }|rd gt        | «      z  }t	        j
                  «       }t        | |«      D ])  \  }}t        ||«      }|€|dd  }|j                  |«       Œ+ |j                  «       }	|r|	j                  dt        «       «       t        |	«      D ]  \  }
}|
dk(  rŒ|D ]  }|
||<   Œ	 Œ ||	fS )Nr   r   )r’   ÚClassDefrŠ   rp   r   Ú
Classifierrr   rý   rŒ   Ú
getClassesÚinsertr‹   rq   )rd   ÚallGlyphsesr-   rŠ   ÚallGlyphsesWasNoneÚ
classifierÚclassDefrú   ÚsetsÚclassesrt   ÚclassSetr¦   s                r.   Ú_ClassDef_merge_classifyr
  å  sô   € Ü�;‰;‹=€DØ!#Ð#€D„N�YØ$¨Ð,ÐÙØ�fœs 3›xÑ'ˆä×)Ñ)Ó+€JÜ" 3¨Ó4ò  Ñˆ�)Ü ¨)Ó4ˆØÐØ˜˜�8ˆDØ×Ñ˜$Õð	 ð
 ×#Ñ#Ó%€GáØ�‰�qœ#›%Ô ä  Ó)ò ‰ˆˆ8Ø�Š6ØØò 	ˆAØˆI�aŠLñ	ðð �ˆ=Ðr0   c                 óH  — |D �cg c]  }|j                   ‘Œ }}t        |D �cg c]  }|j                  ‘Œ c}|D �cg c]  }|j                  j                  ‘Œ c}«      \  | _        }t        |«      | _        g }t        ||«      D �]e  \  }}d }	t        |j                  j                  «      }
|j                  j                  }g }|D �]  }t        t        |«      «      }||
vrÌd }	|	€Åt        j                   «       }	g x}|	_        t        |j                  «      D ]�  }|rd }nxt        j                  «       }| j                   rt#        j$                  | j                   «      nd |_        | j(                  rt#        j$                  | j(                  «      nd |_        |j-                  |«       Œ’ |	}n|j/                  |d«      }||   }|j-                  |«       �Œ |j-                  |«       �Œh |}~t        |D �cg c]  }|j0                  ‘Œ c}«      \  | _        }t        |«      | _        g }t        ||«      D ]Í  \  }}|j0                  j                  }g }|D ]š  }|j                  }t        j                   «       }g x}|_        |D ]Y  }|s|d   }n+t        t        |«      «      }|j/                  |d«      }||   }|j-                  t3        j4                  |«      «       Œ[ |j-                  |«       Œœ |j-                  |«       ŒÏ |}~|S c c}w c c}w c c}w c c}w r¯   )rÄ   r
  rÂ   r”   r–   rp   ÚClass1Countrr   r‹   rŠ   ÚnextÚiterr’   rÅ   rõ   ÚClass2Countrí   r
   r×   rß   rî   rà   r6   rI   rÃ   r±   Údeepcopy)r-   rd   r+   Útransparentrˆ   Úmatricesr  Únew_matricesÚmatrixÚnullRowÚcoverageÚ	classDef1Úclass1Recordsr	  ÚexemplarGlyphÚclass2recordsrš   Úrec2Úrec1ÚklassÚ	classDef2Úrec1oldÚoldClass2RecordsÚrec1newÚclass2Recordss                            r.   Ú_PairPosFormat2_align_matricesr#     s  € Ø(+Ö, 1�—“Ð,€HÐ,ô 7Ø!Ö"˜ˆ�‹Ò"ÀÖ$D¸1 Q§Z¡Z×%6Ó%6Ò$DóÑ€D„N�Gô ˜7“|€DÔØ€LÜ˜˜hÓ'ó &+‰	ˆˆ6ØˆÜ�q—z‘z×(Ñ(Ó)ˆØ—K‘K×)Ñ)ˆ	ØˆØó  	'ˆHÜ ¤ h£Ó0ˆMØ HÑ,ð
 �Ø�?Ü Ÿo™oÓ/�GØ;=Ð=�M GÔ$8ä" 1§=¡=Ó1ò 3˜Ù&Ø#'™Dä#%§?¡?Ó#4˜Dð $(×#4Ò#4ô !'× 2Ñ 2°4×3DÑ3DÔ Eà%)ð !œKð $(×#4Ò#4ô !'× 2Ñ 2°4×3DÑ3DÔ Eà%)ð !œKð
 &×,Ñ,¨TÕ2ð3ð  ‘à!Ÿ™ m°QÓ7�Ø˜e‘}�Ø× Ñ  Ö&ðA 	'ðB 	×Ñ˜MÖ*ðM&+ðN €HØô 7ÈSÖ7QÈ¸¿»Ò7QÓRÑ€D„N�GÜ˜7“|€DÔØ€LÜ˜˜hÓ'ò +‰	ˆˆ6Ø—K‘K×)Ñ)ˆ	ØˆØò 	*ˆGØ&×3Ñ3ÐÜ—o‘oÓ'ˆGØ35Ð5ˆM˜GÔ0Ø#ò :�ÙØ+¨AÑ.‘Dä$(¬¨h«Ó$8�MØ%ŸM™M¨-¸Ó;�EØ+¨EÑ2�DØ×$Ñ$¤T§]¡]°4Ó%8Õ9ð:ð × Ñ  Õ)ð	*ð 	×Ñ˜MÕ*ð!+ð" €HØà€OùòU -ùò 	#ùÒ$Dùò^ 8Rs   …L£L¼L
Ç;Lc                 ó\  — t        |D �cg c]  }|j                  sŒ|j                  dk(  ‘Œ  c}«      sJ d«       ‚|j                  | |d¬«       t	        |j
                  |D �cg c]  }|j                  j                  ‘Œ c}«      \  }}|| j                  _        t        ||j                  «      D ])  \  }}|j                  j                  |k7  sŒ ||d   k(  rŒ)J ‚ t        | ||j
                  «      }t        |d   «      | _        |j                  | j                  |«       y c c}w c c}w )Nr   rë   )r”   rÂ   r  rÃ   r  rÄ   rí   rî   rÔ   éÿÿÿÿ)r   rÄ   rî   rn   r­   r+   r”   r–   rr   rÙ   r#  ry   ru   )	r-   rd   rE   rˆ   rW   r–   rš   rº   r  s	            r.   Ú_PairPosFormat2_merger&  N  s  € ÜØ&)Ö< ¨Q¯^«^ˆ�‰˜1Ó	Ò<ôð 'à&ó'ð ð ×ÑØØð	
ð ô ô  # 6§;¡;ÈCÖ0PÀq°·±×1BÓ1BÒ0PÓQ�I€FˆAØ!€D‡M�MÔô ˜C ×!8Ñ!8Ó9ò &‰ˆˆ9Ø�:‰:×Ñ Ó&Ø˜	 "™Ó%Ð%Ð%ð&ô .¨d°C¸¿¹ÓE€Hä˜X a™[Ó)€DÔØ
×Ñ�d×'Ñ'¨Õ2ùòI 	=ùò& 1Qs   ŠD$œD$Á#D)
c                 ó¨  — t        t        j                  |D �cg c]  }|j                  ‘Œ c}d«      x| _        |_        t        t        j                  |D �cg c]  }|j
                  ‘Œ c}d«      x| _        |_        |j                  dk(  rt        ||| «       n*|j                  dk(  rt        ||| «       nt        | d¬«      ‚| `| `d}d}|j                  dk(  rh|j                  D ]X  }|j                  D ]G  }t        |dd «      }|�||j                  «       z  }t        |dd «      }	|	€Œ5||	j                  «       z  }ŒI ŒZ nv|j                  dk(  rg|j                  D ]X  }
|
j                   D ]G  }t        |dd «      }|�||j                  «       z  }t        |dd «      }	|	€Œ5||	j                  «       z  }ŒI ŒZ ||_        ||_        y c c}w c c}w )Nr   r   r�   r½   r·   rß   rà   )r   rÕ   rÖ   rí   râ   rî   rã   r‘   rñ   r&  r%   r¿   rÀ   rH   rØ   rÄ   rÅ   )rE   r-   rd   rˆ   Úvf1Úvf2ÚpairSetÚpairValueRecordÚpv1Úpv2Úclass1RecordÚclass2Records               r.   r4   r4   w  sÒ  € ä.4Ü�
‰
¨SÖ1¨�Q—^“^Ò1°1ó/ð €FÔ˜$Ô+ô /5Ü�
‰
¨SÖ1¨�Q—^“^Ò1°1ó/ð €FÔ˜$Ô+ð ‡{�{�aÒÜ˜d C¨Õ0Ø	�‰˜Ò	Ü˜d C¨Õ0ä Ð1JÔKÐKàÐ˜VÐ0ð €CØ
€CØ‡{�{�aÒØ—|‘|ò 	+ˆGØ#*×#:Ñ#:ò +�Ü˜o¨x¸Ó>�Ø�?Ø˜3Ÿ=™=›?Ñ*�CÜ˜o¨x¸Ó>�Ø‘?Ø˜3Ÿ=™=›?Ñ*‘Cñ+ñ	+ð 
�‰˜Ò	Ø ×-Ñ-ò 	+ˆLØ ,× 9Ñ 9ò +�Ü˜l¨H°dÓ;�Ø�?Ø˜3Ÿ=™=›?Ñ*�CÜ˜l¨H°dÓ;�Ø‘?Ø˜3Ÿ=™=›?Ñ*‘Cñ+ð	+ð €DÔØ€DÕùòM 2ùò 2s   ™G

ÁG
c                 óZ  — t        d„ |D «       «      | _        t        |j                  |D �cg c]  }t	        ||dz   «      j
                  ‘Œ c}|D �cg c]  }t	        ||dz   «      j                  ‘Œ c}«      \  }}|t	        | |dz   «      _        t        |j                  |D �cg c]  }t	        ||dz   «      j
                  ‘Œ c}|D �cg c]  }t	        t	        ||dz   «      |dz   «      ‘Œ  c}«      \  }}	|t	        | |dz   «      _        g }
t        |t        |Ž «      D ]Ë  \  }}|D �cg c]  }|€Œ|j                  ‘Œ }}t        |«      st        ||d   |¬«      ‚t        j                  «       }|d   |_        |D �cg c]  }|€d n|j                  ‘Œ }}t        |«      rd }n-t        j                  «       }d|_        |j!                  ||«       ||_        |
j#                  |«       ŒÍ t        j$                  «       }|
|_        t'        |
«      |_        t+        | |dz   |«       g }
t        |t        |	Ž «      D ]ù  \  }}t        |«      rd }nÕ t	        t        |dz   «      «       }g }t+        ||dz   |«       |D �cg c]  }|€g nt	        ||dz   «      ‘Œ }}|D ]-  }|j-                  d g| j                  t'        |«      z
  z  «       Œ/ t        |Ž D ]N  }t        |«      rd }n-t        j                  «       }d|_        |j!                  ||«       |j#                  |«       ŒP |
j#                  |«       Œû  t	        t        |dz   «      «       }t+        ||dz   |
«       t+        ||d	z   t'        |
«      «       t+        | |dz   |«       y c c}w c c}w c c}w c c}w c c}w c c}w c c}w )
Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wr*   )Ú
ClassCount©rV   rˆ   s     r.   rX   z,_MarkBasePosFormat1_merge.<locals>.<genexpr>¤  s   è ø€ Ò4¨1˜!Ÿ,�,Ñ4ùó   ‚r”   ÚArrayÚRecordr   rY   r   ÚAnchorÚCount)rô   r2  r­   r+   rH   r–   Ú
MarkRecordrr   ÚClassr   r   r’   Ú
MarkAnchorr   r7  r‘   ra   r6   Ú	MarkArrayrp   Ú	MarkCountÚsetattrÚextend)r-   rd   rE   ÚMarkÚBaserˆ   ÚMarkCoverageGlyphsÚMarkRecordsÚBaseCoverageGlyphsÚBaseRecordsÚrecordsr¦   ÚglyphRecordsÚrÚ
allClassesrÊ   Ú
allAnchorsÚanchorÚarrayÚanchorsÚglyphAnchorss                        r.   Ú_MarkBasePosFormat1_mergerO  £  sƒ  € ÜÑ4°Ô4Ó4€D„Oä&8Ø�‰Ø7:Ö;°!Œ��D˜:Ñ%Ó	&×	-Ó	-Ò;Ø8;Ö<°1Œ��D˜7‘NÓ	#×	.Ó	.Ò<ó'Ñ#Ð˜ð
 /A„GˆD�$˜Ñ#Ó$Ô+ä&8Ø�‰Ø7:Ö;°!Œ��D˜:Ñ%Ó	&×	-Ó	-Ò;ØGJÖKÀ!Œ”˜˜D 7™NÓ+¨T°H©_Õ	=ÒKó'Ñ#Ð˜ð
 /A„GˆD�$˜Ñ#Ó$Ô+ð €GÜÐ1´3¸Ð3DÓEò  ‰ˆˆ<Ø'3ÖE !°q±}�a—g“gÐEˆ
ÐEô$ ˜
Ô#Ü" 6°J¸q±MÀzÔRÐRä—-‘-“/ˆCØ" 1™ˆCŒIØGSÖTÀ! ! )™$°·±Ñ=ÐTˆJÐTÜ�zÔ"Ø‘äŸ™›�Ø !�”Ø×"Ñ" 6¨:Ô6Ø#ˆCŒNØ�‰�sÕðA ôB �L‰L‹N€EØ€EÔÜ˜'“l€E„OÜˆD�$˜‘. %Ô(ð €GÜÐ1´3¸Ð3DÓEò ‰ˆˆ<Ü�<Ô Ø‰Cà.”'œ"˜d X™oÓ.Ó0ˆCØˆGÜ�C˜ ™¨'Ô2àJVöØEF�a�i‘¤W¨Q°°x±Ó%@Ñ@ðˆLð ð "ò >�Ø—‘˜$˜ 4§?¡?´S¸³VÑ#;Ñ<Õ=ð>ä! <Ð0ò '�
Ü˜:Ô&Ø!‘FäŸY™Y›[�FØ$%�F”MØ×&Ñ& v¨zÔ:Ø—‘˜vÕ&ð'ð 	�‰�sÕð)ð* (ŒG”B˜˜w™Ó'Ó)€EÜˆE�4˜(‘? GÔ,ÜˆE�4˜'‘>¤3 w£<Ô0ÜˆD�$˜‘. %Õ(ùò] 	<ùÚ<ùò 	<ùÚKùò Fùò. Uùò.s/   ¬ N

Á NÂ$ N
Ã
#NÄ)NÄ1NÅ?N#É>N(c           	      óü   — t        |j                  d„ |D «       «      s1t        | d|j                  |D �cg c]  }|j                  ‘Œ c}¬«      ‚|j                  dk(  rt        ||| «       y t	        | d¬«      ‚c c}w )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wr*   rÐ   r3  s     r.   rX   zmerge.<locals>.<genexpr>û  ó   è ø€ Ò#:° A§H¥HÑ#:ùr4  zmark-to-base positioning lookup©r¸   rZ   r[   r   r·   ©r   r‘   r$   rO  r%   ©rE   r-   rd   rˆ   s       r.   r4   r4   ù  so   € ä�d—k‘kÑ#:°cÔ#:Ô;Ü!ØØ6Ø—[‘[Ø#&Ö'˜a�—“Ò'ô	
ð 	
ð ‡{�{�aÒÜ! $¨¨VÕ4ä Ð1RÔSÐSùò (s   ´A9c           	      ó   — t        |j                  d„ |D «       «      s1t        | d|j                  |D �cg c]  }|j                  ‘Œ c}¬«      ‚|j                  dk(  rt        ||| dd«       y t	        | d¬«      ‚c c}w )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wr*   rÐ   r3  s     r.   rX   zmerge.<locals>.<genexpr>
  rR  r4  zmark-to-mark positioning lookuprS  r   ÚMark1ÚMark2r·   rT  rU  s       r.   r4   r4     ss   € ä�d—k‘kÑ#:°cÔ#:Ô;Ü!ØØ6Ø—[‘[Ø#&Ö'˜a�—“Ò'ô	
ð 	
ð ‡{�{�aÒÜ! $¨¨V°W¸gÕFä Ð1RÔSÐSùò (s   ´A;c                 óð  — t        j                  «       }t        j                  «       |_        t        || D ��cg c]&  }|j                  D �cg c]  }|j
                  ‘Œ c}‘Œ( c}}| D �cg c]  }|j                  ‘Œ c}«      \  }}||j                  _        g x|_        }t        |Ž D ]  }|D ]  }|€Œ|j                  |«        Œ J ‚ t        |j                  «      |_
        |S c c}w c c}}w c c}w r*   )r’   r¿   r”   r­   rÀ   rÁ   r–   rr   r6   rp   rä   )	rd   r+   r-   rŸ   rW   r–   r¬   ræ   rk   s	            r.   Ú_PairSet_flattenr[    sà   € Ü�:‰:‹<€DÜ—K‘K“M€D„Mô (ØØ?B×C¸ ×!3Ñ!3Ö	4˜Aˆ!�-‹-Ô	4ÓCØ&)Ö* ˆ×	Ó	Ò*ó�N€FˆFð "€D‡M�MÔØ"$Ð$€DÔ˜4Ü�v�,ò ˆØò 	ˆAØ‰}Ø—‘˜A”Ùð	ð
 �5ðô ˜d×2Ñ2Ó3€DÔà€Kùò 
5ùÓCùÚ*s   ¹C-ÁC(ÁC-Á+C3Ã(C-c           
      ód  — t        | D �cg c]  }|j                  sŒ|j                  dk(  ‘Œ  c}«      sJ d«       ‚t        j                  «       }d|_        t        j                  «       |_        t        t        j                  | D �cg c]  }|j                  ‘Œ c}d«      |_
        t        t        j                  | D �cg c]  }|j                  ‘Œ c}d«      |_        t        || D �cg c]  }|j                  j                  ‘Œ c}| D �cg c]  }|j                  ‘Œ c}«      \  }}||j                  _        t        |Ž D ��cg c]  }t        |D �cg c]  }|€Œ|‘Œ	 c}|«      ‘Œ! c}}|_        t        |j                  «      |_        |S c c}w c c}w c c}w c c}w c c}w c c}w c c}}w )Nr   rë   r   )r   r¿   rî   r’   r¾   r‘   r”   r   rÕ   rÖ   rí   r­   r–   rr   r[  rp   rì   )rd   r+   rˆ   r-   rW   r–   r¬   rk   s           r.   Ú(_Lookup_PairPosFormat1_subtables_flattenr]  0  sY  € ÜØ&)Ö7 ¨Q¯Y«Yˆ�‰˜1Ó	Ò7ôð 'à&ó'ð ô �:‰:‹<€DØ€D„KÜ—K‘K“M€D„MÜœsŸz™zÀCÖ+H¸q¨A¯N«NÒ+HÈ!ÓL€DÔÜœsŸz™zÀCÖ+H¸q¨A¯N«NÒ+HÈ!ÓL€DÔô (Ø¨#Ö. Qˆq�z‰z× Ó Ò.ÀCÖ0H¸q°·³Ò0Hó�N€FˆFð "€D‡M�MÔô ˜6�l÷àô 	 VÖ= ¨q©}š!Ò=¸tÕDó€D„Lô ˜DŸL™LÓ)€DÔØ€Kùò) 	8ùò ,IùÚ+Hùò /ùÒ0Hùò
 >ùós@   ŠFœFÂF
Â?F
Ã)F
ÄF"ÅF,ÅF'ÅF'Å
F,Æ'F,c                 óº  — t        | D �cg c]  }|j                  sŒ|j                  dk(  ‘Œ  c}«      sJ d«       ‚t        j                  «       }d|_        t        j                  «       |_        t        t        j                  | D �cg c]  }|j                  ‘Œ c}d«      |_
        t        t        j                  | D �cg c]  }|j                  ‘Œ c}d«      |_        t        || D �cg c]  }|j                  j                  ‘Œ c}«      \  }}||j                  _        t        || |d¬«      }g x}|_        t        |Ž D ]ƒ  }	t        j                  «       }
|j                  |
«       g |
_        |
j                   }
t        t#        d„ |	D «       «      Ž D ].  }t%        t'        d„ |D «       «      «      }|
j                  |«       Œ0 Œ… |S c c}w c c}w c c}w c c}w )Nr   rë   r�   T)r  c              3   ó4   K  — | ]  }|j                   –— Œ y ­wr*   )rÅ   )rV   rH  s     r.   rX   z;_Lookup_PairPosFormat2_subtables_flatten.<locals>.<genexpr>`  s   è ø€ Ò;°˜aŸn�nÑ;ùr4  c              3   ó&   K  — | ]	  }|€Œ|–— Œ y ­wr*   r   ©rV   Úcs     r.   rX   z;_Lookup_PairPosFormat2_subtables_flatten.<locals>.<genexpr>a  s   è ø€ Ò= !¨q©}œAÑ=ùs   ‚Š)r   rÄ   rî   r’   r¾   r‘   r”   r   rÕ   rÖ   rí   r­   r–   r#  rr   r6   rÅ   ry   r  r  )rd   r+   rˆ   r-   rW   r–   rš   r  r  ÚrowsÚrowÚcolsÚcols                r.   Ú(_Lookup_PairPosFormat2_subtables_flattenrg  I  sŠ  € ÜØ&)Ö< ¨Q¯^«^ˆ�‰˜1Ó	Ò<ôð 'à&ó'ð ô �:‰:‹<€DØ€D„KÜ—K‘K“M€D„MÜœsŸz™zÀCÖ+H¸q¨A¯N«NÒ+HÈ!ÓL€DÔÜœsŸz™zÀCÖ+H¸q¨A¯N«NÒ+HÈ!ÓL€DÔô # 4ÀSÖ)IÀ¨!¯*©*×*;Ó*;Ò)IÓJ�I€FˆAØ!€D‡M�MÔä-¨d°C¸È4ÔP€Hà!#Ð#€FˆTÔÜ�X�ò ˆÜ�o‰oÓˆØ�‰�cÔØˆÔØ×ÑˆÜœÑ;°dÔ;Ó;Ð<ò 	ˆDÜ”tÑ= tÔ=Ó=Ó>ˆCØ�J‰J�s�Oñ	ðð €Kùò3 	=ùò ,IùÚ+Hùò *Js   ŠG	œG	ÂG
Â?G
Ã)G
c                 óx  — t        | «      } t        | «      }d}||k  r/| |   j                  dk(  r|dz  }||k  r| |   j                  dk(  rŒt        | d| |«      g| d| t        | «      }|}|dkD  r5| |dz
     j                  dk(  r |dz  }|dkD  r| |dz
     j                  dk(  rŒ t	        | |d |«      g| |d | S )zÍMerge multiple Format1 subtables at the beginning of lst,
    and merge multiple consecutive Format2 subtables that have the same
    Class2 (ie. were split because of offset overflows).  Returns new list.r   r   Nr�   )ry   rp   r‘   r]  rg  )rd   r+   rˆ   rt   s       r.   Ú&_Lookup_PairPos_subtables_canonicalizeri  g  sÞ   € ô ˆs‹)€CäˆC‹€AØ	€AØ
ˆaŠ%�C˜‘F—M‘M QÒ&Ø	ˆQ‰ˆð ˆaŠ%�C˜‘F—M‘M QÓ&ä7¸¸B¸Q¸ÀÓFÐG€Cˆˆ€GäˆC‹€AØ	€AØ
ˆaŠ%�C˜˜A™‘J×%Ñ%¨Ò*Ø	ˆQ‰ˆð ˆaŠ%�C˜˜A™‘J×%Ñ%¨Ó*ä7¸¸A¸B¸ÀÓFÐG€Cˆˆ€Gà€Jr0   c                 ó  — t        || D �cg c]  }|j                  j                  ‘Œ c}d «      \  }}t        |«      }t	        j
                  «       }d|_        ||_        t	        j                  «       |_        ||j                  _        ||_        d g|z  |_	        | D ]å  }|j                  dk(  r[|j                  }	|j                  j                  D ]5  }
|j                  |
«      }t        j                  |	«      |j                  |<   Œ7 Œm|j                  dk(  sŒ}t        |j                  j                  «      D ]G  \  }}
|j                  |   }	|j                  |
«      }t        j                  |	«      |j                  |<   ŒI Œç |gS c c}w )Nr�   r   )r­   r”   r–   rp   r’   r“   r‘   r•   r˜   r—   r¹   r±   r  rq   )rd   r+   Úmin_inclusive_rec_formatrW   r–   rš   Ú
num_glyphsÚnewÚ	singlePosÚval_recÚgnamert   rÜ   s                r.   Ú#_Lookup_SinglePos_subtables_flattenrq  |  sS  € Ü" 4ÀSÖ)IÀ¨!¯*©*×*;Ó*;Ò)IÈ4ÓP�I€FˆAÜ�V“€JÜ
�,‰,‹.€CØ€C„JØ.€C„OÜ—;‘;“=€C„LØ €C‡L�LÔØ€C„NØ�˜Ñ#€C„IØò 
6ˆ	Ø×Ñ˜qÒ Ø—o‘oˆGØ"×+Ñ+×2Ñ2ò 6�Ø—L‘L Ó'�Ü#Ÿ}™}¨WÓ5�—	‘	˜!’ñ6ð ×Ñ Ó"Ü% i×&8Ñ&8×&?Ñ&?Ó@ò 6‘��5Ø#Ÿ/™/¨!Ñ,�Ø—L‘L Ó'�Ü#Ÿ}™}¨WÓ5�—	‘	˜!’ñ6ð
6ð ˆ5€Lùò) *Js   ‹F	
c                 ó°  — t        | j                  |D �cg c]  }|j                  j                  ‘Œ c}|D �cg c]  }|j                  ‘Œ c}«      \  }}d|_        t        j                  «       |_        ||j                  _        g |_        |D ]…  }t        j                  «       }t        j                  «       |_        d|j                  _        t        j                  «       |_	        d|j                  _        |j                  j                  |«       Œ‡ | j                  |j                  |«       t        |j                  «      |_        y c c}w c c}w ©Nr   )r­   r+   r”   r–   ÚEntryExitRecordr‘   r’   r7  ÚEntryAnchorÚ
ExitAnchorr6   ru   rp   ÚEntryExitCount)rE   r-   rd   rˆ   r–   r¬   rš   rÊ   s           r.   r4   r4   ”  s  € ô (Ø�‰Ø$'Ö(˜qˆ�‰×	Ó	Ò(Ø$'Ö(˜qˆ×	Ó	Ò(ó�N€FˆFð €D„KÜ—K‘K“M€D„MØ!€D‡M�MÔØ€DÔØò )ˆÜ× Ñ Ó"ˆÜŸ)™)›+ˆŒØ!"ˆ�‰ÔÜŸ™›ˆŒØ !ˆ�‰ÔØ×Ñ×#Ñ# CÕ(ð)ð ×Ñ�d×*Ñ*¨FÔ3Ü˜d×2Ñ2Ó3€DÕùò! 	)ùÚ(s
   •E
¸Ec                 óŒ   — t        d„ |D «       «      rd |_        t        d„ |D «       «      rd |_        | j                  ||«       y )Nc              3   ó8   K  — | ]  }|j                   d u –— Œ y ­wr*   )ru  ©rV   Úmasters     r.   rX   zmerge.<locals>.<genexpr>®  s   è ø€ Ò
8¨&ˆ6×Ñ Ô%Ñ
8ùó   ‚c              3   ó8   K  — | ]  }|j                   d u –— Œ y ­wr*   )rv  rz  s     r.   rX   zmerge.<locals>.<genexpr>°  s   è ø€ Ò
7¨ˆ6×Ñ Ô$Ñ
7ùr|  )r_   ru  rv  rn   r²   s      r.   r4   r4   ¬  s=   € ä
Ñ
8°CÔ
8Ô8ØˆÔÜ
Ñ
7°3Ô
7Ô7ØˆŒØ
×Ñ˜˜cÕ"r0   c           	      óÀ
  — |D �cg c]  }|j                   ‘Œ c}x}| _        t        t        ||«      «      ||j                   fgz   D ]õ  \  }}|sŒ	|d   j                  j
                  j                  d«      sŒ2t        |D �cg c]  }|j                  ‘Œ c}«      s0t        | d|D �cg c]  }|j                  j
                  ‘Œ c}¬«      ‚t        |D �cg c]  }|j                  ‘Œ c}«      st        | «      ‚|d   j                  |_
        |D �cg c]  }|j                  ‘Œ }}|d d …= |j                  |«       Œ÷ |j                   xr' t        |j                   d   t        j                  «      }|rQt!        |j                   | j"                  «      |_         |D �cg c]  }t!        || j"                  «      ‘Œ c}x}| _        n÷|j                   xr' t        |j                   d   t        j$                  «      }	|	rÀ|D �cg c]  }t'        |«      ‘Œ }
}t)        |
D �cg c]
  }||
d   k(  ‘Œ c}«      s‡|D ��cg c]  }|D ]  }|j*                  ‘Œ Œ }}}t-        t.        |«      }t1        |j                   | j"                  |«      |_         |D �cg c]  }t1        || j"                  |«      ‘Œ c}x}| _        d}nd}| j3                  |j                   |«       t'        |j                   «      |_        |�rœt'        |j                   «      dk\  r|j                   d   j6                  dk(  sJ ‚|j                   d   j8                  j:                  s0|j                   j=                  d«       |xj4                  dz  c_        t'        |j                   «      dk\  r|j                   d   j6                  dk(  sJ ‚|j                   d   j8                  j:                  s0|j                   j=                  d«       |xj4                  dz  c_        | j"                  j>                  jA                  d	tC        «       ¬
«      }|dk7  rÑtD        jG                  d«       tI        | j"                  ||j                   «      |_         t'        |j                   «      |_        n{	ryrw|j                   d   }|j8                  j:                  }t        ||jJ                  «      D ��ci c]  \  }}||“Œ
 }}}tM        || j"                  jO                  «       «      |_         | jQ                  ||ddg¬«       | `y c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}}w c c}w c c}}w )Nr   Ú	ExtensionrY   TFr   r%  r�   z0fontTools.otlLib.optimize.gpos:COMPRESSION_LEVELrï   zCompacting GPOS...ÚSubTableÚSubTableCountrÔ   ))r€  rÙ   ry   rr   r`   r5   Ú
startswithr   r#   ÚExtensionLookupTypeÚ
LookupTypeÚExtSubTabler?  rw   r’   r¾   ri  r+   r“   rp   r_   r•   r   r   rq  ru   r�  r‘   r”   r–   ÚpopÚcfgrI   r   ÚlogÚinfor   r—   r   r¡   rn   )rE   r-   rd   rˆ   rº   ÚstsÚstÚnew_stsÚ	isPairPosÚisSinglePosÚnumSubtablesÚnumsÚtÚvalueFormatListÚmirfÚ	flattenedÚlevelÚsinglePosTabler–   rp  Ú	valRecordÚsinglePosMappings                         r.   r4   r4   µ  s�  € à?BÖ*C¸!¨1¯:«:Ò*CÐC€I�Ô'ô ”s˜3 	Ó*Ó+°°d·m±mÐ/DÐ.EÑEò  ‰ˆˆ3ÙØØˆq‰6×Ñ×$Ñ$×/Ñ/°Õ<Ü°CÖ8¨b˜RŸ\›\Ò8Ô9Ü,ØØ(Ø9<Ö=°2˜Ÿ™×.Ó.Ò=ôð ô
 ¸cÖB¸˜R×3Ó3ÒBÔCÜ,¨VÓ4Ð4Ø˜q™6×5Ñ5ˆAŒLØ03Ö4¨"�r—~“~Ð4ˆGÐ4Ø’A�Ø�J‰J�wÕð ð" —‘ÒJ¤*¨T¯]©]¸1Ñ-=¼r¿z¹zÓ"J€Iáô ?Ø�M‰M˜6Ÿ;™;ó
ˆŒð OXö/
ØHJÔ2°2°v·{±{ÕCò/
ð 	
ˆ	�FÕ+ð —m‘mÒR¬
°4·=±=ÀÑ3CÄRÇ\Á\Ó(RˆÙØ.7Ö8¨œC �GÐ8ˆLÐ8Ü¸LÖI°D˜ ¨Q¡Ó/ÒIÔJð <E×"Q°RÈbÒ"QÈ 1§=£=Ð"Q =Ð"Q�Ñ"Qäœc ?Ó3�Ü CØ—M‘M 6§;¡;°ó!�”ð
 (ö7àô 8¸¸F¿K¹KÈÕNò7ð �	˜FÔ3ð !‘	à!�	à
×Ñ�d—m‘m YÔ/Ü˜TŸ]™]Ó+€DÔâä�4—=‘=Ó! QÒ&¨4¯=©=¸Ñ+;×+BÑ+BÀaÒ+GÐGÐGØ�}‰}˜QÑ×(Ñ(×/Ò/Ø�M‰M×Ñ˜aÔ Ø×Ò !Ñ#Õô �4—=‘=Ó! QÒ&¨4¯=©=¸Ñ+<×+CÑ+CÀqÒ+HÐHÐHØ�}‰}˜RÑ ×)Ñ)×0Ò0Ø�M‰M×Ñ˜bÔ!Ø×Ò !Ñ#Õð —‘—‘×#Ñ#Ø>Ü/Ó1ð $ó 
ˆð �AŠ:Ü�H‰HÐ)Ô*Ü,¨V¯[©[¸%ÀÇÁÓOˆDŒMÜ!$ T§]¡]Ó!3ˆDÕá	™ØŸ™ qÑ)ˆØ×(Ñ(×/Ñ/ˆô 69¸À×AUÑAUÓ5V÷
Ù!1 ¨	ˆE�9Ñð
Ðñ 
ô 'Ø˜fŸk™k×<Ñ<Ó>ó
ˆŒð ×Ñ˜˜c¨J¸Ð+HÐÔIàÑùòA +Dùò 9ùò >ùâBùò 5ùò/
ùò 9ùÚIùó #Rùò7ùóT
sA   …T'ÂT,
Â'T1ÃT6
ÄT;ÆU ÈUÈU
È:UÊUÓUc                   ó   — e Zd ZdZd„ Zy)ÚInstancerMergerzLA merger that takes multiple master fonts, and instantiates
    an instance.c                 óx   — t         j                  | |«       || _        || _        |j	                  |«      | _        y r*   )r(   r/   ÚmodelÚlocationÚgetMasterScalarsÚmasterScalars)r-   r+   rœ  r�  s       r.   r/   zInstancerMerger.__init__#  s1   € Ü�‰˜˜dÔ#ØˆŒ
Ø ˆŒØ"×3Ñ3°HÓ=ˆÕr0   N©r5   r€   r�   Ú__doc__r/   r   r0   r.   rš  rš    s   „ ñó>r0   rš  c                 óÒ   — |j                   dk(  sJ ‚|D �cg c]  }|j                  ‘Œ }}| j                  }| j                  }t	        |j                  ||«      «      |_        y c c}w rs  )r‘   Ú
Coordinaterœ  rŸ  r   ÚinterpolateFromValuesAndScalars)rE   r-   rd   ÚaÚCoordsrœ  rŸ  s          r.   r4   r4   *  s`   € à�;‰;˜!ÒÐÐØ$'Ö(˜qˆa�l‹lÐ(€FÐ(Ø�L‰L€EØ×(Ñ(€MÜØ×-Ñ-¨f°mÓDó€D…Oùò )s   –A$c                 óN  — |j                   dk(  sJ ‚|D �cg c]  }|j                  ‘Œ }}|D �cg c]  }|j                  ‘Œ }}| j                  }| j                  }t        |j                  ||«      «      |_        t        |j                  ||«      «      |_        y c c}w c c}w rs  )r‘   ÚXCoordinateÚYCoordinaterœ  rŸ  r   r¤  )rE   r-   rd   r¥  ÚXCoordsÚYCoordsrœ  rŸ  s           r.   r4   r4   5  sš   € à�;‰;˜!ÒÐÐØ&)Ö* ˆq�}‹}Ð*€GÐ*Ø&)Ö* ˆq�}‹}Ð*€GÐ*Ø�L‰L€EØ×(Ñ(€MÜØ×-Ñ-¨g°}ÓEó€DÔô Ø×-Ñ-¨g°}ÓEó€DÕùò +ùÚ*s
   –B¯B"c           	      ó  — | j                   }| j                  }dD ]b  \  }}t        ||«      rJ ‚t        ||«      sŒ!|D �cg c]  }t        ||d«      ‘Œ }}t	        |j                  ||«      «      }	t        |||	«       Œd y c c}w ©N©)ÚXAdvanceÚ
XAdvDevice)ÚYAdvanceÚ
YAdvDevice)Ú
XPlacementÚ
XPlaDevice)Ú
YPlacementÚ
YPlaDevicer   )rœ  rŸ  r^   rH   r   r¤  r>  )
rE   r-   rd   rœ  rŸ  ÚnameÚ	tableNamer¥  rk   ri   s
             r.   r4   r4   D  s�   € à�L‰L€EØ×(Ñ(€Mðò '‰ˆˆiô ˜4 Ô+Ð+Ð+ä�4˜ÕØ36Ö7¨a”g˜a  qÕ)Ð7ˆFÐ7ÜØ×5Ñ5°f¸mÓLóˆEô �D˜$ Õ&ñ'ùò 8s   Á Bc                   ó   — e Zd ZdZdd„Zy)ÚMutatorMergerzËA merger that takes a variable font, and instantiates
    an instance.  While there's no "merging" to be done per se,
    the operation can benefit from many operations that the
    aligning merger does.c                 óL   — t         j                  | |«       || _        || _        y r*   )r(   r/   Ú	instancerÚdeleteVariations)r-   r+   r¼  r½  s       r.   r/   zMutatorMerger.__init__d  s   € Ü�‰˜˜dÔ#Ø"ˆŒØ 0ˆÕr0   N©Tr   r   r0   r.   rº  rº  ^  s   „ ñô
1r0   rº  c                 ó€  — |d   j                   j                  «       |_         |j                  dk7  ry | j                  }|j                  }| j
                  r|`|rP|j                  dk(  sJ ‚|j                  dz  |j                  z   }t        ||   «      }|xj                  |z  c_
        | j
                  rd|_        y y )Nr   é   é €  é   r   )r@   r±   r‘   r¼  ÚDeviceTabler½  ÚDeltaFormatÚ	StartSizeÚEndSizer   r£  )rE   r-   rd   r¼  ÚdevÚvaridxÚdeltas          r.   r4   r4   j  s®   € ð ˜‘F—O‘O×(Ñ(Ó*€D„Mà‡{�{�aÒØà× Ñ €IØ
×
Ñ
€CØ×ÒØÐÙ
Ø�‰ &Ò(Ð(Ð(Ø—-‘- 2Ñ%¨¯©Ñ4ˆÜ˜	 &Ñ)Ó*ˆØ�Š˜5Ñ �à×ÒØˆ�ð r0   c           	      óÜ  — |d   j                   j                  «       |_         |j                  dk7  ry | j                  }dD ]•  }|dz   }t	        ||«      sŒt        ||«      }| j                  rt        ||«       |€Œ<|j                  dk(  sJ ‚|j                  dz  |j                  z   }t        ||   «      }|dz   }	t        ||	t        ||	«      |z   «       Œ— | j                  rd|_        y y )	Nr   rÀ  ÚXYrÃ  rÁ  rÂ  r£  r   )r@   r±   r‘   r¼  r^   rH   r½  ÚdelattrrÄ  rÅ  rÆ  r   r>  )
rE   r-   rd   r¼  rW   r¸  rÇ  rÈ  rÉ  r;   s
             r.   r4   r4   €  sô   € ð ˜‘F—O‘O×(Ñ(Ó*€D„Mà‡{�{�aÒØà× Ñ €IØò 9ˆØ˜Ñ%ˆ	Ü�t˜YÔ'ØÜ�d˜IÓ&ˆØ×"Ò"Ü�D˜)Ô$Øˆ;Øà�‰ &Ò(Ð(Ð(Ø—-‘- 2Ñ%¨¯©Ñ4ˆÜ˜	 &Ñ)Ó*ˆà�<ÑˆÜ��dœG D¨$Ó/°%Ñ7Õ8ð9ð" ×ÒØˆ�ð r0   c           
      óˆ  — |d   j                   j                  «       |_         | j                  }dD ]�  \  }}t        ||«      sŒt	        ||«      }| j
                  rt        ||«       |€Œ:|j                  dk(  sJ ‚|j                  dz  |j                  z   }t        ||   «      }t        ||t	        ||d«      |z   «       Œ‘ y )Nr   r®  rÁ  rÂ  )r@   r±   r¼  r^   rH   r½  rÌ  rÄ  rÅ  rÆ  r   r>  )	rE   r-   rd   r¼  r·  r¸  rÇ  rÈ  rÉ  s	            r.   r4   r4   ž  sÄ   € ð ˜‘F—O‘O×(Ñ(Ó*€D„Mà× Ñ €Iðò <‰ˆˆiô �t˜YÔ'ØÜ�d˜IÓ&ˆØ×"Ò"Ü�D˜)Ô$Øˆ;Øà�‰ &Ò(Ð(Ð(Ø—-‘- 2Ñ%¨¯©Ñ4ˆÜ˜	 &Ñ)Ó*ˆä��dœG D¨$°Ó2°UÑ:Õ;ñ%<r0   c                   ó.   ‡ — e Zd ZdZd„ Zd„ Zˆ fd„Zˆ xZS )ÚVariationMergerzJA merger that takes multiple master fonts, and builds a
    variable font.c                 ó†   — t         j                  | |«       t        j                  |«      | _        | j                  |«       y r*   )r(   r/   r   ÚOnlineVarStoreBuilderÚstore_builderÚsetModel)r-   rœ  ÚaxisTagsr+   s       r.   r/   zVariationMerger.__init__Â  s/   € Ü�‰˜˜dÔ#Ü%×;Ñ;¸HÓEˆÔØ�‰�eÕr0   c                 óH   — || _         | j                  j                  |«       y r*   )rœ  rÒ  rÓ  )r-   rœ  s     r.   rÓ  zVariationMerger.setModelÇ  s   € ØˆŒ
Ø×Ñ×#Ñ# EÕ*r0   c                 ó   •— d }d }d |v r�t        |«      r|�t        | |¬«      ‚y | j                  }| j                  r+t        |D �cg c]  }|d u‘Œ c}| j                  «      | _        | j                  }|j                  |«      \  }}| j                  |«       t        t        | �'  ||«       |r| j                  |«       |r|| _        y y c c}w )N)r[   )
r   r   r,   r   rœ  ÚgetSubModelrÓ  ÚsuperrÏ  ra   )r-   rc   rd   ÚmasterModelÚorigTTFsrW   rœ  r`   s          €r.   ra   zVariationMerger.mergeThingsË  sÁ   ø€ ØˆØˆØ�3‰;Ü�sŒ|Ø�?Ü$ T¨sÔ3Ð3Øð —y‘yˆHØ�yŠyÜ#¸CÖ$@°q Q¨d¢]Ò$@À$Ç)Á)ÓL�”	àŸ*™*ˆKØ$×0Ñ0°Ó5‰JˆE�3Ø�M‰M˜%Ô äŒo˜tÑ0°°cÔ:áØ�M‰M˜+Ô&ÙØ ˆD�Ið ùò %As   ÁC)r5   r€   r�   r¡  r/   rÓ  ra   Ú__classcell__)r`   s   @r.   rÏ  rÏ  ¾  s   ø„ ñòò
+÷!ð !r0   rÏ  c                 ó|   — t        |«      r|d   d fS | j                  |«      \  }}|t        j                  |«      fS r¯   )r   ÚstoreMastersr   ÚbuildVarDevTable)rÒ  Úmaster_valuesÚbaseÚvarIdxs       r.   rÞ  rÞ  æ  sD   € Ü�ÔØ˜QÑ Ð%Ð%Ø ×-Ñ-¨mÓ<�L€Dˆ&Ø”×)Ñ)¨&Ó1Ð1Ð1r0   c                 óÔ   — |j                   dk7  rt        | d¬«      ‚t        | j                  |D �cg c]  }|j                  ‘Œ c}«      \  |_        }|rd|_         ||_        y y c c}w )Nr   za baseline coordinater·   rÀ  ©r‘   r%   rÞ  rÒ  r£  rÃ  ©rE   r-   rd   r¥  rÃ  s        r.   r4   r4   í  se   € à‡{�{�aÒÜ Ð1HÔIÐIÜ#3Ø×Ñ°SÖ9°˜qŸ|›|Ò9ó$Ñ €D„O�[ñ ØˆŒØ&ˆÕð ùò :ó   ±A%
c                 óÔ   — |j                   dk7  rt        | d¬«      ‚t        | j                  |D �cg c]  }|j                  ‘Œ c}«      \  |_        }|rd|_         ||_        y y c c}w )Nr   za caretr·   rÀ  rã  rä  s        r.   r4   r4   ù  sd   € à‡{�{�aÒÜ °Ô;Ð;Ü#3Ø×Ñ°SÖ9°˜qŸ|›|Ò9ó$Ñ €D„O�[ñ ØˆŒØ&ˆÕð ùò :rå  c                 ó\  — |j                   dk7  rt        | d¬«      ‚t        | j                  |D �cg c]  }|j                  ‘Œ c}«      \  |_        }t        | j                  |D �cg c]  }|j
                  ‘Œ c}«      \  |_        }|s|rd|_         ||_        ||_        y y c c}w c c}w )Nr   z	an anchorr·   rÀ  )r‘   r%   rÞ  rÒ  r¨  r©  ÚXDeviceTableÚYDeviceTable)rE   r-   rd   r¥  rè  ré  s         r.   r4   r4     s¢   € à‡{�{�aÒÜ °Ô=Ð=Ü%5Ø×Ñ°cÖ:°˜qŸ}›}Ò:ó&Ñ"€DÔ�lô &6Ø×Ñ°cÖ:°˜qŸ}›}Ò:ó&Ñ"€DÔ�lñ ‘|ØˆŒØ(ˆÔØ(ˆÕð $ùò ;ùò ;s   ±B$
Á'B)
c                 óÚ   — dD ]a  \  }}t        ||«      sŒt        | j                  |D �cg c]  }t        ||d«      ‘Œ c}«      \  }}t	        |||«       |sŒUt	        |||«       Œc y c c}w r­  )r^   rÞ  rÒ  rH   r>  )rE   r-   rd   r·  r¸  r¥  ri   ÚdeviceTables           r.   r4   r4     st   € ðò 6‰ˆˆiô �4˜ÕÜ!1Ø×$Ñ$ÀCÖ&H¸q¤w¨q°$¸Õ':Ò&Hó"ÑˆE�;ô �D˜$ Ô&ÚÜ˜˜i¨Õ5ñ6ùò 'Is   ªA(c                   óv   — e Zd ZdZdd„Zdd„Zd„ fd„Zd„ Zd„ Zd„ Z	d	e
fd
„Zd	e
fd„Zed„ «       Zed„ «       Zy)ÚCOLRVariationMergera½  A specialized VariationMerger that takes multiple master fonts containing
    COLRv1 tables, and builds a variable COLR font.

    COLR tables are special in that variable subtables can be associated with
    multiple delta-set indices (via VarIndexBase).
    They also contain tables that must change their type (not simply the Format)
    as they become variable (e.g. Affine2x3 -> VarAffine2x3) so this merger takes
    care of that too.
    c                 óº   — t         j                  | |||«       i | _        g | _        t	        «       | _        g | _        d | _        |rt        «       | _        d| _	        y )NF)
rÏ  r/   ÚvarIndexCacheÚvarIdxesr‹   ÚvarTableIdsÚlayersÚlayerReuseCacher   Ú_doneBaseGlyphs)r-   rœ  rÔ  r+   ÚallowLayerReuses        r.   r/   zCOLRVariationMerger.__init__1  sX   € Ü× Ñ   u¨h¸Ô=ð  ˆÔàˆŒô ›5ˆÔàˆŒØ#ˆÔÙÜ#2Ó#4ˆDÔ à$ˆÕr0   c                 ó€   — d|v r"d|v r| j                  |d   j                  «       t        j                  | |||«       y )NÚCOLR)ÚexpandPaintColrLayersrj   rÏ  r~   )r-   r+   r{   r|   s       r.   r~   zCOLRVariationMerger.mergeTablesC  s>   € Ø�YÑ 6¨T¡>ð ×&Ñ& t¨F¡|×'9Ñ'9Ô:Ü×#Ñ# D¨$°¸YÕGr0   c                  ó   — y)NTr   )rš   s    r.   ú<lambda>zCOLRVariationMerger.<lambda>P  s   � r0   c                 óž  — |j                   }|j                  }d}	  ||«      } ||«      }|s!t        | t	        |«      j
                  |¬«      ‚|}g }|D ])  }	t        |	dd «      }	  ||«      }|j                  |«       Œ+ t        ||«      s"t        | t	        |«      j
                  ||¬«      ‚|S # t        $ r Y Œ�w xY w# t        $ r Y Œ]w xY w)NF)r¸   ri   r‘   rS  )
r‘   Ú
formatEnumÚ
ValueErrorr%   rA   r5   rH   r6   r   r$   )
r-   rc   rd   ÚvalidateÚfmtrü  ÚokrZ   r[   rW   s
             r.   ÚcheckFormatEnumz#COLRVariationMerger.checkFormatEnumP  sí   € Ø�j‰jˆØ—^‘^ˆ
Øˆð	Ù˜S“/ˆCñ ˜#“ˆBÙÜ# D´4¸³9×3EÑ3EÈSÔQÐQØˆØˆØò 	ˆAÜ˜!˜X tÓ,ˆCðÙ  “o�ð �J‰J�s�Oð	ô ˜( CÔ(Ü%ØÜ˜c›×+Ñ+Ø!Øô	ð ð ˆøô- ò 	Ùð	ûô ò Ùðús#   œB1 Á&C Â1	B=Â<B=Ã 	CÃCc           
      ó   — |j                  «       D ]5  }	 | j                  ||   |D �cg c]  }|j                  |«      ‘Œ c}«       Œ7 y c c}w # t        $ r%}|j                  j                  d|›d�«       ‚ d }~ww xY w)Nú[ú])rU   ra   rI   r&   rb   r6   )r-   rc   rd   r‰   rW   rm   s         r.   ÚmergeSparseDictz#COLRVariationMerger.mergeSparseDictn  sq   € Ø—‘“ò 	ˆAðØ× Ñ   Q¡¸CÖ)@°q¨!¯%©%°­(Ò)@ÕAñ	ùâ)@øÜ#ò Ø—‘—‘  1 % q˜zÔ*Øûðús(   •A¨A
Á AÁ
AÁ	A=Á A8Á8A=c                 óì   — |D ]:  }t        ||«      }|D �cg c]  }t        ||«      ‘Œ }}	 | j                  ||«       Œ< y c c}w # t        $ r$}|j                  j	                  d|› �«       ‚ d }~ww xY w)Nr]   )rH   ra   r&   rb   r6   )	r-   rc   rd   r<   r;   ri   rf   rk   rm   s	            r.   Ú
mergeAttrszCOLRVariationMerger.mergeAttrsv  sz   € Øò 	ˆDÜ˜C Ó&ˆEØ69Ö:¨d”g˜d DÕ)Ð:ˆFÐ:ðØ× Ñ  ¨Õ/ñ		ùâ:øô $ò Ø—‘—‘  4 &˜zÔ*Øûðús   –A¬AÁ	A3ÁA.Á.A3c                 óx  — |D �cg c]  }t        ||«      ‘Œ }}d}|j                  |«      }t        |t        «      r d}|D �cg c]  }|j	                  |«      ‘Œ }}|d   }	t
        j                  }
t        |«      s| j                  j                  |«      \  }	}
|r|j                  |	«      }	|	|
fS c c}w c c}w )NFTr   )rH   ÚgetConverterByNamerw   r   ÚtoIntr’   ÚNO_VARIATION_INDEXr   rÒ  rÝ  ÚfromInt)r-   rc   rd   r;   rf   rß  Úis_fixed_size_floatÚconvrW   Ú	baseValuerá  s              r.   ÚstoreMastersForAttrz'COLRVariationMerger.storeMastersForAttr€  s¾   € Ø9<Ö=°œ  tÕ,Ð=ˆÐ=ð
 $ÐØ×%Ñ% dÓ+ˆÜ�dœNÔ+Ø"&ÐØ4AÖB¨q˜TŸZ™Z¨�]ÐBˆMÐBà! !Ñ$ˆ	Ü×&Ñ&ˆÜ˜Ô&Ø $× 2Ñ 2× ?Ñ ?ÀÓ NÑˆI�váØŸ™ YÓ/ˆIà˜&Ð Ð ùò' >ùò Cs   …B2ÁB7Úreturnc                 ó˜  — t        |«      }| j                  j                  |«      }|€ct        t	        | j
                  «      t	        |«      z
  dz   «      D ]3  }| j
                  ||t	        |«      z    |k(  sŒ"|x| j                  |<   } n |€{t        t	        |«      dz
  dd«      D ]_  }| j
                  | d  |d | k(  sŒt	        | j
                  «      |z
  }|| j                  |<   | j
                  j                  ||d  «        n |€?t	        | j
                  «      x| j                  |<   }| j
                  j                  |«       |S )Nr   r   r%  )Útuplerï  rI   rõ   rp   rð  r?  )r-   rð  rh   ÚvarIndexBasert   Úns         r.   ÚstoreVariationIndicesz)COLRVariationMerger.storeVariationIndices–  sH  € ô �H‹oˆØ×)Ñ)×-Ñ-¨cÓ2ˆàÐäœ3˜tŸ}™}Ó-´°H³Ñ=ÀÑAÓBò �Ø—=‘=  Q¬¨X«Ñ%6Ð7¸8ÓCØ=>Ð>�D×&Ñ& sÑ+¨lÙðð
 Ðäœ3˜x›=¨1Ñ,¨a°Ó4ò �Ø—=‘= !  Ð%¨°"°1¨Ó5Ü#& t§}¡}Ó#5¸Ñ#9�LØ.:�D×&Ñ& sÑ+Ø—M‘M×(Ñ(¨°!°"¨Ô6Ùðð Ðä58¸¿¹Ó5GÐGˆD×Ñ˜sÑ# lØ�M‰M× Ñ  Ô*àÐr0   c                 óæ   — t         j                  }g }|D ]6  }| j                  |||«      \  }}t        |||«       |j	                  |«       Œ8 t        d„ |D «       «      r| j                  |«      }|S )Nc              3   óB   K  — | ]  }|t         j                  k7  –— Œ y ­wr*   )r’   r  rÑ   s     r.   rX   z9COLRVariationMerger.mergeVariableAttrs.<locals>.<genexpr>»  s   è ø€ Ò<¨aˆq”B×)Ñ)Õ)Ñ<ùs   ‚)r’   r  r  r>  r6   Úanyr  )	r-   rc   rd   r<   r  rð  r;   r  rá  s	            r.   ÚmergeVariableAttrsz&COLRVariationMerger.mergeVariableAttrs³  sx   € Ü×,Ñ,ˆØˆØò 	$ˆDØ $× 8Ñ 8¸¸cÀ4Ó HÑˆI�vÜ�C˜˜yÔ)Ø�O‰O˜FÕ#ð	$ô
 Ñ<°8Ô<Ô<Ø×5Ñ5°hÓ?ˆLàÐr0   c                 óœ  — t        |dd„ ¬«      D ]º  }|d   }|j                  }t        |«      j                  } |«       }|j                  j                  |j                  «       |j                  «        |d   j                  }|j                  �$|t        ||j                  «      |j                  <   Œ¤t        ||j                  |«       Œ¼ y )NTc                 óL   — t        t        | d   j                  «      dd «      d uS )Nr%  ÚVarType)rH   rA   ri   )Úpaths    r.   rú  z?COLRVariationMerger.convertSubTablesToVarType.<locals>.<lambda>Å  s%   € Üœ˜T "™XŸ^™^Ó,¨i¸Ó>ÀdÐJð r0   )Ú	skip_rootÚ	predicater%  éþÿÿÿ)r   ri   rA   r  r@   rŒ   ÚpopulateDefaultsr¹   rH   r·  r>  )Úclsrj   r  r‹  ÚsubTableÚvarTypeÚnewSubTableÚparents           r.   ÚconvertSubTablesToVarTypez-COLRVariationMerger.convertSubTablesToVarTypeÀ  s±   € ä"ØØñô
ò 	6ˆDð �b‘ˆBØ—x‘xˆHÜ˜8“n×,Ñ,ˆGÙ!›)ˆKØ× Ñ ×'Ñ'¨×(9Ñ(9Ô:Ø×(Ñ(Ô*Ø˜"‘X—^‘^ˆFØ�x‰xÐ#Ø5@”˜ §¡Ó(¨¯©Ò2ä˜ §¡¨Õ5ñ#	6r0   c                 ój  — | j                   syt        «       }g }| j                  j                  D �]<  }|j                  g}|sŒ|j                  «       }|j                  t        j                  j                  k(  rŒ;|j                  t        j                  j                  k(  r›t        t        || «      «      }t        |«      }|D ]^  }t        |«      |v r$t        j                   |«      }t        |«      |vsJ ‚|j#                  |«       |j%                  t        |«      «       Œ` ||_        t        |«      |_        n|j+                  | «      }|j-                  t/        |«      «       |r�Œ)�Œ? t        |«      t        |«      k(  sJ ‚|| j                   _        t        |«      | j                   _        y)aû  Rebuild LayerList without PaintColrLayers reuse.

        Each base paint graph is fully DFS-traversed (with exception of PaintColrGlyph
        which are irrelevant for this); any layers referenced via PaintColrLayers are
        collected into a new LayerList and duplicated when reuse is detected, to ensure
        that all paints are distinct objects at the end of the process.
        PaintColrLayers's FirstLayerIndex/NumLayers are updated so that no overlap
        is left. Also, any consecutively nested PaintColrLayers are flattened.
        The COLR table's LayerList is replaced with the new unique layers.
        A side effect is also that any layer from the old LayerList which is not
        referenced by any PaintColrLayers is dropped.
        N)Ú	LayerListr‹   ÚBaseGlyphListÚBaseGlyphPaintRecordÚPaintr†  r‘   r’   ÚPaintFormatÚPaintColrGlyphÚPaintColrLayersry   Ú_flatten_layersrp   Úidr±   r  r6   r÷   ÚFirstLayerIndexÚ	NumLayersÚgetChildrenr?  ÚreversedÚ
LayerCount)	ÚcolrÚuniqueLayerIDsÚnewLayerListrÊ   ÚfrontierÚpaintÚchildrenÚfirst_layer_indexÚlayers	            r.   rø  z)COLRVariationMerger.expandPaintColrLayersÕ  sh  € ð �~Š~àÜ›ˆØˆØ×%Ñ%×:Ñ:ó 	4ˆCØŸ	™	�{ˆHÚØ Ÿ™›�Ø—<‘<¤2§>¡>×#@Ñ#@Ò@àØ—\‘\¤R§^¡^×%CÑ%CÒCô  $¤O°E¸4Ó$@ÓA�HÜ(+¨LÓ(9Ð%Ø!)ò 6˜Ü˜e›9¨Ñ6Ü$(§M¡M°%Ó$8˜EÜ#% e£9°NÑ#BÐBÐ#BØ$×+Ñ+¨EÔ2Ø&×*Ñ*¬2¨e«9Õ5ð6ð ->�EÔ)Ü&)¨(£m�E•Oà$×0Ñ0°Ó6�HØ—‘¤¨Ó 2Ô3õ) ð	4ô0 �<Ó ¤C¨Ó$7Ò7Ð7Ð7Ø+ˆ�‰ÔÜ$'¨Ó$5ˆ�‰Õ!r0   Nr¾  ))r÷  )r5   r€   r�   r¡  r/   r~   r  r  r  r  rÕ   r  r  r‚   r(  Ústaticmethodrø  r   r0   r.   rí  rí  &  sl   „ ñó%ó$Hñ 2@ó ò<òò!ð,°ó ð:°Só ð ñ6ó ð6ð( ñ,6ó ñ,6r0   rí  c           
      ó  — |j                   D �ci c]  }|j                  |“Œ }}|D ��cg c]'  }|j                   D �ci c]  }|j                  |“Œ c}‘Œ) }}}t        |j                  «       «      D ]8  \  }}	 | j	                  ||   |D �	cg c]  }	|	j                  |«      ‘Œ c}	«       Œ: d| _
        y c c}w c c}w c c}}w c c}	w # t        $ r7}
|
j                  j                  d|› d�«       d|›�|
j                  d<   ‚ d }
~
ww xY w)Nz.BaseGlyphPaintRecord[r  zbase glyph r�  T)r,  Ú	BaseGlyphrq   rU   ra   rI   r&   rb   r6   Úcauserô  )rE   r-   rd   rÊ   rc   rM   Úmastersrt   r¦   rW   rm   s              r.   r4   r4     sû   € ð *.×)BÑ)BÖ
C #ˆ3�=‰=˜#ÑÐ
C€CÐ
CØOR×SÈ!¨a×.DÑ.DÖE s�—‘˜sÑ"ÔEÐS€GÑSä˜#Ÿ(™(›*Ó%ò ‰ˆˆ1ð	à×Ñ˜s 1™v¸'Ö'B°Q¨¯©¨a­Ò'BÕCðð "€FÕùò DùÚEùÓSùò
 (CøÜò 	Ø�G‰G�N‰NÐ3°A°3°aÐ8Ô9Ø$/°¨uÐ"5ˆA�G‰G�JÑØûð	úsE   �B5ªB?½B:ÁB?Á9C
ÂCÂ$C
Â:B?ÃC
Ã
	D
Ã2DÄD
c                 ó€   — | j                   sJ d«       ‚t        | j                  «      |_        | j                  |_        y )Nz-BaseGlyphList must be merged before LayerList)rô  rp   rò  r7  r-  r²   s      r.   r4   r4     s4   € ð ×!Ò!ÐRÐ#RÓRÐ!ä˜&Ÿ-™-Ó(€D„OØ—‘€D…Jr0   c              #   ó  K  — | j                   t        j                  j                  k(  sJ ‚| j	                  |«      D ]B  }|j                   t        j                  j                  k(  rt        ||«      E d {  –—†  Œ?|–— ŒD y 7 Œ­wr*   )r‘   r’   r.  r0  r5  r1  )Úrootr8  r<  s      r.   r1  r1  !  sj   è ø€ Ø�;‰;œ"Ÿ.™.×8Ñ8Ò8Ð8Ð8Ø×!Ñ! $Ó'ò ˆØ�<‰<œ2Ÿ>™>×9Ñ9Ò9Ü& u¨dÓ3×3Ñ3à‹Kñ	à3ús   ‚A4BÁ6BÁ7Bc           
      ó^  ‡ ‡	— t        t        |‰ j                  d   j                  «      «      }t	        ‰ j
                  «      t	        |«      k(  sJ ‚t        t	        |«      «      D �cg c]4  }t        t        ||   ‰ j
                  |   d   j                  «      «      ‘Œ6 }}	 ‰ j                  ||«       ‰ j                  �‰ j                  j                  |«      }t	        |«      t        kD  }t        |t        ¬«      }ˆ	ˆ fd„Š	|D �cg c]
  } ‰	|«      ‘Œ }}t	        |«      dk(  rS|d   j                  t         j"                  j$                  k(  r)|d   j&                  |_        |d   j(                  |_        y t	        |«      |_        t	        ‰ j*                  «      |_        ‰ j*                  j-                  |«       ‰ j                  �*|s'‰ j                  j/                  ||j(                  «       y y y c c}w # t        $ r!}|j                  j                  d«       ‚ d }~ww xY wc c}w )Nr÷  z.Layers)r  c                 óÂ  •— t        | t        «      rÈ| D �cg c]
  } ‰|«      ‘Œ }}t        j                  «       } t	        t        j
                  j                  «      | _        t        |«      | _	        t        ‰j                  «      | _        ‰j                  j                  |«       ‰j                  �&‰j                  j                  || j                  «       | S c c}w r*   )rw   ry   r’   r-  rÕ   r.  r0  r‘   rp   r4  rò  r3  r?  ró  r÷   )r<  rˆ   rò  ÚlistToColrLayersr-   s      €€r.   rJ  z0_merge_PaintColrLayers.<locals>.listToColrLayersM  s§   ø€ Ü�eœTÔ"Ø38Ö9¨aÑ& qÕ)Ð9ˆFÐ9Ü—H‘H“JˆEÜœrŸ~™~×=Ñ=Ó>ˆEŒLÜ! &›kˆEŒOÜ$'¨¯©Ó$4ˆEÔ!Ø�K‰K×Ñ˜vÔ&Ø×#Ñ#Ð/Ø×$Ñ$×(Ñ(¨°×1FÑ1FÔGØˆùò :s   –Cr   r   )ry   r1  r+   rj   rp   r,   rõ   ru   r&   rb   r6   ró  Ú	try_reuser   r   r‘   r’   r.  r0  r4  r3  rò  r?  r÷   )
r-   rc   rd   Ú
out_layersrt   Úmaster_layersesrm   Úis_treerˆ   rJ  s
   `        @r.   Ú_merge_PaintColrLayersrO  *  sß  ù€ ô ”o c¨4¯9©9°VÑ+<×+BÑ+BÓCÓD€Jô ˆt�y‰y‹>œS ›XÒ%Ð%Ð%ô ”s˜3“x“öàô 	Œ_˜S ™V T§Y¡Y¨q¡\°&Ñ%9×%?Ñ%?Ó@ÕAð€Oð ð
Ø�‰˜
 OÔ4ð ×ÑÐ'à×)Ñ)×3Ñ3°JÓ?ˆ
ô �*‹oÔ :Ñ:€GÜ! *Ô0JÔK€Jõ
ð 0:Ö:¨!Ñ" 1Õ%Ð:€JÐ:ä
ˆ:ƒ˜!Ò 
¨1¡× 4Ñ 4¼¿¹×8VÑ8VÒ Vð
 # 1™×/Ñ/ˆŒØ(¨™m×;Ñ;ˆÕä˜J›ˆŒÜ! $§+¡+Ó.ˆÔà�‰×Ñ˜:Ô&ð ×ÑÐ+±GØ× Ñ ×$Ñ$ Z°×1DÑ1DÕEð 5<Ð+ùòoøô ò ð 	
�‰�‰�yÔ!Øûð	üò> ;s$   Á(9G8Â$G= Ä
H*Ç=	H'ÈH"È"H'c                 óx  ‡ ‡
— ‰ j                  ||d„ «      }|t        j                  j                  u rt	        ‰ ||«       y |j                  «       }dŠ
|�t        j                  t        |«      |«      Š
ˆ
fd„|j                  «       D «       }‰ j                  |||«       ‰ j                  ||‰
«      }|j                  «       D �cg c]  }|j                  ‘Œ }}|t        j                  k7  xs t        ˆ fd„|D «       «      }	|	r1‰
r||_        |r‰ j#                  |«       |€J ‚t%        |«      |_        y y c c}w )Nc                 ó$   — | j                  «        S r*   )Úis_variable)rÿ  s    r.   rú  zmerge.<locals>.<lambda>p  s   € ¸C¿O¹OÓ<MÐ8M€ r0   r   c              3   óT   •K  — | ]  }|j                   ‰vsŒ|j                   –— Œ! y ­wr*   ©r·  ©rV   rb  ÚvarAttrss     €r.   rX   zmerge.<locals>.<genexpr>{  ó    øè ø€ ÒR˜a¸1¿6¹6ÈÒ;Q�1—6•6ÑRùó   ƒ(—(c              3   óL   •K  — | ]  }t        |«      ‰j                  v –— Œ y ­wr*   ©r2  rñ  )rV   rj   rE   s     €r.   rX   zmerge.<locals>.<genexpr>„  s%   øè ø€ ò >Ø,1Œˆ5‹	�V×'Ñ'Ô'ñ>ùó   ƒ!$)r  r’   r.  r0  rO  Úas_variabler
   ÚgetVariableAttrsrA   ÚgetConvertersr  r  ÚiterSubTablesri   r  r  ÚVarIndexBaser(  rÕ   r‘   )rE   r-   rd   rÿ  Ú	varFormatÚstaticAttrsr  r‹  Ú	subTablesÚ
isVariablerV  s   `         @r.   r4   r4   n  s.  ù€ à
×
 Ñ
   sÑ,MÓ
N€Cà
Œb�n‰n×,Ñ,Ñ,Ü˜v t¨SÔ1Øà—‘Ó!€Ià€HØÐÜ×*Ñ*¬4°«:°yÓAˆÛR 4×#5Ñ#5Ó#7ÔR€Kà
×Ñ�d˜C Ô-à×,Ñ,¨T°3¸ÓA€Là$(×$6Ñ$6Ó$8Ö9˜b�—“Ð9€IÐ9ð ¤×!6Ñ!6Ñ6ò ¼#ó >Ø5>ô>ó ;€Jñ Ùð !-ˆDÔáà×,Ñ,¨TÔ2àÐ$Ð$Ð$Ü˜)“nˆ�ð ùò :s   ÃD7c                 óV  ‡— t        |«      j                  }t        j                  |«      Šˆfd„|j	                  «       D «       }| j                  |||«       | j                  ||‰«      }|t        j                  k7  r,||_	        | j                  j                  t        |«      «       y y )Nc              3   óT   •K  — | ]  }|j                   ‰vsŒ|j                   –— Œ! y ­wr*   rT  rU  s     €r.   rX   zmerge.<locals>.<genexpr>œ  rW  rX  )rA   r  r
   r]  r^  r  r  r’   r  r`  rñ  r÷   r2  )rE   r-   rd   r%  rb  r  rV  s         @r.   r4   r4   —  sŽ   ø€ ä�4‹j× Ñ €Gä×&Ñ& wÓ/€HÛR 4×#5Ñ#5Ó#7ÔR€Kà
×Ñ�d˜C Ô-à×,Ñ,¨T°3¸ÓA€Là”r×,Ñ,Ò,Ø(ˆÔà×Ñ×Ñœr $›xÕ(ð -r0   c                 óþ   ‡ — ‰ j                  ||d„ |j                  «       D «       «       t        ˆ fd„|j                  D «       «      r6‰ j	                  |«       ‰ j
                  j                  t        |«      «       y y )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wr*   rT  ra  s     r.   rX   zmerge.<locals>.<genexpr>ª  s   è ø€ Ò!G¨Q !§&¥&Ñ!Gùr4  c              3   óL   •K  — | ]  }t        |«      ‰j                  v –— Œ y ­wr*   rZ  )rV   ÚstoprE   s     €r.   rX   zmerge.<locals>.<genexpr>¬  s    øè ø€ Ò
E¨dŒ2ˆd‹8�v×)Ñ)Ô)Ñ
Eùr[  )r  r^  r  Ú	ColorStopr(  rñ  r÷   r2  r²   s   `  r.   r4   r4   ¨  sb   ø€ à
×Ñ�d˜CÑ!G°$×2DÑ2DÓ2FÔ!GÔHä
Ó
E°d·n±nÔ
EÔEØ×(Ñ(¨Ô.Ø×Ñ×Ñœr $›xÕ(ð Fr0   Úclipsc                 ó(   — | j                  ||«       y r*   )r  r²   s      r.   r4   r4   ±  s   € ð ×Ñ˜4 Õ%r0   rÞ   r*   )F)r@  rA  )kr¡  Úosr±   rB   Úoperatorr   ÚloggingÚfontTools.colorLib.builderr   r   ÚfontTools.miscr   ÚfontTools.misc.roundToolsr   ÚfontTools.misc.treeToolsr   ÚfontTools.ttLib.tablesr	   r’   r
   Ú#fontTools.ttLib.tables.otConvertersr   Ú!fontTools.ttLib.tables.otTraverser   Ú#fontTools.ttLib.tables.DefaultTabler   ÚfontTools.varLibr   r   r   ÚfontTools.varLib.modelsr   r   r   r   r   ÚfontTools.varLib.varStorer   Ú	functoolsr   ÚfontTools.otlLib.builderr   ÚfontTools.otlLib.optimize.gposr   r   Ú	getLoggerrˆ  Úerrorsr   r   r   r   r    r!   r"   r#   r$   r%   r&   Úobjectr(   r„   rE   ÚGDEFr4   r›   r­   r×   r7  r»   rÍ   r“   r¿   rñ   rý   r
  r#  r&  r¾   rO  ÚMarkBasePosÚMarkMarkPosr[  r]  rg  ri  rq  Ú
CursivePosrt  ÚLookuprš  Ú
CaretValuerº  rÏ  rÞ  Ú	BaseCoordrí  r+  r*  r1  rO  r-  ÚClipBoxÚ	Affine2x3rk  Ú	ColorLineÚClipListr   r0   r.   ú<module>r�     s
  ðñó 
Û Û Ý Û ß RÝ (Ý -Ý 5Ý 1Ý 3Ý >Ý <Ý <ß 6Ñ 6ß SÕ SÝ 7Ý Ý 3÷ð
 €g×ÑÐ1Ó2€÷÷ ÷ ñ ôrˆVô rôp	�Vô 	ð ×Ñ�r—w‘w Ó0ñ#ó 1ð#ò2ó"ðJ ×Ñ�v×)Ñ)Ó*ñ#ó +ð#ð ×Ñ�r—y‘yÓ!ñ#ó "ð#òò$ð6 ×Ñ�r—|‘|Ó$ñ:ó %ð:ðz ×Ñ�r—z‘zÓ"ñ24ó #ð24òj,óBó8ó6Kò\&3ðR ×Ñ�r—z‘zÓ"ñ(ó #ð(óVS)ðl ×Ñ�r—~‘~Ó&ñTó 'ðTð ×Ñ�r—~‘~Ó&ñTó 'ðTòò2ò2ò<ò*ð0 ×Ñ�r—}‘}Ó%ñ4ó &ð4ð. ×Ñ�r×)Ñ)Ó*ñ#ó +ð#ð ×Ñ�r—y‘yÓ!ña ó "ða ôR>�nô >ð ×Ñ˜Ÿ™Ó&ñó 'ðð ×Ñ˜Ÿ	™	Ó"ñó #ðð ×Ñ˜×*Ñ*Ó+ñ'ó ,ð'ô2	1�Nô 	1ð ×Ñ�b—m‘mÓ$ñó %ðð* ×Ñ�b—i‘iÓ ñó !ðð: ×Ñ�f×(Ñ(Ó)ñ<ó *ð<ô>%!�nô %!òP2ð ×Ñ˜Ÿ™Ó%ñ'ó &ð'ð ×Ñ˜Ÿ™Ó&ñ'ó 'ð'ð ×Ñ˜Ÿ	™	Ó"ñ)ó #ð)ð ×Ñ˜×*Ñ*Ó+ñ6ó ,ð6ô \6˜/ô \6ð~ ×Ñ˜B×,Ñ,Ó-ñ"ó .ð"ð" ×Ñ˜BŸL™LÓ)ñó *ðòòAFðH ×Ñ˜RŸX™X r§z¡zÐ2Ó3ñ%%ó 4ð%%ðP ×Ñ˜RŸ\™\¨2¯<©<Ð8Ó9ñ)ó :ð)ð  ×Ñ˜BŸL™LÓ)ñ)ó *ð)ð ×Ñ˜BŸK™K¨Ó1ñ&ó 2ñ&r0   