Ë
    £ehW­  ã                   ó`  — d dl ­ ddlmZ ddlmZ ddlmZmZmZ ddl	m
Z
 ddlmZ ddlmZmZmZ dd	lmZmZ dd
lmZ ddlmZ ddlmZ ddlZddlZddlZddlZ ej<                  d«      Z G d„ de «      Z! G d„ d«      Z" G d„ de"«      Z# G d„ de#«      Z$ G d„ de#«      Z% G d„ de"«      Z&y)é   )Ú*é    )ÚTTFont)ÚLerpGlyphSet)ÚRecordingPenÚDecomposingRecordingPenÚRecordingPointPen)ÚControlBoundsPen)ÚCairoPen)ÚSegmentToPointPenÚPointToSegmentPenÚReverseContourPointPen)ÚPerContourOrComponentPenÚSimpleRecordingPointPen)Úcycle)Úwraps)ÚBytesIONzfontTools.varLib.interpolatablec                   ó   — e Zd Zd„ Zd„ Zy)ÚOverridingDictc                 ó   — || _         y ©N©Úparent_dict)Úselfr   s     úa/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/fontTools/varLib/interpolatablePlot.pyÚ__init__zOverridingDict.__init__    s
   € Ø&ˆÕó    c                 ó    — | j                   |   S r   r   )r   Úkeys     r   Ú__missing__zOverridingDict.__missing__#   s   € Ø×Ñ Ñ$Ð$r   N)Ú__name__Ú
__module__Ú__qualname__r   r    © r   r   r   r      s   „ ò'ó%r   r   c            	       ó   — 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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+dEd$„Z,d%„ Z-d&„ Z.d'„ Z/d(d#d#d)œd*„Z0d(d#d#d)œd+„Z1d,„ Z2d-„ Z3d.„ Z4d/„ Z5d(d(d0œd1„Z6d(d(d0œd2„Z7d3d3d4d3d5d#d#d#d6œd7„Z8d3d3d#d8œd9„Z9d3d3d4d:d;œd<„Z:d3d3d4d:dd=œd>„Z;d3d3d4d?œd@„Z<d3d3d4d#d#dAœdB„Z=dC„ Z>dFdD„Z?y#)GÚInterpolatablePlotg      ƒ@i  gÍÌÌÌÌÌ@é   é   r   )ç333333Ó?r)   r)   )çš™™™™™É?r*   r*   )çÍÌÌÌÌÌì?r+   r+   ç      à?)çš™™™™™é?r-   r-   )çš™™™™™¹?r.   r.   )r   r-   r   çffffffæ?é   )r   r,   r   r/   é   )r   r+   r   r/   é   )r   r   r   r/   )r   r   r   r/   é	   )r   r   r   r/   é   ))r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   çš™™™™™Ù?z#Your font's good! Have a cupcake...)r   r,   r   )r)   r   r)   a  
                          ,@.
                        ,@.@@,.
                  ,@@,.@@@.  @.@@@,.
                ,@@. @@@.     @@. @@,.
        ,@@@.@,.@.              @.  @@@@,.@.@@,.
   ,@@.@.     @@.@@.            @,.    .@' @'  @@,
 ,@@. @.          .@@.@@@.  @@'                  @,
,@.  @@.                                          @,
@.     @,@@,.     ,                             .@@,
@,.       .@,@@,.         .@@,.  ,       .@@,  @, @,
@.                             .@. @ @@,.    ,      @
 @,.@@.     @,.      @@,.      @.           @,.    @'
  @@||@,.  @'@,.       @@,.  @@ @,.        @'@@,  @'
     \\@@@@'  @,.      @'@@@@'   @@,.   @@@' //@@@'
      |||||||| @@,.  @@' |||||||  |@@@|@||  ||
       \\\\\\\  ||@@@||  |||||||  |||||||  //
        |||||||  ||||||  ||||||   ||||||  ||
         \\\\\\  ||||||  ||||||  ||||||  //
          ||||||  |||||  |||||   |||||  ||
           \\\\\  |||||  |||||  |||||  //
            |||||  ||||  |||||  ||||  ||
             \\\\  ||||  ||||  ||||  //
              ||||||||||||||||||||||||
)r   r)   r)   z\_(")_/z
 o
/|\
/ \
z
 o
/O\
/ \
z \o/ Nc                 óÄ  — || _         || _        |xs |D �cg c]  }t        |«      ‘Œ c}| _        i | _        |j                  «       D ],  \  }}t        | |«      st        d|z  «      ‚t        | ||«       Œ. | j                  dz  | j                  dz  z
  | _        | j                  dz  | j                  dz  z
  | j                  dz  z
  | j                  z
  | _        y c c}w )NzUnknown keyword argument: %sé   é   r0   )ÚoutÚ	glyphsetsÚreprÚnamesÚtocÚitemsÚhasattrÚ	TypeErrorÚsetattrÚwidthÚpadÚpanel_widthÚheightÚ	font_sizeÚtitle_font_sizeÚpanel_height)r   r9   r:   r<   ÚkwargsÚgÚkÚvs           r   r   zInterpolatablePlot.__init__r   sÏ   € ØˆŒØ"ˆŒØÒ:°	Ö:¨1œt A�wÒ:ˆŒ
ØˆŒà—L‘L“Nò 	 ‰DˆAˆqÜ˜4 Ô#ÜÐ >ÀÑ BÓCÐCÜ�D˜!˜QÕð	 ð
  Ÿ:™:¨™>¨D¯H©H°q©LÑ8ˆÔà�K‰K˜!‰O˜dŸh™h¨™lÑ*¨T¯^©^¸aÑ-?Ñ?À$×BVÑBVÑVð 	Õùò ;s   —Cc                 ó   — | S r   r$   ©r   s    r   Ú	__enter__zInterpolatablePlot.__enter__‚   s   € Øˆr   c                  ó   — y r   r$   ©r   ÚtypeÚvalueÚ	tracebacks       r   Ú__exit__zInterpolatablePlot.__exit__…   s   € Ør   c                 ó.   — | xj                   dz  c_         y )Nr   )Úpage_numberrN   s    r   Ú	show_pagezInterpolatablePlot.show_pageˆ   s   € Ø×Ò˜AÑÖr   T©Úshow_toleranceÚ	toleranceÚ	kinkinessc          
      óö  — | j                   }| j                  d| j                   z  z
  }| j                  d| j                   z  z
  }|x}}	| j                  d||	d|| j                  ¬«       |	| j                  z  }	dd l}
|D �]Ã  }t        j                  j                  |«      }|	| j                  | j                   z   z  }	| j                  |||	d|¬«       |	| j                  | j                   z   z  }		 |
j                  t        |d«      j                  «       «      j                  «       }| j                  d	|z  ||z   |	|¬
«       |	| j                  z  }	|j                  d«      rrt!        |«      }d|v r|d   nd }|sŒýdD ]R  \  }}|j#                  |«      }|€Œ| j                  |›d|›�||z   |	|¬
«       |	| j                  | j                   z   z  }	ŒT �ŒV|j                  d«      s�Œiddlm}  ||«      }dD ]H  \  }}| j                  |›dt)        ||«      ›�||z   |	|¬
«       |	| j                  | j                   z   z  }	ŒJ �ŒÆ | j+                  |||¬«       | j-                  «        y # t        $ r Y �Œ%w xY w)Nr8   r7   zProblem report for:T©ÚxÚyÚboldrB   rF   r   )r_   r`   ra   rB   Úrbzsha1: %s©r_   r`   rB   z.ttfÚname))úFamily name)é   r(   r   )ÚVersion)é   z: )z.glyphsz.glyphspackage)ÚGSFont))re   Ú
familyName)ÚVersionMajorÚversionMajor)ÚVersionMinorÚ_versionMinorrY   )rC   rB   rE   Ú
draw_labelrG   ÚhashlibÚosÚpathÚbasenamerF   Úsha1ÚopenÚreadÚ	hexdigestÚIsADirectoryErrorÚendswithr   ÚgetFirstDebugNameÚ	glyphsLibri   ÚgetattrÚdraw_legendrX   )r   ÚfilesrZ   r[   r\   rC   rB   rE   r_   r`   rp   ÚfileÚ	base_fileÚhÚttFontrd   ÚwhatÚnameIDsÚnri   ÚfÚfields                         r   Úadd_title_pagez!InterpolatablePlot.add_title_page‹   s‹  € ð �h‰hˆØ—
‘
˜Q §¡™\Ñ)ˆØ—‘˜q 4§8¡8™|Ñ+ˆØˆˆˆAà�‰Ø!ØØØØØ×*Ñ*ð 	ô 	
ð 	
ˆT×!Ñ!Ñ!ˆãàó +	3ˆDÜŸ™×(Ñ(¨Ó.ˆIØ�—‘ $§(¡(Ñ*Ñ*ˆAØ�O‰O˜I¨¨a°dÀ%ˆOÔHØ�—‘ $§(¡(Ñ*Ñ*ˆAðØ—L‘L¤ d¨DÓ!1×!6Ñ!6Ó!8Ó9×CÑCÓE�Ø—‘ 
¨Q¡°!°c±'¸QÀe�ÔLØ�T—^‘^Ñ#�ð �}‰}˜VÔ$Ü ›�Ø)/°6Ñ)9�v˜f’~¸t�Úð*ò 
7™˜˜gð !×2Ñ2°7Ó;˜Ø˜9Ø$ØŸ™Ú(,©aÐ0°A¸±G¸qÈð (ô ð ˜TŸ^™^¨d¯h©hÑ6Ñ6™ò
7ð —‘Ð<Ö=Ý,á˜4“L�ð$ò 3‘K�D˜%ð
 —O‘OÚ$(¬'°!°UÔ*;Ð<Ø˜c™'ØØ#ð	 $ô ð ˜Ÿ™¨$¯(©(Ñ2Ñ2‘Aò3ðA+	3ðZ 	×ÑØ)°YÈ)ð 	ô 	
ð 	�‰ÕøôM %ò Úðús   Ã1A!I+É+	I8É7I8c                óÔ  — t        j                  | j                  «      }| j                  }| j                  | j                  z
  | j
                  dz  z
  }| j                  d| j                  z  z
  }|| j                  dz  z   }|| j                  dz  z   }	|r1| j                  d|	||¬«       || j                  | j
                  z   z  }| j                  d|	||¬«       |j                  || j                  dz  z
  |d| j                  z  | j
                  «        |j                  | j                  Ž  |j                  «        | j                  rD |j                  | j                  Ž  |j                  | j                  «       |j                  «         |j                   | j"                  Ž  |j%                  «        || j                  | j
                  z   z  }| j                  d|	||¬«       |j                  || j                  dz  z
  |d| j                  z  | j
                  «       | j                  r) |j                  | j                  Ž  |j                  «        | j                  rD |j                  | j                  Ž  |j                  | j                  «       |j                  «         |j                   g | j&                  d	   ¢| j(                  ‘­Ž  |j%                  «        || j                  | j
                  z   z  }| j                  d
|	||¬«       | j+                  |||| j
                  dz  z   | j,                  | j.                  | j0                  ¬«       || j                  | j
                  z   z  }| j                  d|	||¬«       | j3                  |||| j
                  dz  z   | j4                  | j6                  ¬«       || j                  | j
                  z   z  }| j                  d|	||¬«       | j3                  |||| j
                  dz  z   | j8                  | j:                  ¬«       || j                  | j
                  z   z  }| j                  d|	||¬«       | j=                  ||| j>                  dz  z
  || j
                  dz  z   | j@                  ¬«       || j                  | j
                  z   z  }| j                  d|	||¬«       | j3                  |||| j
                  dz  z   | j8                  | jB                  ¬«       || j                  | j
                  z   z  }| j                  d|	||¬«       | j=                  ||| j>                  dz  z
  || j
                  dz  z   | jB                  ¬«       || j                  | j
                  z   z  }| j                  d|||d¬«       || j                  | j
                  z   z  }|�4| j                  d|z  |	||¬«       || j                  | j
                  z   z  }|�4| j                  d|z  |	||¬«       || j                  | j
                  z   z  }| j                  d|||d¬«       || j                  | j
                  z   z  }y )Nr7   r1   z,Tolerance: badness; closer to zero the worserc   zUnderweight contoursr/   g      ø?z/Colored contours: contours with the wrong orderr   zKink artifactr,   )r_   r`   ÚdiameterÚstroke_widthÚcolorz!Point causing kink in the contour)r_   r`   rŠ   rŒ   z!Suggested new contour start pointz4Contour start point in contours with wrong directionr)   ©r_   r`   rŒ   z5Contour start point when the first two points overlapz!Contour start point and directionzLegend:T©r_   r`   rB   ra   z!Kink-reporting aggressiveness: %gzError tolerance: %gzParameters:)"ÚcairoÚContextÚsurfacerC   rE   rF   rB   ro   Ú	rectangleÚset_source_rgbÚ
fill_colorÚfill_preserveÚstroke_colorÚset_line_widthr‹   Ústroke_preserveÚset_source_rgbaÚweight_issue_contour_colorÚfillÚcontour_colorsÚcontour_alphaÚdraw_circleÚkink_circle_sizeÚkink_circle_stroke_widthÚkink_circle_colorÚdraw_dotÚkink_point_sizeÚkink_point_colorÚcorrected_start_point_sizeÚcorrected_start_point_colorÚ
draw_arrowÚstart_arrow_lengthÚwrong_start_point_colorÚstart_point_color)
r   rZ   r[   r\   Úcrr_   r`   rB   ÚxxÚxxxs
             r   r}   zInterpolatablePlot.draw_legendÑ   sò  € Ü�]‰]˜4Ÿ<™<Ó(ˆà�H‰HˆØ�K‰K˜$Ÿ(™(Ñ" T§^¡^°aÑ%7Ñ7ˆØ—
‘
˜Q §¡™\Ñ)ˆà�—‘˜A‘ÑˆØ�$—(‘(˜Q‘,ÑˆáØ�O‰OØ>À#ÈÐRWð ô ð �—‘˜DŸN™NÑ*Ñ*ˆAà�‰Ð.°#¸À%ˆÔHØ
�‰�R˜$Ÿ(™( S™.Ñ(¨!¨S°4·8±8©^¸T¿^¹^ÔLØˆ×Ñ˜4Ÿ?™?Ñ+Ø
×ÑÔØ×ÒØˆB×Ñ˜t×0Ñ0Ñ1Ø×Ñ˜d×/Ñ/Ô0Ø×ÑÔ Øˆ×Ñ˜D×;Ñ;Ñ<Ø
�‰Œ	Ø	ˆT�X‰X˜Ÿ™Ñ&Ñ&ˆà�‰Ø=ÀÈÐQVð 	ô 	
ð 	�‰�R˜$Ÿ(™( S™.Ñ(¨!¨S°4·8±8©^¸T¿^¹^ÔLØ�?Š?ØˆB×Ñ˜tŸ™Ñ/Ø×ÑÔØ×ÒØˆB×Ñ˜t×0Ñ0Ñ1Ø×Ñ˜d×/Ñ/Ô0Ø×ÑÔ Øˆ×ÑÐG˜D×/Ñ/°Ñ2ÐG°D×4FÑ4FÓGØ
�‰Œ	Ø	ˆT�X‰X˜Ÿ™Ñ&Ñ&ˆà�‰˜¨3°!¸5ˆÔAØ×ÑØØØ�$—.‘. 3Ñ&Ñ&Ø×*Ñ*Ø×6Ñ6Ø×(Ñ(ð 	ô 	
ð 	
ˆT�X‰X˜Ÿ™Ñ&Ñ&ˆà�‰Ð;¸sÀaÈuˆÔUØ�‰ØØØ�$—.‘. 3Ñ&Ñ&Ø×)Ñ)Ø×'Ñ'ð 	ô 	
ð 	
ˆT�X‰X˜Ÿ™Ñ&Ñ&ˆà�‰Ð;¸sÀaÈuˆÔUØ�‰ØØØ�$—.‘. 3Ñ&Ñ&Ø×4Ñ4Ø×2Ñ2ð 	ô 	
ð 	
ˆT�X‰X˜Ÿ™Ñ&Ñ&ˆà�‰ØBØØØð	 	ô 	
ð 	�‰ØØ�4×*Ñ*¨SÑ0Ñ0Ø�$—.‘. 3Ñ&Ñ&Ø×.Ñ.ð	 	ô 	
ð 	
ˆT�X‰X˜Ÿ™Ñ&Ñ&ˆà�‰ØCØØØð	 	ô 	
ð 	�‰ØØØ�$—.‘. 3Ñ&Ñ&Ø×4Ñ4Ø×(Ñ(ð 	ô 	
ð 	
ˆT�X‰X˜Ÿ™Ñ&Ñ&ˆà�‰Ð;¸sÀaÈuˆÔUØ�‰ØØ�4×*Ñ*¨SÑ0Ñ0Ø�$—.‘. 3Ñ&Ñ&Ø×(Ñ(ð	 	ô 	
ð 	
ˆT�X‰X˜Ÿ™Ñ&Ñ&ˆà�‰˜	 Q¨!°5¸tˆÔDØ	ˆT�X‰X˜Ÿ™Ñ&Ñ&ˆàÐ Ø�O‰OØ3°iÑ?ØØØð	 ô ð �—‘˜DŸN™NÑ*Ñ*ˆAàÐ Ø�O‰OØ%¨	Ñ1ØØØð	 ô ð �—‘˜DŸN™NÑ*Ñ*ˆAà�‰˜¨¨a°uÀ4ˆÔHØ	ˆT�X‰X˜Ÿ™Ñ&Ñ&‰r   c           
      óV  — | j                   }| j                  d| j                   z  z
  }| j                  d| j                   z  z
  }|x}}| j                  d||d|| j                  ¬«       || j                  z  }t        t        «      }t        |j                  «       «      D ]#  \  }}|D ]  }	||	d      j                  |«       Œ Œ% d|v r|d= t        |d„ ¬	«      D ]»  }
|| j                  z  }| j                  d
|
t        ||
   «      fz  |||d¬«       || j                  z  }t        ||
   «      D ]c  }|| j                  z   |kD  r| j                  «        | j                  |z   }| j                  ||d|z  z   ||d|z  z
  ¬«       || j                  z  }Œe Œ½ | j                  «        y )Nr8   r7   zSummary of problemsTr^   rR   Únothingc                 ó(   — t         j                  |    S r   )ÚInterpolatableProblemÚseverity©r_   s    r   ú<lambda>z0InterpolatablePlot.add_summary.<locals>.<lambda>r  s   € Ô.C×.LÑ.LÈQÑ.O€ r   ©r   z%s: %drŽ   rc   )rC   rB   rE   ro   rG   ÚdefaultdictÚsetÚsortedr>   ÚaddrF   ÚlenrX   )r   ÚproblemsrC   rB   rE   r_   r`   Úglyphs_per_problemÚ	glyphnameÚproblemÚproblem_types              r   Úadd_summaryzInterpolatablePlot.add_summaryY  sÔ  € Ø�h‰hˆØ—
‘
˜Q §¡™\Ñ)ˆØ—‘˜q 4§8¡8™|Ñ+ˆØˆˆˆAà�‰Ø!ØØØØØ×*Ñ*ð 	ô 	
ð 	
ˆT×!Ñ!Ñ!ˆä(¬Ó-ÐÜ#)¨(¯.©.Ó*:Ó#;ò 	CÑˆI�xØ#ò C�Ø" 7¨6¡?Ñ3×7Ñ7¸	ÕBñCð	Cð Ð*Ñ*Ø" 9Ð-ä"ØÑ$Oô
ò 	$ˆLð �—‘ÑˆAØ�O‰OØ˜L¬#Ð.@ÀÑ.NÓ*OÐPÑPØØØØð ô ð �—‘ÑˆAä#Ð$6°|Ñ$DÓEò $�	Ø�t—~‘~Ñ%¨Ò.Ø—N‘NÔ$ØŸ™¨Ñ,�AØ—‘ 	¨Q°°S±©[¸AÀUÈQÐQTÉWÁ_�ÔUØ�T—^‘^Ñ#‘ñ$ð	$ð( 	�‰Õr   c           	      ób  — | j                   }| j                  d| j                   z  z
  }| j                  d| j                   z  z
  }|x}}| j                  |||d|| j                  ¬«       || j                  | j                   z   z  }d }|D ]“  \  }	\  }
}|
|k(  rŒ|
}|| j
                  z   |kD  r| j                  «        | j
                  |z   }| j                  |
|d|z  z   ||d|z  z
  ¬«       | j                  t        |	«      ||d|z  d¬«       || j
                  z  }Œ• | j                  «        y )	Nr7   Tr^   rh   rc   r1   r   )r_   r`   rB   Úalign)rC   rB   rE   ro   rG   rF   rX   Ústr)r   Útitler>   rC   rB   rE   r_   r`   Úlast_glyphnameÚpage_nor½   r»   s               r   Ú_add_listingzInterpolatablePlot._add_listing‡  s2  € Ø�h‰hˆØ—
‘
˜Q §¡™\Ñ)ˆØ—‘˜q 4§8¡8™|Ñ+ˆØˆˆˆAà�‰Ø�Q˜! $¨e¸t×?SÑ?Sð 	ô 	
ð 	
ˆT×!Ñ! D§H¡HÑ,Ñ,ˆàˆØ.3ò 		 Ñ*ˆGÑ*�i Ø˜NÒ*ØØ&ˆNØ�4—>‘>Ñ! FÒ*Ø—‘Ô Ø—N‘N SÑ(�Ø�O‰O˜I¨¨Q°©W©¸ÀÈÈSÉÁˆOÔQØ�O‰OœC ›L¨A°¸!¸c¹'ÈˆOÔKØ�—‘Ñ‰Að		 ð 	�‰Õr   c                 ój   — | j                  dt        | j                  j                  «       «      «       y )NzTable of contents©rÇ   r¸   r=   r>   rN   s    r   Úadd_table_of_contentsz(InterpolatablePlot.add_table_of_contents   s#   € Ø×ÑÐ-¬v°d·h±h·n±nÓ6FÓ/GÕHr   c                 óp   — | j                  dt        | j                  j                  «       d„ ¬«      «       y )NÚIndexc                 ó   — | d   d   S )Nr   r   r$   r³   s    r   r´   z.InterpolatablePlot.add_index.<locals>.<lambda>¤  s   € È!ÈAÉ$ÈqÉ'€ r   rµ   rÉ   rN   s    r   Ú	add_indexzInterpolatablePlot.add_index£  s%   € Ø×Ñ˜'¤6¨$¯(©(¯.©.Ó*:Ñ@QÔ#RÕSr   ©rZ   Úshow_page_numberc                óf  — |j                  «       D ]ž  \  }}d }g }|D ]h  }d|v r|d   n	|d   |d   f}	|	|k(  r|j                  |«       Œ-|r'| j                  ||||¬«       | j                  «        g }|	}|j                  |«       Œj |sŒz| j                  ||||¬«       | j                  «        Œ  y )NÚ
master_idxÚmaster_1_idxÚmaster_2_idxrÏ   )r>   ÚappendÚadd_problemrX   )
r   r»   rZ   rÐ   ÚglyphÚglyph_problemsÚlast_mastersÚcurrent_glyph_problemsÚpÚmasterss
             r   Úadd_problemszInterpolatablePlot.add_problems¦  só   € Ø%-§^¡^Ó%5ò 	!Ñ!ˆE�>ØˆLØ%'Ð"Ø#ò 1�ð $ qÑ(ð �l’Oà˜NÑ+¨Q¨~Ñ->Ð?ð ð
 ˜lÒ*Ø*×1Ñ1°!Ô4Øá)Ø×$Ñ$ØØ.Ø'5Ø)9ð	 %ô ð —N‘NÔ$Ø-/Ð*Ø&�Ø&×-Ñ-¨aÕ0ð)1ò* &Ø× Ñ ØØ*Ø#1Ø%5ð	 !ô ð —‘Õ ñ?	!r   c                óþ  ‡‡:— t        |«      t        t        fvr|g}‰|f| j                  | j                  <   |d   d   Š:t        d„ |D «       «      }t        ˆ:fd„|D «       «      s+dj                  t        |D �ch c]  }|d   ’Œ	 c}«      «      Š:t        j                  d‰‰:«       d|d   v rdnd	}|D �cg c]
  }|d   |   ‘Œ }	}‰:t        j                  k(  r9t        ˆfd
„t        | j                  «      D «       «      }
|	j!                  d|
«       | j"                  }| j"                  }| j%                  d‰z   ||| j&                  dd| j(                  ¬«       t+        d„ |D «       «      }|dk  r6|r4| j%                  d|z  ||| j,                  d| j"                  z  z
  dd¬«       || j(                  | j"                  z   z  }| j%                  d‰:z   ||| j,                  d| j"                  z  z
  | j&                  d¬«       || j.                  | j"                  dz  z   z  }g }t        |	«      D ]Ý  \  }}| j                  |   }| j0                  |   }| j%                  |||| j2                  | j4                  d¬«       || j.                  | j"                  z   z  }|‰   �'|j7                  | j9                  |‰||||¬«      «       n| j;                  | j<                  ||¬«       || j>                  | j.                  z   | j"                  z   z  }Œß tA        d„ |D «       «      �rv| j"                  | j4                  z   | j"                  z   }| j"                  }|| j(                  | j"                  dz  z   z  }|| j.                  | j"                  z   z  }| j                  |	d      }| j                  |	d      }| j%                  d||| j&                  | j4                  d¬«       || j.                  | j"                  z   z  }tC        ||«      }| j9                  |‰ddig|D �cg c]8  }|d   t        jD                  t        jF                  t        jH                  fv r|‘Œ: c}z   d ||t+        |«      ¬«       || j>                  | j.                  z   | j"                  z   z  }tA        d„ |D «       «      �r±| j%                  d||| j&                  | j4                  d¬«       || j.                  | j"                  z   z  }tK        «      }tK        «      }tM        tN        |¬«      }tM        tN        |¬«      }|‰   jQ                  |«       |‰   jQ                  |«       |D ]B  }|d   t        jR                  k(  sŒ|d   d   D �cg c]  }|jT                  |   ‘Œ }}||_*        ŒD |D �]²  }|d   t        jV                  k(  sŒ|jT                  |d       }|jT                  |d       }tY        «       }t[        |d!«      } |j]                  | «       tY        «       }!t[        |!d!«      } |j]                  | «       |d   }"|d"   rCtY        «       }#t_        |#«      }$|!j]                  |$«       |#}!ta        |!jT                  «      dz
  |"z
  }"|!jT                  d d }%|!jT                  d#d  }&|!jT                  dd# }'|'|"d  |'d |" z   }'|%|'z   |&z   |!_*        tO        «       }(tc        |(d«      } |j]                  | «       tO        «       })tc        |)d«      } |!j]                  | «       |(jT                  |_*        |)jT                  |_*        ||jT                  |d    <   ||jT                  |d    <   �Œµ |D �]  }|d   t        jD                  k(  sŒ|jT                  |d       }|jT                  |d       }tY        «       }t[        |d!«      } |j]                  | «       tY        «       }!t[        |!d!«      } |j]                  | «       |d$   }|dz   }*|jT                  |*   d   d   }+|!jT                  |*   d   d   },|dz
  ta        |jT                  «      dz
  z  dz   }-|jT                  |-   d   d   }.|!jT                  |-   d   d   }/|dz   ta        |jT                  «      dz
  z  dz   }0|jT                  |0   d   d   }1|!jT                  |0   d   d   }2te        |+Ž }+te        |,Ž },te        |.Ž }.te        |/Ž }/te        |1Ž }1te        |2Ž }2tg        |+|.z
  «      tg        |1|.z
  «      z  }3tg        |,|/z
  «      tg        |2|/z
  «      z  }4|3|4z   dz  }5|.|5|1|.z
  z  z   }+|/|5|2|/z
  z  z   },|jT                  |*   d   |+jh                  |+jj                  ff|jT                  |*   d   dd  z   |jT                  |*   d   f|jT                  |*<   |!jT                  |*   d   |,jh                  |,jj                  ff|!jT                  |*   d   dd  z   |!jT                  |*   d   f|!jT                  |*<   tO        «       }(tc        |(d«      } |j]                  | «       tO        «       })tc        |)d«      } |!j]                  | «       |(jT                  |_*        |)jT                  |_*        �Œ tO        «       }6tO        «       }7|jT                  D ]'  }8|6jT                  jm                  |8jT                  «       Œ) |jT                  D ]'  }8|7jT                  jm                  |8jT                  «       Œ) |6j\                  |6_(        |7j\                  |7_(        |6|‰<   |7|‰<   	 tC        ||«      }| j9                  |‰dd%id ||t+        |«      ¬«       || j>                  | j"                  z   z  }n|| j<                  }9t        jF                  |v r| jp                  }9n=t        jH                  |v r| jr                  }9nt        jt                  |v r| jv                  }9| j;                  |9||¬«       |rc| j%                  ty        | j                  «      d| jz                  | j.                  z
  | j"                  z
  | j,                  | j&                  d¬&«       y y c c}w c c}w c c}w c c}w # tn        $ r" | j;                  | j<                  ||¬«       Y �Œ=w xY w)'Nr   rR   c              3   ó&   K  — | ]	  }|d    –— Œ y­w©rR   Nr$   ©Ú.0r¾   s     r   ú	<genexpr>z1InterpolatablePlot.add_problem.<locals>.<genexpr>Ñ  ó   è ø€ ÒD°˜G F�OÑDùó   ‚c              3   ó(   •K  — | ]	  }|‰k(  –— Œ y ­wr   r$   ©râ   Úptr¿   s     €r   rã   z1InterpolatablePlot.add_problem.<locals>.<genexpr>Ò  ó   øè ø€ Ò>¨"�2˜Õ%Ñ>ùó   ƒz, zDrawing %s: %srÒ   )rÒ   )rÓ   rÔ   c              3   ó4   •K  — | ]  \  }}|‰   €Œ|–— Œ y ­wr   r$   )râ   ÚiÚmr½   s      €r   rã   z1InterpolatablePlot.add_problem.<locals>.<genexpr>ß  s#   øè ø€ ò  Ù�a˜¸1¸Y¹<Ñ;S”ñ ùs   ƒ‘zGlyph name: T)r_   r`   rŒ   rÂ   ra   rF   c              3   ó@   K  — | ]  }|j                  d d«      –— Œ y­w)r[   r   N)Úget)râ   rÛ   s     r   rã   z1InterpolatablePlot.add_problem.<locals>.<genexpr>ð  s   è ø€ Ò@°!˜Ÿ™˜k¨1×-Ñ@ùs   ‚r   ztolerance: %.2fr7   )r_   r`   rB   rÂ   ra   z
Problems: )r_   r`   rB   rŒ   ra   r,   )r_   r`   rŒ   rB   rÂ   )r_   r`   c              3   óØ   K  — | ]b  }|t         j                  t         j                  t         j                  t         j                  t         j
                  t         j                  fv –— Œd y ­wr   )r±   ÚNOTHINGÚWRONG_START_POINTÚCONTOUR_ORDERÚKINKÚUNDERWEIGHTÚ
OVERWEIGHT©râ   rè   s     r   rã   z1InterpolatablePlot.add_problem.<locals>.<genexpr>  sZ   è ø€ ò 
ð ð ä%×-Ñ-Ü%×7Ñ7Ü%×3Ñ3Ü%×*Ñ*Ü%×1Ñ1Ü%×0Ñ0ðôñ
ùs   ‚A(A*zmidway interpolationÚmidway©r_   r`   Úscalec              3   ó~   K  — | ]5  }|t         j                  t         j                  t         j                  fv –— Œ7 y ­wr   )r±   rò   ró   rô   r÷   s     r   rã   z1InterpolatablePlot.add_problem.<locals>.<genexpr>S  s?   è ø€ ò 
ð ð ä%×7Ñ7Ü%×3Ñ3Ü%×*Ñ*ðôñ
ùs   ‚;=zproposed fix©ÚglyphsetÚvalue_2ÚcontourFÚreversedéÿÿÿÿrS   Úfixed)r_   r`   rB   rŒ   rÂ   )>rR   ÚlistÚtupler=   rW   r·   ÚallÚjoinr¸   ÚlogÚinfor±   ÚMISSINGÚnextÚ	enumerater:   ÚinsertrC   ro   Ú
head_colorrG   ÚminrB   rF   r<   Úlabel_colorrD   rÕ   Ú
draw_glyphÚdraw_emoticonÚshrugrH   Úanyr   rô   rõ   rö   r   r   r   Údrawró   rS   rò   r	   r   Úreplayr   rº   r   ÚcomplexÚabsÚrealÚimagÚextendÚ
ValueErrorÚunderweightÚ
overweightrñ   ÚyayrÃ   rE   );r   r½   r»   rZ   rÐ   Úproblem_typesr¾   Úmaster_keysrK   Úmaster_indicesÚsample_glyphr_   r`   r[   ÚscalesÚwhichrÒ   rý   rd   Ú	glyphset1Ú	glyphset2Úmidway_glyphsetrÛ   Úoverriding1Úoverriding2ÚperContourPen1ÚperContourPen2rì   Úfixed_contoursÚwrongContour1ÚwrongContour2Úpoints1Ú	converterÚpoints2Úproposed_startÚnew_points2ÚreversedPenÚ	beginPathÚendPathÚptsÚsegment1Úsegment2ÚjÚpt0Úpt1Új_prevÚpt0_prevÚpt1_prevÚj_nextÚpt0_nextÚpt1_nextÚr0Úr1Úr_midÚfixed1Úfixed2rÿ   Úemoticonr¿   s;    `                                                        @r   rÖ   zInterpolatablePlot.add_problemÈ  s¥  ù€ ô �‹>¤$¬ Ñ.Ø �zˆHà&/°Ð%:ˆ�‰�×!Ñ!Ñ"à ‘{ 6Ñ*ˆÜÑD¸8ÔDÓDˆÜÓ>°Ô>Ô>ØŸ9™9¤VÈHÖ,UÀ¨W°V«_Ò,UÓ%VÓWˆLä�‰Ð! 9¨lÔ;ð ˜x¨™{Ñ*ñ à1ð 	ð
 3>Ö>¨Q˜( 1™+ a›.Ð>ˆÐ>àÔ0×8Ñ8Ò8Üó  Ü'¨¯©Ó7ô ó ˆLð ×!Ñ! ! \Ô2à�H‰HˆØ�H‰Hˆà�‰Ø˜YÑ&ØØØ—/‘/ØØØ×*Ñ*ð 	ô 	
ô Ñ@°xÔ@Ó@ˆ	Ø�qŠ=™^Ø�O‰OØ! IÑ-ØØØ—j‘j 1 t§x¡x¡<Ñ/ØØð ô ð 	
ˆT×!Ñ! D§H¡HÑ,Ñ,ˆØ�‰Ø˜<Ñ'ØØØ—*‘*˜q 4§8¡8™|Ñ+Ø—/‘/Øð 	ô 	
ð 	
ˆT�^‰^˜dŸh™h¨™lÑ*Ñ*ˆàˆÜ!*¨>Ó!:ò 	?ÑˆE�:Ø—~‘~ jÑ1ˆHØ—:‘:˜jÑ)ˆDà�O‰OØØØØ×&Ñ&Ø×&Ñ&Øð ô ð �—‘ $§(¡(Ñ*Ñ*ˆAà˜	Ñ"Ð.Ø—‘Ø—O‘O H¨i¸À5ÈAÐQR�OÓSõð ×"Ñ" 4§:¡:°°aÐ"Ô8Ø�×"Ñ" T§^¡^Ñ3°d·h±hÑ>Ñ>‰Að)	?ô, ñ 
ð $ô
õ 
ð —‘˜4×+Ñ+Ñ+¨d¯h©hÑ6ˆAØ—‘ˆAØ�×%Ñ%¨¯©°1©Ñ4Ñ4ˆAØ�—‘ $§(¡(Ñ*Ñ*ˆAàŸ™ ~°aÑ'8Ñ9ˆIØŸ™ ~°aÑ'8Ñ9ˆIð �O‰OØ&ØØØ—o‘oØ×&Ñ&Øð ô ð �—‘ $§(¡(Ñ*Ñ*ˆAä*¨9°iÓ@ˆOØ�O‰OØØØ˜(Ð#Ð$ð &ö	àØ˜‘yä-×2Ñ2Ü-×9Ñ9Ü-×8Ñ8ðñò ò	ñ
ð ØØÜ˜&“kð# ô ð( �×"Ñ" T§^¡^Ñ3°d·h±hÑ>Ñ>ˆAäñ 
ð $ô
õ 
ð �O‰OØØØØ—o‘oØ×&Ñ&Øð ô ð �—‘ $§(¡(Ñ*Ñ*ˆAä(¨Ó3ˆKÜ(¨Ó3ˆKÜ5Ü {ôˆNô 6Ü {ôˆNð �iÑ ×%Ñ% nÔ5Ø�iÑ ×%Ñ% nÔ5à#ò :�Ø˜6‘?Ô&;×&IÑ&IÓIà9AÀ!¹ÀYÑ9Oö&Ø45˜×,Ñ,¨QÓ/ð&�Nð &ð ,:�NÕ(ð:ð $ó +M�Ø˜6‘?Ô&;×&MÑ&MÓMà$2×$8Ñ$8¸ÀÑ9KÑ$L�MØ$2×$8Ñ$8¸ÀÑ9KÑ$L�Mô 0Ó1�GÜ 1°'¸5Ó A�IØ!×(Ñ(¨Ô3Ü/Ó1�GÜ 1°'¸5Ó A�IØ!×(Ñ(¨Ô3à%,¨YÑ%7�Nð ˜zÒ*Ü&7Ó&9˜Ü&<¸[Ó&I˜ØŸ™ {Ô3Ø"-˜Ü),¨W¯]©]Ó);¸aÑ)?À.Ñ)P˜ð !(§¡¨b¨qÐ 1�IØ%Ÿm™m¨B¨CÐ0�GØ!Ÿ-™-¨¨"Ð-�CØ˜n˜oÐ.°°_°nÐ1EÑE�CØ$-°¡O°gÑ$=�G”Mô  ,›~�HÜ 1°(¸DÓ A�IØ—N‘N 9Ô-Ü+›~�HÜ 1°(¸DÓ A�IØ—N‘N 9Ô-ð +3¯.©.�MÔ'Ø*2¯.©.�MÔ'Ø?L�N×(Ñ(¨°Ñ);Ñ<Ø?L�N×(Ñ(¨°Ñ);Ó<ðW+MðZ $ó A9�à˜6‘?Ô&;×&@Ñ&@Ó@à$2×$8Ñ$8¸ÀÑ9KÑ$L�MØ$2×$8Ñ$8¸ÀÑ9KÑ$L�Mô 0Ó1�GÜ 1°'¸5Ó A�IØ!×(Ñ(¨Ô3Ü/Ó1�GÜ 1°'¸5Ó A�IØ!×(Ñ(¨Ô3à Ñ(�Að ˜A™�AØ!Ÿ-™-¨Ñ*¨1Ñ-¨aÑ0�CØ!Ÿ-™-¨Ñ*¨1Ñ-¨aÑ0�CØ !™e¬¨G¯M©MÓ(:¸QÑ(>Ñ?À!ÑC�FØ&Ÿ}™}¨VÑ4°QÑ7¸Ñ:�HØ&Ÿ}™}¨VÑ4°QÑ7¸Ñ:�HØ !™e¬¨G¯M©MÓ(:¸QÑ(>Ñ?À!ÑC�FØ&Ÿ}™}¨VÑ4°QÑ7¸Ñ:�HØ&Ÿ}™}¨VÑ4°QÑ7¸Ñ:�Hä! 3˜-�CÜ! 3˜-�CÜ&¨Ð1�HÜ&¨Ð1�HÜ&¨Ð1�HÜ&¨Ð1�Hô ˜S 8™^Ó,¬s°8¸hÑ3FÓ/GÑG�BÜ˜S 8™^Ó,¬s°8¸hÑ3FÓ/GÑG�BØ "™W¨™M�Eà" U¨h¸Ñ.AÑ%BÑB�CØ" U¨h¸Ñ.AÑ%BÑB�Cð  Ÿ™ aÑ(¨Ñ+ØŸ8™8 S§X¡XÐ.Ð0°7·=±=ÀÑ3CÀAÑ3FÀqÀrÐ3JÑJØŸ™ aÑ(¨Ñ+ð(�G—M‘M !Ñ$ð  Ÿ™ aÑ(¨Ñ+ØŸ8™8 S§X¡XÐ.Ð0°7·=±=ÀÑ3CÀAÑ3FÀqÀrÐ3JÑJØŸ™ aÑ(¨Ñ+ð(�G—M‘M !Ñ$ô  ,›~�HÜ 1°(¸DÓ A�IØ—N‘N 9Ô-Ü+›~�HÜ 1°(¸DÓ A�IØ—N‘N 9Ô-ð +3¯.©.�MÔ'Ø*2¯.©.�MÖ'ðCA9ôH "“^ˆFÜ!“^ˆFØ)×/Ñ/ò 3�Ø—‘×#Ñ# G§M¡MÕ2ð3à)×/Ñ/ò 3�Ø—‘×#Ñ# G§M¡MÕ2ð3à Ÿ-™-ˆFŒKØ Ÿ-™-ˆFŒKà%+ˆK˜	Ñ"Ø%+ˆK˜	Ñ"ð9Ü".¨{¸KÓ"H�Ø—‘Ø#ØØ˜WÐ%ØØØÜ˜f›+ð  ô ð �×"Ñ" T§X¡XÑ-Ñ-‰Að —z‘zˆHÜ$×0Ñ0°MÑAØ×+Ñ+‘Ü&×1Ñ1°]ÑBØŸ?™?‘Ü&×.Ñ.°-Ñ?ØŸ8™8�Ø×Ñ˜x¨1°ÐÔ2áØ�O‰OÜ�D×$Ñ$Ó%ØØ—+‘+ §¡Ñ.°·±Ñ9Ø—j‘jØ—o‘oØð õ ð ùò{	 -Vùò ?ùòJ	ùòh&øôZ ò 9Ø×"Ñ" 4§:¡:°°aÐ"×8ð9ús*   Á:p=Â7qÐ=qÕ7qì/q ñ'q<ñ;q<r   )r   r   r   F)r_   r`   rŒ   rÂ   ra   rB   rE   rF   c                ó  — |€| j                   }|€| j                  }|	€| j                  }	t        j                  | j
                  «      }
|
j                  dt        j                  |rt        j                  nt        j                  «       |
j                  |	«       |
j                  «       }|	|	z  |d   z  }	|
j                  |	«       |
j                  «       } |
j                  |Ž  |
j                  |«      }|j                   |kD  rD|	||j                   z  z  }	|
j                  |	«       |
j                  «       }|
j                  |«      }|||j                   z
  |z  z   }||d   z   }|
j                  ||«       |
j                  |«       y )Nz@cairo:r7   r   )rB   rE   rF   r�   r�   r‘   Úselect_font_faceÚFONT_SLANT_NORMALÚFONT_WEIGHT_BOLDÚFONT_WEIGHT_NORMALÚset_font_sizeÚfont_extentsr“   Útext_extentsÚmove_toÚ	show_text)r   Úlabelr_   r`   rŒ   rÂ   ra   rB   rE   rF   r«   rO  ÚextentsÚlabel_xÚlabel_ys                  r   ro   zInterpolatablePlot.draw_label  s^  € ð ˆ=Ø—J‘JˆEØˆ>Ø—[‘[ˆFØÐØŸ™ˆIÜ�]‰]˜4Ÿ<™<Ó(ˆØ
×ÑØÜ×#Ñ#Ù&*ŒE×"Ò"´×0HÑ0Hô	
ð
 	×Ñ˜Ô#Ø—‘Ó(ˆØ 	Ñ)¨L¸©OÑ;ˆ	Ø
×Ñ˜Ô#Ø—‘Ó(ˆàˆ×Ñ˜5Ñ!à—/‘/ %Ó(ˆØ�=‰=˜5Ò à˜ §¡Ñ.Ñ.ˆIØ×Ñ˜YÔ'ØŸ?™?Ó,ˆLØ—o‘o eÓ,ˆGð �u˜wŸ}™}Ñ,°Ñ5Ñ5ˆØ�l 1‘oÑ%ˆØ
�
‰
�7˜GÔ$Ø
�‰�UÕr   rù   c          	      óü  ‡"‡#— t        |«      t        t        fvr|g}t        d„ |D «       «      }|d   d   Š"t	        d„ |D «       «      Š#t        ˆ"fd„‰#D «       «      sdŠ"||   }	t        «       }
|	j                  |
«       t        |«      }|	j                  |«       t        |«      }|j                  |«       |j                  }|€d}|d   |d   z
  }|d	   |d
   z
  }|r+|€| j                  |z  }nt        || j                  |z  «      }|r+|€| j                  |z  }nt        || j                  |z  «      }|€d
}t        j                   | j"                  «      }|j%                  ||«       |j%                  | j                  ||z  z
  dz  | j                  ||z  z
  dz  «       |j'                  || «       |j%                  |d    |d	    «       | j(                  ra |j*                  | j(                  Ž  |j-                  |d   |d
   ||«       |j/                  | j0                  |z  «       |j3                  «        | j4                  s| j6                  rÈt9        ||«      }|j                  |«       | j4                  r<‰"t:        j<                  k7  r) |j*                  | j4                  Ž  |j?                  «        | j6                  rG |j*                  | j6                  Ž  |j/                  | j@                  |z  «       |jC                  «        |jE                  «        t:        jF                  ‰#v st:        jH                  ‰#v r¥tK        t        |¬«      }|
j                  |«       |D ]~  }|d   t:        jF                  t:        jH                  fv sŒ)|jL                  |d      }|j                  t9        ||«      «        |jN                  | jP                  Ž  |jS                  «        Œ€ t        ˆ#fd„t:        jT                  t:        jV                  t:        jX                  hD «       «      �r_|j[                  t        j\                  «       |jL                  D ]4  \  }}|sŒ	|d   \  }}|j_                  ||«       |ja                  ||«       Œ6  |jN                  | jb                  Ž  |j/                  | jd                  |z  «       |j3                  «        |jL                  D ]9  \  }}|sŒ	|d d D ])  \  }}|j_                  ||«       |ja                  ||«       Œ+ Œ;  |jN                  | jf                  Ž  |j/                  | jh                  |z  «       |j3                  «        |jL                  D ]Ñ  \  }}|sŒ	|dv r |j^                  |d   Ž  Œ |dk(  r?|D ]  \  }}|ja                  ||«       Œ |jk                  «         |j^                  |d   Ž  Œd|dk(  ri |j`                  |d   Ž  |jk                  «         |j^                  |d
   Ž   |j`                  |d   Ž  |jk                  «         |j^                  |d   Ž  ŒÒŒÓ  |jN                  | jl                  Ž  |j/                  | jn                  |z  «       |j3                  «        d }|D ]Ï  }|d   t:        jp                  k(  sŒ|d   }ts        | jt                  «      }tK        t        |¬«      }|
j                  |«       tw        |jL                  «      D ]b  \  }}||   |k(  rŒty        |«      }|j                  t9        ||«      «        |jN                  g |¢| jz                  ‘­Ž  |jS                  «        Œd ŒÑ |D �]  }|d   t:        jT                  t:        j|                  fv �r¯|j                  d«      }|�ê|d
k(  råd|v rátK        t        |¬«      }|j                  |«       t�        «       }tƒ        |d«      }|jL                  |€|n||      j                  |«       |jL                  |d      d   }|j…                  «         |j$                  |Ž  |j'                  d
|z  d
|z  «       | j‡                  || jˆ                  | jŠ                  ¬«       |j�                  «        |dk(  s|j                  d«      s| jŽ                  }n| j�                  }d }d}|j…                  «        |jL                  D �]O  \  }}|dk(  r|d   }Œ|€Œ|dk(  r|} n|d   } |�||k(  �r|j…                  «        t“        |Ž }t“        | Ž } t•        | |z
  «      }!|j%                  |j–                  |j˜                  «       |!r|j›                  t�        jž                  | j˜                  |j˜                  z
  | j–                  |j–                  z
  «      «       |j'                  d
|z  d
|z  «       | j¡                  ||¬«       n6|j'                  d
|z  d
|z  «       | j‡                  || jˆ                  |¬«       |j�                  «        |� n
d }|d
z  }�ŒR |j�                  «        |d   t:        j¢                  k(  s�Œñ|j                  d«      }tK        t        |¬«      }|j                  |«       t�        «       }tƒ        |d«      }|jL                  |€|n||      j                  |«       |jL                  |d      d   }|j…                  «         |j$                  |Ž  |j'                  d
|z  d
|z  «       |r4| j¥                  || j¦                  | j¨                  | jª                  ¬«       n(| j‡                  || j¬                  | j®                  ¬«       |j�                  «        �Œ |S )Nc              3   ó,   K  — | ]  }|d    dk(  –— Œ y­w)rR   rø   Nr$   rá   s     r   rã   z0InterpolatablePlot.draw_glyph.<locals>.<genexpr>M  s   è ø€ ÒI°W�W˜V‘_¨Õ0ÑIùs   ‚r   rR   c              3   ó&   K  — | ]	  }|d    –— Œ y­wrà   r$   rá   s     r   rã   z0InterpolatablePlot.draw_glyph.<locals>.<genexpr>O  rä   rå   c              3   ó(   •K  — | ]	  }|‰k(  –— Œ y ­wr   r$   rç   s     €r   rã   z0InterpolatablePlot.draw_glyph.<locals>.<genexpr>P  ré   rê   Úmixed)r   r   r   r   r7   r8   r   rü   rÿ   c              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­wr   r$   )râ   Útr  s     €r   rã   z0InterpolatablePlot.draw_glyph.<locals>.<genexpr>ž  s   øè ø€ ò 
àð �Ôñ
ùs   ƒr  )ÚmoveToÚlineToÚqCurveToÚcurveTorþ   F)rŠ   rŒ   r   r^  Ú	closePath)rŒ   rS   )rŠ   r‹   rŒ   )XrR   r  r  r  r·   r  r   r  r   r
   r  ÚboundsrD   r  rH   r�   r�   r‘   Ú	translaterú   Úborder_colorr“   r’   r—   Úborder_widthÚstroker”   r–   r   r±   Ú	OPEN_PATHr•   r‹   r˜   Únew_pathrõ   rö   r   rS   r™   rš   r›   rñ   Ú
NODE_COUNTÚNODE_INCOMPATIBILITYÚset_line_capÚLINE_CAP_ROUNDrQ  Úline_toÚoncurve_node_colorÚoncurve_node_diameterÚoffcurve_node_colorÚoffcurve_node_diameterÚnew_sub_pathÚhandle_colorÚhandle_widthró   r   rœ   r  r
  r�   rò   rï   r   r   Úsaver¢   r¥   r¦   Úrestorerª   r©   r  r  r  r  ÚrotateÚmathÚatan2r§   rô   rž   rŸ   r    r¡   r£   r¤   )$r   rý   r½   r»   r$  r_   r`   rú   rø   r×   Ú	recordingÚdecomposedRecordingÚ	boundsPenrc  Úglyph_widthÚglyph_heightr«   ÚpenÚperContourPenr¾   rÿ   ÚsegmentÚargsÚmatchingÚcolorsrì   rŒ   ÚidxÚpointsr0  ÚtargetPointÚfirst_ptÚ	second_ptÚlengthr¿   r  s$                                     @@r   r  zInterpolatablePlot.draw_glyphI  sÔ
  ù€ Ü�‹>¤$¬ Ñ.Ø �zˆHäÑIÀÔIÓIˆØ ‘{ 6Ñ*ˆÜÑD¸8ÔDÓDˆÜÓ>°Ô>Ô>Ø"ˆLØ˜Ñ#ˆä “Nˆ	Ø�
‰
�9ÔÜ5°hÓ?ÐØ�
‰
Ð&Ô'ä$ XÓ.ˆ	Ø×"Ñ" 9Ô-Ø×!Ñ!ˆØˆ>Ø!ˆFà˜Q‘i &¨¡)Ñ+ˆØ˜a‘y 6¨!¡9Ñ,ˆáØˆ}Ø×(Ñ(¨;Ñ6‘ä˜E 4×#4Ñ#4°|Ñ#CÓD�ÙØˆ}Ø×)Ñ)¨LÑ8‘ä˜E 4×#4Ñ#4°|Ñ#CÓD�Øˆ=ØˆEä�]‰]˜4Ÿ<™<Ó(ˆØ
�‰�Q˜Ôà
�‰Ø×Ñ ¨eÑ 3Ñ3°qÑ8Ø×Ñ °Ñ!5Ñ5¸Ñ:ô	
ð 	�‰�˜˜ÔØ
�‰�f˜Q‘i�Z &¨¡) Ô,à×ÒØˆB×Ñ˜t×0Ñ0Ñ1Ø�L‰L˜ ™ F¨1¡I¨{¸LÔIØ×Ñ˜d×/Ñ/°%Ñ7Ô8Ø�I‰IŒKà�?Š?˜d×/Ò/Ü˜8 RÓ(ˆCØ×&Ñ& sÔ+à�Š <Ô3H×3RÑ3RÒ#RØ!�×!Ñ! 4§?¡?Ñ3Ø× Ñ Ô"à× Ò Ø!�×!Ñ! 4×#4Ñ#4Ñ5Ø×!Ñ! $×"3Ñ"3°eÑ";Ô<Ø×"Ñ"Ô$à�K‰KŒMô "×-Ñ-°Ñ>Ü$×/Ñ/°=Ñ@ä4´\ÈHÔUˆMØ×Ñ˜]Ô+Ø#ò �Ø˜6‘?Ü)×5Ñ5Ü)×4Ñ4ð'ò ð ,×1Ñ1°'¸)Ñ2DÑE�GØ—N‘N¤8¨H°bÓ#9Ô:Ø&�B×&Ñ&¨×(GÑ(GÑHØ—G‘G•Iðô ó 
ô &×-Ñ-Ü%×0Ñ0Ü%×:Ñ:ðô
õ 
ð �O‰OœE×0Ñ0Ô1ð "5×!:Ñ!:ò !‘�˜ÙØØ˜B‘x‘��1Ø—
‘
˜1˜aÔ Ø—
‘
˜1˜aÕ ð!ð ˆB×Ñ × 7Ñ 7Ñ8Ø×Ñ˜d×8Ñ8¸5Ñ@ÔAØ�I‰IŒKð "5×!:Ñ!:ò %‘�˜ÙØØ   "˜Iò %‘D�A�qØ—J‘J˜q !Ô$Ø—J‘J˜q !Õ$ñ%ð%ð ˆB×Ñ × 8Ñ 8Ñ9Ø×Ñ˜d×9Ñ9¸EÑAÔBØ�I‰IŒKð "5×!:Ñ!:ò ‘�˜ÙØØÐ 4Ñ4Ø�B—J‘J  Q¡Ò(Ø 
Ò*Ø $ò )™˜˜1ØŸ
™
 1 aÕ(ð)à—O‘OÔ%Ø�B—J‘J  R¡Ò)Ø 	Ò)Ø�B—J‘J  Q¡Ñ(Ø—O‘OÔ%Ø�B—J‘J  Q¡Ñ(Ø�B—J‘J  Q¡Ñ(Ø—O‘OÔ%Ø�B—J‘J  R¡Ò)àð%ð( ˆB×Ñ × 1Ñ 1Ñ2Ø×Ñ˜d×/Ñ/°%Ñ7Ô8Ø�I‰IŒKàˆØò 	ˆGØ�v‰Ô"7×"EÑ"EÓEØ" 9Ñ-�Ü˜t×2Ñ2Ó3�Ü 8Ü ¨8ô!�ð × Ñ  Ô/Ü"+¨M×,?Ñ,?Ó"@ò ‘J�A�wØ ‘{ aÒ'Ø Ü  ›L�EØ—N‘N¤8¨H°bÓ#9Ô:Ø&�B×&Ñ&ÐB¨ÐB¨t×/AÑ/AÓBØ—G‘G•Iñð	ð   ó o	ˆGØ�v‰Ü%×-Ñ-Ü%×7Ñ7ð#ò ð —k‘k )Ó,�ð �? u°¢z°iÀ7Ñ6JÜ$<Ü$¨xô%�Mð (×.Ñ.¨}Ô=Ü4Ó6�FÜ 1°&¸%Ó @�IØ!×'Ñ'Ø'Ð/™°X¸c±]ñç‘f˜YÔ'Ø"(§,¡,¨w°yÑ/AÑ"BÀ1Ñ"E�KØ—G‘G”IØ �B—L‘L +Ñ.Ø—H‘H˜Q ™Y¨¨E©	Ô2Ø—M‘MØØ!%×!@Ñ!@Ø"×>Ñ>ð "ô ð
 —J‘J”Lð ˜A’: W§[¡[°Ô%<Ø ×2Ñ2‘Eà ×8Ñ8�EØ�Ø�Ø—‘”	Ø%8×%>Ñ%>ó )‘M�G˜TØ (Ò*Ø#'¨¡7˜Ø ØÐ'Ø Ø +Ò-Ø$,™	à$(¨¡G˜	à�{ a¨3£hØŸ™œ	Ü#*¨HÐ#5˜Ü$+¨YÐ$7˜	Ü!$ Y°Ñ%9Ó!:˜ØŸ™ X§]¡]°H·M±MÔBÙ!àŸI™IÜ $§
¡
Ø$-§N¡N°X·]±]Ñ$BØ$-§N¡N°X·]±]Ñ$Bó!"ôð ŸH™H Q¨¡Y°°E±	Ô:Ø ŸO™O¨B°e˜OÕ<ð ŸH™H Q¨¡Y°°E±	Ô:Ø ŸM™MØ "Ø)-×)HÑ)HØ&+ð *ô ð
 Ÿ
™
œà˜?Ù!à#�HØ˜‘F’AðS)ðV —
‘
”à�v‰Ô"7×"<Ñ"<Ô<Ø—k‘k )Ó,�Ü 8Ü ¨8ô!�ð $×*Ñ*¨=Ô9Ü0Ó2�Ü-¨f°eÓ<�	Ø×#Ñ#¨8Ð+;¡CÀÈ#ÁÑO×VÑVØôð %Ÿl™l¨7°7Ñ+;Ñ<¸QÑ?�Ø—‘”	Ø�—‘˜kÑ*Ø—‘˜˜U™ A¨¡IÔ.ÙØ×$Ñ$ØØ!%×!6Ñ!6Ø%)×%BÑ%BØ"×4Ñ4ð	 %õ ð —M‘MØØ!%×!5Ñ!5Ø"×3Ñ3ð "ô ð
 —
‘
–ð_o	ðb ˆr   é
   )r_   r`   rŒ   rŠ   c                óP  — |j                  «        |j                  |«       |j                  t        j                  «       |j                  ||«       |j                  ||«       t        |«      dk(  r|dz   } |j                  |Ž  |j                  «        |j                  «        y )Nr8   ©r   )rv  r—   rl  r�   rm  rQ  rn  rº   r™   rg  rw  )r   r«   r_   r`   rŒ   rŠ   s         r   r¢   zInterpolatablePlot.draw_dot[  s}   € Ø
�‰Œ	Ø
×Ñ˜(Ô#Ø
�‰œ×,Ñ,Ô-Ø
�
‰
�1�aÔØ
�
‰
�1�aÔÜˆu‹:˜Š?Ø˜D‘LˆEØˆ×Ñ˜EÑ"Ø
�	‰	ŒØ
�
‰
�r   )r_   r`   rŒ   rŠ   r‹   c                óZ  — |j                  «        |j                  |«       |j                  t        j                  «       |j                  |||dz  ddt        j                  z  «       t        |«      dk(  r|dz   } |j                  |Ž  |j                  «        |j                  «        y )Nr7   r   r8   rŽ  )rv  r—   rl  r�   ÚLINE_CAP_SQUAREÚarcry  Úpirº   r™   rg  rw  )r   r«   r_   r`   rŒ   rŠ   r‹   s          r   rž   zInterpolatablePlot.draw_circleg  sƒ   € ð 	�‰Œ	Ø
×Ñ˜,Ô'Ø
�‰œ×-Ñ-Ô.Ø
�‰ˆq�!�X ‘\ 1 a¬$¯'©'¡kÔ2Üˆu‹:˜Š?Ø˜D‘LˆEØˆ×Ñ˜EÑ"Ø
�	‰	ŒØ
�
‰
�r   r�   c                óÔ  — |j                  «        t        |«      dk(  r|dz   } |j                  |Ž  |j                  | j                  |z   |«       |j                  dd«       |j                  | j                   | j                   dz  «       |j                  | j                   | j                  dz  «       |j                  «        |j                  «        |j                  «        y )Nr8   rŽ  r   r5   )
rv  rº   r™   rd  r¨   rQ  rn  Ú
close_pathr›   rw  )r   r«   r_   r`   rŒ   s        r   r§   zInterpolatablePlot.draw_arrowt  sÄ   € Ø
�‰Œ	Üˆu‹:˜Š?Ø˜D‘LˆEØˆ×Ñ˜EÑ"Ø
�‰�T×,Ñ,¨qÑ0°!Ô4Ø
�
‰
�1�aÔØ
�
‰
Ø×$Ñ$Ð$Ø×$Ñ$Ð$ sÑ*ô	
ð 	�
‰
Ø×$Ñ$Ð$Ø×#Ñ# cÑ)ô	
ð 	�‰ŒØ
�‰Œ	Ø
�
‰
�r   ©r_   r`   rŒ   rB   rE   c                óD  — |€| j                   }|€| j                  }|j                  «       }t        j                  | j
                  «      } |j                  |Ž  |j                  | j                  «       |j                  dt        j                  t        j                  «       d}d}	|j                  «       }
|
d   }|
d   }|D ].  }|j                  |«      }t        ||j                  «      }|	|z  }	Œ0 |sy |j!                  ||«       t#        ||z  ||	z  «      }|j!                  |||z  z
  dz  ||	|z  z
  dz  «       |j%                  ||«       |j!                  d|«       |D ]7  }|j'                  dd«       |j)                  |«       |j!                  d|«       Œ9 y )Nz@cairo:monospacer   r7   )rB   rE   Ú
splitlinesr�   r�   r‘   r“   rN  rF   rJ  rK  rM  rO  rP  ÚmaxÚ	x_advancerd  r  rú   rQ  rR  )r   Útextr_   r`   rŒ   rB   rE   r«   Ú
text_widthÚtext_heightrO  Úfont_font_sizeÚfont_ascentÚlinerT  rú   s                   r   Ú	draw_textzInterpolatablePlot.draw_text‡  s’  € Øˆ=Ø—J‘JˆEØˆ>Ø—[‘[ˆFà�‰Ó ˆÜ�]‰]˜4Ÿ<™<Ó(ˆØˆ×Ñ˜5Ñ!Ø
×Ñ˜Ÿ™Ô(Ø
×ÑØ¤× 7Ñ 7¼×9QÑ9Qô	
ð ˆ
ØˆØ—‘Ó(ˆØ% a™ˆØ" 1‘oˆØò 	*ˆDØ—o‘o dÓ+ˆGÜ˜Z¨×):Ñ):Ó;ˆJØ˜>Ñ)‰Kð	*ñ ØØ
�‰�Q˜ÔÜ�E˜JÑ&¨°Ñ(<Ó=ˆà
�‰Ø�Z %Ñ'Ñ'¨1Ñ,¨v¸ÀeÑ8KÑ/KÈqÑ.Pô	
ð 	�‰�˜Ôà
�‰�Q˜Ô$Øò 	,ˆDØ�J‰J�q˜!ÔØ�L‰L˜ÔØ�L‰L˜˜NÕ+ñ	,r   c           
      óè  — | j                  | j                  | j                  | j                  | j                  | j                  d| j                  z  z
  dd| j
                  ¬«       | j                  | j                  | j                  | j                  | j                  z   | j                  d| j                  z  z
  | j                  d| j                  z  z
  | j                  z
  | j                  ¬«       y )Nr7   r,   T)r_   r`   rŒ   rB   rÂ   ra   rF   )r_   r`   rB   rE   rŒ   )ro   Úno_issues_labelrC   Úno_issues_label_colorrB   rG   r   ÚcupcakerF   rE   Úcupcake_colorrN   s    r   Údraw_cupcakezInterpolatablePlot.draw_cupcake­  sÁ   € Ø�‰Ø× Ñ Ø�h‰hØ�h‰hØ×,Ñ,Ø—*‘*˜q 4§8¡8™|Ñ+ØØØ×*Ñ*ð 	ô 		
ð 	�‰Ø�L‰LØ�h‰hØ�h‰h˜Ÿ™Ñ'Ø—*‘*˜q 4§8¡8™|Ñ+Ø—;‘;  T§X¡X¡Ñ-°·±Ñ>Ø×$Ñ$ð 	õ 	
r   c                 ón   — | j                  |||| j                  | j                  | j                  ¬«       y )Nr•  )r   Úemoticon_colorrD   rH   )r   rH  r_   r`   s       r   r  z InterpolatablePlot.draw_emoticonÂ  s7   € Ø�‰ØØØØ×%Ñ%Ø×"Ñ"Ø×$Ñ$ð 	õ 	
r   r   )r   r   )@r!   r"   r#   rB   rE   rC   rG   rF   rW   r  r  re  rf  r”   r–   r‹   ro  rp  rq  rr  rt  ru  r¦   r¥   r©   rª   r¨   r£   r¤   rŸ   r    r¡   rœ   r�   rš   r¢  r£  r¥  r¤  r¨  r  r  r  r  r   rO   rU   rX   rˆ   r}   rÀ   rÇ   rÊ   rÎ   rÝ   rÖ   ro   r  r¢   rž   r§   r   r¦  r  r$   r   r   r&   r&   '   sÎ  „ Ø€EØ€FØ
€CØ€OØ€IØ€KØ €JØ!€KØ"€LØ€LØ €JØ"€LØ€LØ)ÐØÐØ*ÐØÐØ#€LØ€LØ"2ÐØ!"ÐØ,ÐØ&ÐØÐØ€OØ%ÐØÐØ ÐØ&ÐØW€NØ€MØ!/ÐØ;€OØ'ÐØ!€Mð€Gð2 #€NØ€Eð€Kð
€Jð
 €Có
ò òòð (,°tÀtôDðL -1¸DÈDô F'òP,ò\ò2IòTð 8<Èdô  !ðF 6:ÈDôPðl
 Ø
ØØØØØØô-ð^ EFÈÐRVô Pðd !" Q¨iÀ"ô 
ð ˜A Y¸È!ôð #$ q°	ô ð& $%¨°À$Ètô $,òL
ô*
r   r&   c                   ó$   ‡ — e Zd Zd„ Zˆ fd„Zˆ xZS )ÚInterpolatablePostscriptLikec                 ó8   — | j                   j                  «        y r   )r‘   ÚfinishrQ   s       r   rU   z%InterpolatablePostscriptLike.__exit__Î  s   € Ø�‰×ÑÕr   c                 óV   •— t         ‰| �  «        | j                  j                  «        y r   )ÚsuperrX   r‘   ©r   Ú	__class__s    €r   rX   z&InterpolatablePostscriptLike.show_pageÑ  s   ø€ Ü‰ÑÔØ�‰×ÑÕ r   )r!   r"   r#   rU   rX   Ú__classcell__©r°  s   @r   rª  rª  Í  s   ø„ ò÷!ð !r   rª  c                   ó   — e Zd Zd„ Zy)ÚInterpolatablePSc                 óz   — t        j                  | j                  | j                  | j                  «      | _        | S r   )r�   Ú	PSSurfacer9   rB   rE   r‘   rN   s    r   rO   zInterpolatablePS.__enter__×  s'   € Ü—‘ t§x¡x°·±¸T¿[¹[ÓIˆŒØˆr   N©r!   r"   r#   rO   r$   r   r   r´  r´  Ö  s   „ ór   r´  c                   ó   — e Zd Zd„ Zy)ÚInterpolatablePDFc                 ó"  — t        j                  | j                  | j                  | j                  «      | _        | j
                  j                  t         j                  d«       | j
                  j                  t         j                  d«       | S )Nzfonttools varLib.interpolatableÚ )	r�   Ú
PDFSurfacer9   rB   rE   r‘   Úset_metadataÚPDF_METADATA_CREATORÚPDF_METADATA_CREATE_DATErN   s    r   rO   zInterpolatablePDF.__enter__Ý  sc   € Ü×'Ñ'¨¯©°$·*±*¸d¿k¹kÓJˆŒØ�‰×!Ñ!Ü×&Ñ&Ð(Iô	
ð 	�‰×!Ñ!¤%×"@Ñ"@À"ÔEØˆr   Nr·  r$   r   r   r¹  r¹  Ü  s   „ ór   r¹  c                   ó*   ‡ — e Zd Zd„ Zd„ Zˆ fd„Zˆ xZS )ÚInterpolatableSVGc                 ó˜   — t        «       | _        t        j                  | j                  | j                  | j
                  «      | _        | S r   )r   Úsinkr�   Ú
SVGSurfacerB   rE   r‘   rN   s    r   rO   zInterpolatableSVG.__enter__ç  s2   € Ü“IˆŒ	Ü×'Ñ'¨¯	©	°4·:±:¸t¿{¹{ÓKˆŒØˆr   c                 ó>   — | j                   �| j                  «        y y r   )r‘   rX   rQ   s       r   rU   zInterpolatableSVG.__exit__ì  s   € Ø�<‰<Ð#Ø�N‰NÕð $r   c                 óN  •— t         ‰| �  «        | j                  j                  «        | j                  j                  | j                  j                  «       «       t        «       | _        t        j                  | j                  | j                  | j                  «      | _        y r   )r®  rX   r‘   r¬  r9   rÕ   rÃ  Úgetvaluer   r�   rÄ  rB   rE   r¯  s    €r   rX   zInterpolatableSVG.show_pageð  sf   ø€ Ü‰ÑÔØ�‰×ÑÔØ�‰�‰˜Ÿ	™	×*Ñ*Ó,Ô-Ü“IˆŒ	Ü×'Ñ'¨¯	©	°4·:±:¸t¿{¹{ÓKˆ�r   )r!   r"   r#   rO   rU   rX   r±  r²  s   @r   rÁ  rÁ  æ  s   ø„ òò
÷Lð Lr   rÁ  )'ÚinterpolatableHelpersÚfontTools.ttLibr   ÚfontTools.ttLib.ttGlyphSetr   ÚfontTools.pens.recordingPenr   r   r	   ÚfontTools.pens.boundsPenr
   ÚfontTools.pens.cairoPenr   ÚfontTools.pens.pointPenr   r   r   Ú&fontTools.varLib.interpolatableHelpersr   r   Ú	itertoolsr   Ú	functoolsr   Úior   r�   ry  rq   ÚloggingÚ	getLoggerr  Údictr   r&   rª  r´  r¹  rÁ  r$   r   r   ú<module>rÖ     s¨   ðÜ $Ý "Ý 3÷ñ õ
 6Ý ,÷ñ ÷
õ Ý Ý Û Û Û 	Û à€g×ÑÐ9Ó:€ô%�Tô %÷c
ñ c
ôL%!Ð#5ô !ôÐ3ô ôÐ4ô ôLÐ*õ Lr   