§
    ¢”jE  ã            
       óN  — d dl Z d dlZd dlmZmZ d dlmZ d dlmZm	Z	 d dl
mZ d dlmZ d dlmZmZmZmZmZmZ d dlmZ d d	lmZmZ d d
lmZ d dlmZmZ  e j        e ¦  «        Z!ee › d�         Z"dZ# e$e"j%        ¦  «        Z&de'fd„Z(dede'defd„Z)dede'dej*        ddfd„Z+dede'dej*        ddfd„Z,dede'deej-                 deej-                 fd„Z.dede'dej-        deej-                 fd„Z/dej0        de1fd„Z2eeee$df         ee$df         f         eej3        ej3        f         f         Z4dee'         fd„Z5	 d+d eeeee'e'f                  e'e'f                  d!ee'         fd"„Z6 ed#g d$¢¦  «        Z7e G d%„ d&¦  «        ¦   «         Z8	 d,ded(e4d)e'dee4         fd*„Z9dS )-é    N)ÚdefaultdictÚ
namedtuple)Ú	dataclass)Úcached_propertyÚreduce)Úchain)Úlog2)ÚDefaultDictÚDictÚIterableÚListÚSequenceÚTuple)ÚOPTIONS)Ú	bit_countÚbit_indices)ÚTTFont)ÚotBaseÚotTablesz:COMPRESSION_LEVELÚFONTTOOLS_GPOS_COMPACT_MODEÚreturnc                  ó4  — t           } t          t          j        v r?dd l}|                     dt          › d�t          ¦  «         t          j        t                   } t          | ¦  «        dk    r| dv rt          | ¦  «        S t          dt          › d| › �¦  «        ‚)Nr   ú'z}' environment variable is deprecated. Please set the 'fontTools.otlLib.optimize.gpos:COMPRESSION_LEVEL' option in TTFont.cfg.é   Ú
0123456789zBad ú=)
ÚGPOS_COMPACT_MODE_DEFAULTÚGPOS_COMPACT_MODE_ENV_KEYÚosÚenvironÚwarningsÚwarnÚDeprecationWarningÚlenÚintÚ
ValueError)Ú	env_levelr!   s     úm/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/fontTools/otlLib/optimize/gpos.pyÚ_compression_level_from_envr)      s¥   € Ý)€IÝ ¥B¤JÐ.Ð.Øˆˆˆà�ŠðÕ)ð ð ð õ ñ		
ô 	
ð 	
õ ”JÕ8Ô9ˆ	Ý
ˆ9�~„~˜ÒÐ˜y¨LÐ8Ð8Ý�9‰~Œ~ÐÝ
ÐCÕ5ÐCÐC¸	ÐCÐCÑ
DÔ
DÐDó    ÚfontÚlevelc                 óþ   — |                       d¦  «        }|€| S |j        j        j        D ]Q}|j        dk    rt          | ||¦  «         Œ|j        dk    r'|j        d         j        dk    rt          | ||¦  «         ŒR| S )NÚGPOSé   é	   r   )	ÚgetÚtableÚ
LookupListÚLookupÚ
LookupTypeÚcompact_lookupÚSubTableÚExtensionLookupTypeÚcompact_ext_lookup)r+   r,   ÚgposÚlookups       r(   Úcompactr<   +   s–   € ð �8Š8�FÑÔ€Dð €|Øˆà”*Ô'Ô.ð 4ð 4ˆØÔ Ò!Ð!Ý˜4 ¨Ñ/Ô/Ð/Ð/ØÔ !Ò#Ð#¨¬¸Ô(:Ô(NÐRSÒ(SÐ(SÝ˜t U¨FÑ3Ô3Ð3øà€Kr*   r;   c                 óh   — t          | ||j        ¦  «        }||_        t          |¦  «        |_        d S ©N)Úcompact_pair_posr7   r$   ÚSubTableCount)r+   r,   r;   Únew_subtabless       r(   r6   r6   H   s2   € Ý$ T¨5°&´/ÑBÔB€MØ#€F„OÝ˜}Ñ-Ô-€FÔÐÐr*   c                 óö   — t          | |d„ |j        D ¦   «         ¦  «        }g }|D ]8}t          j        ¦   «         }d|_        ||_        |                     |¦  «         Œ9||_        t          |¦  «        |_        d S )Nc                 ó   — g | ]	}|j         ‘Œ
S © )ÚExtSubTable)Ú.0Úext_subtables     r(   ú
<listcomp>z&compact_ext_lookup.<locals>.<listcomp>P   s   € ÐSÐSÐS°<�lÔ.ÐSÐSÐSr*   r   )	r?   r7   r   ÚExtensionPosÚFormatrE   Úappendr$   r@   )r+   r,   r;   rA   Únew_ext_subtablesÚsubtablerG   s          r(   r9   r9   N   s“   € Ý$ØˆeÐSÐSÀ6Ä?ÐSÑSÔSñô €Mð ÐØ!ð /ð /ˆÝÔ,Ñ.Ô.ˆØˆÔØ#+ˆÔ Ø× Ò  Ñ.Ô.Ð.Ð.Ø'€F„OÝÐ0Ñ1Ô1€FÔÐÐr*   Ú	subtablesc                 ó´   — g }|D ]R}|j         dk    r|                     |¦  «         Œ#|j         dk    r$|                     t          | ||¦  «        ¦  «         ŒS|S )Nr   r/   )rJ   rK   ÚextendÚcompact_class_pairs)r+   r,   rN   rA   rM   s        r(   r?   r?   \   ss   € ð €MØð Mð MˆØŒ?˜aÒÐà× Ò  Ñ*Ô*Ð*Ð*ØŒ_ Ò!Ð!Ø× Ò Õ!4°T¸5À(Ñ!KÔ!KÑLÔLÐLøØÐr*   rM   c                 ó\  — ddl m} g }t          t          ¦  «        }|j        j        D ];}||j        j                             |d¦  «                  	                    |¦  «         Œ<t          t          ¦  «        }|j
        j                             ¦   «         D ] \  }}||          	                    |¦  «         Œ!i }	t          |j        ¦  «        D ]–\  }}
t          |
j        ¦  «        D ]|\  }}t          |¦  «        rŒt!          |dd ¦  «        t!          |dd ¦  «        f|	t#          t%          ||         ¦  «        ¦  «        t#          t%          ||         ¦  «        ¦  «        f<   Œ}Œ—t'          | |	|¦  «        }|D ]3}| 	                     |||                      ¦   «         ¦  «        ¦  «         Œ4|S )Nr   )ÚbuildPairPosClassesSubtableÚValue1ÚValue2)ÚfontTools.otlLib.builderrS   r   ÚlistÚCoverageÚglyphsÚ	ClassDef1Ú	classDefsr1   rK   Ú	ClassDef2ÚitemsÚ	enumerateÚClass1RecordÚClass2RecordÚis_really_zeroÚgetattrÚtupleÚsortedÚ,cluster_pairs_by_class2_coverage_custom_costÚgetReverseGlyphMap)r+   r,   rM   rS   rN   Úclasses1ÚgÚclasses2ÚiÚ	all_pairsÚclass1ÚjÚclass2Úgrouped_pairsÚpairss                  r(   rQ   rQ   i   sÐ  € ð EÐDÐDÐDÐDÐDà€IÝ,7½Ñ,=Ô,=€HØÔÔ%ð Cð CˆØ�Ô#Ô-×1Ò1°!°QÑ7Ô7Ô8×?Ò?ÀÑBÔBÐBÐBÝ,7½Ñ,=Ô,=€HØÔ"Ô,×2Ò2Ñ4Ô4ð ð ‰ˆˆ1Ø�Œ×Ò˜1ÑÔÐÐØ€IÝ˜xÔ4Ñ5Ô5ð ð ‰	ˆˆ6Ý" 6Ô#6Ñ7Ô7ð 	ð 	‰IˆAˆvÝ˜fÑ%Ô%ð Øå˜ ¨$Ñ/Ô/Ý˜ ¨$Ñ/Ô/ðSˆI•u�V H¨Q¤KÑ0Ô0Ñ1Ô1µ5½ÀÈÄÑ9LÔ9LÑ3MÔ3MÐNÑOÐOð	õ AÀÀyÐRWÑXÔX€MØð Xð XˆØ×ÒÐ4Ð4°U¸D×<SÒ<SÑ<UÔ<UÑVÔVÑWÔWÐWÐWØÐr*   rn   c                 ó¶   — t          | dd ¦  «        }t          | dd ¦  «        }|d u s|                     ¦   «         dk    o|d u p|                     ¦   «         dk    S )NrT   rU   r   )rb   ÚgetEffectiveFormat)rn   Úv1Úv2s      r(   ra   ra   „   sh   € Ý	�˜ 4Ñ	(Ô	(€BÝ	�˜ 4Ñ	(Ô	(€BØ�$ˆJÐ6˜"×/Ò/Ñ1Ô1°QÒ6ð Ø
ˆdˆ
Ð2�b×+Ò+Ñ-Ô-°Ò2ðr*   .ÚglyphIDsc                 ó"  — t          | ¦  «        } | d         }|gg}| dd …         D ]>}||dz   k    r1|d                              |¦  «         |                     |g¦  «         |}Œ?|d                              |¦  «         || d         | d         fS )Nr   r   éÿÿÿÿ)rd   rK   )ru   ÚlastÚrangesÚglyphIDs       r(   Ú_getClassRangesr{   “   s§   € Ý�hÑÔ€HØ�AŒ;€DØˆfˆX€FØ˜A˜B˜B”<ð ð ˆØ�d˜Q‘hÒÐØ�2ŒJ×Ò˜dÑ#Ô#Ð#Ø�MŠM˜7˜)Ñ$Ô$Ð$ØˆˆØ
ˆ2„J×Ò�dÑÔÐØ�8˜A”; ¨¤Ð,Ð,r*   FÚ
class_dataÚ	class_idsc                 óN  — |sdS | |d                  \  }}}t          |¦  «        }|dd …         D ]N}| |         }|t          |d         ¦  «        z  }t          ||d         ¦  «        }t          ||d         ¦  «        }ŒO||z
  dz   }	d|	dz  z   }
d|dz  z   }t          |
|¦  «        S )Nr   r   r/   é   é   )r$   ÚminÚmax)r|   r}   ÚcoverageÚfirst_rangesÚmin_glyph_idÚmax_glyph_idÚrange_countrj   ÚdataÚ
glyphCountÚformat1_bytesÚformat2_bytess               r(   Ú_classDef_bytesrŒ   ¡   sÊ   € ð
 ð ØˆqØ/9¸)ÀA¼,Ô/GÑ,€L�, Ý�lÑ#Ô#€KØ�q�r�rŒ]ð 2ð 2ˆØ˜!Œ}ˆØ•s˜4 œ7‘|”|Ñ#ˆÝ˜<¨¨a¬Ñ1Ô1ˆÝ˜<¨¨a¬Ñ1Ô1ˆˆØ Ñ,¨qÑ0€Jà˜
 Q™Ñ&€Mà˜ a™Ñ'€MÝˆ}˜mÑ,Ô,Ð,r*   ÚClusteringContext)ÚlinesÚ
all_class1Úall_class1_dataÚall_class2_dataÚvalueFormat1_bytesÚvalueFormat2_bytesc                   ó¾   — e Zd ZU eed<   eed<   ed„ ¦   «         Zed„ ¦   «         Ze	d„ ¦   «         Z
ed„ ¦   «         Ze	d„ ¦   «         Ze	d„ ¦   «         Ze	d	„ ¦   «         Zd
S )ÚClusterÚctxÚindices_bitmaskc                 ó*   — t          | j        ¦  «        S r>   )r   r—   ©Úselfs    r(   ÚindiceszCluster.indicesÉ   s   € å˜4Ô/Ñ0Ô0Ð0r*   c                 óx   ‡ — t          t          j        ˆ fd„‰ j        D ¦   «         ¦  «        }t	          |¦  «        S )Nc              3   ó<   •K  — | ]}‰j         j        |         V — Œd S r>   )r–   rŽ   ©rF   rj   rš   s     €r(   ú	<genexpr>z)Cluster.column_indices.<locals>.<genexpr>Ñ   s,   øè è € Ð%NÐ%N¸A d¤h¤n°QÔ&7Ð%NÐ%NÐ%NÐ%NÐ%NÐ%Nr*   )r   r%   Ú__or__r›   r   )rš   Úbitmasks   ` r(   Úcolumn_indiceszCluster.column_indicesÍ   s;   ø€ õ �œÐ%NÐ%NÐ%NÐ%NÀÄÐ%NÑ%NÔ%NÑOÔOˆÝ˜7Ñ#Ô#Ð#r*   c                 ó0   — t          | j        ¦  «        dz   S )Nr   )r$   r¢   r™   s    r(   ÚwidthzCluster.widthÔ   s   € õ �4Ô&Ñ'Ô'¨!Ñ+Ð+r*   c                 óÈ   — d| j         z   dz   dz   dz   | j        z   dz   | j        z   dz   dz   | j        j        | j        j        z   t          | j        ¦  «        z  | j        z  z   S )Nr   r/   )	Úcoverage_bytesÚclassDef1_bytesÚclassDef2_bytesr–   r’   r“   r$   r›   r¤   r™   s    r(   ÚcostzCluster.costÙ   s¤   € ðð Ô!ñ"ð ñ	ð ñð ñð Ô"ñ#ð  ñ!ð" Ô"ñ##ð& ñ'ð* ñ+ð. ŒxÔ*¨T¬XÔ-HÑHÝ�$”,ÑÔñ àŒjññ/ð	
r*   c                 ó   ‡ — dt          ˆ fd„‰ j        D ¦   «         ¦  «        dz  z   }t          t          j        ˆ fd„‰ j        D ¦   «         ¦  «        ¦  «        }d}d }|D ]\  }}|�||dz   k    r|dz  }|}Œd|dz  z   }t          ||¦  «        S )Nr€   c              3   óV   •K  — | ]#}t          ‰j        j        |         ¦  «        V — Œ$d S r>   ©r$   r–   r�   rž   s     €r(   rŸ   z)Cluster.coverage_bytes.<locals>.<genexpr>  s5   øè è € ÐDÐD°!•#�d”hÔ)¨!Ô,Ñ-Ô-ÐDÐDÐDÐDÐDÐDr*   r/   c              3   óH   •K  — | ]}‰j         j        |         d          V — ŒdS ©r   N)r–   r�   rž   s     €r(   rŸ   z)Cluster.coverage_bytes.<locals>.<genexpr>  s2   øè è € ÐUÐUÀ1 ¤Ô 8¸Ô ;¸AÔ >ÐUÐUÐUÐUÐUÐUr*   r   r   r   )Úsumr›   rd   r   Úfrom_iterabler�   )rš   rŠ   ry   Úmerged_range_countrx   ÚstartÚendr‹   s   `       r(   r¦   zCluster.coverage_bytesù   sá   ø€ ð åÐDÐDÐDÐD°t´|ÐDÑDÔDÑDÔDÀqÑHñIð	 	õ ÝÔÐUÐUÐUÐUÈÌÐUÑUÔUÑUÔUñ
ô 
ˆð ÐØˆØ ð 	ð 	‰JˆE�3ØÐ E¨T°A©XÒ$5Ð$5Ø" aÑ'Ð"ØˆDˆDð
 ð
 ! 1Ñ$ñ%ð	 	õ �= -Ñ0Ô0Ð0r*   c                 óŽ   ‡ ‡— t          ‰ j        ˆ fd„¬¦  «        Št          ‰ j        j        ˆfd„‰ j        D ¦   «         ¦  «        S )Nc                 óB   •— t          ‰j        j        |          ¦  «        S r>   r¬   )rj   rš   s    €r(   ú<lambda>z)Cluster.classDef1_bytes.<locals>.<lambda>   s   ø€ ½¸D¼HÔ<OÐPQÔ<RÑ8SÔ8S€ r*   )Úkeyc                 ó    •— g | ]
}|‰k    ¯|‘ŒS rD   rD   )rF   rj   Úbiggest_indexs     €r(   rH   z+Cluster.classDef1_bytes.<locals>.<listcomp>"  s#   ø€ Ð&UÐ&UÐ&U¨QÀ!À}ÒBTÐBT qÐBTÐBTÐBTr*   )r‚   r›   rŒ   r–   r�   )rš   r¹   s   `@r(   r§   zCluster.classDef1_bytes  sW   øø€ õ ˜DœLÐ.SÐ.SÐ.SÐ.SÐTÑTÔTˆÝØŒHÔ$Ð&UÐ&UÐ&UÐ&U°$´,Ð&UÑ&UÔ&Uñ
ô 
ð 	
r*   c                 ó@   — t          | j        j        | j        ¦  «        S r>   )rŒ   r–   r‘   r¢   r™   s    r(   r¨   zCluster.classDef2_bytes%  s   € õ ˜tœxÔ7¸Ô9LÑMÔMÐMr*   N)Ú__name__Ú
__module__Ú__qualname__r�   Ú__annotations__r%   r   r›   r¢   Úpropertyr¤   r©   r¦   r§   r¨   rD   r*   r(   r•   r•   Ä   sî   € € € € € € à	ÐÐÑØÐÐÑàð1ð 1ñ „_ð1ð ð$ð $ñ „_ð$ð ð,ð ,ñ „Xð,ð ð
ð 
ñ „_ð
ð> ð1ð 1ñ „Xð1ð> ð	
ð 	
ñ „Xð	
ð ðNð Nñ „XðNð Nð Nr*   r•   é   rp   Úcompressionc                 ó–  ‡‡"‡#‡$‡%‡&— ‰s‰gS t          t          d„ ‰D ¦   «         ¦  «        ¦  «        }t          t          d„ ‰D ¦   «         ¦  «        ¦  «        Š"ˆ"ˆfd„|D ¦   «         }|                      ¦   «         Š&ˆ&fd„|D ¦   «         }ˆ&fd„‰"D ¦   «         }d}d}‰                     ¦   «         D ]S\  }	}
||
d         r|
d                              ¦   «         ndz  }||
d         r|
d                              ¦   «         ndz  }ŒTt          |¦  «        dz  }t          |¦  «        dz  }t          ||||||¦  «        Š$i Š#d	t          d
t          fˆ#ˆ$fd„Š%dt          dt          d
t          fˆ%fd„}ˆ%fd„t          t          |¦  «        ¦  «        D ¦   «         } ‰%dt          |¦  «        z  dz
  ¦  «        j        }t                               dt          |¦  «        › �¦  «         t          |¦  «        dk    �r=d }d }d }d }t          |¦  «        D ]^\  }}t          ||dz   d …         ¦  «        D ]>\  }} |||¦  «        }|j        |j        z
  |j        z
  }|�||k     r|}|}|dz   |z   }|}Œ?Œ_|€J ‚|€J ‚|€J ‚|€J ‚|dk    r•t          d„ |D ¦   «         ¦  «        }d||z  z
  }t!          d|z
  ¦  «         |z  }t                               dt          |¦  «        d›d|d›d|› �¦  «         |dk    rt          |¦  «        }t          |¦  «        |dz   k    rn||= |||<   t          |¦  «        dk    �°=t#          t$          ¦  «        }‰                     ¦   «         D ]\  }	}|||	d                  |	<   Œg }|D ]R}t%          ¦   «         } |j        D ]%}||         }!|                      ||!         ¦  «         Œ&|                     | ¦  «         ŒS|S )Nc              3   ó&   K  — | ]}|d          V — ŒdS r®   rD   ©rF   Úpairs     r(   rŸ   z?cluster_pairs_by_class2_coverage_custom_cost.<locals>.<genexpr>5  ó&   è è € Ð6Ð6¨˜D œGÐ6Ð6Ð6Ð6Ð6Ð6r*   c              3   ó&   K  — | ]}|d          V — ŒdS )r   NrD   rÄ   s     r(   rŸ   z?cluster_pairs_by_class2_coverage_custom_cost.<locals>.<genexpr>6  rÆ   r*   c                 ód   •‡— g | ]+Št          ˆˆfd „t          ‰¦  «        D ¦   «         ¦  «        ‘Œ,S )c              3   ó8   •K  — | ]\  }}‰|f‰v rd |z  ndV — ŒdS )r   r   NrD   )rF   rj   rn   rl   rp   s      €€r(   rŸ   zJcluster_pairs_by_class2_coverage_custom_cost.<locals>.<listcomp>.<genexpr>:  sR   øè è € ð 
ð 
á��6ð ˜vÐ&¨%Ð/Ð/ˆA�‰FˆF°Qð
ð 
ð 
ð 
ð 
ð 
r*   )r¯   r^   )rF   rl   Ú
all_class2rp   s    @€€r(   rH   z@cluster_pairs_by_class2_coverage_custom_cost.<locals>.<listcomp>9  si   øø€ ð ð ð ð
 õ	 	ð 
ð 
ð 
ð 
ð 
å& zÑ2Ô2ð
ñ 
ô 
ñ 	
ô 	
ðð ð r*   c                 óF   •— g | ]}t          ˆfd „|D ¦   «         ¦  «        ‘ŒS )c              3   ó(   •K  — | ]}‰|         V — Œd S r>   rD   ©rF   ÚnameÚ
name_to_ids     €r(   rŸ   zJcluster_pairs_by_class2_coverage_custom_cost.<locals>.<listcomp>.<genexpr>E  ó(   øè è € Ð9Ð9¨T˜
 4Ô(Ð9Ð9Ð9Ð9Ð9Ð9r*   ©r{   ©rF   ÚclsrÏ   s     €r(   rH   z@cluster_pairs_by_class2_coverage_custom_cost.<locals>.<listcomp>D  óC   ø€ ð ð ð Ø>A�Ð9Ð9Ð9Ð9°SÐ9Ñ9Ô9Ñ9Ô9ðð ð r*   c                 óF   •— g | ]}t          ˆfd „|D ¦   «         ¦  «        ‘ŒS )c              3   ó(   •K  — | ]}‰|         V — Œd S r>   rD   rÍ   s     €r(   rŸ   zJcluster_pairs_by_class2_coverage_custom_cost.<locals>.<listcomp>.<genexpr>H  rÐ   r*   rÑ   rÒ   s     €r(   rH   z@cluster_pairs_by_class2_coverage_custom_cost.<locals>.<listcomp>G  rÔ   r*   r   r   r/   r›   r   c                 óf   •— ‰                      | d ¦  «        }|�|S t          ‰| ¦  «        }|‰| <   |S r>   )r1   r•   )r›   ÚclusterÚcluster_cacher–   s     €€r(   Úmake_clusterzBcluster_pairs_by_class2_coverage_custom_cost.<locals>.make_cluster^  sA   ø€ Ø×#Ò# G¨TÑ2Ô2ˆØÐØˆNÝ˜#˜wÑ'Ô'ˆØ!(ˆ�gÑØˆr*   rØ   Úotherc                 ó4   •—  ‰| j         |j         z  ¦  «        S r>   )r—   )rØ   rÛ   rÚ   s     €r(   Úmergez;cluster_pairs_by_class2_coverage_custom_cost.<locals>.mergef  s   ø€ Øˆ|˜GÔ3°eÔ6KÑKÑLÔLÐLr*   c                 ó,   •— g | ]} ‰d |z  ¦  «        ‘ŒS )r   rD   )rF   rj   rÚ   s     €r(   rH   z@cluster_pairs_by_class2_coverage_custom_cost.<locals>.<listcomp>m  s'   ø€ Ð@Ð@Ð@¨��˜Q !™VÑ$Ô$Ð@Ð@Ð@r*   z        len(clusters) = c              3   ó$   K  — | ]}|j         V — Œd S r>   )r©   )rF   Úcs     r(   rŸ   z?cluster_pairs_by_class2_coverage_custom_cost.<locals>.<genexpr>�  s$   è è € Ð&@Ð&@°! q¤vÐ&@Ð&@Ð&@Ð&@Ð&@Ð&@r*   z            len(clusters) = Ú3dz    size_reduction=z5.2fz    max_new_subtables=r0   )rd   Úsetrf   r]   rr   r   r�   r%   r•   Úranger$   r©   ÚlogÚdebugr^   r¯   r	   r   Údictr›   ÚupdaterK   )'r+   rp   rÁ   r�   rŽ   r�   r‘   Úformat1Úformat2rÅ   Úvaluer’   r“   rÝ   ÚclustersÚcost_before_splittingÚlowest_cost_changeÚbest_cluster_indexÚbest_other_indexÚbest_mergedrj   rØ   rm   rÛ   ÚmergedÚcost_changeÚcost_after_splittingÚsize_reductionÚmax_new_subtablesÚpairs_by_class1ÚvaluesÚpairs_groupsÚpairs_grouprl   rÊ   rÙ   r–   rÚ   rÏ   s'    `                                @@@@@r(   re   re   +  s^  øøøøøø€ ð
 ð àˆwˆõ �Ð6Ð6°Ð6Ñ6Ô6Ñ6Ô6Ñ7Ô7€JÝ�Ð6Ð6°Ð6Ñ6Ô6Ñ6Ô6Ñ7Ô7€Jðð ð ð ð ð
 !ðñ ô €Eð ×(Ò(Ñ*Ô*€Jðð ð ð ØEOðñ ô €Oðð ð ð ØEOðñ ô €Oð €GØ€GØ—{’{‘}”}ð Dð D‰ˆˆeØ°E¸!´HÐC�5˜”8×.Ò.Ñ0Ô0Ð0À!ÑCˆØ°E¸!´HÐC�5˜”8×.Ò.Ñ0Ô0Ð0À!ÑCˆˆÝ" 7Ñ+Ô+¨aÑ/ÐÝ" 7Ñ+Ô+¨aÑ/Ðå
ØØØØØØñô €Cð )+€Mð�cð ¥gð ð ð ð ð ð ð ðM•wð M¥wð Mµ7ð Mð Mð Mð Mð Mð Mð AÐ@Ð@Ð@­eµC¸±J´JÑ.?Ô.?Ð@Ñ@Ô@€Hð )˜L¨!­s°5©z¬z©/¸QÑ)>Ñ?Ô?ÔDÐÝ‡I‚IÐ8­¨X©¬Ð8Ð8Ñ9Ô9Ð9å
ˆh‰-Œ-˜!Ò
Ñ
Ø!ÐØ!ÐØÐØˆÝ# HÑ-Ô-ð 	)ð 	)‰JˆAˆwÝ% h¨q°1©u¨w¨wÔ&7Ñ8Ô8ð )ð )‘��5Ø˜˜w¨Ñ.Ô.�Ø$œk¨G¬LÑ8¸5¼:ÑE�Ø%Ð-°Ð?QÒ1QÐ1QØ)4Ð&Ø)*Ð&Ø'(¨1¡u¨q¡yÐ$Ø"(�Køð)ð "Ð-Ð-Ð-Ø!Ð-Ð-Ð-ØÐ+Ð+Ð+ØÐ&Ð&Ð&ð  Ò!Ð!õ $'Ð&@Ð&@°xÐ&@Ñ&@Ô&@Ñ#@Ô#@Ð ð Ð!5Ð8MÑ!MÑMˆNõ "& a¨.Ñ&8Ñ!9Ô!9Ð 9¸KÑ GÐÝ�IŠIð S­s°8©}¬}ð  Sð  Sð  SÐTbð  Sð  Sð  Sð  @Qð  Sð  Sñô ð ð ˜aÒÐå$'¨¡M¤MÐ!õ �8‰}Œ}Ð 1°AÑ 5Ò5Ð5Øð Ð%Ð&Ø'2ˆÐ#Ñ$õm ˆh‰-Œ-˜!Ò
Ñ
õr 5@ÅÑ4EÔ4E€OØŸš™œð 0ð 0‰ˆˆfØ)/ˆ˜˜QœÔ  Ñ&Ð&Ø "€LØð )ð )ˆÝ!™VœVˆØ”ð 	8ð 	8ˆAØ ”]ˆFØ×Ò˜¨vÔ6Ñ7Ô7Ð7Ð7Ø×Ò˜KÑ(Ô(Ð(Ð(ØÐr*   )F)rÀ   ):Úloggingr   Úcollectionsr   r   Údataclassesr   Ú	functoolsr   r   Ú	itertoolsr   Úmathr	   Útypingr
   r   r   r   r   r   ÚfontTools.configr   ÚfontTools.misc.intToolsr   r   ÚfontTools.ttLibr   ÚfontTools.ttLib.tablesr   r   Ú	getLoggerr»   rä   ÚCOMPRESSION_LEVELr   ÚstrÚdefaultr   r%   r)   r<   r4   r6   r9   ÚPairPosr?   rQ   r`   Úboolra   ÚValueRecordÚPairsr{   rŒ   r�   r•   re   rD   r*   r(   ú<module>r     s  ðØ €€€Ø 	€	€	€	Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø !Ð !Ð !Ð !Ð !Ð !Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ Eà $Ð $Ð $Ð $Ð $Ð $Ø :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ø "Ð "Ð "Ð "Ð "Ð "Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3à€gÔ˜Ñ!Ô!€à˜xÐ;Ð;Ð;Ô<Ð ð :Ð Ø˜CÐ 1Ô 9Ñ:Ô:Ð ðE Sð Eð Eð Eð Eð$�&ð  ð ¨ð ð ð ð ð:.˜ð .¨ð .°X´_ð .Èð .ð .ð .ð .ð2˜Vð 2¨Cð 2¸¼ð 2ÈTð 2ð 2ð 2ð 2ð
Ø
ð
Øð
Ø)1°(Ô2BÔ)Cð
àˆhÔÔð
ð 
ð 
ð 
ðØ
ðØðØ(0Ô(8ðà	ˆ(Ô
Ôðð ð ð ð6˜8Ô0ð °Tð ð ð ð ð 	Ø	ˆ%��S�Œ/˜5  c œ?Ð
*Ô+Ø	ˆ&Ô
˜fÔ0Ð
0Ô1ð3ô	€ð
-˜h sœmð 
-ð 
-ð 
-ð 
-ð" ð-ð -Ø�U˜4  c¨3 h¤Ô0°#°sÐ:Ô;Ô<ð-à�CŒyð-ð -ð -ð -ð, �JØðð ð ñ
ô 
Ð ð ðcNð cNð cNð cNð cNñ cNô cNñ „ðcNðR ðLð LØ
ðLàðLð ðLð 
ˆ%„[ð	Lð Lð Lð Lð Lð Lr*   