Ë
    £eh¨  ã                   ó  — d Z ddlmZmZmZmZ ddlmZmZm	Z	m
Z
 ddlmZ ddlZddlZ ej                  e«      Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zdgdz  Zdegz  edd degz  edd degz  edd degz  edd eed<    ee«      dk(  sJ ‚edd Zeed<   eed<   edd Zeed<   eed<   eed<   g d¢Z e e«      D � �ci c]  \  } }|| “Œ
 c}} Z!dZ"d„ Z#g d¢Z$d„ Z% e%d«      Z& e%d«      Z' e%d «      Z(ejR                  fd!„Z* ed«       ed"«      z   Z+d#„ Z, G d$„ d%e-«      Z. G d&„ d'e/«      Z0g d(¢Z1 G d)„ d*e0«      Z2 G d+„ d,e2«      Z3 G d-„ d.e3«      Z4 G d/„ d0e/«      Z5 G d1„ d2e5«      Z6 G d3„ d4e/«      Z7d5„ Z8yc c}} w )6zwpsCharStrings.py -- module implementing various kinds of CharStrings:
CFF dictionary data and Type1/Type2 CharStrings.
é    )ÚfixedToFloatÚfloatToFixedÚfloatToFixedToStrÚstrToFixedToFloat)ÚbytechrÚbyteordÚ	bytesjoinÚstrjoin)Ú	BoundsPenNc                 ó¬   — |dk(  r|t        ||   «      f}|dz   }n|}	 | j                  |   }| j                  |«      }||fS # t        $ r d |fcY S w xY w)Né   é   )r   Ú	operatorsÚKeyErrorÚhandle_operator)ÚselfÚb0ÚdataÚindexÚopÚoperatorÚvalues          úZ/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/fontTools/misc/psCharStrings.pyÚread_operatorr      st   € Ø	ˆR‚xØ”'˜$˜u™+Ó&Ð'ˆØ˜‘	‰àˆðØ—>‘> "Ñ%ˆð × Ñ  Ó*€EØ�%ˆ<Ðøô ò Ø�Uˆ{Òðús   ŸA ÁAÁAc                 ó   — |dz
  |fS )Né‹   © ©r   r   r   r   s       r   Ú	read_byter   "   s   € Ø�‰8�Uˆ?Ðó    c                 óD   — t        ||   «      }|dz
  dz  |z   dz   |dz   fS )Né÷   é   él   r   ©r   ©r   r   r   r   Úb1s        r   Úread_smallInt1r(   &   s2   € Ü	��e‘Ó	€BØ�‰H˜Ñ˜bÑ  3Ñ&¨°©	Ð1Ð1r    c                 óF   — t        ||   «      }|dz
   dz  |z
  dz
  |dz   fS )Néû   r#   r$   r   r%   r&   s        r   Úread_smallInt2r+   +   s4   € Ü	��e‘Ó	€BØ�#‰Xˆ;˜Ñ˜rÑ! CÑ'¨°©Ð2Ð2r    c                 óL   — t        j                  d|||dz    «      \  }||dz   fS )Nú>hé   ©ÚstructÚunpack©r   r   r   r   r   s        r   Úread_shortIntr3   0   ó.   € Ü�}‰}˜T 4¨°¸±	Ð#:Ó;�H€UØ�%˜!‘)ÐÐr    c                 óL   — t        j                  d|||dz    «      \  }||dz   fS )Nú>lé   r/   r2   s        r   Úread_longIntr8   5   r4   r    c                 ób   — t        j                  d|||dz    «      \  }t        |d¬«      |dz   fS )Nr6   r7   é   ©ÚprecisionBits)r0   r1   r   r2   s        r   Úread_fixed1616r=   :   s5   € Ü�}‰}˜T 4¨°¸±	Ð#:Ó;�H€UÜ˜¨RÔ0°%¸!±)Ð;Ð;r    c                 ó"   — t         sJ ‚t        |fS ©N)ÚNotImplementedErrorÚNotImplementedr   s       r   Úread_reservedrB   ?   s   € ÝÐÐÜ˜5Ð Ð r    c                 ó¬   — d}	 t        ||   «      }|dz   }|dz  dz	  }|dz  }|dk(  rn|t        |   z   }|dk(  rn|t        |   z   }ŒEt        |«      |fS )NÚ r   éð   r7   é   )r   ÚrealNibblesÚfloat)r   r   r   r   ÚnumberÚbÚnibble0Únibble1s           r   Úread_realNumberrM   D   s   € Ø€FØ
Ü�D˜‘KÓ ˆØ˜‘	ˆØ�t‘8 ‘/ˆØ�d‘(ˆØ�cŠ>ØØœ+ gÑ.Ñ.ˆØ�cŠ>ØØœ+ gÑ.Ñ.ˆð ô �‹=˜%ÐÐr    r#   é    é×   r"   r7   r*   éÿ   é   é   é   )Ú0Ú1Ú2Ú3Ú4Ú5Ú6Ú7Ú8Ú9ú.ÚEúE-Nú-éÁ   c                 óÀ   — i }i }| D ]R  }t        |«      dk(  r|d   ||d   <   n|dd  ||d   <   t        |d   t        «      r|d   ||d   <   ŒG|d   f||d   <   ŒT ||fS )Nr.   r   r   )ÚlenÚ
isinstanceÚtuple)ÚoperatorListÚoperÚopcÚitems       r   ÚbuildOperatorDictrk   |   sˆ   € Ø€DØ
€CØò &ˆÜˆt‹9˜Š>Ø  ™GˆD��a‘ŠMà   ˜HˆD��a‘‰MÜ�d˜1‘gœuÔ%Ø ™7ˆC��Q‘ŠLà  ™G˜:ˆC��Q‘ŠLð&ð �ˆ9Ðr    )4©r   Úhstem©é   Úvstem©r7   Úvmoveto©é   Úrlineto©é   Úhlineto©é   Úvlineto©é   Ú	rrcurveto©é
   Úcallsubr©é   Úreturn©é   Úendchar)rF   Úvsindex)r:   Úblend)é   Úhstemhm)é   Úhintmask)é   Úcntrmask©é   Úrmoveto©é   Úhmoveto)é   Úvstemhm)é   Ú
rcurveline)é   Ú
rlinecurve)é   Ú	vvcurveto)é   Ú	hhcurveto)rR   Ú	callgsubr©rS   Ú	vhcurveto©é   Ú	hvcurveto)©r   r   Úignore))r   ro   Úand))r   r7   Úor))r   rt   Únot))r   r}   Ústore))r   é	   Úabs))r   r€   Úadd))r   rƒ   Úsub©)r   r   Údiv))r   é   Úload))r   r†   Úneg))r   rF   Úeq))r   rŠ   Údrop))r   rŽ   Úput))r   r‘   Úget))r   r”   Úifelse))r   r–   Úrandom))r   r˜   Úmul))r   rœ   Úsqrt))r   rž   Údup))r   rQ   Úexch))r   rR   r   ))r   rS   Úroll))r   é"   Úhflex))r   é#   Úflex))r   é$   Úhflex1))r   é%   Úflex1c                 óÞ   — | dk(  rt        d«      }t        d«      }n'| dk(  rd }t        d«      }n| dk(  sJ ‚t        d«      }d }|t         t        j                  t        j                  |fd„}|S )NÚcffrQ   rR   Út1rP   Út2c                 ó¤  — d| cxk  rdk  rn n || dz   «      }|S d| cxk  rdk  r$n n!| dz
  }  || dz	  dz   «       || dz  «      z   }|S d	| cxk  rd
k  r%n n"|  dz
  }  || dz	  dz   «       || dz  «      z   }|S |�d| cxk  rdk  rn n| |d| «      z   }|S |€)t         j                  d«        |d«       |d| «      z   }|S | |d| «      z   }|S )Ni•ÿÿÿék   r   r$   ék  r}   r"   rP   i•ûÿÿi”ÿÿÿr*   i €ÿÿiÿ  r-   zk4-byte T2 number got passed to the IntType handler. This should happen only when reading in old XML files.
r6   )ÚlogÚwarning)r   Ú
fourByteOpr   Úpackr1   Ú	twoByteOpÚcodes          r   Ú	encodeIntz getIntEncoder.<locals>.encodeIntÒ   s%  € ð �5Ô˜CÕÙ˜5 3™;Ó'ˆDð4 ˆð3 �EÔ!˜TÕ!Ø˜C‘KˆEÙ˜E Q™J¨#Ñ-Ó.±¸À¹Ó1FÑFˆDð. ˆð- �eÔ#˜tÕ#Ø�F˜S‘LˆEÙ˜E Q™J¨#Ñ-Ó.±¸À¹Ó1FÑFˆDð( ˆð' Ð" v°Ô'?¸%Õ'?Ø™t D¨%Ó0Ñ0ˆDð$ ˆð# Ðô �K‰Kð#ôñ
 ˜3“<¡$ t¨UÓ"3Ñ3ˆDð ˆð ¡ T¨5Ó 1Ñ1ˆDØˆr    )r   r0   rÒ   r1   )ÚformatrÓ   rÑ   rÕ   s       r   ÚgetIntEncoderr×   Æ   sq   € Ø�‚Ü˜B“Kˆ	Ü˜R“[‰
Ø	�4ŠØˆ	Ü˜S“\‰
à˜Š~Ðˆ~Ü˜B“Kˆ	Øˆ
ð ÜÜ�[‰[Ü�}‰}Øó#ðJ Ðr    rÉ   rÊ   rË   c                 ó`   — t        | d¬«      }|dz  dk(  rt        |dz	  «      S d |d|«      z   S )zFor T2 onlyr:   r;   iÿÿ  r   ó   ÿr6   )r   ÚencodeIntT2)ÚfrÒ   r   s      r   ÚencodeFixedrÜ   ÿ   s;   € ä˜¨"Ô-€EØˆv�~˜ÒÜ˜5 B™;Ó'Ð'à™˜d EÓ*Ñ*Ð*r    rF   c                 óî  — | dk(  rt         S d| z  }|d d dk(  r|dd  }n½|d d dk(  r	d|dd  z   }n¬|j                  d	«      r.|j                  d
«      }d|t        |«      t        |«      z
  fz  }nm|j	                  d«      }|j	                  d«      }|dk7  rF|dk7  rA|d | }||dz   | }t        ||dz   d  «      }|t        |«      z
  }|dk(  r|›|›d
�}nd|||fz  }|j                  d«      r5|j                  dd«      \  }	}d|	|j                  d
«      t        |«      fz  }g }
|r\|d   }|dd  }|dk(  r2|d d }|dk(  r|dd  }d}n
|dk(  r|dd  }|j                  d
«      r|dd  }|
j                  t        |   «       |rŒ\|
j                  d«       t        |
«      dz  r|
j                  d«       t        d«      }t        dt        |
«      d«      D ]  }|t        |
|   dz  |
|dz      z  «      z   }Œ! |S )Ng        z%.8Gr.   z0.r   ro   z-0.ra   Ú000rT   z%sE%dr^   r_   éÿÿÿÿz%s%sE%d)z.0z-.0z%s%sE-%dr   r`   ú+rF   rS   r7   )ÚrealZeroBytesÚendswithÚrstriprd   ÚfindÚintÚ
startswithÚsplitÚlstripÚappendÚrealNibblesDictr   Úrange)rÛ   ÚsÚsignificantDigitsÚdotIndexÚeIndexÚintegerPartÚfractionalPartÚexponentÚnewExponentÚsignÚnibblesÚcÚc2ÚdÚis                  r   ÚencodeFloatrú     sC  € àˆC‚xÜÐð 	�‰
€AØˆˆ!€u�‚}ØˆaˆbˆE‰Ø	
ˆ2ˆAˆ�%ŠØ�!�A�B�%‰K‰Ø	
�‰�EÔ	ØŸH™H S›MÐØÐ(¬#¨a«&´3Ð7HÓ3IÑ*IÐJÑJ‰à—6‘6˜#“;ˆØ—‘˜“ˆØ�rŠ>˜f¨šlØ˜I˜X˜,ˆKØ˜x¨!™|¨fÐ5ˆNÜ˜1˜V a™Z˜\˜?Ó+ˆHØ"¤S¨Ó%8Ñ8ˆKØ˜aÒÙ*ªNÐ;‘à ¨n¸kÐ JÑJ�Ø‡|�|�MÔ"Ø—'‘'˜#˜q“/‰ˆˆaØ˜$ §¡¨£¬s°1«vÐ6Ñ6ˆØ€GÙ
Øˆa‰DˆØˆaˆbˆEˆØ�Š8Ø�2�A�ˆBØ�SŠyØ�a�b�E�Ø‘Ø�s’Ø�a�b�E�Ø�|‰|˜CÔ Ø�a�b�E�Ø�‰” qÑ)Ô*ò ð ‡N�N�3ÔÜ
ˆ7ƒ|�aÒØ�‰�sÔÜ�‹€AÜ�1”c˜'“l AÓ&ò :ˆØ”˜ ™
 a™¨'°!°a±%©.Ñ8Ó9Ñ9‰ð:à€Hr    c                   ó   — e Zd Zy)ÚCharStringCompileErrorN)Ú__name__Ú
__module__Ú__qualname__r   r    r   rü   rü   ?  s   „ Ør    rü   c                   ó  — e 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d„ Zd„ Zd„ Zd„ Zd„ Ze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"d!„ Z#d"„ Z$d#„ Z%d$„ Z&d%„ Z'd&„ Z(d'„ Z)d(„ Z*d)„ Z+d*„ Z,y),ÚSimpleT2DecompilerNc                 óœ   — || _         t        |«      | _        || _        t        |«      | _        || _        || _        | j                  «        y r?   )Ú
localSubrsÚcalcSubrBiasÚ	localBiasÚglobalSubrsÚ
globalBiasÚprivateÚblenderÚreset)r   r  r  r  r	  s        r   Ú__init__zSimpleT2Decompiler.__init__D  s@   € Ø$ˆŒÜ% jÓ1ˆŒØ&ˆÔÜ& {Ó3ˆŒØˆŒØˆŒØ�
‰
�r    c                 óX   — g | _         g | _        d| _        d| _        d| _        d| _        y ©Nr   )ÚcallingStackÚoperandStackÚ	hintCountÚhintMaskBytesÚ
numRegionsÚvsIndex©r   s    r   r
  zSimpleT2Decompiler.resetM  s/   € ØˆÔØˆÔØˆŒØˆÔØˆŒØˆ�r    c                 óÄ  — | j                   j                  |«       |j                  «       }|rg }|j                  }nd„ }| j                  j                  }d}	 |j	                  |«      \  }}}|€nP ||«       |r=d|z   }	t        | |	d «      }
|
� |
|«      }|r'|\  }} ||«       n| j                  «        n ||«       Œh|r|j                  «       | j                   d= y )Nc                  ó   — y r?   r   )Úxs    r   ú<lambda>z,SimpleT2Decompiler.execute.<locals>.<lambda>\  s   � r    r   Úop_rß   )r  ré   ÚneedsDecompilationr  ÚgetTokenÚgetattrÚpopallÚ
setProgram)r   Ú
charStringr  ÚprogramÚpushToProgramÚpushToStackr   ÚtokenÚ
isOperatorÚhandlerNameÚhandlerÚrvr  s                r   ÚexecutezSimpleT2Decompiler.executeU  sð   € Ø×Ñ× Ñ  Ô,Ø'×:Ñ:Ó<ÐÙØˆGØ#ŸN™N‰Má*ˆMØ×'Ñ'×.Ñ.ˆØˆØØ'1×':Ñ':¸5Ó'AÑ$ˆE�:˜uØˆ}ØÙ˜%Ô ÙØ# e™m�Ü! $¨°TÓ:�ØÐ&Ù  ›�BÙØ/1Ñ,˜ uÙ% mÕ4à—K‘K•Má˜EÔ"ð! ñ" Ø×!Ñ! 'Ô*Ø×Ñ˜bÑ!r    c                 ó>   — | j                   d   }| j                   d= |S ©Nrß   ©r  ©r   r   s     r   ÚpopzSimpleT2Decompiler.popt  s%   € Ø×!Ñ! "Ñ%ˆØ×Ñ˜bÐ!Øˆr    c                 óB   — | j                   d d  }g | j                   d d  |S r?   r+  ©r   Ústacks     r   r  zSimpleT2Decompiler.popally  s'   € Ø×!Ñ!¡!Ð$ˆØ!ˆ×Ñ™!ÐØˆr    c                 ó:   — | j                   j                  |«       y r?   )r  ré   r,  s     r   ÚpushzSimpleT2Decompiler.push~  s   € Ø×Ñ× Ñ  Õ'r    c                 ó   — | j                   ry y r?   r+  ©r   r   s     r   Ú	op_returnzSimpleT2Decompiler.op_return�  s   € Ø×ÒØð r    c                  ó   — y r?   r   r4  s     r   Ú
op_endcharzSimpleT2Decompiler.op_endchar…  ó   € Ør    c                  ó   — y r?   r   r4  s     r   Ú	op_ignorezSimpleT2Decompiler.op_ignoreˆ  r8  r    c                 ó~   — | j                  «       }| j                  || j                  z      }| j                  |«       y r?   )r-  r  r  r(  ©r   r   Ú	subrIndexÚsubrs       r   Úop_callsubrzSimpleT2Decompiler.op_callsubr‹  s0   € Ø—H‘H“Jˆ	Ø�‰˜y¨4¯>©>Ñ9Ñ:ˆØ�‰�TÕr    c                 ó~   — | j                  «       }| j                  || j                  z      }| j                  |«       y r?   )r-  r  r  r(  r<  s       r   Úop_callgsubrzSimpleT2Decompiler.op_callgsubr�  s2   € Ø—H‘H“Jˆ	Ø×Ñ 	¨D¯O©OÑ ;Ñ<ˆØ�‰�TÕr    c                 ó$   — | j                  «        y r?   ©Ú
countHintsr4  s     r   Úop_hstemzSimpleT2Decompiler.op_hstem•  ó   € Ø�‰Õr    c                 ó$   — | j                  «        y r?   rC  r4  s     r   Úop_vstemzSimpleT2Decompiler.op_vstem˜  rF  r    c                 ó$   — | j                  «        y r?   rC  r4  s     r   Ú
op_hstemhmzSimpleT2Decompiler.op_hstemhm›  rF  r    c                 ó$   — | j                  «        y r?   rC  r4  s     r   Ú
op_vstemhmzSimpleT2Decompiler.op_vstemhmž  rF  r    c                 óÈ   — | j                   s'| j                  «        | j                  dz   dz  | _         | j                  d   j	                  || j                   «      \  }}||fS )Nrz   r}   rß   )r  rD  r  r  ÚgetBytes)r   r   r  s      r   Úop_hintmaskzSimpleT2Decompiler.op_hintmask¡  s^   € Ø×!Ò!Ø�O‰OÔØ"&§.¡.°1Ñ"4¸Ñ!:ˆDÔØ#×0Ñ0°Ñ4×=Ñ=¸eÀT×EWÑEWÓXÑˆ�uØ˜eÐ#Ð#r    c                 ód   — | j                  «       }| j                  t        |«      dz  z   | _        y ©Nr.   )r  r  rd   ©r   Úargss     r   rD  zSimpleT2Decompiler.countHintsª  s%   € Ø�{‰{‹}ˆØŸ™¬#¨d«)°q©.Ñ8ˆ�r    c                 ó   — t         ‚r?   ©r@   r4  s     r   Úop_andzSimpleT2Decompiler.op_and¯  ó   € Ü!Ð!r    c                 ó   — t         ‚r?   rU  r4  s     r   Úop_orzSimpleT2Decompiler.op_or²  rW  r    c                 ó   — t         ‚r?   rU  r4  s     r   Úop_notzSimpleT2Decompiler.op_notµ  rW  r    c                 ó   — t         ‚r?   rU  r4  s     r   Úop_storezSimpleT2Decompiler.op_store¸  rW  r    c                 ó   — t         ‚r?   rU  r4  s     r   Úop_abszSimpleT2Decompiler.op_abs»  rW  r    c                 ó   — t         ‚r?   rU  r4  s     r   Úop_addzSimpleT2Decompiler.op_add¾  rW  r    c                 ó   — t         ‚r?   rU  r4  s     r   Úop_subzSimpleT2Decompiler.op_subÁ  rW  r    c                 ó   — t         ‚r?   rU  r4  s     r   Úop_divzSimpleT2Decompiler.op_divÄ  rW  r    c                 ó   — t         ‚r?   rU  r4  s     r   Úop_loadzSimpleT2Decompiler.op_loadÇ  rW  r    c                 ó   — t         ‚r?   rU  r4  s     r   Úop_negzSimpleT2Decompiler.op_negÊ  rW  r    c                 ó   — t         ‚r?   rU  r4  s     r   Úop_eqzSimpleT2Decompiler.op_eqÍ  rW  r    c                 ó   — t         ‚r?   rU  r4  s     r   Úop_dropzSimpleT2Decompiler.op_dropÐ  rW  r    c                 ó   — t         ‚r?   rU  r4  s     r   Úop_putzSimpleT2Decompiler.op_putÓ  rW  r    c                 ó   — t         ‚r?   rU  r4  s     r   Úop_getzSimpleT2Decompiler.op_getÖ  rW  r    c                 ó   — t         ‚r?   rU  r4  s     r   Ú	op_ifelsezSimpleT2Decompiler.op_ifelseÙ  rW  r    c                 ó   — t         ‚r?   rU  r4  s     r   Ú	op_randomzSimpleT2Decompiler.op_randomÜ  rW  r    c                 ó   — t         ‚r?   rU  r4  s     r   Úop_mulzSimpleT2Decompiler.op_mulß  rW  r    c                 ó   — t         ‚r?   rU  r4  s     r   Úop_sqrtzSimpleT2Decompiler.op_sqrtâ  rW  r    c                 ó   — t         ‚r?   rU  r4  s     r   Úop_dupzSimpleT2Decompiler.op_dupå  rW  r    c                 ó   — t         ‚r?   rU  r4  s     r   Úop_exchzSimpleT2Decompiler.op_exchè  rW  r    c                 ó   — t         ‚r?   rU  r4  s     r   Úop_indexzSimpleT2Decompiler.op_indexë  rW  r    c                 ó   — t         ‚r?   rU  r4  s     r   Úop_rollzSimpleT2Decompiler.op_rollî  rW  r    c                 ó  — | j                   dk(  r| j                  j                  «       | _         | j                  «       }|| j                   dz   z  }| j                  €| j
                  ||z
   d …= y t        | j
                  «      |z
  }||z   x}}||k  r^|| j                   z   }| j
                  || }| j	                  | j                  |«      }	| j
                  |xx   |	z  cc<   |}|dz  }||k  rŒ^g | j
                  |d  y ©Nr   r   )r  r  ÚgetNumRegionsr-  r	  r  rd   r  )
r   r   Ú	numBlendsÚnumOpsÚargiÚend_argsÚtupleiÚnext_tiÚdeltasÚdeltas
             r   Úop_blendzSimpleT2Decompiler.op_blendñ  s  € Ø�?‰?˜aÒØ"Ÿl™l×8Ñ8Ó:ˆDŒOØ—H‘H“Jˆ	Ø˜dŸo™o°Ñ1Ñ2ˆØ�<‰<ÐØ×!Ñ!Ø˜9Ñ$Ð%Ñ'ñô �t×(Ñ(Ó)¨FÑ2ˆDØ $ yÑ 0Ð0ˆH�vØ˜’/Ø  4§?¡?Ñ2�Ø×*Ñ*¨6°'Ð:�ØŸ™ T§\¡\°6Ó:�Ø×!Ñ! $Ó'¨5Ñ0Ó'Ø �Ø˜‘	�ð ˜“/ð ,.ˆD×Ñ˜h˜iÑ(r    c                 ór   — | j                  «       }|| _        | j                  j                  |«      | _        y r?   )r-  r  r  r„  r  )r   r   Úvis      r   Ú
op_vsindexzSimpleT2Decompiler.op_vsindex  s*   € Ø�X‰X‹ZˆØˆŒØŸ,™,×4Ñ4°RÓ8ˆ�r    ©NN)-rý   rþ   rÿ   r  r
  r(  r-  r  r2  r5  r7  r:  r?  rA  rE  rH  rJ  rL  rO  Úop_cntrmaskrD  rV  rY  r[  r]  r_  ra  rc  re  rg  ri  rk  rm  ro  rq  rs  ru  rw  ry  r{  r}  r  r�  r�  r�  r   r    r   r  r  C  sÖ   „ óòò"ò>ò
ò
(òòòòò
ò
òòòò$ð €Kò9ò
"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò.ó*9r    r  )rl   rn   rq   rs   rv   ry   r|   )r¬   Ú	closepathr   r‚   )r²   Úhsbwr…   r�   r“   r¡   r£   )r¦   Ú
dotsection))r   r   Úvstem3))r   r.   Úhstem3))r   rw   Úseac))r   rz   Úsbwr°   ))r   r:   Úcallothersubr))r   é   r-  ))r   é!   Úsetcurrentpointc                   óD   — e Zd Z	 	 d
d„Zd„ Zdd„Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
y)ÚT2WidthExtractorNc                 óR   — t         j                  | ||||«       || _        || _        y r?   )r  r  ÚnominalWidthXÚdefaultWidthX)r   r  r  r¡  r¢  r  r	  s          r   r  zT2WidthExtractor.__init__+  s*   € ô 	×#Ñ# D¨*°kÀ7ÈGÔTØ*ˆÔØ*ˆÕr    c                 óJ   — t         j                  | «       d| _        d| _        y r  )r  r
  ÚgotWidthÚwidthr  s    r   r
  zT2WidthExtractor.reset8  s   € Ü× Ñ  Ô&ØˆŒØˆ�
r    c                 óð   — | j                  «       }| j                  sY|t        |«      dz  z  r0| j                  €J d«       ‚| j                  |d   z   | _        |dd  }n| j                  | _        d| _        |S )Nr.   z5CFF2 CharStrings must not have an initial width valuer   r   )r  r¤  rd   r¢  r¡  r¥  )r   ÚevenOddrS  s      r   ÚpopallWidthzT2WidthExtractor.popallWidth=  s~   € Ø�{‰{‹}ˆØ�}Š}Øœ#˜d›) a™-Ò(ð ×&Ñ&Ð2ðKàJóKØ2à!×/Ñ/°$°q±'Ñ9�”
Ø˜A˜B�x‘à!×/Ñ/�”
ØˆDŒMØˆr    c                 ód   — | j                  «       }| j                  t        |«      dz  z   | _        y rQ  )r¨  r  rd   rR  s     r   rD  zT2WidthExtractor.countHintsL  s(   € Ø×ÑÓ!ˆØŸ™¬#¨d«)°q©.Ñ8ˆ�r    c                 ó$   — | j                  «        y r?   ©r¨  r4  s     r   Ú
op_rmovetozT2WidthExtractor.op_rmovetoP  ó   € Ø×ÑÕr    c                 ó&   — | j                  d«       y ©Nr   r«  r4  s     r   Ú
op_hmovetozT2WidthExtractor.op_hmovetoS  ó   € Ø×Ñ˜Õr    c                 ó&   — | j                  d«       y r¯  r«  r4  s     r   Ú
op_vmovetozT2WidthExtractor.op_vmovetoV  r±  r    c                 ó$   — | j                  «        y r?   r«  r4  s     r   r7  zT2WidthExtractor.op_endcharY  r­  r    r‘  ©r   )rý   rþ   rÿ   r  r
  r¨  rD  r¬  r°  r³  r7  r   r    r   rŸ  rŸ  *  s2   „ ð Øó+òó
ò9òòòór    rŸ  c                   óV  ‡ — e Zd Z	 	 d5d„Zd„ Zˆ f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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$d#„ Z%d$„ Z&d%„ Z'd&„ Z(d'„ Z)d(„ Z*d)„ Z+d*„ Z,d+„ Z-d,„ Z.d-„ Z/d.„ Z0d/„ Z1d0„ Z2d1„ Z3d2„ Z4d3„ Z5d4„ Z6ˆ xZ7S )6ÚT2OutlineExtractorc           	      óV   — t         j                  | ||||||«       || _        d| _        y r  )rŸ  r  ÚpenÚ	subrLevel)r   r¹  r  r  r¡  r¢  r  r	  s           r   r  zT2OutlineExtractor.__init__^  s7   € ô 	×!Ñ!ØØØØØØØô	
ð ˆŒØˆ�r    c                 óX   — t         j                  | «       d| _        d| _        d| _        y )N©r   r   r   )rŸ  r
  ÚcurrentPointÚ	sawMoveTorº  r  s    r   r
  zT2OutlineExtractor.resett  s&   € Ü×Ñ˜tÔ$Ø"ˆÔØˆŒØˆ�r    c                 ó¸   •— | xj                   dz  c_         t        ‰| �	  |«       | xj                   dz  c_         | j                   dk(  r| j                  «        y y ©Nr   r   )rº  Úsuperr(  ÚendPath)r   r  Ú	__class__s     €r   r(  zT2OutlineExtractor.executez  sE   ø€ Ø�Š˜!Ñ�Ü‰‰˜
Ô#Ø�Š˜!Ñ�Ø�>‰>˜QÒØ�L‰L�Nð r    c                 óR   — | j                   \  }}||d   z   ||d   z   f}|| _         |S rƒ  )r½  )r   Úpointr  Úys       r   Ú
_nextPointzT2OutlineExtractor._nextPoint�  s8   € Ø× Ñ ‰ˆˆ1Ø�E˜!‘H‘˜a %¨¡(™lÐ*ˆØ!ˆÔØˆr    c                 óf   — | j                   j                  | j                  |«      «       d| _        y r¯  )r¹  ÚmoveTorÇ  r¾  ©r   rÅ  s     r   ÚrMoveTozT2OutlineExtractor.rMoveTo‡  s"   € Ø�‰�‰˜Ÿ™¨Ó.Ô/Øˆ�r    c                 ó’   — | j                   s| j                  d«       | j                  j                  | j	                  |«      «       y ©Nr¼  )r¾  rË  r¹  ÚlineTorÇ  rÊ  s     r   ÚrLineTozT2OutlineExtractor.rLineTo‹  s.   € Ø�~Š~Ø�L‰L˜Ô Ø�‰�‰˜Ÿ™¨Ó.Õ/r    c                 ó´   — | j                   s| j                  d«       | j                  }| j                  j	                   ||«       ||«       ||«      «       y rÍ  )r¾  rË  rÇ  r¹  ÚcurveTo)r   Úpt1Úpt2Úpt3Ú	nextPoints        r   ÚrCurveTozT2OutlineExtractor.rCurveTo�  s@   € Ø�~Š~Ø�L‰L˜Ô Ø—O‘Oˆ	Ø�‰×Ñ™ 3›©°3«¹À3»ÕHr    c                 ó^   — | j                   r| j                  j                  «        d| _         y r  )r¾  r¹  Ú	closePathr  s    r   rØ  zT2OutlineExtractor.closePath–  s    € Ø�>Š>Ø�H‰H×ÑÔ Øˆ�r    c                 ó>   — | j                   r| j                  «        y y r?   )r¾  rØ  r  s    r   rÂ  zT2OutlineExtractor.endPath›  s   € ð
 �>Š>Ø�N‰NÕð r    c                 ób   — | j                  «        | j                  | j                  «       «       y r?   ©rÂ  rË  r¨  r4  s     r   r¬  zT2OutlineExtractor.op_rmoveto¶  s    € Ø�‰ŒØ�‰�T×%Ñ%Ó'Õ(r    c                 ón   — | j                  «        | j                  | j                  d«      d   df«       y rÀ  rÛ  r4  s     r   r°  zT2OutlineExtractor.op_hmovetoº  s,   € Ø�‰ŒØ�‰�d×&Ñ& qÓ)¨!Ñ,¨aÐ0Õ1r    c                 ón   — | j                  «        | j                  d| j                  d«      d   f«       y rƒ  rÛ  r4  s     r   r³  zT2OutlineExtractor.op_vmoveto¾  s,   € Ø�‰ŒØ�‰�a˜×)Ñ)¨!Ó,¨QÑ/Ð0Õ1r    c           	      óô   — | j                  «        | j                  «       }|rVddlm} |\  }}}}||   }| j                  j                  |d«       ||   }	| j                  j                  |	dddd||f«       y y )Nr   ©ÚStandardEncoding©r   r   r   r   r   r   r   )rÂ  r¨  Ú$fontTools.encodings.StandardEncodingrà  r¹  ÚaddComponent)
r   r   rS  rà  ÚadxÚadyÚbcharÚacharÚ	baseGlyphÚaccentGlyphs
             r   r7  zT2OutlineExtractor.op_endcharÂ  s~   € Ø�‰ŒØ×ÑÓ!ˆÙÝMð &*Ñ"ˆC��e˜UØ(¨Ñ/ˆIØ�H‰H×!Ñ! )Ð-?Ô@Ø*¨5Ñ1ˆKØ�H‰H×!Ñ! +°°1°a¸¸CÀÐ/EÕFð r    c                 óŒ   — | j                  «       }t        dt        |«      d«      D ]  }|||dz    }| j                  |«       Œ y )Nr   r.   )r  rë   rd   rÏ  )r   r   rS  rù   rÅ  s        r   Ú
op_rlinetozT2OutlineExtractor.op_rlinetoÓ  sD   € Ø�{‰{‹}ˆÜ�qœ#˜d›) QÓ'ò 	 ˆAØ˜˜Q ™U�OˆEØ�L‰L˜Õñ	 r    c                 ó&   — | j                  d«       y r¯  ©ÚalternatingLinetor4  s     r   Ú
op_hlinetozT2OutlineExtractor.op_hlinetoÙ  ó   € Ø×Ñ˜qÕ!r    c                 ó&   — | j                  d«       y r  rí  r4  s     r   Ú
op_vlinetozT2OutlineExtractor.op_vlinetoÜ  rð  r    c                 óª   — | j                  «       }t        dt        |«      d«      D ]*  }|||dz    \  }}}}}}	| j                  ||f||f||	f«       Œ, y)z${dxa dya dxb dyb dxc dyc}+ rrcurvetor   rw   N)r  rë   rd   rÖ  )
r   r   rS  rù   ÚdxaÚdyaÚdxbÚdybÚdxcÚdycs
             r   Úop_rrcurvetozT2OutlineExtractor.op_rrcurvetoâ  sk   € à�{‰{‹}ˆÜ�qœ#˜d›) QÓ'ò 		>ˆAð �Q˜˜Q™�ñØØØØØØà�M‰M˜3 ˜* s¨C j°3¸°*Õ=ñ		>r    c                 óØ   — | j                  «       }t        dt        |«      dz
  d«      D ]*  }|||dz    \  }}}}}}	| j                  ||f||f||	f«       Œ, | j	                  |dd «       y)z-{dxa dya dxb dyb dxc dyc}+ dxd dyd rcurveliner   r.   rw   éþÿÿÿN)r  rë   rd   rÖ  rÏ  )
r   r   rS  rù   rö  r÷  rø  rù  ÚdxdÚdyds
             r   Úop_rcurvelinez T2OutlineExtractor.op_rcurvelineð  sy   € à�{‰{‹}ˆÜ�qœ#˜d›) a™-¨Ó+ò 	>ˆAØ+/°°A¸±E¨?Ñ(ˆC��c˜3  SØ�M‰M˜3 ˜* s¨C j°3¸°*Õ=ð	>ð 	�‰�T˜"˜#�YÕr    c                 óÜ   — | j                  «       }|dd }t        dt        |«      d«      D ]  }| j                  |||dz    «       Œ |dd \  }}}}}	}
| j	                  ||f||f|	|
f«       y)z-{dxa dya}+ dxb dyb dxc dyc dxd dyd rlinecurveNiúÿÿÿr   r.   )r  rë   rd   rÏ  rÖ  )r   r   rS  ÚlineArgsrù   rö  r÷  rø  rù  rý  rþ  s              r   Úop_rlinecurvez T2OutlineExtractor.op_rlinecurveø  s   € à�{‰{‹}ˆØ˜˜�9ˆÜ�qœ#˜h›-¨Ó+ò 	.ˆAØ�L‰L˜ ! a¨!¡eÐ,Õ-ð	.à'+¨B¨C yÑ$ˆˆS�#�s˜C Ø�‰�s˜C�j 3¨ *¨s°C¨jÕ9r    c                 óà   — | j                  «       }t        |«      dz  r|d   }|dd }nd}t        dt        |«      d«      D ]*  }|||dz    \  }}}}| j                  ||f||fd|f«       d}Œ, y)z!dx1? {dya dxb dyb dyc}+ vvcurvetor.   r   r   Nr7   ©r  rd   rë   rÖ  )	r   r   rS  Údx1rù   rõ  rö  r÷  rù  s	            r   Úop_vvcurvetozT2OutlineExtractor.op_vvcurveto  s†   € à�{‰{‹}ˆÜˆt‹9�qŠ=Ø�q‘'ˆCØ˜˜�8‰DàˆCÜ�qœ#˜d›) QÓ'ò 	ˆAØ!% a¨!¨a©% ÑˆC��c˜3Ø�M‰M˜3 ˜* s¨C j°1°c°(Ô;Ø‰Cñ	r    c                 óà   — | j                  «       }t        |«      dz  r|d   }|dd }nd}t        dt        |«      d«      D ]*  }|||dz    \  }}}}| j                  ||f||f|df«       d}Œ, y)z!dy1? {dxa dxb dyb dxc}+ hhcurvetor.   r   r   Nr7   r  )	r   r   rS  Údy1rù   rô  rö  r÷  rø  s	            r   Úop_hhcurvetozT2OutlineExtractor.op_hhcurveto  s†   € à�{‰{‹}ˆÜˆt‹9�qŠ=Ø�q‘'ˆCØ˜˜�8‰DàˆCÜ�qœ#˜d›) QÓ'ò 	ˆAØ!% a¨!¨a©% ÑˆC��c˜3Ø�M‰M˜3 ˜* s¨C j°3¸°(Ô;Ø‰Cñ	r    c                 óx   — | j                  «       }|r(| j                  |«      }|r| j                  |«      }|rŒ'yy)z‰dy1 dx2 dy2 dx3 {dxa dxb dyb dyc dyd dxe dye dxf}* dyf? vhcurveto (30)
        {dya dxb dyb dxc dxd dxe dye dyf}+ dxf? vhcurveto
        N)r  ÚvcurvetoÚhcurveto©r   r   rS  s      r   Úop_vhcurvetozT2OutlineExtractor.op_vhcurveto  ó6   € ð �{‰{‹}ˆÙØ—=‘= Ó&ˆDÙØ—}‘} TÓ*�ô r    c                 óx   — | j                  «       }|r(| j                  |«      }|r| j                  |«      }|rŒ'yy)zpdx1 dx2 dy2 dy3 {dya dxb dyb dxc dxd dxe dye dyf}* dxf?
        {dxa dxb dyb dyc dyd dxe dye dxf}+ dyf?
        N)r  r  r  r  s      r   Úop_hvcurvetozT2OutlineExtractor.op_hvcurveto%  r  r    c                 ó®   — | j                  «       \  }}}}}}}dx}	x}
x}}| }| j                  ||	f||f||
f«       | j                  ||f||f||f«       y r  ©r  rÖ  )r   r   r  Údx2Údy2Údx3Údx4Údx5Údx6r  Údy3Údy4Údy6Údy5s                 r   Úop_hflexzT2OutlineExtractor.op_hflex2  so   € Ø,0¯K©K«MÑ)ˆˆS�#�s˜C  cØ !Ð!ˆÐ!ˆcÐ!�C˜#ØˆdˆØ�‰�s˜C�j 3¨ *¨s°C¨jÔ9Ø�‰�s˜C�j 3¨ *¨s°C¨jÕ9r    c                 ó¤   — | j                  «       \  }}}}}}}}	}
}}}}| j                  ||f||f||f«       | j                  ||	f|
|f||f«       y r?   r  )r   r   r  r  r  r  r  r  r  r  r  r  r  r  Úfds                  r   Úop_flexzT2OutlineExtractor.op_flex9  s`   € ØIMÏÉËÑFˆˆS�#�s˜C  c¨3°°S¸#¸sÀBØ�‰�s˜C�j 3¨ *¨s°C¨jÔ9Ø�‰�s˜C�j 3¨ *¨s°C¨jÕ9r    c           	      óÂ   — | j                  «       \	  }}}}}}}}	}
dx}}||z   |z   |z   |	z    }| j                  ||f||f||f«       | j                  ||f||	f|
|f«       y r  r  )r   r   r  r  r  r  r  r  r  r  r  r  r  r  s                 r   Ú	op_hflex1zT2OutlineExtractor.op_hflex1>  s{   € Ø6:·k±k³mÑ3ˆˆS�#�s˜C  c¨3°ØˆˆˆcØ�c‘	˜C‘ #Ñ%¨Ñ+Ð,ˆà�‰�s˜C�j 3¨ *¨s°C¨jÔ9Ø�‰�s˜C�j 3¨ *¨s°C¨jÕ9r    c                 ó  — | j                  «       \  }}}}}}}}	}
}}||z   |z   |z   |
z   }||z   |z   |	z   |z   }t        |«      t        |«      kD  r|}| }n| }|}| j                  ||f||f||f«       | j                  ||	f|
|f||f«       y r?   )r  r­   rÖ  )r   r   r  r  r  r  r  r  r  r  r  r  Úd6ÚdxÚdyr  r  s                    r   Úop_flex1zT2OutlineExtractor.op_flex1F  s²   € Ø?C¿{¹{»}Ñ<ˆˆS�#�s˜C  c¨3°°S¸"Ø�3‰Y˜‰_˜sÑ" SÑ(ˆØ�3‰Y˜‰_˜sÑ" SÑ(ˆÜˆr‹7”S˜“WÒØˆCØ�#‰Cà�#ˆCØˆCØ�‰�s˜C�j 3¨ *¨s°C¨jÔ9Ø�‰�s˜C�j 3¨ *¨s°C¨jÕ9r    c                 ó   — t         ‚r?   rU  r4  s     r   rV  zT2OutlineExtractor.op_andT  rW  r    c                 ó   — t         ‚r?   rU  r4  s     r   rY  zT2OutlineExtractor.op_orW  rW  r    c                 ó   — t         ‚r?   rU  r4  s     r   r[  zT2OutlineExtractor.op_notZ  rW  r    c                 ó   — t         ‚r?   rU  r4  s     r   r]  zT2OutlineExtractor.op_store]  rW  r    c                 ó   — t         ‚r?   rU  r4  s     r   r_  zT2OutlineExtractor.op_abs`  rW  r    c                 ó   — t         ‚r?   rU  r4  s     r   ra  zT2OutlineExtractor.op_addc  rW  r    c                 ó   — t         ‚r?   rU  r4  s     r   rc  zT2OutlineExtractor.op_subf  rW  r    c                 ó¨   — | j                  «       }| j                  «       }||z  }||z  }||k(  r| j                  |«       y | j                  |«       y r?   )r-  r2  )r   r   Únum2Únum1Úd1Úd2s         r   re  zT2OutlineExtractor.op_divi  sG   € Ø�x‰x‹zˆØ�x‰x‹zˆØ�T‰\ˆØ�D‰[ˆØ�Š8Ø�I‰I�b�Mà�I‰I�b�Mr    c                 ó   — t         ‚r?   rU  r4  s     r   rg  zT2OutlineExtractor.op_loads  rW  r    c                 ó   — t         ‚r?   rU  r4  s     r   ri  zT2OutlineExtractor.op_negv  rW  r    c                 ó   — t         ‚r?   rU  r4  s     r   rk  zT2OutlineExtractor.op_eqy  rW  r    c                 ó   — t         ‚r?   rU  r4  s     r   rm  zT2OutlineExtractor.op_drop|  rW  r    c                 ó   — t         ‚r?   rU  r4  s     r   ro  zT2OutlineExtractor.op_put  rW  r    c                 ó   — t         ‚r?   rU  r4  s     r   rq  zT2OutlineExtractor.op_get‚  rW  r    c                 ó   — t         ‚r?   rU  r4  s     r   rs  zT2OutlineExtractor.op_ifelse…  rW  r    c                 ó   — t         ‚r?   rU  r4  s     r   ru  zT2OutlineExtractor.op_randomˆ  rW  r    c                 ó   — t         ‚r?   rU  r4  s     r   rw  zT2OutlineExtractor.op_mul‹  rW  r    c                 ó   — t         ‚r?   rU  r4  s     r   ry  zT2OutlineExtractor.op_sqrtŽ  rW  r    c                 ó   — t         ‚r?   rU  r4  s     r   r{  zT2OutlineExtractor.op_dup‘  rW  r    c                 ó   — t         ‚r?   rU  r4  s     r   r}  zT2OutlineExtractor.op_exch”  rW  r    c                 ó   — t         ‚r?   rU  r4  s     r   r  zT2OutlineExtractor.op_index—  rW  r    c                 ó   — t         ‚r?   rU  r4  s     r   r�  zT2OutlineExtractor.op_rollš  rW  r    c                 óp   — | j                  «       }|D ]!  }|r|df}nd|f}| j                  |«       | }Œ# y r  )r  rÏ  )r   ÚisHorizontalrS  ÚargrÅ  s        r   rî  z$T2OutlineExtractor.alternatingLineto   sE   € Ø�{‰{‹}ˆØò 	,ˆCÙØ˜a˜‘à˜C˜�Ø�L‰L˜ÔØ+Ð+‰Lñ	,r    c                 ó†   — |d d \  }}}}|dd  }t        |«      dk(  r|d   }g }nd}| j                  d|f||f||f«       |S ©Nr7   r   r   ©rd   rÖ  )r   rS  rõ  rö  r÷  rø  rù  s          r   r  zT2OutlineExtractor.vcurvetoª  s`   € Ø! " 1˜XÑˆˆS�#�sØ�A�BˆxˆÜˆt‹9˜Š>Ø�q‘'ˆCØ‰DàˆCØ�‰�q˜#�h  c 
¨S°#¨JÔ7Øˆr    c                 ó†   — |d d \  }}}}|dd  }t        |«      dk(  r|d   }g }nd}| j                  |df||f||f«       |S rG  rH  )r   rS  rô  rö  r÷  rù  rø  s          r   r  zT2OutlineExtractor.hcurvetoµ  s`   € Ø! " 1˜XÑˆˆS�#�sØ�A�BˆxˆÜˆt‹9˜Š>Ø�q‘'ˆCØ‰DàˆCØ�‰�s˜A�h  c 
¨S°#¨JÔ7Øˆr    r‘  )8rý   rþ   rÿ   r  r
  r(  rÇ  rË  rÏ  rÖ  rØ  rÂ  r¬  r°  r³  r7  rë  rï  rò  rú  rÿ  r  r  r	  r  r  r  r!  r#  r(  rV  rY  r[  r]  r_  ra  rc  re  rg  ri  rk  rm  ro  rq  rs  ru  rw  ry  r{  r}  r  r�  rî  r  r  Ú__classcell__©rÃ  s   @r   r·  r·  ]  s  ø„ ð Øóò,ôòòò0ò
Iòò
ò6)ò2ò2òGò" ò"ò"ò>ò ò:òòò+ò+ò:ò:ò
:ò:ò"ò"ò"ò"ò"ò"ò"òò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò"ò,ò	ö	r    r·  c                   óŒ   — e 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d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚT1OutlineExtractorc                 ó@   — || _         || _        | j                  «        y r?   )r¹  Úsubrsr
  )r   r¹  rO  s      r   r  zT1OutlineExtractor.__init__Â  s   € ØˆŒØˆŒ
Ø�
‰
�r    c                 óX   — d| _         d| _        d| _        t        j	                  | «       y r  )Úflexingr¥  Úsbxr·  r
  r  s    r   r
  zT1OutlineExtractor.resetÇ  s%   € ØˆŒØˆŒ
ØˆŒÜ× Ñ  Õ&r    c                 ó^   — | j                   r| j                  j                  «        d| _         y r  )r¾  r¹  rÂ  r  s    r   rÂ  zT1OutlineExtractor.endPathÍ  s    € Ø�>Š>Ø�H‰H×ÑÔØˆ�r    c                 ó"   — | j                  «       S r?   ©r  )r   r§  s     r   r¨  zT1OutlineExtractor.popallWidthÒ  ó   € Ø�{‰{‹}Ðr    c                 ó>   — | j                   }|d   |d   c|d<   |d<   y )Nrü  rß   r+  r/  s     r   r¾   zT1OutlineExtractor.exchÕ  s)   € Ø×!Ñ!ˆØ$ R™y¨%°©)Ðˆˆb‰	�5˜’9r    c                 ó|   — | j                   ry | j                  «        | j                  | j                  «       «       y r?   )rQ  rÂ  rË  r  r4  s     r   r¬  zT1OutlineExtractor.op_rmovetoÜ  s'   € Ø�<Š<ØØ�‰ŒØ�‰�T—[‘[“]Õ#r    c                 ó¨   — | j                   r| j                  d«       y | j                  «        | j                  | j	                  «       d   df«       y r  )rQ  r2  rÂ  rË  r  r4  s     r   r°  zT1OutlineExtractor.op_hmovetoâ  s<   € Ø�<Š<à�I‰I�aŒLØØ�‰ŒØ�‰�d—k‘k“m AÑ&¨Ð*Õ+r    c                 óÈ   — | j                   r"| j                  d«       | j                  «        y | j                  «        | j	                  d| j                  «       d   f«       y r  )rQ  r2  r¾   rÂ  rË  r  r4  s     r   r³  zT1OutlineExtractor.op_vmovetoê  sE   € Ø�<Š<à�I‰I�aŒLØ�I‰IŒKØØ�‰ŒØ�‰�a˜Ÿ™› qÑ)Ð*Õ+r    c                 ó$   — | j                  «        y r?   )rØ  r4  s     r   Úop_closepathzT1OutlineExtractor.op_closepathó  s   € Ø�‰Õr    c                 ó@   — | j                  «       }|\  }}||f| _        y r?   )r  r½  )r   r   rS  r  rÆ  s        r   Úop_setcurrentpointz%T1OutlineExtractor.op_setcurrentpointö  s"   € Ø�{‰{‹}ˆØ‰ˆˆ1Ø˜q˜DˆÕr    c                 ó$   — | j                  «        y r?   )rÂ  r4  s     r   r7  zT1OutlineExtractor.op_endcharû  s   € Ø�‰�r    c                 ór   — | j                  «       \  }}|| _        || _        || j                  d   f| _        y r¯  )r  r¥  rR  r½  )r   r   rR  Úwxs       r   Úop_hsbwzT1OutlineExtractor.op_hsbwþ  s7   € Ø—+‘+“-‰ˆˆRØˆŒ
ØˆŒØ ×!2Ñ!2°1Ñ!5Ð5ˆÕr    c                 ó$   — | j                  «        y r?   rU  r4  s     r   Úop_sbwzT1OutlineExtractor.op_sbw  ó   € Ø�‰�r    c                 ód   — | j                  «       }| j                  |   }| j                  |«       y r?   )r-  rO  r(  r<  s       r   r?  zT1OutlineExtractor.op_callsubr  s'   € Ø—H‘H“Jˆ	Ø�z‰z˜)Ñ$ˆØ�‰�TÕr    c                 ó®   — | j                  «       }| j                  «       }|dk(  r|dk(  r| j                  «        d| _        y |dk(  r|dk(  rd| _        y y y )Nr   ro   r   )r-  ÚdoFlexrQ  )r   r   r=  ÚnArgss       r   Úop_callothersubrz#T1OutlineExtractor.op_callothersubr  sP   € Ø—H‘H“Jˆ	Ø—‘“
ˆà˜Š>˜e qšjØ�K‰KŒMØˆD�LØ˜!Š^ ¨¢
ØˆD�Lð !+ˆ^r    c                  ó   — y r?   r   r4  s     r   Úop_popzT1OutlineExtractor.op_pop  r8  r    c                 óP  — | j                  «       }| j                  «       }| j                  «        | j                  «       }| j                  «       }| j                  «       }| j                  «       }| j                  «       }| j                  «       }| j                  «       }	| j                  «       }
| j                  «       }| j                  «       }| j                  «       }| j                  «       }| j                  «       }| j                  «       }| j                  ||z   «       | j                  ||z   «       | j                  |«       | j                  |«       | j                  |
«       | j                  |	«       | j                  d «       | j                  |«       | j                  |«       | j                  |«       | j                  |«       | j                  |«       | j                  |«       | j                  d «       | j                  |«       | j                  |«       y r?   )r-  r2  rú  )r   ÚfinalyÚfinalxÚp3yÚp3xÚbcp4yÚbcp4xÚbcp3yÚbcp3xÚp2yÚp2xÚbcp2yÚbcp2xÚbcp1yÚbcp1xÚrpyÚrpxs                    r   rh  zT1OutlineExtractor.doFlex  s‰  € Ø—‘“ˆØ—‘“ˆØ�‰Œ
à�h‰h‹jˆØ�h‰h‹jˆØ—‘“
ˆØ—‘“
ˆØ—‘“
ˆØ—‘“
ˆØ�h‰h‹jˆØ�h‰h‹jˆØ—‘“
ˆØ—‘“
ˆØ—‘“
ˆØ—‘“
ˆØ�h‰h‹jˆØ�h‰h‹jˆð 	�	‰	�%˜#‘+ÔØ�	‰	�%˜#‘+ÔØ�	‰	�%ÔØ�	‰	�%ÔØ�	‰	�#ŒØ�	‰	�#ŒØ×Ñ˜$Ôð 	�	‰	�%ÔØ�	‰	�%ÔØ�	‰	�%ÔØ�	‰	�%ÔØ�	‰	�#ŒØ�	‰	�#ŒØ×Ñ˜$Ôð 	�	‰	�&ÔØ�	‰	�&Õr    c                 ó$   — | j                  «        y r?   rU  r4  s     r   Úop_dotsectionz T1OutlineExtractor.op_dotsectionE  re  r    c                 ó$   — | j                  «        y r?   rU  r4  s     r   Ú	op_hstem3zT1OutlineExtractor.op_hstem3H  re  r    c           	      óð   — ddl m} | j                  «       \  }}}}}||   }| j                  j	                  |d«       ||   }	|| j
                  z   |z
  }| j                  j	                  |	dddd||f«       y)zasb adx ady bchar achar seacr   rß  rá  r   N)râ  rà  r  r¹  rã  rR  )
r   r   rà  Úasbrä  rå  ræ  rç  rè  ré  s
             r   Úop_seaczT1OutlineExtractor.op_seacK  sw   € åIà&*§k¡k£mÑ#ˆˆS�#�u˜eØ$ UÑ+ˆ	Ø�‰×Ñ˜iÐ);Ô<Ø& uÑ-ˆØ�D—H‘H‰n˜sÑ"ˆØ�‰×Ñ˜k¨A¨q°!°Q¸¸SÐ+AÕBr    c                 ó$   — | j                  «        y r?   rU  r4  s     r   Ú	op_vstem3zT1OutlineExtractor.op_vstem3V  re  r    Nrµ  )rý   rþ   rÿ   r  r
  rÂ  r¨  r¾   r¬  r°  r³  r\  r^  r7  rb  rd  r?  rj  rl  rh  r  r�  r„  r†  r   r    r   rM  rM  Á  sm   „ òò
'òó
ò4ò$ò,ò,òò!ò
ò6òòò
òò(òTòò	Cór    rM  c                   ó¦   — e Zd ZeZ ee«      \  ZZe	Z
eZdd„Zdd„Zd„ Zd„ Zd„ Zd„ Zdd„Zd	„ Zdd
„Zd„ Zd„ Zd„ Zeeefd„Zd„ Zd„ Zdd„Zd„ Z y)ÚT2CharStringNc                 óZ   — |€g }|| _         || _        || _        |�|ng | _        d | _        y r?   )Úbytecoder   r  r  Ú_cur_vsindex)r   rŠ  r   r  r  s        r   r  zT2CharString.__init__`  s8   € Øˆ?ØˆGØ ˆŒØˆŒØˆŒØ*5Ð*A™;ÀrˆÔØ ˆÕr    c                 óÂ   — | j                   }|€J ‚|�|| _        n+| j                  €t        |d«      r|j                  nd| _        |j	                  | j                  «      S )Nrˆ   r   )r  r‹  Úhasattrrˆ   r„  )r   rˆ   Úpds      r   r„  zT2CharString.getNumRegionsi  s]   € Ø�\‰\ˆØˆ~Ðˆ~ØÐØ 'ˆDÕØ×ÑÐ&Ü.5°b¸)Ô.D §
¢
È!ˆDÔØ×Ñ × 1Ñ 1Ó2Ð2r    c                 óª   — | j                   €$d| j                  j                  t        | «      fz  S d| j                  j                  t        | «      fz  S )Nz<%s (source) at %x>z<%s (bytecode) at %x>)rŠ  rÃ  rý   Úidr  s    r   Ú__repr__zT2CharString.__repr__r  sH   € Ø�=‰=Ð Ø(¨D¯N©N×,CÑ,CÄRÈÃXÐ+NÑNÐNà*¨d¯n©n×.EÑ.EÄrÈ$ÃxÐ-PÑPÐPr    c                 ó   — t         S r?   )rÚ   r  s    r   r×   zT2CharString.getIntEncoderx  ó   € ÜÐr    c                 ó   — t         S r?   )rÜ   r  s    r   ÚgetFixedEncoderzT2CharString.getFixedEncoder{  r“  r    c                 óÄ   — | j                  «       sy t        | j                  dg «      }| j                  || j                  | j                  «      }|j                  | «       y ©NÚSubrs)r  r  r  ÚdecompilerClassr  r(  )r   rO  Ú
decompilers      r   Ú	decompilezT2CharString.decompile~  sO   € Ø×&Ñ&Ô(ØÜ˜Ÿ™ g¨rÓ2ˆØ×)Ñ)¨%°×1AÑ1AÀ4Ç<Á<ÓPˆ
Ø×Ñ˜4Õ r    c           	      ó  — t        | j                  dg «      }| j                  ||| j                  | j                  j                  | j                  j
                  | j                  |«      }|j                  | «       |j                  | _        y r—  )r  r  ÚoutlineExtractorr  r¡  r¢  r(  r¥  )r   r¹  r	  rO  Ú	extractors        r   ÚdrawzT2CharString.draw…  sr   € Ü˜Ÿ™ g¨rÓ2ˆØ×)Ñ)ØØØ×ÑØ�L‰L×&Ñ&Ø�L‰L×&Ñ&Ø�L‰LØó
ˆ	ð 	×Ñ˜$ÔØ—_‘_ˆ�
r    c                 óR   — t        |«      }| j                  |«       |j                  S r?   )r   rŸ  Úbounds)r   ÚglyphSetÚ	boundsPens      r   Ú
calcBoundszT2CharString.calcBounds“  s$   € Ü˜hÓ'ˆ	Ø�	‰	�)ÔØ×ÑÐr    c                 óH  — | j                   �y | j                  }| j                  }|r|r-|d   dv r&|d d }n |rt        |d   t        «      st        d«      ‚g }| j                  «       }| j                  «       }d}t        |«      }||k  r½||   }	|dz   }t        |	t        «      r:	 |j                  d„ ||	   D «       «       |	dv r}|j                  ||   «       |dz   }nct        |	t        «      r|j                   ||	«      «       n;t        |	t        «      r|j                   ||	«      «       nJ d	t        |	«      z  «       ‚||k  rŒ½	 t        |«      }| j'                  |«       y # t        $ r t        d|	z  «      ‚w xY w# t         $ r t"        j%                  |«       ‚ w xY w)
Nrß   )r„   r‡   z@T2CharString or Subr has items on the stack after last operator.r   r   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr?   )r   )Ú.0rJ   s     r   ú	<genexpr>z'T2CharString.compile.<locals>.<genexpr>±  s   è ø€ Ò#G°1¤G¨A§JÑ#Gùs   ‚zillegal operator: %s©r�   r�   zunsupported type: %s)rŠ  Úopcodesr   re   Ústrrü   r×   r•  rd   Úextendr   ré   rå   rH   Útyper	   Ú	TypeErrorrÏ   ÚerrorÚsetBytecode)
r   ÚisCFF2rª  r   rŠ  rÕ   rÜ   rù   Úendr#  s
             r   ÚcompilezT2CharString.compile˜  s§  € Ø�=‰=Ð$ØØ—,‘,ˆØ—,‘,ˆáá˜7 2™;Ð*?Ñ?Ø! # 2˜,‘ÙœZ¨°©´SÔ9Ü(ØRóð ð ˆØ×&Ñ&Ó(ˆ	Ø×*Ñ*Ó,ˆØˆÜ�'‹lˆØ�#ŠgØ˜A‘JˆEØ�A‘ˆAÜ˜%¤Ô%ðQØ—O‘OÑ#G¸À¹Ô#GÔGð Ð4Ñ4Ø—O‘O G¨A¡JÔ/Ø˜A™‘AÜ˜E¤3Ô'Ø—‘¡	¨%Ó 0Õ1Ü˜E¤5Ô)Ø—‘¡¨EÓ 2Õ3à>Ð0´4¸³;Ñ>Ó>�qð! �#‹gð"	Ü  Ó*ˆHð 	×Ñ˜Õ"øô!  ò QÜ0Ð1GÈ%Ñ1OÓPÐPðQûô ò 	Ü�I‰I�hÔØð	ús   Â&E& Å	F Å&E>Æ F!c                 ó   — | j                   d uS r?   )rŠ  r  s    r   r  zT2CharString.needsDecompilationÄ  s   € Ø�}‰} DÐ(Ð(r    c                 ó    — || _         d | _        y r?   )r   rŠ  )r   r   s     r   r  zT2CharString.setProgramÇ  s   € ØˆŒØˆ�r    c                 ó    — || _         d | _        y r?   )rŠ  r   )r   rŠ  s     r   r°  zT2CharString.setBytecodeË  s   € Ø ˆŒØˆ�r    c                 óB  — | j                   �X| || j                   «      k\  ry || j                   |   «      }|dz   }| j                  |   } || || j                   |«      \  }}n*| || j                  «      k\  ry| j                  |   }|dz   } ||t        «      }|||fS )N)Nr   r   r   )rŠ  ÚoperandEncodingr   r«  )	r   r   rd   r   re   r   r&  r#  r$  s	            r   r  zT2CharString.getTokenÏ  s¨   € Ø�=‰=Ð$Ø™˜DŸM™MÓ*Ò*Ø!Ù˜Ÿ™ uÑ-Ó.ˆBØ˜A‘IˆEØ×*Ñ*¨2Ñ.ˆGÙ" 4¨¨T¯]©]¸EÓB‰LˆE‘5à™˜DŸL™LÓ)Ò)Ø!Ø—L‘L Ñ'ˆEØ˜A‘IˆEÙ ¤sÓ+ˆ
Ø�j %Ð'Ð'r    c                 ó˜   — | j                   �||z   }| j                   || }|}n| j                  |   }|dz   }t        |«      |k(  sJ ‚||fS r¯  )rŠ  r   rd   )r   r   ÚnBytesÚnewIndexÚbytess        r   rN  zT2CharString.getBytesß  s]   € Ø�=‰=Ð$Ø˜v‘~ˆHØ—M‘M %¨Ð1ˆEØ‰Eà—L‘L Ñ'ˆEØ˜A‘IˆEÜ�5‹z˜VÒ#Ð#Ð#Ø�eˆ|Ðr    c                 ó   — |S r?   r   )r   r   s     r   r   zT2CharString.handle_operatorê  s   € Øˆr    c                 óš  — ddl m} | j                  �|j                  | j                  «       y d}g }	 | j	                  |«      \  }}}|€nÛ|rž|dv ra| j	                  |«      \  }}}g }	|D ]#  }
|	j                   |t        |
«      d«      «       Œ% t        |	«      }dj                  |||gz   «      }ndj                  ||gz   «      }|j                  |«       |j                  «        g }n:t        |t        «      rt        |d¬«      }nt        |«      }|j                  |«       Œó|r#dj                  |«      }|j                  |«       y y )Nr   )Ú
num2binaryr©  r}   ú r:   r;   )ÚfontTools.misc.textToolsr¿  rŠ  Údumphexr  ré   r   r
   ÚjoinÚwriteÚnewlinere   rH   r   r«  )r   Ú	xmlWriterÚttFontr¿  r   rS  r#  r$  ÚhintMaskÚbitsÚbyteÚlines               r   ÚtoXMLzT2CharString.toXMLí  s@  € Ý7à�=‰=Ð$Ø×Ñ˜dŸm™mÕ,àˆEØˆDØØ+/¯=©=¸Ó+?Ñ(��z 5Ø�=ØÙØÐ 8Ñ8Ø6:·m±mÀEÓ6JÑ3˜ *¨eØ!˜Ø$,ò F˜DØ ŸK™K©
´7¸4³=À!Ó(DÕEðFä#*¨4£=˜Ø"Ÿx™x¨°°xÐ/@Ñ(@ÓA™à"Ÿx™x¨°¨w©Ó7˜Ø—O‘O DÔ)Ø×%Ñ%Ô'Ø‘Dä! %¬Ô/Ü 1°%ÀrÔ J™ä # E£
˜Ø—K‘K Ô&ð- ñ. ð —x‘x “~�Ø—‘ Õ%ð r    c                 óŠ  — ddl m}m} |j                  d«      r| j	                   ||«      «       y t        |«      }|j                  «       }g }t        |«      }d}||k  r-||   }	|dz   }	 t        |	«      }	|j                  |	«       ||k  rŒ-| j                  |«       y # t        $ r™ 	 t        |	d¬«      }	|j                  |	«       nv# t        $ rj |j                  |	«       |	dv rR||   }
d}t        dt        |
«      d	«      D ]  }|t         ||
||d	z    «      «      z   }Œ |j                  |«       |dz   }Y nw xY wY Œ¹w xY w)
Nr   )Ú
binary2numÚreadHexÚrawr   r:   r;   r©  r    r}   )rÁ  rÎ  rÏ  r¸   r°  r
   rç   rd   rå   ré   Ú
ValueErrorr   rë   r   r  )r   ÚnameÚattrsÚcontentrÎ  rÏ  r   r²  rù   r#  ÚmaskÚ	maskBytesÚjs                r   ÚfromXMLzT2CharString.fromXML  sT  € ß@à�9‰9�UÔØ×Ñ™W WÓ-Ô.ØÜ˜'Ó"ˆØ—-‘-“/ˆØˆÜ�'‹lˆØˆØ�#ŠgØ˜A‘JˆEØ�A‘ˆAð&Ü˜E›
�ð  —‘˜uÔ%ð) �#‹gð* 	�‰˜Õ øô! ò *ð*Ü-¨eÀ2ÔF�Eð —N‘N 5Õ)øô "ò "Ø—N‘N 5Ô)ØÐ 8Ñ8Ø& q™z˜Ø$'˜	Ü!& q¬#¨d«)°QÓ!7ò Y˜AØ(1´G¹JÀtÈAÐPQÐTUÑPUÀÓ<WÓ4XÑ(X™IðYàŸ™ yÔ1Ø ™E˜ùð"üð*ús7   Á,B  Â 	EÂ*C	Â7EÃ	A0D<Ä9EÄ;D<Ä<EÅE)NNNNr?   )F)!rý   rþ   rÿ   Út2OperandEncodingr¸  rk   Út2Operatorsr   rª  r  r™  r·  r�  r  r„  r‘  r×   r•  r›  rŸ  r¤  r³  r  r  r°  rd   r   re   r  rN  r   rÌ  rØ  r   r    r   rˆ  rˆ  Z  s‚   „ Ø'€OÙ*¨;Ó7Ñ€IˆwØ(€OØ)Ðó!ó3òQòòò!ó%ò ó
*#òX)òòð #&¨wÀ:ó (ò 	òó$&óL !r    rˆ  c                   óR   ‡ — e Zd ZeZ ee«      \  ZZdˆ fd„	Z	d„ Z
d„ Zd„ Zd„ Zˆ xZS )ÚT1CharStringc                 ó4   •— t         ‰| �  ||«       || _        y r?   )rÁ  r  rO  )r   rŠ  r   rO  rÃ  s       €r   r  zT1CharString.__init__:  s   ø€ Ü‰Ñ˜ 7Ô+Øˆ�
r    c                 ó   — t         S r?   )ÚencodeIntT1r  s    r   r×   zT1CharString.getIntEncoder>  r“  r    c                 ó
   — d„ }y )Nc                 ó   — t        d«      ‚)Nz8Type 1 charstrings don't support floating point operands)r®  )r   s    r   rÜ   z1T1CharString.getFixedEncoder.<locals>.encodeFixedB  s   € ÜÐVÓWÐWr    r   )r   rÜ   s     r   r•  zT1CharString.getFixedEncoderA  s   € ó	Xr    c                 óž   — | j                   €y g }d}	 | j                  |«      \  }}}|€n|j                  |«       Œ*| j                  |«       y r  )rŠ  r  ré   r  )r   r   r   r#  r$  s        r   r›  zT1CharString.decompileE  sX   € Ø�=‰=Ð ØØˆØˆØØ'+§}¡}°UÓ';Ñ$ˆE�:˜uØˆ}ØØ�N‰N˜5Ô!ð	 ð
 	�‰˜Õ r    c                 ót   — t        || j                  «      }|j                  | «       |j                  | _        y r?   )rM  rO  r(  r¥  )r   r¹  rž  s      r   rŸ  zT1CharString.drawQ  s+   € Ü& s¨D¯J©JÓ7ˆ	Ø×Ñ˜$ÔØ—_‘_ˆ�
r    )NNN)rý   rþ   rÿ   Út1OperandEncodingr¸  rk   Út1Operatorsr   rª  r  r×   r•  r›  rŸ  rJ  rK  s   @r   rÜ  rÜ  6  s1   ø„ Ø'€OÙ*¨;Ó7Ñ€IˆwõòòXò
!ö%r    rÜ  c                   óZ   — e Zd ZeZd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)ÚDictDecompilerNc                 ó<   — g | _         || _        i | _        || _        y r?   )r0  ÚstringsÚdictÚparent)r   ré  rë  s      r   r  zDictDecompiler.__init__Z  s   € ØˆŒ
ØˆŒØˆŒ	Øˆ�r    c                 óX   — t        | j                  «      dk(  sJ d«       ‚| j                  S )Nr   znon-empty stack)rd   r0  rê  r  s    r   ÚgetDictzDictDecompiler.getDict`  s(   € Ü�4—:‘:‹ !Ò#Ð6Ð%6Ó6Ð#Ø�y‰yÐr    c                 óÖ   — d}t        |«      }| j                  j                  }||k  rAt        ||   «      }|dz   }| j                  |   } || |||«      \  }}|� ||«       ||k  rŒ@y y rƒ  )rd   r0  ré   r   r¸  )r   r   r   ÚlenDatar2  r   r&  r   s           r   r›  zDictDecompiler.decompiled  sw   € ØˆÜ�d“)ˆØ�z‰z× Ñ ˆØ�gŠoÜ˜˜e™Ó%ˆBØ˜A‘IˆEØ×*Ñ*¨2Ñ.ˆGÙ" 4¨¨T°5Ó9‰LˆE�5ØÐ Ù�U”ð �g�or    c                 ó>   — | j                   d   }| j                   d= |S r*  ©r0  r,  s     r   r-  zDictDecompiler.popp  s   € Ø—
‘
˜2‘ˆØ�J‰J�rˆNØˆr    c                 óB   — | j                   d d  }| j                   d d …= |S r?   rñ  rR  s     r   r  zDictDecompiler.popallu  s   € Ø�z‰z™!ˆ}ˆØ�J‰J’qˆMØˆr    c                 ó>  — |\  }}t        |t        «      rAd}t        t        |«      dz
  dd«      D ]"  }||   }t	        | d|z   «      } ||«      f|z   }Œ$ nt	        | d|z   «      } ||«      }|dk(  r| j
                  j                  |«       y || j                  |<   y )Nr   r   rß   Úarg_r‰   )re   rf   rë   rd   r  r0  r¬  rê  )r   r   ÚargTyper   rù   rE  Ú
arghandlers          r   r   zDictDecompiler.handle_operatorz  s¬   € Ø$Ñˆ�'Ü�gœuÔ%ØˆEÜœ3˜w›<¨!Ñ+¨R°Ó4ò 8�Ø˜a‘j�Ü$ T¨6°C©<Ó8�
Ù# HÓ-Ð/°%Ñ7‘ñ8ô
 !  v°Ñ'7Ó8ˆJÙ˜xÓ(ˆEØ�wÒØ�J‰J×Ñ˜eÕ$à"'ˆD�I‰I�hÒr    c                 óš   — t        | j                  d   t        «      r| j                  | j                  «      }|S | j	                  «       }|S r  )re   r0  ÚlistÚarg_blend_numberr-  )r   rÒ  Úouts      r   Ú
arg_numberzDictDecompiler.arg_numberŠ  sA   € Ü�d—j‘j ‘m¤TÔ*Ø×'Ñ'¨¯
©
Ó3ˆCð ˆ
ð —(‘(“*ˆCØˆ
r    c                 ó¤   — g }| j                  «       }t        |«      }|j                  |«       |j                  d«       | j                  «       }|S )Nr‰   )r-  rd   ré   r  )r   rÒ  rú  Ú	blendArgsÚ
numMastersÚdummys         r   rù  zDictDecompiler.arg_blend_number‘  sD   € ØˆØ—H‘H“Jˆ	Ü˜“^ˆ
Ø�
‰
�9ÔØ�
‰
�7ÔØ—‘“ˆØÐr    c                 ó<   — | j                   | j                  «          S r?   )ré  r-  ©r   rÒ  s     r   Úarg_SIDzDictDecompiler.arg_SIDš  s   € Ø�|‰|˜DŸH™H›JÑ'Ð'r    c                 ó"   — | j                  «       S r?   rU  r  s     r   Ú	arg_arrayzDictDecompiler.arg_array�  rV  r    c                 óh  — | j                   j                  dd«      }| j                  j                  |«      dz   }| j	                  «       }| j                  «       }t        |«      }|||z  k(  sJ ‚dg|z  }|dz
  }d}	d}
|	|k  r.||	   |
z   }|}
||	|z  z   }|g||||z    z   }|||	<   |	dz  }	|	|k  rŒ.|S )aé  
        There may be non-blend args at the top of the stack. We first calculate
        where the blend args start in the stack. These are the last
        numMasters*numBlends) +1 args.
        The blend args starts with numMasters relative coordinate values, the  BlueValues in the list from the default master font. This is followed by
        numBlends list of values. Each of  value in one of these lists is the
        Variable Font delta for the matching region.

        We re-arrange this to be a list of numMaster entries. Each entry starts with the corresponding default font relative value, and is followed by
        the delta values. We then convert the default values, the first item in each entry, to an absolute value.
        rˆ   r   r   N)rê  r¸   rë  r„  r-  r  rd   )r   rÒ  rˆ   rþ  r…  rS  ÚnumArgsr   Ú	numDeltasrù   ÚprevValÚnewValÚmasterOffsetÚ	blendLists                 r   Úarg_blendListzDictDecompiler.arg_blendList   sé   € ð —)‘)—-‘- 	¨1Ó-ˆà�K‰K×%Ñ% gÓ.°Ñ2ð 	ð —H‘H“Jˆ	Ø�{‰{‹}ˆÜ�d“)ˆà˜* yÑ0Ò0Ð0Ð0Ø�˜Ñ"ˆØ ‘Nˆ	ØˆØˆØ�)ŠmØ˜!‘W˜wÑ&ˆFØˆGØ$¨¨I©Ñ6ˆLØ˜ 4¨°|ÀiÑ7OÐ#PÑPˆIØ ˆE�!‰HØ�‰FˆAð �)‹mð ˆr    c                 óš   — | j                  «       }g }|rt        |d   t        «      r|}|S d}|D ]  }||z   }|j                  |«       Œ |S r  )r  re   rø  ré   )r   rÒ  Ú	valueListrú  ÚcurrentÚvs         r   Ú	arg_deltazDictDecompiler.arg_deltaÂ  s`   € Ø—K‘K“Mˆ	ØˆÙœ I¨a¡L´$Ô7àˆCð ˆ
ð	 ˆGØò $�Ø! A™+�Ø—
‘
˜7Õ#ð$ð ˆ
r    r?   )rý   rþ   rÿ   ÚcffDictOperandEncodingr¸  r  rí  r›  r-  r  r   rû  rù  r  r  r  r  r   r    r   rç  rç  W  sD   „ Ø,€Oóòò
òò
ò
(ò òò(òò óDr    rç  c                 óD   — t        | «      }|dk  rd}|S |dk  rd}|S d}|S )NiØ  rÍ   il„  rÎ   i €  )rd   )rO  ÚnSubrsÚbiass      r   r  r  Ð  s?   € Ü�‹Z€FØ�‚}Øˆð
 €Kð	 
�%ŠØˆð €Kð ˆØ€Kr    )9Ú__doc__ÚfontTools.misc.fixedToolsr   r   r   r   rÁ  r   r   r	   r
   ÚfontTools.pens.boundsPenr   r0   ÚloggingÚ	getLoggerrý   rÏ   r   r   r(   r+   r3   r8   r=   rB   rM   rä  rd   rÙ  r  rG   Ú	enumeraterê   Ú
maxOpStackrk   rÚ  r×   ÚencodeIntCFFrß  rÚ   rÒ   rÜ   rá   rú   Ú	Exceptionrü   Úobjectr  rå  rŸ  r·  rM  rˆ  rÜ  rç  r  )rù   r  s   00r   ú<module>r      s?  ðñ÷ó ÷ JÓ IÝ .Û Û ð €g×Ñ˜Ó!€òòò2ò
3ò
ò
ò
<ò
!ò
 ð  �F˜S‘LÐ Ø - Ñ0Ð �!�BÐ Ø%¨)¨Ñ4Ð �"�SÐ Ø'¨NÐ+;Ñ;Ð �#�cÐ Ø'¨NÐ+;Ñ;Ð �#�cÐ Ø%Ð �#Ñ Ù
ÐÓ Ò$Ð $Ð$à%¡aÐ(Ð Ø%Ð �"Ñ Ø'Ð �#Ñ à*©1Ð-Ð Ø)Ð �rÑ Ø,Ð �rÑ Ø+Ð �sÑ ò€ñ" %.¨kÓ$:×;™D˜A˜q�1�a‘4Ó;€à€
òò8€òv1ñh ˜UÓ#€Ù˜DÓ!€Ù˜DÓ!€ð Ÿ™ó +ñ ˜“™g c›lÑ*€ò1ôh	˜Yô 	ôF9˜ô F9òR€ô<0Ð)ô 0ôfaÐ)ô aôHVÐ+ô VôrY!�6ô Y!ôx%�<ô %ôBv�Vô vórùós* <s   ÃE<