Ë
    ¨eh¼h ã                   ó¦  — d dl Z d dlZd dlZd dlZd dlZd dlmZmZmZm	Z	 d dl
mZ d dlZd dlmZmZmZ d dlmZ d dlmZmZ d dlmZmZ d dlmZ d d	l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+ e jX                  edd¬«      Z-d„ Z. edg¬«      d„ «       Z/ e-dgd¬«      d„ «       Z0 e-dgd¬«      d„ «       Z1 e-dgdd¬«      d„ «       Z2 e-dgdd¬«      d„ «       Z3 e-dgdd¬«      d „ «       Z4d!„ Z5 e-d"gdej                  d#k(  rd$nd ¬%«      d&„ «       Z6 e-d'gd¬«      d(„ «       Z7d)„ Z8 e-d*gd¬«      d+„ «       Z9 e-d,gd¬«      d-„ «       Z:d.„ Z; e-d/gd ejx                  «       d0k(  rd nd1¬%«      d2„ «       Z= e-d3gd¬«      d4„ «       Z> e-d5gd¬«      d6„ «       Z? e-d7gd¬«      d8„ «       Z@ej‚                  j…                  d9d:g d;¢gd<g d=¢gd>g d?¢gg«       edg¬«      d@„ «       «       ZC e-dAgdBd¬C«      dD„ «       ZDdE„ ZE e-dFgd¬«      dG„ «       ZF edg¬«      dH„ «       ZGdI„ ZH e-dJgd¬«      dK„ «       ZI edg¬«      dL„ «       ZJ e-dMgd¬«      dN„ «       ZK e-dOgd¬«      dP„ «       ZL e-dQgd¬«      dR„ «       ZM edg¬«      dS„ «       ZN edg¬«      dT„ «       ZOej‚                  j…                  dUddg«       edg¬«      dV„ «       «       ZPej‚                  j…                  dWdXdYg«       edg¬«      dZ„ «       «       ZQ edg¬«      d[„ «       ZR e-d\gd]d¬C«      d^„ «       ZS e-d_gd¬«      d`„ «       ZT e-dagd¬«      db„ «       ZU e-dcgd¬«      dd„ «       ZV edegd¬«      df„ «       ZW e-dggd¬«      dh„ «       ZX e-digd¬«      dj„ «       ZY edg¬«      dk„ «       ZZ edg¬«      dl„ «       Z[ e-dmgd¬«      dn„ «       Z\ e-dogdd¬«      dp„ «       Z] edg¬«      dq„ «       Z^ e-drgdsd¬C«      dt„ «       Z_ e-dugdvd¬C«      dw„ «       Z` e-dxgd¬«      dy„ «       Za e-dzgd¬«      d{„ «       Zb e-d|gd¬«      d}„ «       Zcd~„ Zdd„ Ze e-d€gdd�¬%«      d‚„ «       Zf edg¬«      dƒ„ «       Zg e-d„gd¬«      d…„ «       Zh e-d†gd¬«      d‡„ «       Zidˆ„ Zj edg¬«      d‰„ «       ZkdŠ„ Zl e-d‹gd¬«      dŒ„ «       Zmd�„ Zn e-dŽgd¬«      d�„ «       Zo e-d�gd¬«      d‘„ «       Zp e-d’gd¬«      d“„ «       Zqd”„ Zrd•„ Zs e-d–gdd¬«      d—„ «       Zt e-d˜gdd¬«      d™„ «       Zu e-dšgdd¬«      d›„ «       Zvdœ„ Zwd�„ Zxdž„ Zydód „Zz e-d¡gd¬«      d¢„ «       Z{ e-d£gd¬«      d¤„ «       Z|d¥„ Z}d¦„ Z~ej‚                  j…                  d§d¨«      ej‚                  j…                  d©dª«      d«„ «       «       Z edg¬«      d¬„ «       Z€d­„ Z� e-d®gdd¬«      d¯„ «       Z‚ e-d°gdd¬«      d±„ «       Zƒ e-d²gd¬«      d³„ «       Z„ edg¬«      d´„ «       Z…ej‚                  j…                  dµe+�j                  e+�j                  g«      ej‚                  j…                  d¶g d·¢«      d¸„ «       «       Zˆ G d¹„ dº«      Z‰d»„ ZŠ edg¬«      d¼„ «       Z‹d½„ ZŒd¾„ Z� edg¬«      d¿„ «       ZŽ edg¬«      dÀ„ «       Z� edÁgd¬«      dÂ„ «       Z� e-dÃgdd�¬%«      dÄ„ «       Z‘ e-dÅgd ejx                  «       d0k(  rd ndB¬%«      dÆ„ «       Z’ edÇgddÈ¬%«      dÉ„ «       Z“ edÊgd¬«      dË„ «       Z”dÌ„ Z•dÍ„ Z–dÎ„ Z— edg¬«      dÏ„ «       Z˜dÐ„ Z™dÑ„ Zšej‚                  j…                  dÒdÓ«      dÔ„ «       Z›dÕ„ Zœej‚                  j…                  dÖd×e�j:                  ddØfd×e�j:                  dÙdÚfd×e�j:                  dÛdÜfd×e�j<                  ddÝfdÞe�j:                  ddßfdÞe�j:                  dÙdàfdÞe�j:                  dÛdáfg«      dâ„ «       ZŸe�j@                  �jC                  d«       edg¬«      dã„ «       «       Z¢dä„ Z£ edågddgd¬æ«      dç„ «       Z¤dè„ Z¥dé„ Z¦dê„ Z§dë„ Z¨ej‚                  j…                  dìe©díi dîfe©dïi dîfe©dði dîfe© eª«       dÙdñidîfe© eª«       dÛdñidîfe© eª«       dòdñidîfe«dódÙdŸidôfe«dódŸdŸdŸd¨œdôfe«dódŸdŸdõœdôfe«döi d÷ff
«      dø„ «       Z¬ edg¬«      dù„ «       Z­dú„ Z® edg¬«      dû„ «       Z¯ edügdd¬ý«      dþ„ «       Z°dÿ„ Z±�d „ Z²�d„ Z³ej‚                  j…                  �ddòg �d¢g �d¢g �d¢g �d¢g�d�dg�d	�d
gf�d�dg�d
�d
gf�d�dg�d
�dgfgg �d¢fdÛg �d¢g �d¢g �d¢g �d¢g�d�dg�d�dgf�d�dg�d
�dgf�d�dg�d�dgfgg �d¢fdÙg �d¢g �d¢g �d¢g �d¢g�d�dg�d�d
gf�d�dg�d�dgf�d�dg�d�dgfgg �d¢fg«      �d„ «       Z´ej‚                  j…                  �dg d¨¢«      �deµ�ddf�d„«       Z¶ej‚                  j…                  �ddÙg �d¢fdÛg �d¢fdòg �d¢fg«      �d „ «       Z· e�d!gdd¬ý«      �d"„ «       Z¸ e�d#gdd¬ý«      �d$„ «       Z¹ edg¬«      �d%„ «       Zº�d&„ Z» e-�d'gd¬«      �d(„ «       Z¼�d)„ Z½�d*„ Z¾y(+  é    N)ÚAxes3DÚaxes3dÚproj3dÚart3d)Ú_Quaternion)ÚMouseButtonÚ
MouseEventÚNavigationToolbar2)Úcm)ÚcolorsÚpatches)Úimage_comparisonÚcheck_figures_equal)Ú
mock_event)ÚLineCollectionÚPolyCollection)ÚCircleÚ	PathPatch)ÚPath)ÚTextTÚdefault)Úremove_textÚstylec                 ó¨  — ddg}t        j                  t        j                  t	        t        j
                  |||«      «      «      d«      }|D ]‚  \  }}t        j                  t        j                  ||z
  «      «      |d   |d   z
  k(  sŒ> | j                  t        |t        j                  |«      z  |t        j                  |«      z  «      Ž  Œ„ y )Nr   é   é   )
Ú	itertoolsÚcombinationsÚnpÚarrayÚlistÚproductÚsumÚabsÚplot3DÚzip)ÚaxÚscaleÚrÚptsÚstartÚends         úd/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/mpl_toolkits/mplot3d/tests/test_axes3d.pyÚplot_cuboidr.      s¨   € à	
ˆAˆ€AÜ
×
 Ñ
 ¤§¡¬$¬y×/@Ñ/@ÀÀAÀqÓ/IÓ*JÓ!KÈQÓ
O€CØò H‰
ˆˆsÜ�6‰6”"—&‘&˜ ™Ó%Ó&¨!¨A©$°°1±©+Ó5ØˆB�I‰I”s˜5¤§¡¨%£Ñ0°#´b·h±h¸u³oÑ2EÓFÒGñHó    Úpng)Ú
extensionsc                 ó^   — | j                  t        d¬«      ¬«      }|j                  d«       y )NÚ3d©Ú
projection©Ú
subplot_kwF)ÚsubplotsÚdictÚset_visible©Úfig_testÚfig_refr'   s      r-   Útest_invisible_axesr>   '   s&   € à	×	Ñ	¤d°dÔ&;Ð	Ó	<€BØ‡N�N�5Õr/   zgrid_off.pngÚmpl20©r   c                  ór   — t        j                  «       } | j                  d¬«      }|j                  d«       y ©Nr3   r4   F)ÚpltÚfigureÚadd_subplotÚgrid©Úfigr'   s     r-   Útest_grid_offrI   -   s(   € ä
�*‰*‹,€CØ	�‰ DˆÓ	)€BØ‡G�GˆE…Nr/   zinvisible_ticks_axis.pngc                  ó<  — t        j                  «       } | j                  d¬«      }|j                  g «       |j	                  g «       |j                  g «       |j                  |j                  |j                  fD ]  }|j                  j                  d«       Œ y rB   )rC   rD   rE   Ú
set_xticksÚ
set_yticksÚ
set_zticksÚxaxisÚyaxisÚzaxisÚliner:   )rH   r'   Úaxiss      r-   Útest_invisible_ticks_axisrS   4   su   € ä
�*‰*‹,€CØ	�‰ DˆÓ	)€BØ‡M�M�"ÔØ‡M�M�"ÔØ‡M�M�"ÔØ—‘˜2Ÿ8™8 R§X¡XÐ.ò %ˆØ�	‰	×Ñ˜eÕ$ñ%r/   zaxis_positions.pngFc                  óN  — g d¢} t        j                  ddddi¬«      \  }}t        |j                  «       | «      D ]g  \  }}|j                  |j
                  |j                  fD ]$  }|j                  |«       |j                  |«       Œ& |› }|j                  ddd|¬	«       Œi y )
N)ÚupperÚlowerÚbothÚnoner   r5   r3   r6   ÚxÚyÚz)ÚxlabelÚylabelÚzlabelÚtitle)
rC   r8   r&   ÚflattenrN   rO   rP   Úset_label_positionÚset_ticks_positionÚset)Ú	positionsrH   Úaxsr'   ÚposrR   r_   s          r-   Útest_axis_positionsrg   ?   sŸ   € â2€IÜ�|‰|˜A˜q¨l¸DÐ-AÔB�H€CˆÜ�s—{‘{“} iÓ0ò @‰ˆˆCØ—H‘H˜bŸh™h¨¯©Ð0ò 	)ˆDØ×#Ñ# CÔ(Ø×#Ñ# CÕ(ð	)ð �%ˆØ
�‰�c #¨c¸ˆÕ?ñ@r/   zaspects.pngc                  ó   — d} t        j                  ddddi¬«      \  }}|j                  «       dd D ]  }t        |g d	¢¬
«       Œ t        |d   d   g d¢¬
«       t	        |j                  «       «      D ]@  \  }}|j                  | |   «       |j                  d«       |j                  | |   d¬«       ŒB |d   d   j                  d«       y )N)ÚautoÚequalÚequalxyÚequalyzÚequalxzrj   r   é   r5   r3   r6   r   éÿÿÿÿ)r   r   é   ©r(   r   ©r   r   r   ©rn   é   rp   Údatalim©Ú
adjustablezequal (cube))rC   r8   r`   r.   Ú	enumerateÚ	set_titleÚset_box_aspectÚ
set_aspect)ÚaspectsÚ_re   r'   Úis        r-   Útest_aspectsr   K   sÄ   € àI€GÜ�\‰\˜!˜Q¨L¸$Ð+?Ô@�F€A€sà�k‰k‹m˜A˜bÐ!ò )ˆÜ�BšiÖ(ð)ô ��A‘�q‘	¢Õ+ä˜3Ÿ;™;›=Ó)ò 8‰ˆˆ2Ø
�‰�W˜Q‘ZÔ Ø
×Ñ˜)Ô$Ø
�‰�g˜a‘j¨YˆÕ7ð8ð ˆ�Fˆ1�I×Ñ˜Õ'r/   zaspects_adjust_box.pngc                  óî   — d} t        j                  dt        | «      ddid¬«      \  }}t        |«      D ]>  \  }}t	        |g d¢¬«       |j                  | |   «       |j                  | |   d	¬
«       Œ@ y )N)ri   rj   rk   rl   rm   r   r5   r3   )é   rn   )r7   Úfigsize)rt   rn   rp   rq   Úboxrv   )rC   r8   Úlenrx   r.   ry   r{   )r|   rH   re   r~   r'   s        r-   Útest_aspects_adjust_boxr…   \   su   € ð A€GÜ�|‰|˜Aœs 7›|¸ÀtÐ8LØ$+ô-�H€Cˆô ˜3“ò 4‰ˆˆ2Ü�BšiÕ(Ø
�‰�W˜Q‘ZÔ Ø
�‰�g˜a‘j¨UˆÕ3ñ4r/   c                  ó  — t        j                  «       } | j                  d¬«      }|j                  d«       |j	                  d«       |j                  d«       |j                  d«       |j                  d«       t        |«      dk(  sJ ‚y )	Nr3   r4   Úlabelr_   rY   rZ   r[   zV<Axes3D: label='label', title={'center': 'title'}, xlabel='x', ylabel='y', zlabel='z'>)	rC   rD   rE   Ú	set_labelry   Ú
set_xlabelÚ
set_ylabelÚ
set_zlabelÚreprrG   s     r-   Útest_axes3d_reprr�   i   sx   € Ü
�*‰*‹,€CØ	�‰ DˆÓ	)€BØ‡L�L�ÔØ‡L�L�ÔØ‡M�M�#ÔØ‡M�M�#ÔØ‡M�M�#ÔÜ�‹8ð	IòJð Jñ Jr/   zaxes3d_primary_views.pngÚdarwinçš™™™™™©?)r   Útolc                  ó|  — g d¢} t        j                  ddddi¬«      \  }}t        |j                  «      D ]o  \  }}|j	                  d«       |j                  d«       |j                  d	«       |j                  d
«       |j                  | |   d   | |   d   | |   d   ¬«       Œq t        j                  «        y )N))éZ   é¦ÿÿÿr   ©r   r“   r   ©r   r   r   )r“   r’   r   ©r   r’   r   ©r   é´   r   r   rn   r5   r3   r6   rY   rZ   r[   Úorthor   r   ©ÚelevÚazimÚroll)
rC   r8   rx   Úflatr‰   rŠ   r‹   Úset_proj_typeÚ	view_initÚtight_layout)ÚviewsrH   re   r~   r'   s        r-   Útest_axes3d_primary_viewsr£   v   s®   € ò€Eô �|‰|˜A˜q¨l¸DÐ-AÔB�H€CˆÜ˜3Ÿ8™8Ó$ò K‰ˆˆ2Ø
�‰�cÔØ
�‰�cÔØ
�‰�cÔØ
×Ñ˜Ô!Ø
�‰˜% ™( 1™+¨E°!©H°Q©K¸eÀA¹hÀq¹kˆÕJðKô ×ÑÕr/   z	bar3d.pngc            
      ó,  — t        j                  «       } | j                  d¬«      }t        g d¢g d¢«      D ][  \  }}t	        j
                  d«      }t	        j
                  d«      }|gt        |«      z  }d|d<   |j                  |||dd	|d
¬«       Œ] y )Nr3   r4   )r)   ÚgÚbrZ   )é   é   é
   r   r¨   Úcr   rZ   Úedgeçš™™™™™é?)ÚzsÚzdirÚalignÚcolorÚalpha)rC   rD   rE   r&   r   Úaranger„   Úbar)rH   r'   rª   r[   ÚxsÚysÚcss          r-   Ú
test_bar3dr·   Œ   s†   € ä
�*‰*‹,€CØ	�‰ DˆÓ	)€BÜÒ(ª/Ó:ò J‰ˆˆ1Ü�Y‰Y�r‹]ˆÜ�Y‰Y�r‹]ˆØˆS”3�r“7‰]ˆØˆˆ1‰Ø
�‰ˆr�2˜! #¨V¸2ÀSˆÕIñJr/   c            
      ó  — t        j                  «       } | j                  d¬«      }dD ]b  }t        j                  t        |«      «      }t        j                  |«      }t        j                  |«      }|j                  |||ddd|¬«       Œd y )Nr3   r4   )ÚredÚgreenÚblueÚyellowr   ©r°   )rC   rD   rE   r   r²   r„   Ú
zeros_likeÚbar3d)rH   r'   rª   r´   rµ   r­   s         r-   Útest_bar3d_colorsrÀ   ˜   sv   € Ü
�*‰*‹,€CØ	�‰ DˆÓ	)€BØ/ò /ˆÜ�Y‰Y”s˜1“vÓˆÜ�]‰]˜2ÓˆÜ�]‰]˜2Óˆð 	�‰��R˜˜Q  1¨AˆÕ.ñ/r/   zbar3d_shaded.pngc            
      ó\  — t        j                  d«      } t        j                  d«      }t        j                  | |«      \  }}|j                  «       |j                  «       }}||z   dz   }g d¢}t	        j
                  t	        j                  dt        |«      z  «      ¬«      }|j                  dt        |«      t        d¬«      ¬«      }t        ||«      D ]8  \  }\  }	}
}|j                  |||d	z  dd|d
¬«       |j                  |	|
|¬«       Œ: |j                  j                  «        y )Nrt   rp   r   ))r§   éÄÿÿÿr   )r§   r§   r§   )éâÿÿÿr§   r“   )é,  rÃ   r   ©r‚   r3   r4   r6   r   T©Úshaderš   )r   r²   ÚmeshgridÚravelrC   rD   Ú	figaspectr„   r8   r9   r&   r¿   r    ÚcanvasÚdraw)rY   rZ   Úx2dÚy2dr[   r¢   rH   re   r'   r›   rœ   r�   s               r-   Útest_bar3d_shadedrÏ   ¤   sý   € ä
�	‰	�!‹€AÜ
�	‰	�!‹€AÜ�{‰{˜1˜aÓ �H€CˆØ�y‰y‹{˜CŸI™I›Kˆ€CØˆc‰	�A‰€AâG€EÜ
�*‰*œSŸ]™]¨1¬s°5«z©>Ó:Ô
;€CØ
�,‰,Ø	Œ3ˆu‹:Ü 4Ô(ð ó €Cô #& c¨5£/ò 6ÑˆÑˆT�4˜Ø
�‰��c˜3 ™7 A q¨!°4ˆÔ8Ø
�‰˜$ T°ˆÕ5ð6ð ‡J�J‡O�OÕr/   zbar3d_notshaded.pngc            	      óŠ  — t        j                  «       } | j                  d¬«      }t        j                  d«      }t        j                  d«      }t        j
                  ||«      \  }}|j                  «       |j                  «       }}||z   }|j                  |||dz  dd|d¬«       | j                  j                  «        y )	Nr3   r4   rt   rp   r   r   FrÆ   )
rC   rD   rE   r   r²   rÈ   rÉ   r¿   rË   rÌ   )rH   r'   rY   rZ   rÍ   rÎ   r[   s          r-   Útest_bar3d_notshadedrÑ   ¸   s•   € ä
�*‰*‹,€CØ	�‰ DˆÓ	)€BÜ
�	‰	�!‹€AÜ
�	‰	�!‹€AÜ�{‰{˜1˜aÓ �H€CˆØ�y‰y‹{˜CŸI™I›Kˆ€CØˆc‰	€AØ‡H�HˆS�#�s˜Q‘w  1 a¨u€HÔ5Ø‡J�J‡O�OÕr/   c                  ó\  — t        j                  «       } | j                  dddd¬«      }t        j                  dd¬«      }d\  }}||z  }t        j                  t        j                  |«      t        j                  |«      «      \  }}|j                  «       }|j                  «       }||z   }t        |«      D �	cg c]  }	t        j                  |	|z  «      ‘Œ }
}	|j                  ||ddd||
d|¬	«	      }t
        j                  j                  |
|j                  dd d
…   d«       y c c}	w )Nr   r3   r4   r   r’   )ÚazdegÚaltdeg)rn   rt   T)	rY   rZ   r[   ÚdxÚdyÚdzr°   rÇ   Úlightsourceé   rt   )rC   rD   rE   ÚmcolorsÚLightSourcer   rÈ   r²   rÉ   Úranger   Úcoolwarmr¿   ÚtestingÚassert_array_max_ulpÚ_facecolor3d)rH   r'   ÚlsÚlengthÚwidthÚarearY   rZ   r×   r~   r°   Ú
collections               r-   Útest_bar3d_lightsourceræ   Å   s  € Ü
�*‰*‹,€CØ	�‰˜˜A˜q¨TˆÓ	2€Bä	×	Ñ	 1¨RÔ	0€Bà�M€FˆEØ�E‰>€Dä�;‰;”r—y‘y Ó(¬"¯)©)°EÓ*:Ó;�D€A€qØ	�‰‹	€AØ	�‰‹	€AØ	
ˆQ‰€Bä*/°«+Ö6 QŒR�[‰[˜˜4™Õ Ð6€EÐ6à—‘˜A  aØ 1¨Ø %¨T¸rð ó C€Jô ‡J�J×#Ñ# E¨:×+BÑ+BÀ1À4ÀaÀ4Ñ+HÈ!ÕLùò 7s   Â<D)zcontour3d.pngÚx86_64gü©ñÒMb`?c                  ó´  — dt         j                  d<   t        j                  «       } | j                  d¬«      }t	        j
                  d«      \  }}}|j                  |||ddt        j                  ¬«       |j                  |||d	d
t        j                  ¬«       |j                  |||ddt        j                  ¬«       |j                  d
dd
ddd¬«       y )NTúaxes3d.automarginr3   r4   r�   r[   éœÿÿÿ©r®   ÚoffsetÚcmaprY   éØÿÿÿrZ   é(   éd   )ÚxminÚxmaxÚyminÚymaxÚzminÚzmax)
rC   ÚrcParamsrD   rE   r   Úget_test_dataÚcontourr   rÝ   rR   ©rH   r'   ÚXÚYÚZs        r-   Útest_contour3drþ   à   s°   € ð )-„C‡L�LÐ$Ñ%Ü
�*‰*‹,€CØ	�‰ DˆÓ	)€BÜ×"Ñ" 4Ó(�G€A€qˆ!Ø‡J�Jˆq�!�Q˜S¨´B·K±K€JÔ@Ø‡J�Jˆq�!�Q˜S¨´2·;±;€JÔ?Ø‡J�Jˆq�!�Q˜S¨´"·+±+€JÔ>Ø‡G�G�˜2 C¨b°tÀ#€GÕFr/   zcontour3d_extend3d.pngc            	      ó`  — dt         j                  d<   t        j                  «       } | j                  d¬«      }t	        j
                  d«      \  }}}|j                  |||ddt        j                  d¬«       |j                  d	d
«       |j                  dd«       |j                  dd«       y )NTré   r3   r4   r�   r[   rê   )r®   rì   rí   Úextend3drÃ   r§   éìÿÿÿrï   é°ÿÿÿéP   )rC   r÷   rD   rE   r   rø   rù   r   rÝ   Úset_xlimÚset_ylimÚset_zlimrú   s        r-   Útest_contour3d_extend3dr  í   sŠ   € à(,„C‡L�LÐ$Ñ%Ü
�*‰*‹,€CØ	�‰ DˆÓ	)€BÜ×"Ñ" 4Ó(�G€A€qˆ!Ø‡J�Jˆq�!�Q˜S¨´B·K±KÈ$€JÔOØ‡K�K��RÔØ‡K�K��RÔØ‡K�K��RÕr/   zcontourf3d.pngc                  óò  — dt         j                  d<   t        j                  «       } | j                  d¬«      }t	        j
                  d«      \  }}}|j                  |||ddt        j                  ¬«       |j                  |||d	d
t        j                  ¬«       |j                  |||ddt        j                  ¬«       |j                  d
d«       |j                  d
d«       |j                  dd«       y )NTré   r3   r4   r�   r[   rê   rë   rY   rî   rZ   rï   rð   )rC   r÷   rD   rE   r   rø   Úcontourfr   rÝ   r  r  r  rú   s        r-   Útest_contourf3dr
  ù   sÀ   € à(,„C‡L�LÐ$Ñ%Ü
�*‰*‹,€CØ	�‰ DˆÓ	)€BÜ×"Ñ" 4Ó(�G€A€qˆ!Ø‡K�K��1�a˜c¨$´R·[±[€KÔAØ‡K�K��1�a˜c¨#´B·K±K€KÔ@Ø‡K�K��1�a˜c¨"´2·;±;€KÔ?Ø‡K�K��RÔØ‡K�K��RÔØ‡K�K��cÕr/   zcontourf3d_fill.pngc                  óô  — dt         j                  d<   t        j                  «       } | j                  d¬«      }t	        j
                  t	        j                  ddd«      t	        j                  ddd«      «      \  }}|j                  dd«      }d	|d d d
…d d d
…f<   |j                  |||dddgt        j                  ¬«       |j                  dd«       |j                  dd«       |j                  dd«       y )NTré   r3   r4   éþÿÿÿr   ç      Ð?r   çš™™™™™¹?rp   çš™™™™™¹¿)rì   Úlevelsrí   ro   r   )rC   r÷   rD   rE   r   rÈ   r²   Úclipr	  r   rÝ   r  r  r  rú   s        r-   Útest_contourf3d_fillr    sÊ   € à(,„C‡L�LÐ$Ñ%Ü
�*‰*‹,€CØ	�‰ DˆÓ	)€BÜ�;‰;”r—y‘y  Q¨Ó-¬r¯y©y¸¸QÀÓ/EÓF�D€A€qØ	�‰ˆq�!‹€Að €A�cˆ€c‰3ˆQˆ3€h�KØ‡K�K��1�a ¨4°¨)¼"¿+¹+€KÔFØ‡K�K��AÔØ‡K�K��AÔØ‡K�K��AÕr/   zextend, levelsrW   )r   rt   rÙ   Úmin)r   rt   rÙ   é   Úmax)r   r   rt   rÙ   c                 ór  — t        j                  t        j                  ddd«      t        j                  ddd«      «      \  }}|dz  |dz  z   }t        j                  d   j                  «       }|j                   |d«      «       |j                   |d«      «       dd|d	œ}|j                  d
¬«      }	 |	j                  |||fdg d¢i|¤Ž | j                  d
¬«      }
 |
j                  ||||fd|i|¤Ž |	|
fD ]8  }|j                  dd«       |j                  dd«       |j                  dd«       Œ: y )Nr  r   r  Úviridisr   éÿ   r   é   )ÚvminÚvmaxrí   r3   r4   r  )r   r   rt   rÙ   r  Úextendéöÿÿÿr©   )r   rÈ   r²   ÚmplÚ	colormapsÚcopyÚ	set_underÚset_overrE   r	  r  r  r  )r<   r=   r  r  rû   rü   rý   rí   ÚkwargsÚax_refÚax_testr'   s               r-   Útest_contourf3d_extendr&    s(  € ô
 �;‰;”r—y‘y  Q¨Ó-¬r¯y©y¸¸QÀÓ/EÓF�D€A€qà	ˆ1‰ˆq�!‰t‰€Aô �=‰=˜Ñ#×(Ñ(Ó*€DØ‡N�N‘4˜“7ÔØ‡M�M‘$�s“)Ôà ¨DÑ1€Fà× Ñ ¨DÐ Ó1€FØ€F‡O�O�A�q˜!Ñ>¢OÐ>°vÒ>à×"Ñ"¨dÐ"Ó3€GØ€G×Ñ�Q˜˜1˜fÑ>¨VÐ>°vÒ>à�wÐò ˆØ
�‰�B˜ÔØ
�‰�B˜ÔØ
�‰�C˜Õñr/   ztricontour.pngç{®Gáz”?)r�   r   c                  óÐ  — dt         j                  d<   t        j                  «       } t        j                  j                  d«       t        j                  j                  d«      dz
  }t        j                  j                  d«      dz
  }|dz  |dz  z    }| j                  dddd¬	«      }|j                  |||«       | j                  dddd¬	«      }|j                  |||«       y )
NTré   i!N,éè  ç      à?r   r   r3   r4   )
rC   r÷   rD   r   ÚrandomÚseedÚrandrE   Ú
tricontourÚtricontourf)rH   rY   rZ   r[   r'   s        r-   Útest_tricontourr0  3  s¹   € à(,„C‡L�LÐ$Ñ%Ü
�*‰*‹,€Cä‡I�I‡N�N�8ÔÜ
�	‰	�‰�tÓ˜sÑ"€AÜ
�	‰	�‰�tÓ˜sÑ"€AØ
ˆQ‰$��A‘‰+ˆ€Aà	�‰˜˜A˜q¨TˆÓ	2€BØ‡M�M�!�Q˜ÔØ	�‰˜˜A˜q¨TˆÓ	2€BØ‡N�N�1�a˜Õr/   c                  ó&  — t        j                  «       } | j                  d¬«      }d\  }}t        j                  dd|«      }t        j                  dd|«      }t        j
                  j                  dd||g«      }|j                  |||dg«       y )	Nr3   r4   )r§   r¨   r  r©   r   r   r*  )rC   rD   rE   r   Úlinspacer+  Úrandintrù   )rH   r'   ÚnxÚnyrY   rZ   r[   s          r-   Útest_contour3d_1d_inputr6  C  sz   € ä
�*‰*‹,€CØ	�‰ DˆÓ	)€BØ�F€BˆÜ
�‰�C˜˜RÓ €AÜ
�‰�C˜˜RÓ €AÜ
�	‰	×Ñ˜!˜Q  R Ó)€AØ‡J�Jˆq�!�Q˜˜Õr/   zlines3d.pngc                  ó†  — t        j                  «       } | j                  d¬«      }t        j                  dt        j
                  z  dt        j
                  z  d«      }t        j                  ddd«      }|dz  dz   }|t        j                  |«      z  }|t        j                  |«      z  }|j                  |||«       y )	Nr3   r4   éüÿÿÿrt   rð   r  r   r   )	rC   rD   rE   r   r2  ÚpiÚsinÚcosÚplot)rH   r'   Úthetar[   r)   rY   rZ   s          r-   Útest_lines3dr>  N  s’   € ä
�*‰*‹,€CØ	�‰ DˆÓ	)€BÜ�K‰K˜œRŸU™U™
 A¬¯©¡I¨sÓ3€EÜ
�‰�B˜˜3Ó€AØ	ˆQ‰�‰
€AØ	ŒB�F‰F�5‹MÑ€AØ	ŒB�F‰F�5‹MÑ€AØ‡G�GˆAˆq�!Õr/   c                 óœ   — | j                  d¬«      }|j                  dgdgd«       |j                  d¬«      }|j                  ddd«       y )Nr3   r4   r   Úo©rE   r<  ©r<   r=   Úax1Úax2s       r-   Útest_plot_scalarrE  Z  sL   € à
×
Ñ
¨$Ð
Ó
/€CØ‡H�HˆaˆS�1�#�sÔØ
×
Ñ
¨Ð
Ó
.€CØ‡H�HˆQ��3Õr/   c                  ór  — t        j                  t        d¬«      5  t        j                  dg g «       d d d «       t        j                  t        d¬«      5  t        j                  g dg «       d d d «       t        j                  t        d¬«      5  t        j                  g g d«       d d d «       t        j                  g g g «      } t        j                  t        d¬«      5  | j                  dg g «       d d d «       t        j                  t        d¬«      5  | j                  g dg «       d d d «       t        j                  t        d¬«      5  | j                  g g d«       d d d «       y # 1 sw Y   �Œ=xY w# 1 sw Y   �ŒxY w# 1 sw Y   ŒàxY w# 1 sw Y   ŒžxY w# 1 sw Y   ŒsxY w# 1 sw Y   y xY w)Nz	x must be©Úmatchr   z	y must bez	z must be)ÚpytestÚraisesÚRuntimeErrorr   ÚLine3DÚset_data_3d)rQ   s    r-   Útest_invalid_line_datarN  b  sS  € Ü	�‰”|¨;Ô	7ñ  Ü�‰�Q˜˜BÔ÷ ä	�‰”|¨;Ô	7ñ  Ü�‰�R˜˜BÔ÷ ä	�‰”|¨;Ô	7ñ  Ü�‰�R˜˜QÔ÷ ô �<‰<˜˜B Ó#€DÜ	�‰”|¨;Ô	7ñ $Ø×Ñ˜˜B Ô#÷$ä	�‰”|¨;Ô	7ñ $Ø×Ñ˜˜Q Ô#÷$ä	�‰”|¨;Ô	7ñ $Ø×Ñ˜˜R Ô#÷$ð $÷ ñ  ú÷ ñ  ú÷ ð  ú÷$ð $ú÷$ð $ú÷$ð $úsG   œE/ÁE<ÂF	Ã$FÄF!ÅF-Å/E9Å<FÆ	FÆFÆ!F*Æ-F6zmixedsubplot.pngc            	      óÈ  — d„ } t        j                  ddd«      }t        j                  ddd«      }dt        j                  d<   t        j                  t        j
                  d«      ¬	«      }|j                  d
dd«      }|j                  | | |«      d| | |«      dd¬«       |j                  d«       |j                  d
dd
d¬«      }t        j                  t        j                  ddd«      t        j                  ddd«      «      \  }}t        j                  ||«      }t        j                  |«      }|j                  |||dddd¬«       |j                  dd«       y )Nc                 ó‚   — t        j                  dt         j                  z  | z  «      t        j                  |  «      z  S )Nr   )r   r;  r9  Úexp)Úts    r-   Úfztest_mixedsubplots.<locals>.fu  s,   € Ü�v‰v�aœŸ™‘g˜a‘iÓ ¤2§6¡6¨1¨"£:Ñ-Ð-r/   ç        ç      @r  r'  Tré   ç       @rÅ   r   r   Úbozk--rº   )Úmarkerfacecolorr3   r4   éûÿÿÿrp   r  rï   r   F)ÚrcountÚccountÚ	linewidthÚantialiasedro   )r   r²   rC   r÷   rD   rÊ   rE   r<  rF   rÈ   Úhypotr:  Úplot_surfaceÚ
set_zlim3d)	rS  Út1Út2rH   r'   rû   rü   ÚRrý   s	            r-   Útest_mixedsubplotsrd  s  s"  € ò.ô 
�‰�3˜˜SÓ	!€BÜ	�‰�3˜˜TÓ	"€Bà(,„C‡L�LÐ$Ñ%Ü
�*‰*œSŸ]™]¨2Ó.Ô
/€CØ	�‰˜˜A˜qÓ	!€BØ‡G�GˆB‘�"“�t˜R¡ 2£¨¸w€GÔGØ‡G�GˆD„Mà	�‰˜˜A˜q¨TˆÓ	2€BÜ�;‰;”r—y‘y  Q¨Ó-¬r¯y©y¸¸QÀÓ/EÓF�D€A€qÜ
�‰��A‹€AÜ
�‰ˆq‹	€Aà‡O�O�A�q˜! B¨rØ¨Uð ô 4ð ‡M�M�"�aÕr/   c                 óà   — | j                  d¬«      }|j                  dddd¬«       | j                  «        |j                  d¬«      }|j                  «        |j                  dddd¬«       y )Nr3   r4   r*  zsome string©Ús)rE   Útextr¡   rB  s       r-   Útest_tight_layout_textri  Œ  sj   € ð ×
Ñ
¨$Ð
Ó
/€CØ‡H�HˆR��R˜=€HÔ)Ø×ÑÔà
×
Ñ
¨Ð
Ó
.€CØ×ÑÔØ‡H�HˆR��R˜=€HÕ)r/   zscatter3d.pngc                  óª  — dt         j                  d<   t        j                  «       } | j                  d¬«      }|j	                  t        j                  d«      t        j                  d«      t        j                  d«      dd¬«       t        j                  dd	«      x}x}}|j	                  |||d
d¬«       d|d<   |j	                  g g g dd¬«       y )NTré   r3   r4   r©   r)   r@  )rª   Úmarkerr¨   r¦   ú^r   ro   rû   ©rC   r÷   rD   rE   Úscatterr   r²   ©rH   r'   rY   rZ   r[   s        r-   Útest_scatter3drp  ™  s¯   € à(,„C‡L�LÐ$Ñ%Ü
�*‰*‹,€CØ	�‰ DˆÓ	)€BØ‡J�JŒr�y‰y˜‹}œbŸi™i¨›m¬R¯Y©Y°r«]Ø˜Sð ô "ä—	‘	˜"˜bÓ!Ð!€AÐ!ˆˆAØ‡J�Jˆq�!�Q˜# c€JÔ*Ø€A€b�Eà‡J�Jˆr�2�r˜S¨€JÕ-r/   zscatter3d_color.pngc                  óZ  — dt         j                  d<   t        j                  «       } | j                  d¬«      }|j	                  t        j                  d«      t        j                  d«      t        j                  d«      ddd¬	«       |j	                  t        j                  d«      t        j                  d«      t        j                  d«      ddd¬	«       |j	                  t        j                  dd
«      t        j                  dd
«      t        j                  dd
«      dd¬«       y )NTré   r3   r4   r©   r)   rX   r@  )Ú	facecolorÚ	edgecolorrk  r¨   r¦   rg  )r°   rk  rm  rG   s     r-   Útest_scatter3d_colorrt  §  sÙ   € à(,„C‡L�LÐ$Ñ%Ü
�*‰*‹,€CØ	�‰ DˆÓ	)€Bð ‡J�JŒr�y‰y˜‹}œbŸi™i¨›m¬R¯Y©Y°r«]Ø¨°sð ô <à‡J�JŒr�y‰y˜‹}œbŸi™i¨›m¬R¯Y©Y°r«]Ø¨3°sð ô <ð ‡J�JŒr�y‰y˜˜RÓ ¤"§)¡)¨B°Ó"3´R·Y±Y¸rÀ2Ó5FØ ð õ &r/   zscatter3d_linewidth.pngc            	      ó  — t        j                  «       } | j                  d¬«      }|j                  t	        j
                  d«      t	        j
                  d«      t	        j
                  d«      dt	        j
                  d«      ¬«       y )Nr3   r4   r©   r@  )rk  r\  )rC   rD   rE   rn  r   r²   rG   s     r-   Útest_scatter3d_linewidthrv  ¸  s[   € ä
�*‰*‹,€CØ	�‰ DˆÓ	)€Bð ‡J�JŒr�y‰y˜‹}œbŸi™i¨›m¬R¯Y©Y°r«]Ø¤R§Y¡Y¨r£]ð õ 4r/   c           	      óô  — |j                  d¬«      }|j                  t        j                  d«      t        j                  d«      t        j                  d«      d¬«      }|j	                  t        j                  d«      «       | j                  d¬«      }|j                  t        j                  d«      t        j                  d«      t        j                  d«      dt        j                  d«      ¬«       y )Nr3   r4   r©   r@  ©rk  )rk  Ú
linewidths)rE   rn  r   r²   Úset_linewidths©r=   r<   r%  rª   r$  s        r-   Ú%test_scatter3d_linewidth_modificationr|  Â  s°   € ð ×"Ñ"¨dÐ"Ó3€GØ�‰œŸ	™	 "›¤r§y¡y°£}´b·i±iÀ³mØ"ð 	ó 	$€Aà×Ñ”R—Y‘Y˜r“]Ô#à× Ñ ¨DÐ Ó1€FØ
‡N�N”2—9‘9˜R“=¤"§)¡)¨B£-´·±¸2³ÀsÜ Ÿi™i¨›mð õ -r/   c                 óà  — |j                  d¬«      }|j                  t        j                  d«      t        j                  d«      t        j                  d«      d¬«      }|j	                  d«       |j                  d«       |j                  dd	gd
z  «       |j                  «       sJ ‚|j                  d«       |j                  «       rJ ‚|j                  t        j                  dd«      «       |j                  d«       | j                  d¬«      }|j                  t        j                  d«      t        j                  d«      t        j                  d«      ddddd	gd
z  ddd¬«
       y )Nr3   r4   r©   r@  rx  ÚC1ÚC2ç333333Ó?çffffffæ?rp   FéK   rn   )rk  rr  rs  r±   Ú
depthshaderg  ry  )rE   rn  r   r²   Úset_facecolorÚset_edgecolorÚ	set_alphaÚget_depthshadeÚset_depthshadeÚ	set_sizesÚfullrz  r{  s        r-   Útest_scatter3d_modificationr‹  Ð  s'  € ð ×"Ñ"¨dÐ"Ó3€GØ�‰œŸ	™	 "›¤r§y¡y°£}´b·i±iÀ³mØ"ð 	ó 	$€Aà‡O�O�DÔØ‡O�O�DÔØ‡K�K��c�
˜Q‘ÔØ×ÑÔÐÐØ×Ñ�UÔØ×ÑÔ!Ð!Ð!Ø‡K�K”—‘˜˜B“Ô Ø×Ñ�QÔà× Ñ ¨DÐ Ó1€FØ
‡N�N”2—9‘9˜R“=¤"§)¡)¨B£-´·±¸2³ÀsØ!¨T¸#¸s¸Àa¹Ø# r°að õ 9r/   rƒ  c                 ó˜  — t         j                  dd…dd…f   \  }}t        j                  |j                  «      j	                  |j
                  «      }t        j                  |j
                  d«      }d|ddd…ddd…f<   d|ddd…ddd…f<   t        j                  |j
                  d«      }d	|dd
…dd
…f<   d|dd…dd…f<   d|dd…dd…f<   t        j                  |j
                  d«      }d|dd
…dd
…f<   d|d
d…dd
…f<   d|d
d…d
d…f<   t        j                  |j
                  d«      }	d
|	ddd…ddd…f<   d
|	ddd…ddd…f<   d„ |||||||	fD «       \  }}}}}}}	| j                  d¬«      }
d„ ||||	fD «       }t        j                  |Ž D ]ˆ  \  }}}}||k7  ||k7  z  ||k7  z  |	|k7  z  }t         j                  j                  ||t        ¬«      }t        j                  |t        |j                   «      «      }|
j!                  |||||||d|¬«	       ŒŠ |j                  d¬«      }|j!                  |||||||	d|¬«	       y)z1Test that marker properties are correctly sorted.Nr©   é   rð   r   r   r   ÚC0r~  rp   r  rÙ   rt   ÚC3ÚC4ÚC5ÚC6é	   ÚC7c              3   ó<   K  — | ]  }|j                  «       –— Œ y ­w©N)r`   ©Ú.0Úas     r-   ú	<genexpr>z)test_scatter3d_sorting.<locals>.<genexpr>ÿ  s   è ø€ ò :àð 	
�	‰	�ñ:ùs   ‚r3   r4   c              3   óF   K  — | ]  }t        j                  |«      –— Œ y ­wr–  )r   Úuniquer—  s     r-   rš  z)test_scatter3d_sorting.<locals>.<genexpr>  s   è ø€ ÒN˜QŒB�I‰I�a�LÑNùs   ‚!©Údtype)rg  ÚfcÚecÚlwr±   rƒ  )r   Úmgridr²   ÚsizeÚreshapeÚshaperŠ  rE   r   r"   ÚmaÚmasked_arrayÚfloatÚrepeatr#   Úmaskrn  )r=   r<   rƒ  rZ   rY   r[   ÚsizesÚ
facecolorsÚ
edgecolorsry  r$  Úsetsrg  rŸ  r   r¡  Úsubsetr%  s                     r-   Útest_scatter3d_sortingr°  å  s½  € ô
 �8‰8�C�R�C˜˜"˜�HÑ�D€A€qÜ
�	‰	�!—&‘&Ó×!Ñ! !§'¡'Ó*€Aä�G‰G�A—G‘G˜RÓ €EØ€Eˆ!ˆ$ˆQˆ$���1�ˆ*ÑØ€Eˆ!ˆ$ˆQˆ$���1�ˆ*Ñä—‘˜Ÿ™ $Ó'€JØ€Jˆr�ˆr�2�A�2ˆvÑØ€Jˆq‰r�2�A�2ˆvÑØ€Jˆq‰r�1‘2ˆvÑä—‘˜Ÿ™ $Ó'€JØ€Jˆq�ˆs�A�a�CˆxÑØ€Jˆq�ˆs�A�a�CˆxÑØ€Jˆq�ˆs�A�a�CˆxÑä—‘˜Ÿ™ !Ó$€JØ€Jˆqˆt�!ˆt�Q�T˜�TˆzÑØ€Jˆqˆt�!ˆt�Q�T˜�TˆzÑñ:à�Q˜˜5 *¨j¸*ÐEô:Ñ6€A€qˆ!ˆU�J 
¨Jð
 × Ñ ¨DÐ Ó1€FÙN 5¨*°jÀ*Ð"MÔN€DÜ"×*Ñ*¨DÐ1ò .‰ˆˆ2ˆr�2à�a‰ZØ˜2Ññà˜2Ññð ˜2Ññð 	ô —‘×#Ñ# A v´UÐ#Ó;ˆô �Y‰Y�rœ3 §¡˜|Ó,Ó-ˆà�‰�q˜!˜V q¨R°B¸2ÀQØ",ð 	õ 	.ð.ð$ ×"Ñ"¨dÐ"Ó3€GØ‡O�O�A�q˜!˜u¨¸
Ø!¨°zð õ Cr/   rœ   éÎÿÿÿé‚   c           
      óD  — ddg}ddg}ddg}ddg}| j                  d¬«      }|j                  |||d|¬	«       |j                  d|d¬
«       |j                  d¬«      }|j                  |ddd…   |ddd…   |ddd…   d|ddd…   ¬	«       |j                  d|d¬
«       y)zÕ
    Test that the draw order does not depend on the data point order.

    For the given viewing angle at azim=-50, the yellow marker should be in
    front. For azim=130, the blue marker should be in front.
    ro   r   r   r¦   rZ   r3   r4   é¬  ©rg  rª   rš   N)rE   rn  r    ©r<   r=   rœ   rY   rZ   r[   r°   r'   s           r-   Ú$test_marker_draw_order_data_reversedr·    s¾   € ð 
ˆQˆ€AØ	
ˆBˆ€AØ	
ˆAˆ€AØ�#ˆJ€EØ	×	Ñ	¨Ð	Ó	.€BØ‡J�Jˆq�!�Q˜$ %€JÔ(Ø‡L�L�a˜d¨€LÔ+Ø	×	Ñ	¨Ð	Ó	-€BØ‡J�Jˆq‘�2�‰w˜™$˜B˜$™ ¡4 R 4¡¨D°E¹$¸B¸$±K€JÔ@Ø‡L�L�a˜d¨€LÕ+r/   c           
      ój  — d}ddg}ddg}ddg}ddg}| j                  d¬«      }|j                  «        |j                  |||d	|¬
«       |j                  d|d¬«       |j                  d¬«      }|j                  «        |j                  |||d	|ddd…   ¬
«       |j                  d|dz
  d¬«       y)z­
    Test that the draw order changes with the direction.

    If we rotate *azim* by 180 degrees and exchange the colors, the plot
    plot should look the same again.
    r²  ro   r   r   r¦   rZ   r3   r4   r´  rµ  rš   Nr˜   )rE   Úset_axis_offrn  r    r¶  s           r-   Ú#test_marker_draw_order_view_rotatedrº  2  sÃ   € ð €DØ	ˆQˆ€AØ	
ˆBˆ€AØ	
ˆAˆ€AØ�#ˆJ€EØ	×	Ñ	¨Ð	Ó	.€Bà‡O�OÔØ‡J�Jˆq�!�Q˜$ %€JÔ(Ø‡L�L�a˜d¨€LÔ+Ø	×	Ñ	¨Ð	Ó	-€BØ‡O�OÔØ‡J�Jˆq�!�Q˜$ %©¨"¨¡+€JÔ.Ø‡L�L�a˜d S™j¨q€LÕ1r/   zplot_3d_from_2d.pnggÛù~j¼t“?c                  óü   — t        j                  «       } | j                  d¬«      }t        j                  dd«      }t        j                  dd«      }|j                  ||dd¬«       |j                  ||dd¬«       y )	Nr3   r4   r   rp   r©   rY   ©r­   r®   rZ   )rC   rD   rE   r   r²   r<  )rH   r'   r´   rµ   s       r-   Útest_plot_3d_from_2dr½  J  sd   € ä
�*‰*‹,€CØ	�‰ DˆÓ	)€BÜ	�‰�1�a‹€BÜ	�‰�1�bÓ	€BØ‡G�GˆB��q˜s€GÔ#Ø‡G�GˆB��q˜s€GÕ#r/   zfill_between_quad.pngc                  ó$  — t        j                  «       } | j                  d¬«      }t        j                  ddt        j
                  z  d«      }t        j                  |«      }t        j                  |«      }dt        j                  d|z  «      z  }dt        j                  |«      z  }dt        j                  |«      z  }d}|t        j
                  dz  k  |d	t        j
                  z  dz  kD  z  }	|j                  |||||||	d
dd¬«
       y )Nr3   r4   r   r   é2   r  rÙ   ç333333ã?rn   ri   r*  Úk)ÚwhereÚmoder±   rs  )	rC   rD   rE   r   r2  r9  r;  r:  Úfill_between)
rH   r'   r=  Úx1Úy1Úz1Úx2Úy2Úz2rÂ  s
             r-   Útest_fill_between_quadrË  T  sá   € ä
�*‰*‹,€CØ	�‰ DˆÓ	)€Bä�K‰K˜˜1œRŸU™U™7 BÓ'€Eä	�‰�‹€BÜ	�‰�‹€BØ	Œr�v‰v�a˜%‘iÓ Ñ	 €Bà	Œr�v‰v�e‹}Ñ	€BØ	Œr�v‰v�e‹}Ñ	€BØ	
€Bà”R—U‘U˜1‘W‰_ ¨¬2¯5©5©°©Ñ!2Ñ3€Eð ‡O�O�B˜˜B  B¨Ø f°CÀ3ð õ Hr/   zfill_between_polygon.pngc                  óx  — t        j                  «       } | j                  d¬«      }t        j                  ddt        j
                  z  d«      }|x}}dx}}t        j                  |«      }|dz   }|t        j
                  dz  k  |dt        j
                  z  dz  kD  z  }	|j                  |||||||	dd	¬
«	       y )Nr3   r4   r   r   r¿  r   rn   ri   rÁ  )rÂ  rÃ  rs  )rC   rD   rE   r   r2  r9  r;  rÄ  )
rH   r'   r=  rÅ  rÈ  rÆ  rÉ  rÇ  rÊ  rÂ  s
             r-   Útest_fill_between_polygonrÍ  k  s¬   € ä
�*‰*‹,€CØ	�‰ DˆÓ	)€Bä�K‰K˜˜1œRŸU™U™7 BÓ'€Eà€O€BˆØ€K€BˆÜ	�‰�‹€BØ	ˆa‰€Bà”R—U‘U˜1‘W‰_ ¨¬2¯5©5©°©Ñ!2Ñ3€Eð ‡O�O�B˜˜B  B¨Ø f¸ð õ =r/   zsurface3d.pngc            
      ó  — dt         j                  d<   t        j                  «       } | j                  d¬«      }t	        j
                  ddd«      }t	        j
                  ddd«      }t	        j                  ||«      \  }}t	        j                  ||«      }t	        j                  |«      }|j                  |||ddt        j                  d	d¬
«      }dt         j                  d<   |j                  dd«       | j                  |dd¬«       y )NFzpcolormesh.snapr3   r4   rY  rp   r  rï   r   )rZ  r[  rí   r¡  r]  Tré   ç)\�Âõ(ð¿ç)\�Âõ(ð?r*  )ÚshrinkÚaspect)rC   r÷   rD   rE   r   r²   rÈ   r^  r:  r_  r   rÝ   r  Úcolorbar)rH   r'   rû   rü   rc  rý   Úsurfs          r-   Útest_surface3drÕ  ~  sÙ   € ð ',„C‡L�LÐ"Ñ#ä
�*‰*‹,€CØ	�‰ DˆÓ	)€BÜ
�	‰	�"�a˜Ó€AÜ
�	‰	�"�a˜Ó€AÜ�;‰;�q˜!Ó�D€A€qÜ
�‰��A‹€AÜ
�‰ˆq‹	€AØ�?‰?˜1˜a ¨2°b¼r¿{¹{Ø¨Uð ó 4€Dà(,„C‡L�LÐ$Ñ%Ø‡K�K��tÔØ‡L�L�˜c¨!€LÕ,r/   z(surface3d_label_offset_tick_position.pngc                  ó:  — dt         j                  d<   t        j                  «       j                  d¬«      } t        j
                  ddt        j                  z  d…ddt        j                  z  d…f   \  }}t	        j                  t	        j                  t	        j                  |«      t	        j                  |«      z   «      «      }| j                  |d	z  |d
z  |dz  ddd¬«       | j                  d«       | j                  d«       | j                  d«       y )NTré   r3   r4   r   rÙ   r  rt   g     jø@g    €„.Ag    „×—AÚautumnr   )rí   ÚcstrideÚrstridezX labelzY labelzZ label)rC   r÷   rD   rE   r   r¢  r9  Úsqrtr$   r;  r_  r‰   rŠ   r‹   )r'   rY   rZ   r[   s       r-   Ú)test_surface3d_label_offset_tick_positionrÛ  ‘  sÔ   € à(,„C‡L�LÐ$Ñ%Ü	�‰‹×	!Ñ	!¨TÐ	!Ó	2€Bä�8‰8�A�aœ"Ÿ%™%‘i Ð$ a¨¬B¯E©E©	°$Ð&6Ð6Ñ7�D€A€qÜ
�‰”—‘”r—v‘v˜a“y¤2§6¡6¨!£9Ñ,Ó-Ó.€Aà‡O�O�A˜‘G˜Q ™W a¨#¡g°HÀaÐQR€OÔSØ‡M�M�)ÔØ‡M�M�)ÔØ‡M�M�)Õr/   zsurface3d_shaded.pngc            
      óÄ  — t        j                  «       } | j                  d¬«      }t        j                  ddd«      }t        j                  ddd«      }t        j
                  ||«      \  }}t        j                  |dz  |dz  z   «      }t        j                  |«      }|j                  |||ddg d¢dd	¬
«       dt         j                  d<   |j                  dd«       y )Nr3   r4   rY  rp   r  r   )r  r   r  r   F)rÙ  rØ  r°   r¡  r]  Tré   rÏ  rÐ  )rC   rD   rE   r   r²   rÈ   rÚ  r:  r_  r÷   r  )rH   r'   rû   rü   rc  rý   s         r-   Útest_surface3d_shadedrÝ  Ÿ  s¼   € ä
�*‰*‹,€CØ	�‰ DˆÓ	)€BÜ
�	‰	�"�a˜Ó€AÜ
�	‰	�"�a˜Ó€AÜ�;‰;�q˜!Ó�D€A€qÜ
�‰��Q‘˜˜a™‘Ó €AÜ
�‰ˆq‹	€AØ‡O�O�A�q˜! Q°Ú)¨a¸Uð ô Dà(,„C‡L�LÐ$Ñ%Ø‡K�K��tÕr/   zsurface3d_masked.pngc                  ó  — t        j                  «       } | j                  d¬«      }g d¢}g d¢}t        j                  ||«      \  }}t        j
                  g d¢g d¢g d¢g d¢g d	¢g d
¢g d¢g d¢g«      }t        j                  j                  |d«      }t        j                  |j                  «       |j                  «       ¬«      }t        j                  d    ||«      «      }|j                  ||||¬«       |j                  ddd«       y )Nr3   r4   )r   r   rn   rt   rp   rÙ   r  r  r“  r©   r�   )r   r   rn   rt   rp   rÙ   r  r  )ro   r   r   r   r   r   r   r   r   r   r   )ro   r   r   rn   rt   rt   rt   rn   r   r   r   )ro   ç      ð¿rt   rp   rÙ   r  rÙ   rp   rt   rn   rß  )ro   rß  r  r  r�   é   r�   r  r  rß  rß  )ro   rß  r  r“  r©   é   r©   r“  r©   r  rß  )ro   rß  rß  rà  rá  r¨   rá  rà  r�   rß  rß  )ro   rß  rß  rß  é   é   râ  r¨   é   rß  rß  )ro   rß  rß  rß  rß  é   é   r�  rß  rß  rß  r   )r  r  Úplasma©r¬  r§   r  )rC   rD   rE   r   rÈ   r    r¦  Úmasked_lessrÚ   Ú	Normalizer  r  r  r  r_  r    )rH   r'   rY   rZ   Úmatrixr[   Únormr   s           r-   Útest_surface3d_maskedrí  ®  s×   € ä
�*‰*‹,€CØ	�‰ DˆÓ	)€BÚ+€AÚ €Aä�;‰;�q˜!Ó�D€A€qÜ�X‰Xâ.Ú.Ú2Ú7Ú6Ú<Ú=Ú?ð		
ó€Fô 	�‰×Ñ˜& !Ó$€AÜ×Ñ !§%¡%£'°·±³Ô8€DÜ�]‰]˜8Ñ$¡T¨!£WÓ-€FØ‡O�O�A�q˜!¨€OÔ/Ø‡L�L��S˜!Õr/   c                 ó  — t        j                  ddd«      }t        j                  ddd«      }t        j                  |«      t        j                  |«      z  }|dkD  }t         j                  j                  ||¬«      }| j                  d¬«      }|j                  |||«       |j                  |||«       t         j                  x||<   x||<   ||<   |j                  d¬«      }|j                  |||«       |j                  |||«       y )Nr   r©   rð   )rª  r3   r4   )
r   r2  r:  r;  r¦  r    rE   rn  r<  Únan)	r<   r=   rY   rZ   r[   rª  Úz_maskedr%  r$  s	            r-   Útest_plot_scatter_masksrñ  É  sä   € ä
�‰�A�r˜3Ó€AÜ
�‰�A�r˜3Ó€AÜ
�‰ˆq‹	”B—F‘F˜1“IÑ€AØˆq‰5€Dä�u‰u�{‰{˜1 4ˆ{Ó(€HØ×"Ñ"¨dÐ"Ó3€GØ‡O�O�A�q˜(Ô#Ø‡L�L��A�xÔ ä"$§&¡&Ð(€A€d�GÐ(ˆa�‰g˜˜$™Ø× Ñ ¨DÐ Ó1€FØ
‡N�N�1�a˜ÔØ
‡K�K��1�aÕr/   c                 ó$  — t        j                  t        j                  d«      t        j                  d«      «      \  }}||z   }| j                  d¬«      }|j	                  |||d ¬«       |j                  d¬«      }|j	                  |||«       y )Nrp   r3   r4   rè  )r   rÈ   r²   rE   r_  )r<   r=   rY   rZ   r[   r%  r$  s          r-   Útest_plot_surface_None_argró  Û  s~   € ä�;‰;”r—y‘y “|¤R§Y¡Y¨q£\Ó2�D€A€qØ	ˆA‰€AØ×"Ñ"¨dÐ"Ó3€GØ×Ñ˜˜A˜q¨TÐÔ2Ø× Ñ ¨DÐ Ó1€FØ
×Ñ˜˜1˜aÕ r/   zsurface3d_masked_strides.pngc                  ó$  — t        j                  «       } | j                  d¬«      }t        j                  ddd…ddd…f   \  }}t        j
                  j                  ||z  d«      }|j                  |||dd¬«       |j                  d	d
d«       y )Nr3   r4   iúÿÿÿgffffff@r   r   rt   ©rÙ  rØ  é<   éÓÿÿÿr   )	rC   rD   rE   r   r¢  r¦  ré  r_  r    ro  s        r-   Útest_surface3d_masked_stridesrø  å  s€   € ä
�*‰*‹,€CØ	�‰ DˆÓ	)€Bä�8‰8�B�s˜1�H˜b  Q˜hÐ&Ñ'�D€A€qÜ
�‰×Ñ˜!˜a™% Ó#€Aà‡O�O�A�q˜! Q°€OÔ2Ø‡L�L��S˜!Õr/   z
text3d.pngc                  ó.  — t        j                  «       } | j                  d¬«      }d}d}d}d}t        ||||«      D ]%  \  }}}}	d|||	|fz  }
|j	                  |||	|
|«       Œ' |j	                  dddd	d	¬
«       |j                  ddd|j                  ¬«       dt         j                  d<   |j                  dd«       |j                  dd«       |j                  dd«       |j                  d«       |j                  d«       |j                  d«       y )Nr3   r4   ©NrY   rZ   r[   ©r   r   r   rr   ©r   rÙ   rt   r“  r  r   ©rÙ   rt   r  r  r   r   ©rt   r   rp   rÙ   r   r  z(%d, %d, %d), dir=%sr   r¹   r½   r�   gffffffî?z2D Text)Ú	transformTré   r   r©   zX axiszY axiszZ axis)rC   rD   rE   r&   rh  Útext2DÚ	transAxesr÷   Ú
set_xlim3dÚ
set_ylim3dr`  r‰   rŠ   r‹   )rH   r'   Úzdirsr´   rµ   r­   r®   rY   rZ   r[   r‡   s              r-   Útest_text3dr  ñ  s  € ä
�*‰*‹,€CØ	�‰ DˆÓ	)€Bà7€EØ	€BØ	€BØ	€Bä˜U B¨¨BÓ/ò &‰ˆˆa��AØ&¨!¨Q°°4¨Ñ8ˆØ
�‰��1�a˜ Õ%ð&ð ‡G�GˆAˆq�!�U %€GÔ(Ø‡I�Iˆd�D˜)¨r¯|©|€IÔ<Ø(,„C‡L�LÐ$Ñ%Ø‡M�M�!�RÔØ‡M�M�!�RÔØ‡M�M�!�RÔØ‡M�M�(ÔØ‡M�M�(ÔØ‡M�M�(Õr/   c                 óD  — d}d}d}d}|j                  d¬«      }|j                  dd«       |j                  dd«       |j                  dd«       t	        ||||«      D ]=  \  }}}	}
|j                  dddd	|› d
|	› d
|
› d|› �«      }|j                  ||	|
f|¬«       Œ? | j                  d¬«      }|j                  dd«       |j                  dd«       |j                  dd«       t	        ||||«      D ])  \  }}}	}
|j                  ||	|
d	|› d
|	› d
|
› d|› �|¬«       Œ+ y )Nrú  rü  rý  rþ  r3   r4   r   r©   ú(z, z), dir=)r®   )rE   r  r  r`  r&   rh  Úset_position_3d)r=   r<   r  r´   rµ   r­   r%  r®   rY   rZ   r[   rR  r$  s                r-   Útest_text3d_modificationr	  
  s[  € ð 8€EØ	€BØ	€BØ	€Bà×"Ñ"¨dÐ"Ó3€GØ×Ñ�q˜"ÔØ×Ñ�q˜"ÔØ×Ñ�q˜"ÔÜ˜U B¨¨BÓ/ò 0‰ˆˆa��AØ�L‰L˜˜A˜q A a S¨¨1¨#¨R°¨s°'¸$¸Ð"@ÓAˆØ	×Ñ˜1˜a ˜)¨$ÐÕ/ð0ð × Ñ ¨DÐ Ó1€FØ
×Ñ�a˜ÔØ
×Ñ�a˜ÔØ
×Ñ�a˜ÔÜ˜U B¨¨BÓ/ò H‰ˆˆa��AØ�‰�A�q˜!˜q   2 a S¨¨1¨#¨W°T°FÐ;À$ˆÕGñHr/   ztrisurf3d.pngg¬Zd;¯?c                  óÜ  — d} d}t        j                  dd|«      }t        j                  ddt         j                  z  | d¬«      }t        j                  |d	t         j                  f   |d
¬«      }|d d …d
d d…fxx   t         j                  | z  z  cc<   t        j
                  d|t        j                  |«      z  j                  «       «      }t        j
                  d|t        j                  |«      z  j                  «       «      }t        j                  | |z  «      }t        j                  «       }|j                  d¬«      }|j                  |||t        j                  d¬«       y )Né$   r  ç      À?ç      ð?r   r   F©Úendpoint.r   ©rR   r3   r4   çš™™™™™É?)rí   r\  )r   r2  r9  r©  ÚnewaxisÚappendr;  r`   r:  rC   rD   rE   Úplot_trisurfr   Újet©	Ún_anglesÚn_radiiÚradiiÚanglesrY   rZ   r[   rH   r'   s	            r-   Útest_trisurf3dr  #  s  € à€HØ€GÜ�K‰K˜˜s GÓ,€EÜ�[‰[˜˜AœbŸe™e™G X¸Ô>€FÜ�Y‰Y�v˜c¤2§:¡:˜oÑ.°¸aÔ@€FØ
Š1ˆaˆd�ˆdˆ7ƒO”r—u‘u˜X‘~Ñ%ƒOä
�	‰	�!�eœBŸF™F 6›NÑ*×3Ñ3Ó5Ó6€AÜ
�	‰	�!�eœBŸF™F 6›NÑ*×3Ñ3Ó5Ó6€AÜ
�‰�ˆr�!‰t‹€Aä
�*‰*‹,€CØ	�‰ DˆÓ	)€BØ‡O�O�A�q˜!¤"§&¡&°C€OÕ8r/   ztrisurf3d_shaded.pngç¸…ëQ¸ž?c                  óÄ  — d} d}t        j                  dd|«      }t        j                  ddt         j                  z  | d¬«      }t        j                  |d	t         j                  f   |d
¬«      }|d d …d
d d…fxx   t         j                  | z  z  cc<   t        j
                  d|t        j                  |«      z  j                  «       «      }t        j
                  d|t        j                  |«      z  j                  «       «      }t        j                  | |z  «      }t        j                  «       }|j                  d¬«      }|j                  |||g d¢d¬«       y )Nr  r  r  r  r   r   Fr  .r   r  r3   r4   )r   r*  r   r  )r°   r\  )r   r2  r9  r©  r  r  r;  r`   r:  rC   rD   rE   r  r  s	            r-   Útest_trisurf3d_shadedr  5  s	  € à€HØ€GÜ�K‰K˜˜s GÓ,€EÜ�[‰[˜˜AœbŸe™e™G X¸Ô>€FÜ�Y‰Y�v˜c¤2§:¡:˜oÑ.°¸aÔ@€FØ
Š1ˆaˆd�ˆdˆ7ƒO”r—u‘u˜X‘~Ñ%ƒOä
�	‰	�!�eœBŸF™F 6›NÑ*×3Ñ3Ó5Ó6€AÜ
�	‰	�!�eœBŸF™F 6›NÑ*×3Ñ3Ó5Ó6€AÜ
�‰�ˆr�!‰t‹€Aä
�*‰*‹,€CØ	�‰ DˆÓ	)€BØ‡O�O�A�q˜!¢;¸#€OÕ>r/   zwireframe3d.pngc                  ó®   — t        j                  «       } | j                  d¬«      }t        j                  d«      \  }}}|j                  |||dd¬«       y )Nr3   r4   r�   é   ©rZ  r[  ©rC   rD   rE   r   rø   Úplot_wireframerú   s        r-   Útest_wireframe3dr$  G  sL   € ä
�*‰*‹,€CØ	�‰ DˆÓ	)€BÜ×"Ñ" 4Ó(�G€A€qˆ!Ø×Ñ�a˜˜A b°ÐÕ4r/   zwireframe3dzerocstride.pngc                  ó®   — t        j                  «       } | j                  d¬«      }t        j                  d«      \  }}}|j                  |||dd¬«       y )Nr3   r4   r�   r   r   r!  r"  rú   s        r-   Útest_wireframe3dzerocstrider&  O  sL   € ä
�*‰*‹,€CØ	�‰ DˆÓ	)€BÜ×"Ñ" 4Ó(�G€A€qˆ!Ø×Ñ�a˜˜A b°ÐÕ3r/   zwireframe3dzerorstride.pngc                  ó®   — t        j                  «       } | j                  d¬«      }t        j                  d«      \  }}}|j                  |||dd¬«       y )Nr3   r4   r�   r   r©   rõ  r"  rú   s        r-   Útest_wireframe3dzerorstrider(  W  sL   € ä
�*‰*‹,€CØ	�‰ DˆÓ	)€BÜ×"Ñ" 4Ó(�G€A€qˆ!Ø×Ñ�a˜˜A q°"ÐÕ5r/   c                  ó
  — t        j                  «       } | j                  d¬«      }t        j                  d«      \  }}}t        j                  t        «      5  |j                  |||dd¬«       d d d «       y # 1 sw Y   y xY w)Nr3   r4   r�   r   rõ  )	rC   rD   rE   r   rø   rI  rJ  Ú
ValueErrorr#  rú   s        r-   Ú test_wireframe3dzerostrideraisesr+  _  sm   € Ü
�*‰*‹,€CØ	�‰ DˆÓ	)€BÜ×"Ñ" 4Ó(�G€A€qˆ!Ü	�‰”zÓ	"ñ 9Ø
×Ñ˜!˜Q ¨1°aÐÔ8÷9÷ 9ñ 9ús   ÁA9Á9Bc                  ó’  — t        j                  «       } | j                  d¬«      }t        j                  d«      \  }}}t        j                  t        «      5  |j                  |||dd¬«       d d d «       t        j                  t        «      5  |j                  |||dd¬«       d d d «       y # 1 sw Y   ŒBxY w# 1 sw Y   y xY w)Nr3   r4   r�   r©   r¿  )rÙ  r[  )rØ  rZ  )
rC   rD   rE   r   rø   rI  rJ  r*  r#  r_  rú   s        r-   Útest_mixedsamplesraisesr-  g  s©   € Ü
�*‰*‹,€CØ	�‰ DˆÓ	)€BÜ×"Ñ" 4Ó(�G€A€qˆ!Ü	�‰”zÓ	"ñ :Ø
×Ñ˜!˜Q ¨2°bÐÔ9÷:ä	�‰”zÓ	"ñ 8Ø
�‰˜˜1˜a¨°BˆÔ7÷8ð 8÷:ð :ú÷8ð 8ús   ÁB1ÂB=Â1B:Â=Czquiver3d.pnggú~j¼t“h?c                  óô  — dt         j                  d<   t        j                  «       } | j                  d¬«      }g d¢}g d¢}t	        t        ||«      «      D ]i  \  }\  }}t        j                  ddgddgddg«      \  }}}	| }
| }|	 }|	d	|z  z  }	|j                  |||	|
||d
||¬«	       |j                  |||	|¬«       Œk |j                  dd«       |j                  dd«       |j                  dd«       y )NTré   r3   r4   )ÚtipÚmiddleÚtail)ztab:bluez
tab:orangez	tab:greenç      à¿r*  r   r   )râ   Úpivotr°   r½   éýÿÿÿrn   ro   rp   )rC   r÷   rD   rE   rx   r&   r   rÈ   Úquiverrn  r  r  r  )rH   r'   Úpivotsr   r~   r3  r°   rY   rZ   r[   ÚuÚvÚws                r-   Útest_quiver3dr:  r  sþ   € à(,„C‡L�LÐ$Ñ%Ü
�*‰*‹,€CØ	�‰ DˆÓ	)€BÚ&€FÚ4€FÜ&¤s¨6°6Ó':Ó;ò )Ñˆ‰>ˆE�5Ü—+‘+˜t S˜k¨D°#¨;¸¸s¸ÓD‰ˆˆ1ˆaØˆBˆØˆBˆØˆBˆà	ˆQ�‰U‰
ˆØ
�	‰	�!�Q˜˜1˜a ¨1°EÀˆ	ÔGØ
�
‰
�1�a˜ %ˆ
Õ(ð)ð ‡K�K��AÔØ‡K�K��AÔØ‡K�K��AÕr/   c                 ó˜   — |j                  d¬«       g x}x}x}x}x}}| j                  d¬«      }|j                  ||||||ddd¬«	       y )Nr3   r4   r  r/  T©râ   r3  Ú	normalize)rE   r5  )	r<   r=   rY   rZ   r[   r7  r8  r9  r'   s	            r-   Útest_quiver3d_emptyr>  ˆ  sb   € à×Ñ 4ÐÔ(ØÐ€AÐˆÐˆAÐ�Ð�A˜Ø	×	Ñ	¨Ð	Ó	.€BØ‡I�Iˆa��A�q˜!˜Q s°%À4€IÕHr/   zquiver3d_masked.pngc                  ó6  — t        j                  «       } | j                  d¬«      }t        j                  ddd…ddd…ddd…f   \  }}}t        j
                  t        j                  |z  «      t        j                  t        j                  |z  «      z  t        j                  t        j                  |z  «      z  }t        j                  t        j                  |z  «       t        j
                  t        j                  |z  «      z  t        j                  t        j                  |z  «      z  }dt        j                  t        j                  |z  «      z  t        j                  t        j                  |z  «      z  t        j
                  t        j                  |z  «      z  }t        j                  j                  d	|k  |d
k  z  |d¬«      }t        j                  j                  d
|k  |dk  z  |d¬«      }|j                  ||||||d
dd¬«	       y )Nr3   r4   ro   r¬   y              $@rÀ  y              @g>,p½ ê?çš™™™™™Ù¿r  F)r   r�  r/  Tr<  )rC   rD   rE   r   r¢  r:  r9  r;  r¦  Úmasked_wherer5  )rH   r'   rY   rZ   r[   r7  r8  r9  s           r-   Útest_quiver3d_maskedrB  �  sˆ  € ä
�*‰*‹,€CØ	�‰ DˆÓ	)€Bô �h‰h�r˜#˜c�z 2 c¨# :¨r°#°b¨yÐ8Ñ9�G€A€qˆ!ä
�‰Œr�u‰u�q‰yÓœBŸF™F¤2§5¡5¨1¡9Ó-Ñ-´·±´r·u±u¸q±yÓ0AÑA€AÜ	�‰”—‘˜‘	Ó	ÐœRŸV™V¤B§E¡E¨A¡IÓ.Ñ.´·±¼¿¹À¹	Ó1BÑB€AØ”R—V‘VœBŸE™E A™IÓ&Ñ&¬¯©´·±¸±	Ó):Ñ:¼R¿V¹VÄBÇEÁEÈAÁIÓ=NÑN€AÜ
�‰×Ñ˜D 1™H¨¨S©Ñ1°1¸5ÐÓA€AÜ
�‰×Ñ˜C !™G¨¨C©Ñ0°!¸%ÐÓ@€Aà‡I�Iˆa��A�q˜!˜Q s°%À4€IÕHr/   zquiver3d_colorcoded.pngc            	      óh  — t        j                  «       } | j                  d¬«      }t        j                  d«      x}x}x}}t        j
                  d«      x}}t         j                  j                  ||j                  «       z  «      }|j                  |||||||¬«       |j                  dd«       y )Nr3   r4   r©   ç      $@)r   r   )rC   rD   rE   r   Úzerosr²   r   ÚRedsr  r5  r  )	rH   r'   rY   rZ   rÕ   r×   r[   rÖ   r°   s	            r-   Útest_quiver3d_colorcodedrG  ¢  s�   € ä
�*‰*‹,€CØ	�‰ DˆÓ	)€Bä—h‘h˜r“lÐ"€AÐ"ˆÐ"ˆB�Ü�Y‰Y�s‹^Ð€Aˆä�F‰F�K‰K˜˜2Ÿ6™6›8™Ó$€EØ‡I�Iˆa��A�r˜2˜r¨%€IÔ0Ø‡K�K��2Õr/   c                  ó   — t        j                  «       } | j                  d¬«      }t        d«      }|j	                  |«       t        j                  |«       |j                  d«       t        j                  |j                  «       d«      sJ ‚| j                  j                  «        t        j                  |j                  «       d«      sJ ‚y )Nr3   r4   ©r   r   )r  rT  rT  r   )r   r   r   r   )rC   rD   rE   r   Ú	add_patchr   Úpatch_2d_to_3dr„  rÚ   Ú
same_colorÚget_facecolorrË   rÌ   )rH   r'   Úcircles      r-   Útest_patch_modificationrO  ¯  s›   € Ü
�*‰*‹,€CØ	�‰ DˆÓ	)€BÜ�F‹^€FØ‡L�L�ÔÜ	×Ñ˜Ô Ø
×ÑÐ+Ô,ä×Ñ˜f×2Ñ2Ó4°lÔCÐCÐCØ‡J�J‡O�OÔÜ×Ñ˜f×2Ñ2Ó4°lÔCÐCÑCr/   c                 ó˜  — t        dd«      }t        dd«      }t        j                  g d¢g d¢g«      }t        j                  ||gd¬«      }| j                  d	¬
«      }|j                  |«       |j                  d«       |j                  |«       |j                  d«       |j                  «       sJ ‚|j                  d«       |j                  «       rJ ‚t        dd«      }t        dd«      }t        j                  g d¢g d¢g«      }t        j                  ||gdd|dd¬«      }|j                  d	¬
«      }|j                  |«       y )NrI  r�   )r  r  r  )rT  r*  rT  r  )r*  rT  rT  r*  rn   )ry  r3   r4   r  r�  F)ry  rs  rr  r±   rƒ  )r   r   r    r   ÚPatch3DCollectionrE   Úadd_collection3dr…  r„  r†  r‡  rˆ  )r<   r=   Úpatch1Úpatch2r¬  rª   r%  r$  s           r-   Ú"test_patch_collection_modificationrU  ¼  s2  € ô �F˜DÓ!€FÜ�J Ó%€FÜ—‘Ò,Ò.@ÐAÓB€JÜ×Ñ ¨Ð 0¸QÔ?€Aà×"Ñ"¨dÐ"Ó3€GØ×Ñ˜QÔØ‡O�O�DÔØ‡O�O�JÔØ‡K�K�ÔØ×ÑÔÐÐØ×Ñ�UÔØ×ÑÔ!Ð!Ð!ä�F˜DÓ!€FÜ�J Ó%€FÜ—‘Ò,Ò.@ÐAÓB€JÜ×Ñ ¨Ð 0¸QØ*.¸*Ø&)°eô	=€Að × Ñ ¨DÐ Ó1€FØ
×Ñ˜AÕr/   c                  ój  — g d¢g d¢g d¢g d¢g} t        j                  t        d¬«      5  t        j                  | «       d d d «       t        j                  | t        ¬«      } t        j                  t        d¬«      5  t        j                  | «       d d d «       y # 1 sw Y   Œ^xY w# 1 sw Y   y xY w)N©r   r   r   ©r   r   r   ©r   r   r   r•   zlist of \(N, 3\) array-likerG  r�  )rI  rJ  r*  r   ÚPoly3DCollectionr   r    r¨  )Úpolys    r-   Ú&test_poly3dcollection_verts_validationr\  Ø  s‹   € Ú’y¢)ªYÐ7€DÜ	�‰”zÐ)GÔ	Hñ %Ü×Ñ˜tÔ$÷%ô �8‰8�D¤Ô&€DÜ	�‰”zÐ)GÔ	Hñ %Ü×Ñ˜tÔ$÷%ð %÷	%ð %ú÷%ð %ús   ªBÁ>B)ÂB&Â)B2zpoly3dcollection_closed.pngc                  ó”  — t        j                  «       } | j                  d¬«      }t        j                  g d¢g d¢g d¢gt
        «      }t        j                  g d¢g d¢g d¢gt
        «      }t        j                  |gdd	d
d¬«      }t        j                  |gdd	dd¬«      }|j                  |d¬«       |j                  |d¬«       y )Nr3   r4   rW  rX  r•   rr   rû  rn   rÁ  )r*  r*  r   r*  T©ry  rs  rr  Úclosed)r   r*  r*  r*  F©Úautolim)	rC   rD   rE   r   r    r¨  r   rZ  rR  ©rH   r'   Úpoly1Úpoly2Úc1Úc2s         r-   Útest_poly3dcollection_closedrg  â  s­   € ä
�*‰*‹,€CØ	�‰ DˆÓ	)€Bä�H‰H’i¢ªIÐ6¼Ó>€EÜ�H‰H’i¢ªIÐ6¼Ó>€EÜ	×	Ñ	  °AÀØ*<ÀTô
K€Bä	×	Ñ	  °AÀØ*<ÀUô
L€Bà×Ñ˜ EÐÔ*Ø×Ñ˜ EÐÕ*r/   c                  ó�  — t        g «      } t        j                  | «       t        | t        j                  «      sJ ‚| j                  «       g k(  sJ ‚t        j                  t        d¬«      ¬«      \  }}|j                  | «       | j                  «       }t        j                  |«      sJ ‚|j                  j                  «        y )Nr3   r4   r6   )r   r   Úpoly_collection_2d_to_3dÚ
isinstancerZ  Ú	get_pathsrC   r8   r9   Ú
add_artistÚdo_3d_projectionr   ÚisnanrË   rÌ   )r[  rH   r'   Úminzs       r-   Ú#test_poly_collection_2d_to_3d_emptyrp  ñ  s–   € Ü˜"Ó€DÜ	×"Ñ" 4Ô(Ü�dœE×2Ñ2Ô3Ð3Ð3Ø�>‰>Ó˜rÒ!Ð!Ð!ä�l‰l¤d°dÔ&;Ô<�G€CˆØ‡M�M�$ÔØ× Ñ Ó"€DÜ�8‰8�DŒ>Ðˆ>ð ‡J�J‡O�OÕr/   zpoly3dcollection_alpha.pngc                  ó  — t        j                  «       } | j                  d¬«      }t        j                  g d¢g d¢g d¢gt
        «      }t        j                  g d¢g d¢g d¢gt
        «      }t        j                  |gdd	d
d¬«      }|j                  d«       t        j                  |gdd¬«      }|j                  d«       |j                  d	«       |j                  d«       |j                  |d¬«       |j                  |d¬«       y )Nr3   r4   rW  rX  r•   rr   rû  rn   rÁ  ©r*  r*  r   Tr^  r*  F)ry  r_  )r   r*  r*  r`  )rC   rD   rE   r   r    r¨  r   rZ  r†  r„  r…  rR  rb  s         r-   Útest_poly3dcollection_alphars     sÙ   € ä
�*‰*‹,€CØ	�‰ DˆÓ	)€Bä�H‰H’i¢ªIÐ6¼Ó>€EÜ�H‰H’i¢ªIÐ6¼Ó>€EÜ	×	Ñ	  °AÀØ*7Àô
F€Bà‡L�L�ÔÜ	×	Ñ	  °A¸eÔ	D€Bà×Ñ�]Ô#Ø×Ñ�SÔØ‡L�L�ÔØ×Ñ˜ EÐÔ*Ø×Ñ˜ EÐÕ*r/   zadd_collection3d_zs_array.pngc                  ó²  — t        j                  dt         j                  z  dt         j                  z  d«      } t        j                  ddd«      }|dz  dz   }|t        j                  | «      z  }|t        j                  | «      z  }t        j
                  |||g«      j                  ddd«      }t        j                  |d d |dd  gd¬	«      }t        j                  «       }|j                  d
¬«      }t        j                  ddt         j                  z  «      }	t        |d d …d d …d d…f   d|	¬«      }
|
j                  t        j                  | dt         j                  z  «      «       |j                  |
|d d …d d …df   ¬«      }|€J ‚dt        j                   d<   |j#                  dd«       |j%                  dd«       |j'                  dd«       y )Nr8  rt   rð   r  r   r   ro   rn   r  r3   r4   r   Útwilight©rí   rì  ©r­   Tré   rY  rp   rÙ   )r   r2  r9  r:  r;  Úcolumn_stackr¤  ÚconcatenaterC   rD   rE   rê  r   Ú	set_arrayÚmodrR  r÷   r  r  r  ©r=  r[   r)   rY   rZ   ÚpointsÚsegmentsrH   r'   rì  ÚlcrQ   s               r-   Útest_add_collection3d_zs_arrayr€    s  € ä�K‰K˜œRŸU™U™
 A¬¯©¡I¨sÓ3€EÜ
�‰�B˜˜3Ó€AØ	ˆ1‰ˆq‰€AØ	ŒB�F‰F�5‹MÑ€AØ	ŒB�F‰F�5‹MÑ€Aä�_‰_˜a  A˜YÓ'×/Ñ/°°A°qÓ9€FÜ�~‰~˜v c r˜{¨F°1°2¨JÐ7¸aÔ@€Hä
�*‰*‹,€CØ	�‰ DˆÓ	)€Bä�=‰=˜˜AœbŸe™e™GÓ$€Dä	˜¢¢A r¨ r Ñ*°À$Ô	G€BØ‡L�L”—‘˜˜q¤§¡™wÓ'Ô(à×Ñ˜r hªq²!°Q¨wÑ&7ÐÓ8€DàÐÐÐà(,„C‡L�LÐ$Ñ%Ø‡K�K��AÔØ‡K�K��AÔØ‡K�K��AÕr/   zadd_collection3d_zs_scalar.pngc                  óî  — t        j                  ddt         j                  z  d«      } d}|dz  dz   }|t        j                  | «      z  }|t        j                  | «      z  }t        j
                  ||g«      j                  ddd«      }t        j                  |d d |dd  gd¬«      }t        j                  «       }|j                  d¬«      }t        j                  ddt         j                  z  «      }	t        |d	|	¬
«      }
|
j                  | «       |j                  |
|¬«      }|€J ‚dt        j                  d<   |j!                  dd«       |j#                  dd«       |j%                  dd«       y )Nr   r   rð   r   ro   r  r3   r4   ru  rv  rw  Tré   rY  rp   r8  rÙ   )r   r2  r9  r:  r;  rx  r¤  ry  rC   rD   rE   rê  r   rz  rR  r÷   r  r  r  r|  s               r-   Útest_add_collection3d_zs_scalarr‚  0  s;  € ä�K‰K˜˜1œrŸu™u™9 cÓ*€EØ	€AØ	ˆ1‰ˆq‰€AØ	ŒB�F‰F�5‹MÑ€AØ	ŒB�F‰F�5‹MÑ€Aä�_‰_˜a ˜VÓ$×,Ñ,¨R°°AÓ6€FÜ�~‰~˜v c r˜{¨F°1°2¨JÐ7¸aÔ@€Hä
�*‰*‹,€CØ	�‰ DˆÓ	)€Bä�=‰=˜˜AœbŸe™e™GÓ$€DÜ	˜ z¸Ô	=€BØ‡L�L�ÔØ×Ñ˜r aÐÓ(€DàÐÐÐà(,„C‡L�LÐ$Ñ%Ø‡K�K��AÔØ‡K�K��AÔØ‡K�K��1Õr/   c                  ó–  — t        j                  «       } | j                  d¬«      }ddgddgddgg}t        j                  |«      }|j                  |«       t        j                  |j                  «       d	«      sJ ‚t        j                  |j                  «       d
«      sJ ‚t        j                  |j                  «       d«      sJ ‚y )Nr3   r4   r•   )r   rt   r   ©r   r   rn   )r   r   r   ©r   r   rt   )r   rt   rp   )gUUUUUU¥¿gUUUUUU @)gUUUUUUµ¿çUUUUUU@)gªªªªªªº¿g«ªªªªj@)rC   rD   rE   r   ÚLine3DCollectionrR  r   ÚallcloseÚ
get_xlim3dÚ
get_ylim3dÚ
get_zlim3d)rH   r'   Úlinesr  s       r-   Ú!test_line3dCollection_autoscalingr�  K  s­   € Ü
�*‰*‹,€CØ	�‰ DˆÓ	)€Bà˜Ð#Ø˜Ð#Ø˜Ð#ð%€Eô 
×	Ñ	 Ó	&€BØ×Ñ˜ÔÜ�;‰;�r—}‘}“Ð(SÔTÐTÐTÜ�;‰;�r—}‘}“Ð(QÔRÐRÐRÜ�;‰;�r—}‘}“Ð(QÔRÐRÑRr/   c                  ó¾  — t        j                  «       } | j                  d¬«      }t        j                  g d¢g d¢g d¢g«      }t        j                  |g«      }|j                  |«       t        j                  |j                  «       d«      sJ ‚t        j                  |j                  «       d«      sJ ‚t        j                  |j                  «       d«      sJ ‚y )Nr3   r4   r•   r„  r…  ©çUUUUUU•¿gUUUUUUð?)gSUUUUUµ¿r†  )rC   rD   rE   r   r    r   rZ  rR  rˆ  r‰  rŠ  r‹  )rH   r'   r[  Úcols       r-   Ú!test_poly3dCollection_autoscalingr’  Z  s£   € Ü
�*‰*‹,€CØ	�‰ DˆÓ	)€BÜ�8‰8’Y¢	ª9Ð5Ó6€DÜ
×
 Ñ
  $ Ó
(€CØ×Ñ˜ÔÜ�;‰;�r—}‘}“Ð(SÔTÐTÐTÜ�;‰;�r—}‘}“Ð(SÔTÐTÐTÜ�;‰;�r—}‘}“Ð(PÔQÐQÑQr/   zaxes3d_labelpad.pngc                  ó¦  — t        j                  «       } | j                  t        | «      «      }|j                  j
                  t        j                  d   k(  sJ ‚|j                  dd¬«       |j                  j
                  dk(  sJ ‚|j                  d«       |j                  dd¬«       |j                  j
                  dk(  sJ ‚|j                  «       dk(  sJ ‚d|j                  _        d|j                  _        t        |j                  j                  «       «      D ]-  \  }}|j!                  |j#                  «       d	z   |d	z  z
  «       Œ/ y )
Nzaxes.labelpadzX LABELr©   )ÚlabelpadzY LABELzZ LABELr¨   rî   rp   )rC   rD   Úadd_axesr   rN   r”  r  r÷   r‰   rŠ   r‹   rP   Ú
get_zlabelrO   rx   Úget_major_ticksÚset_padÚget_pad)rH   r'   r~   Úticks       r-   Útest_axes3d_labelpadr›  e  s  € ô �*‰*‹,€CØ	�‰”f˜S“kÓ	"€Bà�8‰8×Ñ¤§¡¨_Ñ =Ò=Ð=Ð=à‡M�M�) b€MÔ)Ø�8‰8×Ñ Ò"Ð"Ð"Ø‡M�M�)ÔØ‡M�M�) b€MÔ)Ø�8‰8×Ñ Ò"Ð"Ð"Ø�=‰=‹?˜iÒ'Ð'Ð'à€B‡H�HÔØ€B‡H�HÔô ˜RŸX™X×5Ñ5Ó7Ó8ò 1‰ˆˆ4Ø�‰�T—\‘\“^ aÑ'¨!¨a©%Ñ/Õ0ñ1r/   zaxes3d_cla.pngc                  ó–   — t        j                  «       } | j                  dddd¬«      }|j                  «        |j	                  «        y )Nr   r3   r4   )rC   rD   rE   r¹  ÚclarG   s     r-   Útest_axes3d_clarž  |  s8   € ô �*‰*‹,€CØ	�‰˜˜A˜q¨TˆÓ	2€BØ‡O�OÔØ‡F�F…Hr/   zaxes3d_rotated.pngc                  ó|   — t        j                  «       } | j                  dddd¬«      }|j                  ddd«       y )Nr   r3   r4   r’   é-   r   )rC   rD   rE   r    rG   s     r-   Útest_axes3d_rotatedr¡  …  s5   € ô �*‰*‹,€CØ	�‰˜˜A˜q¨TˆÓ	2€BØ‡L�L��R˜Õr/   c                  ó¬  — t        j                  ddd¬«      } t        j                  ddd¬«      }t        j                  | |«      \  }}t         j                  j	                  d«      }t        j                  d¬«      }|j                  dddd	¬
«      }t        j                  t        «      5  |j                  |||«       d d d «       y # 1 sw Y   y xY w)Nr*  r©   rð   )Únum)é   rÙ   rÅ   r   r   r3   r4   )r   r2  rÈ   r+  ÚrandnrC   rD   rE   rI  rJ  r*  r_  )rY   rZ   rû   rü   r[   rH   r'   s          r-   Útest_plotsurface_1d_raisesr¦  �  s¡   € Ü
�‰�C˜ Ô%€AÜ
�‰�C˜ Ô%€AÜ�;‰;�q˜!Ó�D€A€qÜ
�	‰	�‰˜Ó€Aä
�*‰*˜WÔ
%€CØ	�‰˜˜A˜q¨TˆÓ	2€BÜ	�‰”zÓ	"ñ !Ø
�‰˜˜1˜aÔ ÷!÷ !ñ !ús   Â-C
Ã
Cc                  óV  — t        j                  g d¢«      } t        j                  g d¢«      }t        j                  g d¢«      }d}t        j                  | |||«      \  }}}t        j                  |||| «      }t        j
                  ddd«      }t        j                  ||«      }	|	S )N)r)  iüÿÿiÐ  )rð   rð   rð   rW  r   rð   rê   r   )r   r    r   Ú
_view_axesÚ_view_transformation_uvwÚ_persp_transformationÚdot)
ÚErc  ÚVr�   r7  r8  r9  ÚviewMÚperspMÚMs
             r-   Ú_test_proj_make_Mr±  ™  s�   € ä
�‰Ò$Ó%€AÜ
�‰’Ó!€AÜ
�‰’Ó€AØ€DÜ×Ñ  1 a¨Ó.�G€A€qˆ!Ü×+Ñ+¨A¨q°!°QÓ7€EÜ×)Ñ)¨#¨t°QÓ7€FÜ
�‰ˆv�uÓ€AØ€Hr/   c                  ó"  — t        «       } t        j                  j                  | «      }t        j                  g d¢«      dz  }t        j                  g d¢«      dz  }t        j                  g d¢«      dz  }t        j                  |||| «      \  }}}t        j                  ||||«      \  }}	}
t        j                  j                  ||«       t        j                  j                  |	|«       t        j                  j                  |
|«       y )N©
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   ÚlinalgÚinvr    r   Úproj_transformÚinv_transformrÞ   Úassert_almost_equal)r°  ÚinvMr´   rµ   r­   ÚtxsÚtysÚtzsÚixsÚiysÚizss              r-   Útest_proj_transformrÃ  ¦  sÌ   € ÜÓ€AÜ�9‰9�=‰=˜Ó€Dä	�‰Ò0Ó	1°EÑ	9€BÜ	�‰Ò0Ó	1°EÑ	9€BÜ	�‰Ò0Ó	1°EÑ	9€Bä×)Ñ)¨"¨b°"°aÓ8�M€CˆˆcÜ×(Ñ(¨¨c°3¸Ó=�M€Cˆˆcä‡J�J×"Ñ" 3¨Ô+Ü‡J�J×"Ñ" 3¨Ô+Ü‡J�J×"Ñ" 3¨Õ+r/   r   c                 ó\  — d|ddg}dd|dg}ddd|g}t        j                  |||| «      \  }}}	t        ||«      \  }
}}}|
|f|
|f|
|fg}t        j                  |i |¤Ž\  }}t        |«      }|j                  |«       t        ||g d¢«      D ]  \  }}}|j                  |||«       Œ ||fS )Nr   )r@  rY   rZ   r[   )r   r¹  r&   rC   r8   r   Úadd_collectionrh  )r°  rg  Úargsr#  r´   rµ   r­   r½  r¾  r¿  r@  r'   ÚayÚazrŒ  rH   ÚlinecrY   rZ   rR  s                       r-   Ú_test_proj_draw_axesrÊ  ¶  sÙ   € Ø
ˆQ��1ˆ€BØ
ˆQ��1ˆ€BØ
ˆQ��1ˆ€BÜ×)Ñ)¨"¨b°"°aÓ8�M€CˆˆcÜ˜˜S“M�M€A€rˆ2ˆrØ�ˆW�q˜"�g  2˜wÐ'€Eä�l‰l˜DÐ+ FÑ+�G€CˆÜ˜5Ó!€EØ×Ñ�eÔÜ�s˜CÒ!5Ó6ò ‰ˆˆ1ˆaØ
�‰��1�aÕðð �ˆ7€Nr/   zproj3d_axes_cube.pngc                  ó<  — t        «       } dj                  «       }t        j                  g d¢«      dz  }t        j                  g d¢«      dz  }t        j                  g d¢«      dz  }t	        j
                  |||| «      \  }}}t        | d¬«      \  }}	|	j                  |||¬«       |	j                  ||d	¬«       t        |||«      D ]  \  }
}}|	j                  |
||«       Œ d
t        j                  d<   |	j                  dd«       |	j                  dd«       y )Nú0 1 2 3 0 4 5 6 7 4r³  r´  rµ  r¶  i�  rf  ©rª   r)   Tré   çš™™™™™É¿r  )r±  Úsplitr   r    r   r¹  rÊ  rn  r<  r&   rh  rC   r÷   r  r  )r°  Útsr´   rµ   r­   r½  r¾  r¿  rH   r'   rY   rZ   rR  s                r-   Útest_proj_axes_cuberÑ  Ç  sÿ   € äÓ€Aà	×	$Ñ	$Ó	&€BÜ	�‰Ò0Ó	1°EÑ	9€BÜ	�‰Ò0Ó	1°EÑ	9€BÜ	�‰Ò0Ó	1°EÑ	9€Bä×)Ñ)¨"¨b°"°aÓ8�M€Cˆˆcä" 1¨Ô,�G€Cˆà‡J�Jˆs�C˜3€JÔØ‡G�GˆC�˜€GÔÜ�s˜C Ó$ò ‰ˆˆ1ˆaØ
�‰��1�aÕðð )-„C‡L�LÐ$Ñ%Ø‡K�K��cÔØ‡K�K��cÕr/   zproj3d_axes_cube_ortho.pngc                  ó|  — t        j                  g d¢«      } t        j                  g d¢«      }t        j                  g d¢«      }d}t        j                  | |||«      \  }}}t        j                  |||| «      }t        j
                  dd«      }t        j                  ||«      }	dj                  «       }
t        j                  g d¢«      d	z  }t        j                  g d
¢«      d	z  }t        j                  g d¢«      d	z  }t        j                  ||||	«      \  }}}t        |	d¬«      \  }}|j                  ||d|z
  ¬«       |j                  ||d¬«       t        |||
«      D ]  \  }}}|j                  |||«       Œ dt        j                  d<   |j!                  dd«       |j#                  dd«       y )N)éÈ   rð   rð   r•   rW  r   ro   r   rÌ  r³  rð   rµ  r¶  é–   rf  rÄ   r)   rÍ  Tré   i8ÿÿÿrÓ  )r   r    r   r¨  r©  Ú_ortho_transformationr«  rÏ  r¹  rÊ  rn  r<  r&   rh  rC   r÷   r  r  )r¬  rc  r­  r�   r7  r8  r9  r®  ÚorthoMr°  rÐ  r´   rµ   r­   r½  r¾  r¿  rH   r'   rY   rZ   rR  s                         r-   Útest_proj_axes_cube_orthor×  Þ  s~  € ä
�‰’Ó!€AÜ
�‰’Ó€AÜ
�‰’Ó€AØ€DÜ×Ñ  1 a¨Ó.�G€A€qˆ!Ü×+Ñ+¨A¨q°!°QÓ7€EÜ×)Ñ)¨"¨aÓ0€FÜ
�‰ˆv�uÓ€Aà	×	$Ñ	$Ó	&€BÜ	�‰Ò0Ó	1°CÑ	7€BÜ	�‰Ò0Ó	1°CÑ	7€BÜ	�‰Ò0Ó	1°CÑ	7€Bä×)Ñ)¨"¨b°"°aÓ8�M€Cˆˆcä" 1¨Ô,�G€Cˆà‡J�Jˆs�C˜3˜s™7€JÔ#Ø‡G�GˆC�˜€GÔÜ�s˜C Ó$ò ‰ˆˆ1ˆaØ
�‰��1�aÕðð )-„C‡L�LÐ$Ñ%Ø‡K�K��cÔØ‡K�K��cÕr/   c                  ó®   — d\  } }d\  }}d\  }}t        j                  | |||||«      }t        j                  j	                  |g d¢g d¢g d¢g d¢g«       y )N)rð   éx   )rê   rð   )r  r  )r�   r   r   rY  )r   g{®Gázt?r   r*  )r   r   rD  ro   ©r   r   r   r   )r   Úworld_transformationr   rÞ   Úassert_allclose)rñ   rò   ró   rô   rõ   rö   r°  s          r-   Ú
test_worldrÝ  ü  s\   € Ø�J€Dˆ$Ø�J€Dˆ$Ø�J€Dˆ$Ü×#Ñ# D¨$°°d¸DÀ$ÓG€AÜ‡J�J×Ñ˜qÚ 0Ú 2Ú /Ú ,ð .õ/r/   c                  ó  — t        j                  ddi¬«      \  } }|j                  «       dk(  sJ ‚d|_        |j	                  ddd¬«       |j                  dd	gdd	gdd	g«       |j                  «       d
k(  sJ ‚|j                  d«       |j                  d«       |j                  ddgddgddg«       |j                  «       dk(  sJ ‚|j                  d¬«       |j                  ddgddgddg«       |j                  «       dk(  sJ ‚y )Nr5   r3   r6   Úlinearr   r  r  ©rY   rZ   r[   r   )r   r   r  çš™™™™™ñ?rÎ  g333333ó?FTr   )r   r   r  rá  r@  ç333333@rY   r  )r   r   r  rá  r@  râ  )	rC   r8   Ú
get_zscaleÚ_view_marginÚmarginsr<  Ú
get_w_limsÚ	autoscaleÚset_autoscalez_onrG   s     r-   Útest_autoscaleré    s  € Ü�l‰l |°TÐ&:Ô;�G€CˆØ�=‰=‹?˜hÒ&Ð&Ð&Ø€B„OØ‡J�J��b˜B€JÔØ‡G�GˆQ�ˆF�Q˜�F˜Q ˜FÔ#Ø�=‰=‹?Ð8Ò8Ð8Ð8Ø‡L�L�ÔØ×Ñ˜ÔØ‡G�GˆQ�ˆF�Q˜�F˜Q ˜FÔ#Ø�=‰=‹?Ð8Ò8Ð8Ð8Ø‡L�L�c€LÔØ‡G�GˆQ�ˆF�Q˜�F˜Q ˜FÔ#Ø�=‰=‹?Ð8Ò8Ð8Ñ8r/   rR   rà  ri   )TFNc                 óì  — t        j                  «       }|j                  d¬«      }t        j                  d«      }t        j
                  ddd«      }|j                  ||«       t        |d| › d�«      }t        |d| › d	�«      }t        |d
| › d	�«      }|€ |«       n|}	 |d|¬«       |	 |«       k(  sJ ‚|j                  j                  «        t        j                  j                   |«       d«       y )Nr3   r4   rð   r  r  Úget_autoscaleÚ_onÚset_ÚlimÚget_)r2  r*  )ri   )rC   rD   rE   r   r²   r2  rn  ÚgetattrrË   rÌ   rÞ   Úassert_array_equal)
rR   ri   rH   r'   rY   rZ   Úget_autoscale_onÚset_limÚget_limÚ	post_autos
             r-   Útest_unautoscalerö    sÛ   € ô �*‰*‹,€CØ	�‰ DˆÓ	)€Bä
�	‰	�#‹€AÜ
�‰�D˜#˜sÓ#€AØ‡J�Jˆq�!Ôä˜r ]°4°&¸Ð#<Ó=ÐÜ�b˜D   cÐ*Ó+€GÜ�b˜D   cÐ*Ó+€Gà&* lÑ Ô"¸€IáˆK˜dÕ#ØÑ(Ó*Ò*Ð*Ð*Ø‡J�J‡O�OÔÜ‡J�J×!Ñ!¡'£)¨[Õ9r/   c                 ól  — d}t        | |f|«      D ]¡  \  }}|j                  d¬«      }t        |«      dz   }t        j                  d||«      }t        j
                  |«      }t        j                  |«      }	|j                  |||	d«       |j                  ddd¬«       |j                  d	d
d«       Œ£ y )N)rê   r±  r3   r4   r   r   rÁ  )rY  rp   ©ÚxlimÚylimÚzlimrp   r˜   )
r&   rE   r$   r   r2  ÚonesrE  r<  rc   r    )
r<   r=   ÚxminsrH   rñ   r'   Únr´   rµ   r­   s
             r-   Útest_cullingrÿ  .  s£   € à€EÜ˜( GÐ,¨eÓ4ò 	 ‰	ˆˆTØ�_‰_¨ˆ_Ó-ˆÜ�‹I˜‰MˆÜ�[‰[˜˜D !Ó$ˆÜ�W‰W�Q‹ZˆÜ�X‰X�a‹[ˆØ
�‰��B˜˜CÔ à
�‰�G '°ˆÔ8Ø
�‰�Q˜˜QÕñ	 r/   c                  óT  — t        j                  «       } | j                  d¬«      }t        j                  t
        «      5  |j                  dd¬«       d d d «       t        j                  t
        «      5  |j                  dd¬«       d d d «       y # 1 sw Y   Œ?xY w# 1 sw Y   y xY w)Nr3   r4   Úperspr   ©Úfocal_lengthr™   r   )rC   rD   rE   rI  rJ  r*  rŸ   rG   s     r-   Útest_axes3d_focal_length_checksr  =  sŠ   € Ü
�*‰*‹,€CØ	�‰ DˆÓ	)€BÜ	�‰”zÓ	"ñ 2Ø
×Ñ˜¨qÐÔ1÷2ä	�‰”zÓ	"ñ 2Ø
×Ñ˜¨qÐÔ1÷2ð 2÷2ð 2ú÷2ð 2ús   Á BÁ5BÂBÂB'zaxes3d_focal_length.pngc                  ó²   — t        j                  ddddi¬«      \  } }|d   j                  dt        j                  ¬«       |d   j                  dd	¬«       y )
Nr   r   r5   r3   r6   r   r  r  ç333333Ã?)rC   r8   rŸ   r   Úinf)rH   re   s     r-   Útest_axes3d_focal_lengthr  F  sQ   € ô �|‰|˜A˜q¨l¸DÐ-AÔB�H€CˆØˆ�F×Ñ˜¬r¯v©vÐÔ6Øˆ�F×Ñ˜¨tÐÕ4r/   zaxes3d_ortho.pngc                  ór   — t        j                  «       } | j                  d¬«      }|j                  d«       y )Nr3   r4   r™   )rC   rD   rE   rŸ   rG   s     r-   Útest_axes3d_orthor
  N  s+   € ä
�*‰*‹,€CØ	�‰ DˆÓ	)€BØ×Ñ�WÕr/   zaxes3d_isometric.pngc                  ó  — ddl m} m} t        j                  t        ddd¬«      ¬«      \  }}d} | t        j                  t         ||||«      «      «      d	«      D ]J  \  }}t        ||z
  «      j                  «       |d
   |d   z
  k(  sŒ/ |j                  t        ||«      ddiŽ ŒL |j                  t        j                  t        j                  dt        j                   d	«      z  «      «      dd¬«       |j#                  d«       y )Nr   )r   r"   r3   r™   )rt   rt   rt   )r5   Ú	proj_typeÚ
box_aspectr6   )ro   r   r   r   rª   rÁ  r  r÷  rš   T)r   r   r"   rC   r8   r9   r   r    r!   r$   r#   r%   r&   r    ÚdegreesÚarctanrÚ  rF   )r   r"   rH   r'   r)   rg  Úes          r-   Útest_axes3d_isometricr  U  sØ   € ç/Ü�l‰l¤dØØØô'ô �G€Cˆð
 	€AÙœRŸX™X¤d©7°1°a¸Ó+;Ó&<Ó=¸qÓAò )‰ˆˆ1Üˆq�1‰u‹:�>‰>Ó˜q ™t a¨¡d™{Ó*ØˆB�I‰I”s˜1˜a“yÐ( CÓ(ð)ð ‡L�L”b—j‘j¤§¡¨2´·±¸³
©?Ó!;Ó<À3ÈQ€LÔOØ‡G�GˆD…Mr/   c           
      óD  — | j                  d¬«      }t        j                  ddd«      }t        j                  ddd«      }t        j                  ||«      \  }}||z   }|j	                  |||dd ddd¬	«       |j                  d
d
gddgd
dgdddd¬«       |j                  |j                  «       |j                  «       |j                  «       dz   d¬«       |j                  |j                  «       |j                  «       |j                  «       dz   d|j                  «       z  d|j                  «       z  d|j                  «       z  dz   dd¬«       |j                  |d   |d   |d   dz   dd¬«       |j                  dd
ddd¬«       |j                  ddd¬«       |j                  d¬«      }|d
k  }||   j                  dd«      }||   j                  dd«      }||   j                  dd«      }|j	                  |||dd ddd¬	«       |j                  d
d
gddgd
dgdddd¬«       |j                  |j                  «       |j                  «       |j                  «       dz   d¬«       |j                  |j                  «       |j                  «       |j                  «       dz   d|j                  «       z  d|j                  «       z  d|j                  «       z  dz   dd¬«       |j                  |d   |d   |d   dz   dd¬«       |j                  ddd¬«       y )Nr3   r4   r   r   r�   r~  r¿  T)rr  r­  rZ  r[  Ú
axlim_clipr*  ç      ø?rÁ  rn   rp   )r°   r\  Úzorderr  )r  r   )Úarrow_length_ratior  r  )r°   r  rá  rt   Útest)r   r*  ©r   r   )r   rp   rø  rÙ   F)rE   r   r2  rÈ   r_  r<  rn  rÉ   r5  rh  rc   r¤  )	r<   r=   r'   rY   rZ   rû   rü   rý   Úidxs	            r-   Útest_axlim_clipr  e  så  € ð 
×	Ñ	¨Ð	Ó	.€BÜ
�‰�A�q˜"Ó€AÜ
�‰�A�q˜"Ó€AÜ�;‰;�q˜!Ó�D€A€qØ	ˆA‰€AØ‡O�O�A�q˜! t¸Ø b°Tð ô ;ð ‡G�GˆS�#ˆJ˜˜A˜  c 
Ø ¨1¸ð ô ?à‡J�Jˆq�w‰w‹y˜!Ÿ'™'›) Q§W¡W£Y°¡]¸t€JÔDØ‡I�Iˆa�g‰g‹i˜Ÿ™› A§G¡G£I°¡MØ�—‘“	‰k˜1˜QŸW™W›Y™;¨¨!¯'©'«)©°a©Ø!"¨tð ô 5ð ‡G�GˆAˆa‰D�!�A‘$˜˜!™˜q™¨¸€GÔ>Ø‡G�GˆC��a˜¨D€GÔ1Ø‡F�F�˜v¨F€FÔ3ð 
×	Ñ	¨Ð	Ó	-€BØ�‰8€CØ	ˆ#‰�‰�r˜1Ó€AØ	ˆ#‰�‰�r˜1Ó€AØ	ˆ#‰�‰�r˜1Ó€AØ‡O�O�A�q˜! t¸Ø b°Uð ô <à‡G�GˆS�#ˆJ˜˜A˜  c 
Ø ¨1¸ð ô @à‡J�Jˆq�w‰w‹y˜!Ÿ'™'›) Q§W¡W£Y°¡]¸u€JÔEØ‡I�Iˆa�g‰g‹i˜Ÿ™› A§G¡G£I°¡MØ�—‘“	‰k˜1˜QŸW™W›Y™;¨¨!¯'©'«)©°a©Ø!"¨uð ô 6ð ‡G�GˆAˆa‰D�!�A‘$˜˜!™˜q™¨¸€GÔ?Ø‡F�F�˜v¨F€FÕ3r/   Úvalue)ÚsetterÚside))r  Úleft)r  Úright)r  Úbottom)r  Útop)r`  r   )r`  r!  c                 óØ   — ||i}t        j                  «       }|j                  d¬«      }t        j                  t
        «      5   t        || «      di |¤Ž d d d «       y # 1 sw Y   y xY w)Nr3   r4   © )rC   rD   rE   rI  rJ  r*  rð  )r  r  r  ÚlimitrH   Úobjs         r-   Útest_invalid_axes_limitsr&  Œ  s]   € ð �5ˆM€EÜ
�*‰*‹,€CØ
�/‰/ Tˆ/Ó
*€CÜ	�‰”zÓ	"ñ &ØŒ��VÓÑ%˜uÒ%÷&÷ &ñ &ús   ÁA Á A)c                   óâ   — e Zd Z edgd¬«      d„ «       Z edgd¬«      d„ «       Z edgd¬«      d„ «       Z ed	gd¬«      d
„ «       Z edgd¬«      d„ «       Z edgddd¬«      d„ «       Z	d„ Z
y)Ú
TestVoxelszvoxels-simple.pngr?   r@   c                 ó¤   — t        j                  ddi¬«      \  }}t        j                  d«      \  }}}||k(  ||k(  z  }|j	                  |«       y )Nr5   r3   r6   )rp   rt   rn   )rC   r8   r   ÚindicesÚvoxels)ÚselfrH   r'   rY   rZ   r[   r+  s          r-   Útest_simplezTestVoxels.test_simplež  sK   € ä—,‘,¨<¸Ð*>Ô?‰ˆˆRä—*‘*˜YÓ'‰ˆˆ1ˆaØ�q‘&˜Q !™VÑ$ˆØ
�	‰	�&Õr/   zvoxels-edge-style.pngc                 ó$  — t        j                  ddi¬«      \  }}t        j                  d«      \  }}}|dz
  dz  |dz
  dz  z   |dz
  dz  z   dk  }|j	                  |dd	¬
«      }|t        |j                  «       «         j                  d«       y )Nr5   r3   r6   )rp   rp   rt   r   r  g]�Âõ(\@rn   r~  )ry  rs  r  )rC   r8   r   r*  r+  r  Úkeysr…  )r,  rH   r'   rY   rZ   r[   r+  r8  s           r-   Útest_edge_stylezTestVoxels.test_edge_style¦  sŒ   € ä—,‘,¨<¸Ð*>Ô?‰ˆˆRä—*‘*˜YÓ'‰ˆˆ1ˆaØ�q‘5˜1‘*  A¡¨™zÑ)¨Q¨s©U°Q©JÑ6¸&Ñ@ˆØ�I‰I�f¨°dˆIÓ;ˆð 	
Œ#ˆa�f‰f‹h‹-Ñ×&Ñ& tÕ,r/   zvoxels-named-colors.pngc                 óD  — t        j                  ddi¬«      \  }}t        j                  d«      \  }}}||k(  ||k(  z  }|||z  |z  dk   z  }t        j                  ddt        j
                  ¬«      }d||d	k  |d	k  z  <   d
|||z   dk  <   |j                  ||¬«       y)z5Test with colors set to a 3D object array of strings.r5   r3   r6   ©r©   r©   r©   r   rŽ  r�  z0.25rp   Úcyanr©   rè  N)rC   r8   r   r*  rŠ  Úobject_r+  ©r,  rH   r'   rY   rZ   r[   r+  r   s           r-   Útest_named_colorszTestVoxels.test_named_colors±  s©   € ô —,‘,¨<¸Ð*>Ô?‰ˆˆRä—*‘*˜\Ó*‰ˆˆ1ˆaØ�q‘&˜Q !™VÑ$ˆØ˜A ™E A™I¨™MÐ*Ñ*ˆÜ—‘˜ t´2·:±:Ô>ˆØ$*ˆ��A‘˜!˜a™%Ñ Ñ!Ø%ˆ��A‘˜‰|ÑØ
�	‰	�& Vˆ	Õ,r/   zvoxels-rgb-data.pngc                 ó  — t        j                  ddi¬«      \  }}t        j                  d«      \  }}}||k(  ||k(  z  }t        j                  d«      }|dz  |d<   |dz  |d<   |dz  |d	<   |j                  ||¬
«       y)z5Test with colors set to a 4d float array of rgb data.r5   r3   r6   r2  )r©   r©   r©   rn   r“  ©.r   ©.r   ©.r   rè  N)rC   r8   r   r*  rE  r+  r5  s           r-   Útest_rgb_datazTestVoxels.test_rgb_data¾  s†   € ô —,‘,¨<¸Ð*>Ô?‰ˆˆRä—*‘*˜\Ó*‰ˆˆ1ˆaØ�q‘&˜Q !™VÑ$ˆÜ—‘˜/Ó*ˆØ˜Q™ˆˆv‰Ø˜Q™ˆˆv‰Ø˜Q™ˆˆv‰Ø
�	‰	�& Vˆ	Õ,r/   zvoxels-alpha.pngc                 óÈ  — t        j                  ddi¬«      \  }}t        j                  d«      \  }}}||k(  }t        j                  ||z
  «      dk  }||z  }t        j
                  d«      }	g d¢|	|<   g d¢|	|<   |j                  ||	¬	«      }
t        |
«      t        u sJ ‚|
j                  «       D ]-  \  }}||   sJ d
«       ‚t        |t        j                  «      rŒ-J ‚ y )Nr5   r3   r6   r2  r   )r©   r©   r©   rt   )r   r   r   r*  )r   r   r   r*  rè  zfaces returned for absent voxel)rC   r8   r   r*  r$   rE  r+  Útyper9   Úitemsrj  r   rZ  )r,  rH   r'   rY   rZ   r[   Úv1Úv2r+  r   r8  Úcoordr[  s                r-   Ú
test_alphazTestVoxels.test_alphaË  sØ   € ä—,‘,¨<¸Ð*>Ô?‰ˆˆRä—*‘*˜\Ó*‰ˆˆ1ˆaØ�!‰VˆÜ�V‰V�A˜‘E‹]˜QÑˆØ�b‘ˆÜ—‘˜/Ó*ˆÚ#ˆˆr‰
Ú#ˆˆr‰
Ø�I‰I�f¨ˆIÓ0ˆä�A‹wœ$‰ÐˆØŸ7™7›9ò 	<‰KˆE�4Ø˜%’=ÐCÐ"CÓC�=Ü˜d¤E×$:Ñ$:Õ;Ð;Ð;ñ	<r/   zvoxels-xyz.pngç{®Gáz„?F)r�   r   r   c                 óª  — t        j                  ddi¬«      \  }}d„ }t        j                  d«      dz  \  }}} ||«      } ||«      } ||«      }	|dz
  dz  |dz
  dz  z   |	dz
  dz  z   d	k  }
t        j                  |
j
                  d
z   «      }||d<   ||d<   |	|d<   |j                  ||||
|t        j                  d|z  dz
  dd«      d¬«       y )Nr5   r3   r6   c                 óÖ   — d}t        | j                  «      D ]N  }| |t        j                  d d z      | |t        j                  dd  z      z   dz  } |t        j                  d d  z  }ŒP | S )Nr#  ro   r   rV  )rÜ   Úndimr   Ú	index_exp)rY   Úslr~   s      r-   Ú	midpointsz&TestVoxels.test_xyz.<locals>.midpointsâ  sv   € ØˆBÜ˜1Ÿ6™6“]ò &�Ø�rœBŸL™L¨¨"Ð-Ñ-Ñ.Ø�rœBŸL™L¨¨Ð,Ñ,Ñ-ñ.Ø14ñ5�à”b—l‘l¡1�oÑ%‘ð&ð ˆHr/   )é   rJ  rJ  g      0@r*  r   r  )rn   r8  r9  r:  r   r   )r¬  r­  r\  )rC   r8   r   r*  rE  r¥  r+  r  )r,  rH   r'   rI  r)   r¥   r¦   ÚrcÚgcÚbcÚspherer   s               r-   Útest_xyzzTestVoxels.test_xyzÝ  sñ   € ô —,‘,¨<¸Ð*>Ô?‰ˆˆRò	ô —*‘*˜\Ó*¨TÑ1‰ˆˆ1ˆaÙ�q‹\ˆÙ�q‹\ˆÙ�q‹\ˆð �s‘(˜Q‘ " s¡(¨Q¡Ñ.°"°s±(¸Q±Ñ>ÀÑGˆô —‘˜&Ÿ,™,¨Ñ-Ó.ˆØˆˆv‰Øˆˆv‰Øˆˆv‰ð 	�	‰	�!�Q˜˜6Ø#ÜŸW™W Q v¡X°¡^°Q¸Ó:Øð 	õ 	!r/   c                 óD  — t        j                  d«      \  }}}t        j                  d«      }t        j                  ddi¬«      \  }}t        «       t        d¬«      fD ]V  } |j                  |fi |¤Ž  |j                  dd|i|¤Ž  |j                  ||||fi |¤Ž  |j                  |||fd|i|¤Ž ŒX t        j                  t        d	¬
«      5  |j                  |||||¬«       d d d «       t        j                  t        d	¬
«      5  |j                  ||«       d d d «       t        j                  t        d¬
«      5 }|j                  ||||¬«       d d d «       j                  j                  dk(  sJ ‚y # 1 sw Y   Œ”xY w# 1 sw Y   ŒjxY w# 1 sw Y   Œ=xY w)Nrs   )r   rn   rt   r5   r3   r6   rÁ  )rs  Úfilledr+  rG  )rQ  zkeyword argument 'x')rQ  rY   rZ   r[   rY   r#  )r   r*  rü  rC   r8   r9   r+  rI  rJ  Ú	TypeErrorÚAttributeErrorr  Úname)	r,  rY   rZ   r[   rQ  rH   r'   ÚkwÚ	exec_infos	            r-   Útest_calling_conventionsz#TestVoxels.test_calling_conventionsÿ  sw  € Ü—*‘*˜YÓ'‰ˆˆ1ˆaÜ—‘˜Ó#ˆä—,‘,¨<¸Ð*>Ô?‰ˆˆRô “6œ4¨#Ô.Ð/ò 	4ˆBØˆB�I‰I�fÑ# Ò#ØˆB�I‰IÑ*˜VÐ* rÒ*ØˆB�I‰I�a˜˜A˜vÑ,¨Ò,ØˆB�I‰I�a˜˜AÑ3 fÐ3°Ó3ð		4ô �]‰]œ9¨HÔ5ñ 	6Ø�I‰I�a˜˜A˜v¨fˆIÔ5÷	6ô �]‰]œ9¨HÔ5ñ 	Ø�I‰I�a˜ŒO÷	ô �]‰]œ>Ð1GÔHð 	4ÈIØ�I‰I˜V q¨A°ˆIÔ3÷	4à�‰×#Ñ# sÒ*Ð*Ñ*÷	6ð 	6ú÷	ð 	ú÷	4ð 	4ús$   ÃE>ÄF
ÅFÅ>FÆ
FÆFN)Ú__name__Ú
__module__Ú__qualname__Úmpl3d_image_comparisonr-  r0  r6  r;  rB  rO  rW  r#  r/   r-   r(  r(  �  sÎ   „ ÙÐ0Ð1¸ÔAñó Bðñ Ð4Ð5¸WÔEñ-ó Fð-ñ Ð6Ð7¸wÔGñ
-ó Hð
-ñ Ð2Ð3¸7ÔCñ
-ó Dð
-ñ Ð/Ð0¸Ô@ñ<ó Að<ñ" Ð-Ð.Ø $°%¸wôHñ!óHð!ó@+r/   r(  c                  ó  — ddgddgddg}}} ddgd	d
gddg}}}t        j                  «       }|j                  d¬«      }|j                  | ||«      }|d   }	t        j
                  j                  | ||f|	j                  «       «       |	j                  |||«       t        j
                  j                  |||f|	j                  «       «       |	j                  | «       |	j                  |«       |	j                  |d¬«       t        j
                  j                  | ||f|	j                  «       «       |	j                  dd¬«       t        j
                  j                  | |t	        j                  |«      f|	j                  «       «       y )Nr   r   r   rn   rt   rp   rÙ   r  r  r“  r©   r�   r3   r4   r[   r¼  )rC   rD   rE   r<  r   rÞ   rñ  Úget_data_3drM  Ú	set_xdataÚ	set_ydataÚset_3d_propertiesr¾   )
rY   rZ   r[   rÈ  rÉ  rÊ  rH   r'   rŒ  rQ   s
             r-   Útest_line3d_set_get_data_3dra    sP  € Ø�!ˆf�q˜!�f˜q !˜fˆ!€q€AØ�Q�˜!˜Q˜ " b ˆBˆ€BÜ
�*‰*‹,€CØ	�‰ DˆÓ	)€BØ�G‰G�A�q˜!Ó€EØ�‰8€DÜ‡J�J×!Ñ! 1 a¨ )¨T×-=Ñ-=Ó-?Ô@Ø×Ñ�R˜˜RÔ Ü‡J�J×!Ñ! 2 r¨2 ,°×0@Ñ0@Ó0BÔCØ‡N�N�1ÔØ‡N�N�1ÔØ×Ñ˜a cÐÔ*Ü‡J�J×!Ñ! 1 a¨ )¨T×-=Ñ-=Ó-?Ô@Ø×Ñ˜a cÐÔ*Ü‡J�J×!Ñ! 1 a¬¯©°qÓ)9Ð":¸D×<LÑ<LÓ<NÕOr/   c                 óð   — | j                  d¬«      }|j                  g d¢g d¢g d¢«       |j                  «        |j                  d¬«      }|j                  «        |j                  g d¢g d¢g d¢«       y )Nr3   r4   )r   r   r©   r©   )r   r©   r©   r©   )r   r   r   r©   )rE   r<  Úinvert_yaxisr;   s      r-   Útest_invertedrd  +  s^   € ð 
×	Ñ	¨Ð	Ó	.€BØ‡G�GŠNšOª]Ô;Ø‡O�OÔà	×	Ñ	¨Ð	Ó	-€BØ‡O�OÔØ‡G�GŠNšOª]Õ;r/   c                  ó
  — t        j                  ddi¬«      \  } }|j                  «       rJ ‚|j                  «       rJ ‚|j	                  «       rJ ‚|j                  dd«       |j                  dd«       |j                  dd«       |j                  «       sJ ‚|j                  «       sJ ‚|j	                  «       sJ ‚|j                  «        |j                  «       rJ ‚|j                  «       rJ ‚|j	                  «       rJ ‚y )Nr5   r3   r6   r   r   )	rC   r8   Úxaxis_invertedÚyaxis_invertedÚzaxis_invertedr  r  r  r�  rG   s     r-   Útest_inverted_clari  7  só   € ô �l‰l |°TÐ&:Ô;�G€Cˆà× Ñ Ô"Ð"Ð"Ø× Ñ Ô"Ð"Ð"Ø× Ñ Ô"Ð"Ð"Ø‡K�K��1ÔØ‡K�K��1ÔØ‡K�K��1ÔØ×ÑÔÐÐØ×ÑÔÐÐØ×ÑÔÐÐØ‡F�F„HØ× Ñ Ô"Ð"Ð"Ø× Ñ Ô"Ð"Ð"Ø× Ñ Ô"Ð"Ð"Ð"r/   c                  óD  — t        j                  «       } t        | «      }|j                  dd¬«       |j                  dd¬«       |j                  dd¬«       | j                  j                  «        |j                  j                  «       D ]  }|j                  j                  dk(  rŒJ ‚ |j                  j                  «       D ]  }|j                  j                  dk(  rŒJ ‚ |j                  j                  «       D ]  }|j                  j                  dk(  rŒJ ‚ y )NrY   r¹   )rR   r   rZ   r[   )rC   rD   r   Útick_paramsrË   rÌ   rN   r—  Ú	tick1lineÚ_colorrO   rP   )rH   r'   rš  s      r-   Útest_ax3d_tickcolourrn  K  sð   € Ü
�*‰*‹,€CÜ	�‹€Bà‡N�N˜ E€NÔ*Ø‡N�N˜ E€NÔ*Ø‡N�N˜ E€NÔ*Ø‡J�J‡O�OÔà—‘×(Ñ(Ó*ò .ˆØ�~‰~×$Ñ$¨Ó-Ð-Ð-ð.à—‘×(Ñ(Ó*ò .ˆØ�~‰~×$Ñ$¨Ó-Ð-Ð-ð.à—‘×(Ñ(Ó*ò .ˆØ�~‰~×$Ñ$¨Ó-Ð-Ð-ñ.r/   c                 ó\  — | j                  ddddi¬«      }|j                  D ]  }|j                  dd«       Œ t        |g d¢«      D ]©  \  }}|d	   j	                  |d
¬«       |d   j	                  |d¬«       |d   j	                  |t
        j                  d    ¬«       |d   j	                  |t
        j                  d    ¬«       |d   j	                  |t
        j                  d    ¬«       Œ« d„ }|j                  ddddi¬«      }|j                  D ]  }|j                  dd«       Œ t        |dgdgdgg d¢g«      D ]å  \  }} ||d	   |«      D ]  }|j                  d«       Œ  ||d   |«      D ]  }|j                  d«       Œ  ||d   |«      D ]%  }|j                  t
        j                  d    «       Œ'  ||d   |«      D ]%  }|j                  t
        j                  d    «       Œ'  ||d   |«      D ]%  }|j                  t
        j                  d    «       Œ' Œç y )Nrt   rp   r5   r3   r6   g    ÐcAg   @ÑcA)rY   rZ   r[   rW   r   Úplain)rR   r   r   )r  r   )rR   Ú	scilimitsr   zaxes.formatter.useoffset)rR   Ú	useOffsetrn   zaxes.formatter.use_locale)rR   Ú	useLocalezaxes.formatter.use_mathtext)rR   ÚuseMathTextc                 ó\   — |D �cg c]  }t        | |«      j                  «       ‘Œ c}S c c}w r–  )rð  Úget_major_formatter)r'   ÚnamesrT  s      r-   Úget_formattersz-test_ticklabel_format.<locals>.get_formattersn  s&   € ØDIÖJ¸D”˜˜DÓ!×5Ñ5Õ7ÒJÐJùÒJs   …!)rN   rO   rP   )rN   rO   rP   F)r8   rž   r  r&   Úticklabel_formatr  r÷   Úset_scientificÚset_powerlimitsÚset_useOffsetÚset_useLocaleÚset_useMathText)	r<   r=   re   r'   ÚrowrT  rx  rw  Úfmts	            r-   Útest_ticklabel_formatr�  \  s‚  € à
×
Ñ
˜A˜q¨l¸DÐ-AÐ
Ó
B€CØ�h‰hò #ˆØ
�‰�C˜Õ"ð#ä˜Ò5Ó6ò I‰	ˆˆTØˆA‰×ÑØ˜Wð 	 ô 	&àˆA‰×ÑØ ð 	 ô 	*àˆA‰×ÑØ¤S§\¡\Ð2LÑ%MÐ!Mð 	 ô 	OàˆA‰×ÑØ¤S§\¡\Ð2MÑ%NÐ!Nð 	 ô 	PàˆA‰×ÑØÜŸL™LÐ)FÑGÐGð 	 õ 	IðIòKð ×
Ñ
˜1˜a¨\¸4Ð,@Ð
Ó
A€CØ�h‰hò #ˆØ
�‰�C˜Õ"ð#äØ�7�)˜g˜Y¨¨	Ò3NÐOóò A‰
ˆˆUñ " # a¡&¨%Ó0ò 	&ˆCØ×Ñ˜uÕ%ð	&á! # a¡&¨%Ó0ò 	)ˆCØ×Ñ Õ(ð	)á! # a¡&¨%Ó0ò 	LˆCØ×Ñ¤#§,¡,Ð/IÑ"JÐJÕKð	Lá! # a¡&¨%Ó0ò 	MˆCØ×Ñ¤#§,¡,Ð/JÑ"KÐKÕLð	Má! # a¡&¨%Ó0ò 	AˆCØ×ÑÜ—L‘LÐ!>Ñ?Ð?õAñ	AñAr/   c                 óp  — d}t        j                  t        j                  ddd«      t        j                  ddd«      t        j                  ddd«      «      \  }}}t        j                  |«      x}x}}t	        || fd«      D ]0  \  }	}
|	j                  d¬«      }|j                  |||||||
|¬	«       Œ2 y )
Nr0  gš™™™™™é¿r   r  r¬   )r   r  r3   r4   )râ   r3  )r   rÈ   r²   Ú	ones_liker&   rE   r5  )r<   r=   r3  rY   rZ   r[   r7  r8  r9  rH   râ   r'   s               r-   Útest_quiver3D_smoker„  „  s±   € à€Eä�k‰kÜ
�	‰	�$˜˜3ÓÜ
�	‰	�$˜˜3ÓÜ
�	‰	�$˜˜3Óó�G€A€qˆ!ô
 —‘˜Q“Ð€AÐˆˆAä˜G XÐ.°Ó9ò @‰ˆˆVØ�_‰_¨ˆ_Ó-ˆØ
�	‰	�!�Q˜˜1˜a ¨6¸ˆ	Õ?ñ@r/   zminor_ticks.pngc                  ó<  — t        j                  «       j                  d¬«      } | j                  dgd¬«       | j	                  dgd¬«       | j                  dgd¬«       | j                  dgd¬«       | j                  d	gd¬«       | j                  d
gd¬«       y )Nr3   r4   r  T)ÚminorÚquarterg…ëQ¸Õ?Úthirdr*  Úhalf)	rC   rD   rE   rK   Úset_xticklabelsrL   Úset_yticklabelsrM   Úset_zticklabels)r'   s    r-   Útest_minor_ticksr�  ”  s�   € ä	�‰‹×	!Ñ	!¨TÐ	!Ó	2€BØ‡M�M�4�& €MÔ%Ø×Ñ˜	�{¨$ÐÔ/Ø‡M�M�4�& €MÔ%Ø×Ñ˜�y¨ÐÔ-Ø‡M�M�4�& €MÔ%Ø×Ñ˜�x tÐÕ,r/   zerrorbar3d_errorevery.pngc            	      óò  — t        j                  ddt         j                  z  dz   d«      } t        j                  | «      t        j                  d| z  «      t        j                  d| z  «      }}}t        j                  «       }|j                  d¬«      }d	}t        j                  | j                  «      }||z  dk(  ||z  dz  dk(  z  }||z  dk(  ||z  dz  dk(  z  }	|j                  |||d
||	|¬«       y)z0Tests errorevery functionality for 3D errorbars.r   r   r  rC  rn   rp   r3   r4   é   r  )ÚzuplimsÚzlolimsÚ
erroreveryN)
r   r²   r9  r:  r;  rC   rD   rE   r£  Úerrorbar)
rR  rY   rZ   r[   rH   r'   Úestepr~   r�  r‘  s
             r-   Útest_errorbar3d_erroreveryr•     sß   € ô 	�	‰	�!�Q”r—u‘u‘W˜R‘Z Ó&€AÜ�f‰f�Q‹iœŸ™  !¡›¤b§f¡f¨Q¨q©S£kˆ!€q€Aä
�*‰*‹,€CØ	�‰ DˆÓ	)€Bà€EÜ
�	‰	�!—&‘&Ó€AØ�5‰y˜A‰~ ! u¡*¨q¡.°AÑ"5Ñ6€GØ�5‰y˜A‰~ ! u¡*¨q¡.°AÑ"5Ñ6€Gà‡K�K��1�a˜ g°wØ ð õ "r/   zerrorbar3d.pngc                  óÂ   — t        j                  «       } | j                  d¬«      }g d¢}g d¢}|j                  ||||||dg d¢g d¢dd	d
¬«       |j	                  «        y)z9Tests limits, color styling, and legend for 3D errorbars.r3   r4   )r   r   rn   rt   rp   )r*  r*  r*  r*  r*  rn   )FTFTT)TFFTFTÚpurplezError lines)rY   rZ   r[   ÚxerrÚyerrÚzerrÚcapsizer�  r‘  ÚyuplimsÚecolorr‡   N)rC   rD   rE   r“  Úlegend)rH   r'   Údr  s       r-   Útest_errorbar3dr   ²  sa   € ô �*‰*‹,€CØ	�‰ DˆÓ	)€Bâ€AÚ€AØ‡K�K�!�q˜A A¨A°A¸qÚ8Ú9ØØ }ð	 ô 6ð
 ‡I�I…Kr/   z
stem3d.pngg;ßO�—n‚?c            
      ó„  — dt         j                  d<   t        j                  ddddddi¬«      \  } }t        j                  d	dt        j
                  z  «      }t        j                  |t        j
                  dz  z
  «      }t        j                  |t        j
                  dz  z
  «      }|}t        |d	   g d
¢«      D ].  \  }}|j                  ||||¬«       |j                  d|› �«       Œ0 t        j                  t        j
                   dz  t        j
                  dz  d«      }t        j                  |«      }t        j                  |«      }t        |d   g d
¢«      D ]Y  \  }}|j                  |||ddd|¬«      \  }}	}
|j                  d|› �«       |j                  dd¬«       |
j                  d«       Œ[ y )NTré   r   rn   )r  rÙ   r5   r3   ©r‚   Úconstrained_layoutr7   r   rà  )Úorientationzorientation=r¨   r   zC4-.ÚC1Dr  )ÚlinefmtÚ	markerfmtÚbasefmtr¤  rX   )rX  Úmarkeredgewidth)rC   r÷   r8   r   r2  r9  r;  r:  r&   Ústemry   rƒ  rc   Úset_linewidth)rH   re   r=  rY   rZ   r[   r'   r®   Ú
markerlineÚ	stemlinesÚbaselines              r-   Útest_stem3dr¯  Ã  sˆ  € à(,„C‡L�LÐ$Ñ%Ü�|‰|˜A˜q¨&Ø/3Ø(4°dÐ';ô=�H€Cˆô �K‰K˜˜1œRŸU™U™7Ó#€EÜ
�‰ˆu”r—u‘u˜Q‘w‰Ó€AÜ
�‰ˆu”r—u‘u˜Q‘w‰Ó€AØ€Aä˜˜A™¢Ó0ò ,‰ˆˆDØ
�‰��1�a TˆÔ*Ø
�‰�| D 6Ð*Õ+ð,ô 	�‰”R—U‘U�F˜1‘HœbŸe™e A™g rÓ*€AÜ
�‰�Q‹€AÜ
�‰ˆq‹	€Aä˜˜A™¢Ó0ò "‰ˆˆDØ*,¯'©'Øˆq�!Ø e°TØð +2ó +Ñ'ˆ
�I˜xð 	�‰�| D 6Ð*Ô+Ø�‰ v¸qˆÔAØ×Ñ˜qÕ!ñ"r/   zequal_box_aspect.pngc                  óŽ  — ddl m} m} t        j                  «       }|j                  d¬«      }t        j                  ddt        j                  z  d«      }t        j                  dt        j                  d«      }t        j                  t        j                  |«      t        j                  |«      «      }t        j                  t        j                  |«      t        j                  |«      «      }t        j                  t        j                  |«      t        j                  |«      «      }|j                  |||«       ddg}	 |t        j                  t         | |	|	|	«      «      «      d«      D ]Y  \  }
}t        j                   t        j"                  |
|z
  «      «      |	d   |	d   z
  k(  sŒ> |j$                  t'        |
|«      d	d
iŽ Œ[ t        j(                  |j+                  «       |j-                  «       |j/                  «       g«      }t1        |d   «      t3        |d   «      g}|j5                  |«       |j7                  |«       |j9                  |«       |j;                  d«       |j=                  d«       t?        j@                  tB        d¬«      5  |j=                  dd¬«       d d d «       y # 1 sw Y   y xY w)Nr   )r"   r   r3   r4   r   rð   ro   r   r°   r¦   Úoffrr   zArgument zoom =rG  )Úzoom)"r   r"   r   rC   rD   rE   r   r2  r9  Úouterr;  r:  rƒ  r_  r    r!   r#   r$   r%   r&   rx  r‰  rŠ  r‹  r  r  r  r  r`  rR   rz   rI  rJ  r*  )r"   r   rH   r'   r7  r8  rY   rZ   r[   r)   rg  r  ÚxyzlimÚXYZlims                 r-   Útest_equal_box_aspectr¶  á  sþ  € ç/ä
�*‰*‹,€CØ	�‰ DˆÓ	)€Bô 	�‰�A�qœ2Ÿ5™5‘y #Ó&€AÜ
�‰�A”r—u‘u˜cÓ"€AÜ
�‰”—‘˜“œBŸF™F 1›IÓ&€AÜ
�‰”—‘˜“œBŸF™F 1›IÓ&€AÜ
�‰”—‘˜a“¤"§&¡&¨£)Ó,€Að ‡O�O�A�q˜!Ôð 
ˆQˆ€AÙœRŸX™X¤d©7°1°a¸Ó+;Ó&<Ó=¸qÓAò -‰ˆˆ1Ü�6‰6”"—&‘&˜˜Q™“-Ó  A a¡D¨1¨Q©4¡KÓ/ØˆB�I‰I”s˜1˜a“yÐ,¨Ó,ð-ô
 �_‰_Ø	�‰‹˜"Ÿ-™-›/¨2¯=©=«?Ð;ó€Fô �&˜‘)‹nœc &¨¡)›nÐ-€FØ‡M�M�&ÔØ‡M�M�&ÔØ‡M�M�&ÔØ‡G�GˆE„NØ×Ñ�iÔ ä	�‰”zÐ):Ô	;ñ .Ø
×Ñ˜)¨"ÐÔ-÷.÷ .ñ .ús   ÊJ;Ê;Kc                  óä  — d} t        j                  d| ddddi¬«      \  }}|D ]l  }|j                  t        j                  j                  d«      t        j                  j                  d«      t        j                  j                  d«      «      }Œn t        j                  |d	¬
«      }|j                  j                  «        |j                  j                  «       j                  d   dk  sJ ‚y )Nr   r   )rt   rp   Tr5   r3   r¢  rp   Ú
horizontal)r'   r¤  r  )rC   r8   r  r   r+  r¥  rÓ  rË   rÌ   r'   Úget_positionÚextents)Ú	num_plotsrH   re   r'   Úp_triÚcbars         r-   Útest_colorbar_posr¾    s¿   € Ø€IÜ�|‰|˜A˜y°&Ø/3Ø(4°dÐ';ô=�H€Cˆð ò 4ˆØ—‘¤§	¡	§¡°Ó 2´B·I±I·O±OÀAÓ4FÜ "§	¡	§¡°Ó 2ó4‰ð4ô �<‰<˜ #°<Ô@€Dà‡J�J‡O�OÔà�7‰7×ÑÓ!×)Ñ)¨!Ñ,¨sÒ2Ð2Ñ2r/   c                  óV  — t        j                  «       } | j                  d¬«      }|j                  dd«       |j	                  «       rJ ‚|j                  «       dk(  sJ ‚|j                  «       dk(  sJ ‚|j                  d«       |j	                  «       rJ ‚|j                  «       dk(  sJ ‚|j                  «       dk(  sJ ‚|j                  «        |j	                  «       sJ ‚|j                  «       dk(  sJ ‚|j                  «       dk(  sJ ‚|j                  d¬«       |j	                  «       sJ ‚|j                  «       d	k(  sJ ‚|j                  «       dk(  sJ ‚|j                  d
¬«       |j	                  «       sJ ‚|j                  «       dk(  sJ ‚|j                  «       dk(  sJ ‚y )Nr3   r4   r   r   r  )r   r   )r   r   )rU   )r   r   r   )rV   )r   r   ©r   r   )	rC   rD   rE   r  rh  Úget_zlimÚ
get_zboundÚ
set_zboundÚinvert_zaxisrG   s     r-   Útest_inverted_zaxisrÅ    s‡  € Ü
�*‰*‹,€CØ	�‰ DˆÓ	)€BØ‡K�K��1ÔØ× Ñ Ô"Ð"Ð"Ø�;‰;‹=˜FÒ"Ð"Ð"Ø�=‰=‹?˜fÒ$Ð$Ð$ð ‡M�M�&ÔØ× Ñ Ô"Ð"Ð"Ø�;‰;‹=˜FÒ"Ð"Ð"Ø�=‰=‹?˜fÒ$Ð$Ð$ð ‡O�OÔØ×ÑÔÐÐØ�;‰;‹=˜FÒ"Ð"Ð"Ø�=‰=‹?˜fÒ$Ð$Ð$ð ‡M�M˜€MÔØ×ÑÔÐÐØ�;‰;‹=˜FÒ"Ð"Ð"Ø�=‰=‹?˜fÒ$Ð$Ð$ð ‡M�M˜€MÔØ×ÑÔÐÐØ�;‰;‹=˜FÒ"Ð"Ð"Ø�=‰=‹?˜fÒ$Ð$Ñ$r/   c                  óf  — t        j                  «       } | j                  d¬«      }t        j                  |j                  «       d«      sJ ‚|j                  d¬«       t        j                  |j                  «       d«      sJ ‚|j                  d¬«       |j                  «       d	k(  sJ ‚t        j                  t        d
¬«      5  |j                  dd¬«       d d d «       t        j                  t        d¬«      5  |j                  dd¬«       d d d «       y # 1 sw Y   ŒAxY w# 1 sw Y   y xY w)Nr3   r4   r�  r   )rö   )r�  r   r   )rõ   rÀ  z"Cannot pass both 'lower' and 'min'rG  r   )r   rõ   z"Cannot pass both 'upper' and 'max')r!  rö   )
rC   rD   rE   r   rˆ  rÁ  r  rI  rJ  rR  rG   s     r-   Útest_set_zlimrÇ  8  sø   € Ü
�*‰*‹,€CØ	�‰ DˆÓ	)€BÜ�;‰;�r—{‘{“} nÔ5Ð5Ð5Ø‡K�K�Q€KÔÜ�;‰;�r—{‘{“} jÔ1Ð1Ð1Ø‡K�K�Q€KÔØ�;‰;‹=˜FÒ"Ð"Ð"ä	�‰ÜÐAô
Cñ &à
�‰˜1 1ˆÔ%÷&ô 
�‰ÜÐAô
Cñ #à
�‰˜ ˆÔ"÷#ð #÷&ð &ú÷#ð #ús   ÃDÃ>D'ÄD$Ä'D0c                 ó,  — d\  }}}| j                  dd¬«      }| j                  dd|¬«      }| j                  dd¬«      }|j                  |«       |j                  |||d¬	«       d
D ])  }|j                  |d¬«      }	|	j                  |||¬«       Œ+ y )N)rp   r¨   r§   éƒ   r3   r4   é„   )r5   Ú	shareviewé…   T)r›   rœ   r�   Úshare)rÉ  rÊ  rÌ  rš   )rE   rË  r    )
r<   r=   r›   rœ   r�   rC  rD  Úax3Úsubplot_numr'   s
             r-   Útest_shared_viewrÐ  I  s¥   € à Ñ€Dˆ$�Ø
×
Ñ
˜s¨tÐ
Ó
4€CØ
×
Ñ
˜s¨t¸sÐ
Ó
C€CØ
×
Ñ
˜s¨tÐ
Ó
4€CØ‡M�M�#ÔØ‡M�M�t $¨T¸€MÔ>à&ò 6ˆØ× Ñ  ¸Ð Ó>ˆØ
�‰˜$ T°ˆÕ5ñ6r/   c                  óX  — t        j                  «       } | j                  dd¬«      }| j                  dd|¬«      }|j                  ddgddgddg«       |j                  ddgddgddg«       |j	                  g d	¢«       |j                  «       d
k(  sJ ‚|j                  «       d
k(  sJ ‚y )NéÓ   r3   r4   éÔ   )r5   Úsharezr   r   r   )r2  r   r   ç      @)r2  rÕ  )rC   rD   rE   r<  rM   rÁ  )rH   rC  rD  s      r-   Útest_shared_axes_retickrÖ  W  s    € Ü
�*‰*‹,€CØ
�/‰/˜#¨$ˆ/Ó
/€CØ
�/‰/˜#¨$°sˆ/Ó
;€CØ‡H�Hˆa�ˆV�a˜�V˜a ˜VÔ$Ø‡H�Hˆa�ˆV�a˜�V˜a ˜VÔ$Ø‡N�NÒ$Ô%à�<‰<‹>˜[Ò(Ð(Ð(Ø�<‰<‹>˜[Ò(Ð(Ñ(r/   c            
      ó¨  — t        dg d¢«      } | j                  dk(  sJ ‚| j                  g d¢k(  j                  sJ ‚|  j                  dk(  sJ ‚|  j                  g d¢k(  j                  sJ ‚t        dg d¢«      }|j                  dk(  sJ ‚|j                  g d¢k(  j                  sJ ‚t        dg d¢«      }|j                  dk(  sJ ‚|j                  g d¢k(  j                  sJ ‚t        dg d¢«      }|j                  dk(  sJ ‚|j                  g d¢k(  j                  sJ ‚||z  |  k(  sJ ‚||z  |  k(  sJ ‚||z  |  k(  sJ ‚| |z  |k(  sJ ‚| |z  |k(  sJ ‚| |z  |k(  sJ ‚||z  |k(  sJ ‚||z  |k(  sJ ‚||z  |k(  sJ ‚||z  | k(  sJ ‚||z  | k(  sJ ‚||z  | k(  sJ ‚t        dg d	¢«      t        d
g d¢«      z  t        dg d¢«      k(  sJ ‚| |||fD ]®  }|j	                  «       j                  |j                  k(  sJ ‚|j	                  «       j                  |j                   k(  j                  sJ ‚|j	                  «       j	                  «       |k(  sJ ‚||j	                  «       z  j                  dk(  j                  rŒ®J ‚ t        dg d¢«      }|j
                  dk(  sJ ‚| j
                  dk(  sJ ‚|j
                  dk(  sJ ‚|j
                  dk(  sJ ‚|j
                  dk(  sJ ‚|| |||fD ].  }|j
                  ||j	                  «       z  j                  k(  rŒ.J ‚ t        dg d¢«      t        dg d¢«      t        dg d¢«      t        dg d¢«      t        d
g d¢«      fD ]!  }|j                  «       j
                  dk(  rŒ!J ‚ | |||fD ]2  }||j                  «       z  | k(  sJ ‚|j                  «       |z  | k(  rŒ2J ‚ |j                  g d¢«      t        j                  g d¢«      k(  j                  sJ ‚g d¢g d¢t        t        j                  d«      ddt        j                  d«      g«      fg d¢g d¢t        t        j                  d«      dt        j                  d«       dg«      fg d¢g d¢t        dg d¢«      ffD ]!  \  }}}t        j                  ||«      |k(  rŒ!J ‚ g d¢g d¢g d¢g d¢fD ]—  }t        j                  |«      }t        j                  t        «      5  t        j                  || «      }d d d «       t        j                   j
                  d«      sJ ‚t        j"                  |j                  |«      dk(  rŒ—J ‚ dD ]ð  \  }}	}
dD ]å  }t        j$                  t        j&                  |«      t        j&                  |	«      t        j&                  |
«      «      }t        j                   |j
                  d«      sJ ‚t        ||j                  z  ||j                  z  «      }t        j(                  j+                  t        j,                  t        j.                  |«      «      ||	|
fd¬«       Œç Œò y # 1 sw Y   �ŒIxY w)Nr   r•   ro   r   ©r   r   r   rY  rW  r   rs   rÙ   )r  r  r“  iªÿÿÿ)rå  é0   é,   )rn   r   r   )r   rt   r   )r   r   rp   ©r   r   rn   )r   r  r4  r*  rr   )r•   )r’   r   r   r–   )r   r   r’   )r   r§   r§   )r§   r   r§   )r§   r§   r   )é/   r�   ièÿÿÿrÀ  ç�íµ ÷Æ°>©Úatol)Ú
QuaternionÚscalarÚvectorÚallÚ	conjugaterì  r=  Ú
reciprocalÚrotater   r    rÚ  Úrotate_from_torI  ÚwarnsÚUserWarningÚiscloser«  Úfrom_cardan_anglesÚdeg2radrÞ   rÜ  Úrad2degÚas_cardan_angles)Úq1ÚqiÚqjÚqkÚqÚq0Úr1Úr2r›   rœ   r�   Úmags               r-   Útest_quaternionrø  c  s  € ä	�A’yÓ	!€BØ�9‰9˜Š>Ðˆ>Ø�I‰IšÑ"×'Ò'Ð'Ð'àˆC�<‰<˜2ÒÐÐØˆS�L‰LšIÑ%×*Ò*Ð*Ð*ä	�A’yÓ	!€BØ�9‰9˜Š>Ðˆ>Ø�I‰IšÑ"×'Ò'Ð'Ð'Ü	�A’yÓ	!€BØ�9‰9˜Š>Ðˆ>Ø�I‰IšÑ"×'Ò'Ð'Ð'Ü	�A’yÓ	!€BØ�9‰9˜Š>Ðˆ>Ø�I‰IšÑ"×'Ò'Ð'Ð'àˆb‰5�R�CŠ<Ðˆ<Øˆb‰5�R�CŠ<Ðˆ<Øˆb‰5�R�CŠ<Ðˆ<àˆb‰5�BŠ;Ðˆ;Øˆb‰5�BŠ;Ðˆ;Øˆb‰5�BŠ;Ðˆ;àˆb‰5�BŠ;Ðˆ;Øˆb‰5�BŠ;Ðˆ;Øˆb‰5�BŠ;Ðˆ;Øˆb‰5�R�CŠ<Ðˆ<Øˆb‰5�R�CŠ<Ðˆ<Øˆb‰5�R�CŠ<Ðˆ<ä�qš)Ó$¤z°!²YÓ'?Ñ?Ü˜#š|Ó,ò-ð .ð -ð �"�b˜"Ðò 3ˆØ�{‰{‹}×#Ñ# q§x¡xÒ/Ð/Ð/Ø—‘“×$Ñ$¨¯©¨	Ñ1×6Ò6Ð6Ð6Ø�{‰{‹}×&Ñ&Ó(¨AÒ-Ð-Ð-Ø�1—;‘;“=‘×(Ñ(¨AÑ-×2Ó2Ð2Ð2ð	3ô 
�A’yÓ	!€BØ�7‰7�aŠ<Ðˆ<Ø�7‰7�aŠ<Ðˆ<Ø�7‰7�aŠ<Ðˆ<Ø�7‰7�aŠ<Ðˆ<Ø�7‰7�aŠ<Ðˆ<Ø�"�b˜"˜bÐ!ò 2ˆØ�v‰v˜!˜AŸK™K›M™/×1Ñ1Ó1Ð1Ð1ð2ô 	�1’iÓ Ü�1’iÓ Ü�1’iÓ Ü�1’iÓ Ü�1’iÓ ðò 'ˆð �{‰{‹}×!Ñ! QÓ&Ð&Ð&ð'ð �"�b˜"Ðò &ˆØ�—‘“Ñ 2Ò%Ð%Ð%Ø�|‰|‹~˜aÑ 2Ó%Ð%Ð%ð&ð �I‰I’iÓ ¤B§H¡Hª[Ó$9Ñ9×>Ò>Ð>Ð>ò 
’Iœz¬"¯'©'°#«,¸¸A¼r¿w¹wÀs»|Ð8LÓMÐNÚ	’Iœz¬"¯'©'°#«,¸¼R¿W¹WÀS»\¸MÈ1Ð8MÓNÐOÚ	’Iœz¨!ªYÓ7Ð8ðò 6‰	ˆˆB�ô
 ×(Ñ(¨¨RÓ0°AÓ5Ð5Ð5ð6ò š)¢Y²	Ð:ò )ˆÜ�X‰X�b‹\ˆÜ�\‰\œ+Ó&ñ 	3Ü×)Ñ)¨"¨r¨cÓ2ˆA÷	3ä�z‰z˜!Ÿ&™& !Ô$Ð$Ð$Ü�v‰v�a—h‘h Ó# qÓ(Ð(Ð(ð)ð,ò 
FÑˆˆd�Dð ò 	FˆCÜ×-Ñ-Ü—
‘
˜4Ó ¤"§*¡*¨TÓ"2´B·J±J¸tÓ4DóFˆAä—:‘:˜aŸf™f aÔ(Ð(Ð(Ü˜3 §¡™>¨3°·±©>Ó:ˆAÜ�J‰J×&Ñ&¤r§z¡z´*×2MÑ2MÈaÓ2PÓ'QØ(,¨d°DÐ'9Àð 'õ Fñ	Fñ	
F÷	3ñ 	3ús   Ó(YÙY	r   )ÚazelÚ	trackballrN  Úarcballc                 ó:  — | dk(  rd}nt         j                  d   dz  }|dz  }dt         j                  d<   t        j                  d| i«      5  g d¢g d	¢g d
¢g d¢ddt        j                  d«      dz  gddt        j                  d«      dz  gg d¢fD �]ï  \  }}}t        j                  «       }|j                  dddd¬«      }|j                  dd|«       |j                  j                  j                  «        |j                  t        |t        j                  dd¬«      «       |j                  t        |t        j                  ||z  |j                   z  ||z  |j"                  z  ¬«      «       |j                  j                  j                  «        t        j                  d«      dz  }i dd“dd“ddd|fd“dd“dd“dd“ddd|fd“dd “d!d"“d#dd|fd$“d%dd&t        j$                  z  df“d'd(“d)d*“d#dd|fd+“d,d-“d.d/“d0dd|fd1“d2dd3d4d5d6d0dd|fd7d8d9d:d;d<dd|fd=d>d?d@dAdBdCd<dd|fdDi¥}|| |||f   \  }	}
}t        j&                  j)                  |j*                  |j,                  |j.                  f|	|
|fdE¬F«       �Œò 	 dGdGdG«       yG# 1 sw Y   yGxY w)Hz*Test rotating using the left mouse button.rù  r*  zaxes3d.trackballsizer   r   zaxes3d.trackballborderzaxes3d.mouserotationstylerY  )r§   r   r   rW  )r§   r   r   rn   r§   )r   r   r   r   r3   r4   ©ÚbuttonÚxdataÚydata)rù  r   r   r   )r   r÷  r   )rù  r   r   r   )r÷  r   r   )ç¢^ðiN|CÀç     €6Àr   )rù  r   r   r   r”   )rù  r§   r   r   )g     €6@r  r§   )rù  r§   r   r   )r  r  r§   )r  r  r§   )rú  r   r   r   )r   çËgyÜ¥<Àr   )rú  r   r   r   )r  r   r   rú  )çéEí~ˆ8Àço.2Ž.Àg«®C5%¹
@)rú  r   r   r   iLÿÿÿ)rú  r§   r   r   )gôüi£:½+@ç=Õ!7ÃQ9ÀgXç�½Þ:@)rú  r§   r   r   )r  r  gë:TS’«@@)gôüi£:½+Àr  gTŒó7¡�@@)rN  r   r   r   )r   rÃ   r   )rN  r   r   r   )rÃ   r   r   rN  )ç`#I®¨9Àç¸v¢$$0Àg! _B…@)rN  r   r   r   )rN  r§   r   r   )g&åîs|ô,@çu’­.§�:Àgu’­.§�:@)rN  r§   r   r   )r  r  gò%TØ@@)g&åîs|ô,Àr	  gÆ6©h¬·@@)rû  r   r   r   )r   rÂ   r   )rû  r   r   r   )rÂ   r   r   rû  )ç’#��‘KHÀçx´qÄZrDÀg—wJ3@)rû  r   r   r   r—   )rû  r§   r   r   )g`#I®¨9@çðýÚ«'LÀg¸v¢$$0@)rû  r§   r   r   )r
  r  gˆKŽ;¥�H@)r  r  g¤Ä®ííòE@rÝ  rÞ  N)r  r÷   Ú
rc_contextr   rÚ  rC   rD   rE   r    rË   rÌ   Ú_button_pressr   r   ÚLEFTÚ_on_moveÚ	_pseudo_wÚ	_pseudo_hr9  rÞ   rÜ  r›   rœ   r�   )r   rg  r�   rÕ   rÖ   rH   r'   rª   ÚexpectationsÚnew_elevÚnew_azimÚnew_rolls               r-   Útest_rotater  Á  sq  € ð �‚Ø‰ä�L‰LÐ/Ñ0°1Ñ4ˆØˆ�H€AØ-.„C‡L�LÐ)Ñ*Ü	�‰Ð4°eÐ<Ó	=ñ 9RâÚÚÚØ�CœŸ™ › A™Ð&Ø�Sœ"Ÿ'™' !›* Q™,Ð'Úðó 8	R‰LˆD�"�bô —*‘*“,ˆCØ—‘  A q°T�Ó:ˆBØ�L‰L˜˜A˜tÔ$Ø�I‰I×Ñ×!Ñ!Ô#ð ×ÑÜ˜2¤k×&6Ñ&6¸aÀqÔIôKà�K‰KÜ˜2¤k×&6Ñ&6Ø!" 2¡ b§l¡lÑ!2¸!¸B¹$¸r¿|¹|Ñ:KôMôNð �I‰I×Ñ×!Ñ!Ô#ä—‘˜“
˜1‘ˆAðNØ! <ðNà! ;ðNð ˜˜C Ð#Ð%;ðNð " ;ð	Nð
 #Ð$:ðNð #Ð$;ðNð ˜˜S !Ð$Ð&=ðNð 'Ð(9ðNð 'Ð(9ðNð ˜a  aÐ(Ð*LðNð '¨¨D´·±©J¸Ð(:ðNð (Ð)JðNð (Ð)LðNð ˜b # qÐ)Ð+NðNð" $ [ð#Nð$ $ [ð%Nð& ˜1˜c 1Ð%Ð'Ið'Nð( $ [Ø$Ð&HØ$Ð&IØ˜2˜s AÐ&Ð(Kà$ kØ$ kØ˜A˜s AÐ&Ð(KØ$ kØ%Ð'IØ%Ð'JØ˜B  QÐ'Ð)Lñ?NˆLð@ ,8¸ÀÀbÈ"Ð8MÑ+NÑ(ˆH�h Ü�J‰J×&Ñ&¨¯©°·±¸"¿'¹'Ð'BØ(0°(¸HÐ'EÈDð 'ö Rño8	R÷9R÷ 9Rñ 9Rús   ÁH9JÊJc                  ó   — d„ } t        j                  «       }|j                  d¬«      }|j                  ddd«       |j                  j                  «         | |j                  «       Ž \  }} | |j                  «       Ž \  }} | |j                  «       Ž \  }}|j                  t        |t        j                  dd¬«      «       |j                  t        |t        j                  dd¬«      «        | |j                  «       Ž \  }	}
 | |j                  «       Ž \  }} | |j                  «       Ž \  }}|
t        j                  |«      k(  sJ ‚|t        j                  |«      k(  sJ ‚|t        j                  |«      k(  sJ ‚|	t        j                  |«      k7  sJ ‚|t        j                  |«      k7  sJ ‚|t        j                  |«      k7  sJ ‚y)z1Test mouse panning using the middle mouse button.c                 ó$   — | |z   dz  }|| z
  }||fS )z+Convert min/max limits to center and range.r   r#  )ÚdminÚdmaxÚcenterÚrange_s       r-   Úconvert_limztest_pan.<locals>.convert_lim
  s#   € à˜‘+ Ñ"ˆØ˜‘ˆØ�vˆ~Ðr/   r3   r4   r   rý  r   N)rC   rD   rE   rn  rË   rÌ   r‰  rŠ  r‹  r  r   r   ÚMIDDLEr  rI  Úapprox)r  rH   r'   Ú	x_center0Úx_range0Ú	y_center0Úy_range0Ú	z_center0Úz_range0Úx_centerÚx_rangeÚy_centerÚy_rangeÚz_centerÚz_ranges                  r-   Útest_panr-    s–  € òô �*‰*‹,€CØ	�‰ DˆÓ	)€BØ‡J�Jˆq�!�QÔØ‡J�J‡O�OÔá% r§}¡}£Ð7Ñ€IˆxÙ% r§}¡}£Ð7Ñ€IˆxÙ% r§}¡}£Ð7Ñ€Iˆxð ×ÑÜ�2œk×0Ñ0¸ÀÔCôEà‡K�KÜ�2œk×0Ñ0¸ÀÔCôEñ $ R§]¡]£_Ð5Ñ€HˆgÙ# R§]¡]£_Ð5Ñ€HˆgÙ# R§]¡]£_Ð5Ñ€Hˆgð ”f—m‘m HÓ-Ò-Ð-Ð-Ø”f—m‘m HÓ-Ò-Ð-Ð-Ø”f—m‘m HÓ-Ò-Ð-Ð-ð ”v—}‘} YÓ/Ò/Ð/Ð/Ø”v—}‘} YÓ/Ò/Ð/Ð/Ø”v—}‘} YÓ/Ò/Ð/Ñ/r/   ztool,button,key,expectedr²  ))rT  ç¸…ëQ¸®?)rC  gìQ¸…ë±?)r'  ç{®Gáz´?rY   ))g{®Gáz„¿r  )g¸…ëQ¸ž¿r/  ©g¸…ëQ¸®¿r.  rZ   ))çìQ¸…ë±¿r�   )g{®Gáz¤¿r/  )rT  g¸…ëQ¸¾?))g
×£p=
·¿r  )g{®Gáz´¿gÃõ(\�ÂÅ?)r1  g
×£p=
Ç?Úpan))gffffffæ¿ç�Âõ(\�â¿)g¤p=
×£ð¿g…ëQ¸í¿©gR¸…ëQô¿gffffffò¿))g
×£p=
ï¿gáz®Gáê¿)r3  gq=
×£pÝ¿r0  ))r  g{®GázÔ?)gR¸…ëQà¿gö(\�ÂõØ¿r4  c                 óÀ  — t        j                  «       }|j                  d¬«      }|j                  ddd«       |j                  j                  «        |j                  «       |j                  «       |j                  «       }}}d}	d}
|j                  j                  |	«      j                  t        «      }|j                  j                  |
«      j                  t        «      }t        d|j                  g|¢|‘­d|iŽ}t        d|j                  g|¢|‘­d|iŽ}t        |j                  «      }| d	k(  rD|j                  «        |j!                  |«       |j#                  |«       |j%                  |«       nC|j'                  «        |j)                  |«       |j+                  |«       |j-                  |«       |\  }}}|j                  «       t/        j0                  |d
¬«      k(  sJ ‚|j                  «       t/        j0                  |d
¬«      k(  sJ ‚|j                  «       t/        j0                  |d
¬«      k(  sJ ‚|j3                  «        |j                  «       t/        j0                  |«      k(  sJ ‚|j                  «       t/        j0                  |«      k(  sJ ‚|j                  «       t/        j0                  |«      k(  sJ ‚|j5                  «        |j                  «       t/        j0                  |d
¬«      k(  sJ ‚|j                  «       t/        j0                  |d
¬«      k(  sJ ‚|j                  «       t/        j0                  |d
¬«      k(  sJ ‚|j7                  «        |j                  «       t/        j0                  |«      k(  sJ ‚|j                  «       t/        j0                  |«      k(  sJ ‚|j                  «       t/        j0                  |«      k(  sJ ‚y )Nr3   r4   r   rI  ©r   r   Úbutton_press_eventÚkeyÚbutton_release_eventr²  rC  )r$   )rC   rD   rE   rn  rË   rÌ   r‰  rŠ  r‹  Ú	transDatarÿ  ÚastypeÚintr	   r
   r²  Ú
press_zoomÚ	drag_zoomÚrelease_zoomr2  Ú	press_panÚdrag_panÚrelease_panrI  r   ÚbackÚforwardÚhome)Útoolrþ  r8  ÚexpectedrH   r'   Úxlim0Úylim0Úzlim0Úd0Úd1Ús0Ús1Ústart_eventÚ
stop_eventÚtbrù  rú  rû  s                      r-   Útest_toolbar_zoom_panrR  .  s  € ô( �*‰*‹,€CØ	�‰ DˆÓ	)€BØ‡J�Jˆq�!�QÔØ‡J�J‡O�OÔØŸ-™-›/¨2¯=©=«?¸B¿M¹M»O�%ˆ5€Eð 
€BØ	€Bð 
�‰×	Ñ	 Ó	#×	*Ñ	*¬3Ó	/€BØ	�‰×	Ñ	 Ó	#×	*Ñ	*¬3Ó	/€Bô Ø˜cŸj™jð@Ø+-ð@Ø/5ò@Ø;>ñ@€KäØ §
¡
ðBØ-/ðBØ17òBØ=@ñB€Jô 
˜CŸJ™JÓ	'€BØˆv‚~Ø
�‰Œ	Ø
�‰�kÔ"Ø
�‰�ZÔ Ø
�‰˜
Õ#à
�‰ŒØ
�‰�[Ô!Ø
�‰�JÔØ
�‰�zÔ"ð  Ñ€Dˆ$�Ø�=‰=‹?œfŸm™m¨D°dÔ;Ò;Ð;Ð;Ø�=‰=‹?œfŸm™m¨D°dÔ;Ò;Ð;Ð;Ø�=‰=‹?œfŸm™m¨D°dÔ;Ò;Ð;Ð;ð ‡G�G„IØ�=‰=‹?œfŸm™m¨EÓ2Ò2Ð2Ð2Ø�=‰=‹?œfŸm™m¨EÓ2Ò2Ð2Ð2Ø�=‰=‹?œfŸm™m¨EÓ2Ò2Ð2Ð2à‡J�J„LØ�=‰=‹?œfŸm™m¨D°dÔ;Ò;Ð;Ð;Ø�=‰=‹?œfŸm™m¨D°dÔ;Ò;Ð;Ð;Ø�=‰=‹?œfŸm™m¨D°dÔ;Ò;Ð;Ð;à‡G�G„IØ�=‰=‹?œfŸm™m¨EÓ2Ò2Ð2Ð2Ø�=‰=‹?œfŸm™m¨EÓ2Ò2Ð2Ð2Ø�=‰=‹?œfŸm™m¨EÓ2Ò2Ð2Ñ2r/   c                 ó  — t        j                  t        t        j                  t        j
                  ddd«      t        j
                  ddd«      t        j
                  ddd«      gŽ «      «      j                  \  }}}||z   }| j                  dd¬«      }|j                  ||||dd¬	«      }| j                  j                  «        |j                  «        |j                  dd¬«      }|j                  ||||dd¬	«      }	y )
Nr   rp   r   éo   r3   r4   rï   r  )rª   rg  rí   )r   r    r!   r   r"   r²   ÚTrE   rn  rË   rÌ   Úchanged)
r<   r=   rY   rZ   r[   rª   r%  Úsc_testr$  Úsc_refs
             r-   Útest_scalarmap_updaterY  z  só   € ô �h‰h”tœI×-Ñ-´·	±	¸!¸QÀÓ0BÜ02·	±	¸!¸QÀÓ0BÜ02·	±	¸!¸QÀÓ0Bð0Dð Eó Fó GçGHÁqñ €A€qˆ!ð 	
ˆA‰€Að ×"Ñ" 3°4Ð"Ó8€GØ�o‰o˜a  A¨¨b°yˆoÓA€Gà‡O�O×ÑÔà‡O�OÔð × Ñ  °Ð Ó6€FØ�^‰^˜A˜q ! q¨B°Yˆ^Ó?�Fr/   c                  ó²   — t        j                  «       } | j                  dd«      }|d   j                  dddd¬«      }|d   j                  ddddd¬«      }y )Nr   r   r   r3   r4   Úother)r5   r‡   )rC   rD   Ú
subfiguresrE   )rH   Úsfr'   s      r-   Útest_subfigure_simpler^  �  sY   € ä
�*‰*‹,€CØ	�‰˜˜1Ó	€BØ	ˆA‰×	Ñ	˜1˜a ¨tÐ	Ó	4€BØ	ˆA‰×	Ñ	˜1˜a ¨t¸7Ð	Ó	C�Br/   Úcomputed_zorder)Úbaseline_imagesr   r1   r   c            
      ób  — dt         j                  d<   t        j                  «       } | j                  dd¬«      }| j                  dd¬«      }d|_        d}||fD ]Œ  }t        j                  |gd	d
d¬«      }|j                  |«       |j                  ddddd¬«       |j                  ddddd¬«       |j                  d«       |j                  d«       |j                  d«       ŒŽ | j                  dd¬«      }| j                  dd¬«      }d|_        d}t        j                  | |f| |f«      \  }	}
t        j                  d«      }d}t        j                  | |fd|f«      \  }}||z  }t        j                  | |f| df«      \  }}||z  }d}d}t        j                   ddt        j"                  z  |«      }|t        j$                  |«      z  |t        j&                  |«      z  ||z  t        j&                  |«      z  }}}||fD �]  }|j)                  |||dddd¬«       |j                  ||dk     ||dk     ||dk     d d!d"d¬#«       |j)                  |	|
|dddd¬«       |j                  |t        j&                  |«      z  |t        j$                  |«      z  t        j                  |«      d d!d
d¬#«       |j)                  |||dddd$¬«       |j                  ||dkD     ||dkD     ||dkD     d d!d"d%¬#«       |j+                  d&d'd¬(«       |j-                  d)«       �Œ y )*NTré   éÝ   r3   r4   éÞ   F)r•   )r   rp   r   )rp   rp   r   )rp   r   r   ÚwhiteÚblackr   )r¬  r­  r  )r   r   )r   rt   r¹   r   )rª   r  )rn   rn   )r   rn   r©   )r   rU  )r   rÕ  éß   éà   r*  r   r  r)  r»   ro   )r°   r±   r\  r  rp   z--rº   )r¡  Ú	linestyler°   r  rn   rt   r¨   r  rš   r±  )rC   r÷   rD   rE   r_  r   rZ  rR  r<  rn  r  r  r  r   rÈ   rE  r2  r9  r;  r:  r_  r    rR   )rH   rC  rD  Úcornersr'   ÚtrirÎ  Úax4Údimrû   rü   rý   ÚangleÚX2ÚY2ÚZ2ÚX3ÚY3ÚZ3r)   r°  ÚthrY   rZ   r[   s                            r-   Útest_computed_zorderru  ™  sS  € ð )-„C‡L�LÐ$Ñ%Ü
�*‰*‹,€CØ
�/‰/˜#¨$ˆ/Ó
/€CØ
�/‰/˜#¨$ˆ/Ó
/€CØ€CÔð ;€GØ�Cˆjò ˆÜ×$Ñ$ g YØ07Ø07Ø,-ô/ˆð 	×Ñ˜CÔ ð 	�‰�˜ ¨%¸ˆÔ:ð 	�
‰
�6˜6 6¨U¸2ˆ
Ô>à
�‰�HÔØ
�‰�HÔØ
�‰�HÕðð" �/‰/˜#¨$ˆ/Ó
/€CØ
�/‰/˜#¨$ˆ/Ó
/€CØ€CÔà
€CÜ�;‰;˜˜˜c�{ c T¨3 KÓ0�D€A€qÜ
�‰�Ó€Aà€EÜ�[‰[˜3˜$ ˜ q¨# hÓ/�F€BˆØ	ˆe‰€BÜ�[‰[˜3˜$ ˜¨ t¨Q iÓ0�F€BˆØ	ˆe‰€Bà	€AØ€AÜ	�‰�Q˜œBŸE™E™	 1Ó	%€BØ”"—&‘&˜“*‰n˜q¤2§6¡6¨"£:™~¨u°q©y¼2¿6¹6À"»:Ñ/Eˆ!€q€AØ�Cˆjó #ˆØ
�‰˜˜B Ø$Ø!Ø"#Ø!ð	 	ô 	#ð
 	�‰��!�a‘%‘˜!˜A ™E™( A a¨!¡e¡HØØØØð	 	ô 	ð 	�‰˜˜1˜aØ#Ø!Ø"#Ø ð	 	ô 	"ð 	�‰�”B—F‘F˜2“J‘ ¤B§F¡F¨2£J¡´·±¸³ØØØØð	 	ô 	ð 	�‰˜˜B Ø$Ø!Ø"#Ø ð	 	ô 	"ð 	�‰��!�a‘%‘˜!˜A ™E™( A a¨!¡e¡H°ØØØð 	ô 	ð 	�‰˜" 3¨QˆÔ/Ø
�‰�ŽñG#r/   c                  óD  — t        j                  «       } | j                  d¬«      }t        j                  d«      }|j                  |t        j                  |«      «       d}d}| j                  j                  «        |j                  ||«      dk(  sJ ‚|j                  dd¬«       | j                  j                  «        |j                  ||«      d	k(  sJ ‚|j                  «        | j                  j                  «        |j                  ||«      dk(  sJ ‚|j                  d
«       | j                  j                  «        |j                  ||«      dk(  sJ ‚|j                  dd¬«       | j                  j                  «        |j                  ||«      dk(  sJ ‚y )Nr3   r4   r©   r  z"x=10.5227, y pane=1.0417, z=0.1444r§   rZ   )r�   Úvertical_axisz!x pane=9.1875, y=0.9761, z=0.1291r™   z"x=10.8869, y pane=1.0417, z=0.1528r  r  z!x=9.0620, y pane=1.0417, z=0.1110)rC   rD   rE   r   r²   r<  r:  rË   rÌ   Úformat_coordr    rŸ   )rH   r'   rY   ÚxvÚyvs        r-   Útest_format_coordr{  í  sT  € Ü
�*‰*‹,€CØ	�‰ DˆÓ	)€BÜ
�	‰	�"‹€AØ‡G�GˆAŒr�v‰v�a‹yÔØ	€BØ	€BØ‡J�J‡O�OÔØ�?‰?˜2˜rÓ"Ð&JÒJÐJÐJð ‡L�L�b¨€LÔ,Ø‡J�J‡O�OÔØ�?‰?˜2˜rÓ"Ð&IÒIÐIÐIð ‡L�L„NØ‡J�J‡O�OÔØ�?‰?˜2˜rÓ"Ð&JÒJÐJÐJð ×Ñ�WÔØ‡J�J‡O�OÔØ�?‰?˜2˜rÓ"Ð&JÒJÐJÐJð ×Ñ�W¨3ÐÔ/Ø‡J�J‡O�OÔØ�?‰?˜2˜rÓ"Ð&IÒIÐIÑIr/   c                  ó"  — t        j                  «       } | j                  d¬«      }t        j                  d«      }|j                  |t        j                  |«      «       | j                  j                  «        |j                  «       dk(  sJ ‚y )Nr3   r4   r©   )FTF)
rC   rD   rE   r   r²   r<  r:  rË   rÌ   Úget_axis_position)rH   r'   rY   s      r-   Útest_get_axis_positionr~  	  sf   € Ü
�*‰*‹,€CØ	�‰ DˆÓ	)€BÜ
�	‰	�"‹€AØ‡G�GˆAŒr�v‰v�a‹yÔØ‡J�J‡O�OÔØ×ÑÓ!Ð%9Ò9Ð9Ñ9r/   c                  óÖ  — t        j                  «       } | j                  d¬«      }|j                  d«       |j                  «       dk(  sJ ‚|j                  ddd«       |j                  «       dk(  sJ ‚|j                  d¬	«       |j                  «       d
k(  sJ ‚|j                  d¬«       |j                  «       dk(  sJ ‚|j                  d¬«       |j                  «       dk(  sJ ‚y )Nr3   r4   r  )r  r  r  r  r€  )r  r  r€  r   )rY   )r   r  r€  )rZ   )r   r  r€  ©r[   )r   r  r   )rC   rD   rE   rå  rG   s     r-   Útest_marginsr�  	  sÄ   € Ü
�*‰*‹,€CØ	�‰ DˆÓ	)€BØ‡J�Jˆs„OØ�:‰:‹<˜?Ò*Ð*Ð*Ø‡J�Jˆs�C˜ÔØ�:‰:‹<˜?Ò*Ð*Ð*Ø‡J�J�€J„OØ�:‰:‹<˜=Ò(Ð(Ð(Ø‡J�J�€JÔØ�:‰:‹<˜=Ò(Ð(Ð(Ø‡J�J�€J„OØ�:‰:‹<˜;Ò&Ð&Ñ&r/   c                  óô   — t        j                  «       } | j                  d¬«      }|j                  ddd«       |j	                  «       dk(  sJ ‚|j                  «       dk(  sJ ‚|j                  «       dk(  sJ ‚y )Nr3   r4   r  r  r€  )rC   rD   rE   rå  Úget_xmarginÚget_ymarginÚget_zmarginrG   s     r-   Útest_margin_gettersr†  $	  sl   € Ü
�*‰*‹,€CØ	�‰ DˆÓ	)€BØ‡J�Jˆs�C˜ÔØ�>‰>Ó˜sÒ"Ð"Ð"Ø�>‰>Ó˜sÒ"Ð"Ð"Ø�>‰>Ó˜sÒ"Ð"Ñ"r/   zerr, args, kwargs, match)ro   z!margin must be greater than -0\.5)r   ro   r   )r   r   ro   ro   r[   )r   z'Cannot pass both positional and keyword)rY   rZ   r6  z*Must pass a single positional argument forc                 óÌ   — t        j                  | |¬«      5  t        j                  «       }|j	                  d¬«      } |j
                  |i |¤Ž d d d «       y # 1 sw Y   y xY w)NrG  r3   r4   )rI  rJ  rC   rD   rE   rå  )ÚerrrÆ  r#  rH  rH   r'   s         r-   Útest_margins_errorsr‰  -	  sU   € ô  
�‰�s %Ô	(ñ $Ü�j‰j‹lˆØ�_‰_¨ˆ_Ó-ˆØˆ�
‰
�DÐ#˜FÒ#÷$÷ $ñ $ús   ˜9AÁA#c                 ó\  — |j                  d¬«      }t        ddd«      }t        j                  |d¬«       |j	                  |«       |j                  «       dk(  sJ ‚| j                  d¬«      }t        j                  dddd«      }|j	                  |«       |j                  «       dk(  sJ ‚y )Nr3   r4   r*  zFoo bar $\int$r   r€  rr  )rE   r   r   Útext_2d_to_3drl  Úget_position_3dÚText3D)r<   r=   r'   ÚtxtÚt3ds        r-   Útest_text_3dr�  C	  s¢   € à	×	Ñ	¨Ð	Ó	-€BÜ
ˆs�CÐ*Ó
+€CÜ	×Ñ˜˜qÕ!Ø‡M�M�#ÔØ×ÑÓ  MÒ1Ð1Ð1à	×	Ñ	¨Ð	Ó	.€BÜ
�,‰,�s˜C Ð$5Ó
6€CØ‡M�M�#ÔØ×ÑÓ  MÒ1Ð1Ñ1r/   c                  óŽ   — t        j                  «       } | j                  d¬«      }|j                  dgdggdgdggdgdgg«       y )Nr3   r4   r   r   )rC   rD   rE   r<  rG   s     r-   Útest_draw_single_lines_from_Nx1r’  Q	  sE   € ä
�*‰*‹,€CØ	�‰ DˆÓ	)€BØ‡G�GˆaˆS�1�#ˆJ˜!˜˜q˜c˜
 a S¨1¨# JÕ/r/   c                 ó.  — |j                  d¬«      }t        j                  «       }t        |«      }t	        j
                  |dd¬«       |j                  |«       | j                  d¬«      }t	        j                  |dd¬«      }|j                  |«       y )Nr3   r4   )r   r*  r�  r   r   rZ   ©r[   r®   r¼  )rE   r   Úunit_rectangler   r   Úpathpatch_2d_to_3drl  ÚPathPatch3D)r<   r=   r'   ÚpathÚpatchÚpp3ds         r-   Útest_pathpatch_3dr›  X	  s   € à	×	Ñ	¨Ð	Ó	-€BÜ×ÑÓ €DÜ�d‹O€EÜ	×Ñ˜UÐ&9ÀÕDØ‡M�M�%Ôà	×	Ñ	¨Ð	Ó	.€BÜ×Ñ˜TÐ&9ÀÔD€DØ‡M�M�$Õr/   zscatter_spiral.png)r`  r   r   c                  óŠ  — dt         j                  d<   t        j                  «       } | j                  d¬«      }t	        j
                  ddt        j                  z  dz  d«      }|j                  t	        j                  |«      t	        j                  |«      |d	|d
z  z   |dz  ¬«      }| j                  j                  «        y )NTré   r3   r4   r   r   rÙ   é   r   rp   rµ  )rC   r÷   rD   rE   r   r2  r9  rn  r:  r;  rË   rÌ   )rH   r'   rt  Úscs       r-   Útest_scatter_spiralrŸ  e	  s�   € ð )-„C‡L�LÐ$Ñ%Ü
�*‰*‹,€CØ	�‰ DˆÓ	)€BÜ	�‰�Q˜œBŸE™E™	 A™ sÓ	+€BØ	�‰”B—F‘F˜2“J¤§¡ r£
¨B°1°r¸A±v±:À"ÈÁ'ˆÓ	J€Bð ‡J�J‡O�OÕr/   c                  ó¾   — t        j                  ddi¬«      \  } }t        dd«      }|j                  |«       t	        j
                  |«       |j                  «        y )Nr5   r3   r6   rI  r  )rC   r8   r   rJ  r   r–  Úget_path)rH   r'   Úps      r-   Útest_Poly3DCollection_get_pathr£  s	  sI   € ô �l‰l |°TÐ&:Ô;�G€CˆÜˆv�sÓ€AØ‡L�L�„OÜ	×Ñ˜QÔØ‡J�J…Lr/   c                  ó:  — t         j                  ddd…ddd…f   \  } }t        j                  |«      dz  t        j                  | «      dz  z
  }t	        j
                  «       }|j                  dd¬«      }|j                  || |d	¬
«      }|j                  «        y ©Nr   r©   y              Y@rn   r   rT  r3   r4   Úhot©rí   )	r   Úogridr;  r:  rC   rD   rE   r_  rM  ©rZ   rY   rÊ  rH   r'   r)   s         r-   Ú#test_Poly3DCollection_get_facecolorrª  }	  ó†   € ô �8‰8�A�b˜�I˜q  D˜yÐ(Ñ)�D€A€qÜ	�‰�‹�a‰œ"Ÿ&™& ›) q™.Ñ	(€BÜ
�*‰*‹,€CØ	�‰˜¨ˆÓ	.€BØ
�‰˜˜1˜b uˆÓ-€AØ‡O�OÕr/   c                  ó:  — t         j                  ddd…ddd…f   \  } }t        j                  |«      dz  t        j                  | «      dz  z
  }t	        j
                  «       }|j                  dd¬«      }|j                  || |d	¬
«      }|j                  «        y r¥  )	r   r¨  r;  r:  rC   rD   rE   r_  Úget_edgecolorr©  s         r-   Ú#test_Poly3DCollection_get_edgecolorr®  ˆ	  r«  r/   zDvertical_axis, proj_expected, axis_lines_expected, tickdirs_expected)rT  ç#ðk$Iò?rT  ç.�_x%Iâ¿)rT  rT  çºÙ(·më?ç£å@µmÛ¿)rT  rT  rT  g      $À)ç#ðk$Iò¿rT  rT  çÓø…W’$%@gŽË—›˜Ã¬?gÞ2m Ù3°?gæº¾I²’¥¿g‰®°…ÅM¨¿gÞ2m Ù3°¿g‰®°…ÅM¨?rØ  )r¯  rT  rT  r°  )rT  r±  rT  r²  )rT  rT  r³  r´  gŽË—›˜Ã¬¿gæº¾I²’¥?)r   r   r   )rT  rT  r¯  r°  )r±  rT  rT  r²  )rT  r³  rT  r´  )r   r   r   c                 ó†  — d}t        j                  dddd¬«      }|j                  ddd| ¬«       |j                  «       j                  j                  «        |j                  «       }t        j                  j                  |||¬«       t        |j                  «       |j                  «       |j                  «       g«      D ]|  \  }}||   }	|j                  j                  «       }
t        j                  j                  |	|
|¬«       ||   }|j!                  d«      }t        j                  j#                  ||«       Œ~ y	)
a  
    Test the actual projection, axis lines and ticks matches expected values.

    Parameters
    ----------
    vertical_axis : str
        Axis to align vertically.
    proj_expected : ndarray
        Expected values from ax.get_proj().
    axis_lines_expected : tuple of arrays
        Edgepoints of the axis line. Expected values retrieved according
        to ``ax.get_[xyz]axis().line.get_data()``.
    tickdirs_expected : list of int
        indexes indicating which axis to create a tick line along.
    g�íµ ÷ÆÀ>r   r3   r4   r   ©r›   rœ   r�   rw  ©Úrtolr   N)rC   Úsubplotr    Ú
get_figurerË   rÌ   Úget_projr   rÞ   rÜ  rx   Ú	get_xaxisÚ	get_yaxisÚ	get_zaxisrQ   Úget_dataÚ_get_tickdirrñ  )rw  Úproj_expectedÚaxis_lines_expectedÚtickdirs_expectedr¸  r'   Úproj_actualr~   rR   Úaxis_line_expectedÚaxis_line_actualÚtickdir_expectedÚtickdir_actuals                r-   Útest_view_init_vertical_axisrÉ  “	  s  € ðH €DÜ	�‰�Q˜˜1¨Ô	.€BØ‡L�L�a˜a a°}€LÔEØ‡M�MƒO×Ñ×ÑÔ!ð —+‘+“-€KÜ‡J�J×Ñ˜}¨kÀÐÔEä˜bŸl™l›n¨b¯l©l«n¸b¿l¹l»nÐMÓNò 
H‰ˆˆ4à0°Ñ3ÐØŸ9™9×-Ñ-Ó/ÐÜ
�
‰
×"Ñ"Ð#5Ð7GØ(,ð 	#ô 	.ð -¨QÑ/ÐØ×*Ñ*¨9Ó5ˆÜ
�
‰
×%Ñ%Ð&6¸ÕGñ
Hr/   rw  Úreturnc                 óx  — t        j                  dddd¬«      }|j                  ddd| ¬«       |j                  «       j                  j                  «        |j                  «       }t        |t        j                  dd¬«      }|j                  |«       t        |t        j                  dd¬«      }|j                  |«       |j                  j                  | «      |j                  k(  sJ ‚|j                  «       }t        j                   j#                  t$        t        j                   j&                  ||«       y	)
zO
    Test vertical axis is respected when rotating the plot interactively.
    r   r3   r4   r   r¶  rý  r*  r¬   N)rC   r¹  r    rº  rË   rÌ   r»  r   r   r  r  r  Ú_axis_namesÚindexÚ_vertical_axisr   rÞ   Úassert_raisesÚAssertionErrorrÜ  )rw  r'   Úproj_beforeÚevent_clickÚ
event_moveÚ
proj_afters         r-   Útest_on_move_vertical_axisrÕ  í	  sê   € ô
 
�‰�Q˜˜1¨Ô	.€BØ‡L�L�a˜a a°}€LÔEØ‡M�MƒO×Ñ×ÑÔ!à—+‘+“-€KÜ˜R¬×(8Ñ(8ÀÈÔK€KØ×Ñ�[Ô!ä˜B¤{×'7Ñ'7¸sÈ#ÔN€JØ‡K�K�
Ôà�>‰>×Ñ Ó.°"×2CÑ2CÒCÐCÐCð —‘“€JÜ‡J�J×ÑÜœŸ
™
×2Ñ2°KÀõr/   zvertical_axis, aspect_expected)ç/Äê�0ó?çF&à×H’ì?rÖ  )r×  rÖ  rÖ  )rÖ  rÖ  r×  c                 ó*  — t        j                  dddd¬«      }|j                  ddd| ¬«       |j                  «       j                  j                  «        |j                  d «       t        j                  j                  ||j                  d¬«       y )Nr   r3   r4   r   r¶  rÝ  r·  )rC   r¹  r    rº  rË   rÌ   rz   r   rÞ   rÜ  Ú_box_aspect)rw  Úaspect_expectedr'   s      r-   Ú!test_set_box_aspect_vertical_axisrÛ  
  so   € ô 
�‰�Q˜˜1¨Ô	.€BØ‡L�L�a˜a a°}€LÔEØ‡M�MƒO×Ñ×ÑÔ!à×Ñ�dÔä‡J�J×Ñ˜°·±ÀTÐÕJr/   zarc_pathpatch.pngc                  ó¾   — t        j                  dddd¬«      } t        j                  dddddd	¬
«      }| j	                  |«       t        j                  |dd¬«       y )Nr   r3   r4   )r*  r*  r*  gÍÌÌÌÌÌì?r¨   r©   r²  )rã   Úheightrm  Útheta1Útheta2r   r[   r”  )rC   r¹  ÚmpatchÚArcrJ  r   r–  )r'   r™  s     r-   Útest_arc_pathpatchrâ  
  sP   € ô 
�‰�Q˜˜1¨Ô	.€BÜ�
‰
�: S°Ø B¨sô	4€Aà‡L�L�„OÜ	×Ñ˜Q !¨#Ö.r/   zpanecolor_rcparams.pngc                  ó°   — t        j                  ddddœ«      5  t        j                  d¬«      } | j                  d¬«       d d d «       y # 1 sw Y   y xY w)	Nr)   r¥   r¦   )zaxes3d.xaxis.panecolorzaxes3d.yaxis.panecolorzaxes3d.zaxis.panecolorr6  rÅ   r3   r4   )rC   r  rD   rE   )rH   s    r-   Útest_panecolor_rcparamsrä  #
  sP   € ô 
�‰°3Ø36Ø36ñ8ó 
9ñ )ô �j‰j Ô(ˆØ�‰ 4ˆÔ(÷	)÷ )ñ )ús   š)AÁAc                 óì   — | j                  dd¬«      }g d¢}g d¢}g d¢}|j                  |||d«       g d¢|dd g d¢|dd |j                  dd¬«      }g d¢}g d¢}g d¢}|j                  |||d«       y)z~
    Test to see if the `z` axis does not get mutated
    after a call to `Axes3D.plot`

    test cases came from GH#8990
    rT  r3   r4   rÛ  )rT  rT  rT  zo-NrA  )r<   r=   rC  rY   rZ   r[   rD  s          r-   Ú"test_mutating_input_arrays_y_and_zræ  .
  s†   € ð ×
Ñ
˜s¨tÐ
Ó
4€CÚ€AÚ€AÚ€AØ‡H�HˆQ��1�dÔò €A�a€DÚ€A�a€Dð ×
Ñ
˜c¨dÐ
Ó
3€CÚ€AÚ€AÚ€AØ‡H�HˆQ��1�dÕr/   c                  óˆ  — t         j                  dddg} dt         j                  ddg}ddt         j                   dg}g d¢g d¢g d¢g d¢g}t        j                  «       }|j                  d¬«      }|j                  | |||¬«      }t        |j                  «       «      t        t        t        |«      |�/  «       «      k(  sJ ‚y)	zU
    Test color parameter usage with non-finite coordinate arrays.

    GH#26236
    r   r   r   )rT  rT  rT  r   r3   r4   r½   N)r   rï  r  rC   rD   rE   rn  r„   Úget_offsetsÚsuperr=  Úget_facecolors)rY   rZ   r[   r   rH   r'   Úpath3ds          r-   Útest_scatter_masked_colorrì  H
  sº   € ô 
�‰��A˜Ð€AØ	
ŒB�F‰F�A˜Ð€AØ	
ˆA”—‘ˆw˜Ð€AâÚÚÚð	€Fô �*‰*‹,€CØ	�‰ DˆÓ	)€BØ�Z‰Z˜˜1˜a vˆZÓ.€Fô ˆv×!Ñ!Ó#Ó$ÜŒu”T˜&“\ 6Ñ9Ó;Ó<ò=ð =ñ =r/   zsurface3d_zsort_inf.pngc                  óÖ  — dt         j                  d<   t        j                  «       } | j                  d¬«      }t        j
                  ddd…ddd…f   \  }}t	        j                  |«      dz  t	        j                  |«      dz  z   }t        j                  ||j                  d   dz  d …|j                  d	   dz  d …f<   |j                  |||d
¬«       |j                  dd¬«       y )NTré   r3   r4   r  r   r  r   r   r  r§  r   é‘   )r›   rœ   )rC   r÷   rD   rE   r   r¢  r:  r;  r  r¥  r_  r    ro  s        r-   Útest_surface3d_zsort_infrï  b
  sÆ   € à(,„C‡L�LÐ$Ñ%Ü
�*‰*‹,€CØ	�‰ DˆÓ	)€Bä�8‰8�B�q˜�H˜b  3˜hÐ&Ñ'�D€A€qÜ
�‰ˆq‹	�1‰”r—v‘v˜a“y !‘|Ñ#€AÜ,.¯F©F€A€a‡g�gˆa�j�A�oÑ˜Ÿ™ ™
 a™Ñ(Ð(Ñ)à‡O�O�A�q˜! %€OÔ(Ø‡L�L�b˜s€LÕ#r/   c                  óÚ   — t        j                  t        d¬«      5  t        j                  g d¢g d¢g d¢gt
        «      } t        j                  | gd¬«      }d d d «       y # 1 sw Y   y xY w)NzCYou must provide facecolors, edgecolors, or both for shade to work.rG  rW  rX  r•   TrÆ   )rI  rJ  r*  r   r    r¨  r   rZ  )r[  rª   s     r-   Ú&test_Poly3DCollection_init_value_errorrñ  p
  sY   € ô 
�‰”zð5ô
6ñ 7ô �x‰xš¢IªyÐ9¼5ÓAˆÜ×"Ñ" D 6°Ô6ˆ÷	7÷ 7ñ 7ús   œ<A!Á!A*c            	      óÚ   — t        j                  «       } | j                  dd¬«      }|j                  dddt	        j
                  g d¢«      ¬«       | j                  j                  «        y )NrT  r3   r4   r   r   rÚ  r½   )rC   rD   rE   rn  r   r    rË   rÌ   rG   s     r-   Ú%test_ndarray_color_kwargs_value_errorró  z
  sL   € ô �*‰*‹,€CØ	�‰˜¨ˆÓ	.€BØ‡J�Jˆq�!�QœbŸh™h¢|Ó4€JÔ5Ø‡J�J‡O�OÕr/   )¿Ú	functoolsr   ÚplatformÚsysrI  Úmpl_toolkits.mplot3dr   r   r   r   Úmpl_toolkits.mplot3d.axes3dr   rà  Ú
matplotlibr  Úmatplotlib.backend_basesr   r	   r
   r   r   rÚ   r   rà  Úmatplotlib.testing.decoratorsr   r   Úmatplotlib.testing.widgetsr   Úmatplotlib.collectionsr   r   Úmatplotlib.patchesr   r   Úmatplotlib.pathr   Úmatplotlib.textr   Úmatplotlib.pyplotÚpyplotrC   Únumpyr   Úpartialr[  r.   r>   rI   rS   rg   r   r…   r�   r£   r·   rÀ   rÏ   rÑ   ræ   Úmachinerþ   r  r
  r  ÚmarkÚparametrizer&  r0  r6  r>  rE  rN  rd  ri  rp  rt  rv  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>  rB  rG  rO  rU  r\  rg  rp  rs  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(  ra  rd  ri  rn  r�  r„  r�  r•  r   r¯  r¶  r¾  rÅ  rÇ  rÐ  rÖ  rø  r  r-  r  ÚRIGHTrR  r   ÚcontextrY  r^  ru  r{  r~  r�  r†  r*  ÚtuplerR  r‰  r�  r’  r›  rŸ  r£  rª  r®  rÉ  ÚstrrÕ  rÛ  râ  rä  ræ  rì  rï  rñ  ró  r#  r/   r-   ú<module>r     sG  ðÛ Û Û Û 
ã ç >Ó >Ý AÛ ÷:ñ :å ß ;ß OÝ 1ß Aß 0Ý  Ý  å Û ð +˜×*Ñ*Ø $¨iô9Ð òHñ   Ô(ñó )ðñ
 ˜Ð(°Ô8ñó 9ðñ Ð3Ð4¸GÔDñ%ó Eð%ñ Ð-Ð.¸EÈÔQñ@ó Rð@ñ ˜˜°UÀ'ÔJñ(ó Kð(ñ  Ð1Ð2Ø$)°ô:ñ4ó:ð4ò
Jñ Ð3Ð4¸GØ$'§L¡L°HÒ$<™DÀ!ôEñóEðñ( ˜˜¨WÔ5ñJó 6ðJò	/ñ Ð+Ð,°GÔ<ñó =ðñ& Ð.Ð/°wÔ?ñ	ó @ð	òMñ6 ˜Ð)°Ø!1 ×!1Ñ!1Ó!3°xÒ!?™AÀUôLñGóLðGñ Ð1Ð2¸'ÔBñó Cðñ Ð)Ð*°'Ô:ñ
ó ;ð
ñ Ð.Ð/°wÔ?ñó @ðð ‡�×ÑÐ)¨V²YÐ,?Ø-2²LÐ,AØ-2²LÐ,Að,Có Dñ   Ô(ñó )óDðñ0 Ð)Ð*°¸GÔDñó Eðòñ ˜˜¨wÔ7ñó 8ðñ   Ô(ñó )ðò$ñ" Ð+Ð,°GÔ<ñó =ðñ0   Ô(ñ	*ó )ð	*ñ ˜Ð)°Ô9ñ
.ó :ð
.ñ Ð.Ð/°wÔ?ñ&ó @ð&ñ  Ð2Ð3¸7ÔCñ4ó Dð4ñ   Ô(ñ
-ó )ð
-ñ   Ô(ñ9ó )ð9ð( ‡�×Ñ˜¨¨e }Ó5Ù  Ô(ñ3Có )ó 6ð3Cðl ‡�×Ñ˜ # s Ó,Ù  Ô(ñ,ó )ó -ð,ñ&   Ô(ñ2ó )ð2ñ. Ð.Ð/°UÀ'ÔJñ$ó Kð$ñ Ð0Ð1¸ÔAñHó BðHñ, Ð3Ð4¸GÔDñ=ó Eð=ñ$ ˜Ð)°Ô9ñ-ó :ð-ñ$ Ð=Ð>ÀgÔNñ
ó Oð
ñ Ð/Ð0¸Ô@ñó Aðñ Ð/Ð0¸Ô@ñó Aðñ4   Ô(ñó )ðñ"   Ô(ñ!ó )ð!ñ Ð7Ð8ÀÔHñó Iðñ ˜˜°EÀÔIñó Jðñ0   Ô(ñHó )ðHñ0 ˜Ð)¨u¸GÔDñ9ó Eð9ñ" Ð/Ð0°dÀ'ÔJñ?ó Kð?ñ" Ð*Ð+°7Ô;ñ5ó <ð5ñ Ð5Ð6¸gÔFñ4ó Gð4ñ Ð5Ð6¸gÔFñ6ó Gð6ò9ò8ñ ˜Ð(°¸UÔCñó Dðñ*   Ô(ñIó )ðIñ Ð.Ð/°wÔ?ñIó @ðIñ" Ð2Ð3¸7ÔCñ	ó Dð	ò
Dñ   Ô(ñó )ðò6%ñ Ð6Ð7¸wÔGñ+ó Hð+òñ Ð5Ð6¸gÔFñ+ó Gð+ñ$ Ð8Ð9ÀÔIñó Jðñ8 Ð9Ð:À'ÔJñó Kðò4SòRñ Ð.Ð/Ø$)°ô:ñ1ó:ð1ñ* Ð)Ð*¸ÀWÔMñó Nðñ Ð-Ð.Ø$)°ô:ñó:ðò	!ò
ò,ó ñ" Ð/Ð0¸Ô@ñó Aðñ, Ð5Ð6¸gÔFñó Gðò:	/ò9ð  ‡�×Ñ˜ Ó1Ø‡�×Ñ˜Ð!4Ó5ñ:ó 6ó 2ð:ñ(   Ô(ñ ó )ð ò2ñ Ð2Ð3Ø$)°ô:ñ5ó:ð5ñ Ð+Ð,¸%ÀwÔOñó Pðñ Ð/Ð0¸Ô@ñó Aðñ   Ô(ñ#4ó )ð#4ðL ‡�×Ñ˜ 2§6¢6¨2¯6ª6Ð"2Ó3Ø‡�×ÑÐ+ò .ó ñ&óó 4ð&÷y+ñ y+òxPñ$   Ô(ñ<ó )ð<ò#ò(.ñ"   Ô(ñ$Aó )ð$AñN   Ô(ñ@ó )ð@ñ Ð$Ð%¨WÔ5ñ-ó 6ð-ñ Ð4Ð5¸WÈ%ÔPñ"ó Qð"ñ" Ð)Ð*°'Ø!1 ×!1Ñ!1Ó!3°xÒ!?™AÀTôKñóKðñ �<�.¨°UÔ;ñ"ó <ð"ñ: Ð)Ð*°'Ô:ñ".ó ;ð".òJ3ò %òB#ñ"   Ô(ñ
6ó )ð
6ò	)ò[Fð| ‡�×Ñ˜ØCóEñARóEðARòH$0ðN ‡�×ÑÐ3Ø! ;×#3Ò#3°TØDðFà! ;×#3Ò#3°SØGðIà! ;×#3Ò#3°SØFðHà! ;×#4Ò#4°dØGðIà  +×"2Ò"2°DØJðLà  +×"2Ò"2°CØIðKà  +×"2Ò"2°CØHðJðKóLñ:3óLð:3ðz ‡‚×Ò�9ÓÙ  Ô(ñ@ó )ó ð@ò(Dñ Ð#4Ð"5À4Ø#˜W¨Wô7ñOó7ðOòdJò>:ò'ò#ð ‡�×ÑÐ3Ø	�U˜BÐ DÐEØ	�Z Ð%IÐJØ	�Z Ð%IÐJØ	‘U“W˜s B˜iÐ)MÐNØ	‘U“W˜s B˜iÐ)MÐNØ	‘U“W˜s B˜iÐ)MÐNØ	�E˜C ˜8Ø	2ð	4à	�E ¨°Ñ3Ø	2ð	4à	�E ¨Ñ+Ø	2ð	4à	�F˜BÐ LÐMð6ó ñ$óð$ñ   Ô(ñ
2ó )ð
2ò0ñ   Ô(ñ	ó )ð	ñ Ð#7Ð"8Ø"Øô!ñó!ðòóóð ‡�×ÑÙJð ã/Û/Û&Û0ð	ñ ™jÐ)©K¹Ð+EÐFÙ™zÐ*©[¹+Ð,FÐGÙ™{Ð+©k¹:Ð-FÐGðó
 ð	
ð  ã/Û/Û&Û0ð	ñ ™zÐ*©Z¹Ð,DÐEÙ™jÐ)©K¹Ð+DÐEÙ™{Ð+©j¹*Ð-EÐFðó
 ð	
ð  ã/Û/Û&Û0ð	ñ ™{Ð+©j¹+Ð-FÐGÙ™jÐ)©J¹
Ð+CÐDÙ™kÐ*©Z¹Ð,DÐEðó
 ð	
ð?.ó1òd%Hóe1ðd%HðP ‡�×Ñ™ª/Ó:ñ¨cñ °dó ó ;ðð0 ‡�×ÑÙ$à	Ó,Ð-Ø	Ó,Ð-Ø	Ó,Ð-ðóòKóðKñ Ñ#6Ð"7Ø"Øô!ò/ó!ð/ñ Ñ#;Ð"<Ø"Øô!ò)ó!ð)ñ   Ô(òó )ðó2=ñ4 Ñ2Ð3¸7ÔCò
$ó Dð
$ó7ôr/   