ó
    oñ:iÛz ã                   ó  • S r SSKrSSKJr  SSKJr  SSKJr  SSKrSSK	J
r
Jr  SSKJr  SSKJr  SS	KJr  SS
KJr  SSKJr  SSKJrJrJr  SSKJrJrJr  SSKJr  SSK J!r!  SSK"J#r#  SSK$J%r%J&r&J'r'J(r(J)r)  SSK*J+r,J-r.J/r0J1r2  SSK3J4r4J5r5  SSK6r6SSK7r7SSK8r8SSK9r9SSKJ:r:  SSK;J<r<J=r=J>r>J?r?J@r@  \<(       a  SSKAJBrB  \6R†                  " \D5      rE " S S\:5      rF\" S/ SQ5      rG\G" \FR�                  SSS5      \G" \FR’                  SSS5      \G" \FR”                  SSS5      \G" \FR–                  SSS5      \G" \FR˜                  SSS5      \G" \FRš                  SSS5      \G" \FRœ                  SSS5      \G" \FRž                  SSS5      \G" \FR                   SSS5      S .	rQS! S" S# S$ S%.rRS& S' S( S) S%.rSS* rTS+ rU " S, S-5      rV " S. S/5      rW " S0 S1\X5      rY " S2 S3\X5      rZ " S4 S5\X5      r[ " S6 S7\[5      r\ " S8 S9\[5      r] " S: S;\X5      r^ " S< S=\[5      r_ " S> S?\[5      r` " S@ SA\%5      ra " SB SC\a5      rb " SD SE\a5      rc " SF SG\a5      rd " SH SI\&5      reSJrf " SK SL\)" SM5      5      rg " SN SO\%5      rh " SP SQ\%5      ri " SR SS\&5      rj " ST SU\&5      rk " SV SW\&5      rl " SX SY\&5      rm " SZ S[\&5      rn " S\ S]\%5      ro " S^ S_\%5      rp " S` Sa\%5      rq " Sb Sc\%5      rr " Sd Se\5      rs " Sf Sg\)" SM5      5      rt " Sh Si\)" SM5      5      ru " Sj Sk\5      rv " Sl Sm\5      rw " Sn So\5      rx " Sp Sq\)" SM5      5      rySrSsStSuSvSwSxSySzS{S|S}S~SS€S�.rzS‚ r{Sƒ r|S„ r}S… r~S† rS‡ r€\|\}\~Sˆ.\\€S‰.SŠ.r�S‹ r‚SŒ rƒ\ƒ" 5         S� r„g)ŽzáfontTools.ttLib.tables.otTables -- A collection of classes representing the various
OpenType subtables.

Most are constructed upon import from data in otData.py, all are populated with
converter objects from otConverters.py.
é    N)ÚIntEnum)Úreduce)Úradians)ÚdefaultdictÚ
namedtuple)ÚOPTIMIZE_FONT_SPEED)ÚTupleVariation)Údfs_base_table)ÚquantizeRect)ÚotRound)Ú	TransformÚIdentityÚDecomposedTransform)Ú	bytesjoinÚpadÚsafeEval)ÚVector)ÚControlBoundsPen)ÚTransformPené   )Ú	BaseTableÚFormatSwitchingBaseTableÚValueRecordÚCountReferenceÚ getFormatSwitchingBaseTableClass)ÚfixedToFloatÚfloatToFixedÚfloatToFixedToStrÚstrToFixedToFloat)ÚLookupDebugInfoÚLOOKUP_DEBUG_INFO_KEY)ÚIntFlag)ÚTYPE_CHECKINGÚIteratorÚListÚOptionalÚSet)Ú_TTGlyphSetc                   óT   • \ rS rSrSrSrSrSrSrSr	Sr
S	rS
rSrSrSrSrSrSrSrSrg)ÚVarComponentFlagsé4   r   é   é   é   é   é    é@   é€   é   i   é   é   é   é    é @  l     ÿ © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚRESET_UNSPECIFIED_AXESÚ	HAVE_AXESÚAXIS_VALUES_HAVE_VARIATIONÚTRANSFORM_HAS_VARIATIONÚHAVE_TRANSLATE_XÚHAVE_TRANSLATE_YÚHAVE_ROTATIONÚHAVE_CONDITIONÚHAVE_SCALE_XÚHAVE_SCALE_YÚHAVE_TCENTER_XÚHAVE_TCENTER_YÚGID_IS_24BITÚHAVE_SKEW_XÚHAVE_SKEW_YÚRESERVED_MASKÚ__static_attributes__r9   ó    Úb/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/fontTools/ttLib/tables/otTables.pyr*   r*   4   sW   † Ø#Ðà€Ià!'ÐØ$ÐàÐØÐØ€Mà€Nà€LØ€LØ€NØ€Nà€Là€KØ€Kà)ƒMrO   r*   ÚVarTransformMappingValues)ÚflagÚfractionalBitsÚscaleÚdefaultValueé   é´   é
   iLÿÿÿ)	Ú
translateXÚ
translateYÚrotationÚscaleXÚscaleYÚskewXÚskewYÚtCenterXÚtCenterYc                 ó0   • [         R                  " SU 5      $ )Nú>B©ÚstructÚpack©Úvs    rP   Ú<lambda>ri   f   ó   € ”—’˜T 1Ô%rO   c                 ó0   • [         R                  " SU 5      $ )Nú>Hrd   rg   s    rP   ri   ri   g   rj   rO   c                 ó6   • [         R                  " SU 5      SS  $ )Nú>Lr   rd   rg   s    rP   ri   ri   h   s   € ”—’˜T 1Ó% a bÑ)rO   c                 ó0   • [         R                  " SU 5      $ )Nrn   rd   rg   s    rP   ri   ri   i   rj   rO   )r   r,   é   r-   c                 ó6   • [         R                  " SU 5      S   $ )Nrc   r   ©re   Úunpackrg   s    rP   ri   ri   l   ó   € ”—’˜t QÓ'¨Ò*rO   c                 ó6   • [         R                  " SU 5      S   $ )Nrl   r   rr   rg   s    rP   ri   ri   m   rt   rO   c                 ó<   • [         R                  " SSU -   5      S   $ )Nrn   ó    r   rr   rg   s    rP   ri   ri   n   s   € ”—’˜t U¨Q¡YÓ/°Ò2rO   c                 ó6   • [         R                  " SU 5      S   $ )Nrn   r   rr   rg   s    rP   ri   ri   o   rt   rO   c                 óv  • X   nUS:  a  X!S-   4$ US:  a  US-
  S-  XS-      -  US-   4$ US:  a   US-
  S-  XS-      S-  -  XS-      -  US-   4$ US	:  a,  US-
  S
-  XS-      S-  -  XS-      S-  -  U US-      -  US-   4$ US	-
  S-  XS-      S
-  -  XS-      S-  -  U US-      S-  -  XS-      -  US-   4$ )zdRead a variable-length number from data starting at index i.

Return the number and the next index.
r2   r   éÀ   r.   r,   éà   r/   rp   éð   é   r-   r0   é   r9   )ÚdataÚiÚb0s      rP   Ú_read_uint32varr‚   s   sD  € ð 
‰€BØ	ˆDƒyØ�q‘5ˆyÐØ	ˆd‹Ø�T‘	˜aÑ $¨1¡u¡+Ñ-¨q°1©uÐ4Ð4Ø	ˆd‹Ø�T‘	˜bÑ  4¨A©¡;°!Ñ#3Ñ3°d¸q¹5±kÑAÀ1ÀqÁ5ÐHÐHØ	ˆd‹Ø�T‘	˜bÑ  4¨A©¡;°"Ñ#4Ñ4°tÀ¹E±{ÀaÑ7GÑGÈ$Ø�‰EñK
ñ 
àˆq‰5ðð 	ð �T‘	˜bÑ  4¨A©¡;°"Ñ#4Ñ4°tÀ¹E±{ÀbÑ7HÑHÈ4Ø�‰EñL
àñLñ à˜!‘e‘ñà !™eð$ð 	$rO   c                 ó`  • U S:  a  [         R                  " SU 5      $ U S:  a  [         R                  " SU S-  5      $ U S:  a  [         R                  " SU S-  5      S	S
 $ U S:  a  [         R                  " SU S-  5      $ [         R                  " SS5      [         R                  " SU 5      -   $ )z2Write a variable-length number.

Return the data.
r2   rc   r8   rl   é €  i    rn   i  À r   Ni   l      @ r|   rd   rg   s    rP   Ú_write_uint32varr…   Š   s˜   € ð
 	ˆ4ƒxÜ�{Š{˜4 Ó#Ð#Ø	
ˆV‹Ü�{Š{˜4 ! f¡*Ó.Ð.Ø	
ˆX‹Ü�{Š{˜4 ! h¡,Ó0°°Ð4Ð4Ø	
ˆZ‹Ü�{Š{˜4 ! j¡.Ó2Ð2ä�{Š{˜4 Ó&¬¯ª°T¸1Ó)=Ñ=Ð=rO   c                   óN   • \ rS rSrS rSS jrS rS rS rS r	S	 r
S
 rS rSrg)ÚVarComponenté›   c                 ó$   • U R                  5         g ©N)ÚpopulateDefaults©Úselfs    rP   Ú__init__ÚVarComponent.__init__œ   s   € Ø×ÑÕrO   Nc                 ó”   • SU l         S U l        S U l        S U l        SU l        [
        U l        [
        U l        [        5       U l	        g )Nr   r9   )
ÚflagsÚ	glyphNameÚconditionIndexÚaxisIndicesIndexÚ
axisValuesÚNO_VARIATION_INDEXÚaxisValuesVarIndexÚtransformVarIndexr   Ú	transform©r�   Ú
propagators     rP   r‹   ÚVarComponent.populateDefaultsŸ   sA   € ØˆŒ
ØˆŒØ"ˆÔØ $ˆÔØˆŒÜ"4ˆÔÜ!3ˆÔÜ,Ó.ˆ�rO   c                 ób  ^^^• Sm[        TT5      u  U l        mU R                  mT[        R                  -  (       a  SOSn[        U   " TTTU-    5      nTU-  mUR
                  U   U l        T[        R                  -  (       a  [        TT5      u  U l        mT[        R                  -  (       a  [        TT5      u  U l
        mOS U l
        U R                  c  SnO'US   R                  U R                     n[        U5      nT[        R                  -  (       a3  [        R                  " UTT5      u  nm[        S U 5       5      U l        OSU l        [        U R                   5      U:X  d   eT[        R"                  -  (       a  [        TT5      u  U l        mO[&        U l        T[        R(                  -  (       a  [        TT5      u  U l        mO[&        U l        [-        5       U l        UUU4S jn	[0        R3                  5        H#  u  p«U	" U5      n[5        U R.                  X¬5        M%     T[        R6                  -  (       d%  U R.                  R8                  U R.                  l        T[        R<                  -  nU(       a  [        TT5      u  nmXÝS-
  -  nU(       a  M  TTS  $ )	Nr   rp   r,   ÚAxisIndicesListc              3   ó:   #   • U  H  n[        US 5      v •  M     g7f©é   N)Úfi2fl©Ú.0rh   s     rP   Ú	<genexpr>Ú)VarComponent.decompile.<locals>.<genexpr>Ã   s   é € Ð#Eº*°Q¤E¨!¨R§L Lº*ùó   ‚r9   c           	      óÔ   >• TU R                   -  (       aH  [        [        R                  " STTTS-    5      S   U R                  5      U R
                  -  nTS-  mU$ U R                  $ )Nú>hr,   r   )rR   r¢   re   rs   rS   rT   rU   )Úvaluesrh   r   r‘   r€   s     €€€rP   Úread_transform_componentÚ8VarComponent.decompile.<locals>.read_transform_componentÓ   sk   ø€ à�v—{‘{×"äÜŸš d¨D°°Q¸±U¨OÓ<¸QÑ?À×AVÑAVóð —l‘lñ#ð ð �Q‘�Ø�à×*Ñ*Ð*rO   r   )r‚   r‘   r*   rJ   Ú	_unpackerÚ
glyphOrderr’   rE   r“   r?   r”   ÚItemÚlenr	   ÚdecompileDeltas_Útupler•   r@   r—   r–   rA   r˜   r   r™   ÚVAR_TRANSFORM_MAPPINGÚitemsÚsetattrrG   r\   r]   rM   )r�   r   ÚfontÚ
localStateÚgidSizeÚglyphIDÚnumAxesÚaxisIndicesr•   r«   Ú	attr_nameÚmapping_valuesÚvalueÚnÚ_r‘   r€   s    `             @@rP   Ú	decompileÚVarComponent.decompile©   sG  ú€ ØˆÜ'¨¨aÓ0‰ˆŒ
�AØ—
‘
ˆàÔ0×=Ñ=×=‘!À1ˆÜ˜GÒ$ T¨!¨a°'©kÐ%:Ó;ˆØ	ˆW‰ˆØŸ™¨Ñ1ˆŒàÔ$×3Ñ3×3Ü%4°T¸1Ó%=Ñ"ˆDÔ àÔ$×.Ñ.×.Ü'6°t¸QÓ'?Ñ$ˆDÔ!¡1à$(ˆDÔ!à× Ñ Ñ(Ø‰Gà$Ð%6Ñ7×<Ñ<¸T×=RÑ=RÑSˆKÜ˜+Ó&ˆGàÔ$×.Ñ.×.Ü*×;Ò;¸GÀTÈ1ÓM‰MˆJ˜Ü#Ñ#E¹*Ó#EÓEˆD�Oà ˆDŒOÜ�4—?‘?Ó# wÓ.Ð.Ð.àÔ$×?Ñ?×?Ü)8¸¸qÓ)AÑ&ˆDÔ#¡Qä&8ˆDÔ#ØÔ$×<Ñ<×<Ü(7¸¸aÓ(@Ñ%ˆDÔ"¡Aä%7ˆDÔ"ä,Ó.ˆŒ÷	+ô *?×)DÑ)DÖ)FÑ%ˆIÙ,¨^Ó<ˆEÜ�D—N‘N IÖ5ñ *Gð Ô)×6Ñ6×6Ø$(§N¡N×$9Ñ$9ˆD�N‰NÔ!àÔ%×3Ñ3Ñ3ˆÞÜ" 4¨Ó+‰DˆAˆqØ�Q‘‰JˆA÷ ˆað �A�BˆxˆrO   c                 óœ  ^• UR                   [           n/ nU R                  mUR                  U R                  5      nUS:”  a2  T[
        R                  -  mUR                  [        S   " U5      5        O2T[
        R                  ) -  mUR                  [        S   " U5      5        U R                  b7  T[
        R                  -  mUR                  [        U R                  5      5        [        U R                  5      nU(       a†  T[
        R                  -  mUR                  [        U R                  5      5        UR                  [         R"                  " U R                   Vs/ s H  n[%        US5      PM     snU(       + S95        OT[
        R                  ) -  mU R&                  [(        :w  a8  T[
        R*                  -  mUR                  [        U R&                  5      5        OT[
        R*                  ) -  mU R,                  [(        :w  a8  T[
        R.                  -  mUR                  [        U R,                  5      5        OT[
        R.                  ) -  mU4S jn[0        R3                  5        H2  u  p‰[5        U R6                  U5      n
UR                  U" X©5      5        M4     [        T5      [9        U5      -   $ s  snf )Néÿÿ  rp   r,   r¡   )ÚoptimizeSizec                 óœ   >• TUR                   -  (       a7  [        R                  " S[        XR                  -  UR
                  5      5      $ g)Nr©   rO   )rR   re   rf   Úfl2firT   rS   )r¾   rª   r‘   s     €rP   Úwrite_transform_componentÚ7VarComponent.compile.<locals>.write_transform_component  s>   ø€ Ø�v—{‘{×"Ü—{’{Øœ% ¯©Ñ 4°f×6KÑ6KÓLóð ð rO   )Úcfgr   r‘   Ú
getGlyphIDr’   r*   rJ   ÚappendÚ_packerr“   rE   r…   r°   r•   r?   r”   r	   ÚcompileDeltaValues_rÇ   r—   r–   r@   r˜   rA   r³   r´   Úgetattrr™   r   )r�   r¶   ÚoptimizeSpeedr   r¹   rº   rh   rÈ   r¼   r½   r¾   r‘   s              @rP   ÚcompileÚVarComponent.compileï   s<  ø€ ØŸ™Ô!4Ñ5ˆàˆà—
‘
ˆà—/‘/ $§.¡.Ó1ˆØ�U‹?ØÔ&×3Ñ3Ñ3ˆEØ�K‰Kœ š
 7Ó+Õ,àÔ'×4Ñ4Ð4Ñ4ˆEØ�K‰Kœ š
 7Ó+Ô,à×ÑÑ*ØÔ&×5Ñ5Ñ5ˆEØ�K‰KÔ(¨×)<Ñ)<Ó=Ô>ä�d—o‘oÓ&ˆæØÔ&×0Ñ0Ñ0ˆEØ�K‰KÔ(¨×)>Ñ)>Ó?Ô@Ø�K‰KÜ×2Ò2Ø+/¯?ª?Ó;ª? a”U˜1˜b–\©?Ñ;Ø%2Ô!2ñõð Ô'×1Ñ1Ð1Ñ1ˆEà×"Ñ"Ô&8Ó8ØÔ&×AÑAÑAˆEØ�K‰KÔ(¨×)@Ñ)@ÓAÕBàÔ'×BÑBÐBÑBˆEØ×!Ñ!Ô%7Ó7ØÔ&×>Ñ>Ñ>ˆEØ�K‰KÔ(¨×)?Ñ)?Ó@ÕAàÔ'×?Ñ?Ð?Ñ?ˆEõ	ô *?×)DÑ)DÖ)FÑ%ˆIÜ˜DŸN™N¨IÓ6ˆEØ�K‰KÑ1°%ÓHÖIñ *Gô   Ó&¬°4«Ñ8Ð8ùò= <s   Å(K	c                 óâ  ^• TR                  SU5        TR                  5         SU4S jjnU" SU R                  5        U R                  b  U" SU R                  5        U R                  b  U" SU R                  5        U R                  c"  U R
                  [        R                  -  (       a_  U R
                  [        R                  -  (       a  SnOSnU" SU R                   Vs/ s H  n[        [        US	5      5      PM     snU5        U R                  [        :w  a  U" S
U R                  5        U R                  [        :w  a  U" SU R                  5        [        R                  5        HW  u  pgU R
                  UR                   -  (       d  M%  [#        U R$                  U5      nU" U[        XWR&                  5      5        MY     TR)                  S5        TR                  5         g s  snf )Nr‡   r9   c                 ó^   >• Ub)  TR                  U SU44U-   5        TR                  5         g g )Nr¾   )Ú	simpletagÚnewline)Únamer¾   ÚattrsÚwriters      €rP   ÚwriteÚ!VarComponent.toXML.<locals>.write-  s5   ø€ ØÑ Ø× Ñ  ¨°%Ð(8Ð':¸UÑ'BÔCØ—‘Õ ð !rO   r’   r“   r”   ))ÚresetUnspecifiedAxesr   r•   r¡   r—   r˜   )r9   )ÚbegintagrÖ   r’   r“   r”   r‘   r*   r>   r•   ÚfloatÚfl2strr—   r–   r˜   r³   r´   rR   rÏ   r™   rS   Úendtag)r�   rÙ   ÚttFontrØ   rÚ   rh   r¼   Úmappings    `      rP   ÚtoXMLÚVarComponent.toXML)  s€  ø€ Ø�‰˜¨Ô.Ø�‰Ô÷	!ñ
 	ˆk˜4Ÿ>™>Ô*à×ÑÑ*ÙÐ" D×$7Ñ$7Ô8Ø× Ñ Ñ,ÙÐ$ d×&;Ñ&;Ô<à×!Ñ!Ñ-Ø�z‰zÔ-×DÑD×Dà�z‰zÔ-×DÑD×DØ6‘à�Ù�,¸t¿ºÓ Oº¸!¤¤v¨a°£}Ö!5¹Ñ OÐQVÔWà×"Ñ"Ô&8Ó8ÙÐ&¨×(?Ñ(?Ô@Ø×!Ñ!Ô%7Ó7ÙÐ% t×'=Ñ'=Ô>ô #8×"=Ñ"=Ö"?ÑˆIØ—J‘J §¡×-ÙÜ˜Ÿ™¨	Ó2ˆAÙ�)œV A×'=Ñ'=Ó>Ö?ñ	 #@ð 	�‰�nÔ%Ø�‰Õùò! !Ps   Ã&G,
c                 ó  • U Vs/ s H  n[        U[        5      (       d  M  UPM     nnU R                  5         U GHG  u  pnU(       a   eUS   nUS:X  a  X`l        M#  US:X  a  [	        U5      U l        M;  US:X  a  [	        U5      U l        MS  US:X  ag  [        S [	        U5       5       5      U l        [	        UR                  SS5      5      (       a%  U =R                  [        R                  -  sl	        M¾  MÀ  US	:X  a  [	        U5      U l        MØ  US
:X  a  [	        U5      U l        Mð  U[        ;   aI  [        U R                   U[	        U5      5        U =R                  [        U   R"                  -  sl	        GMC   U5       e   g s  snf )Nr¾   r’   r“   r”   r•   c              3   ó:   #   • U  H  n[        US 5      v •  M     g7fr    )Ústr2flr£   s     rP   r¥   Ú'VarComponent.fromXML.<locals>.<genexpr>b  s   é € Ð'Kº{¸!¬¨q°"¯¨º{ùr§   rÜ   Ú0r—   r˜   )Ú
isinstancer²   r‹   r’   r   r“   r”   r•   Úgetr‘   r*   r>   r—   r˜   r³   rµ   r™   rR   )r�   r×   rØ   Úcontentrá   Úcrh   s          rP   ÚfromXMLÚVarComponent.fromXMLR  sK  € Ù%Ó>šg˜¬°A´u×)=—1™gˆÐ>à×ÑÔä$+Ñ ˆD˜ÞÐ�;Ø�g‘ˆAà�{Ó"Ø!"–ØÐ)Ó)Ü&.¨q£k�Ö#ØÐ+Ó+Ü(0°«�Ö%Ø˜Ó%Ü"'Ñ'K¼xÈ¼{Ó'KÓ"K�”Ü˜EŸI™IÐ&<¸cÓB×CÑCØ—J’JÔ"3×"JÑ"JÑJ—Jñ DàÐ-Ó-Ü*2°1«+�Ö'ØÐ,Ó,Ü)1°!«�Ö&ØÔ.Ó.ÜØ—N‘NØÜ˜Q“Kôð
 —
’
Ô3°DÑ9×>Ñ>Ñ>—
�
à"˜dÓ"�uò5 %,ùò	 ?s
   …F	¢F	c           	      ó”  ^ ^^• SmUUU 4S jn[         R                  5        H;  u  p4U" U5      n[        T R                  U[	        T R                  U5      U-   5        M=     T R
                  [        R                  -  (       d%  T R                  R                  T R                  l	        T[        T5      :X  d   T[        T5      45       eg )Nr   c                 óœ   >• TR                   U R                  -  (       a-  [        TT   U R                  5      U R                  -  nTS-  mU$ g)Nr   r   )r‘   rR   r¢   rS   rT   )rª   rh   Údeltasr€   r�   s     €€€rP   Úread_transform_component_deltaÚIVarComponent.applyTransformDeltas.<locals>.read_transform_component_deltav  sC   ø€ à�z‰z˜FŸK™K×'Ü˜& ™) V×%:Ñ%:Ó;¸f¿l¹lÑJ�Ø�Q‘�Ø�àrO   )r³   r´   rµ   r™   rÏ   r‘   r*   rG   r\   r]   r°   )r�   rò   ró   r¼   r½   r¾   r€   s   ``    @rP   ÚapplyTransformDeltasÚ!VarComponent.applyTransformDeltass  sŸ   ú€ Øˆ÷	ô *?×)DÑ)DÖ)FÑ%ˆIÙ2°>ÓBˆEÜØ—‘ 	¬7°4·>±>À9Ó+MÐPUÑ+Uöñ *Gð —
‘
Ô.×;Ñ;×;Ø$(§N¡N×$9Ñ$9ˆD�N‰NÔ!à”C˜“KÓÐ1 !¤S¨£[Ð!1Ó1ÑrO   c                 óp   • [        U 5      [        U5      :w  a  [        $ U R                  UR                  :H  $ rŠ   )ÚtypeÚNotImplementedÚ__dict__)r�   Úothers     rP   Ú__eq__ÚVarComponent.__eq__Š  s+   € Ü�‹:œ˜e›Ó$Ü!Ð!Ø�}‰} §¡Ñ.Ð.rO   c                 óH   • U R                  U5      nU[        L a  U$ U(       + $ rŠ   )rü   rù   )r�   rû   Úresults      rP   Ú__ne__ÚVarComponent.__ne__�  s$   € Ø—‘˜UÓ#ˆØ¤>Ò1ˆvÐA¸6´zÐArO   )r”   r•   r—   r“   r‘   r’   r™   r˜   rŠ   )r:   r;   r<   r=   rŽ   r‹   rÁ   rÑ   rã   rî   rõ   rü   r   rN   r9   rO   rP   r‡   r‡   ›   s5   † ò ô/òDòL89òt'òR#òB2ò./õ
BrO   r‡   c                   ó6   • \ rS rSrS	S jrS rS rS rS rSr	g)
ÚVarCompositeGlyphi”  Nc                 ó&   • Ub  Xl         g / U l         g rŠ   ©Ú
components)r�   r  s     rP   rŽ   ÚVarCompositeGlyph.__init__•  s   € Ø(2Ñ(>˜*�ÀBˆ�rO   c                 ó¢   • / U l         U(       aA  [        5       nUR                  XU5      nU R                   R                  U5        U(       a  M@  g g rŠ   )r  r‡   rÁ   rÌ   )r�   r   r¶   r·   Ú	components        rP   rÁ   ÚVarCompositeGlyph.decompile˜  s>   € ØˆŒÞÜ$›ˆIØ×&Ñ& t°:Ó>ˆDØ�O‰O×"Ñ" 9Ô-÷ ŠdrO   c                 ó‚   • / nU R                    H#  nUR                  UR                  U5      5        M%     [        U5      $ rŠ   )r  rÌ   rÑ   r   )r�   r¶   r   r	  s       rP   rÑ   ÚVarCompositeGlyph.compileŸ  s6   € ØˆØŸœˆIØ�K‰K˜	×)Ñ)¨$Ó/Ö0ñ )ä˜‹ÐrO   c                 óð   • UR                  SU5        UR                  5         [        U R                  5       H  u  pVUR	                  XSU4/5        M     UR                  S5        UR                  5         g )Nr  Úindex)rÝ   rÖ   Ú	enumerater  rã   rà   )r�   Ú	xmlWriterr¶   rØ   r×   r€   r	  s          rP   rã   ÚVarCompositeGlyph.toXML¥  sc   € Ø×ÑÐ.°Ô6Ø×ÑÔÜ% d§o¡oÖ6‰LˆAØ�O‰O˜I¨w¸¨l¨^Ö<ñ 7à×ÑÐ,Ô-Ø×ÑÕrO   c                 óö   • U Vs/ s H  n[        U[        5      (       d  M  UPM     nnU HE  u  pnUS:X  d   e[        5       nUR                  XX45        U R                  R                  U5        MG     g s  snf )Nr‡   )rê   r²   r‡   rî   r  rÌ   )r�   r×   rØ   rì   r¶   rí   r	  s          rP   rî   ÚVarCompositeGlyph.fromXML­  sj   € Ù%Ó>šg˜¬°A´u×)=—1™gˆÐ>Û$+Ñ ˆD˜Ø˜>Ó)Ð)Ð)Ü$›ˆIØ×Ñ˜d¨7Ô9Ø�O‰O×"Ñ" 9Ö-ò	 %,ùò ?s
   …A6¢A6r  rŠ   )
r:   r;   r<   r=   rŽ   rÁ   rÑ   rã   rî   rN   r9   rO   rP   r  r  ”  s   † ôGò.òòõ.rO   r  c                   ó   • \ rS rSrS rSrg)ÚAATStateTablei¶  c                 ó.   • 0 U l         / U l        / U l        g rŠ   )ÚGlyphClassesÚStatesÚPerGlyphLookupsrŒ   s    rP   rŽ   ÚAATStateTable.__init__·  s   € ØˆÔØˆŒØ!ˆÕrO   )r  r  r  N©r:   r;   r<   r=   rŽ   rN   r9   rO   rP   r  r  ¶  s   † õ"rO   r  c                   ó   • \ rS rSrS rSrg)ÚAATStatei½  c                 ó   • 0 U l         g rŠ   ©ÚTransitionsrŒ   s    rP   rŽ   ÚAATState.__init__¾  s
   € ØˆÕrO   r  Nr  r9   rO   rP   r  r  ½  s   † õrO   r  c                   ó4   • \ rS rSrSr\S 5       rS rS rSr	g)Ú	AATActioniÂ  Nc                 ó   • g)N©NNr9   )r¶   Ústatess     rP   ÚcompileActionsÚAATAction.compileActionsÅ  s   € àrO   c                 óX  • U R                    Vs/ s H  o R                  U   (       d  M  UPM     nnU(       a/  UR                  SSR                  U5      S9  UR	                  5         U R
                  S:w  a.  UR                  SSU R
                  -  S9  UR	                  5         g g s  snf )NÚFlagsÚ,©r¾   r   ÚReservedFlagsz0x%04X)Ú_FLAGSrú   rÕ   ÚjoinrÖ   r-  )r�   r  Úfr‘   s       rP   Ú_writeFlagsToXMLÚAATAction._writeFlagsToXMLÉ  s�   € Ø ŸKšKÓ<šK�q¯=©=¸Õ+;—™KˆÐ<ÞØ×Ñ ¨s¯x©x¸«ÐÑ?Ø×ÑÔØ×Ñ Ó"Ø×Ñ °xÀ$×BTÑBTÑ7TÐÑUØ×ÑÕð #ùò	 =s
   �B'ªB'c                 óT   • XR                   ;   d
   SU-  5       eSU R                  U'   g )Nzunsupported flag %sT)r.  rú   ©r�   rR   s     rP   Ú_setFlagÚAATAction._setFlagÒ  s+   € Ø—{‘{Ó"Ð@Ð$9¸DÑ$@Ó@Ð"Ø"ˆ�‰�dÒrO   r9   )
r:   r;   r<   r=   r.  Ústaticmethodr'  r1  r5  rN   r9   rO   rP   r#  r#  Â  s#   † Ø€Fàñó ðò õ#rO   r#  c                   ó¦   • \ rS rSrSrSr/ SQr0 SS_SS_SS	_S
S_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS _S!S"_rS# rS$ r	S% r
S& rS' rS(rg))*ÚRearrangementMorphActioni×  r-   r   )Ú	MarkFirstÚDontAdvanceÚMarkLastz	no changer   u	   Ax â‡’ xAr,   u	   xD â‡’ Dxrp   u   AxD â‡’ DxAu   ABx â‡’ xABr~   u   ABx â‡’ xBAé   u   xCD â‡’ CDxé   u   xCD â‡’ DCxr.   u   AxCD â‡’ CDxAé	   u   AxCD â‡’ DCxArX   u   ABxD â‡’ DxABé   u   ABxD â‡’ DxBArV   u   ABxCD â‡’ CDxABé   u   ABxCD â‡’ CDxBAr¡   u   ABxCD â‡’ DCxABé   u   ABxCD â‡’ DCxBAc                 óX   • SU l         SU l        SU l        SU l        SU l        SU l        g ©Nr   F)ÚNewStateÚVerbr:  r;  r<  r-  rŒ   s    rP   rŽ   Ú!RearrangementMorphAction.__init__ï  s.   € ØˆŒØˆŒ	ØˆŒØ ˆÔØˆŒØˆÕrO   c                 ó~  • Ub   eUR                  U R                  5        U R                  S:¼  a  U R                  S::  d   U R                  5       eU R                  U R                  -  nU R                  (       a  US-  nU R
                  (       a  US-  nU R                  (       a  US-  nUR                  U5        g )Nr   rB  r„   r8   r7   )ÚwriteUShortrE  rF  r-  r:  r;  r<  ©r�   rÙ   r¶   ÚactionIndexr‘   s        rP   rÑ   Ú RearrangementMorphAction.compile÷  s˜   € ØÑ"Ð"Ð"Ø×Ñ˜4Ÿ=™=Ô)Ø�y‰y˜A‹~ $§)¡)¨r£/Ð<°4·9±9Ó<Ð1Ø—	‘	˜D×.Ñ.Ñ.ˆØ�>�>Ø�V‰OˆEØ××Ø�V‰OˆEØ�=�=Ø�V‰OˆEØ×Ñ˜5Õ!rO   c                 óò   • Ub   eUR                  5       U l        UR                  5       nUS-  U l        [        US-  5      U l        [        US-  5      U l        [        US-  5      U l        US-  U l        g )NrB  r„   r8   r7   ið  )Ú
readUShortrE  rF  Úboolr:  r;  r<  r-  ©r�   Úreaderr¶   ÚactionReaderr‘   s        rP   rÁ   Ú"RearrangementMorphAction.decompile  st   € ØÑ#Ð#Ð#Ø×)Ñ)Ó+ˆŒØ×!Ñ!Ó#ˆØ˜C‘KˆŒ	Ü˜e f™nÓ-ˆŒÜ ¨¡Ó/ˆÔÜ˜U V™^Ó,ˆŒØ" V™^ˆÕrO   c                 óÈ  • UR                   " U40 UD6  UR                  5         UR                  SU R                  S9  UR                  5         U R	                  U5        UR                  SU R
                  S9  U R                  R                  U R
                  5      nUb  UR                  U5        UR                  5         UR                  U5        UR                  5         g )NrE  r,  rF  )
rÝ   rÖ   rÕ   rE  r1  rF  Ú_VERBSrë   Úcommentrà   )r�   r  r¶   rØ   r×   ÚverbComments         rP   rã   ÚRearrangementMorphAction.toXML  s¹   € Ø×Ò˜4Ñ) 5Ò)Ø×ÑÔØ×Ñ˜J¨d¯m©mÐÑ<Ø×ÑÔØ×Ñ˜iÔ(Ø×Ñ˜F¨$¯)©)ÐÑ4Ø—k‘k—o‘o d§i¡iÓ0ˆØÑ"Ø×Ñ˜kÔ*Ø×ÑÔØ×Ñ˜ÔØ×ÑÕrO   c                 óò  • S=U l         =U l        U l        S=U l        =U l        U l        U Vs/ s H  n[        U[        5      (       d  M  UPM     nnU H™  u  pgnUS:X  a  [        US   5      U l         M!  US:X  a  [        US   5      U l        M<  US:X  a  [        US   5      U l        MW  US:X  d  M_  US   R                  S5       H"  n	U R                  U	R                  5       5        M$     M›     g s  snf )	Nr   FrE  r¾   rF  r-  r*  r+  )rE  rF  r-  r:  r;  r<  rê   r²   r   Úsplitr5  Ústrip©
r�   r×   rØ   rì   r¶   ÚtÚeltNameÚeltAttrsÚ
eltContentrR   s
             rP   rî   Ú RearrangementMorphAction.fromXML  sß   € Ø9:Ð:ˆŒÐ:˜œ	 DÔ$6Ø<AÐAˆŒÐA˜Ô)¨D¬MÙ%Ó>šg˜¬°A´u×)=—1™gˆÐ>Û-4Ñ)ˆG˜zØ˜*Ó$Ü (¨°'Ñ):Ó ;�–Ø˜FÓ"Ü$ X¨gÑ%6Ó7�–	Ø˜OÓ+Ü%-¨h°wÑ.?Ó%@�Ö"Ø˜GÕ#Ø$ WÑ-×3Ñ3°CÖ8�DØ—M‘M $§*¡*£,Ö/ó 9ò .5ùò ?s   ¯C4ÁC4)r;  r:  r<  rE  r-  rF  N)r:   r;   r<   r=   Ú
staticSizeÚactionHeaderSizer.  rU  rŽ   rÑ   rÁ   rã   rî   rN   r9   rO   rP   r9  r9  ×  sò   † Ø€JØÐÚ5€FðØ	ˆ;ðà	ˆ;ðð 	
ˆ;ðð 	
ˆ=ð	ð
 	
ˆ=ðð 	
ˆ=ðð 	
ˆ=ðð 	
ˆ=ðð 	
ˆ?ðð 	
ˆ?ðð 	ˆOðð 	ˆOðð 	Ððð 	Ððð 	Ððð  	Ðð!€Fò&ò"ò,òõ0rO   r9  c                   óB   • \ rS rSrSrSrSS/rS rS rS r	S	 r
S
 rSrg)ÚContextualMorphActioni,  r.   r   ÚSetMarkr;  c                 ó\   • SU l         Su  U l        U l        SU l        Su  U l        U l        g )Nr   ©FF©rÄ   rÄ   )rE  rf  r;  r-  Ú	MarkIndexÚCurrentIndexrŒ   s    rP   rŽ   ÚContextualMorphAction.__init__1  s/   € ØˆŒØ)5Ñ&ˆŒ�dÔ&ØˆÔØ,:Ñ)ˆŒ˜Õ)rO   c                 óB  • Ub   eUR                  U R                  5        U R                  nU R                  (       a  US-  nU R                  (       a  US-  nUR                  U5        UR                  U R
                  5        UR                  U R                  5        g )Nr„   r8   )rI  rE  r-  rf  r;  rj  rk  rJ  s        rP   rÑ   ÚContextualMorphAction.compile7  s�   € ØÑ"Ð"Ð"Ø×Ñ˜4Ÿ=™=Ô)Ø×"Ñ"ˆØ�<�<Ø�V‰OˆEØ××Ø�V‰OˆEØ×Ñ˜5Ô!Ø×Ñ˜4Ÿ>™>Ô*Ø×Ñ˜4×,Ñ,Õ-rO   c                 ó  • Ub   eUR                  5       U l        UR                  5       n[        US-  5      U l        [        US-  5      U l        US-  U l        UR                  5       U l        UR                  5       U l        g )Nr„   r8   iÿ?  )rN  rE  rO  rf  r;  r-  rj  rk  rP  s        rP   rÁ   ÚContextualMorphAction.decompileC  sz   € ØÑ#Ð#Ð#Ø×)Ñ)Ó+ˆŒØ×!Ñ!Ó#ˆÜ˜E F™NÓ+ˆŒÜ ¨¡Ó/ˆÔØ" V™^ˆÔØ×*Ñ*Ó,ˆŒØ"×-Ñ-Ó/ˆÕrO   c                 óª  • UR                   " U40 UD6  UR                  5         UR                  SU R                  S9  UR                  5         U R	                  U5        UR                  SU R
                  S9  UR                  5         UR                  SU R                  S9  UR                  5         UR                  U5        UR                  5         g )NrE  r,  rj  rk  )rÝ   rÖ   rÕ   rE  r1  rj  rk  rà   ©r�   r  r¶   rØ   r×   s        rP   rã   ÚContextualMorphAction.toXMLM  s´   € Ø×Ò˜4Ñ) 5Ò)Ø×ÑÔØ×Ñ˜J¨d¯m©mÐÑ<Ø×ÑÔØ×Ñ˜iÔ(Ø×Ñ˜K¨t¯~©~ÐÑ>Ø×ÑÔØ×Ñ˜N°$×2CÑ2CÐÑDØ×ÑÔØ×Ñ˜ÔØ×ÑÕrO   c                 ó*  • S=U l         U l        S=U l        U l        Su  U l        U l        U Vs/ s H  n[        U[        5      (       d  M  UPM     nnU H´  u  pgnUS:X  a  [        US   5      U l         M!  US:X  a<  US   R                  S5       H"  n	U R                  U	R                  5       5        M$     Mc  US:X  a  [        US   5      U l        M~  US	:X  a  [        US   5      U l        M™  US
:X  d  M¡  [        US   5      U l        M¶     g s  snf )Nr   Fri  rE  r¾   r*  r+  r-  rj  rk  )rE  r-  rf  r;  rj  rk  rê   r²   r   rZ  r5  r[  r\  s
             rP   rî   ÚContextualMorphAction.fromXMLZ  sú   € Ø-.Ð.ˆŒ˜Ô*Ø*/Ð/ˆŒ�tÔ'Ø,:Ñ)ˆŒ˜Ô)Ù%Ó>šg˜¬°A´u×)=—1™gˆÐ>Û-4Ñ)ˆG˜zØ˜*Ó$Ü (¨°'Ñ):Ó ;�–Ø˜GÓ#Ø$ WÑ-×3Ñ3°CÖ8�DØ—M‘M $§*¡*£,Ö/ó 9à˜OÓ+Ü%-¨h°wÑ.?Ó%@�Ö"Ø˜KÓ'Ü!)¨(°7Ñ*;Ó!<�–Ø˜NÕ*Ü$,¨X°gÑ->Ó$?�Ö!ò .5ùò ?s   °DÁD)rk  r;  rj  rE  r-  rf  N)r:   r;   r<   r=   rb  rc  r.  rŽ   rÑ   rÁ   rã   rî   rN   r9   rO   rP   re  re  ,  s1   † Ø€JØÐØ˜Ð'€Fò;ò
.ò0òõ@rO   re  c                   ó   • \ rS rSrS rSrg)Ú	LigActionim  c                 ó    • SU l         SU l        g )NFr   )ÚStoreÚGlyphIndexDeltarŒ   s    rP   rŽ   ÚLigAction.__init__n  s   € ØˆŒ
ð  !ˆÕrO   )rz  ry  Nr  r9   rO   rP   rw  rw  m  s   † õ!rO   rw  c                   ó^   • \ rS rSrSrSrSS/rS rS rS r	\
S	 5       rS
 rS rS rS rSrg)ÚLigatureMorphActioni|  r=  rV   ÚSetComponentr;  c                 óL   • SU l         Su  U l        U l        SU l        / U l        g )Nr   rh  )rE  r~  r;  r-  ÚActionsrŒ   s    rP   rŽ   ÚLigatureMorphAction.__init__„  s(   € ØˆŒØ.:Ñ+ˆÔ˜4Ô+ØˆÔØˆ�rO   c                 ó®  • Uc   eUR                  U R                  5        U R                  nU R                  (       a  US-  nU R                  (       a  US-  n[        U R                  5      S:”  a  US-  nUR                  U5        [        U R                  5      S:”  a$  U R                  5       nUR                  X5   5        g UR                  S5        g )Nr„   r8   r   r7   )rI  rE  r-  r~  r;  r°   r€  ÚcompileLigActions)r�   rÙ   r¶   rK  r‘   Úactionss         rP   rÑ   ÚLigatureMorphAction.compileŠ  sµ   € ØÑ&Ð&Ð&Ø×Ñ˜4Ÿ=™=Ô)Ø×"Ñ"ˆØ××Ø�V‰OˆEØ××Ø�V‰OˆEÜˆt�|‰|Ó˜qÓ Ø�V‰OˆEØ×Ñ˜5Ô!Üˆt�|‰|Ó˜qÓ Ø×,Ñ,Ó.ˆGØ×Ñ˜{Ñ3Õ4à×Ñ˜qÕ!rO   c                 ó>  • Uc   eUR                  5       U l        UR                  5       n[        US-  5      U l        [        US-  5      U l        [        US-  5      nUS-  U l        UR                  5       nU(       a  U R                  X65      U l        g / U l        g )Nr„   r8   r7   iÿ  )rN  rE  rO  r~  r;  r-  Ú_decompileLigActionsr€  )r�   rQ  r¶   rR  r‘   ÚperformActionrK  s          rP   rÁ   ÚLigatureMorphAction.decompile›  s”   € ØÑ'Ð'Ð'Ø×)Ñ)Ó+ˆŒØ×!Ñ!Ó#ˆÜ  ¨¡Ó0ˆÔÜ ¨¡Ó/ˆÔÜ˜U V™^Ó,ˆð # V™^ˆÔØ×'Ñ'Ó)ˆÞØ×4Ñ4°\ÓOˆD�LàˆD�LrO   c                 ó�  • S[        5       0 pCnU HE  nUR                  R                  5        H$  u  pgUR                  UR	                  5       5        M&     MG     [        US S9 HQ  nX„;  d  M
  [        S[        U5      S5       H)  n	X‰S  n
[        U5      U	-   S-  nUR                  X«5        M+     X(-  nMS     [        US5      nX$4$ )NrO   c                 ó   • [        U 5      * U 4$ rŠ   ©r°   ©Úxs    rP   ri   Ú4LigatureMorphAction.compileActions.<locals>.<lambda>¿  s   € ´°Q³°¸©|rO   ©Úkeyr   r-   )
Úsetr   r´   Úaddrƒ  ÚsortedÚranger°   Ú
setdefaultr   )r¶   r&  rÿ   r„  rK  ÚstateÚ_glyphClassÚtransÚar€   ÚsuffixÚsuffixIndexs               rP   r'  Ú"LigatureMorphAction.compileActions®  sÄ   € à'*¬C«E°2˜ˆÛˆEØ&+×&7Ñ&7×&=Ñ&=Ö&?Ñ"�Ø—‘˜E×3Ñ3Ó5Ö6ó '@ñ ô ˜Ñ%;Ô<ˆAØÕ#Ü˜q¤# a£&¨!Ö,�AØ˜r˜U�FÜ#& v£;°¡?°qÑ"8�KØ×*Ñ*¨6Ö?ñ -ð ‘’ñ =ô �V˜Q“ˆØÐ$Ð$rO   c                 ó@  • / n[        U R                  5       Hy  u  p#U[        U R                  5      S-
  :H  nUR                  S-  nXT(       a  SOS-  nXSR                  (       a  SOS-  nUR                  [        R                  " SU5      5        M{     [        U5      $ )Nr   éÿÿÿ?ì        r   é   @rn   )	r  r€  r°   rz  ry  rÌ   re   rf   r   )r�   rÿ   r€   ÚactionÚlastr¾   s         rP   rƒ  Ú%LigatureMorphAction.compileLigActionsÉ  s†   € ØˆÜ" 4§<¡<Ö0‰IˆAØœ˜DŸL™LÓ)¨AÑ-Ñ-ˆDØ×*Ñ*¨ZÑ7ˆEØ¥4‘Z¨QÑ.ˆEØ§<§<‘Z°QÑ6ˆEØ�M‰Mœ&Ÿ+š+ d¨EÓ2Ö3ñ 1ô ˜Ó Ð rO   c                 ó4  • / nSnUR                  UR                  US-  -   5      nU(       dk  UR                  5       n[        US-  5      n[	        5       nUR                  U5        [        US-  5      Ul        US-  nUS:¼  a  SU-   nX‡l        U(       d  Mk  U$ )NFr-   r   r¡  rŸ  i    i   À)ÚgetSubReaderÚposÚ	readULongrO  rw  rÌ   ry  rz  )	r�   rR  rK  r„  r£  rQ  r¾   r¢  Údeltas	            rP   r‡  Ú(LigatureMorphAction._decompileLigActionsÓ  sŸ   € ØˆØˆØ×*Ñ*¨<×+;Ñ+;¸kÈA¹oÑ+MÓNˆÞØ×$Ñ$Ó&ˆEÜ˜ 
Ñ*Ó+ˆDÜ“[ˆFØ�N‰N˜6Ô"Ü ¨
Ñ 2Ó3ˆFŒLØ˜JÑ&ˆEØ˜
Ó"Ø# eÑ+�Ø%*Ô"÷ �$ð ˆrO   c                 óÞ  • S=U l         U l        S=U l        U l        SU l        / U l        U Vs/ s H  n[        U[        5      (       d  M  UPM     nnU GH	  u  pgnUS:X  a  [        US   5      U l         M"  US:X  a<  US   R                  S5       H"  n	U R                  U	R                  5       5        M$     Md  US:X  a  [        US   5      U l        M  US:X  d  M‡  [        5       n
UR                  SS	5      R                  S5      nU Vs/ s H  oÌR                  5       PM     nnS
U;   U
l        [        US   5      U
l        U R                  R                  U
5        GM     g s  snf s  snf )Nr   FrE  r¾   r*  r+  r-  ÚActionÚ ry  rz  )rE  r-  r~  r;  r€  rê   r²   r   rZ  r5  r[  rw  rë   ry  rz  rÌ   )r�   r×   rØ   rì   r¶   r]  r^  r_  r`  rR   r¢  r‘   r0  s                rP   rî   ÚLigatureMorphAction.fromXMLã  s@  € Ø-.Ð.ˆŒ˜Ô*Ø/4Ð4ˆÔ˜DÔ,ØˆÔØˆŒÙ%Ó>šg˜¬°A´u×)=—1™gˆÐ>Ü-4Ñ)ˆG˜zØ˜*Ó$Ü (¨°'Ñ):Ó ;�–Ø˜GÓ#Ø$ WÑ-×3Ñ3°CÖ8�DØ—M‘M $§*¡*£,Ö/ó 9à˜OÓ+Ü%-¨h°wÑ.?Ó%@�Ö"Ø˜HÕ$Ü"›�Ø Ÿ™ W¨bÓ1×7Ñ7¸Ó<�Ù,1Ó2ªE qŸ™ž©E�Ð2Ø&¨%Ñ/�”Ü)1°(Ð;LÑ2MÓ)N�Ô&Ø—‘×#Ñ# F×+ò .5ùò ?ùò 3s   ¯E%ÁE%ÄE*c                 óÎ  • UR                   " U40 UD6  UR                  5         UR                  SU R                  S9  UR                  5         U R	                  U5        U R
                   HV  nSUR                  4/nUR                  (       a  UR                  S5        UR                  SU5        UR                  5         MX     UR                  U5        UR                  5         g )NrE  r,  rz  )r*  ry  r¬  )
rÝ   rÖ   rÕ   rE  r1  r€  rz  ry  rÌ   rà   )r�   r  r¶   rØ   r×   r¢  Úattribss          rP   rã   ÚLigatureMorphAction.toXMLù  s¿   € Ø×Ò˜4Ñ) 5Ò)Ø×ÑÔØ×Ñ˜J¨d¯m©mÐÑ<Ø×ÑÔØ×Ñ˜iÔ(Ø—l”lˆFØ)¨6×+AÑ+AÐBÐCˆGØ�|�|Ø—‘Ð1Ô2Ø×Ñ ¨'Ô2Ø×ÑÖñ #ð 	×Ñ˜ÔØ×ÑÕrO   )r€  r;  rE  r-  r~  N)r:   r;   r<   r=   rb  rc  r.  rŽ   rÑ   rÁ   r7  r'  rƒ  r‡  rî   rã   rN   r9   rO   rP   r}  r}  |  sP   † Ø€Jð Ðà˜mÐ,€Fòò"ò"ð& ñ%ó ð%ò4!òò ,õ,rO   r}  c                   óX   • \ rS rSrSrSr/ SQrS rS rS r	S r
S	 rS
 r\S 5       rSrg)ÚInsertionMorphActioni	  r.   r-   )rf  r;  ÚCurrentIsKashidaLikeÚMarkedIsKashidaLikeÚCurrentInsertBeforeÚMarkedInsertBeforec                 ó|   • SU l         U R                   H  n[        XS5        M     SU l        / / sU l        U l        g rD  )rE  r.  rµ   r-  ÚCurrentInsertionActionÚMarkedInsertionActionr4  s     rP   rŽ   ÚInsertionMorphAction.__init__  s;   € ØˆŒØ—K”KˆDÜ�D Ö&ñ  àˆÔØBDÀbÐ?ˆÔ# TÕ%?rO   c                 ó   • Uc   eUR                  U R                  5        U R                  nU R                  (       a  US-  nU R                  (       a  US-  nU R
                  (       a  US-  nU R                  (       a  US-  nU R                  (       a  US-  nU R                  (       a  US-  nU[        U R                  5      S-  -  nU[        U R                  5      -  nUR                  U5        [        U R                  5      S:”  a  U[        U R                  5         nOS	nUR                  U5        [        U R                  5      S:”  a  U[        U R                  5         nOS	nUR                  U5        g )
Nr„   r8   r7   r6   r5   r4   r~   r   rÄ   )rI  rE  r-  rf  r;  r´  rµ  r¶  r·  r°   r¹  rº  r²   )r�   rÙ   r¶   rK  r‘   ÚcurrentIndexÚmarkedIndexs          rP   rÑ   ÚInsertionMorphAction.compile  sH  € ØÑ&Ð&Ð&Ø×Ñ˜4Ÿ=™=Ô)Ø×"Ñ"ˆØ�<�<Ø�V‰OˆEØ××Ø�V‰OˆEØ×$×$Ø�V‰OˆEØ×#×#Ø�V‰OˆEØ×#×#Ø�V‰OˆEØ×"×"Ø�V‰OˆEØ”�T×0Ñ0Ó1°QÑ6Ñ6ˆØ”�T×/Ñ/Ó0Ñ0ˆØ×Ñ˜5Ô!Üˆt×*Ñ*Ó+¨aÓ/Ø&¤u¨T×-HÑ-HÓ'IÑJ‰Là!ˆLØ×Ñ˜<Ô(Üˆt×)Ñ)Ó*¨QÓ.Ø%¤e¨D×,FÑ,FÓ&GÑH‰Kà ˆKØ×Ñ˜;Õ'rO   c                 óÞ  • Uc   eUR                  5       U l        UR                  5       n[        US-  5      U l        [        US-  5      U l        [        US-  5      U l        [        US-  5      U l        [        US-  5      U l        [        US-  5      U l        U R                  X2UR                  5       US-  S-	  S	9U l
        U R                  X2UR                  5       US
-  S	9U l        g )Nr„   r8   r7   r6   r5   r4   ià  r~   )r  Úcounté   )rN  rE  rO  rf  r;  r´  rµ  r¶  r·  Ú_decompileInsertionActionr¹  rº  rP  s        rP   rÁ   ÚInsertionMorphAction.decompile:  só   € ØÑ'Ð'Ð'Ø×)Ñ)Ó+ˆŒØ×!Ñ!Ó#ˆÜ˜E F™NÓ+ˆŒÜ ¨¡Ó/ˆÔÜ$(¨°©Ó$8ˆÔ!Ü#'¨°©Ó#7ˆÔ Ü#'¨°©Ó#7ˆÔ Ü"& u¨v¡~Ó"6ˆÔØ&*×&DÑ&DØ f×&7Ñ&7Ó&9À5È6Á>ÐVWÑBWð 'Eð '
ˆÔ#ð &*×%CÑ%CØ f×&7Ñ&7Ó&9À%È&Á.ð &Dð &
ˆÕ"rO   c                 ó    • US:X  d  US:X  a  / $ UR                  UR                  US-  -   5      nUR                  UR                  U5      5      $ )NrÄ   r   r,   )r¦  r§  ÚgetGlyphNameManyÚreadUShortArray)r�   rR  r¶   r  rÁ  rQ  s         rP   rÃ  Ú.InsertionMorphAction._decompileInsertionActionK  sO   € Ø�F‹?˜e q›jØˆIØ×*Ñ*¨<×+;Ñ+;¸eÀa¹iÑ+GÓHˆØ×$Ñ$ V×%;Ñ%;¸EÓ%BÓCÐCrO   c                 óÎ  • UR                   " U40 UD6  UR                  5         UR                  SU R                  S9  UR                  5         U R	                  U5        U R
                   H#  nUR                  SUS9  UR                  5         M%     U R                   H#  nUR                  SUS9  UR                  5         M%     UR                  U5        UR                  5         g )NrE  r,  r¹  ©Úglyphrº  )rÝ   rÖ   rÕ   rE  r1  r¹  rº  rà   )r�   r  r¶   rØ   r×   Úgs         rP   rã   ÚInsertionMorphAction.toXMLQ  sÐ   € Ø×Ò˜4Ñ) 5Ò)Ø×ÑÔØ×Ñ˜J¨d¯m©mÐÑ<Ø×ÑÔØ×Ñ˜iÔ(Ø×,Ô,ˆAØ×ÑÐ 8ÀÐÑBØ×ÑÖñ -ð ×+Ô+ˆAØ×ÑÐ 7¸qÐÑAØ×ÑÖñ ,ð 	×Ñ˜ÔØ×ÑÕrO   c                 óô  • U R                  5         U Vs/ s H  n[        U[        5      (       d  M  UPM     nnU H´  u  pgnUS:X  a  [        US   5      U l        M!  US:X  a<  US   R                  S5       H"  n	U R                  U	R                  5       5        M$     Mc  US:X  a   U R                  R                  US   5        M‰  US:X  a   U R                  R                  US   5        M¯   U5       e   g s  snf )NrE  r¾   r*  r+  r¹  rË  rº  )rŽ   rê   r²   r   rE  rZ  r5  r[  r¹  rÌ   rº  r\  s
             rP   rî   ÚInsertionMorphAction.fromXML`  s×   € Ø�‰ŒÙ%Ó>šg˜¬°A´u×)=—1™gˆÐ>Û-4Ñ)ˆG˜zØ˜*Ó$Ü (¨°'Ñ):Ó ;�–Ø˜GÓ#Ø$ WÑ-×3Ñ3°CÖ8�DØ—M‘M $§*¡*£,Ö/ó 9àÐ4Ó4Ø×+Ñ+×2Ñ2°8¸GÑ3DÖEØÐ3Ó3Ø×*Ñ*×1Ñ1°(¸7Ñ2CÖDà%˜gÓ%�uò .5ùò ?s
   •C5²C5c                 óž  • [        5       0 SpCnU HŠ  nUR                  R                  5        Hi  u  pgUR                  b$  UR	                  [        UR                  5      5        UR                  c  ME  UR	                  [        UR                  5      5        Mk     MŒ     [        US S9 HŸ  nXƒ;   a  M
  [        S[        U5      5       HH  n	[        U5      S-  U	-   n
[        U	[        U5      5       H  nX‰US-    nUR                  XÊ5        M     MJ     U H.  nU R                  U5      nU[        R                  " SU5      -  nM0     M¡     XC4$ )NrO   c                 ó   • [        U 5      * U 4$ rŠ   rŒ  r�  s    rP   ri   Ú5InsertionMorphAction.compileActions.<locals>.<lambda>|  s   € ´c¸!³f°W¸a±LrO   r�  r   r,   r   rl   )r’  r   r´   r¹  r“  r²   rº  r”  r•  r°   r–  rË   re   rf   )r¶   r&  r„  rK  rÿ   r—  r˜  r™  r¢  ÚstartÚ
startIndexÚlimitÚglyphsrË  r¹   s                  rP   r'  Ú#InsertionMorphAction.compileActionsp  s/  € ä'*£u¨b°#˜fˆÛˆEØ&+×&7Ñ&7×&=Ñ&=Ö&?Ñ"�Ø×/Ñ/Ñ;Ø—K‘K¤ e×&BÑ&BÓ CÔDØ×.Ñ.Ó:Ø—K‘K¤ e×&AÑ&AÓ BÖCó	 '@ñ ô ˜WÑ*@ÔAˆFð Ó$ÙÜ˜q¤# f£+Ö.�Ü! &›k¨QÑ.°%Ñ7�
Ü" 5¬#¨f«+Ö6�EØ#¨E°A©IÐ6�FØ×*Ñ*¨6Ö>ó 7ñ /ó
  �ØŸ/™/¨%Ó0�Øœ&Ÿ+š+ d¨GÓ4Ñ4’ó  ñ Bð" Ð"Ð"rO   )
r¶  r¹  r´  r;  r·  rº  rµ  rE  r-  rf  N)r:   r;   r<   r=   rb  rc  r.  rŽ   rÑ   rÁ   rÃ  rã   rî   r7  r'  rN   r9   rO   rP   r³  r³  	  sH   † Ø€JØÐò€FòIò(ò<
ò"Dòò&ð  ñ#ó ó#rO   r³  c                   ó$   • \ rS rSrS rSS jrSrg)ÚFeatureParamsi�  c                 óÊ   • [         R                  US   5      U R                  :X  d&   SUS   < SU R                  R                  < 35       e[        R
                  " XU5        g )NÚ
FeatureTagz&Wrong FeatureParams type for feature 'z': )ÚfeatureParamTypesrë   Ú	__class__r:   r   rÑ   )r�   rÙ   r¶   s      rP   rÑ   ÚFeatureParams.compile‘  sY   € ä×!Ñ! &¨Ñ"6Ó7¸4¿>¹>ÓIñ	
ð �<Ô Ø�N‰N×#Ó#ð
ó	
ØIô
 	×Ò˜$¨Õ-rO   Nc                 óX   • [         R                  " XX#U R                  R                  S9  g )N)r×   )r   rã   rÝ  r:   rr  s        rP   rã   ÚFeatureParams.toXMLš  s   € Ü�Š˜¨¸4¿>¹>×;RÑ;RÓSrO   r9   r%  )r:   r;   r<   r=   rÑ   rã   rN   r9   rO   rP   rÙ  rÙ  �  s   † ò.÷TrO   rÙ  c                   ó   • \ rS rSrSrg)ÚFeatureParamsSizeiž  r9   N©r:   r;   r<   r=   rN   r9   rO   rP   râ  râ  ž  ó   † ÚrO   râ  c                   ó   • \ rS rSrSrg)ÚFeatureParamsStylisticSeti¢  r9   Nrã  r9   rO   rP   ræ  ræ  ¢  rä  rO   ræ  c                   ó   • \ rS rSrSrg)ÚFeatureParamsCharacterVariantsi¦  r9   Nrã  r9   rO   rP   rè  rè  ¦  rä  rO   rè  c                   ó6   • \ rS rSrS	S jrS rS rS rS rSr	g)
ÚCoverageiª  Nc                 ó6   • [        U S5      (       d  / U l        g g )NrÖ  )ÚhasattrrÖ  rš   s     rP   r‹   ÚCoverage.populateDefaults­  s   € Ü�t˜X×&Ñ&ØˆD�Kð 'rO   c           	      óþ  • U R                   S:X  a  US   U l        U ? g U R                   S:X  a§  / =o0l        US   n[        US S9nXE:w  a  [        R	                  S5        UnAU Hi  nUR
                  nUR                  nUR                  U5      n	UR                  U5      S-   n
UR                  UR                  [        Xš5      5      5        Mk     U ? g / U l        [        R	                  SU R                   5        U ? g )	Nr   Ú
GlyphArrayr,   ÚRangeRecordc                 ó   • U R                   $ rŠ   )ÚStartCoverageIndex©rš  s    rP   ri   Ú#Coverage.postRead.<locals>.<lambda>º  s
   € ¸×9MÒ9MrO   r�  ú.GSUB/GPOS Coverage is not sorted by glyph ids.zUnknown Coverage format: %s)ÚFormatrÖ  r”  ÚlogÚwarningÚStartÚEndrË   ÚextendrÆ  r•  )r�   ÚrawTabler¶   rÖ  ÚrangesÚsorted_rangesÚrrÓ  ÚendÚstartIDÚendIDs              rP   ÚpostReadÚCoverage.postRead±  sî   € Ø�;‰;˜!ÓØ" <Ñ0ˆDŒKð* ‰Kð) �[‰[˜AÓØ#%Ð%ˆF”[Ø˜mÑ,ˆFô # 6Ñ/MÑNˆMØÓ&Ü—‘ÐLÔMØ&�ØÛ�ØŸ™�Ø—e‘e�ØŸ/™/¨%Ó0�ØŸ™¨Ó,¨qÑ0�Ø—‘˜d×3Ñ3´E¸'Ó4IÓJÖKñ ð ‰Kð ˆDŒKÜ�K‰KÐ5°t·{±{ÔCØ‰KrO   c                 óÞ  • [        U SS 5      nUc  / =o l        SnSU0nU(       Ga@  UR                  U5      n[        U5      U:g  nUS   nU//nUSS   H3  n	X—S-   :w  a&  US   R	                  U5        UR	                  U	/5        U	nM5     US   R	                  U5        U(       d  [        U5      S-  [        U5      :  a¦  Sn
[        U5       HX  u  nu  pÍ[        5       nXÎl        UR                  U5      Ul
        UR                  U5      Ul        X®l        XèU'   X­-   U-
  S-   n
MZ     U(       a%  [        R                  S5        UR                  S S	9  U H  nU?M     S
nSU0nX0l        U$ )NrÖ  r   rï  r   éÿÿÿÿrp   rõ  c                 ó   • U R                   $ rŠ   )ÚStartIDró  s    rP   ri   Ú#Coverage.preWrite.<locals>.<lambda>ë  s   € ¨a¯iªirO   r�  r,   rð  )rÏ   rÖ  ÚgetGlyphIDManyr”  rÌ   r°   r  rð  r  ÚgetGlyphNamerù  rú  rò  r÷  rø  Úsortrö  )r�   r¶   rÖ  Úformatrü  ÚglyphIDsÚbrokenOrderr£  rý  r¹   r  r€   rÓ  r   rÿ  s                  rP   ÚpreWriteÚCoverage.preWriteÊ  s~  € Ü˜˜x¨Ó.ˆØ‰>Ø#%Ð%ˆF”[ØˆØ  &Ð)ˆßà×*Ñ*¨6Ó2ˆHÜ  Ó*¨hÑ6ˆKà˜A‘;ˆDØ�f�XˆFØ# A B›<�Ø Q™hÓ&Ø˜2‘J×%Ñ% dÔ+Ø—M‘M 7 )Ô,Ø’ñ	 (ð
 �2‰J×Ñ˜dÔ#æœc &›k¨A™o´°F³Ó;à�Ü'0°Ö'8‘O�A‘|˜Ü#›�AØ %”IØ"×/Ñ/°Ó6�A”GØ ×-Ñ-¨cÓ2�A”EØ+0Ô(Ø !˜1‘IØ!™K¨%Ñ/°!Ñ3’Eñ (9ö Ü—K‘KÐ PÔQØ—K‘KÑ$7�KÑ8Û�AØš	ñ  à�Ø)¨6Ð2�ð ŒØˆrO   c                 ól   • [        U S/ 5       H#  nUR                  SUS9  UR                  5         M%     g )NrÖ  ÚGlyphr,  )rÏ   rÕ   rÖ   )r�   r  r¶   r’   s       rP   ÚtoXML2ÚCoverage.toXML2õ  s4   € Ü   x°Ö4ˆIØ×Ñ ¨yÐÑ9Ø×ÑÖò 5rO   c                 ó\   • [        U SS 5      nUc  / nXPl        UR                  US   5        g )NrÖ  r¾   )rÏ   rÖ  rÌ   )r�   r×   rØ   rì   r¶   rÖ  s         rP   rî   ÚCoverage.fromXMLú  s/   € Ü˜˜x¨Ó.ˆØ‰>ØˆFØ ŒKØ�‰�e˜G‘nÕ%rO   )rö  rÖ  rŠ   ©
r:   r;   r<   r=   r‹   r  r  r  rî   rN   r9   rO   rP   rê  rê  ª  s   † ôòò2)òV õ
&rO   rê  l   ÿÿ c                   óL   • \ rS rSrSS jrS r\S 5       rS rS r	S r
S	 rS
rg)ÚDeltaSetIndexMapi  Nc                 ó6   • [        U S5      (       d  / U l        g g ©Nrâ   ©rì  râ   rš   s     rP   r‹   Ú!DeltaSetIndexMap.populateDefaults  ó   € Ü�t˜Y×'Ñ'ØˆD�Lð (rO   c                 ó4   • US   S-  S:X  d   eUS   U l         g )NÚEntryFormatéÀÿ  r   râ   ©râ   )r�   rü  r¶   s      rP   r  ÚDeltaSetIndexMap.postRead  s&   € Ø˜Ñ'¨&Ñ0°QÓ6Ð6Ð6Ø 	Ñ*ˆ�rO   c                 ó  • SnU  H  nX-  nM	     US-  nSnU(       a  US-  nUS-  nU(       a  M  [        US5      nUS::  d   eUSU-
  -	  USU-  S-
  -  -  nUS::  a  SnOUS::  a  SnOUS::  a  SnOS	nUS-
  S	-  US-
  -  $ )
Nr   rÄ   r   r/   éÿ   r,   iÿÿÿ rp   r-   )Úmax)râ   ÚoredÚidxÚinnerÚ	innerBitsÚ	entrySizes         rP   ÚgetEntryFormatÚDeltaSetIndexMap.getEntryFormat  sÃ   € àˆÛˆCØ‰KŠDñ ð �v‘ˆØˆ	ÞØ˜‰NˆIØ�a‰KˆE÷ ˆeô ˜	 1Ó%ˆ	Ø˜B‹Ðˆà˜˜i™Ñ(¨T°a¸9±nÈÑ5IÑ-JÑKˆØ�:ÓØ‰IØ�ZÓØ‰IØ�ZÓØ‰IàˆIà˜Q‘ 1Ñ$¨°Q©Ñ7Ð7rO   c                 óÞ   • [        U SS 5      nUc  / =o l        [        U5      S:”  a  SOSU l        U R                  R                  5       n[        U5      US'   U R                  U5      US'   U$ )Nrâ   rÄ   r   r   ÚMappingCountr!  )rÏ   râ   r°   rö  rú   Úcopyr-  )r�   r¶   râ   rü  s       rP   r  ÚDeltaSetIndexMap.preWrite*  sm   € Ü˜$ 	¨4Ó0ˆØ‰?Ø%'Ð'ˆG”lÜ˜w›<¨&Ó0‘a°aˆŒØ—=‘=×%Ñ%Ó'ˆÜ#& w£<ˆ�Ñ Ø"&×"5Ñ"5°gÓ">ˆ�ÑØˆrO   c                 ó   • UR                  S5        UR                  5         [        [        U S/ 5      5       HS  u  p4SU4/nU[        :w  a  UR                  SUS-	  4SUS-  4/5        UR                  SU5        UR                  5         MU     g )	Nz7Omitted values default to 0xFFFF/0xFFFF (no variations)râ   r  Úouterr/   r*  rÄ   ÚMap)rV  rÖ   r  rÏ   r–   rû  rÕ   )r�   r  r¶   r€   r¾   rØ   s         rP   r  ÚDeltaSetIndexMap.toXML24  s•   € ð 	×ÑÐSÔTØ×ÑÔÜ!¤'¨$°	¸2Ó">Ö?‰HˆAØ˜q�\�NˆEØÔ*Ó*Ø—‘à  %¨2¡+Ð.Ø  %¨&¡.Ð1ðôð ×Ñ  uÔ-Ø×ÑÖò @rO   c                 óü   • [        U SS 5      nUc	  / =U l        n[        US   5      n[        UR                  SS5      5      n[        UR                  SS5      5      nUS::  d   eUR	                  XgS-  U-  5        g )Nrâ   r  r4  Ú0xFFFFr*  rÄ   r/   )rÏ   râ   r   rë   Úinsert)	r�   r×   rØ   rì   r¶   râ   r  r4  r*  s	            rP   rî   ÚDeltaSetIndexMap.fromXMLE  sz   € Ü˜$ 	¨4Ó0ˆØ‰?Ø%'Ð'ˆDŒL˜7Ü˜˜w™Ó(ˆÜ˜Ÿ™ 7¨HÓ5Ó6ˆÜ˜Ÿ™ 7¨HÓ5Ó6ˆØ˜‹ÐˆØ�‰�u¨™{¨eÑ3Õ4rO   c                 ó^   • U[        U R                  5      :  a  U R                  U   $ [        $ rŠ   )r°   râ   r–   )r�   r€   s     rP   Ú__getitem__ÚDeltaSetIndexMap.__getitem__O  s&   € Ø"#¤c¨$¯,©,Ó&7Ó"7ˆt�|‰|˜A‰ÐOÔ=OÐOrO   ©rö  râ   rŠ   )r:   r;   r<   r=   r‹   r  r7  r-  r  r  rî   r<  rN   r9   rO   rP   r  r    s5   † ôò+ð ñ8ó ð8ò2ò ò"5õPrO   r  Úuint8c                   ó<   • \ rS rSrS
S jrS rS rS rS rS r	S	r
g)Ú	VarIdxMapiS  Nc                 ó6   • [        U S5      (       d  0 U l        g g r  r  rš   s     rP   r‹   ÚVarIdxMap.populateDefaultsT  r  rO   c                 óÖ   • US   S-  S:X  d   eUR                  5       nUS   nUR                  US   /[        U5      [        U5      -
  -  5        [        [	        X45      5      U l        g )Nr!  r"  r   râ   r  )ÚgetGlyphOrderrû  r°   ÚdictÚziprâ   )r�   rü  r¶   r®   ÚmapLists        rP   r  ÚVarIdxMap.postReadX  sg   € Ø˜Ñ'¨&Ñ0°QÓ6Ð6Ð6Ø×'Ñ'Ó)ˆ
Ø˜9Ñ%ˆØ�‰˜ ™�}¬¨J«¼#¸g»,Ñ(FÑGÔHÜœC 
Ó4Ó5ˆ�rO   c                 óR  • [        U SS 5      nUc  0 =o l        UR                  5       nU Vs/ s H  oBU   PM	     nn[        U5      S:”  a,  US   US   :X  a   US	 [        U5      S:”  a  US   US   :X  a  M   SU0n[        U5      US'   [        R                  U5      US'   U$ s  snf )Nrâ   r   éþÿÿÿr  r0  r!  )rÏ   râ   rE  r°   r  r-  )r�   r¶   râ   r®   rÌ  rü  s         rP   r  ÚVarIdxMap.preWrite_  s»   € Ü˜$ 	¨4Ó0ˆØ‰?Ø%'Ð'ˆG”là×'Ñ'Ó)ˆ
Ù'1Ó2¢z !˜1”:¡zˆÐ2Ü�'‹l˜QÓ 7¨2¡;°'¸"±+Ó#=Ø˜�ô �'‹l˜QÓ 7¨2¡;°'¸"±+Õ#=ð ˜wÐ'ˆÜ#& w£<ˆ�Ñ Ü"2×"AÑ"AÀ'Ó"Jˆ�ÑØˆùò 3s   ­B$c                 óÄ   • [        [        U S0 5      R                  5       5       H8  u  p4SU4SUS-	  4SUS-  44nUR                  SU5        UR	                  5         M:     g )Nrâ   rË  r4  r/   r*  rÄ   r5  )r”  rÏ   r´   rÕ   rÖ   )r�   r  r¶   rË  r¾   rØ   s         rP   r  ÚVarIdxMap.toXML2n  sk   € Ü"¤7¨4°¸BÓ#?×#EÑ#EÓ#GÖH‰LˆEà˜%Ð Ø˜% 2™+Ð&Ø˜% &™.Ð)ðˆEð
 ×Ñ  uÔ-Ø×ÑÖò IrO   c                 óÖ   • [        U SS 5      nUc  0 nXPl         US   n[        US   5      n[        US   5      nUS::  d   eUS-  U-  XV'   g !   UR                  5       US      n NI= f)Nrâ   rË  r  r4  r*  rÄ   r/   )rÏ   râ   rE  r   )	r�   r×   rØ   rì   r¶   râ   rË  r4  r*  s	            rP   rî   ÚVarIdxMap.fromXMLx  s…   € Ü˜$ 	¨4Ó0ˆØ‰?ØˆGØ"ŒLð	9Ø˜'‘NˆEô ˜˜w™Ó(ˆÜ˜˜w™Ó(ˆØ˜‹ÐˆØ 2™+¨Ñ.ˆŠøð	9Ø×&Ñ&Ó(¨¨w©Ñ8ŠEús   šA ÁA(c                 óB   • U R                   R                  U[        5      $ rŠ   )râ   rë   r–   )r�   r’   s     rP   r<  ÚVarIdxMap.__getitem__†  s   € Ø�|‰|×Ñ 	Ô+=Ó>Ð>rO   r#  rŠ   )r:   r;   r<   r=   r‹   r  r  r  rî   r<  rN   r9   rO   rP   rA  rA  S  s    † ôò6òò ò/õ?rO   rA  c                   ó   • \ rS rSrS rSrg)ÚVarRegionListiŠ  c                 ó²   • UR                  S5      nU(       a  [        UR                  5      U l        0 U R                  ES[        U R                  S5      0E$ )NÚfvarÚRegionAxisCount)rë   r°   ÚaxesrW  rú   r   )r�   r¶   Ú	fvarTables      rP   r  ÚVarRegionList.preWrite‹  sR   € ð —H‘H˜VÓ$ˆ	ÞÜ#& y§~¡~Ó#6ˆDÔ ð
Ø�m‰mð
àœ~¨d¯m©mÐ=NÓOñ
ð 	
rO   )rW  N©r:   r;   r<   r=   r  rN   r9   rO   rP   rT  rT  Š  s   † õ
rO   rT  c                   ó6   • \ rS rSrS	S jrS rS rS rS rSr	g)
ÚSingleSubstiœ  Nc                 ó6   • [        U S5      (       d  0 U l        g g r  r  rš   s     rP   r‹   ÚSingleSubst.populateDefaults�  r  rO   c                 óÂ  • 0 n[        US   5      nU R                  S:X  aW  US   nUR                  U5      nU Vs/ s H
  owU-   S-  PM     nnUR                  U5      n	[	        XI5       H	  u  p«X³U
'   M     O[U R                  S:X  a7  [        U5      US   :X  d   S5       eUS   n[	        XL5       H	  u  p­XÓU
'   M     O S	U R                  -  5       eX0l        U ?g s  snf )
Nrê  r   ÚDeltaGlyphIDé   r,   Ú
GlyphCountz invalid SingleSubstFormat2 tableÚ
Substituteúunknown format: %s)Ú_getGlyphsFromCoverageTablerö  r
  rÆ  rG  r°   râ   )r�   rü  r¶   râ   Úinputr©  Ú	inputGIDSr¹   ÚoutGIDSÚoutNamesÚinpÚoutÚsubstÚsubs                 rP   r  ÚSingleSubst.postRead¡  sô   € ØˆÜ+¨H°ZÑ,@ÓAˆØ�;‰;˜!ÓØ˜^Ñ,ˆEØ×+Ñ+¨EÓ2ˆIÙ@IÓJÂ	°W %™¨5Ô0Á	ˆGÐJØ×,Ñ,¨WÓ5ˆHÜ Ö0‘�Ø"˜“ò 1à�[‰[˜AÓä�E“
˜h |Ñ4Ó4ð2à1ó2Ø4à˜\Ñ*ˆEÜ Ö-‘�Ø"˜“ò .ð 9Ð*¨T¯[©[Ñ8Ó8�1ØŒØ‰Kùò Ks   »Cc                 ó.  • [        U SS 5      nUc  0 =o l        [        UR                  5       5      nUR                  nU VVs/ s H  u  pVU" U5      U" U5      4PM     nnn[        [        Xs5      5      nSn	S n
U H  u  p¼U
c  XË-
  S-  n
Xº-   S-  U:w  d  M    O
   U
c  Sn	OSn	0 nX�l        [        5       nU Vs/ s H
  oÿS   S   PM     nnU Vs/ s H
  oÿS   S   PM     nnUUl	        XíS'   U	S:X  a  U
c   eX­S'   U$ UUS'   U$ s  snnf s  snf s  snf )	Nrâ   r,   rb  r   r   rê  ra  rd  )
rÏ   râ   Úlistr´   rË   r”  rG  rö  rê  rÖ  )r�   r¶   râ   r´   rË   rš  ÚbÚgidItemsÚsortableItemsr  r©  ÚinIDÚoutIDrü  ÚcovÚitemrg  rm  s                     rP   r  ÚSingleSubst.preWrite·  sK  € Ü˜$ 	¨4Ó0ˆØ‰?Ø%'Ð'ˆG”lÜ�W—]‘]“_Ó%ˆØ—_‘_ˆ
Ù?DÔEºu±t°q‘Z “]¡J¨q£MÓ2¹uˆÑEÜœs 8Ó3Ó4ˆð ˆØˆÛ#‰KˆDØ‰}Ø™¨Ñ.�à‘ Ñ%¨Õ.Ùñ $ð ‰}à‘à�àˆØŒÜ‹jˆÙ(5Ó6ª �a‘˜”©ˆÐ6Ù(5Ó6ª �a‘˜”©ˆÐ6ØˆŒ
Ø"�ÑØ�Q‹;ØÑ$Ð$Ð$Ø',�^Ñ$ð ˆð &+ˆH�\Ñ"Øˆùó? Fùò, 7ùÚ6s   ÁDÂ:DÃDc                 ó°   • [        U R                  R                  5       5      nU H-  u  pEUR                  SSU4SU4/5        UR	                  5         M/     g )NÚSubstitutionÚinrl  )r”  râ   r´   rÕ   rÖ   )r�   r  r¶   r´   ÚinGlyphÚoutGlyphs         rP   r  ÚSingleSubst.toXML2Þ  sP   € Ü�t—|‘|×)Ñ)Ó+Ó,ˆÛ!&ÑˆGØ×Ñ °$¸°À5È(ÐBSÐ0TÔUØ×ÑÖò "'rO   c                 óH   • [        U SS 5      nUc  0 nXPl        US   XRS   '   g )Nrâ   rl  r|  )rÏ   râ   )r�   r×   rØ   rì   r¶   râ   s         rP   rî   ÚSingleSubst.fromXMLä  s/   € Ü˜$ 	¨4Ó0ˆØ‰?ØˆGØ"ŒLØ$ U™|ˆ�d‘ÒrO   r>  rŠ   r  r9   rO   rP   r]  r]  œ  s   † ôòò,%òN õ,rO   r]  c                   óF   • \ rS rSrS
S jrS rS rS rS r\	S 5       r
S	rg)ÚMultipleSubstiì  Nc                 ó6   • [        U S5      (       d  0 U l        g g r  r  rš   s     rP   r‹   ÚMultipleSubst.populateDefaultsí  r  rO   c                 óì   • 0 nU R                   S:X  aA  [        US   5      nUS    Vs/ s H  oUR                  PM     nn[        [	        XF5      5      nO SU R                   -  5       eX0l        U ? g s  snf )Nr   rê  ÚSequencere  )rö  rf  rd  rF  rG  râ   )r�   rü  r¶   râ   rÖ  Úsrm  s          rP   r  ÚMultipleSubst.postReadñ  sr   € ØˆØ�;‰;˜!ÓÜ0°¸*Ñ1EÓFˆFØ+3°JÒ+?Ó@Ò+? a—\”\Ñ+?ˆEÐ@Üœ3˜vÓ-Ó.‰Gà8Ð*¨T¯[©[Ñ8Ó8�1ØŒØ‰Kùò As   ¨A1c                 ó"  • [        U SS 5      nUc  0 =o l        [        5       n[        [	        UR                  5       5      UR                  S9Ul        SU l        UUR                   Vs/ s H  o@R                  X$   5      PM     snS.nU$ s  snf )Nrâ   r�  r   )rê  r‡  )
rÏ   râ   rê  r”  rq  ÚkeysrË   rÖ  rö  ÚmakeSequence_)r�   r¶   râ   rw  rË  rü  s         rP   r  ÚMultipleSubst.preWriteü  s‚   € Ü˜$ 	¨4Ó0ˆØ‰?Ø%'Ð'ˆG”lÜ‹jˆÜœD §¡£Ó0°d·o±oÑFˆŒ
ØˆŒàØILÏÊÓTÊÀ×+Ñ+¨G©NÖ;ÉÑTñ
ˆð ˆùò Us   Á)Bc                 óÒ   • [        U R                  R                  5       5      nU H>  u  pESR                  U5      nUR	                  SSU4SU4/5        UR                  5         M@     g )Nr+  r{  r|  rl  )r”  râ   r´   r/  rÕ   rÖ   )r�   r  r¶   r´   r}  Ú	outGlyphsrl  s          rP   r  ÚMultipleSubst.toXML2	  s]   € Ü�t—|‘|×)Ñ)Ó+Ó,ˆÛ"'ÑˆGØ—(‘(˜9Ó%ˆCØ×Ñ °$¸°À5È#À,Ð0OÔPØ×ÑÖò #(rO   c                 ó|  • [        U SS 5      nUc  0 nXPl        US:X  aS  / U l        U HE  n[        U[        5      (       d  M  Uu  pxn	US:X  d  M'  U R                  R                  US   5        MG     g US:X  a{  [        UR                  S[        U5      5      5      n
U R                  U
   n/ =oÅU'   U H;  n[        U[        5      (       d  M  Uu  pxn	US:X  d  M'  UR                  US   5        M=     g US   (       a  US   R                  S	5      O/ nU Vs/ s H  oîR                  5       PM     snXRS
   '   g s  snf )Nrâ   rê  r  r¾   r‡  r  rd  rl  r+  r|  )rÏ   râ   Úold_coverage_rê   r²   rÌ   Úintrë   r°   rZ  r[  )r�   r×   rØ   rì   r¶   râ   ÚelementÚelement_nameÚelement_attrsrÀ   r  rË  Úglyph_mappingr�  rÌ  s                  rP   rî   ÚMultipleSubst.fromXML  s<  € Ü˜$ 	¨4Ó0ˆØ‰?ØˆGØ"ŒLð �:ÓØ!#ˆDÔÛ"�Ü! '¬5×1Ñ1ÙØ18Ñ.�¨QØ 7Õ*Ø×&Ñ&×-Ñ-¨m¸GÑ.DÖEñ #ð Ø�:ÓÜ˜Ÿ	™	 '¬3¨w«<Ó8Ó9ˆEØ×&Ñ& uÑ-ˆEØ-/Ð/ˆM E™NÛ"�Ü! '¬5×1Ñ1ÙØ18Ñ.�¨QØ <Õ/Ø!×(Ñ(¨°wÑ)?Ö@ñ #ð ð 05°U¯|�E˜%‘L×&Ñ& sÔ+Àˆ	Ù3<Ó=²9¨a§¡¦	±9Ñ=ˆ�d‘ÒùÒ=s   ÄD9c                 ó&   • [        5       nXl        U$ rŠ   )r‡  rd  )rÌ  Úseqs     rP   rŒ  ÚMultipleSubst.makeSequence_0  s   € ä‹jˆØŒØˆ
rO   )rö  râ   r’  rŠ   )r:   r;   r<   r=   r‹   r  r  r  rî   r7  rŒ  rN   r9   rO   rP   rƒ  rƒ  ì  s0   † ôò	òò ò>ð@ ñó órO   rƒ  c                   ó<   • \ rS rSrS
S jrS rS rS rS rS r	S	r
g)ÚClassDefi7  Nc                 ó6   • [        U S5      (       d  0 U l        g g )NÚ	classDefs)rì  rŸ  rš   s     rP   r‹   ÚClassDef.populateDefaults8  ó   € Ü�t˜[×)Ñ)ØˆD�Nð *rO   c                 ór  • 0 nU R                   S:X  ae  US   nUS   nUR                  U5      nU[        U5      -   nUR                  [	        Xg5      5      n[        X…5       H  u  pšU
(       d  M  X£U	'   M     O¸U R                   S:X  aˆ  US   nU H|  nUR                  n
U
(       d  M  UR                  nUR                  nUR                  U5      nUR                  U5      S-   nUR                  [	        Xg5      5      nU H  n	X£U	'   M	     M~     O [        R                  SU R                   5        X0l        U ? g )Nr   Ú
StartGlyphÚClassValueArrayr,   ÚClassRangeRecordzUnknown ClassDef format: %s)rö  rË   r°   rÆ  r•  rG  ÚClassrù  rú  r÷  rø  rŸ  )r�   rü  r¶   rŸ  rÓ  Ú	classListr  r  Ú
glyphNamesr’   ÚclsÚrecordsÚrecr   s                 rP   r  ÚClassDef.postRead<  s"  € Øˆ	à�;‰;˜!ÓØ˜\Ñ*ˆEØ Ð!2Ñ3ˆIØ—o‘o eÓ,ˆGØœc )›nÑ,ˆEØ×.Ñ.¬u°WÓ/DÓEˆJÜ"% jÖ"<‘�	ß�3Ø+.˜iÓ(ò #=ð �[‰[˜AÓØÐ1Ñ2ˆGÛ�Ø—i‘i�ÞÙØŸ	™	�Ø—g‘g�ØŸ/™/¨%Ó0�ØŸ™¨Ó,¨qÑ0�Ø!×2Ñ2´5¸Ó3HÓI�
Û!+�IØ+.˜iÓ(ó ",ò ô �K‰KÐ5°t·{±{ÔCØ"ŒØ‰KrO   c                 óÐ  • [        U SS 5      nUc  0 U l        g UR                  n/ nUR                  5        H'  u  pVU(       d  M  UR	                  U" U5      XV45        M)     U(       a~  UR                  5         US   u  pxn	X—U//n
USS   HA  u  pµnX·S-   :w  d  Xi:w  a(  U
S   R                  Xx/5        U
R	                  XkU/5        UnUnUn	MC     U
S   R                  Xx/5        U
$ g )NrŸ  r   r   r  )rÏ   rŸ  rË   r´   rÌ   r  rû  )r�   r¶   rŸ  rË   r´   r’   r©  r£  ÚlastNameÚlastClsrý  r¹   s               rP   Ú_getClassRangesÚClassDef._getClassRanges[  sÿ   € Ü˜D +¨tÓ4ˆ	ØÑØˆDŒNØØ—_‘_ˆ
ØˆØ'Ÿo™oÖ/‰NˆIÞÙØ�L‰L™* YÓ/°Ð@ÖAñ 0ö Ø�J‰JŒLØ&+¨A¡hÑ#ˆD˜GØ hÐ/Ð0ˆFØ+0°°«9Ñ'� CØ Q™hÓ&¨#«.Ø˜2‘J×%Ñ% tÐ&6Ô7Ø—M‘M 3°Ð";Ô<Ø�Ø$�Ø’ñ ,5ð �2‰J×Ñ˜tÐ.Ô/ØˆMð rO   c                 ó¨  • SnS/ 0nU R                  U5      nU(       a­  US   S   nUS   S   nXe-
  S-   n[        U5      S-  US-   :  a@  [        U5       H*  u  nu  pšp¼n[        5       nX¾l        XÞl        Xžl        XäU'   M,     SnSU0nOAUS   S   nS/U-  nU H&  u  pšp¼n[        X¥-
  XÅ-
  S-   5       H  nU	UU'   M
     M(     SnUUS.nX l        U$ )Nr,   r¥  r   r   r  rp   )r£  r¤  )	r°  r°   r  r¥  rù  rú  r¦  r•  rö  )r�   r¶   r  rü  rý  Ú
startGlyphÚendGlyphÚ
glyphCountr€   r©  rÓ  Ú	startNamer   ÚendNamer«  ÚstartGlyphNameÚclassesrÌ  s                     rP   r  ÚClassDef.preWritet  s  € ØˆØ&¨Ð+ˆØ×%Ñ% dÓ+ˆÞØ ™ 1™ˆJØ˜b‘z !‘}ˆHØ!Ñ.°Ñ2ˆJÜ�6‹{˜Q‰ ¨a¡Ó/ä@IÈ&Ö@QÑ<�AÑ<˜ I°GÜ*Ó,�CØ )”IØ%”GØ #”IØ #˜1“Iñ ARð �Ø.°Ð7‘ð "(¨¡¨1¡�Ø˜# 
Ñ*�Û;AÑ7�C 	°Ü" 5Ñ#5°sÑ7GÈ!Ñ7KÖL˜Ø%(˜ ›
ó Mñ <Bð �Ø*8ÈWÑU�ØŒØˆrO   c                 ó°   • [        U R                  R                  5       5      nU H-  u  pEUR                  SSU4SU4/5        UR	                  5         M/     g )Nr�  rË  Úclass)r”  rŸ  r´   rÕ   rÖ   )r�   r  r¶   r´   r’   r©  s         rP   r  ÚClassDef.toXML2’  sO   € Ü�t—~‘~×+Ñ+Ó-Ó.ˆÛ#‰NˆIØ×Ñ 
¨g°yÐ-AÀGÈSÀ>Ð,RÔSØ×ÑÖò $rO   c                 óZ   • [        U SS 5      nUc  0 nXPl        [        US   5      XRS   '   g )NrŸ  r¼  rË  )rÏ   rŸ  r“  )r�   r×   rØ   rì   r¶   rŸ  s         rP   rî   ÚClassDef.fromXML˜  s5   € Ü˜D +¨tÓ4ˆ	ØÑØˆIØ&ŒNÜ$'¨¨g©Ó$7ˆ	˜‘.Ò!rO   )rö  rŸ  rŠ   )r:   r;   r<   r=   r‹   r  r°  r  r  rî   rN   r9   rO   rP   r�  r�  7  s    † ô òò>ò2ò< õ8rO   r�  c                   ó6   • \ rS rSrS	S jrS rS rS rS rSr	g)
ÚAlternateSubsti   Nc                 ó6   • [        U S5      (       d  0 U l        g g )NÚ
alternates)rì  rÃ  rš   s     rP   r‹   ÚAlternateSubst.populateDefaults¡  s   € Ü�t˜\×*Ñ*Ø ˆD�Oð +rO   c                 ó   • 0 nU R                   S:X  aP  [        US   5      nUS   n[        U5      [        U5      :X  d   e[        XE5       H  u  pgUR                  X6'   M     O SU R                   -  5       eX0l        U ? g )Nr   rê  ÚAlternateSetre  )rö  rf  r°   rG  Ú	AlternaterÃ  )r�   rü  r¶   rÃ  rg  Úaltsrk  Úalts           rP   r  ÚAlternateSubst.postRead¥  s~   € Øˆ
Ø�;‰;˜!ÓÜ/°¸Ñ0DÓEˆEØ˜NÑ+ˆDÜ�u“:¤ T£Ó*Ð*Ð*Ü Ö,‘�Ø"%§-¡-�
“ò -ð 9Ð*¨T¯[©[Ñ8Ó8�1Ø$ŒØ‰KrO   c                 óÜ  • SU l         [        U SS 5      nUc  0 =o l        [        UR	                  5       5      n[        U5       H  u  nu  pVUR                  U5      XV4X4'   M     UR                  5         [        5       nU Vs/ s H  oˆS   PM	     snUl	        / nU Vs/ s H  oˆS   PM	     n	nU	 H$  n[        5       n
Xjl        UR                  U
5        M&     SU l        XrS.$ s  snf s  snf )Nr   rÃ  r  )rê  rÆ  )rö  rÏ   rÃ  rq  r´   r  rË   r  rê  rÖ  rÆ  rÇ  rÌ   ÚsortCoverageLast)r�   r¶   rÃ  r´   r€   r’   r’  rw  rx  ÚsetListrÈ  s              rP   r  ÚAlternateSubst.preWrite²  sè   € ØˆŒÜ˜T <°Ó6ˆ
ØÑØ+-Ð-ˆJœÜ�Z×%Ñ%Ó'Ó(ˆÜ#,¨UÖ#3ÑˆAÑ�	Ø—‘ yÓ1°9ÐAˆE‹Hñ $4à�
‰
ŒÜ‹jˆÙ*/Ó0ª% $˜1”g©%Ñ0ˆŒ
Øˆ
Ù(-Ó.ª ˜”8©ˆÐ.ÛˆCÜ“>ˆDØ ŒNØ×Ñ˜dÖ#ñ ð !"ˆÔØÑ<Ð<ùò 1ùâ.s   ÂC$ÂC)c                 ó4  • [        U R                  R                  5       5      nU Ho  u  pEUR                  SUS9  UR	                  5         U H#  nUR                  SUS9  UR	                  5         M%     UR                  S5        UR	                  5         Mq     g )NrÆ  rÊ  rÇ  )r”  rÃ  r´   rÝ   rÖ   rÕ   rà   )r�   r  r¶   r´   r’   rÃ  rÉ  s          rP   r  ÚAlternateSubst.toXML2Ë  sŠ   € Ü�t—‘×,Ñ,Ó.Ó/ˆÛ%*Ñ!ˆIØ×Ñ˜~°YÐÑ?Ø×ÑÔÛ!�Ø×#Ñ# K°sÐ#Ñ;Ø×!Ñ!Ö#ñ "ð ×Ñ˜^Ô,Ø×ÑÖò &+rO   c                 ó¼   • [        U SS 5      nUc  0 nXPl        US   n/ nXuU'   U H3  n[        U[        5      (       d  M  Uu  pnUR	                  US   5        M5     g )NrÃ  rË  )rÏ   rÃ  rê   r²   rÌ   )	r�   r×   rØ   rì   r¶   rÃ  r’   r’  r”  s	            rP   rî   ÚAlternateSubst.fromXMLÖ  sj   € Ü˜T <°Ó6ˆ
ØÑØˆJØ(ŒOØ˜'‘Nˆ	ØˆØ #�9ÑÛˆGÜ˜g¤u×-Ñ-ÙØ#*Ñ ˆD˜Ø�J‰J�u˜W‘~Ö&ò	 rO   )rö  rÃ  rÌ  rŠ   r  r9   rO   rP   rÁ  rÁ     s   † ô!òò=ò2	 õ'rO   rÁ  c                   óF   • \ rS rSrS
S jrS r\S 5       rS rS r	S r
S	rg)ÚLigatureSubstiå  Nc                 ó6   • [        U S5      (       d  0 U l        g g )NÚ	ligatures)rì  rÖ  rš   s     rP   r‹   ÚLigatureSubst.populateDefaultsæ  r¡  rO   c                 ó  • 0 nU R                   S:X  aR  [        US   5      nUS   n[        U5      [        U5      :X  d   e[        U5       H  u  pgXV   R                  X7'   M     O SU R                   -  5       eX0l        U ? g )Nr   rê  ÚLigatureSetre  )rö  rf  r°   r  ÚLigaturerÖ  )r�   rü  r¶   rÖ  rg  ÚligSetsr€   rk  s           rP   r  ÚLigatureSubst.postReadê  s‚   € Øˆ	Ø�;‰;˜!ÓÜ/°¸Ñ0DÓEˆEØ˜}Ñ-ˆGÜ�u“:¤ W£Ó-Ð-Ð-Ü# EÖ*‘�Ø!(¡×!4Ñ!4�	“ò +ð 9Ð*¨T¯[©[Ñ8Ó8�1Ø"ŒØ‰KrO   c                 ó   • [        U 5      * $ rŠ   rŒ  r  s    rP   Ú_getLigatureSortKeyÚ!LigatureSubst._getLigatureSortKey÷  s   € ô6 �J“ÐÐrO   c                 ó|  • SU l         [        U SS 5      nUc  0 =o l        U(       a­  [        [	        [        U5      5      [        5      (       a†  [        5       n[        UR                  5       U R                  S9 HT  n[        5       nUSS  Ul        [        U5      Ul        X$   Ul        UR!                  US   / 5      R#                  U5        MV     Un[%        UR'                  5       5      n[)        U5       H  u  nu  p‰UR+                  U5      X‰4Xg'   M     UR-                  5         [/        5       n
U Vs/ s H  o»S   PM	     snU
l        / nU Vs/ s H  o»S   PM	     nnU H@  n	[3        5       n/ =oþl        U	 H  nUR#                  U5        M     UR#                  U5        MB     SU l        X¬S.$ s  snf s  snf )Nr   rÖ  r�  r   r  )rê  rÙ  )rö  rÏ   rÖ  rê   ÚnextÚiterr²   rF  r”  r‹  rÞ  rÚ  Ú	Componentr°   Ú	CompCountÚLigGlyphr–  rÌ   rq  r´   r  rË   r  rê  rÖ  rÙ  rÌ  )r�   r¶   rÖ  ÚnewLigaturesÚcompsÚligaturer´   r€   r’   r’  rw  rx  rÛ  rÍ  ÚligSetÚligsÚligs                    rP   r  ÚLigatureSubst.preWrite  s“  € ØˆŒÜ˜D +¨tÓ4ˆ	ØÑØ)+Ð+ˆIœæœ¤D¬¨i«Ó$9¼5×AÑAô
  ›6ˆLÜ 	§¡Ó 0°d×6NÑ6NÔO�Ü#›:�Ø%*¨1¨2 Y�Ô"Ü%(¨£Z�Ô"Ø$-Ñ$4�Ô!Ø×'Ñ'¨¨a©°"Ó5×<Ñ<¸XÖFñ Pð %ˆIä�Y—_‘_Ó&Ó'ˆÜ#,¨UÖ#3ÑˆAÑ�	Ø—‘ yÓ1°9ÐAˆE‹Hñ $4à�
‰
ŒÜ‹jˆÙ*/Ó0ª% $˜1”g©%Ñ0ˆŒ
àˆÙ(-Ó.ª ˜”8©ˆÐ.ÛˆCÜ “]ˆFØ%'Ð'ˆD”?Û�Ø—‘˜CÖ ñ à�N‰N˜6Ö"ñ ð !"ˆÔØÑ8Ð8ùò 1ùò /s   Ä7F4ÅF9c           	      ó|  • [        U R                  R                  5       5      nU H“  u  pEUR                  SUS9  UR	                  5         U HG  nUR                  SUR                  SR                  UR                  5      S9  UR	                  5         MI     UR                  S5        UR	                  5         M•     g )NrÙ  rÊ  rÚ  r+  )rË  r  )
r”  rÖ  r´   rÝ   rÖ   rÕ   rå  r/  rã  rà   )r�   r  r¶   r´   r’   rÛ  rë  s          rP   r  ÚLigatureSubst.toXML2=  s¤   € Ü�t—~‘~×+Ñ+Ó-Ó.ˆÛ"'ÑˆIØ×Ñ˜}°IÐÑ>Ø×ÑÔÛ�Ø×#Ñ#Ø c§l¡l¸s¿x¹xÈÏÉÓ?Vð $ñ ð ×!Ñ!Ö#ñ	 ð
 ×Ñ˜]Ô+Ø×ÑÖò #(rO   c                 óZ  • [        U SS 5      nUc  0 nXPl        US   n/ nXuU'   U H‚  n[        U[        5      (       d  M  Uu  pn[	        5       n	US   U	l        US   n
U
(       a  U
R                  S5      O/ U	l        [        U	R                  5      U	l	        UR                  U	5        M„     g )NrÖ  rË  r  r+  )rÏ   rÖ  rê   r²   rÚ  rå  rZ  rã  r°   rä  rÌ   )r�   r×   rØ   rì   r¶   rÖ  r’   rê  r”  rë  r  s              rP   rî   ÚLigatureSubst.fromXMLJ  s¨   € Ü˜D +¨tÓ4ˆ	ØÑØˆIØ&ŒNØ˜'‘Nˆ	ØˆØ#�)ÑÛˆGÜ˜g¤u×-Ñ-ÙØ#*Ñ ˆD˜Ü“*ˆCØ  ™>ˆCŒLØ˜|Ñ,ˆJÞ5?˜J×,Ñ,¨SÔ1ÀRˆCŒMÜ §¡Ó.ˆCŒMØ�K‰K˜Öò rO   )rö  rÖ  rÌ  rŠ   )r:   r;   r<   r=   r‹   r  r7  rÞ  r  r  rî   rN   r9   rO   rP   rÔ  rÔ  å  s0   † ô òð ñ ó ð ò8'9òR õrO   rÔ  c                   ó6   • \ rS rSrS rS rS
SSS\4S jjrSrg	)ÚCOLRi^  c                 ó$  • UR                  SS9nU R                  5        HL  nUR                  S:w  a  UR                  UR                  5        M0  UR                  X20 S9XR                  '     O   [        S5      e[        R                  " XU5      $ )Nr   )ÚoffsetÚLayerRecordCount)Ú	tableDictz$LayerRecordCount converter not found)	r¦  ÚgetConvertersr×   Úadvancerb  ÚreadÚAssertionErrorr   rÁ   )r�   rQ  r¶   Ú	subReaderÚconvs        rP   rÁ   ÚCOLR.decompile_  s‰   € ð ×'Ñ'¨qÐ'Ð1ˆ	Ø×&Ñ&Ö(ˆDØ�y‰yÐ.Ó.Ø×!Ñ! $§/¡/Ô2ÙØ $§	¡	¨)ÀR 	Ð HˆF—9‘9ÑÙñ )ô !Ð!GÓHÐHÜ×"Ò" 4°Ó6Ð6rO   c                 ó\   • S U l         0 U R                  ES[        U R                  S5      0E$ )Nrõ  )rõ  rú   r   ©r�   r¶   s     rP   r  ÚCOLR.preWritep  s8   € ð !%ˆÔð
Ø�m‰mð
à¤¨t¯}©}Ð>PÓ Qñ
ð 	
rO   ÚglyphSetr(   Úquantizationc                 ó   • U R                   S:X  a  g 0 nU R                  R                   H3  n UR                  R	                  XU5      nUc  M%  XSUR                  '   M5     [        U S5      =(       a    U R                  S LnU(       d  U(       a  S U l
        g g U(       d   [        5       U l
        SU R                  l        X0R                  l        g ! [
         a"  nSSKJn  U" SUR                  < 35      UeS nAff = f)Nr   )Ú
TTLibErrorz#Failed to compute COLR ClipBox for ÚClipListr   )ÚVersionÚBaseGlyphListÚBaseGlyphPaintRecordÚPaintÚcomputeClipBoxÚ	ExceptionÚfontTools.ttLibr  Ú	BaseGlyphrì  r  rö  Úclips)	r�   r  r  r  r«  ÚclipBoxÚer  ÚhasClipLists	            rP   ÚcomputeClipBoxesÚCOLR.computeClipBoxesz  sá   € Ø�<‰<˜1ÓØàˆØ×%Ñ%×:Ô:ˆCðØŸ)™)×2Ñ2°4À<ÓP�ð Ó"Ø'.�c—m‘mÓ$ñ ;ô ˜d JÓ/×M°D·M±MÈÐ4MˆÞÞØ $�•ð ö Ü (£
�”Ø'(�—‘Ô$Ø"'�M‰MÕøô% ó Ý6á Ø9¸#¿-¹-Ñ9JÐKóàðûðús   ®CÃ
C=ÃC8Ã8C=)r  rõ  N©r   )	r:   r;   r<   r=   rÁ   r  r“  r  rN   r9   rO   rP   rò  rò  ^  s$   † ò7ò"
ñ(¨ð (Àc÷ (ð (rO   rò  c                   ó8   ^ • \ rS rSr\S 5       rU 4S jrSrU =r$ )Ú
LookupListi—  c                 ó
  • U R                    Hn  nUR                   H[  n[        U5      R                  R	                  S5      (       a      g[        U5      R                  R	                  S5      (       d  MZ      g   Mp     [
        e)NÚSubstÚGSUBÚPosÚGPOS)ÚLookupÚSubTablerø   r:   ÚendswithÚ
ValueError)r�   ÚlÚsts      rP   ÚtableÚLookupList.table˜  sb   € à—”ˆAØ—j”j�Ü˜“8×$Ñ$×-Ñ-¨g×6Ñ6Ú!Ü˜“8×$Ñ$×-Ñ-¨e×4Ó4Ú!ó	 !ñ ô ÐrO   c           
      ó¸  >• U(       a  SU;  d  [         US   R                  ;  a  [        TU ]  X5      $ US   R                  [            U R                     nU R                  5        GHn  nUR                  (       aí  [        XR                  / 5      n[        U5       HÅ  u  pg[        U5      U;   a‘  [        U[        U5         6 nUR                  n	UR                  (       a  UR                   SU	 3n	UR                  (       a  UR                  u  p«nU	 SU SU
 SU S3n	UR                  U	5        UR                  5         UR!                  XXtR                  SU4/5        MÇ     GM  UR"                  (       a(  [%        UR"                  S ['        U 5      5      (       d  GM;  [        XR                  S 5      nUR!                  XXTR                  / 5        GMq     g )NÚDebgz: z in z (Ú/Ú)r  )r!   r   Úsuperr  r"  r÷  ÚrepeatrÏ   r×   r  Ústrr    ÚlocationÚfeaturerV  rÖ   ÚxmlWriteÚauxÚevalÚvars)r�   r  r¶   Ú	debugDatarü  r¾   ÚlookupIndexrx  ÚinfoÚtagÚscriptÚlanguager,  rÝ  s                €rP   r  ÚLookupList.toXML2¢  s…  ø€ æØ˜TÓ!Ü$¨D°©L×,=Ñ,=Ó=ä‘7‘> )Ó2Ð2Ø˜‘L×%Ñ%Ô&;Ñ<¸T¿Z¹ZÑHˆ	Ø×&Ñ&×(ˆDØ�{�{Ü §i¡i°Ó4�Ü)2°5Ö)9Ñ%�KÜ˜;Ó'¨9Ó4Ü.°	¼#¸kÓ:JÑ0KÐL˜Ø"Ÿm™m˜ØŸ9Ÿ9Ø%)§Y¡Y K¨r°#°Ð"7˜CØŸ<Ÿ<Ø8<¿¹Ñ5˜F¨gØ%( E¨¨g¨Y°b¸¸ÀÀ(ÀÈ1Ð"M˜CØ!×)Ñ)¨#Ô.Ø!×)Ñ)Ô+à—M‘MØ!¨¯y©y¸GÀ[Ð;QÐ:Röô *:ð  —8—8¤D¨¯©°4¼¸d»×$DÑ$DÚÜØŸ)™) Tó�ð —‘˜i¨u·i±iÀ×Dò1 )rO   r9   )	r:   r;   r<   r=   Úpropertyr"  r  rN   Ú__classcell__)rÝ  s   @rP   r  r  —  s!   ø† Øñó ð÷ Eó  ErO   r  c                   ó   • \ rS rSrS rSrg)ÚBaseGlyphRecordArrayiÅ  c                 ór   ^• [        U R                  U4S jS9U l        U R                  R                  5       $ )Nc                 ó:   >• TR                  U R                  5      $ rŠ   ©rË   r  ©r«  r¶   s    €rP   ri   Ú/BaseGlyphRecordArray.preWrite.<locals>.<lambda>È  s   ø€ °$·/±/À#Ç-Á-Ô2PrO   r�  )r”  ÚBaseGlyphRecordrú   r1  rÿ  s    `rP   r  ÚBaseGlyphRecordArray.preWriteÆ  s1   ø€ Ü%Ø× Ñ Ô&Pñ 
ˆÔð �}‰}×!Ñ!Ó#Ð#rO   )rA  Nr[  r9   rO   rP   r;  r;  Å  ó   † õ$rO   r;  c                   ó   • \ rS rSrS rSrg)r  iÍ  c                 ór   ^• [        U R                  U4S jS9U l        U R                  R                  5       $ )Nc                 ó:   >• TR                  U R                  5      $ rŠ   r>  r?  s    €rP   ri   Ú(BaseGlyphList.preWrite.<locals>.<lambda>Ð  s   ø€ °t·±ÀsÇ}Á}Ô7UrO   r�  )r”  r  rú   r1  rÿ  s    `rP   r  ÚBaseGlyphList.preWriteÎ  s1   ø€ Ü$*Ø×%Ñ%Ô+Uñ%
ˆÔ!ð �}‰}×!Ñ!Ó#Ð#rO   )r  Nr[  r9   rO   rP   r  r  Í  rC  rO   r  c                   ó(   • \ rS rSrSrSrS rS rSrg)ÚClipBoxFormatiÕ  r   r,   c                 ó   • X R                   L $ rŠ   ©ÚVariablerŒ   s    rP   Úis_variableÚClipBoxFormat.is_variableÙ  s   € Ø—}‘}Ð$Ð$rO   c                 ó   • U R                   $ rŠ   rL  rŒ   s    rP   Úas_variableÚClipBoxFormat.as_variableÜ  s   € Ø�}‰}ÐrO   r9   N)	r:   r;   r<   r=   ÚStaticrM  rN  rQ  rN   r9   rO   rP   rJ  rJ  Õ  s   † Ø€FØ€Hò%õrO   rJ  c                   ó$   • \ rS rSr\rS rS rSrg)ÚClipBoxià  c                 óJ   ^ • [        U 4S jT R                  5        5       5      $ )Nc              3   óP   >#   • U  H  n[        TUR                  5      v •  M     g 7frŠ   )rÏ   r×   )r¤   rü  r�   s     €rP   r¥   Ú#ClipBox.as_tuple.<locals>.<genexpr>ä  s!   øé € ÐOÒ:N°$”W˜T 4§9¡9×-Ð-Ò:Nùs   ƒ#&)r²   r÷  rŒ   s   `rP   Úas_tupleÚClipBox.as_tupleã  s   ø€ ÜÔO¸$×:LÑ:LÔ:NÓOÓOÐOrO   c                 óR   • U R                   R                   U R                  5        3$ rŠ   )rÝ  r:   rY  rŒ   s    rP   Ú__repr__ÚClipBox.__repr__æ  s#   € Ø—.‘.×)Ñ)Ð*¨4¯=©=«?Ð*;Ð<Ð<rO   r9   N)	r:   r;   r<   r=   rJ  Ú
formatEnumrY  r\  rN   r9   rO   rP   rU  rU  à  s   † Ø€JòPõ=rO   rU  c                   ó@   • \ rS rSrS
S jrS rS rS rSS jrS r	S	r
g)r  iê  Nc                 ó6   • [        U S5      (       d  0 U l        g g )Nr  )rì  r  rš   s     rP   r‹   ÚClipList.populateDefaultsë  s   € Ü�t˜W×%Ñ%ØˆD�Jð &rO   c           	      óÜ  • 0 nUR                  5       n[        US   5       GH  u  pVUR                  UR                  :”  a.  [        R                  SUUR                  UR                  5        MN  / n/ n[        UR                  UR                  S-   5       HB  n	 XI   n
X£;  a$  [        R                  " UR                  5      X:'   M1  UR                  U	5        MD     U(       a*  [        R                  SU[        U5      [        U5      5        U(       d  Mõ  [        R                  SU[        U5      [        U5      5        GM"     X0l        g ! [         a    UR                  U	5         MÔ  f = f)NÚ
ClipRecordzCinvalid ClipRecord[%i].StartGlyphID (%i) > EndGlyphID (%i); skippedr   zqClipRecord[%i] overlaps previous records; ignoring redefined clip boxes for the following glyph ID range: [%i-%i]z:ClipRecord[%i] range references missing glyph IDs: [%i-%i])rE  r  ÚStartGlyphIDÚ
EndGlyphIDr÷  rø  r•  Ú
IndexErrorrÌ   r1  rU  Úminr'  r  )r�   rü  r¶   r  r®   r€   r«  ÚredefinedGlyphsÚmissingGlyphsr¹   rË  s              rP   r  ÚClipList.postReadï  sG  € ØˆØ×'Ñ'Ó)ˆ
Ü ¨Ñ 6×7‰FˆAØ×Ñ #§.¡.Ó0Ü—‘ð/àØ×$Ñ$Ø—N‘Nôñ Ø ˆOØˆMÜ  ×!1Ñ!1°3·>±>ÀAÑ3EÖF�ðØ&Ñ/�Eð Ó%Ü#'§9¢9¨S¯[©[Ó#9�E“Là#×*Ñ*¨7Ö3ñ Gö Ü—‘ð8ð Ü˜Ó(Ü˜Ó(ô÷ ˆ}Ü—‘ØSØÜ˜Ó&Ü˜Ó&÷	ñA 8ðL �
øô/ "ó Ø!×(Ñ(¨Ô1Úðús   ÂEÅE+Å*E+c                 ó4  • [        [        5      n0 nU R                  R                  5        H3  u  p4UR	                  5       nX   R                  U5        XR;  d  M/  XBU'   M5     UR                  5        VVs0 s H  u  pV[        U5      X%   _M     snn$ s  snnf rŠ   )r   rq  r  r´   rY  rÌ   Ú	frozenset)r�   ÚglyphsByClipÚuniqueClipsr’   r  r‘  rÖ  s          rP   ÚgroupsÚClipList.groups  s–   € Ü"¤4Ó(ˆØˆØ"&§*¡*×"2Ñ"2Ö"4ÑˆIØ×"Ñ"Ó$ˆCØÑ×$Ñ$ YÔ/ØÕ%Ø#*˜CÓ ñ	 #5ð DP×CUÑCUÔCWô
ÚCW±K°CŒI�fÓ˜{Ñ/Ò/ÑCWò
ð 	
ùó 
s   Á6Bc                 óŽ  ^• [        U S5      (       d  0 U l        0 nUR                  5       mU R                  5       R	                  5        H•  u  p4[        U4S jU 5       5      nU(       d  M#  US   nU//nUSS   H3  nX†S-   :w  a&  US   R                  U5        UR                  U/5        UnM5     US   R                  U5        U H  u  pšXš4U;  d   eXBXš4'   M     M—     / n[        UR	                  5       5       H5  u  u  pšn[        5       nXœl        X¬l	        XLl
        UR                  U5        M7     [        U5      US.nU$ )Nr  c              3   ó<   >#   • U  H  oT;   d  M
  TU   v •  M     g 7frŠ   r9   )r¤   r’   ÚglyphMaps     €rP   r¥   Ú$ClipList.preWrite.<locals>.<genexpr>,  s!   øé € ð Ú5;¨	ÈHÑ?TÓ#�˜Ö#²Vùs   ƒ	�r   r   r  )Ú	ClipCountrc  )rì  r  ÚgetReverseGlyphMapro  r´   r”  rÌ   rc  rd  re  rU  r°   )r�   r¶   ÚclipBoxRangesrÖ  r  r  r£  rý  r¹   rÓ  r   ÚclipRecordsÚrecordrü  rs  s                 @rP   r  ÚClipList.preWrite&  sW  ø€ Ü�t˜W×%Ñ%ØˆDŒJØˆØ×*Ñ*Ó,ˆØ#Ÿ{™{›}×2Ñ2Ö4‰OˆFÜô Ù5;óó ˆHö ÙØ˜A‘;ˆDØ�f�XˆFØ# A B›<�Ø Q™hÓ&Ø˜2‘J×%Ñ% dÔ+Ø—M‘M 7 )Ô,Ø’ñ	 (ð
 �2‰J×Ñ˜dÔ#Û$‘
�Ø�|¨=Ó8Ð8Ð8Ø.5˜u˜lÓ+ó %ñ  5ð$ ˆÜ%+¨M×,?Ñ,?Ó,AÖ%BÑ!‰LˆU˜'Ü“\ˆFØ"'ÔØ #ÔØ$ŒNØ×Ñ˜vÖ&ñ &Cô ˜[Ó)Ø%ñ
ˆð ˆrO   c                 ó6  • U(       a  UOU R                   R                  nUc  / n[        U S5      (       a  UR                  SU R                  45        UR                  XS5        UR                  5         [        U R                  5       R                  5       S S9 HÚ  u  pgUR                  S5        UR                  5         [        U5       H#  nUR                  SUS9  UR                  5         M%     UR                  SSUR                  4/5        UR                  5         UR                  X5        UR                  S5        UR                  5         UR                  S5        UR                  5         MÜ     UR                  U5        UR                  5         g )Nrö  c                 ó   • [        U S   5      $ )Nr   )rg  )rx  s    rP   ri   Ú ClipList.toXML.<locals>.<lambda>T  s   € ´C¸¸Q¹´LrO   r�  ÚClipr  r,  rU  )rÝ  r:   rì  rÌ   rö  rÝ   rÖ   r”  ro  r´   rÕ   r  rà   )	r�   r  r¶   rØ   r×   Ú	tableNamerÖ  r  r’   s	            rP   rã   ÚClipList.toXMLJ  sP  € Þ ‘D d§n¡n×&=Ñ&=ˆ	Ø‰=ØˆEÜ�4˜×"Ñ"Ø�L‰L˜( D§K¡KÐ0Ô1Ø×Ñ˜9Ô,Ø×ÑÔä%Ø�K‰K‹M×ÑÓ!Ñ'@ô 
‰OˆFð ×Ñ˜vÔ&Ø×ÑÔÜ# Fž^�	Ø×#Ñ# G°9Ð#Ñ=Ø×!Ñ!Ö#ñ ,ð ×Ñ˜y¨H°g·n±nÐ+EÐ*FÔGØ×ÑÔØ�N‰N˜9Ô+Ø×Ñ˜YÔ'Ø×ÑÔØ×Ñ˜VÔ$Ø×ÑÖñ 
ð 	×Ñ˜Ô#Ø×ÑÕrO   c                 ó²  • [        U SS 5      nUc	  0 =U l        nUS:X  d   e/ nS nU H—  n[        U[        5      (       d  M  Uu  pnUS:X  a  UR	                  US   5        M;  US:X  d  MC  [        5       n[        US   5      Ul        U H1  n[        U[        5      (       d  M  Uu  pnUR                  XX45        M3     M™     U(       a  U H  n	XuU	'   M	     g g )Nr  r~  r  r¾   rU  rö  )	rÏ   r  rê   r²   rÌ   rU  r   rö  rî   )
r�   r×   rØ   rì   r¶   r  rÖ  r  Úelemr’   s
             rP   rî   ÚClipList.fromXMLe  sß   € Ü˜˜g tÓ,ˆØ‰=Ø!#Ð#ˆDŒJ˜Ø�v‹~Ðˆ~ØˆØˆÛˆDÜ˜d¤E×*Ñ*ÙØ#'Ñ ˆD˜Ø�w‹Ø—‘˜e G™nÖ-Ø˜Õ"Ü!›)�Ü!)¨%°©/Ó!:�”Û#�DÜ% d¬E×2Ñ2Ù Ø+/Ñ(�D Ø—O‘O D°Ö?ó	 $ñ ö Û#�	Ø#*�iÓ ò $ð rO   )r  rŠ   r%  )r:   r;   r<   r=   r‹   r  ro  r  rã   rî   rN   r9   rO   rP   r  r  ê  s"   † ôò)òV

ò"ôHõ6+rO   r  c                   ó    • \ rS rSrSrSrSrSrg)Ú
ExtendModei  r   r   r,   r9   N)r:   r;   r<   r=   ÚPADÚREPEATÚREFLECTrN   r9   rO   rP   r…  r…    s   † Ø
€CØ€FØƒGrO   r…  c                   ó„   • \ rS rSrSrSrSrSrSrSr	Sr
S	rS
rSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSr g) ÚCompositeModei‡  r   r   r,   rp   r-   r~   r=  r>  r.   r?  rX   r@  rV   rA  r¡   rB  r/   é   é   é   é   é   é   é   r}   é   é   é   r9   N)!r:   r;   r<   r=   ÚCLEARÚSRCÚDESTÚSRC_OVERÚ	DEST_OVERÚSRC_INÚDEST_INÚSRC_OUTÚDEST_OUTÚSRC_ATOPÚ	DEST_ATOPÚXORÚPLUSÚSCREENÚOVERLAYÚDARKENÚLIGHTENÚCOLOR_DODGEÚ
COLOR_BURNÚ
HARD_LIGHTÚ
SOFT_LIGHTÚ
DIFFERENCEÚ	EXCLUSIONÚMULTIPLYÚHSL_HUEÚHSL_SATURATIONÚ	HSL_COLORÚHSL_LUMINOSITYrN   r9   rO   rP   rŠ  rŠ  ‡  sŽ   † Ø€EØ
€CØ€DØ€HØ€IØ€FØ€GØ€GØ€HØ€HØ€IØ
€CØ€DØ€FØ€GØ€FØ€GØ€KØ€JØ€JØ€JØ€JØ€IØ€HØ€GØ€NØ€IØƒNrO   rŠ  c                   ó    • \ rS rSrSrSrSrSrSrSr	Sr
S	rS
rSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSr Sr!S r"S!r#S" r$S# r%S$r&g%)&ÚPaintFormati¦  r   r,   rp   r-   r~   r=  r>  r.   r?  rX   r@  rV   rA  r¡   rB  r/   r‹  rŒ  r�  rŽ  r�  r�  r‘  r}   r’  r“  r”  é   é   é   rÂ  r0   c                 ó8   • U R                   R                  S5      $ )NÚPaintVar)r×   Ú
startswithrŒ   s    rP   rN  ÚPaintFormat.is_variableÈ  s   € Ø�y‰y×#Ñ# JÓ/Ð/rO   c                 ó˜   • U R                  5       (       a  U $  [        R                  SU R                  SS   3   $ ! [         a     g f = f)Nr·  r~   )rN  r²  Ú__members__r×   ÚKeyErrorrŒ   s    rP   rQ  ÚPaintFormat.as_variableË  sO   € Ø×Ñ×ÑØˆKð	Ü×*Ñ*¨X°d·i±iÀÀ°m°_Ð+EÑFÐFøÜó 	Ùð	ús   ™"< ¼
A	ÁA	r9   N)'r:   r;   r<   r=   ÚPaintColrLayersÚ
PaintSolidÚPaintVarSolidÚPaintLinearGradientÚPaintVarLinearGradientÚPaintRadialGradientÚPaintVarRadialGradientÚPaintSweepGradientÚPaintVarSweepGradientÚ
PaintGlyphÚPaintColrGlyphÚPaintTransformÚPaintVarTransformÚPaintTranslateÚPaintVarTranslateÚ
PaintScaleÚPaintVarScaleÚPaintScaleAroundCenterÚPaintVarScaleAroundCenterÚPaintScaleUniformÚPaintVarScaleUniformÚPaintScaleUniformAroundCenterÚ PaintVarScaleUniformAroundCenterÚPaintRotateÚPaintVarRotateÚPaintRotateAroundCenterÚPaintVarRotateAroundCenterÚ	PaintSkewÚPaintVarSkewÚPaintSkewAroundCenterÚPaintVarSkewAroundCenterÚPaintCompositerN  rQ  rN   r9   rO   rP   r²  r²  ¦  s¾   † Ø€OØ€JØ€MØÐØÐØÐØÐØÐØÐØ€JØ€NØ€NØÐØ€NØÐØ€JØ€MØÐØ "ÐØÐØÐØ$&Ð!Ø')Ð$Ø€KØ€NØ ÐØ!#ÐØ€IØ€LØÐØ!ÐØ€Nò0õrO   r²  c            
       óª   • \ rS rSr\rS rSS jrS\S\	\
R                     4S jrS\S    4S jrS\4S	 jrS\4S
 jr SS\SSS\S\\   4S jjrSrg)r	  iÔ  c                 óš   •  U R                  U R                  5      R                  $ ! [         a    [	        SU R                   35      ef = f)NzUnknown Paint format: )r^  rö  r×   r  ÚNotImplementedErrorrŒ   s    rP   ÚgetFormatNameÚPaint.getFormatName×  sI   € ð	NØ—?‘? 4§;¡;Ó/×4Ñ4Ð4øÜó 	NÜ%Ð(>¸t¿{¹{¸mÐ&LÓMÐMð	Nús	   ‚$' §#A
Nc                 ój  • U(       a  UOU R                   R                  nUc  / nUR                  SU R                  45        UR	                  XS5        UR                  U R                  5       5        UR                  5         U R                  X5        UR                  U5        UR                  5         g )Nrö  )
rÝ  r:   rÌ   rö  rÝ   rV  rá  rÖ   r  rà   )r�   r  r¶   rØ   r×   r  s         rP   rã   ÚPaint.toXMLÝ  s‹   € Þ ‘D d§n¡n×&=Ñ&=ˆ	Ø‰=ØˆEØ�‰�h §¡Ð,Ô-Ø×Ñ˜9Ô,Ø×Ñ˜$×,Ñ,Ó.Ô/Ø×ÑÔØ�‰�IÔ$Ø×Ñ˜Ô#Ø×ÑÕrO   ÚcolrÚreturnc              #   ó:  #   • U R                   [        R                  :X  ac  / nUR                  b  UR                  R                  nS [        X R                  U R                  U R                  -    5       5        S h  v•N   g U R                   [        R                  :X  as  UR                  R                   H@  nUR                  U R                  :X  d  M  [        R                  " SUR                  S9v •    g    [        U R                  < S35      eU R!                  5        Hn  nUR"                  c  M  [%        UR"                  ['        U 5      5      (       d  M8  [)        XR*                  5      n[        R                  " UR*                  US9v •  Mp     g  GN7f)Nc              3   óP   #   • U  H  u  p[         R                  " S X!S9v •  M     g7f)ÚLayers)r×   r¾   r  N)r   ÚSubTableEntry)r¤   r€   rh   s      rP   r¥   Ú+Paint.iterPaintSubTables.<locals>.<genexpr>ï  s*   é € ð ò‘D�Aô ×'Ò'¨X¸QÖHòùs   ‚$&r  )r×   r¾   z not in colr.BaseGlyphList)rö  r²  r¾  Ú	LayerListr	  r  ÚFirstLayerIndexÚ	NumLayersrÈ  r  r  r  r  r   rê  r¼  r÷  Ú
tableClassÚ
issubclassrø   rÏ   r×   )r�   rå  Úlayersry  rü  r¾   s         rP   ÚiterPaintSubTablesÚPaint.iterPaintSubTablesé  s=  é € Ø�;‰;œ+×5Ñ5Ó5àˆFØ�~‰~Ñ)ØŸ™×-Ñ-�ñä%Ø×/Ñ/°$×2FÑ2FÈÏÉÑ2WÐXôó÷ ð ð à�;‰;œ+×4Ñ4Ó4Ø×,Ñ,×AÔA�Ø×#Ñ# t§z¡zÕ1Ü#×1Ò1°{È&Ï,É,ÑWÒWÙñ Bô
  $§*¡*¡Ð/IÐJÓKÐKà×&Ñ&Ö(ˆDØ�‰Ó*¬z¸$¿/¹/Ì4ÐPTË:×/VÓ/VÜ §i¡iÓ0�Ü×-Ò-°4·9±9ÀEÑJÔJò )ò!ùs&   ‚A<FÁ>FÁ?AFÃAFÄ7"FÅ<Fc                 ób   • U R                  U5       Vs/ s H  o"R                  PM     sn$ s  snf rŠ   )rò  r¾   )r�   rå  Úps      rP   ÚgetChildrenÚPaint.getChildren  s)   € à!%×!8Ñ!8¸Ô!>Ó?Ò!>˜A—”Ñ!>Ñ?Ð?ùÒ?s   ”,c                 ó”   ^• [        U5      (       d  [        S5      e[        U U4S jS9 H  nUS   R                  nU" U5        M     g)zEDepth-first traversal of graph rooted at self, callback on each node.zcallback must be callablec                 ó&   >• U R                  T5      $ rŠ   ©rò  ©Úpaintrå  s    €rP   ri   Ú Paint.traverse.<locals>.<lambda>  ó   ø€ °%×2JÑ2JÈ4Ô2PrO   ©Úiter_subtables_fnr  N)ÚcallableÚ	TypeErrorr
   r¾   )r�   rå  ÚcallbackÚpathrü  s    `   rP   ÚtraverseÚPaint.traverse  sE   ø€ ä˜×!Ñ!ÜÐ7Ó8Ð8ä"ØÔ$Pô
ˆDð ˜‘H—N‘NˆEÙ�UŽOò	
rO   c                 ó	  • U R                   [        R                  :X  aX  U R                  n[        UR                  UR
                  UR                  UR                  UR                  UR                  5      $ U R                   [        R                  :X  a+  [        R                  " U R                  U R                  5      $ U R                   [        R                  :X  a+  [        R                  " U R                  U R                   5      $ U R                   [        R"                  :X  au  [        R                  " U R$                  U R&                  5      R                  U R                  U R                   5      R                  U R$                  * U R&                  * 5      $ U R                   [        R(                  :X  a   [        R                  " U R                  5      $ U R                   [        R*                  :X  aj  [        R                  " U R$                  U R&                  5      R                  U R                  5      R                  U R$                  * U R&                  * 5      $ U R                   [        R,                  :X  a)  [        R.                  " [1        U R2                  5      5      $ U R                   [        R4                  :X  as  [        R                  " U R$                  U R&                  5      R/                  [1        U R2                  5      5      R                  U R$                  * U R&                  * 5      $ U R                   [        R6                  :X  a>  [        R8                  " [1        U R:                  * 5      [1        U R<                  5      5      $ U R                   [        R>                  :X  aˆ  [        R                  " U R$                  U R&                  5      R9                  [1        U R:                  * 5      [1        U R<                  5      5      R                  U R$                  * U R&                  * 5      $ [        U R                   5      RA                  5       (       a  [C        SU R                    35      e[        $ )NzVariable Paints not supported: )"rö  r²  rÉ  r   ÚxxÚyxÚxyÚyyÚdxÚdyrË  r   Ú	translaterÍ  rT   r\   r]   rÏ  ÚcenterXÚcenterYrÑ  rÓ  rÕ  Úrotater   Úangler×  rÙ  ÚskewÚ
xSkewAngleÚ
ySkewAnglerÛ  rN  rà  )r�   r]  s     rP   ÚgetTransformÚPaint.getTransform  s×  € Ø�;‰;œ+×4Ñ4Ó4Ø—‘ˆAÜ˜QŸT™T 1§4¡4¨¯©¨q¯t©t°Q·T±T¸1¿4¹4Ó@Ð@Ø�[‰[œK×6Ñ6Ó6Ü×%Ò% d§g¡g¨t¯w©wÓ7Ð7Ø�[‰[œK×2Ñ2Ó2Ü—>’> $§+¡+¨t¯{©{Ó;Ð;Ø�[‰[œK×>Ñ>Ó>ä×"Ò" 4§<¡<°·±Ó>ß‘�t—{‘{ D§K¡KÓ0ß‘˜DŸL™L˜=¨4¯<©<¨-Ó8ðð
 �[‰[œK×9Ñ9Ó9Ü—>’> $§*¡*Ó-Ð-Ø�[‰[œK×EÑEÓEä×"Ò" 4§<¡<°·±Ó>ß‘�t—z‘zÓ"ß‘˜DŸL™L˜=¨4¯<©<¨-Ó8ðð
 �[‰[œK×3Ñ3Ó3Ü—?’?¤7¨4¯:©:Ó#6Ó7Ð7Ø�[‰[œK×?Ñ?Ó?ä×"Ò" 4§<¡<°·±Ó>ß‘œ §
¡
Ó+Ó,ß‘˜DŸL™L˜=¨4¯<©<¨-Ó8ðð
 �[‰[œK×1Ñ1Ó1Ü—=’=¤¨$¯/©/Ð)9Ó!:¼GÀDÇOÁOÓ<TÓUÐUØ�[‰[œK×=Ñ=Ó=ä×"Ò" 4§<¡<°·±Ó>ß‘”g˜tŸ™Ð.Ó/´¸¿¹Ó1IÓJß‘˜DŸL™L˜=¨4¯<©<¨-Ó8ðô
 �t—{‘{Ó#×/Ñ/×1Ñ1Ü%Ð(GÈÏÉÀ}Ð&UÓVÐVäˆrO   r  r(   r  c                 ó  ^• [        U5      n[        U U4S jS9 H~  nUS   R                  nUR                  [        R
                  :X  d  M2  [        [        R                  S U 5       [        5      nX&R                     R                  [        XG5      5        M€     UR                  c  g [        5       n[        [         R"                  5      Ul        [%        UR                  U5      u  Ul        Ul        Ul        Ul        U$ )Nc                 ó&   >• U R                  T5      $ rŠ   rú  rû  s    €rP   ri   Ú&Paint.computeClipBox.<locals>.<lambda>C  rþ  rO   rÿ  r  c              3   óT   #   • U  H  oR                   R                  5       v •  M      g 7frŠ   )r¾   r  )r¤   r!  s     rP   r¥   Ú'Paint.computeClipBox.<locals>.<genexpr>I  s   é € Ð<²t°—X‘X×*Ñ*×,Ð,²tùs   ‚&()r   r
   r¾   rö  r²  rÇ  r   r   r™   r   r  Údrawr   ÚboundsrU  r“  rJ  rS  r   ÚxMinÚyMinÚxMaxÚyMax)	r�   rå  r  r  Úpenr  rü  ÚtransformationÚcbs	    `       rP   r
  ÚPaint.computeClipBox>  sÍ   ø€ ô ˜xÓ(ˆÜ"ØÔ$Pô
ˆDð ˜‘H—N‘NˆEØ�|‰|œ{×5Ñ5Õ5Ü!'Ü×'Ñ'Ù<±tÓ<Üó"�ð
 Ÿ™Ñ%×*Ñ*¬<¸Ó+LÖMñ
ð �:‰:ÑØä‹YˆÜœ×,Ñ,Ó-ˆŒ	Ü-9¸#¿*¹*ÀlÓ-SÑ*ˆŒ�”˜"œ' 2¤7Øˆ	rO   r9   r%  r  )r:   r;   r<   r=   r²  r^  rá  rã   rò  r$   r   rê  rò  r%   rö  r  r   r  r“  r&   rU  r
  rN   r9   rO   rP   r	  r	  Ô  s”   † Ø€JòNô
ðK tð K°¸×9PÑ9PÑ0Qô Kð6@ 4¨¡=ô @ð	˜Tô 	ð)˜iô )ðX HIñØðØ$1ðØADðà	�'Ñ	÷ð rO   r	  )Ú
Mark1Array)ÚDefaultLangSys)ÚMarkCoverageÚBaseCoverageÚLigatureCoverageÚMark1CoverageÚMark2CoverageÚBacktrackCoverageÚInputCoverageÚLookAheadCoverageÚVertGlyphCoverageÚHorizGlyphCoverageÚTopAccentCoverageÚExtendedShapeCoverageÚMathKernCoverage)Ú	ClassDef1Ú	ClassDef2ÚBacktrackClassDefÚInputClassDefÚLookAheadClassDefÚGlyphClassDefÚMarkAttachClassDef)ÚEntryAnchorÚ
ExitAnchorÚ
BaseAnchorÚLigatureAnchorÚMark2AnchorÚ
MarkAnchor)Ú
XPlaDeviceÚ
YPlaDeviceÚ
XAdvDeviceÚ
YAdvDeviceÚXDeviceTableÚYDeviceTableÚDeviceTable)Ú	HorizAxisÚVertAxis)ÚDefaultMinMax)ÚMinCoordÚMaxCoord)ÚDefJstfLangSys)ÚShrinkageEnableGSUBÚShrinkageDisableGSUBÚExtensionEnableGSUBÚExtensionDisableGSUB)ÚShrinkageEnableGPOSÚShrinkageDisableGPOSÚExtensionEnableGPOSÚExtensionDisableGPOS)ÚShrinkageJstfMaxÚExtensionJstfMax)ÚTopRightMathKernÚTopLeftMathKernÚBottomRightMathKernÚBottomLeftMathKern)ÚVertGlyphConstructionÚHorizGlyphConstruction)Ú	MarkArrayÚLangSysrê  r�  ÚAnchorÚDeviceÚAxisÚMinMaxÚ	BaseCoordÚJstfLangSysÚJstfGSUBModListÚJstfGPOSModListÚJstfMaxÚMathKernÚMathGlyphConstructionc                 óâ  • SnUR                   nUR                  c  US-
  nUS:  a  U$ UR                  S:X  a  SnOUR                  S:X  a  SnXR                     R                  R                  R
                  nXS   nUR                  S   R                  R                  W:X  a:  US-
  nUS:  a  U$ XS   nUR                  S   R                  R                  U:X  a  M:  [        U[        U5      5       Hu  nXS   nUR                  U:w  d  M  XFl        [        UR                  5       H=  u  px[        UR                     U   n	U	" 5       n
SU
l        XŠl        X¦R                  U'   M?     Mw     SnU$ )aË  Either the offset from the LookupList to a lookup overflowed, or
an offset from a lookup to a subtable overflowed.

The table layout is::

  GPSO/GUSB
          Script List
          Feature List
          LookUpList
                  Lookup[0] and contents
                          SubTable offset list
                                  SubTable[0] and contents
                                  ...
                                  SubTable[n] and contents
                  ...
                  Lookup[n] and contents
                          SubTable offset list
                                  SubTable[0] and contents
                                  ...
                                  SubTable[n] and contents

If the offset to a lookup overflowed (SubTableIndex is None)
        we must promote the *previous* lookup to an Extension type.

If the offset from a lookup to subtable overflowed, then we must promote it
        to an Extension Lookup type.
r   r   r  r>  r  r?  )ÚLookupListIndexÚSubTableIndexÚ	tableTyper"  r  r  r  rÝ  Ú
LookupTyper•  r°   r  ÚlookupTypesrö  ÚExtSubTable)ÚttfÚoverflowRecordÚokr2  ÚextTypeÚlookupsÚlookupÚsiÚsubTableÚextSubTableClassÚextSubTables              rP   ÚfixLookupOverFlowsr~  ²  sh  € ð8 
€BØ ×0Ñ0€KØ×#Ñ#Ñ+Ø! A‘oˆØ�QƒØˆ	Ø×Ñ 6Ó)Ø‰Ø	×	!Ñ	! VÓ	+Øˆà×*Ñ*Ñ+×1Ñ1×<Ñ<×CÑC€GØÑ!€Fà
�/‰/˜!Ñ
×
&Ñ
&×
1Ñ
1°WÓ
<Ø! A‘oˆØ˜‹?ØˆIØÑ%ˆð	 �/‰/˜!Ñ
×
&Ñ
&×
1Ñ
1°WÕ
<ô ˜[¬#¨g«,Ö7ˆØÑ%ˆØ×Ñ Õ'Ø 'ÔÜ )¨&¯/©/Ö :‘�Ü#.¨~×/GÑ/GÑ#HÈÑ#QÐ Ù.Ó0�Ø%&�Ô"Ø*2Ô'Ø&1—‘ Ó#ó !;ñ	 8ð 
€BØ€IrO   c                 óT  • Sn[        U R                  R                  5       5      n[        U5      nUR                  S;   a  US-  nOUR                  S:X  a  UR
                  S-
  n0 Ul        [        WU5       H+  nXG   nUS   n	US   UR                  U	'   U R                  U		 M-     U$ )Nr   ©rê  rð  r,   r‡  r   )r”  râ   r´   r°   ÚitemNameÚ	itemIndexr•  )
ÚoldSubTableÚnewSubTableru  rv  Ú
oldMappingÚoldLenÚnewLenr€   rx  r‘  s
             rP   ÚsplitMultipleSubstrˆ  ð  sµ   € Ø	
€BÜ˜×+Ñ+×1Ñ1Ó3Ó4€JÜ�‹_€Fà×ÑÐ"=Ó=ð ˜1‘‰à	×	 Ñ	  JÓ	.ð  ×)Ñ)¨AÑ-ˆà€KÔÜ�6˜6Ö"ˆØ‰}ˆØ�1‰gˆØ#'¨¡7ˆ×Ñ˜CÑ Ø×Ñ Ò$ñ	 #ð €IrO   c                 ó˜  • Sn[        U S5      (       a  U R                  Ul        [        U R                  R	                  5       5      n[        U5      nUR                  S;   a  US-  nOUR                  S:X  a  UR                  S-
  n0 Ul        [        WU5       H+  nXG   nUS   n	US   UR                  U	'   U R                  U		 M-     U$ )Nr   rÌ  r€  r,   rÆ  r   )	rì  rÌ  r”  rÃ  r´   r°   r�  r‚  r•  )
rƒ  r„  ru  rv  ÚoldAltsr†  r‡  r€   rx  r‘  s
             rP   ÚsplitAlternateSubstr‹  
	  sÑ   € Ø	
€BÜˆ{Ð.×/Ñ/Ø'2×'CÑ'CˆÔ$ä�[×+Ñ+×1Ñ1Ó3Ó4€GÜ�‹\€Fà×ÑÐ"=Ó=ð ˜1‘‰à	×	 Ñ	  NÓ	2ð  ×)Ñ)¨AÑ-ˆà€KÔÜ�6˜6Ö"ˆØ‰zˆØ�1‰gˆØ&*¨1¡gˆ×Ñ˜sÑ#Ø×"Ñ" 3Ò'ñ	 #ð €IrO   c                 óT  • Sn[        U R                  R                  5       5      n[        U5      nUR                  S;   a  US-  nOUR                  S:X  a  UR
                  S-
  n0 Ul        [        WU5       H+  nXG   nUS   n	US   UR                  U	'   U R                  U		 M-     U$ )Nr   r€  r,   rÙ  r   )r”  rÖ  r´   r°   r�  r‚  r•  )
rƒ  r„  ru  rv  ÚoldLigsr†  r‡  r€   rx  r‘  s
             rP   ÚsplitLigatureSubstrŽ  '	  sµ   € Ø	
€BÜ�[×*Ñ*×0Ñ0Ó2Ó3€GÜ�‹\€Fà×ÑÐ"=Ó=ð ˜1‘‰à	×	 Ñ	  MÓ	1ð  ×)Ñ)¨AÑ-ˆà€KÔÜ�6˜6Ö"ˆØ‰zˆØ�1‰gˆØ%)¨!¡Wˆ×Ñ˜cÑ"Ø×!Ñ! #Ò&ñ	 #ð €IrO   c           	      ó(  ^• U nSnU R                   Ul         U R                   S:X  Ga  [        U R                  5      S:”  aë  S H  n[        X[	        X5      5        M     U R
                  R                  5       Ul        U R
                  R                  nU R                  n[        U R                  5      S-  mUS T U R
                  l        US T U l        UTS  UR
                  l        UTS  Ul        [        U R                  5      U l        [        UR                  5      Ul        SnU$ U R                   S:X  Ga?  [        U R                  5      S:”  Ga%  [        U S5      (       d'  [        U R                  S   R                  5      U l        S H  n[        X[	        X5      5        M     SU l        U R
                  R                  5       Ul        U R                  R                  5       Ul        U R
                  R                  nU R                  R                  nU R                  n[        U R                  5      S-  m[!        U4S	 jUR#                  5        5       5      n	U V
s/ s H  oªU	;  d  M
  U
PM     sn
U R
                  l        UR#                  5        VVs0 s H  u  p¼UT:  d  M  X¼_M     snnU R                  l        US T U l	        U V
s/ s H  oªU	;   d  M
  U
PM     sn
UR
                  l        UR#                  5        VVs0 s H  u  p¼UT:”  d  M  X¼T-
  _M     snnUR                  l        UTS  Ul	        [        U R                  5      U l        [        UR                  5      Ul        SnU$ s  sn
f s  snnf s  sn
f s  snnf )
NFr   )ÚValueFormat1ÚValueFormat2r,   TÚClass2Countr   )r’  r7  r�  r‘  c              3   ó<   >#   • U  H  u  pUT:¼  d  M  Uv •  M     g 7frŠ   r9   )r¤   Úkrh   ÚoldCounts      €rP   r¥   ÚsplitPairPos.<locals>.<genexpr>r	  s   øé € ÐIÒ&7™d˜a¸1À¹=Ÿ™Ò&7ùs   ƒ“	)rö  r°   ÚPairSetrµ   rÏ   rê  rÝ  rÖ  ÚPairSetCountÚClass1Recordrì  ÚClass2Recordr’  Ú	DontSharer6  rŸ  r’  r´   ÚClass1Count)rƒ  r„  ru  r!  rv  r×   Úcoveragerª  rŸ  Ú	newGlyphsrÌ  r”  rh   r•  s                @rP   ÚsplitPairPosrŸ  A	  s1  ø€ Ø	€BØ	€BØ$×+Ñ+€KÔØ×Ñ˜QÔ¤3 {×':Ñ':Ó#;¸aÓ#?Û2ˆDÜ�K¤w¨{Ó'AÖBñ 3ð
  +×3Ñ3×=Ñ=Ó?ˆÔà×'Ñ'×.Ñ.ˆØ×%Ñ%ˆä�{×*Ñ*Ó+¨qÑ0ˆà&.¨y°Ð&9ˆ×ÑÔ#Ø% i xÐ0ˆÔà&.¨x¨yÐ&9ˆ×ÑÔ#Ø% h iÐ0ˆÔä#& {×':Ñ':Ó#;ˆÔ Ü#& {×':Ñ':Ó#;ˆÔ àˆðT €IðQ 
×	Ñ	˜qÔ	 ¤S¨×)AÑ)AÓ%BÀQÔ%FÜ�{ M×2Ñ2Ü&)¨+×*BÑ*BÀ1Ñ*E×*RÑ*RÓ&SˆKÔ#ÛNˆDÜ�K¤w¨{Ó'AÖBñ Oð !%ˆÔð  +×3Ñ3×=Ñ=Ó?ˆÔØ +× 5Ñ 5× ?Ñ ?Ó AˆÔà×'Ñ'×.Ñ.ˆØ×)Ñ)×3Ñ3ˆ	Ø×*Ñ*ˆä�{×/Ñ/Ó0°AÑ5ˆÜÔI i§o¡oÔ&7ÓIÓIˆ	á2:Ó&Q²(¨QÀyÑ>P§q±(Ñ&Qˆ×ÑÔ#à&Ÿ_™_Ô.ô+
Ú.‘T�Q°!°h±,‹DˆAŠDÑ.ò+
ˆ×ÑÔ'ð $+¨9¨HÐ#5ˆÔ á2:Ó&M²(¨QÀ9¹n§q±(Ñ&Mˆ×ÑÔ#à*3¯/©/Ô*;ô+
Ú*;¡$ !¸qÀ8¹|ÓˆA�H‘ÒÑ*;ò+
ˆ×ÑÔ'ð $+¨8¨9Ð#5ˆÔ ä"% k×&>Ñ&>Ó"?ˆÔÜ"% k×&>Ñ&>Ó"?ˆÔàˆà€Iùò# 'Rùó+
ùò
 'Nùó+
s0   É)	M>É6M>Ê!NÊ1NË	N	Ë%N	ÌNÌ 	Nc                 óR  • U R                   nUS:  a  gUS-  nX4-
  n/ / pv/ / p˜[        U R                  R                  U R                  R
                  5       Hp  u  p«UR                  U:  a$  UR                  U
5        UR                  U5        M9  U=R                  U-  sl        UR                  U
5        U	R                  U5        Mr     / / pÜU R                  R                   Hm  nUR                  5       UR                  5       nnUR                  S U Ul        UR                  US  Ul        UR                  U5        UR                  U5        Mo     U R                  Ul        X`R                  l        U R                  R                  5       Ul        X�R                  l        U R                  Ul        X@l         XQl         XpR                  l        U R                  R                  5       Ul        X‘R                  l        [        U5      U R                  l        [        U	5      UR                  l        XÀR                  l	        U R                  R                  5       Ul        XÑR                  l	        [        U5      U R                  l        [        U5      UR                  l        g)Nr,   FT)Ú
ClassCountrG  r)  rÖ  r`  Ú
MarkRecordr¦  rÌ   Ú	BaseArrayÚ
BaseRecordrÝ  r?  rö  r*  r°   Ú	MarkCountÚ	BaseCount)rƒ  r„  ru  Ú
classCountÚoldClassCountÚnewClassCountÚoldMarkCoverageÚoldMarkRecordsÚnewMarkCoverageÚnewMarkRecordsr’   Ú
markRecordÚoldBaseRecordsÚnewBaseRecordsr«  ÚoldBaseRecordÚnewBaseRecords                    rP   ÚsplitMarkBasePosr³  ˆ	  s<  € à×'Ñ'€JØ�Aƒ~àà !‘O€MØÑ.€Mà&(¨"�^Ø&(¨"�^Ü!$Ø× Ñ ×'Ñ'¨×)>Ñ)>×)IÑ)Iö"Ñˆ	ð ×Ñ˜mÓ+Ø×"Ñ" 9Ô-Ø×!Ñ! *Ö-à×Ò Ñ-ÕØ×"Ñ" 9Ô-Ø×!Ñ! *Ö-ñ"ð &(¨�NØ×$Ñ$×/Ô/ˆØ'*§}¡}£¸¿¹»�}ˆØ#&§>¡>°.°=Ð#AˆÔ Ø#&§>¡>°-°.Ð#AˆÔ Ø×Ñ˜mÔ,Ø×Ñ˜mÖ,ñ 0ð %×+Ñ+€KÔà&5×ÑÔ#Ø*×7Ñ7×AÑAÓC€KÔØ&5×ÑÔ#ð  +×7Ñ7€KÔà*ÔØ*Ôà'5×ÑÔ$Ø'×1Ñ1×;Ñ;Ó=€KÔØ'5×ÑÔ$ä&)¨.Ó&9€K×ÑÔ#Ü&)¨.Ó&9€K×ÑÔ#à'5×ÑÔ$Ø'×1Ñ1×;Ñ;Ó=€KÔØ'5×ÑÔ$ä&)¨.Ó&9€K×ÑÔ#Ü&)¨.Ó&9€K×ÑÔ#àrO   )r,   rp   r-   )r,   r-   ©r  r  c                 óÔ  • XR                      R                  nUR                  R                  UR                     nUR
                  nUR                  U   n[        US5      (       d  SUl        g[        US5      (       a–  UR                  R                  R                  nUnUR                  n[        UR                      UR                  R                     nU" 5       n	UR                  U	l        U	n
[        UR                      U   nU" 5       nXÉl	        O5UR                  R                  n[        UR                      U   nU" 5       nUn
[        US5      (       a  UR                  S-   Ul         [        UR                      U   nU" X\U5      nU(       a  UR                  R'                  US-   U
5        U$ ! [          a$    ["        R%                  SUR                   U5         gf = f)zb
An offset has overflowed within a sub-table. We need to divide this subtable into smaller parts.
r›  Trs  ÚSubTableCountr   z)Don't know how to split %s lookup type %sF)rp  r"  r  r  rn  ro  r  rì  r›  rs  rÝ  rq  rr  rö  r¶  Ú
splitTabler¼  r÷  Úerrorr9  )rt  ru  r"  ry  ÚsubIndexÚsubtableÚsubTableTyper}  ÚnewExtSubTableClassÚnewExtSubTableÚtoInsertÚnewSubTableClassr„  Ú	splitFuncrv  s                  rP   ÚfixSubTableOverFlowsrÁ  Ý	  sÐ  € ð ×(Ñ(Ñ)×/Ñ/€EØ×Ñ×$Ñ$ ^×%CÑ%CÑD€FØ×+Ñ+€HØ�‰˜xÑ(€Hô �8˜[×)Ñ)Ø!ˆÔØäˆx˜×'Ñ'ð  ×+Ñ+×5Ñ5×@Ñ@ˆØˆØ×*Ñ*ˆÜ)¨.×*BÑ*BÑCØ×!Ñ!×,Ñ,ñ
Ðñ -Ó.ˆØ +× 2Ñ 2ˆÔØ!ˆä& ~×'?Ñ'?Ñ@ÀÑNÐÙ&Ó(ˆØ%0Õ"à×)Ñ)×4Ñ4ˆÜ& ~×'?Ñ'?Ñ@ÀÑNÐÙ&Ó(ˆØˆäˆv�×'Ñ'Ø%×3Ñ3°aÑ7ˆÔðÜ˜~×7Ñ7Ñ8¸ÑFˆ	ñ 
�8¨.Ó	9€BÞ	Ø�‰×Ñ˜x¨!™|¨XÔ6Ø€Iøô ó Ü�	‰	Ø7Ø×$Ñ$Øô	
ñ
 ðús   Å2F9 Æ9+G'Ç&G'c                  óÎ  • SS K n SSKJn  U R                  S5      n[        5       nU Hl  u  pE[        nUR                  U5      nU(       a$  UR                  S5      nUS   S   n[        U5      nXC;  d  MN  [        XF40 5      n	US;   a  SU	l	        X“U'   Mn     U HP  u  pJUR                  S5      (       d  M  [        U5      S:”  d  M.  USS  U;   d  M9  X4   nX4SS     nXËl        X¼l        MR     [        R                  5        H  u  pÞX=   nU H  nXÓU'   M	     M     [         ["        [$        [&        [(        [*        [,        [.        S	.[0        [2        [4        [6        [8        [:        [<        [>        [@        S
.	S[B        0[D        [F        [H        [B        [J        S.S.q&[L        S   [L        S'   [L        RO                  5        H$  nUR                  5        H  u  nn	UU	l(        M     M&     S[R        0q*[W        SS5       H  n[X        [T        SU-  '   M     [W        SS5       H  n[Z        [T        SU-  '   M     SSK.J/n  U H¦  u  pEUR                  U5      nU(       ap  URa                  5       u  nn[c        U5      nX4   n	[e        U	S5      (       d  0 U	l3        0 U	l4        U" USS  U5      u  nnUU	Rf                  U'   UU	Rh                  U'   M�  X4   n	U" XS5      u  U	l3        U	l4        M¨     g )Nr   r   )ÚotDataz([A-Za-z0-9]+)Format(\d+)$r´  TÚVarrp   )r   r,   rp   r-   r~   r=  r>  r.   )	r   r,   rp   r-   r~   r=  r>  r.   r?  r-   )r   r   r,   r-   r~   )r  r  ÚmortÚmorxr  ÚJSTFÚsizer�  zss%02déd   zcv%02d)ÚbuildConvertersÚ
converters)5ÚrerÃ  rÑ   Úglobalsr   ÚmatchÚgroupr   rø   r›  r¸  r°   Ú	NoVarTypeÚVarTypeÚ_equivalentsr´   r]  rƒ  rÁ  rÔ  ÚContextSubstÚChainContextSubstÚExtensionSubstÚReverseChainSingleSubstÚ	SinglePosÚPairPosÚ
CursivePosÚMarkBasePosÚ
MarkLigPosÚMarkMarkPosÚ
ContextPosÚChainContextPosÚExtensionPosÚNoncontextualMorphÚRearrangementMorphÚContextualMorphÚLigatureMorphÚInsertionMorphrr  rª   rq  râ  rÜ  r•  ræ  rè  ÚotConvertersrÊ  ro  r“  rì  rË  ÚconvertersByName)rÌ  rÃ  Ú	formatPatÚ	namespacer×   r"  Ú	baseClassÚmÚ
formatTyper©  rÀ   ÚvarTypeÚ	noVarTypeÚbaserÈ  rÉ  Ú
lookupEnumÚenumr€   rÊ  r  rË  ræ  s                          rP   Ú_buildClassesrñ  
  sÇ  € ÛÝà—
‘
Ð8Ó9€IÜ“	€Ió ‰ˆÜˆ	Ø�O‰O˜DÓ!ˆÞà—7‘7˜1“:ˆDð ˜q™ !™ˆJÜ8¸ÓDˆIØÕ ä�t˜\¨2Ó.ˆCØÐ'Ó'Ø $�”Ø!�d‹Oñ! ó& ‰ˆØ�?‰?˜5×!Ó!¤c¨$£i°!¥m¸¸Q¸R¸ÀIÕ8MØ‘oˆGØ! q r (Ñ+ˆIØ )ÔØ 'Öñ ô #×(Ñ(Ö*‰
ˆØ‰ˆÛˆCØ!�c‹Nó ñ +ô ÜÜÜÜÜ ÜÜ&ñ	
ô ÜÜÜÜÜÜÜÜñ

ð Ô!ð
ô "ÜÜä!Üñ
ñ3!€KôD & fÑ-„K�ÑÜ!×(Ñ(Ö*ˆ
Ø#×)Ñ)Ö+‰IˆD�#Ø!ˆCŽNó ,ñ +ð 	Ô!ðÐô �1�fÖˆÜ*CÔ˜( Q™,Ó'ñ ä�1�fÖˆÜ*HÔ˜( Q™,Ó'ñ õ .ã‰ˆØ�O‰O˜DÓ!ˆÞàŸ8™8›:‰LˆD�&Ü˜“[ˆFØ‘/ˆCÜ˜3 ×-Ñ-Ø!#�”Ø')�Ô$Ù+:¸5ÀÀ¸9ÀiÓ+PÑ(ˆJÐ(Ø%/ˆC�N‰N˜6Ñ"Ø+;ˆC× Ñ  Ó(ð ‘/ˆCÙ3BÀ5Ó3TÑ0ˆCŒN˜CÖ0ò! rO   c                 ó$   • U c  / $ U R                   $ rŠ   )rÖ  )r�  s    rP   rf  rf  Š
  s   € ØÑàˆ	à�‰ÐrO   )…Ú__doc__r1  rð  r   Ú	functoolsr   Úmathr   Ú	itertoolsÚcollectionsr   r   r  r   Ú%fontTools.ttLib.tables.TupleVariationr	   Ú!fontTools.ttLib.tables.otTraverser
   ÚfontTools.misc.arrayToolsr   ÚfontTools.misc.roundToolsr   ÚfontTools.misc.transformr   r   r   ÚfontTools.misc.textToolsr   r   r   ÚfontTools.misc.vectorr   ÚfontTools.pens.boundsPenr   ÚfontTools.pens.transformPenr   ÚotBaser   r   r   r   r   ÚfontTools.misc.fixedToolsr   r¢   r   rÇ   r   rß   r   rç   Ú fontTools.feaLib.lookupDebugInfor    r!   Úloggingre   ÚarrayÚsysr"   Útypingr#   r$   r%   r&   r'   ÚfontTools.ttLib.ttGlyphSetr(   Ú	getLoggerr:   r÷  r*   rQ   rB   rC   rD   rF   rG   rK   rL   rH   rI   r³   rÍ   r­   r‚   r…   r‡   r  Úobjectr  r  r#  r9  re  rw  r}  r³  rÙ  râ  ræ  rè  rê  r–   r  rA  rT  r]  rƒ  r�  rÁ  rÔ  rò  r  r;  r  rJ  rU  r  r…  rŠ  r²  r	  rÒ  r~  rˆ  r‹  rŽ  rŸ  r³  r·  rÁ  rñ  rf  r9   rO   rP   Ú<module>r     sT  ðñó Ý Ý Ý Û ß /Ý /Ý @Ý <Ý 2Ý -ß MÑ Mß =Ñ =Ý (Ý 5Ý 4÷õ ÷ó ÷ TÛ Û Û Û 
Ý ß ?Õ ?æÝ6ð ×Ò˜Ó!€ô*˜ô *ñ6 'ØÚ7óÐ ñ ,Ø×*Ñ*¨A¨q°!óñ ,Ø×*Ñ*¨A¨q°!óñ *Ð*;×*IÑ*IÈ2ÈsÐTUÓVÙ'Ð(9×(FÑ(FÈÈAÈqÓQÙ'Ð(9×(FÑ(FÈÈAÈqÓQÙ&Ð'8×'DÑ'DÀbÈ$ÐPQÓRÙ&Ð'8×'DÑ'DÀbÈ#ÈqÓQÙ)Ð*;×*JÑ*JÈAÈqÐRSÓTÙ)Ð*;×*JÑ*JÈAÈqÐRSÓTñÐ ñ$ &Ù%Ù)Ù%ñ	€ñ +Ù*Ù2Ù*ñ	€	ò$ò.>÷"vBñ vB÷r.ñ .ôD"�Fô "ôˆvô ô
#�ô #ô*R0˜yô R0ôj>@˜Iô >@ôB!�ô !ôJ˜)ô JôZD#˜9ô D#ôNT�Iô Tô	˜ô 	ô	 ô 	ô	 ]ô 	ôU&Ð'ô U&ðt  Ð ôIPÑ7¸Ó@ô IPôX4?�	ô 4?ôn
�Iô 
ô$M,Ð*ô M,ô`HÐ,ô HôVf8Ð'ô f8ôRB'Ð-ô B'ôJvÐ,ô vôr6(ˆ9ô 6(ôr+E�ô +Eô\$˜9ô $ô$�Iô $ô�Gô ô=Ñ.¨wÓ7ô =ôR+Ñ/°Ó8ô R+ôj�ô ô�Gô ô>+�'ô +ô\@Ñ,¨WÓ5ô @ðT !Ø"ðððððð !ðð 'ððððð QñYM€òj;ò|ò4ò:ò4DòN9ð~ ØØñ		ð àñ	
ñ€
ò25òvkUñ^ „órO   