Ë
    ÚÍ:j´O ã                   ó¦  — d dl mZmZmZmZm	Z
mZ d dlmZ d dlmZmZ d dlmZmZmZmZmZ d dlmZ d dlmZmZ ddlmZmZm Z m!Z!m"Z" dd	l#m$Z$ dd
l%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z0m1Z2m3Z3 d dl4m5Z5m6Z6 d dl7m8Z8 d dl9m:Z: d dl;Z;d dl<Z<d dl=m>Z> d dl?Z?d dl@mAZA  e?j„                  eC«      ZDd„ ZEdeFe$   fd„ZG G d„ deH«      ZI G d„ deI«      ZJ G d„ deJ«      ZK G d„ deJ«      ZL G d„ deL«      ZM G d„ deL«      ZN G d „ d!eN«      ZO G d"„ d#eKeN«      ZP G d$„ d%eL«      ZQ G d&„ d'eL«      ZR G d(„ d)eL«      ZS G d*„ d+eL«      ZT G d,„ d-eL«      ZU G d.„ d/eL«      ZV G d0„ d1eVeT«      ZW G d2„ d3eVeR«      ZX G d4„ d5eVeN«      ZY G d6„ d7eJ«      ZZ G d8„ d9eJ«      Z[ G d:„ d;e[«      Z\ G d<„ d=eR«      Z] G d>„ d?eR«      Z^ G d@„ dAeJ«      Z_ G dB„ dCe_«      Z` G dD„ dEe_«      Za G dF„ dGea«      Zb G dH„ dIea«      Zc G dJ„ dKec«      Zd G dL„ dMed«      Ze G dN„ dOeJ«      Zf G dP„ dQeJ«      Zg G dR„ dSeI«      Zh G dT„ dUeh«      Zi G dV„ dWeh«      Zj G dX„ dYej«      Zk G dZ„ d[ej«      Zl G d\„ d]eh«      Zm G d^„ d_ej«      Zn G d`„ daeken«      Zo G db„ dcej«      Zp G dd„ deeL«      Zq G df„ dgeq«      Zr G dh„ dieI«      Zs G dj„ dkeI«      Zt G dl„ dmeI«      Zu G dn„ doeI«      Zv G dp„ dqeI«      Zw G dr„ dseI«      Zx G dt„ dueI«      Zy G dv„ dweI«      Zz G dx„ dyeI«      Z{ G dz„ d{«      Z| G d|„ d}eI«      Z} G d~„ deR«      Z~ G d€„ d�eT«      Z G d‚„ dƒe«      Z/ G d„„ d…e«      Z1 G d†„ d‡eA«      Z€ G dˆ„ d‰eI«      Z�i dŠeS“d‹eQ“dŒeM“d�eT“dŽeR“d�eU“d�eN“d‘eg“d!eO“d#eP“dOef“d7eZ“d9e[“d;e\“d=e]“dCe`“dGeb“i dIec“dKed“dMee“d’eh“d“e�“d”ej“d•ek“d–el“dger“duey“dwez“dye{“de~“dƒe/“d…e1“d?e^“d— e8e}e|¬˜«      “¥ e8e}e'¬™«      ewexeieieieudš„ d›„ dœ„ d�„ dž„ dŸ„ d œ¥Z‚y)¡é    )ÚfixedToFloatÚfloatToFixedÚfloatToFixedToStrÚstrToFixedToFloatÚensureVersionIsLongÚversionToFixed)ÚTupleVariation)ÚnearestMultipleShortestReprÚotRound)Ú	bytesjoinÚtobytesÚtostrÚpadÚsafeEval)ÚLazyList)ÚOPTIMIZE_FONT_SPEEDÚgetSearchRangeé   )ÚCountReferenceÚFormatSwitchingBaseTableÚOTTableReaderÚOTTableWriterÚValueRecordFactory)Ú	FieldSpec)ÚlookupTypesÚVarCompositeGlyphÚAATStateTableÚAATStateÚ	AATActionÚContextualMorphActionÚLigatureMorphActionÚInsertionMorphActionÚMorxSubtableÚ
ExtendModeÚCompositeModeÚNO_VARIATION_INDEX)Úzip_longestÚ
accumulate)Úpartial)ÚSimpleNamespaceN)ÚOptional)ÚIntFlagc                 ó"   — t        | t        «      S ©N)Ú
isinstanceÚtuple)Úts    úx/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/fontTools/ttLib/tables/otConverters.pyú<lambda>r3   .   s   € ”J˜q¤%Ó(€ ó    Ú	tableSpecc           	      ó`  — g }i }| D �]!  }|j                   }|j                   j                  d«      r|j                  dk(  sJ ‚t        }�n|j                   j	                  d«      s|j                   dv r t
        t        t        dœ|j                     }n»|j                   dk(  rt        }n¥|j                   dk(  rt        }n�|j                   dk(  rt        }ny|j                   d	k(  rt        }nc|j                   d
v rt        }nN|j                  t        vr!d|j                  vr|j                  }t        }nt        |j                  |t        «      } ||j                   |j                   |j"                  |j$                  ¬«      }|j&                  r|j&                  }n;|j                  dv r|j)                  |j                  «      }n|j)                  |«      }|j&                  s||_        |j                   dv rw|d   |_        |j*                  j-                  «       D ]P  }	|	j-                  «       D ];  }
t/        |j                   |j                   |j"                  |
«      ||
j0                  <   Œ= ŒR |j                   d	k(  rl|d   |_        |d	   |_        |j2                  j-                  «       D ];  }
t/        |j                   |j                   |j"                  |
«      ||
j0                  <   Œ= |j7                  |«       |j                   |vsJ |j                   «       ‚|||j                   <   �Œ$ ||fS )zÔGiven a table spec from otData.py, build a converter object for each
    field of the table. This is called for each table in otData.py, and
    the results are assigned to the corresponding class in otTables.py.ÚValueFormatÚuint16ÚCount)ÚStructLengthÚ	MorphType)Úuint8r8   Úuint32ÚSubTableÚExtSubTableÚ	SubStructÚFeatureParams)ÚCIDGlyphMappingÚGlyphCIDMappingú(©Údescription)Ú	MortChainÚMortSubtableÚ	MorxChain)r>   r?   r@   r   ÚfeatureParamTypes)ÚnameÚ
startswithÚtyper7   ÚendswithÚComputedUInt8ÚComputedUShortÚComputedULongr>   r?   r@   rA   ÚStructWithLengthÚconverterMappingÚStructÚevalÚrepeatÚauxrF   Ú
tableClassÚgetr   ÚvaluesÚTableÚ__name__rJ   ÚdefaultFeatureParamsÚappend)r5   ÚtableNamespaceÚ
convertersÚconvertersByNameÚspecÚ	tableNameÚconverterClassÚconvrX   r1   Úclss              r2   ÚbuildConvertersrg   1   sÄ  € ð €JØÐØó <+ˆØ—I‘Iˆ	Ø�9‰9×Ñ Ô.Ø—9‘9 Ò(Ð(Ð(Ü(ŠNØ�Y‰Y×Ñ Ô(¨D¯I©IÐ9VÑ,Vä&Ü(Ü'ñð �i‰iñ	‰Nð
 �Y‰Y˜*Ò$Ü%‰NØ�Y‰Y˜-Ò'Ü(‰NØ�Y‰Y˜+Ò%Ü&‰NØ�Y‰Y˜/Ò)Ü*‰NØ�Y‰YÐ@Ñ@Ü-‰Nà—9‘9Ô 0Ñ0°SÀÇ	Á	Ñ5IØ ŸI™I�	Ü!'‘ä!% d§i¡i°ÔAQÓ!R�áØ�I‰I�t—{‘{ D§H¡H¸$×:JÑ:Jô
ˆð �?Š?àŸ™‰JØ�Y‰YÐDÑDØ'×+Ñ+¨D¯I©IÓ6‰Jà'×+Ñ+¨IÓ6ˆJà�ŠØ(ˆDŒOà�9‰9Ð@Ñ@Ø-¨mÑ<ˆDÔà×%Ñ%×,Ñ,Ó.ò �ØŸ8™8›:ò �CÜ5:ØŸ	™	 4§;¡;°·±¸#ó6Ð$ S§\¡\Ò2ñðð
 �9‰9˜Ò'Ø%3Ð4GÑ%HˆDÔ"Ø(6°Ñ(GˆDÔ%Ø×-Ñ-×4Ñ4Ó6ò �Ü16Ø—I‘I˜tŸ{™{¨D¯H©H°có2Ð  §¡Ò.ðð 	×Ñ˜$ÔØ�y‰yÐ 0Ñ0Ð;°$·)±)Ó;Ð0Ø&*Ð˜Ÿ™Ó#ðy<+ðz Ð'Ð'Ð'r4   c                   ó€   — e Zd ZdZdddœd„Zd„ Zd„ Zd„ Zd	„ Zdd
„Z	d„ Z
d„ Z ej                  d«      Zdee   fd„Zy)ÚBaseConverterz\Base class for converter objects. Apart from the constructor, this
    is an abstract class.NÚ rE   c                ó6  — || _         || _        || _        | j                  r(| j                  st        | j                  dd«      | _        || _        |j                  d«      xs |dv | _        |j                  d«      xs |dk(  | _        |dv | _        || _	        y )Nz<string>rU   r9   )ÚDesignAxisRecordSizeÚValueRecordSizeÚ
LookupTyper;   )Ú
ClassCountÚClass2CountÚ
FeatureTagÚSettingsCountÚVarRegionCountÚMappingCountÚRegionAxisCountÚDesignAxisCountrl   ÚAxisValueCountrm   Ú	AxisCountÚBaseGlyphRecordCountÚLayerRecordCountÚAxisIndicesListÚ	NumGlyphsÚMaxGlyphMapEntryIndexÚMaxEntryIndexÚ
NumEntries)
rK   rV   rW   ÚcompilerX   rN   ÚisCountÚisLookupTypeÚisPropagatedrF   ©ÚselfrK   rV   rW   rX   rF   s         r2   Ú__init__zBaseConverter.__init__{   s™   € ØˆŒ	ØˆŒØˆŒØ�8Š8˜DŸKšKÜ˜tŸx™x¨°VÓ<ˆDŒHØ$ˆŒØ—}‘} WÓ-ò 
°ð :
ð 2
ˆŒð !ŸM™M¨,Ó7ÒN¸4À;Ñ;NˆÔØ ð %
ð 
ˆÔð, 'ˆÕr4   c                 ó`  ‡ ‡‡‡	‡
— ‰j                   xr |dkD  }|r‰ j                  ‰«      Š
‰
t        u rd}|s6g }t        |«      D ]$  }|j	                  ‰ j                  ‰‰|«      «       Œ& |S ˆˆˆ
ˆ fd„} |«       Š	t        ˆ	fd„t        |«      D «       «      }‰j                  |‰
z  «       |S )z(Read an array of values from the reader.é   Fc                  óV   •‡‡— ‰j                  «       Š‰j                  Šˆˆˆˆˆfd„} | S )Nc                 óX   •— ‰j                  ‰| ‰z  z   «       ‰j                  ‰‰i «      S r.   )ÚseekÚread)ÚiÚfontÚposÚreader_copyÚ
recordSizer…   s    €€€€€r2   Ú	read_itemzABaseConverter.readArray.<locals>.get_read_item.<locals>.read_item±   s-   ø€ Ø×$Ñ$ S¨1¨z©>Ñ%9Ô:ØŸ9™9 [°$¸Ó;Ð;r4   ©Úcopyr�   )r’   r�   r�   rŽ   Úreaderr‘   r…   s    @@€€€€r2   Úget_read_itemz.BaseConverter.readArray.<locals>.get_read_item­   s)   ú€ Ø$Ÿk™k›m�Ø—j‘j�÷<ð <ð !Ð r4   c              3   ó"   •K  — | ]  }‰–— Œ y ­wr.   © )Ú.0r�   r’   s     €r2   ú	<genexpr>z*BaseConverter.readArray.<locals>.<genexpr>¸   s   øè ø€ Ò9 qœÑ9ùs   ƒ)ÚlazyÚgetRecordSizeÚNotImplementedÚranger^   rŒ   r   Úadvance)r…   r•   rŽ   Ú	tableDictÚcountr›   Úlr�   r–   r’   r‘   s   ```      @@r2   Ú	readArrayzBaseConverter.readArrayŸ   s¦   ü€ à�y‰yÒ&˜U Q™YˆÙØ×+Ñ+¨FÓ3ˆJØœ^Ñ+Ø�ÙØˆAÜ˜5“\ò =�Ø—‘˜Ÿ™ 6¨4°Ó;Õ<ð=àˆH÷!ñ &›ˆIÜÓ9¬E°%«LÔ9Ó9ˆAØ�N‰N˜5 :Ñ-Ô.àˆHr4   c                 ó>   — t        | d«      r| j                  S t        S )NÚ
staticSize)Úhasattrr¥   r�   ©r…   r•   s     r2   rœ   zBaseConverter.getRecordSize½   s   € Ü�4˜Ô&Ø—?‘?Ð"ÜÐr4   c                 ó   — t        | «      ‚)zRead a value from the reader.©ÚNotImplementedError©r…   r•   rŽ   r    s       r2   rŒ   zBaseConverter.readÂ   ó   € ä! $Ó'Ð'r4   c                 ó¤   — 	 t        |«      D ]  \  }}| j                  |||||«       Œ y # t        $ r}|j                  fz   |_        ‚ d }~ww xY wr.   )Ú	enumerateÚwriteÚ	ExceptionÚargs)r…   ÚwriterrŽ   r    rZ   r�   ÚvalueÚes           r2   Ú
writeArrayzBaseConverter.writeArrayÆ   sW   € ð	Ü% fÓ-ò >‘��5Ø—
‘
˜6 4¨°E¸1Õ=ñ>øäò 	Ø—V‘V˜q˜d‘]ˆAŒFØûð	ús   ‚(+ «	A´A
Á
Ac                 ó   — t        | «      ‚)zWrite a value to the writer.r©   ©r…   r²   rŽ   r    r³   ÚrepeatIndexs         r2   r¯   zBaseConverter.writeÎ   r¬   r4   c                 ó   — t        | «      ‚)zRead a value from XML.r©   ©r…   ÚattrsÚcontentrŽ   s       r2   ÚxmlReadzBaseConverter.xmlReadÒ   r¬   r4   c                 ó   — t        | «      ‚)zWrite a value to XML.r©   ©r…   Ú	xmlWriterrŽ   r³   rK   r»   s         r2   ÚxmlWritezBaseConverter.xmlWriteÖ   r¬   r4   zVarIndexBase\s*\+\s*(\d+)Úreturnc                 ó†   — | j                   j                  | j                  «      }|syt        |j	                  d«      «      S )zJIf description has `VarIndexBase + {offset}`, return the offset else None.Nr   )ÚvarIndexBasePlusOffsetREÚsearchrF   ÚintÚgroup)r…   Úms     r2   ÚgetVarIndexOffsetzBaseConverter.getVarIndexOffsetÜ   s6   € à×)Ñ)×0Ñ0°×1AÑ1AÓBˆÙØÜ�1—7‘7˜1“:‹Ðr4   r.   )r\   Ú
__module__Ú__qualname__Ú__doc__r†   r£   rœ   rŒ   rµ   r¯   r½   rÁ   Úrer€   rÄ   r+   rÆ   rÉ   r˜   r4   r2   ri   ri   w   s[   „ ñð"'È"ô "'òHò<ò
(òó(ò(ò(ð  *˜rŸz™zÐ*FÓGÐð 8¨C¡=ô r4   ri   c                   ó8   — e Zd Zed„ «       Zed„ «       Zd„ Zd„ Zy)ÚSimpleValuec                 ó   — | S r.   r˜   ©r³   s    r2   ÚtoStringzSimpleValue.toStringå   ó   € àˆr4   c                 ó   — | S r.   r˜   rÑ   s    r2   Ú
fromStringzSimpleValue.fromStringé   rÓ   r4   c                 ór   — |j                  ||d| j                  |«      fgz   «       |j                  «        y ©Nr³   )Ú	simpletagrÒ   Únewliner¿   s         r2   rÁ   zSimpleValue.xmlWriteí   s4   € Ø×Ñ˜D %¨G°T·]±]À5Ó5IÐ+JÐ*KÑ"KÔLØ×ÑÕr4   c                 ó*   — | j                  |d   «      S r×   )rÕ   rº   s       r2   r½   zSimpleValue.xmlReadñ   s   € Ø�‰˜u W™~Ó.Ð.r4   N)r\   rÊ   rË   ÚstaticmethodrÒ   rÕ   rÁ   r½   r˜   r4   r2   rÏ   rÏ   ä   s2   „ Øñó ðð ñó ðòó/r4   rÏ   c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚOptionalValueNc                 óª   — || j                   k7  r"|j                  d| j                  |«      f«       |j                  ||«       |j	                  «        y r×   )ÚDEFAULTr^   rÒ   rØ   rÙ   r¿   s         r2   rÁ   zOptionalValue.xmlWriteø   sD   € Ø�D—L‘LÒ Ø�L‰L˜' 4§=¡=°Ó#7Ð8Ô9Ø×Ñ˜D %Ô(Ø×ÑÕr4   c                 óJ   — d|v r| j                  |d   «      S | j                  S r×   )rÕ   rß   rº   s       r2   r½   zOptionalValue.xmlReadþ   s'   € Ø�eÑØ—?‘? 5¨¡>Ó2Ð2Ø�|‰|Ðr4   )r\   rÊ   rË   rß   rÁ   r½   r˜   r4   r2   rÝ   rÝ   õ   s   „ Ø€Gòór4   rÝ   c                   ó   — e Zd Zed„ «       Zy)ÚIntValuec                 ó   — t        | d«      S ©Nr   )rÆ   rÑ   s    r2   rÕ   zIntValue.fromString  s   € ä�5˜!‹}Ðr4   N©r\   rÊ   rË   rÛ   rÕ   r˜   r4   r2   râ   râ     s   „ Øñó ñr4   râ   c                   ó*   — e Zd ZdZd„ Zd„ Zdd„Zd„ Zy)ÚLongé   c                 ó"   — |j                  «       S r.   ©ÚreadLongr«   s       r2   rŒ   z	Long.read  ó   € Ø�‰Ó Ð r4   c                 ó$   — |j                  |«      S r.   )ÚreadLongArray©r…   r•   rŽ   r    r¡   s        r2   r£   zLong.readArray  ó   € Ø×#Ñ# EÓ*Ð*r4   Nc                 ó&   — |j                  |«       y r.   )Ú	writeLongr·   s         r2   r¯   z
Long.write  ó   € Ø×Ñ˜Õr4   c                 ó&   — |j                  |«       y r.   )ÚwriteLongArray©r…   r²   rŽ   r    rZ   s        r2   rµ   zLong.writeArray  ó   € Ø×Ñ˜fÕ%r4   r.   ©r\   rÊ   rË   r¥   rŒ   r£   r¯   rµ   r˜   r4   r2   rç   rç   
  ó   „ Ø€Jò!ò+ó ó&r4   rç   c                   ó*   — e Zd ZdZd„ Zd„ Zdd„Zd„ Zy)ÚULongrè   c                 ó"   — |j                  «       S r.   ©Ú	readULongr«   s       r2   rŒ   z
ULong.read  ó   € Ø×ÑÓ!Ð!r4   c                 ó$   — |j                  |«      S r.   )ÚreadULongArrayrï   s        r2   r£   zULong.readArray   ó   € Ø×$Ñ$ UÓ+Ð+r4   Nc                 ó&   — |j                  |«       y r.   ©Ú
writeULongr·   s         r2   r¯   zULong.write#  ó   € Ø×Ñ˜%Õ r4   c                 ó&   — |j                  |«       y r.   )ÚwriteULongArrayrö   s        r2   rµ   zULong.writeArray&  ó   € Ø×Ñ˜vÕ&r4   r.   rø   r˜   r4   r2   rû   rû     ó   „ Ø€Jò"ò,ó!ó'r4   rû   c                   ó   — e Zd Zed„ «       Zy)ÚFlags32c                 ó   — d| z  S )Nz0x%08Xr˜   rÑ   s    r2   rÒ   zFlags32.toString+  ó   € à˜%ÑÐr4   N)r\   rÊ   rË   rÛ   rÒ   r˜   r4   r2   r  r  *  s   „ Øñ ó ñ r4   r  c                   ó   — e Zd ZeZy)ÚVarIndexN)r\   rÊ   rË   r&   rß   r˜   r4   r2   r  r  0  s   „ Ø �Gr4   r  c                   ó*   — e Zd ZdZd„ Zd„ Zdd„Zd„ Zy)ÚShorté   c                 ó"   — |j                  «       S r.   )Ú	readShortr«   s       r2   rŒ   z
Short.read7  rÿ   r4   c                 ó$   — |j                  |«      S r.   )ÚreadShortArrayrï   s        r2   r£   zShort.readArray:  r  r4   Nc                 ó&   — |j                  |«       y r.   )Ú
writeShortr·   s         r2   r¯   zShort.write=  r  r4   c                 ó&   — |j                  |«       y r.   )ÚwriteShortArrayrö   s        r2   rµ   zShort.writeArray@  r	  r4   r.   rø   r˜   r4   r2   r  r  4  r
  r4   r  c                   ó*   — e Zd ZdZd„ Zd„ Zdd„Zd„ Zy)ÚUShortr  c                 ó"   — |j                  «       S r.   ©Ú
readUShortr«   s       r2   rŒ   zUShort.readG  ó   € Ø× Ñ Ó"Ð"r4   c                 ó$   — |j                  |«      S r.   )ÚreadUShortArrayrï   s        r2   r£   zUShort.readArrayJ  s   € Ø×%Ñ% eÓ,Ð,r4   Nc                 ó&   — |j                  |«       y r.   ©ÚwriteUShortr·   s         r2   r¯   zUShort.writeM  ó   € Ø×Ñ˜5Õ!r4   c                 ó&   — |j                  |«       y r.   )ÚwriteUShortArrayrö   s        r2   rµ   zUShort.writeArrayP  s   € Ø×Ñ Õ'r4   r.   rø   r˜   r4   r2   r  r  D  s   „ Ø€Jò#ò-ó"ó(r4   r  c                   ó*   — e Zd ZdZd„ Zd„ Zdd„Zd„ Zy)ÚInt8r   c                 ó"   — |j                  «       S r.   )ÚreadInt8r«   s       r2   rŒ   z	Int8.readW  rì   r4   c                 ó$   — |j                  |«      S r.   )ÚreadInt8Arrayrï   s        r2   r£   zInt8.readArrayZ  rð   r4   Nc                 ó&   — |j                  |«       y r.   )Ú	writeInt8r·   s         r2   r¯   z
Int8.write]  ró   r4   c                 ó&   — |j                  |«       y r.   )ÚwriteInt8Arrayrö   s        r2   rµ   zInt8.writeArray`  r÷   r4   r.   rø   r˜   r4   r2   r+  r+  T  rù   r4   r+  c                   ó*   — e Zd ZdZd„ Zd„ Zdd„Zd„ Zy)ÚUInt8r   c                 ó"   — |j                  «       S r.   )Ú	readUInt8r«   s       r2   rŒ   z
UInt8.readg  rÿ   r4   c                 ó$   — |j                  |«      S r.   )ÚreadUInt8Arrayrï   s        r2   r£   zUInt8.readArrayj  r  r4   Nc                 ó&   — |j                  |«       y r.   )Ú
writeUInt8r·   s         r2   r¯   zUInt8.writem  r  r4   c                 ó&   — |j                  |«       y r.   )ÚwriteUInt8Arrayrö   s        r2   rµ   zUInt8.writeArrayp  r	  r4   r.   rø   r˜   r4   r2   r5  r5  d  r
  r4   r5  c                   ó   — e Zd ZdZd„ Zdd„Zy)ÚUInt24é   c                 ó"   — |j                  «       S r.   ©Ú
readUInt24r«   s       r2   rŒ   zUInt24.readw  r!  r4   Nc                 ó&   — |j                  |«       y r.   ©ÚwriteUInt24r·   s         r2   r¯   zUInt24.writez  r'  r4   r.   ©r\   rÊ   rË   r¥   rŒ   r¯   r˜   r4   r2   r?  r?  t  s   „ Ø€Jò#ô"r4   r?  c                   ó   — e Zd Zd„ Zy)ÚComputedIntc                 óV   — |�'|j                  |›d|›�«       |j                  «        y y )Nú=)ÚcommentrÙ   r¿   s         r2   rÁ   zComputedInt.xmlWrite  s,   € ØÐØ×Ñª©uÐ5Ô6Ø×ÑÕð r4   N©r\   rÊ   rË   rÁ   r˜   r4   r2   rI  rI  ~  s   „ ó r4   rI  c                   ó   — e Zd Zy)rO   N©r\   rÊ   rË   r˜   r4   r2   rO   rO   …  ó   „ Ør4   rO   c                   ó   — e Zd Zy)rP   NrO  r˜   r4   r2   rP   rP   ‰  rP  r4   rP   c                   ó   — e Zd Zy)rQ   NrO  r˜   r4   r2   rQ   rQ   �  rP  r4   rQ   c                   ó   — e Zd ZdZd„ Zdd„Zy)ÚTagrè   c                 ó"   — |j                  «       S r.   )ÚreadTagr«   s       r2   rŒ   zTag.read”  s   € Ø�~‰~ÓÐr4   Nc                 ó&   — |j                  |«       y r.   )ÚwriteTagr·   s         r2   r¯   z	Tag.write—  s   € Ø�‰˜Õr4   r.   rG  r˜   r4   r2   rT  rT  ‘  s   „ Ø€Jò ôr4   rT  c                   ó.   — e Zd ZdZdZd„ Zd„ Zd„ Zdd„Zy)	ÚGlyphIDr  ÚHc                 ón   — |j                  |j                  | j                  | j                  |«      «      S r.   )ÚgetGlyphNameManyr£   Útypecoder¥   rï   s        r2   r£   zGlyphID.readArrayŸ  s/   € Ø×$Ñ$Ø×Ñ˜TŸ]™]¨D¯O©O¸UÓCó
ð 	
r4   c                 ól   — |j                  |j                  | j                  | j                  «      «      S r.   )ÚgetGlyphNameÚ	readValuer^  r¥   r«   s       r2   rŒ   zGlyphID.read¤  s(   € Ø× Ñ  ×!1Ñ!1°$·-±-ÀÇÁÓ!QÓRÐRr4   c                 óZ   — |j                  | j                  |j                  |«      «       y r.   )rµ   r^  ÚgetGlyphIDManyrö   s        r2   rµ   zGlyphID.writeArray§  s!   € Ø×Ñ˜$Ÿ-™-¨×)<Ñ)<¸VÓ)DÕEr4   Nc                 óZ   — |j                  | j                  |j                  |«      «       y r.   )Ú
writeValuer^  Ú
getGlyphIDr·   s         r2   r¯   zGlyphID.writeª  s   € Ø×Ñ˜$Ÿ-™-¨¯©¸Ó)?Õ@r4   r.   )	r\   rÊ   rË   r¥   r^  r£   rŒ   rµ   r¯   r˜   r4   r2   rZ  rZ  ›  s#   „ Ø€JØ€Hò
ò
SòFôAr4   rZ  c                   ó   — e Zd ZdZdZy)Ú	GlyphID32rè   ÚLN)r\   rÊ   rË   r¥   r^  r˜   r4   r2   rh  rh  ®  s   „ Ø€JØ�Hr4   rh  c                   ó   — e Zd Zd„ Zy)ÚNameIDc                 ón  — |j                  ||d|fgz   «       |r‹|r‰|j                  d«      }|rv|j                  |«      }|j                  d«       |r|j	                  |«       n@|dk(  r|j	                  d«       n)|j	                  d«       t
        j                  d|z  «       |j                  «        y )Nr³   rK   ú  éÿÿ  ÚNonezmissing from name tablez"name id %d missing from name table)rØ   rY   ÚgetDebugNamer¯   rL  ÚlogÚwarningrÙ   )r…   rÀ   rŽ   r³   rK   r»   Ú	nameTables          r2   rÁ   zNameID.xmlWrite´  s¤   € Ø×Ñ˜D %¨G°UÐ+;Ð*<Ñ"<Ô=Ù‘EØŸ™ Ó(ˆIÙØ ×-Ñ-¨eÓ4�Ø—‘ Ô%ÙØ×%Ñ% dÕ+Ø˜f’_Ø×%Ñ% fÕ-à×%Ñ%Ð&?Ô@Ü—K‘KÐ DÀuÑ LÔMØ×ÑÕr4   NrM  r˜   r4   r2   rk  rk  ³  s   „ ór4   rk  c                   ó   — e Zd Zd„ Zy)Ú	STATFlagsc                 ó  — |j                  ||d|fgz   «       g }|dz  r|j                  d«       |dz  r|j                  d«       |r1|j                  d«       |j                  dj	                  |«      «       |j                  «        y )Nr³   r   ÚOlderSiblingFontAttributer  ÚElidableAxisValueNamerm  ú )rØ   r^   r¯   rL  ÚjoinrÙ   ©r…   rÀ   rŽ   r³   rK   r»   Úflagss          r2   rÁ   zSTATFlags.xmlWriteÆ  s}   € Ø×Ñ˜D %¨G°UÐ+;Ð*<Ñ"<Ô=ØˆØ�4Š<Ø�L‰LÐ4Ô5Ø�4Š<Ø�L‰LÐ0Ô1ÙØ�O‰O˜DÔ!Ø×Ñ˜cŸh™h u›oÔ.Ø×ÑÕr4   NrM  r˜   r4   r2   ru  ru  Å  s   „ ó
r4   ru  c                   ó   — e Zd Zed„ «       Zy)Ú
FloatValuec                 ó   — t        | «      S r.   )ÚfloatrÑ   s    r2   rÕ   zFloatValue.fromStringÔ  ó   € ä�U‹|Ðr4   Nrå   r˜   r4   r2   r~  r~  Ó  s   „ Øñó ñr4   r~  c                   ó   — e Zd ZdZd„ Zdd„Zy)Ú
DeciPointsr  c                 ó(   — |j                  «       dz  S ©Né
   r  r«   s       r2   rŒ   zDeciPoints.readÜ  s   € Ø× Ñ Ó" RÑ'Ð'r4   Nc                 ó>   — |j                  t        |dz  «      «       y r…  )r&  Úroundr·   s         r2   r¯   zDeciPoints.writeß  s   € Ø×Ñœ5 ¨¡Ó,Õ-r4   r.   rG  r˜   r4   r2   rƒ  rƒ  Ù  s   „ Ø€Jò(ô.r4   rƒ  c                   ój   — e Zd ZeZeZeZeZd„ Zdd„Z	e
d„ «       Ze
d„ «       Ze
d„ «       Ze
d„ «       Zy)	ÚBaseFixedValuec                 óV   — | j                   t        || j                  «      «       «      S r.   )ÚfromIntÚgetattrÚreaderMethodr«   s       r2   rŒ   zBaseFixedValue.readé  s$   € Ø�|‰|Ð>œG F¨D×,=Ñ,=Ó>Ó@ÓAÐAr4   Nc                 óZ   —  t        || j                  «      | j                  |«      «       y r.   )r�  ÚwriterMethodÚtoIntr·   s         r2   r¯   zBaseFixedValue.writeì  s"   € Ø*Œ�˜×)Ñ)Ó*¨4¯:©:°eÓ+<Õ=r4   c                 ó.   — t        || j                  «      S r.   )Úfi2flÚprecisionBits©rf   r³   s     r2   rŒ  zBaseFixedValue.fromIntï  ó   € ä�U˜C×-Ñ-Ó.Ð.r4   c                 ó.   — t        || j                  «      S r.   )Úfl2fir”  r•  s     r2   r‘  zBaseFixedValue.toIntó  r–  r4   c                 ó.   — t        || j                  «      S r.   )Ústr2flr”  r•  s     r2   rÕ   zBaseFixedValue.fromString÷  ó   € ä�e˜S×.Ñ.Ó/Ð/r4   c                 ó.   — t        || j                  «      S r.   )Úfl2strr”  r•  s     r2   rÒ   zBaseFixedValue.toStringû  r›  r4   r.   )r\   rÊ   rË   r�   r¥   r”  rŽ  r�  rŒ   r¯   ÚclassmethodrŒ  r‘  rÕ   rÒ   r˜   r4   r2   rŠ  rŠ  ã  sq   „ Ø€JØ"€MØ!€LØ!€LòBó>ð ñ/ó ð/ð ñ/ó ð/ð ñ0ó ð0ð ñ0ó ñ0r4   rŠ  c                   ó   — e Zd ZdZdZdZdZy)ÚFixedrè   é   rë   rò   N©r\   rÊ   rË   r¥   r”  rŽ  r�  r˜   r4   r2   r   r      s   „ Ø€JØ€MØ€LØ�Lr4   r   c                   ó   — e Zd ZdZdZdZdZy)ÚF2Dot14r  é   r  r  Nr¢  r˜   r4   r2   r¤  r¤    s   „ Ø€JØ€MØ€LØ�Lr4   r¤  c                   ód   ‡ — e Zd ZdZdZeˆ fd„«       Zeˆ fd„«       Zed„ «       Zed„ «       Z	ˆ xZ
S )ÚAngleg        g     €†?c                 óB   •— t         ‰| �  |«      | j                  z   dz  S ©Né´   )ÚsuperrŒ  Úbias©rf   r³   Ú	__class__s     €r2   rŒ  zAngle.fromInt  s    ø€ ä‘‘ Ó&¨¯©Ñ1°SÑ8Ð8r4   c                 óB   •— t         ‰| �  |dz  | j                  z
  «      S r©  )r«  r‘  r¬  r­  s     €r2   r‘  zAngle.toInt  s   ø€ ä‰w‰}˜e c™k¨S¯X©XÑ5Ó6Ð6r4   c                 ó^   — t        t        |«      | j                  z  «      | j                  z  S r.   )r   r€  Úfactorr•  s     r2   rÕ   zAngle.fromString  s%   € ô ”u˜U“| c§j¡jÑ0Ó1°C·J±JÑ>Ð>r4   c                 ó.   — t        || j                  «      S r.   )r
   r±  r•  s     r2   rÒ   zAngle.toString!  s   € ä*¨5°#·*±*Ó=Ð=r4   )r\   rÊ   rË   r¬  r±  rž  rŒ  r‘  rÕ   rÒ   Ú__classcell__©r®  s   @r2   r§  r§    s]   ø„ ð €DØ"€Fàó9ó ð9ð ó7ó ð7ð ñ?ó ð?ð ñ>ó ô>r4   r§  c                   ó   — e Zd ZdZy)ÚBiasedAngleg      ð?N)r\   rÊ   rË   r¬  r˜   r4   r2   r¶  r¶  &  s	   „ ð �Dr4   r¶  c                   óN   — e Zd ZdZd„ Zdd„Zed„ «       Zed„ «       Zed„ «       Z	y)	ÚVersionrè   c                 ó&   — |j                  «       }|S r.   rê   )r…   r•   rŽ   r    r³   s        r2   rŒ   zVersion.read/  s   € Ø—‘Ó!ˆØˆr4   Nc                 ó<   — t        |«      }|j                  |«       y r.   )Úfi2verò   r·   s         r2   r¯   zVersion.write3  s   € Ü�e“ˆØ×Ñ˜Õr4   c                 ó   — t        | «      S r.   )Úve2firÑ   s    r2   rÕ   zVersion.fromString7  r�  r4   c                 ó   — d| z  S )Nú0x%08xr˜   rÑ   s    r2   rÒ   zVersion.toString;  r  r4   c                 ó   — t        | d«      S )Nr¡  )r˜  )Úvs    r2   Ú	fromFloatzVersion.fromFloat?  s   € ä�Q˜‹|Ðr4   r.   )
r\   rÊ   rË   r¥   rŒ   r¯   rÛ   rÕ   rÒ   rÂ  r˜   r4   r2   r¸  r¸  ,  sM   „ Ø€Jòó ð ñó ðð ñ ó ð ð ñó ñr4   r¸  c                   ó"   — e Zd ZdZdZd„ Zdd„Zy)ÚChar64z›An ASCII string with up to 64 characters.

    Unused character positions are filled with 0x00 bytes.
    Used in Apple AAT fonts in the `gcid` table.
    é@   c                 óà   — |j                  | j                  «      }|j                  d«      }|dk\  r|d | }t        |dd¬«      }|t        |dd¬«      k7  rt        j                  d|z  «       |S )Nó    r   ÚasciiÚreplace©ÚencodingÚerrorsÚignorez%replaced non-ASCII characters in "%s")ÚreadDatar¥   Úfindr   rq  rr  )r…   r•   rŽ   r    ÚdataÚzeroPosÚss          r2   rŒ   zChar64.readM  sj   € Ø�‰˜tŸ™Ó/ˆØ—)‘)˜EÓ"ˆØ�aŠ<Ø˜˜�>ˆDÜ�$ °Ô;ˆØ”�d W°XÔ>Ò>Ü�K‰KÐ?À!ÑCÔDØˆr4   Nc                 óJ  — t        |dd¬«      }|t        |dd¬«      k7  rt        j                  d|z  «       t        |«      | j                  kD  r$t        j                  d|| j                  fz  «       |d| j                  z  z   d | j                   }|j                  |«       y )NrÈ  rÉ  rÊ  rÍ  z&replacing non-ASCII characters in "%s"z$truncating overlong "%s" to %d bytesrÇ  )r   rq  rr  Úlenr¥   Ú	writeData)r…   r²   rŽ   r    r³   r¸   rÐ  s          r2   r¯   zChar64.writeW  s�   € Ü�u w°yÔAˆØ”7˜5¨7¸8ÔDÒDÜ�K‰KÐ@À5ÑHÔIÜˆt‹9�t—‘Ò&Ü�K‰KØ6¸%ÀÇÁÐ9QÑQôð �u˜tŸ™Ñ.Ñ.Ð0A°$·/±/ÐBˆØ×Ñ˜Õr4   r.   )r\   rÊ   rË   rÌ   r¥   rŒ   r¯   r˜   r4   r2   rÄ  rÄ  D  s   „ ñð €Jòô	r4   rÄ  c                   ó2   — e Zd Zd„ Zd„ Zdd„Zd„ Zd„ Zd„ Zy)	rT   c                 óT   — | j                   xr | j                   j                  |«      S r.   )rX   rœ   r§   s     r2   rœ   zStruct.getRecordSized  s    € Ø�‰ÒH 4§?¡?×#@Ñ#@ÀÓ#HÐHr4   c                 óJ   — | j                  «       }|j                  ||«       |S r.   )rX   Ú	decompile)r…   r•   rŽ   r    Útables        r2   rŒ   zStruct.readg  s!   € Ø—‘Ó!ˆØ�‰˜ Ô%Øˆr4   Nc                 ó(   — |j                  ||«       y r.   )r€   r·   s         r2   r¯   zStruct.writel  s   € Ø�‰�f˜dÕ#r4   c                 ó†   — |€*|r'|j                  ||dgz   «       |j                  «        y y |j                  ||||¬«       y )N)Úemptyr   )rK   )rØ   rÙ   ÚtoXMLr¿   s         r2   rÁ   zStruct.xmlWriteo  sF   € Øˆ=Ùð ×#Ñ# D¨%°<°.Ñ*@ÔAØ×!Ñ!Õ#àà�K‰K˜	 4¨°TˆKÕ:r4   c                 ó*  — d|v rt        |d   «      ry | j                  «       }|j                  d«      }|�t        |«      |_        t        |d«       }|rªd}|j                  «       D ]•  }|j                  sŒd}t        |d«      si |_        |j                  }	|j                  |	vsJ |j                  |	f«       ‚t        ||j                  d «       t        |j                  |j                  «      |	|j                  <   Œ— |D ]-  }
t        |
t        «      r|
\  }}}|j                  ||||«       Œ.Œ/ |j!                  t#        |dd «      ¬«       |rBr@|j                  «       D ]-  }|j                  sŒ|j                  }	|	|j                  = |	rŒ,|`Œ/ |S )NrÝ  ÚFormatÚpostReadFTÚ_propagator)Ú
propagator)r   rX   rY   rÆ   rà  r¦   ÚgetConvertersrƒ   râ  rK   Úsetattrr   Ú__dict__r/   r0   ÚfromXMLÚpopulateDefaultsr�  )r…   r»   r¼   rŽ   rÚ  rà  Ú
noPostReadÚcleanPropagationre   rã  ÚelementrK   s               r2   r½   zStruct.xmlRead|  s”  € Ø�eÑ¤¨¨w©Ô 8ØØ—‘Ó!ˆØ—‘˜8Ó$ˆØÐÜ˜v›;ˆEŒLä  ¨
Ó3Ð3ˆ
Ùà$ÐØ×+Ñ+Ó-ò V�Ø×$Ó$Ø'+Ð$Ü" 4¨Ô7Ø+-˜Ô(Ø!%×!1Ñ!1�JØŸ9™9¨JÑ6ÐO¸¿¹ÀJÐ8OÓOÐ6Ü˜E 4§9¡9¨dÔ3Ü,:¸5¿>¹>È4Ï9É9Ó,U�J˜tŸy™yÒ)ðVð ò 	ˆGÜ˜'¤5Ô)Ø'.Ñ$��e˜WØ—‘˜d E¨7°DÕ9àð	ð 	×Ñ¬'°$¸ÀtÓ*LÐÔMáÙØ!×/Ñ/Ó1ò 1�DØ×(Ó(Ø%)×%5Ñ%5˜
Ø& t§y¡yÐ1Ú)Ø $Ñ 0ð1ð ˆr4   c                 ó2   — dt        | j                  «      z   S )Nz
Struct of )ÚreprrX   ©r…   s    r2   Ú__repr__zStruct.__repr__¦  s   € Øœd 4§?¡?Ó3Ñ3Ð3r4   r.   )	r\   rÊ   rË   rœ   rŒ   r¯   rÁ   r½   rï  r˜   r4   r2   rT   rT   c  s"   „ òIòó
$ò;ò(óT4r4   rT   c                   ó   — e Zd Zd„ Zdd„Zy)rR   c                 óž   — |j                   }| j                  «       }|j                  ||«       |j                  ||j                  z   «       |S r.   )r�   rX   rÙ  r‹   r:   )r…   r•   rŽ   r    r�   rÚ  s         r2   rŒ   zStructWithLength.read«  sA   € Ø�j‰jˆØ—‘Ó!ˆØ�‰˜ Ô%Ø�‰�C˜%×,Ñ,Ñ,Ô-Øˆr4   Nc                 ó$  — t        |j                  «       «      D ]  \  }}|j                  dk(  sŒ n t        |j                  «      z   }t        |t        «      r|dz  }ddddœj                     }	|j                  «       }
|	|_	        |j                  ||«       |j                  «       |
z
  }|j                  «       }|j                  ||||«       |j                  |   dd |j                   k(  sJ ‚|j                  «       |j                  |<   y )Nr:   r   éÞ   i­Þ  ì   ï>[= )r   r  rè   ó   Þ­¾ï)r®   rä  rK   rÔ  Úitemsr/   r   r¥   ÚgetDataLengthr:   r€   ÚgetSubWriterr¯   Ú
getAllData)r…   r²   rŽ   r    r³   r¸   Ú	convIndexre   ÚlengthIndexÚdeadbeefÚbeforeÚlengthÚlengthWriters                r2   r¯   zStructWithLength.write²  s  € Ü(¨×)<Ñ)<Ó)>Ó?ò 	‰OˆI�tØ�y‰y˜NÓ*Ùð	ô ˜&Ÿ,™,Ó'¨)Ñ3ˆÜ�eÔ5Ô6Ø˜1ÑˆKØ ¨:Ñ6°t·±ÑGˆà×%Ñ%Ó'ˆØ%ˆÔØ�‰�f˜dÔ#Ø×%Ñ%Ó'¨&Ñ0ˆØ×*Ñ*Ó,ˆØ�
‰
�<  y°&Ô9Ø�|‰|˜KÑ(Ð,?Ð@QÀ$Ç/Á/Ð,RÒRÐRÐRØ$0×$;Ñ$;Ó$=ˆ�‰�[Ò!r4   r.   ©r\   rÊ   rË   rŒ   r¯   r˜   r4   r2   rR   rR   ª  s   „ òô>r4   rR   c                   ó*   — e Zd ZdZd„ Zd„ Zd„ Zdd„Zy)r[   r  c                 ó"   — |j                  «       S r.   r  r§   s     r2   Ú
readOffsetzTable.readOffsetÈ  r!  r4   c                 ó&   — |j                  d«       y rä   r%  ©r…   r²   s     r2   ÚwriteNullOffsetzTable.writeNullOffsetË  ó   € Ø×Ñ˜1Õr4   c                 óÒ   — | j                  |«      }|dk(  ry | j                  «       }|j                  |«      }|j                  r||_        ||_        |S |j                  ||«       |S rä   )r  rX   ÚgetSubReaderr›   r•   rŽ   rÙ  )r…   r•   rŽ   r    ÚoffsetrÚ  s         r2   rŒ   z
Table.readÎ  sg   € Ø—‘ Ó(ˆØ�QŠ;ØØ—‘Ó!ˆØ×$Ñ$ VÓ,ˆØ�9Š9Ø!ˆEŒLØˆEŒJð ˆð �O‰O˜F DÔ)Øˆr4   Nc                 óÞ   — |€| j                  |«       y |j                  «       }| j                  |_        |�||_        |j	                  || j
                  ¬«       |j                  ||«       y )N©Ú
offsetSize)r  rø  rK   r¸   ÚwriteSubTabler¥   r€   )r…   r²   rŽ   r    r³   r¸   Ú	subWriters          r2   r¯   zTable.writeÛ  sa   € Øˆ=Ø× Ñ  Õ(à×+Ñ+Ó-ˆIØ!ŸY™YˆIŒNØÐ&Ø(3�	Ô%Ø× Ñ  °t·±Ð ÔGØ�M‰M˜) TÕ*r4   r.   )r\   rÊ   rË   r¥   r  r  rŒ   r¯   r˜   r4   r2   r[   r[   Å  s   „ Ø€Jò#òòô	+r4   r[   c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚLTablerè   c                 ó"   — |j                  «       S r.   rý   r§   s     r2   r  zLTable.readOffsetê  rÿ   r4   c                 ó&   — |j                  d«       y rä   r  r  s     r2   r  zLTable.writeNullOffsetí  s   € Ø×Ñ˜!Õr4   N©r\   rÊ   rË   r¥   r  r  r˜   r4   r2   r  r  ç  s   „ Ø€Jò"ór4   r  c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚTable24r@  c                 ó"   — |j                  «       S r.   rB  r§   s     r2   r  zTable24.readOffsetõ  r!  r4   c                 ó&   — |j                  d«       y rä   rE  r  s     r2   r  zTable24.writeNullOffsetø  r  r4   Nr  r˜   r4   r2   r  r  ò  s   „ Ø€Jò#ór4   r  c                   ó$   ‡ — e Zd Zd„ Zˆ fd„Zˆ xZS )r@   c                 óŠ   — | j                   |   |   }| j                  | j                  | j                  | j                  |«      S r.   ©r   r®  rK   rV   rW   ©r…   Ú	tableTypeÚ
lookupTyperX   s       r2   ÚgetConverterzSubStruct.getConverter   ó8   € Ø×%Ñ% iÑ0°Ñ<ˆ
Ø�~‰~˜dŸi™i¨¯©°d·h±hÀ
ÓKÐKr4   c                 ó4   •— t         t        | �  |||d |«       y r.   )r«  r@   rÁ   ©r…   rÀ   rŽ   r³   rK   r»   r®  s         €r2   rÁ   zSubStruct.xmlWrite  s   ø€ ÜŒi˜Ñ'¨	°4¸ÀÀeÕLr4   ©r\   rÊ   rË   r  rÁ   r³  r´  s   @r2   r@   r@   ÿ  s   ø„ òL÷Mð Mr4   r@   c                   ó$   ‡ — e Zd Zd„ Zˆ fd„Zˆ xZS )r>   c                 óŠ   — | j                   |   |   }| j                  | j                  | j                  | j                  |«      S r.   r  r  s       r2   r  zSubTable.getConverter	  r   r4   c                 ó4   •— t         t        | �  |||d |«       y r.   )r«  r>   rÁ   r"  s         €r2   rÁ   zSubTable.xmlWrite  s   ø€ ÜŒh˜Ñ& y°$¸¸tÀUÕKr4   r#  r´  s   @r2   r>   r>     s   ø„ òL÷Lð Lr4   r>   c                   ó   — e Zd Zdd„Zy)r?   Nc                 óF   — d|_         t        j                  | |||||«       y )NT)Ú	Extensionr[   r¯   r·   s         r2   r¯   zExtSubTable.write  s    € ØˆÔÜ�‰�D˜& $¨	°5¸+ÕFr4   r.   )r\   rÊ   rË   r¯   r˜   r4   r2   r?   r?     s   „ ôGr4   r?   c                   ó   — e Zd Zd„ Zy)rA   c                 ó²   — | j                   j                  || j                  «      }| j                  | j                  | j
                  | j                  |«      S r.   )rJ   rY   r]   r®  rK   rV   rW   )r…   Ú
featureTagrX   s      r2   r  zFeatureParams.getConverter  sA   € Ø×+Ñ+×/Ñ/°
¸D×<UÑ<UÓVˆ
Ø�~‰~˜dŸi™i¨¯©°d·h±hÀ
ÓKÐKr4   N)r\   rÊ   rË   r  r˜   r4   r2   rA   rA     s   „ óLr4   rA   c                   ó,   — e Zd ZdZdddœd„Zd„ Zdd„Zy)	r7   r  Nrj   rE   c                ór   — t         j                  | |||||¬«       d|d   dk(  r
dz   | _        y dz   | _        y )NrE   r7   éÿÿÿÿÚ2Ú1)ri   r†   Úwhichr„   s         r2   r†   zValueFormat.__init__   sC   € Ü×ÑØ�$˜  Z¸[ð 	ô 	
ð #¨T°"©X¸ª_ cÑFˆ�
À#ÑFˆ�
r4   c                 óV   — |j                  «       }t        |«      || j                  <   |S r.   )r   r   r2  ©r…   r•   rŽ   r    Úformats        r2   rŒ   zValueFormat.read&  s(   € Ø×"Ñ"Ó$ˆÜ/°Ó7ˆˆt�z‰zÑØˆr4   c                 óV   — |j                  |«       t        |«      || j                  <   y r.   )r&  r   r2  )r…   r²   rŽ   r    r5  r¸   s         r2   r¯   zValueFormat.write+  s#   € Ø×Ñ˜6Ô"Ü/°Ó7ˆˆt�z‰zÒr4   r.   )r\   rÊ   rË   r¥   r†   rŒ   r¯   r˜   r4   r2   r7   r7     s   „ Ø€JðGÈ"ô Gòô
8r4   r7   c                   ó,   — e Zd Zd„ Zd„ Zdd„Zd„ Zd„ Zy)ÚValueRecordc                 ó8   — dt        || j                     «      z  S ©Nr  )rÔ  r2  r§   s     r2   rœ   zValueRecord.getRecordSize1  s   € Ø”3�v˜dŸj™jÑ)Ó*Ñ*Ð*r4   c                 ó@   — || j                      j                  ||«      S r.   )r2  ÚreadValueRecordr«   s       r2   rŒ   zValueRecord.read4  s   € Ø�d—j‘jÑ!×1Ñ1°&¸$Ó?Ð?r4   Nc                 óD   — || j                      j                  |||«       y r.   )r2  ÚwriteValueRecordr·   s         r2   r¯   zValueRecord.write7  s   € Øˆt�z‰zÑ×+Ñ+¨F°D¸%Õ@r4   c                 óF   — |€y |j                  ||| j                  |«       y r.   )rÞ  rK   r¿   s         r2   rÁ   zValueRecord.xmlWrite:  s    € Øˆ=Øà�K‰K˜	 4¨¯©°EÕ:r4   c                 óH   — ddl m}  |«       }|j                  d |||«       |S )Nr   )r8  )ÚotBaser8  rç  )r…   r»   r¼   rŽ   r8  r³   s         r2   r½   zValueRecord.xmlRead@  s#   € Ý'á“ˆØ�‰�d˜E 7¨DÔ1Øˆr4   r.   )r\   rÊ   rË   rœ   rŒ   r¯   rÁ   r½   r˜   r4   r2   r8  r8  0  s   „ ò+ò@óAò;ór4   r8  c                   ó”   — e Zd ZdZddœd„Zd„ Zdd„Zed„ «       Zd	„ Z	d
„ Z
d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)Ú	AATLookupr†  rj   rE   c                óÞ   — t         j                  | |||||¬«       t        | j                  t        «      r| j                  dd d ¬«      | _        y t        dd d | j                  ¬«      | _        y )NrE   ÚValue)rK   rV   rW   )rK   rV   rW   rX   )ri   r†   Ú
issubclassrX   rÏ   Ú	converterr[   r„   s         r2   r†   zAATLookup.__init__K  sa   € Ü×ÑØ�$˜  Z¸[ð 	ô 	
ô �d—o‘o¤{Ô3Ø!Ÿ_™_°'À$ÈD˜_ÓQˆD�Nä"Ø T¨tÀÇÁôˆD�Nr4   c                 ó  — |j                  «       }|dk(  r| j                  ||«      S |dk(  r| j                  ||«      S |dk(  r| j                  ||«      S |dk(  r| j	                  ||«      S |dk(  r| j                  ||«      S J d|z  «       ‚)Nr   r  rè   é   rˆ   zunsupported lookup format: %d)r   ÚreadFormat0ÚreadFormat2ÚreadFormat4ÚreadFormat6ÚreadFormat8r4  s        r2   rŒ   zAATLookup.readV  s¢   € Ø×"Ñ"Ó$ˆØ�QŠ;Ø×#Ñ# F¨DÓ1Ð1Ø�qŠ[Ø×#Ñ# F¨DÓ1Ð1Ø�qŠ[Ø×#Ñ# F¨DÓ1Ð1Ø�qŠ[Ø×#Ñ# F¨DÓ1Ð1Ø�qŠ[Ø×#Ñ# F¨DÓ1Ð1àBÐ9¸FÑBÓB�5r4   Nc                 óò  — t        t        |j                  «       D ��cg c]  \  }}|j                  |«      |f‘Œ c}}«      «      }t        t        t	        d | j                  |||«      | j                  |||«      | j                  |||«      | j                  |||«      g«      «      «      }	|	d   \  }
}}|j                  «       } |«        |j                  «       |z
  }||
k(  sJ d||
|fz  «       ‚y c c}}w )Nr   z;AATLookup format %d claimed to write %d bytes, but wrote %d)
ÚlistÚsortedrö  rf  ÚfilterÚbuildFormat0ÚbuildFormat2ÚbuildFormat6ÚbuildFormat8r÷  )r…   r²   rŽ   r    r³   r¸   ÚglyphÚvalrZ   ÚformatsÚdataSizeÚlookupFormatÚwriteMethodr�   Ú
actualSizes                  r2   r¯   zAATLookup.writee  s  € ÜÜÀEÇKÁKÃM×R±j°e¸S�T—_‘_ UÓ+¨SÒ1ÓRÓSó
ˆô ÜÜØà×)Ñ)¨&°$¸Ó?Ø×)Ñ)¨&°$¸Ó?Ø×)Ñ)¨&°$¸Ó?Ø×)Ñ)¨&°$¸Ó?ð	óó
ó
ˆð /6°a©jÑ+ˆ�, Ø×"Ñ"Ó$ˆÙŒØ×)Ñ)Ó+¨cÑ1ˆ
à˜(Ò"ð	
àHØØØðL
ñ 
ó	
Ù"ùó/ Ss   žC3c                 óÐ   — | j                  |«       | j                  |«       t        ||¬«      \  }}}| j                  |«       | j                  |«       | j                  |«       y )N)ÚnÚitemSize)r&  r   )r²   ÚnumUnitsÚunitSizeÚsearchRangeÚentrySelectorÚ
rangeShifts         r2   ÚwriteBinSearchHeaderzAATLookup.writeBinSearchHeader…  s`   € à×Ñ˜8Ô$Ø×Ñ˜8Ô$Ü1?Ø ô2
Ñ.ˆ�] Jð 	×Ñ˜;Ô'Ø×Ñ˜=Ô)Ø×Ñ˜:Õ&r4   c                 ó¨   ‡ ‡‡‡— t        ‰j                  «       «      }t        ‰«      |k7  ry ‰ j                  j                  }d||z  z   dˆˆ ˆˆfd„fS )Nr  r   c                  ó*   •— ‰j                  ‰‰ ‰«      S r.   )ÚwriteFormat0©rŽ   r…   rZ   r²   s   €€€€r2   r3   z(AATLookup.buildFormat0.<locals>.<lambda>˜  ó   ø€ �D×%Ñ% f¨d°FÓ;€ r4   )rÔ  ÚgetGlyphOrderrG  r¥   )r…   r²   rŽ   rZ   Ú	numGlyphsÚ	valueSizes   ````  r2   rS  zAATLookup.buildFormat0�  sQ   û€ Ü˜×*Ñ*Ó,Ó-ˆ	Üˆv‹;˜)Ò#ØØ—N‘N×-Ñ-ˆ	à�	˜IÑ%Ñ%ØÞ;ð
ð 	
r4   c                 óz   — |j                  d«       |D ]%  \  }}| j                  j                  ||d |d ¬«       Œ' y )Nr   ©r    r³   r¸   )r&  rG  r¯   )r…   r²   rŽ   rZ   ÚglyphID_r³   s         r2   ri  zAATLookup.writeFormat0›  sE   € Ø×Ñ˜1ÔØ%ò 	‰OˆH�eØ�N‰N× Ñ Ø˜¨°EÀtð !õ ñ	r4   c                 óF  ‡ ‡‡‡— |d   \  }}|}g Š|dd  D ]/  \  }}||dz   k7  s||k7  r‰j                  |||f«       |x}}|}Œ.|}Œ1 ‰j                  |||f«       ‰ j                  j                  }	t        ‰«      dz   |	dz   }}
d‰ j                  z   |
|z  z   dˆˆˆ ˆfd„fS )Nr   r   rè   r  c                  ó*   •— ‰j                  ‰‰ ‰«      S r.   )ÚwriteFormat2)rŽ   Úsegmentsr…   r²   s   €€€€r2   r3   z(AATLookup.buildFormat2.<locals>.<lambda>³  s   ø€ �D×%Ñ% f¨d°HÓ=€ r4   )r^   rG  r¥   rÔ  ÚBIN_SEARCH_HEADER_SIZE)r…   r²   rŽ   rZ   ÚsegStartÚsegValueÚsegEndÚglyphIDÚcurValuern  ra  rb  ru  s   ```         @r2   rT  zAATLookup.buildFormat2¢  sÑ   û€ Ø# A™YÑˆ�(ØˆØˆØ!'¨¨ ò 	!ÑˆG�XØ˜& 1™*Ò$¨°HÒ(<Ø—‘ ¨6°8Ð <Ô=Ø$+Ð+�˜6Ø#‘à ‘ð	!ð 	�‰˜ 6¨8Ð4Ô5Ø—N‘N×-Ñ-ˆ	Ü  ›]¨QÑ.°	¸A±�(ˆà�×+Ñ+Ñ+¨h¸Ñ.AÑAØÞ=ð
ð 	
r4   c                 óž  — |j                  d«       | j                  j                  }t        |«      |dz   }}| j	                  |||«       |D ]H  \  }}}	|j                  |«       |j                  |«       | j                  j                  ||d |	d ¬«       ŒJ |j                  d«       |j                  d«       |j                  d|z  «       y )Nr  rè   rp  rn  rÇ  ©r&  rG  r¥   rÔ  rf  r¯   rÕ  )
r…   r²   rŽ   ru  rn  ra  rb  Ú
firstGlyphÚ	lastGlyphr³   s
             r2   rt  zAATLookup.writeFormat2¶  sÇ   € Ø×Ñ˜1ÔØ—N‘N×-Ñ-ˆ	Ü  ›]¨I¸©M�(ˆØ×!Ñ! &¨(°HÔ=Ø,4ò 	Ñ(ˆJ˜	 5Ø×Ñ˜yÔ)Ø×Ñ˜zÔ*Ø�N‰N× Ñ Ø˜¨°EÀtð !õ ð	ð 	×Ñ˜6Ô"Ø×Ñ˜6Ô"Ø×Ñ˜ 9Ñ,Õ-r4   c                 ó˜   ‡ ‡‡‡— ‰ j                   j                  }t        ‰«      |dz   }}d‰ j                  z   |dz   |z  z   dˆˆ ˆˆfd„fS )Nr  r   rI  c                  ó*   •— ‰j                  ‰‰ ‰«      S r.   )ÚwriteFormat6rj  s   €€€€r2   r3   z(AATLookup.buildFormat6.<locals>.<lambda>Ë  rk  r4   )rG  r¥   rÔ  rv  )r…   r²   rŽ   rZ   rn  ra  rb  s   ````   r2   rU  zAATLookup.buildFormat6Å  sO   û€ Ø—N‘N×-Ñ-ˆ	Ü  ›[¨)°a©-�(ˆà�×+Ñ+Ñ+¨x¸!©|¸xÑ.GÑGØÞ;ð
ð 	
r4   c                 óX  — |j                  d«       | j                  j                  }t        |«      |dz   }}| j	                  |||«       |D ]6  \  }}|j                  |«       | j                  j                  ||d |d ¬«       Œ8 |j                  d«       |j                  d|z  «       y )NrI  r  rp  rn  rÇ  r}  )	r…   r²   rŽ   rZ   rn  ra  rb  rz  r³   s	            r2   r‚  zAATLookup.writeFormat6Î  s¨   € Ø×Ñ˜1ÔØ—N‘N×-Ñ-ˆ	Ü  ›[¨)°a©-�(ˆØ×!Ñ! &¨(°HÔ=Ø$ò 	‰NˆG�UØ×Ñ˜wÔ'Ø�N‰N× Ñ Ø˜¨°EÀtð !õ ð	ð
 	×Ñ˜6Ô"Ø×Ñ˜ 9Ñ,Õ-r4   c                 ó´   ‡ ‡‡‡— ‰d   d   ‰d   d   }}t        ‰«      ||z
  dz   k7  ry ‰ j                  j                  }dt        ‰«      |z  z   dˆˆ ˆˆfd„fS )Nr   r/  r   rI  rˆ   c                  ó*   •— ‰j                  ‰‰ ‰«      S r.   )ÚwriteFormat8rj  s   €€€€r2   r3   z(AATLookup.buildFormat8.<locals>.<lambda>ã  rk  r4   )rÔ  rG  r¥   )r…   r²   rŽ   rZ   Ú
minGlyphIDÚ
maxGlyphIDrn  s   ````   r2   rV  zAATLookup.buildFormat8Û  se   û€ Ø!'¨¡¨1¡¨v°b©z¸!©}�Jˆ
Üˆv‹;˜* zÑ1°AÑ5Ò5ØØ—N‘N×-Ñ-ˆ	à”�F“˜iÑ'Ñ'ØÞ;ð
ð 	
r4   c                 óà   — |d   d   }|j                  d«       |j                  |«       |j                  t        |«      «       |D ]%  \  }}| j                  j                  ||d |d ¬«       Œ' y )Nr   rˆ   rp  )r&  rÔ  rG  r¯   )r…   r²   rŽ   rZ   ÚfirstGlyphIDÚ_r³   s          r2   r†  zAATLookup.writeFormat8æ  sr   € Ø˜a‘y ‘|ˆØ×Ñ˜1ÔØ×Ñ˜<Ô(Ø×Ñœ3˜v›;Ô'Øò 	‰HˆAˆuØ�N‰N× Ñ Ø˜¨°EÀtð !õ ñ	r4   c                 óÚ   — t        |j                  «       «      }| j                  j                  ||d |¬«      }t	        |«      D ��ci c]  \  }}|j                  |«      |“Œ c}}S c c}}w ©N©r    r¡   )rÔ  rl  rG  r£   r®   r`  )r…   r•   rŽ   rm  rÐ  Úkr³   s          r2   rJ  zAATLookup.readFormat0ð  s^   € Ü˜×*Ñ*Ó,Ó-ˆ	Ø�~‰~×'Ñ'¨°ÀÈIÐ'ÓVˆÜ<EÀd»O×L±°°5�×!Ñ! !Ó$ eÑ+ÓLÐLùÓLs   ÁA'c                 óÚ  — i }|j                   dz
  }|j                  «       |j                  «       }}|d| j                  j                  z   k\  sJ |«       ‚t	        |«      D ]ˆ  }|j                  |||z  z   dz   «       |j                  «       }|j                  «       }	| j                  j                  ||d ¬«      }
|dk7  sŒat	        |	|dz   «      D ]  }|
||j                  |«      <   Œ ŒŠ |S )Nr  rè   é   ©r    rn  r   ©r�   r   rG  r¥   rž   r‹   rŒ   r`  )r…   r•   rŽ   Úmappingr�   rb  ra  r�   ÚlastÚfirstr³   r�  s               r2   rK  zAATLookup.readFormat2õ  sò   € ØˆØ�j‰j˜1‰nˆØ#×.Ñ.Ó0°&×2CÑ2CÓ2E�(ˆØ˜1˜tŸ~™~×8Ñ8Ñ8Ò8ÐB¸(ÓBÐ8Ü�x“ò 	:ˆAØ�K‰K˜˜a (™lÑ*¨RÑ/Ô0Ø×$Ñ$Ó&ˆDØ×%Ñ%Ó'ˆEØ—N‘N×'Ñ'¨°ÀÐ'ÓEˆEØ�v‹~Ü˜u d¨Q¡hÓ/ò :�AØ49�G˜D×-Ñ-¨aÓ0Ò1ñ:ð	:ð ˆr4   c                 ó$  — i }|j                   dz
  }|j                  «       }|dk\  sJ |«       ‚t        |j                  «       «      D ]Æ  }|j                  |||z  z   dz   «       |j                  «       }|j                  «       }|j                  «       }	|dk7  sŒS|j	                  d«      }
|
j                  ||	z   «       | j
                  j                  |
|d ||z
  dz   ¬«      }t        |«      D ]  \  }}|||j                  ||z   «      <   Œ ŒÈ |S )Nr  rI  r‘  rn  r   r   rŽ  )	r�   r   rž   r‹   r	  rG  r£   r®   r`  )r…   r•   rŽ   r”  r�   rb  r�   r•  r–  r
  Ú
dataReaderrÐ  r�  rÁ  s                 r2   rL  zAATLookup.readFormat4  s  € ØˆØ�j‰j˜1‰nˆØ×$Ñ$Ó&ˆØ˜1Š}Ð&˜hÓ&ˆ}Ü�v×(Ñ(Ó*Ó+ò 	>ˆAØ�K‰K˜˜a (™lÑ*¨RÑ/Ô0Ø×$Ñ$Ó&ˆDØ×%Ñ%Ó'ˆEØ×&Ñ&Ó(ˆFØ�v‹~Ø#×0Ñ0°Ó3�
Ø—‘  f¡Ô-Ø—~‘~×/Ñ/Ø °¸DÀ5¹LÈ1Ñ<Lð 0ó �ô & d›Oò >‘D�A�qØ<=�G˜D×-Ñ-¨e°a©iÓ8Ò9ñ>ð	>ð ˆr4   c                 óŽ  — i }|j                   dz
  }|j                  «       }|d| j                  j                  z   k\  sJ |«       ‚t	        |j                  «       «      D ]d  }|j                  |||z  z   dz   «       |j                  «       }| j                  j                  ||d ¬«      }|dk7  sŒQ|||j                  |«      <   Œf |S )Nr  r‘  r’  rn  r“  )	r…   r•   rŽ   r”  r�   rb  r�   rz  r³   s	            r2   rM  zAATLookup.readFormat6  sÈ   € ØˆØ�j‰j˜1‰nˆØ×$Ñ$Ó&ˆØ˜1˜tŸ~™~×8Ñ8Ñ8Ò8ÐB¸(ÓBÐ8Ü�v×(Ñ(Ó*Ó+ò 	<ˆAØ�K‰K˜˜a (™lÑ*¨RÑ/Ô0Ø×'Ñ'Ó)ˆGØ—N‘N×'Ñ'¨°ÀÐ'ÓEˆEØ˜&Ó Ø6;�˜×)Ñ)¨'Ó2Ò3ð	<ð ˆr4   c                 óî   — |j                  «       }|j                  «       }| j                  j                  ||d |¬«      }t        |«      D ��ci c]  \  }}|j	                  ||z   «      |“Œ c}}S c c}}w r�  )r   rG  r£   r®   r`  )r…   r•   rŽ   r–  r¡   rÐ  r�  r³   s           r2   rN  zAATLookup.readFormat8%  sl   € Ø×!Ñ!Ó#ˆØ×!Ñ!Ó#ˆØ�~‰~×'Ñ'¨°ÀÈEÐ'ÓRˆÜFOÐPTÃo×V¹
¸¸E�×!Ñ! %¨!¡)Ó,¨eÑ3ÓVÐVùÓVs   ÁA1c                 ó˜   — i }|D ]B  }t        |t        «      sŒ|\  }}}|dk(  sŒ | j                  j                  |||«      ||d   <   ŒD |S )NÚLookuprW  )r/   r0   rG  r½   )	r…   r»   r¼   rŽ   r³   rë  rK   ÚaÚ
eltContents	            r2   r½   zAATLookup.xmlRead+  s^   € ØˆØò 	TˆGÜ˜'¤5Õ)Ø&-Ñ#��a˜Ø˜8Ó#Ø(,¯©×(>Ñ(>¸qÀ*ÈdÓ(S�E˜!˜G™*Ò%ð		Tð
 ˆr4   c           	      ó  — |j                  ||«       |j                  «        t        |j                  «       «      D ](  \  }}| j                  j                  |||dd|fg¬«       Œ* |j                  |«       |j                  «        y )Nrœ  rW  )r³   rK   r»   )ÚbegintagrÙ   rQ  rö  rG  rÁ   Úendtag)r…   rÀ   rŽ   r³   rK   r»   rW  s          r2   rÁ   zAATLookup.xmlWrite4  s‚   € Ø×Ñ˜4 Ô'Ø×ÑÔÜ" 5§;¡;£=Ó1ò 	‰LˆE�5Ø�N‰N×#Ñ#Ø˜4 u°8ÀWÈeÐDTÐCUð $õ ð	ð 	×Ñ˜ÔØ×ÑÕr4   r.   )r\   rÊ   rË   rv  r†   rŒ   r¯   rÛ   rf  rS  ri  rT  rt  rU  r‚  rV  r†  rJ  rK  rL  rM  rN  r½   rÁ   r˜   r4   r2   rC  rC  H  s}   „ ØÐàEGô 	òCó
ð@ ñ'ó ð'ò	
òò
ò(.ò
ò.ò	
òòMò
òò(òWòór4   rC  c                   ó&   — e Zd Zd„ Zdd„Zd„ Zd„ Zy)ÚAATLookupWithDataOffsetc                 ó\  — |j                  «       }|j                  «       }|j                  |«      }t        dd d t        «      }|j	                  |||«      }i }	|j                  «       D ]@  \  }
}|j                  ||z   «      }| j                  «       }|j                  ||«       ||	|
<   ŒB |	S ©NÚDataOffsets)rþ   r	  rC  r  rŒ   rö  rX   rÙ  )r…   r•   rŽ   r    ÚlookupOffsetÚ
dataOffsetÚlookupReaderÚlookupÚoffsetsÚresultrW  r
  r˜  Úitems                 r2   rŒ   zAATLookupWithDataOffset.readG  s­   € Ø×'Ñ'Ó)ˆØ×%Ñ%Ó'ˆ
Ø×*Ñ*¨<Ó8ˆÜ˜=¨$°´fÓ=ˆØ—+‘+˜l¨D°)Ó<ˆØˆØ$Ÿ]™]›_ò 	!‰MˆE�6Ø×,Ñ,¨V°jÑ-@ÓAˆJØ—?‘?Ó$ˆDØ�N‰N˜: tÔ,Ø ˆF�5ŠMð		!ð
 ˆr4   Nc                 ó8  — i i d}}}g }	t        ||j                  ¬«      D ]s  }
t        «       }||
   j                  ||«       |j	                  «       }|j                  |d «      }|d k(  r&|}|t        |«      z   }|||<   |	j                  |«       |||
<   Œu |j                  «       }t        dd d t        «      }|j                  ||||d «       |j                  «       }|j                  |d¬«       |j                  |d¬«       |	D ]  }|j                  |«       Œ y )Nr   )Úkeyr¦  rè   r  )rQ  rf  r   r€   rù  rY   rÔ  r^   rø  rC  r  r¯   r  rÕ  )r…   r²   rŽ   r    r³   r¸   ÚoffsetByGlyphÚoffsetByDataÚdataLenÚcompiledDatarW  r  rÐ  r
  ÚlookupWriterrª  Ú
dataWriterÚds                     r2   r¯   zAATLookupWithDataOffset.writeU  s,  € ð 02°2°q W�|ˆØˆÜ˜E t§¡Ô7ò 
	*ˆEÜ%›ˆIØ�%‰L× Ñ  ¨DÔ1Ø×'Ñ'Ó)ˆDØ!×%Ñ% d¨DÓ1ˆFØ˜Š~Ø �Ø!¤C¨£IÑ-�Ø%+�˜TÑ"Ø×#Ñ# DÔ)Ø#)ˆM˜%Ò ð
	*ð ×*Ñ*Ó,ˆÜ˜=¨$°´fÓ=ˆØ�‰�\ 4¨°MÀ4ÔHà×(Ñ(Ó*ˆ
Ø×Ñ˜\°aÐÔ8Ø×Ñ˜Z°AÐÔ6Øò 	$ˆAØ× Ñ  Õ#ñ	$r4   c                 óX   — t        dd d | j                  «      }|j                  |||«      S r¥  )rC  rX   r½   )r…   r»   r¼   rŽ   rª  s        r2   r½   zAATLookupWithDataOffset.xmlReadx  s)   € Ü˜=¨$°°d·o±oÓFˆØ�~‰~˜e W¨dÓ3Ð3r4   c                 ó^   — t        dd d | j                  «      }|j                  |||||«       y r¥  )rC  rX   rÁ   )r…   rÀ   rŽ   r³   rK   r»   rª  s          r2   rÁ   z AATLookupWithDataOffset.xmlWrite|  s*   € Ü˜=¨$°°d·o±oÓFˆØ�‰˜	 4¨°°eÕ<r4   r.   ©r\   rÊ   rË   rŒ   r¯   r½   rÁ   r˜   r4   r2   r£  r£  F  s   „ òó!$òF4ó=r4   r£  c                   ó¢   — e Zd ZdddddœZej	                  «       D � ��ci c]  \  }}||“Œ
 c}}} Zdddœd	„Zd
„ Zd„ Zd„ Z	d„ Z
dd„Zyc c}}} w )ÚMorxSubtableConverterÚLayoutOrderÚReversedLayoutOrderÚLogicalOrderÚReversedLogicalOrder))FF)TF©FT)TTNrj   rE   c                ó:   — t         j                  | |||||¬«       y ©NrE   )ri   r†   r„   s         r2   r†   zMorxSubtableConverter.__init__Œ  s"   € Ü×ÑØ�$˜  Z¸[ð 	õ 	
r4   c                 óR   — |dz  dk7  rd|_         y |dz  dk7  rd|_         y d|_         y )Né    r   ÚAnyé€   ÚVerticalÚ
Horizontal)ÚTextDirection)r…   r|  Úsubtables      r2   Ú"_setTextDirectionFromCoverageFlagsz8MorxSubtableConverter._setTextDirectionFromCoverageFlags‘  s2   € Ø�D‰L˜QÒØ%*ˆHÕ"Ø�d‰l˜qÒ Ø%/ˆHÕ"à%1ˆHÕ"r4   c                 ó„  — |j                   }t        «       }|j                  «       |_        |j	                  «       }|dz  dk7  |dz  dk7  f}| j
                  |   |_        | j                  ||«       |j                  «       |_	        |xj                  |dz  dz  z  c_	        |j	                  «       |_
        |j                  «       |_        t        d   j                  |j                  «      }|€J d|j                  z  «       ‚|j                   |z
  }	|j                  |j                   |j                   |j                  z   |	z
   }
t        |
«      |j                  |	z
  k(  sJ ‚t!        |
|j"                  ¬«      } |«       |_        |j$                  j'                  ||«       |j)                  ||j                  z   «       |S )NrÅ  r   r¡  é   Úmorxz!unsupported 'morx' lookup type %s)rÐ  ÚtableTag)r�   r#   rþ   r:   r7  Ú_PROCESSING_ORDERSÚProcessingOrderrË  r   ÚReservedr;   ÚSubFeatureFlagsr   rY   rÐ  rÔ  r   rÏ  r@   rÙ  r‹   )r…   r•   rŽ   r    r�   rÈ   r|  ÚorderKeyrX   ÚheaderLengthrÐ  Ú	subReaders               r2   rŒ   zMorxSubtableConverter.read™  s‚  € Ø�j‰jˆÜ‹NˆØ×)Ñ)Ó+ˆŒØ× Ñ Ó"ˆØ˜T‘\ aÑ'¨%°$©,¸1Ñ)<Ð=ˆØ ×3Ñ3°HÑ=ˆÔØ×/Ñ/°°qÔ9Ø×&Ñ&Ó(ˆŒ
Ø	�
Š
�u˜s‘{ rÑ)Ñ)�
Ø×&Ñ&Ó(ˆŒØ"×,Ñ,Ó.ˆÔÜ  Ñ(×,Ñ,¨Q¯[©[Ó9ˆ
ØÐØKÐ=ÀÇÁÑKÓK�5ð —z‘z CÑ'ˆØ�{‰{˜6Ÿ:™:¨¯
©
°Q·^±^Ñ(CÀlÑ(RÐSˆÜ�4‹y˜AŸN™N¨\Ñ9Ò9Ð9Ð9Ü! t°f·o±oÔFˆ	Ù “lˆŒØ	�‰×Ñ˜i¨Ô.Ø�‰�C˜!Ÿ.™.Ñ(Ô)Øˆr4   c                 ó  — |j                  ||«       |j                  «        |j                  d|j                  z  «       |j                  «        |j	                  d|j
                  ¬«       |j                  «        |j	                  d|j                  ¬«       |j                  «        |j                  dk7  r0|j	                  dd|j                  z  ¬«       |j                  «        |j                  d|j                  z  «       |j                  «        |j	                  d	d
|j                  z  ¬«       |j                  «        |j                  j                  ||«       |j                  |«       |j                  «        y )NzStructLength=%drÉ  rÑ   rÑ  r   rÒ  z0x%04xzMorphType=%drÓ  r¿  )r   rÙ   rL  r:   rØ   rÉ  rÑ  rÒ  r;   rÓ  r@   rÞ  r¡  r¿   s         r2   rÁ   zMorxSubtableConverter.xmlWrite´  s?  € Ø×Ñ˜4 Ô'Ø×ÑÔØ×ÑÐ+¨e×.@Ñ.@Ñ@ÔAØ×ÑÔØ×Ñ˜O°5×3FÑ3FÐÔGØ×ÑÔØ×ÑÐ-°U×5JÑ5JÐÔKØ×ÑÔØ�>‰>˜QÒØ×Ñ 
°(¸U¿^¹^Ñ2KÐÔLØ×ÑÔØ×Ñ˜.¨5¯?©?Ñ:Ô;Ø×ÑÔØ×ÑÐ-°XÀ×@UÑ@UÑ5UÐÔVØ×ÑÔØ�‰×Ñ˜i¨Ô.Ø×Ñ˜ÔØ×ÑÕr4   c                 óÂ  — t        «       }d}d|_        t        t        |«      D �]  \  }}}|dk(  rEt	        |d   «      }|dz  dk7  |dz  dk7  f}	| j
                  |	   |_        | j                  ||«       ŒR|dk(  r7|d   |_        |j                  | j                  v rŒzJ d|j                  z  «       ‚|dk(  r-|d   |_	        |j                  d	v rŒ¬J d
|j                  z  «       ‚|dk(  rt	        |d   «      |_        ŒÙ|dk(  rt	        |d   «      |_
        Œò|j                  d«      r|j                  ||||«       �ŒJ |«       ‚ |dz  dz  |j                  z  |_        |S )Nr   ÚCoverageFlagsr³   rÅ  r¡  rÑ  zunknown ProcessingOrder: %srÉ  >   rÅ  rÇ  rÈ  zunknown TextDirection %srÒ  rÓ  ÚMorphrÍ  )r#   rÒ  rR  Úistupler   rÐ  rÑ  rË  Ú_PROCESSING_ORDERS_REVERSEDrÉ  rÓ  rN   rç  )
r…   r»   r¼   rŽ   rÈ   ÚcovFlagsÚeltNameÚeltAttrsrž  rÔ  s
             r2   r½   zMorxSubtableConverter.xmlReadÈ  s‰  € Ü‹NˆØˆØˆŒ
Ü-3´G¸WÓ-Eó 	&Ñ)ˆG�X˜zØ˜/Ò)ä# H¨WÑ$5Ó6�Ø%¨™_°Ñ2°XÀ±_ÈÑ4JÐK�Ø$(×$;Ñ$;¸HÑ$E�Ô!Ø×7Ñ7¸À!ÕDØÐ-Ò-Ø$,¨WÑ$5�Ô!Ø×(Ñ(¨D×,LÑ,LÒLð Ø1°A×4EÑ4EÑEóÐLð ˜OÒ+Ø"*¨7Ñ"3�”Ø—‘Ð*KÒKð Ø.°·±Ñ@óÐKð ˜JÒ&Ü% h¨wÑ&7Ó8�•
ØÐ-Ò-Ü$,¨X°gÑ->Ó$?�Õ!Ø×!Ñ! 'Ô*Ø—	‘	˜' 8¨Z¸Ö>à%˜gÓ%�uð1	&ð2  ‘n¨Ñ+¨a¯j©jÑ8ˆŒ
Øˆr4   c                 óH  — |j                   dz  dz	  }| j                  |j                     \  }}||j                  dk(  rdndz  }||rdndz  }||j                  dk(  rdndz  }||rdndz  }||_        t        |j                  «      }	|j                  «       }
d	|_        |j                   }|j                   d
z  |_         |j                  ||«       ||_         |j                  |	   dk(  sJ ‚|j                  «       |
z
  }t        j                  d|«      |j                  |	<   y )Ni   r¡  rÇ  rÆ  r   rÅ  rÅ  rÄ  rô  rn  rõ  z>L)rÒ  rÜ  rÑ  rÉ  rÙ  rÔ  rö  r÷  r:   r€   ÚstructÚpack)r…   r²   rŽ   r    r³   r¸   rÝ  ÚreverseOrderÚlogicalOrderrû  rý  ÚorigReservedrþ  s                r2   r¯   zMorxSubtableConverter.writeè  s#  € Ø—N‘N ZÑ/°BÑ6ˆØ%)×%EÑ%EØ×!Ñ!ñ&
Ñ"ˆ�lð 	˜E×/Ñ/°:Ò=‘DÀ1ÑDˆØ™L‘D¨aÑ/ˆØ˜E×/Ñ/°5Ò8‘D¸aÑ?ˆØ™L‘D¨aÑ/ˆØ&ˆÔÜ˜&Ÿ,™,Ó'ˆØ×%Ñ%Ó'ˆØ'ˆÔð —~‘~ˆØŸ™¨&Ñ0ˆŒØ�‰�f˜dÔ#Ø%ˆŒØ�|‰|˜KÑ(Ð,?Ò?Ð?Ð?Ø×%Ñ%Ó'¨&Ñ0ˆÜ$*§K¡K°°fÓ$=ˆ�‰�[Ò!r4   r.   )r\   rÊ   rË   rÐ  rö  rÜ  r†   rË  rŒ   rÁ   r½   r¯   )r™   r¯  rX  s   000r2   r»  r»  �  sm   „ ð &Ø,Ø%Ø,ñÐð =O×<TÑ<TÓ<V×"WÐ"W±°°S 3¨¡8Ô"WÐð
È"ô 
ò
2òò6ò(ô@>ùô} #Xs    A
r»  c                   óz   — e Zd Zddœd„Zd„ Zd„ Zd„ Zd„ Zd„ Zdd
„Z	d„ Z
d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy	)Ú	STXHeaderrj   rE   c                ó  — t         j                  | |||||¬«       t        | j                  t        «      sJ ‚t        dd d t        «      | _        t        | j                  t        «      rt        dd d t        «      | _
        y d | _
        y )NrE   ÚGlyphClassesÚPerGlyphLookup)ri   r†   rF  rX   r   rC  r  ÚclassLookupr    rZ  ÚperGlyphLookupr„   s         r2   r†   zSTXHeader.__init__  sv   € Ü×ÑØ�$˜  Z¸[ð 	ô 	
ô ˜$Ÿ/™/¬9Ô5Ð5Ð5Ü$ ^°T¸4ÄÓHˆÔÜ�d—o‘oÔ'<Ô=Ü"+Ð,<¸dÀDÌ'Ó"RˆDÕà"&ˆDÕr4   c                 ó¦  — t        «       }|j                  }|j                  d«      }|j                  d«      }|j                  d«      }d }	d }
|j                  «       |_        |j                  ||j                  «       z   «       |j                  ||j                  «       z   «       |j                  ||j                  «       z   «       | j                  �3|j                  d«      }|j                  ||j                  «       z   «       t        | j                  t        «      rê|j                  d«      }	|	j                  ||j                  «       z   «       |j                  d«      }|j                  ||j                  «       z   «       |j                  d«      }
|
j                  ||j                  «       z   «       |
j                  |j                  z
  dz  }|dk\  sJ ‚|j                  |«      |_        | j                  |
|«      |_        nMt        | j                  t        «      r3|j                  d«      }	|	j                  ||j                  «       z   «       | j                  j!                  |||«      |_        t%        |j                  |j                  z
  |j                  dz  z  «      }t'        |«      D ]r  }t)        «       }|j*                  j-                  |«       t'        |j                  «      D ]3  }|j/                  «       }| j1                  ||||	«      |j2                  |<   Œ5 Œt | j                  �| j5                  ||«      |_        |S )Nr   r  )r   r�   r	  rþ   ÚGlyphClassCountr‹   rì  rF  rX   r!   r#  ÚLigComponentsÚ_readLigaturesÚ	Ligaturesr"   rë  rŒ   ré  rÆ   rž   r   ÚStatesr^   r   Ú_readTransitionÚTransitionsÚ_readPerGlyphLookupsÚPerGlyphLookups)r…   r•   rŽ   r    rÚ  r�   ÚclassTableReaderÚstateArrayReaderÚentryTableReaderÚactionReaderÚligaturesReaderÚperGlyphTableReaderÚligComponentReaderÚnumLigComponentsÚ	numStatesÚ
stateIndexÚstateÚ
glyphClassÚ
entryIndexs                      r2   rŒ   zSTXHeader.read  s	  € Ü“ˆØ�j‰jˆØ!×.Ñ.¨qÓ1ÐØ!×.Ñ.¨qÓ1ÐØ!×.Ñ.¨qÓ1ÐØˆØˆØ &× 0Ñ 0Ó 2ˆÔØ×Ñ˜c F×$4Ñ$4Ó$6Ñ6Ô7Ø×Ñ˜c F×$4Ñ$4Ó$6Ñ6Ô7Ø×Ñ˜c F×$4Ñ$4Ó$6Ñ6Ô7Ø×ÑÐ*Ø"(×"5Ñ"5°aÓ"8ÐØ×$Ñ$ S¨6×+;Ñ+;Ó+=Ñ%=Ô>Ü�d—o‘oÔ':Ô;Ø!×.Ñ.¨qÓ1ˆLØ×Ñ˜c F×$4Ñ$4Ó$6Ñ6Ô7Ø!'×!4Ñ!4°QÓ!7ÐØ×#Ñ# C¨&×*:Ñ*:Ó*<Ñ$<Ô=Ø$×1Ñ1°!Ó4ˆOØ× Ñ   v×'7Ñ'7Ó'9Ñ!9Ô:Ø /× 3Ñ 3Ð6H×6LÑ6LÑ LÐQRÑRÐØ# qÒ(Ð(Ð(Ø"4×"DÑ"DÐEUÓ"VˆEÔØ"×1Ñ1°/À4ÓHˆE�OÜ˜Ÿ™Ô)=Ô>Ø!×.Ñ.¨qÓ1ˆLØ×Ñ˜c F×$4Ñ$4Ó$6Ñ6Ô7Ø!×-Ñ-×2Ñ2Ð3CÀTÈ9ÓUˆÔÜØ×!Ñ!Ð$4×$8Ñ$8Ñ8¸U×=RÑ=RÐUVÑ=VÑWó
ˆ	ô   	Ó*ò 	ˆJÜ“JˆEØ�L‰L×Ñ Ô&Ü# E×$9Ñ$9Ó:ò �
Ø-×8Ñ8Ó:�
Ø04×0DÑ0DØ$ j°$¸ó1�×!Ñ! *Ò-ñð	ð ×ÑÐ*Ø$(×$=Ñ$=ØÐ*¨Dó%ˆEÔ!ð ˆr4   c                 ó¢   — | j                  «       }|j                  |j                  ||j                  z  z   «      }|j	                  |||«       |S r.   )rX   r	  r�   r¥   rÙ  )r…   r•   r  rŽ   rú  Ú
transitionÚentryReaders          r2   ró  zSTXHeader._readTransition=  sO   € Ø—_‘_Ó&ˆ
Ø×)Ñ)Ø�J‰J˜ j×&;Ñ&;Ñ;Ñ;ó
ˆð 	×Ñ˜[¨$°Ô=ØÐr4   c                 ó�   — t        |j                  «      }||j                  z
  dz  }|j                  |j	                  |«      «      S r:  )rÔ  rÐ  r�   r]  r#  )r…   r•   rŽ   ÚlimitÚnumLigatureGlyphss        r2   rð  zSTXHeader._readLigaturesE  sA   € Ü�F—K‘KÓ ˆØ" V§Z¡ZÑ/°AÑ5ÐØ×$Ñ$ V×%;Ñ%;Ð<MÓ%NÓOÐOr4   c                 ó.  — d}|j                   D ]ƒ  }|j                  j                  «       D ]d  }t        |t        «      sŒ|j
                  dk7  rt        ||j
                  dz   «      }|j                  dk7  sŒLt        ||j                  dz   «      }Œf Œ… |S )Nr   rn  r   )rò  rô  rZ   r/   r    Ú	MarkIndexÚmaxÚCurrentIndex)r…   rÚ  Ú
numLookupsr  r1   s        r2   Ú_countPerGlyphLookupszSTXHeader._countPerGlyphLookupsJ  s’   € ð
 ˆ
Ø—\‘\ò 	IˆEØ×&Ñ&×-Ñ-Ó/ò I�Ü˜aÔ!6Õ7Ø—{‘{ fÒ,Ü%(¨°Q·[±[À1±_Ó%E˜
Ø—~‘~¨Ó/Ü%(¨°Q·^±^ÀaÑ5GÓ%H™
ñIð	Ið Ðr4   c                 ó  — |j                   }g }t        | j                  |«      «      D ]a  }|j                  d«      }|j	                  ||j                  «       z   «       |j                  | j                  j                  ||i «      «       Œc |S rä   )	r�   rž   r  r	  r‹   rþ   r^   rì  rŒ   )r…   rÚ  r•   rŽ   r�   Úlookupsr‹  r©  s           r2   rõ  zSTXHeader._readPerGlyphLookupsY  s…   € Ø�j‰jˆØˆÜ�t×1Ñ1°%Ó8Ó9ò 	MˆAØ!×.Ñ.¨qÓ1ˆLØ×Ñ˜c F×$4Ñ$4Ó$6Ñ6Ô7Ø�N‰N˜4×.Ñ.×3Ñ3°LÀ$ÈÓKÕLð	Mð ˆr4   Nc                 ód  — t        «       }| j                  j                  ||||j                  d ¬«       t	        |j                  «       d«      }t        |j                  j                  «       «      dz   }d}	| j                  �|	dz  }	|	| j                  j                  z  }	| j                  j                  ||j                  «      \  }
}| j                  ||j                  ||«      \  }}|	t        |«      z   }|t        |«      z   }|t        |«      z   }t	        | j                  ||«      d«      }|
�|t        |«      z   }nd }d\  }}| j!                  ||«      }| j#                  ||«      }|�,t        |«      dk(  sJ ‚|t        |
«      z   }|t        |«      z   }|j%                  |«       |j%                  |	«       |j%                  |«       |j%                  |«       | j                  �|j%                  |«       |�|j%                  |«       |�"|j%                  |«       |j%                  |«       |j'                  |«       |j'                  |«       |j'                  |«       |j'                  |«       |
�|j'                  |
«       |�|j'                  |«       |�|j'                  |«       y y )N)r¸   r  r   r¡  rè   )NNr   )r   rë  r¯   ré  r   rù  r  rZ   rì  rX   ÚactionHeaderSizeÚcompileActionsrò  Ú_compileStatesrÔ  Ú_compilePerGlyphLookupsÚ_compileLigComponentsÚ_compileLigaturesr  rÕ  )r…   r²   rŽ   r    r³   r¸   ÚglyphClassWriterÚglyphClassDataÚglyphClassCountÚglyphClassTableOffsetÚ
actionDataÚactionIndexÚstateArrayDataÚentryTableDataÚstateArrayOffsetÚentryTableOffsetÚperGlyphOffsetÚperGlyphDataÚactionOffsetÚligaturesOffsetÚligComponentsOffsetÚligComponentsDataÚligaturesDatas                          r2   r¯   zSTXHeader.writeb  s¯  € Ü(›?ÐØ×Ñ×ÑØ˜d I¨u×/AÑ/AÈtð 	ô 	
ô Ð-×8Ñ8Ó:¸AÓ>ˆÜ˜e×0Ñ0×7Ñ7Ó9Ó:¸QÑ>ˆØ "ÐØ×ÑÐ*Ø! QÑ&Ð!à §¡×!AÑ!AÑAÐØ"&§/¡/×"@Ñ"@ÀÀuÇ|Á|Ó"TÑˆ
�KØ)-×)<Ñ)<Ø�%—,‘, °ó*
Ñ&ˆ˜ð 1´3°~Ó3FÑFÐØ+¬c°.Ó.AÑAÐØ)¬C°Ó,?Ñ?ˆÜ˜4×7Ñ7¸¸tÓDÀaÓHˆØÐ!Ø+¬c°.Ó.AÑA‰LàˆLà/9Ñ,ˆÐ,Ø ×6Ñ6°u¸dÓCÐØ×.Ñ.¨u°dÓ;ˆØÐ(Ü�|Ó$¨Ò)Ð)Ð)Ø".´°Z³Ñ"@ÐØ1´CÐ8IÓ4JÑJˆOà×Ñ˜/Ô*Ø×ÑÐ/Ô0Ø×ÑÐ*Ô+Ø×ÑÐ*Ô+Ø×ÑÐ*Ø×Ñ˜nÔ-ØÐ#Ø×Ñ˜lÔ+ØÐ*Ø×ÑÐ1Ô2Ø×Ñ˜oÔ.Ø×Ñ˜Ô(Ø×Ñ˜Ô(Ø×Ñ˜Ô(Ø×Ñ˜Ô&ØÐ!Ø×Ñ˜ZÔ(ØÐ(Ø×ÑÐ.Ô/ØÐ$Ø×Ñ˜]Õ+ð %r4   c           	      ó6  — t        «       }g i }}|D ]Ô  }t        |«      D ]Ä  }	|j                  |	   }
t        «       }|
j                  |||«       |j	                  «       }t        |«      |
j                  k(  s)J dt        |
«      |
j                  t        |«      fz  «       ‚|j                  |«      }|€!t        |«      }|||<   |j                  |«       |j                  |«       ŒÆ ŒÖ t        |j	                  «       d«      }t        t        |«      d«      }||fS )Nz1%s has staticSize %d, but actually wrote %d bytesrè   )r   rž   rô  r€   rù  rÔ  r¥   rí  rY   r^   r&  r   r   )r…   rŽ   Ústatesr  r  ÚstateArrayWriterÚentriesÚentryIDsr  r  r  ÚentryWriterÚ	entryDatar  r  r   s                   r2   r  zSTXHeader._compileStates™  s)  € Ü(›?ÐØ �ˆØò 	9ˆEÜ# OÓ4ò 9�
Ø"×.Ñ.¨zÑ:�
Ü+›o�Ø×"Ñ" ;°°kÔBØ'×2Ñ2Ó4�	ä˜	“N j×&;Ñ&;Ò;ðàIÜ˜Ó$Ø×)Ñ)Ü˜	“NðMñ óØ;ð &Ÿ\™\¨)Ó4�
ØÐ%Ü!$ W£�JØ*4�H˜YÑ'Ø—N‘N 9Ô-Ø ×,Ñ,¨ZÕ8ñ#9ð	9ô& Ð-×8Ñ8Ó:¸AÓ>ˆÜœY wÓ/°Ó3ˆØ˜~Ð-Ð-r4   c                 ó†  — | j                   €y| j                  |«      }t        |j                  «      |k(  sJ dt        |j                  «      |fz  «       ‚t	        «       }|j                  D ]D  }|j                  «       }| j                   j                  ||i |d «       |j                  |d¬«       ŒF |j                  «       S )Nr4   zVlen(AATStateTable.PerGlyphLookups) is %d, but the actions inside the table refer to %drè   r  )	rì  r  rÔ  rö  r   rø  r¯   r  rù  )r…   rÚ  rŽ   r  r²   rª  r´  s          r2   r  z!STXHeader._compilePerGlyphLookups³  sÊ   € Ø×ÑÐ&ØØ×/Ñ/°Ó6ˆ
Ü�5×(Ñ(Ó)¨ZÒ7ð 	
ð;ä�5×(Ñ(Ó)¨:Ð6ñ7ó	
Ð7ô
 “ˆØ×+Ñ+ò 	=ˆFØ!×.Ñ.Ó0ˆLØ×Ñ×%Ñ% l°D¸"¸fÀdÔKØ× Ñ  ¸!Ð Õ<ð	=ð × Ñ Ó"Ð"r4   c                 ó”   — t        |d«      sy t        «       }|j                  D ]  }|j                  |«       Œ |j	                  «       S )Nrï  )r¦   r   rï  r&  rù  )r…   rÚ  rŽ   r²   Ú	components        r2   r  zSTXHeader._compileLigComponentsÃ  sH   € Ü�u˜oÔ.ØÜ“ˆØ×,Ñ,ò 	*ˆIØ×Ñ˜yÕ)ð	*à× Ñ Ó"Ð"r4   c                 ó²   — t        |d«      sy t        «       }|j                  D ]"  }|j                  |j	                  |«      «       Œ$ |j                  «       S )Nrñ  )r¦   r   rñ  r&  rf  rù  )r…   rÚ  rŽ   r²   Ú	glyphNames        r2   r  zSTXHeader._compileLigaturesË  sO   € Ü�u˜kÔ*ØÜ“ˆØŸ™ò 	;ˆIØ×Ñ˜tŸ™¨yÓ9Õ:ð	;à× Ñ Ó"Ð"r4   c                 ó^  — |j                  ||«       |j                  «        |j                  d|j                  z  «       |j                  «        t	        |j
                  j                  «       «      D ])  \  }}|j                  d||¬«       |j                  «        Œ+ t        |j                  «      D ]‹  \  }}	|j                  d|¬«       |j                  «        t	        |	j                  j                  «       «      D ]  \  }
}|j                  ||d|
id¬«       Œ |j                  d«       |j                  «        Œ� t        |j                  «      D ]Ž  \  }}|j                  d	|¬«       |j                  «        t	        |j                  «       «      D ])  \  }}|j                  d
||¬«       |j                  «        Œ+ |j                  d	«       |j                  «        Œ� t        |d«      rƒ|j                  d«       |j                  «        t        t        |d«      «      D ])  \  }}|j                  d||¬«       |j                  «        Œ+ |j                  d«       |j                  «        | j!                  |||||«       |j                  |«       |j                  «        y )NzGlyphClassCount=%sÚ
GlyphClass©rW  r³   ÚState©ÚindexÚonGlyphClassÚ
Transition)rŽ   r»   rK   rê  rœ  rï  ÚLigComponent)r;  r³   )r   rÙ   rL  rî  rQ  ré  rö  rØ   r®   rò  rô  rÞ  r¡  rö  r¦   r�  Ú_xmlWriteLigatures)r…   rÀ   rŽ   r³   rK   r»   ÚgÚklassr   r  r  Útransr�   rª  rW  rX  s                   r2   rÁ   zSTXHeader.xmlWriteÓ  s~  € Ø×Ñ˜4 Ô'Ø×ÑÔØ×ÑÐ.°×1FÑ1FÑFÔGØ×ÑÔÜ˜u×1Ñ1×7Ñ7Ó9Ó:ò 	 ‰HˆAˆuØ×Ñ °A¸UÐÔCØ×ÑÕð	 ô "+¨5¯<©<Ó!8ò 	 ÑˆJ˜Ø×Ñ˜w¨jÐÔ9Ø×ÑÔÜ%+¨E×,=Ñ,=×,CÑ,CÓ,EÓ%Fò Ñ!�
˜EØ—‘ØØØ)¨:Ð6Ø%ð	 õ ðð ×Ñ˜WÔ%Ø×ÑÕð	 ô # 5×#8Ñ#8Ó9ò 	 ‰IˆAˆvØ×ÑÐ/°qÐÔ9Ø×ÑÔÜ$ V§\¡\£^Ó4ò $‘
��sØ×#Ñ# H°EÀÐ#ÔEØ×!Ñ!Õ#ð$ð ×ÑÐ-Ô.Ø×ÑÕð	 ô �5˜/Ô*Ø×Ñ˜Ô/Ø×ÑÔÜ#¤G¨E°?Ó$CÓDò $‘��3Ø×#Ñ# N¸!À3Ð#ÔGØ×!Ñ!Õ#ð$ð ×Ñ˜_Ô-Ø×ÑÔØ×Ñ 	¨4°¸¸eÔDØ×Ñ˜ÔØ×ÑÕr4   c                 ó$  — t        |d«      sy |j                  d«       |j                  «        t        t	        |d«      «      D ])  \  }}|j                  d||¬«       |j                  «        Œ+ |j                  d«       |j                  «        y )Nrñ  ÚLigature)r;  rW  )r¦   r   rÙ   r®   r�  rØ   r¡  )r…   rÀ   rŽ   r³   rK   r»   r�   r@  s           r2   r?  zSTXHeader._xmlWriteLigaturesû  s…   € Ü�u˜kÔ*ØØ×Ñ˜;Ô'Ø×ÑÔÜœg e¨[Ó9Ó:ò 	 ‰DˆAˆqØ×Ñ 
°!¸1ÐÔ=Ø×ÑÕð	 ð 	×Ñ˜Ô%Ø×ÑÕr4   c                 óN  — t        «       }t        t        |«      D ]Ü  \  }}}|dk(  r#|d   }|d   }	t        |	«      |j                  |<   Œ/|dk(  r/| j                  |||«      }
|j                  j                  |
«       Œc|dk(  r9| j                  j                  |||«      }|j                  j                  |«       Œ¡|dk(  r| j                  |||«      |_        Œ¿|dk(  sŒÅ| j                  |||«      |_        ŒÞ t        |j                  j!                  «       «      dz   |_        |S )	Nr7  rW  r³   r9  rê  rï  rñ  r   )r   rR  rÛ  r   ré  Ú_xmlReadStaterò  r^   rì  r½   rö  Ú_xmlReadLigComponentsrï  Ú_xmlReadLigaturesrñ  r  rZ   rî  )r…   r»   r¼   rŽ   rÚ  rÞ  rß  rž  rW  r³   r  rª  s               r2   r½   zSTXHeader.xmlRead  s'  € Ü“ˆÜ-3´G¸WÓ-Eò 	UÑ)ˆG�X˜zØ˜,Ò&Ø  Ñ)�Ø  Ñ)�Ü,4°U«O�×"Ñ" 5Ò)Ø˜GÒ#Ø×*Ñ*¨8°ZÀÓF�Ø—‘×#Ñ# EÕ*ØÐ,Ò,Ø×,Ñ,×4Ñ4°X¸zÈ4ÓP�Ø×%Ñ%×,Ñ,¨VÕ4Ø˜OÒ+Ø&*×&@Ñ&@Ø˜j¨$ó'�Õ#ð ˜KÓ'Ø"&×"8Ñ"8¸À:ÈtÓ"T�•ð!	Uô" !$ E×$6Ñ$6×$=Ñ$=Ó$?Ó @À1Ñ DˆÔØˆr4   c                 óÚ   — t        «       }t        t        |«      D ]M  \  }}}|dk(  sŒt        |d   «      }| j	                  «       }	|	j                  ||||«       |	|j                  |<   ŒO |S )Nr=  r<  )r   rR  rÛ  r   rX   rç  rô  )
r…   r»   r¼   rŽ   r  rÞ  rß  rž  r  r  s
             r2   rF  zSTXHeader._xmlReadState  st   € Ü“
ˆÜ-3´G¸WÓ-Eò 	;Ñ)ˆG�X˜zØ˜,Ó&Ü% h¨~Ñ&>Ó?�
Ø!Ÿ_™_Ó.�
Ø×"Ñ" 7¨H°jÀ$ÔGØ0:�×!Ñ! *Ò-ð	;ð ˆr4   c                 ó‚   — g }t        t        |«      D ])  \  }}}|dk(  sŒ|j                  t        |d   «      «       Œ+ |S )Nr>  r³   )rR  rÛ  r^   r   )r…   r»   r¼   rŽ   ÚligComponentsrÞ  rß  Ú_eltContents           r2   rG  zSTXHeader._xmlReadLigComponents&  sN   € ØˆÜ.4´W¸gÓ.Fò 	BÑ*ˆG�X˜{Ø˜.Ó(Ø×$Ñ$¤X¨h°wÑ.?Ó%@ÕAð	Bð Ðr4   c                 óp   — g }t        t        |«      D ]   \  }}}|dk(  sŒ|j                  |d   «       Œ" |S )NrD  rW  )rR  rÛ  r^   )r…   r»   r¼   rŽ   ÚligsrÞ  rß  rL  s           r2   rH  zSTXHeader._xmlReadLigatures-  sD   € ØˆÜ.4´W¸gÓ.Fò 	/Ñ*ˆG�X˜{Ø˜*Ó$Ø—‘˜H WÑ-Õ.ð	/ð ˆr4   r.   )r\   rÊ   rË   r†   rŒ   ró  rð  r  rõ  r¯   r  r  r  r  rÁ   r?  r½   rF  rG  rH  r˜   r4   r2   rç  rç    s^   „ ØEGô 	'ò-ò^òPò
òó5,òn.ò4#ò #ò#ò&òP	òò,òór4   rç  c                   ó&   — e Zd Zd„ Zdd„Zd„ Zd„ Zy)ÚCIDGlyphMapc                 ó¢   — |j                  «       }i }t        |j                  |«      «      D ]  \  }}|dk7  sŒ|j                  |«      ||<   Œ! |S )Nrn  )r   r®   r#  r`  )r…   r•   rŽ   r    ÚnumCIDsr¬  Úcidrz  s           r2   rŒ   zCIDGlyphMap.read6  s[   € Ø×#Ñ#Ó%ˆØˆÜ% f×&<Ñ&<¸WÓ&EÓFò 	9‰LˆC�Ø˜&Ó Ø"×/Ñ/°Ó8��s’ð	9ð ˆr4   Nc                 ó  — |j                  «       D ��ci c]  \  }}||j                  |«      “Œ }}}|rt        |«      dz   nd}	|j                  |	«       t	        |	«      D ]#  }|j                  |j                  |d«      «       Œ% y c c}}w )Nr   r   rn  ©rö  rf  r  r&  rž   rY   )
r…   r²   rŽ   r    r³   r¸   rS  rW  rö  r¡   s
             r2   r¯   zCIDGlyphMap.write>  s~   € Ø?D¿{¹{»}×M±°°e��d—o‘o eÓ,Ñ,ÐMˆÑMÙ"'”�E“
˜Q’¨QˆØ×Ñ˜5Ô!Ü˜“<ò 	7ˆCØ×Ñ˜uŸy™y¨¨fÓ5Õ6ñ	7ùó Ns   ”Bc                 óŒ   — i }t        t        |«      D ].  \  }}}|dk(  sŒ|d   j                  «       |t        |d   «      <   Œ0 |S )NÚCIDrW  rS  )rR  rÛ  Ústripr   ©r…   r»   r¼   rŽ   r¬  ÚeNameÚeAttrsÚ	_eContents           r2   r½   zCIDGlyphMap.xmlReadE  sT   € ØˆÜ(.¬w¸Ó(@ò 	JÑ$ˆE�6˜9Ø˜‹~Ø28¸±/×2GÑ2GÓ2I�”x  u¡Ó.Ò/ð	Jð ˆr4   c                 ó&  — |j                  ||«       |j                  «        t        |j                  «       «      D ]2  \  }}|€Œ	|dk7  sŒ|j	                  d||¬«       |j                  «        Œ4 |j                  |«       |j                  «        y )Nrn  rW  )rS  rW  ©r   rÙ   rQ  rö  rØ   r¡  )r…   rÀ   rŽ   r³   rK   r»   rS  rW  s           r2   rÁ   zCIDGlyphMap.xmlWriteL  s…   € Ø×Ñ˜4 Ô'Ø×ÑÔÜ  §¡£Ó/ò 	$‰JˆC�ØÑ  U¨f£_Ø×#Ñ# E¨s¸%Ð#Ô@Ø×!Ñ!Õ#ð	$ð 	×Ñ˜ÔØ×ÑÕr4   r.   r¹  r˜   r4   r2   rP  rP  5  s   „ òó7òór4   rP  c                   ó&   — e Zd Zd„ Zdd„Zd„ Zd„ Zy)ÚGlyphCIDMapc                 óL  — |j                  «       }|j                  «       }|j                  |«      }|t        |«      kD  r#t        j                  d|t        |«      fz  «       i }t        t        t        |«      t        |«      «      «      D ]  }||   }	|	dk7  sŒ|	|||   <   Œ |S )NzOGlyphCIDMap has %d elements, but the font has only %d glyphs; ignoring the restrn  )rl  r   r#  rÔ  rq  rr  rž   Úmin)
r…   r•   rŽ   r    Ú
glyphOrderr¡   Úcidsr¬  rz  rS  s
             r2   rŒ   zGlyphCIDMap.readX  s¬   € Ø×'Ñ'Ó)ˆ
Ø×!Ñ!Ó#ˆØ×%Ñ% eÓ,ˆØ”3�z“?Ò"Ü�K‰Kð$à',¬c°*«oÐ&>ñ?ôð
 ˆÜœS¤ T£¬C°
«OÓ<Ó=ò 	2ˆGØ�w‘-ˆCØ�f‹}Ø.1��z 'Ñ*Ò+ð	2ð ˆr4   Nc                 ó*  — |j                  «       D ��ci c]  \  }}|�|dk7  r|j                  |«      |“Œ  }}}|rt        |«      dz   nd}	|j                  |	«       t	        |	«      D ]#  }
|j                  |j                  |
d«      «       Œ% y c c}}w )Nrn  r   r   rU  )r…   r²   rŽ   r    r³   r¸   r@  rS  rö  r¡   rz  s              r2   r¯   zGlyphCIDMap.writei  s–   € ð  Ÿ+™+›-÷
á��3Øˆ 3¨&¢=ð �O‰O˜AÓ Ñ#ð
ˆñ 
ñ
 #(”�E“
˜Q’¨QˆØ×Ñ˜5Ô!Ü˜U“|ò 	;ˆGØ×Ñ˜uŸy™y¨°&Ó9Õ:ñ	;ùó
s   ”#Bc                 óp   — i }t        t        |«      D ]   \  }}}|dk(  sŒt        |d   «      ||d   <   Œ" |S )NrW  r³   rW  )rR  rÛ  r   rY  s           r2   r½   zGlyphCIDMap.xmlReadt  sK   € ØˆÜ(.¬w¸Ó(@ò 	DÑ$ˆE�6˜9Ø˜‹~Ü*2°6¸'±?Ó*C��v˜g‘Ò'ð	Dð ˆr4   c                 ó&  — |j                  ||«       |j                  «        t        |j                  «       «      D ]2  \  }}|€Œ	|dk7  sŒ|j	                  d||¬«       |j                  «        Œ4 |j                  |«       |j                  «        y )Nrn  rW  r8  r^  )r…   rÀ   rŽ   r³   rK   r»   rW  rS  s           r2   rÁ   zGlyphCIDMap.xmlWrite{  s„   € Ø×Ñ˜4 Ô'Ø×ÑÔÜ  §¡£Ó/ò 	$‰JˆE�3Ø‰ 3¨&£=Ø×#Ñ# E°¸cÐ#ÔBØ×!Ñ!Õ#ð	$ð 	×Ñ˜ÔØ×ÑÕr4   r.   r¹  r˜   r4   r2   r`  r`  W  s   „ òó"	;òór4   r`  c                   ó&   — e Zd Zd„ Zdd„Zd„ Zd„ Zy)Ú
DeltaValuec                 ó*  — |d   }|d   }|d   }|dv sJ d«       ‚||z
  dz   }d|z  }d|z  }	d|z  dz
  }
d|dz
  z  }g }d\  }}t        |«      D ]A  }|dk(  r|j                  «       d	}}||z
  }||z	  |
z  }||z  r||	z
  }|j                  |«       ŒC |S )
NÚ	StartSizeÚEndSizeÚDeltaFormat©r   r  r@  úillegal DeltaFormatr   )r   r   r   r¡  )rž   r   r^   )r…   r•   rŽ   r    rk  rl  rm  ÚnItemsÚnBitsÚminusOffsetÚmaskÚsignMaskri  ÚtmpÚshiftr�   r³   s                    r2   rŒ   zDeltaValue.read‡  së   € Ø˜kÑ*ˆ	Ø˜IÑ&ˆØ Ñ.ˆØ˜iÑ'Ð>Ð)>Ó>Ð'Ø˜9Ñ$ qÑ(ˆØ�[Ñ ˆØ˜5‘jˆØ�U‘
˜aÑˆØ˜ ™Ñ#ˆàˆ
Ø‰
ˆˆUÜ�v“ò 	%ˆAØ˜ŠzØ#×.Ñ.Ó0°"�U�Ø˜E‘MˆEØ˜E‘\ TÑ)ˆEØ�xÒØ Ñ+�Ø×Ñ˜eÕ$ð	%ð Ðr4   Nc                 ó$  — |d   }|d   }|d   }|}	|dv sJ d«       ‚||z
  dz   }
d|z  }t        |	«      |
k(  sJ ‚d|z  dz
  }d\  }}|	D ].  }||z
  }|||z  |z  z  }|dk(  sŒ|j                  |«       d\  }}Œ0 |d	k7  r|j                  |«       y y )
Nrk  rl  rm  rn  ro  r   )r   r¡  r   r¡  )rÔ  r&  )r…   r²   rŽ   r    r³   r¸   rk  rl  rm  ri  rp  rq  rs  ru  rv  s                  r2   r¯   zDeltaValue.writež  sà   € Ø˜kÑ*ˆ	Ø˜IÑ&ˆØ Ñ.ˆØˆ
Ø˜iÑ'Ð>Ð)>Ó>Ð'Ø˜9Ñ$ qÑ(ˆØ�[Ñ ˆÜ�:‹ &Ò(Ð(Ð(Ø�U‘
˜aÑˆà‰
ˆˆUØò 	#ˆEØ˜E‘MˆEØ˜% $™,¨5Ñ0Ñ1ˆCØ˜‹zØ×"Ñ" 3Ô'Ø"‘
�‘Uð	#ð �BŠ;Ø×Ñ˜sÕ#ð r4   c                 óT   — |j                  ||d|fgz   «       |j                  «        y r×   ©rØ   rÙ   r¿   s         r2   rÁ   zDeltaValue.xmlWrite³  ó+   € Ø×Ñ˜D %¨G°UÐ+;Ð*<Ñ"<Ô=Ø×ÑÕr4   c                 ó   — t        |d   «      S r×   ©r   rº   s       r2   r½   zDeltaValue.xmlRead·  ó   € Ü˜˜g™Ó'Ð'r4   r.   ©r\   rÊ   rË   rŒ   r¯   rÁ   r½   r˜   r4   r2   ri  ri  †  s   „ òó.$ò*ó(r4   ri  c                   ó   — e Zd Zd„ Zdd„Zy)ÚVarIdxMapValuec                 ó  — |d   }|d   }d|dz  z   }d|z  dz
  }d|z
  }d|z
  }	d|dz  dz	  z   }
|j                   |j                  |j                  |j                  d	œ|
   } ||«      D �cg c]  }||z  |	z  ||z  z  ‘Œ c}S c c}w )
NÚEntryFormatrt   r   rÍ  l   ÿÿ r¡  é0   rè   ©r   r  r@  rè   ©r9  r#  ÚreadUInt24Arrayr  )r…   r•   rŽ   r    Úfmtrp  Ú	innerBitsÚ	innerMaskÚ	outerMaskÚ
outerShiftÚ	entrySizer£   Úraws                r2   rŒ   zVarIdxMapValue.read¼  sÆ   € Ø˜Ñ&ˆØ˜>Ñ*ˆà˜˜v™Ñ&ˆ	Ø˜)‘^ qÑ(ˆ	Ø Ñ*ˆ	Ø˜)‘^ˆ
à˜# ™,¨1Ñ,Ñ-ˆ	à×$Ñ$Ø×%Ñ%Ø×%Ñ%Ø×$Ñ$ñ	
ð
 ñˆ	ñ ! Ó(ö
àð �Y‰ :Ñ-°#¸	±/ÓBò
ð 	
ùò 
s   Á,BNc                 ó>  — |d   }|}|d   j                  t        |«      «       d|dz  z   }d|z  dz
  }	d|z
  }
d|dz  dz	  z   }|j                  |j                  |j                  |j
                  dœ|   } ||D �cg c]  }|d	z  |
z	  ||	z  z  ‘Œ c}«       y c c}w )
Nr‚  rt   r   rÍ  r¡  rƒ  rè   r„  l     þ )ÚsetValuerÔ  r=  r)  ÚwriteUInt24Arrayr  )r…   r²   rŽ   r    r³   r¸   r‡  r”  rˆ  r‰  r‹  rŒ  rµ   Úidxs                 r2   r¯   zVarIdxMapValue.writeÒ  sÏ   € Ø˜Ñ&ˆØˆØˆ~Ñ×'Ñ'¬¨G«Ô5à˜˜v™Ñ&ˆ	Ø˜)‘^ qÑ(ˆ	Ø˜)‘^ˆ
à˜# ™,¨1Ñ,Ñ-ˆ	à×%Ñ%Ø×&Ñ&Ø×&Ñ&Ø×%Ñ%ñ	
ð
 ñˆ
ñ 	ð #öàð ˜Ñ#¨
Ñ2°s¸Y±ÓGòõ	
ùòs   Á=Br.   r   r˜   r4   r2   r€  r€  »  s   „ ò
ô,
r4   r€  c                   ó&   — e Zd Zd„ Zdd„Zd„ Zd„ Zy)ÚVarDataValuec                 óP  — g }|d   }|d   }t        |dz  «      }|dz  }|r|j                  |j                  }	}n|j                  |j                  }	}t	        ||«      t        ||«      }}
|j                   ||
«      «       |j                   |	||
z
  «      «       ||kD  r||d …= |S )Nrs   Ú	NumShortsé €  éÿ  )Úboolrî   r  r/  rb  r  Úextend)r…   r•   rŽ   r    rZ   ÚregionCountÚ	wordCountÚ	longWordsÚreadBigArrayÚreadSmallArrayÚn1Ún2s               r2   rŒ   zVarDataValue.readì  s¸   € ØˆàÐ 0Ñ1ˆØ˜kÑ*ˆ	ô ˜ VÑ+Ó,ˆ	Ø Ñ&ˆ	áØ+1×+?Ñ+?À×AVÑAV˜.‰Là+1×+@Ñ+@À&×BVÑBV˜.ˆLä�[ )Ó,¬c°+¸yÓ.IˆBˆØ�‰‘l 2Ó&Ô'Ø�‰‘n R¨"¡WÓ-Ô.Ø�ÒØ�{‘|Ð$àˆr4   Nc                 óD  — |d   }|d   }t        |dz  «      }|dz  }|j                  |j                  f|j                  |j                  fdœ|   \  }	}
t	        ||«      t        ||«      }} |	|d | «        |
||| «       ||kD  r|j                  dg||z
  z  «       y y )Nrs   r•  r–  r—  rÀ  r   )r˜  r  r3  rõ   rb  r  ÚwriteSmallArray)r…   r²   rŽ   r    rZ   r¸   rš  r›  rœ  ÚwriteBigArrayr¢  rŸ  r   s                r2   r¯   zVarDataValue.write  sÏ   € ØÐ 0Ñ1ˆØ˜kÑ*ˆ	ô ˜ VÑ+Ó,ˆ	Ø Ñ&ˆ	ð ×*Ñ*¨F×,AÑ,AÐBØ×(Ñ(¨&×*@Ñ*@ÐAñ*
ð ñ*Ñ&ˆ�ô
 �[ )Ó,¬c°+¸yÓ.IˆBˆÙ�f˜S˜b�kÔ"Ù˜˜r +Ð.Ô/Ø�ÒØ×"Ñ" A 3¨"¨{Ñ*:Ñ#;Õ<ð r4   c                 óT   — |j                  ||d|fgz   «       |j                  «        y r×   ry  r¿   s         r2   rÁ   zVarDataValue.xmlWrite  rz  r4   c                 ó   — t        |d   «      S r×   r|  rº   s       r2   r½   zVarDataValue.xmlRead  r}  r4   r.   r~  r˜   r4   r2   r“  r“  ë  s   „ òó.=ò&ó(r4   r“  c                   ó&   — e Zd Zd„ Zdd„Zd„ Zd„ Zy)ÚTupleValuesc                 ó4   — t        j                  d |«      d   S rä   )r	   ÚdecompileDeltas_)r…   rÐ  rŽ   s      r2   rŒ   zTupleValues.read  s   € Ü×.Ñ.¨t°TÓ:¸1Ñ=Ð=r4   Nc                 ój   — |j                   t           }t        t        j                  || ¬«      «      S )N)ÚoptimizeSize)Úcfgr   Úbytesr	   ÚcompileDeltaValues_)r…   r²   rŽ   r    rZ   r¸   ÚoptimizeSpeeds          r2   r¯   zTupleValues.write"  s1   € ØŸ™Ô!4Ñ5ˆÜÜ×.Ñ.¨vÈÐDUÔVó
ð 	
r4   c                 ó   — t        |d   «      S r×   r|  rº   s       r2   r½   zTupleValues.xmlRead(  r}  r4   c                 óT   — |j                  ||d|fgz   «       |j                  «        y r×   ry  r¿   s         r2   rÁ   zTupleValues.xmlWrite+  rz  r4   r.   r¹  r˜   r4   r2   r§  r§    s   „ ò>ó
ò(ór4   r§  c                   ó:   — e Zd Z	 d	ddddœd„Zd„ Zd	d„Zd„ Zd„ Zy)
Ú	CFF2IndexNrj   )Ú	itemClassÚitemConverterClassrF   c                ót   — t         j                  | |||||¬«       || _        |� |«       | _        y d | _        y rÂ  )ri   r†   Ú
_itemClassÚ
_converter)r…   rK   rV   rW   rX   r´  rµ  rF   s           r2   r†   zCFF2Index.__init__1  sJ   € ô 	×ÑØ�$˜  Z¸[ð 	ô 	
ð $ˆŒà$6Ð$BÑÓ ð 	�ØHLð 	�r4   c                 ó€  ‡ ‡‡‡‡‡— ‰j                  «       Š‰dk(  rg S ‰j                  «       Šd„ Š ‰‰‰«      }‰j                  duxr ‰dkD  }|sÍ |‰dz   «      }g }|j                  d«      }‰j	                  |dz
  «       |D ]”  }	||	k  sJ ‚‰j	                  |	|z
  «      }
‰ j
                  �0‰ j                  «       }|j                  |
‰‰j                  «       |}
n(‰ j                  �‰ j                  j                  |
‰«      }
|j                  |
«       |	}Œ– |S ˆˆˆˆˆˆ fd„} |«       }t        |g‰z  «      }|S )Nr   c                 óf   — | j                   | j                  | j                  | j                  dœ|   S )Nr„  r…  )r•   ÚoffSizes     r2   ÚgetReadArrayz$CFF2Index.read.<locals>.getReadArrayJ  s:   € à×(Ñ(Ø×)Ñ)Ø×)Ñ)Ø×(Ñ(ñ	ð
 ñð r4   Frˆ   r   c                  óŒ   •‡‡‡‡— ‰	j                  «       Š‰	j                  Š‰‰dz   ‰z  z   dz
  Š ‰‰‰«      Šˆˆˆˆˆˆˆ
fd„} | S )Nr   c                 ór  •— ‰	j                  ‰| ‰z  z   «        ‰d«      }‰	j                  ‰|d   z   «       ‰	j                  |d   |d   z
  «      }‰
j                  �1‰
j                  «       }|j                  |‰‰	j                  «       |}|S ‰
j
                  �‰
j
                  j                  |‰«      }|S )Nr  r   r   )r‹   rÎ  r·  rÙ  Ú
localStater¸  rŒ   )r�   r«  r­  ÚobjÚdata_posrŽ   r»  Ú
offset_posr£   r�   r…   s       €€€€€€€r2   r’   z8CFF2Index.read.<locals>.get_read_item.<locals>.read_itemq  s¶   ø€ Ø×$Ñ$ Z°!°g±+Ñ%=Ô>Ù'¨›l�GØ×$Ñ$ X°¸±
Ñ%:Ô;Ø&×/Ñ/°¸±
¸WÀQ¹ZÑ0GÓH�Dà—‘Ð2Ø"Ÿo™oÓ/˜ØŸ™ d¨D°+×2HÑ2HÔIØ"˜ð  �Kð Ÿ™Ð4Ø#Ÿ™×3Ñ3°D¸$Ó?˜Ø�Kr4   r“   )r’   rÁ  rÂ  r£   r�   r¡   rŽ   r¼  r»  r•   r…   s    @@@@€€€€€€r2   r–   z%CFF2Index.read.<locals>.get_read_itemk  sM   ü€ Ø$Ÿk™k›m�Ø#ŸZ™Z�
Ø%¨°©°gÑ(=Ñ=ÀÑA�Ù(¨°gÓ>�	÷ ò  ð !Ð r4   )rþ   r7  r›   ÚpoprÎ  r·  rÙ  r¿  r¸  rŒ   r^   r   )r…   r•   rŽ   r    r£   r›   r«  rö  Ú
lastOffsetr
  r­  rÀ  r–   r’   r¢   r¡   r¼  r»  s   ```            @@@r2   rŒ   zCFF2Index.readD  sL  ý€ Ø× Ñ Ó"ˆØ�AŠ:ØˆIØ×"Ñ"Ó$ˆò	ñ ! ¨Ó1ˆ	à�y‰y Ð%Ò3¨%°!©)ˆÙÙ ¨¡	Ó*ˆGØˆEØ Ÿ™ Q›ˆJØ�O‰O˜J¨™NÔ+à!ò $�Ø! VÒ+Ð+Ð+Ø—‘ v°
Ñ':Ó;�à—?‘?Ð.ØŸ/™/Ó+�CØ—M‘M $¨¨f×.?Ñ.?Ô@Ø‘DØ—_‘_Ð0ØŸ?™?×/Ñ/°°dÓ;�Dà—‘˜TÔ"Ø#‘
ð$ð ˆL÷!ñ !ñ, &›ˆIÜ˜)˜ uÑ,Ó-ˆAð ˆHr4   c                 ó°  — |}|j                  t        |«      «       t        |«      sy | j                  �|D �cg c]  }|j                  |«      ‘Œ }}nF| j                  �:t        |«      D ��cg c]$  \  }}| j                  j                  |||||«      ‘Œ& }}}|D �cg c]  }t        |«      ‘Œ }	}t        t        |	d¬«      «      }	|	d   }
|
dk  rdn|
dk  rdn|
dk  rdnd	}|j                  |«       |j                  |j                  |j                  |j                  d
œ|   } ||	«       |D ]  }|j                  |«       Œ y c c}w c c}}w c c}w )Nr   )Úinitialr/  é   i   r  i   r@  rè   r„  )r  rÔ  r·  r€   r¸  r®   r¯   rP  r(   r;  r=  r)  r�  r  rÕ  )r…   r²   rŽ   r    rZ   r¸   rö  r­  r�   r«  rÄ  r»  rµ   s                r2   r¯   zCFF2Index.writeˆ  sl  € Øˆà×Ñœ#˜e›*Ô%Ü�5ŒzØà�?‰?Ð&Ø49Ö:¨D�T—\‘\ $Õ'Ð:ˆEÑ:Ø�_‰_Ð(ô  )¨Ó/÷á�A�tð —‘×%Ñ% f¨d°I¸tÀQÕGðˆEñ ð
 */Ö/ ”3�t•9Ð/ˆÐ/Ü”z '°1Ô5Ó6ˆà˜R‘[ˆ
ð ˜EÒ!ñ à  7Ò*‘°ZÀ)Ò5K±ÐQRð 	ð
 	×Ñ˜'Ô"ð ×%Ñ%Ø×&Ñ&Ø×&Ñ&Ø×%Ñ%ñ	
ð
 ñˆ
ñ 	�7ÔØò 	#ˆDØ×Ñ˜TÕ"ñ	#ùò5 ;ùóùò
 0s   ¹EÁ.)EÂEc                 óÌ   — | j                   �&| j                  «       }|j                  d |||«       |S | j                  �| j                  j                  |||«      S t	        «       ‚r.   )r·  rç  r¸  r½   rª   )r…   r»   r¼   rŽ   rÀ  s        r2   r½   zCFF2Index.xmlRead­  s[   € Ø�?‰?Ð&Ø—/‘/Ó#ˆCØ�K‰K˜˜e W¨dÔ3ØˆJØ�_‰_Ð(Ø—?‘?×*Ñ*¨5°'¸4Ó@Ð@ä%Ó'Ð'r4   c           
      ó  — | j                   �+t        |«      D ]  \  }}|j                  ||d|fg|«       Œ y | j                  �9t        |«      D ]*  \  }}| j                  j	                  |||||d|fgz   «       Œ, y t        «       ‚)Nr;  )r·  r®   rÞ  r¸  rÁ   rª   )r…   rÀ   rŽ   r³   rK   r»   r�   r­  s           r2   rÁ   zCFF2Index.xmlWrite·  s“   € Ø�?‰?Ð&Ü$ UÓ+ò B‘��4Ø—
‘
˜9 d¨g°q¨\¨N¸DÕAñBà�_‰_Ð(Ü$ UÓ+ò ‘��4Ø—‘×(Ñ(Ø˜t T¨4°¸7ÀA¸,¸Ñ1Gõñô
 &Ó'Ð'r4   r.   )r\   rÊ   rË   r†   rŒ   r¯   r½   rÁ   r˜   r4   r2   r³  r³  0  s3   „ ð ð
ð ØØô
ò&BóH##òJ(ó
(r4   r³  c                   ó   — e Zd Zd„ Zy)Ú
LookupFlagc                 ó°  — |j                  ||d|fgz   «       g }|dz  r|j                  d«       |dz  r|j                  d«       |dz  r|j                  d«       |dz  r|j                  d	«       |d
z  r|j                  d«       |dz  r|j                  d|dz	  z  «       |r |j                  dj                  |«      «       |j	                  «        y )Nr³   r   ÚrightToLeftr  ÚignoreBaseGlyphsrè   ÚignoreLigaturesrˆ   ÚignoreMarksr¡  ÚuseMarkFilteringSeti ÿ  zmarkAttachmentType[%i]ry  )rØ   r^   rL  rz  rÙ   r{  s          r2   rÁ   zLookupFlag.xmlWriteÅ  sÈ   € Ø×Ñ˜D %¨G°UÐ+;Ð*<Ñ"<Ô=ØˆØ�4Š<Ø�L‰L˜Ô'Ø�4Š<Ø�L‰LÐ+Ô,Ø�4Š<Ø�L‰LÐ*Ô+Ø�4Š<Ø�L‰L˜Ô'Ø�4Š<Ø�L‰LÐ.Ô/Ø�6Š>Ø�L‰LÐ1°U¸a±ZÑ@ÔAÙØ×Ñ˜cŸh™h u›oÔ.Ø×ÑÕr4   NrM  r˜   r4   r2   rË  rË  Ä  s   „ ór4   rË  c                   óB   ‡ — e Zd ZeZˆ fd„Zed„ «       Zed„ «       Zˆ xZ	S )Ú
_UInt8Enumc                 óD   •— | j                  t        ‰| �	  |||«      «      S r.   )Ú	enumClassr«  rŒ   )r…   r•   rŽ   r    r®  s       €r2   rŒ   z_UInt8Enum.readÜ  s   ø€ Ø�~‰~œe™g™l¨6°4¸ÓCÓDÐDr4   c                 óJ   — t        | j                  |j                  «       «      S r.   )r�  rÕ  Úupperr•  s     r2   rÕ   z_UInt8Enum.fromStringß  s   € ä�s—}‘} e§k¡k£mÓ4Ð4r4   c                 óT   — | j                  |«      j                  j                  «       S r.   )rÕ  rK   Úlowerr•  s     r2   rÒ   z_UInt8Enum.toStringã  s    € à�}‰}˜UÓ#×(Ñ(×.Ñ.Ó0Ð0r4   )
r\   rÊ   rË   r�   rÕ  rŒ   rž  rÕ   rÒ   r³  r´  s   @r2   rÓ  rÓ  Ù  s6   ø„ Ø€IôEð ñ5ó ð5ð ñ1ó ô1r4   rÓ  c                   ó   — e Zd ZeZy)r$   N)r\   rÊ   rË   Ú_ExtendModerÕ  r˜   r4   r2   r$   r$   è  s   „ Ø�Ir4   r$   c                   ó   — e Zd ZeZy)r%   N)r\   rÊ   rË   Ú_CompositeModerÕ  r˜   r4   r2   r%   r%   ì  s   „ Ø�Ir4   r%   c                   ó@   — e Zd ZdZdZdZdZdZed„ «       Z	ed„ «       Z
y)	ÚMappingEntryFormatr   r  rè   rˆ   rƒ  c                 ó.   — | t         j                  z  dk(  S )NrÄ  ©rß  ÚCODE_POINT_BIAS_BITSrî  s    r2   Úbias_present_u16z#MappingEntryFormat.bias_present_u16ø  ó   € àÔ)×>Ñ>Ñ>À4ÑGÐGr4   c                 ó.   — | t         j                  z  dk(  S )Nrƒ  rá  rî  s    r2   Úbias_present_u24z#MappingEntryFormat.bias_present_u24ü  rä  r4   N)r\   rÊ   rË   ÚHAS_SUBSET_DEFÚHAS_CHILD_ENTRIESÚHAS_ENTRY_IDÚHAS_PATCH_FORMATrâ  Úpropertyrã  ræ  r˜   r4   r2   rß  rß  ð  sH   „ Ø€NØÐØ€LØÐàÐàñHó ðHð ñHó ñHr4   rß  c                   ó&   — e Zd Zd„ Zdd„Zd„ Zd„ Zy)ÚMappingEntriesConverterc                 ó†  — ddl m} ddlm} |d   }g }d}t	        |«      D �]œ  }	i }
t        |j                  «       «      }||
d<   |t
        j                  z  rÂ|j                  «       }g }t	        |«      D ]#  }	|j                  «       }|j                  |«       Œ% ||
d<   |j                  «       }g }t	        |«      D ]U  }	|j                  «       } ||j                  «       d«      } ||j                  «       d«      }|j                  |||d	œ«       ŒW ||
d
<   |t
        j                  z  r`|j                  «       }t        |dz  «      }|dz  }||
d<   g }t	        |«      D ]#  }	|j                  «       }|j                  |«       Œ% ||
d<   |t
        j                  z  rBg }	 |j!                  «       }|dz	  }|dz  }|dz   |z   }|j                  |«       |}|snŒ9||
d<   n|dz   g|
d<   |dz   }|t
        j"                  z  r|j                  «       |
d<   |t
        j$                  z  r„d}|j&                  r|j                  «       }n|j(                  r|j                  «       }||
d<    ||j*                  |j,                  d  |d¬«      \  }} |j/                  | «       t1        |«      |
d<   |j                  |
«       �ŒŸ |S )Nr   )r   )Údecoder   r/  ÚformatFlagsÚfeatureTagsr¡  ©ÚtagÚstartÚendÚdesignSpaceSegmentsrÆ  é   ÚchildEntryConjunctiveÚchildEntryIndicesr   ÚentryIdsÚpatchFormatÚcodePointsBiasiÿÿ )r¬  ÚmaxValueÚ
codePoints)ÚfontTools.misc.fixedToolsr   ÚfontTools.misc.iftSparseBitSetrï  rž   rß  r7  rç  rV  r^   r   rë   rè  r˜  rC  ré  Ú	readInt24rê  râ  ræ  rã  rÐ  r�   rŸ   rQ  )!r…   r•   rŽ   r    r“  Ú	sbsDecodeÚ
entryCountr-  ÚlastEntryIdr‹  Úentryrð  ÚfeatureCountÚfeaturesró  ÚdesignSpaceCountru  ÚsegTagrô  rõ  ÚmodeAndCountÚconjunctiveÚ
childCountÚchildIndicesr‘  ÚidsÚ
encodedValÚdeltaÚhasMoreÚcurrentEntryIdr¬  Ú
codepointsÚconsumeds!                                    r2   rŒ   zMappingEntriesConverter.read  sþ  € ÝCÝFà˜LÑ)ˆ
ØˆØˆä�zÓ"ó G	"ˆAØˆEÜ,¨V×-=Ñ-=Ó-?Ó@ˆKØ#.ˆE�-Ñ àÔ/×>Ñ>Ò>Ø%×/Ñ/Ó1�Ø�Ü˜|Ó,ò )�AØ Ÿ.™.Ó*�CØ—O‘O CÕ(ð)ð (0��mÑ$Ø#)×#4Ñ#4Ó#6Ð Ø�ÜÐ/Ó0ò Q�AØ#Ÿ^™^Ó-�FÙ! &§/¡/Ó"3°RÓ8�EÙ §¡Ó 1°2Ó6�CØ—O‘O¨F¸UÈ3Ñ$OÕPð	Qð
 08�Ð+Ñ,àÔ/×AÑAÒAØ%×/Ñ/Ó1�Ü" <°$Ñ#6Ó7�Ø)¨DÑ0�
Ø1<�Ð-Ñ.Ø!�Ü˜zÓ*ò -�AØ ×+Ñ+Ó-�CØ ×'Ñ'¨Õ,ð-ð .:�Ð)Ñ*àÔ/×<Ñ<Ò<Ø�Øð "(×!1Ñ!1Ó!3�JØ&¨!™O�EØ(¨4Ñ/�GØ%0°1¡_°uÑ%<�NØ—J‘J˜~Ô.Ø"0�Ká"Øð ð %(��jÒ!à%0°1¡_Ð$5��jÑ!Ø)¨A™o�àÔ/×@Ñ@Ò@Ø'-×'7Ñ'7Ó'9��mÑ$àÔ/×DÑDÒDØ�Ø×/Ò/Ø!×,Ñ,Ó.‘DØ ×1Ò1Ø!×,Ñ,Ó.�DØ*.�Ð&Ñ'á'0Ø—K‘K §
¡
 Ð-°DÀ8ô(Ñ$�
˜Hð —‘˜xÔ(Ü&,¨ZÓ&8��lÑ#à�N‰N˜5Ö!ðOG	"ðP ˆr4   Nc           
      óÜ  — ddl m} ddlm} |}d}	|D �]Ñ  }
|
j	                  dt        d«      «      }|j                  |j                  «       |t
        j                  z  rÁ|
j	                  dg «      }|j                  t        |«      «       |D ]  }|j                  |«       Œ |
j	                  dg «      }|j                  t        |«      «       |D ]L  }|j                  |d   «       |j                   ||d	   d
«      «       |j                   ||d   d
«      «       ŒN |t
        j                  z  rb|
j	                  dg «      }|
j	                  dd«      }t        |«      dz  |rdndz  }|j                  |«       |D ]  }|j                  |«       Œ |t
        j                  z  ra|
j	                  dg «      }t!        |«      D ]@  \  }}||	z
  dz
  }|t        |«      dz
  k  rdnd}|dz  |z  }|j                  |dz  «       |}	ŒB n|	dz  }	|t
        j"                  z  r!|j                  |
j	                  dd«      «       |t
        j$                  z  s�ŒE|
j	                  dd«      }|j&                  r|j                  |«       n|j(                  r|j                  |«       |
j	                  dg «      }|j+                   ||D �cg c]  }||k\  sŒ	||z
  ‘Œ c}«      «       �ŒÔ y c c}w )Nr   )Úencode)r   r/  rð  rñ  rö  ró  rô  r¡  rõ  rù  rø  Fr÷  rÆ  rú  r   iÿÿÿ rû  rü  rþ  )r   r  rÿ  r   rY   rß  r;  r³   rç  rÔ  rX  r&  rò   rè  rF  ré  r®   rê  râ  ræ  rã  rÕ  )r…   r²   rŽ   r    r³   r¸   Ú	sbsEncoder˜  r-  ÚlastIdr  rð  r  ró  ru  Úsegr  r  r
  r‘  r  r�   Úeidr  Úhas_moreÚencoded_valuer¬  r  Úcs                                r2   r¯   zMappingEntriesConverter.writeV  sÌ  € ÝFÝCàˆØˆàó 2	YˆEð  Ÿ)™) MÔ3EÀaÓ3HÓIˆKØ×Ñ˜k×/Ñ/Ô0àÔ/×>Ñ>Ò>Ø Ÿ9™9 ]°BÓ7�Ø×!Ñ!¤# h£-Ô0Ø#ò )�CØ—O‘O CÕ(ð)à Ÿ9™9Ð%:¸BÓ?�Ø×"Ñ"¤3 x£=Ô1Ø#ò <�CØ—O‘O C¨¡JÔ/Ø×$Ñ$¡U¨3¨w©<¸Ó%<Ô=Ø×$Ñ$¡U¨3¨u©:°rÓ%:Õ;ð<ð
 Ô/×AÑAÒAØ$Ÿy™yÐ)<¸bÓA�Ø#Ÿi™iÐ(?ÀÓG�Ü # LÓ 1°DÑ 8Á[¹TÐVWÑX�Ø×!Ñ! ,Ô/Ø'ò ,�CØ×&Ñ& sÕ+ð,ð Ô/×<Ñ<Ò<Ø—i‘i 
¨BÓ/�Ü'¨›nò !‘F�A�sð   &™L¨1Ñ,�EØ$%¬¨C«°1©Ò$4™q¸!�HØ%*¨a¡Z°8Ñ$;�MØ×&Ñ& }°xÑ'?Ô@Ø ‘Fñ!ð ˜!‘�àÔ/×@Ñ@Ò@Ø×!Ñ! %§)¡)¨M¸1Ó"=Ô>àÔ/×DÑDÔDØ—y‘yÐ!1°1Ó5�Ø×/Ò/Ø×&Ñ& tÕ,Ø ×1Ò1Ø×&Ñ& tÔ,Ø"ŸY™Y |°RÓ8�
Ø× Ñ ¡¸jÖ+V¸ÈAÐQUËI¨A°«HÒ+VÓ!WÖXñe2	Yùòd ,Ws   Ë
K)ËK)c           
      ó<  — |D �]  }|j                  dt        d«      «      }|j                  d|j                  ¬«       |j	                  «        d|v r-|d   D ]%  }|j                  d|¬«       |j	                  «        Œ' d|v r-|d   D ]%  }	|j                  d	|	¬«       |j	                  «        Œ' d
|v r8|d
   D ]0  }
|j                  d|
d   |
d   |
d   ¬«       |j	                  «        Œ2 d|v ri|j                  dt        |j                  dd«      «      ¬«       |j	                  «        |d   D ]%  }|j                  d|¬«       |j	                  «        Œ' d|v r&|j                  d|d   ¬«       |j	                  «        d|v rq|j                  d|j                  dd«      ¬«       |j	                  «        dj                  d„ |d   D «       «      }|j                  d|¬«       |j	                  «        |j                  d«       |j	                  «        �Œ y )Nrð  r   r  )rð  rú  ÚentryIdrÑ   rñ  r,  rö  ÚdesignSpaceSegmentró  rô  rõ  rò  rù  rø  FÚ
childEntryr:  rû  rþ  rü  ry  c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr.   )Ústr)r™   r  s     r2   rš   z3MappingEntriesConverter.xmlWrite.<locals>.<genexpr>¸  s   è ø€ Ò(M°A¬¨Q¯Ñ(Mùs   ‚)	rY   rß  r   r³   rÙ   rØ   rÆ   rz  r¡  )r…   rÀ   rŽ   r³   rK   r»   r  Úformat_flagsr  ró  r  r‘  ÚcodePointsStrs                r2   rÁ   z MappingEntriesConverter.xmlWrite‘  sM  € Øó *	 ˆEØ Ÿ9™9 ]Ô4FÀqÓ4IÓJˆLØ×Ñ˜w°L×4FÑ4FÐÔGØ×ÑÔØ˜UÑ"Ø  Ñ,ò (�CØ×'Ñ'¨	¸Ð'Ô=Ø×%Ñ%Õ'ð(ð  Ñ%Ø  Ñ/ò (�CØ×'Ñ'¨¸CÐ'Ô@Ø×%Ñ%Õ'ð(ð %¨Ñ-Ø Ð!6Ñ7ò (�CØ×'Ñ'Ø,Ø ™JØ! '™lØ ™Jð	 (ô ð ×%Ñ%Õ'ð(ð # eÑ+Ø×#Ñ#Ø+Ü˜eŸi™iÐ(?ÀÓGÓHð $ô ð ×!Ñ!Ô#Ø Ð!4Ñ5ò (�CØ×'Ñ'¨¸CÐ'Ô@Ø×%Ñ%Õ'ð(ð  Ñ%Ø×#Ñ# M¸¸}Ñ9MÐ#ÔNØ×!Ñ!Ô#Ø˜uÑ$Ø×#Ñ#Ø$¨E¯I©IÐ6FÈÓ,Jð $ô ð ×!Ñ!Ô#Ø #§¡Ñ(M¸¸|Ñ9LÔ(MÓ M�Ø×#Ñ# L¸Ð#ÔFØ×!Ñ!Ô#Ø×Ñ˜WÔ%Ø×ÑÖñU*	 r4   c           
      óÎ  — g }|D �]×  }t        |t        «      sŒ|\  }}}|dk(  sŒ!t        |j                  dd«      «      }dt	        |«      i}|D �]x  }	t        |	t        «      sŒ|	\  }
}}|
dk(  r.|j                  dg «      j                  t        |d   «      «       ŒN|
dk(  r%|j                  dg «      j                  |d   «       Œx|
d	k(  rA|j                  d
g «      j                  |d   t        |d   «      t        |d   «      dœ«       Œ¾|
dk(  rt        t        |d   «      «      |d<   ŒÞ|
dk(  r/|j                  dg «      j                  t        |d   «      «       �Œ|
dk(  rt        |d   «      |d<   �Œ*|
dk(  rt        |d   «      |d<   �ŒB|
dk(  s�ŒI|d   j                  «       D �cg c]  }|sŒt        |«      ‘Œ c}|d<   �Œ{ |j                  |«       �ŒÚ |S c c}w )Nr  rð  Ú0r  rú  r³   r,  rñ  r   rö  ró  rô  rõ  rò  rø  r!  rù  r;  rû  rü  rþ  )r/   r0   r   rY   rß  Ú
setdefaultr^   r€  r˜  ÚsplitrÆ   )r…   r»   r¼   rŽ   r-  ÚelemrK   Úformat_flags_intr  Úe_elemÚenameÚeattrsÚecontentr  s                 r2   r½   zMappingEntriesConverter.xmlRead¾  s  € ØˆØó '	&ˆDÜ˜d¤EÔ*ØØ#'Ñ ˆD�%˜Ø�w‹Ü#+¨E¯I©I°mÀSÓ,IÓ#JÐ Ø&Ô(:Ð;KÓ(LÐM�Ø%ó �FÜ% f¬eÔ4Ø Ø.4Ñ+�E˜6 8Ø 	Ò)Ø×(Ñ(¨°RÓ8×?Ñ?Ü$ V¨G¡_Ó5õð  ,Ò.Ø×(Ñ(¨¸Ó;×BÑBÀ6È'Á?ÕSØÐ"6Ò6Ø×(Ñ(Ð)>ÀÓC×JÑJà'-¨e¡}Ü).¨v°g©Ó)?Ü',¨V°E©]Ó';ñõð Ð"9Ò9Ü9=¼hÀvÈgÁÓ>WÓ9X˜Ð5Ò6Ø ,Ò.Ø×(Ñ(Ð)<¸bÓA×HÑHÜ$ V¨G¡_Ó5öð  -Ò/Ü/7¸¸w¹Ó/H˜˜mÓ,ØÐ"2Ò2Ü2:¸6À'¹?Ó2K˜Ð.Ó/Ø ,Ô.à,2°7©O×,AÑ,AÓ,Cö/Ø'(ÂqœC �Fò/˜˜lÓ+ð;ð@ —‘˜uÖ%ðO'	&ðP ˆùò	/s   Æ.G"Æ6G"r.   r~  r˜   r4   r2   rí  rí    s   „ òPód9Yòv+ óZ*r4   rí  Úint8Úint16Úint32r<   r8   Úuint24r=   Úchar64rá  ÚMappingEntriesÚOffsetÚLOffsetÚOffset24Ú	TupleList)rµ  )r´  c                 ó$   — t        t        | ¬«      S ©N)rX   )r)   rC  ©ÚCs    r2   r3   r3   	  ó   € œ7¤9¸Ô;€ r4   c                 ó$   — t        t        | ¬«      S r;  )r)   r£  r<  s    r2   r3   r3   	  s   € ¬Ô1HÐUVÔ)W€ r4   c                 ó$   — t        t        | ¬«      S r;  )r)   rç  r<  s    r2   r3   r3   	  r>  r4   c                 ó$   — t        t        | ¬«      S r;  )r)   r[   r<  s    r2   r3   r3   	  s   € œ'¤%°AÔ6€ r4   c                 ó$   — t        t        | ¬«      S r;  )r)   r  r<  s    r2   r3   r3   	  s   € œ7¤6°aÔ8€ r4   c                 ó$   — t        t        | ¬«      S r;  )r)   r  r<  s    r2   r3   r3   	  s   € œW¤W¸Ô;€ r4   )ÚVarCompositeGlyphListrP  r`  rG   rH   rI   r#   rC  r£  rç  ÚOffsetToÚ	LOffsetToÚLOffset24To)ƒrÿ  r   r“  r   r˜  r   r�  r   rš  r   r»  r   r½  Ú%fontTools.ttLib.tables.TupleVariationr	   ÚfontTools.misc.roundToolsr
   r   ÚfontTools.misc.textToolsr   r   r   r   r   ÚfontTools.misc.lazyToolsr   ÚfontTools.ttLibr   r   rA  r   r   r   r   r   ÚotDataSchemar   ÚotTablesr   r   r   r   r   r    r!   r"   r#   r$   rÛ  r%   rÝ  r&   Ú	itertoolsr'   r(   Ú	functoolsr)   Útypesr*   rÍ   rá  Útypingr+   ÚloggingÚenumr,   Ú	getLoggerr\   rq  rÛ  rP  rg   Úobjectri   rÏ   rÝ   râ   rç   rû   r  r  r  r  r+  r5  r?  rI  rO   rP   rQ   rT  rZ  rh  rk  ru  r~  rƒ  rŠ  r   r¤  r§  r¶  r¸  rÄ  rT   rR   r[   r  r  r@   r>   r?   rA   r7   r8  rC  r£  r»  rç  rP  r`  ri  r€  r“  r§  r³  rË  rÓ  rß  rí  rS   r˜   r4   r2   ú<module>rW     se  ð÷÷ õ Aß Jß MÕ MÝ -ß ?÷õ õ $÷÷ ÷ ó ÷ .Ý Ý !Û 	Û Ý Û Ý à€g×Ñ˜Ó!€Ù
(€ðC(˜t I™ó C(ôLj�Fô jôZ/�-ô /ô"�Kô ôˆ{ô ô&ˆ8ô &ô 'ˆHô 'ô  ˆeô  ô!ˆ}˜eô !ô'ˆHô 'ô (ˆXô (ô &ˆ8ô &ô 'ˆHô 'ô "ˆXô "ô �(ô  ô	�K ô 	ô	�[ &ô 	ô	�K ô 	ôˆ+ô ôAˆkô Aô&�ô ô
ˆVô ô$�ô ô�ô ô.�ô .ô0�Zô 0ô:ˆNô ô ˆnô  ô>ˆGô >ô0�%ô ôˆkô ô0ˆ[ô ô>D4ˆ]ô D4ôN>�vô >ô6+ˆFô +ôDˆUô ôˆeô ôM�ô MôLˆuô LôG�&˜(ô GôL�Eô Lô8�(ô 8ô&�+ô ô0t�ô tô|8=˜mô 8=ôv|>˜Mô |>ôBp�ô pôf	�-ô ôD,�-ô ,ô^2(�ô 2(ôj-
�]ô -
ô`0(�=ô 0(÷fñ ô$Q(�ô Q(ôh�ô ô*1�ô 1ô�ô ô�Jô ôH˜ô Hô&e˜mô eðP3à
ˆDð3ð ˆUð3ð ˆTð	3ð
 ˆUð3ð ˆfð3ð ˆfð3ð ˆeð3ð ˆfð3ð ˆwð3ð �ð3ð ˆwð3ð 
ˆ3ð3ð ˆwð3ð �ð3ð  ˆfð!3ð" �*ð#3ð$ ˆUñ%3ð& ˆwð'3ð( ˆUð)3ð* �;ð+3ð, ˆfð-3ð. Ð-ð/3ð0 ˆeð13ð2 ˆvð33ð4 �ð53ð6 �;ð73ð8 �*ð93ð: �nð;3ð< �Lð=3ð> �*ð?3ð@ �*ðA3ðB �]ðC3ðD �ðE3ðF ‘˜°{ÔCñG3ñH % YÐ:KÔLàØØ!Ø$Ø!Ø)á;ÙWÙ;Ù6Ù8Ù;òe3Ñ r4   