+
     ]i<I  c            	       s   R t ^ RIt^ RIt^ RIHtHt ^ RIt^ RIt^ RIt^ RI	H
t
 ^ RIt^ RIHt ^ RIHtHtHt ^ RIHt ^ RIHtHtHtHtHtHt ]P8                  ! ]4      t/ RR	bR
R	bRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRR bR!R"bR#R$bR%R&bR'R(b/ R)R*bR+R,bR-R.bR/R0bR1R2bR3R4bR5R6bR7R8bR9R:bR;R<bR=R>bR?R@bRARBbRCRDbRERFbRGRHbRIRJbCRKRLRMRNRORPRQRR/CtRS t  ! RT RU]PB                  4      t" ! RV RW]PB                  4      t# ! RX RY]PH                  4      t%0 R`mt& ! RZ R[]PN                  4      t( ! R\ R]]PR                  4      t*]PV                   ! R^ R_]4      4       t,R# )az7Displays Agg images in the browser, with interactivity.N)BytesIOStringIO)Path)Image)_apibackend_basesbackend_tools)backend_agg)_BackendMouseButtonKeyEventLocationEvent
MouseEventResizeEventZAltZaltZAltGraphZCapsLockZ	caps_lockZControlZcontrolZMetaZmetaZNumLockZnum_lockZ
ScrollLockZscroll_lockZShiftZshiftZSupersuperZEnterZenterZTabZtabZ	ArrowDownZdownZ	ArrowLeftZleftZ
ArrowRightZrightZArrowUpZupZEndZendZHomehomeZPageDownZpagedownZPageUpZpageupZ	BackspaceZ	backspaceZDeleteZdeleteZInsertZinsertZEscapeZescapeZPauseZpauseZSelectZselectZDeadZdeadZF1Zf1ZF2Zf2ZF3Zf3ZF4Zf4ZF5Zf5ZF6Zf6ZF7Zf7ZF8Zf8ZF9Zf9ZF10Zf10ZF11Zf11ZF12Zf12c                s    W P                  R4      ^,           R pRV 9   d#   \        V4      ^8X  d   V P                  RR4      p V\        9   d   \        V,          pV RV P                  R4       V,           p V # )zHandle key valuesZkNzshift+ )ZindexlenZreplace_SPECIAL_KEYS_LUT)keyZvalue   & N/usr/lib64/python3.14/site-packages/matplotlib/backends/backend_webagg_core.py_handle_keyr   E   sm    		#"#$E3u:?++h+C!!!%(
osyy~

&CJ    c                   sD   a a ] tR t^Qt oV 3R ltR tR tR tRtVt	V ;t
# )TimerTornadoc                6   < R V n         \        SV `  ! V/ VB  R # N)_timerr   __init__selfargskwargs	__class__   &*,r   r   ZTimerTornado.__init__R   s    $)&)r   c                s   ^ RI pV P                  4        V P                  '       dg   VP                  P                  P                  4       pVP                  \        P                  ! V P                  R7      V P                  4      V n        R# VP                  P                  V P                  \        V P                  R4      4      V n        V P                  P                  4        R# )    N)Zmillisecondsư>)tornado_timer_stop_singleioloopIOLoopinstanceZadd_timeoutdatetimeZ	timedeltainterval	_on_timerr   ZPeriodicCallbackmaxZstartr   r%   r(      &  r   _timer_startZTimerTornado._timer_startV   s    <<<^^**335F ,,""> DK "..99DMM4(*DK KKr   c                s   ^ RI pV P                  f   R# V P                  '       dA   VP                  P                  P                  4       pVP                  V P                  4       MV P                  P                  4        RV n        R# )r#   N)r%   r   r'   r(   r)   r*   Zremove_timeoutZstopr/   r0   r   r&   ZTimerTornado._timer_stope   s\    ;;\\\^^**335F!!$++.KKr   c                f    V P                   e#   V P                  4        V P                  4        R # R # r   )r   r&   r1   r      &r   _timer_set_intervalZ TimerTornado._timer_set_intervalq   s)    ;;" #r   )r   )__name__
__module____qualname____firstlineno__r   r1   r&   r5   __static_attributes____classdictcell____classcell__r!   __classdict__   @@r   r   r   Q   s     * 
   r   r   c                   sJ   a a ] tR t^xt oV 3R ltR tR tR tR tRt	Vt
V ;t# )TimerAsyncioc                r   r   )_taskr   r   r   r"   r   r   ZTimerAsyncio.__init__y   s    
$)&)r   c                s   "     \         P                  ! V4      G Rj  xL
  V P                  4        V P                  '       d   R# KF   L*  \         P                   d     R# i ; i5iTN)asyncioZsleepr-   r'   ZCancelledError)r   r,      &&r   _timer_taskZTimerAsyncio._timer_task}   sX     mmH--- <<<   .
 )) s8   A'A A	%A A'	A A$ A'#A$$A'c                s    V P                  4        \        P                  ! V P                  \	        V P
                  R ,          R4      4      4      V n        R# )g     @@r$   N)r&   rC   Zensure_futurerE   r.   r,   rA   r3   r4   r   r1   ZTimerAsyncio._timer_start   s>    **S!7>?

r   c                sd    V P                   e   V P                   P                  4        R V n         R # r   )rA   Zcancelr3   r4   r   r&   ZTimerAsyncio._timer_stop   s#    ::!JJ
r   c                r2   r   )rA   r&   r1   r3   r4   r   r5   Z TimerAsyncio._timer_set_interval   s)    ::! "r   )rA   )r6   r7   r8   r9   r   rE   r1   r&   r5   r:   r;   r<   r=   r?   r   r@   r@   x   s#     *	

   r   r@   c                   s  a a ] tR t^t o]P
                  ! R 4      t]tRt	V 3R lt
R tV 3R ltRR ltR tR tR	 tR
 tR tR tR tR tR t];t;t;t;t;t;ttR t];tt R t!R t"R t#R t$R t%R t&R t'R t(Rt)Vt*V ;t+# )FigureCanvasWebAggCorec                s    \         # r   )FigureManagerWebAggclsr4   r   Z<lambda>ZFigureCanvasWebAggCore.<lambda>   s    3Fr   Fc                s   < \         SV `  ! V/ VB  R V n        R V n        \        P
                  ! R4      V n        RV n        RV n        R# )TfullN)r#   r#   )NN)	r   r   _png_is_old_force_fullnpZempty
_last_buff_current_image_mode_last_mouse_xyr   r"   r   r   ZFigureCanvasWebAggCore.__init__   sK    $)&)    ((6*
 $* *r   c                s     ^ RI Hp V! 4        R# )r#   )showN)Zmatplotlib.pyplotrQ   )r   rQ   r   r   rQ   ZFigureCanvasWebAggCore.show   s
    *r   c                s   < R V n          \        SV `	  4        V P                  P	                  4        R#   T P                  P	                  4        i ; irB   )rK   r   drawmanagerrefresh_allr   r!      &r   rR   ZFigureCanvasWebAggCore.draw   s:    	'GLNLL$$&DLL$$&s	   4 Ac                sH    R V n         V P                  P                  4        R# rB   )rK   rS   rT   )r   bboxrD   r   blitZFigureCanvasWebAggCore.blit   s      "r   c                s(    V P                  R 4       R# )rR   N)
send_eventr3   r4   r   	draw_idleZ FigureCanvasWebAggCore.draw_idle   s    r   c                s   \         P                  ! \        P                  P                  R \        P                  P
                  R\        P                  P                  R\        P                  P                  R\        P                  P                  R\        P                  P                  R\        P                  P                  R/VR7      pV P                  RVR7       R	# )
ZpointerZdefaultZ	crosshairZmoveZwaitz	ew-resizez	ns-resize)cursorr[   N)r   Zcheck_getitemr   ZCursorsZHANDZPOINTERZSELECT_REGIONZMOVEZWAITZRESIZE_HORIZONTALZRESIZE_VERTICALrY   )r   r[   rD   r   
set_cursorZ!FigureCanvasWebAggCore.set_cursor   s    ##!!&&	!!))9!!//!!&&!!&&!!33[!!11;%
  	0r   c                s    \         P                  ! RR.VR7       V P                  V8w  d   Wn        V P                  R4       R# R# )a  
Set the image mode for any subsequent images which will be sent
to the clients. The modes may currently be either 'full' or 'diff'.

Note: diff images may not contain transparency, therefore upon
draw this mode may be changed if the resulting image has any
transparent component.
rJ   diffmodeN)r   Zcheck_in_listrO   handle_send_image_mode)r   r_   rD   r   set_image_modeZ%FigureCanvasWebAggCore.set_image_mode   s@     	FF+$7##t+'+$''- ,r   c                s   V P                   '       Ed   V P                  4       p\        P                  ! VP	                  4       4      pVP                  \        P                  4      P                  ^4      pV P                  '       gF   VP                  V P                  P                  8w  g!   VR,          ^8g  P                  4       '       d   V P                  R4       TpM6V P                  R4       W0P                  8g  p\        P                  ! WS^ 4      pVP                  4       V n
        RV n        RV n         VP                  \        P                  R7      P!                  . VP                  O^N54      p\#        4       ;_uu_ 4       p\$        P&                  ! V4      P)                  VRR7       VP+                  4       uuRRR4       # R#   + '       g   i     R# ; i)	i   rJ   r]   F)Zdtypepng)formatN)NNNrd   i   )rK   get_rendererrM   ZasarrayZbuffer_rgbaZviewZuint32ZsqueezerL   ZshaperN   Zanyra   ZwhereZcopyZuint8Zreshaper    r   Z	fromarraysavegetvalue)r   ZrendererZpixelsZbuffoutputr]   Zdatarb   s   &       r   get_diff_imageZ%FigureCanvasWebAggCore.get_diff_image   s\   ((*HZZ 4 4 67F ;;ryy)11!4D   zzT__%:%:: w3.3355##F+##F+.$a0 #iikDO$D$D;;RXX;.667I7Iq7IJDc%**3u*=||~ 9 8 s   
7GG	c                sX    VR ,          p\        V RV 2V P                  4      pV! V4      # )typeZhandle_)getattrhandle_unknown_event)r   evente_typeZhandlers   &&  r   handle_eventZ#FigureCanvasWebAggCore.handle_event  s3    v$'& 2335u~r   c                sB    \         P                  R VR,          V4       R# )zUnhandled message type %s. %srj   N)_logZwarningr   rm   rD   r   rl   Z+FigureCanvasWebAggCore.handle_unknown_event
  s    4eFmUKr   c                    R # r    rq   rD   r   
handle_ackZ!FigureCanvasWebAggCore.handle_ack  s     	r   c                s&    V P                  4        R # r   )rR   rq   rD   r   handle_drawZ"FigureCanvasWebAggCore.handle_draw  s    		r   c                s   VR ,          pVR,          pV P                  4       P                  V,
          pW#3V n        VR,          pVR,          ^,           p\        P                  ^3\        P
                  ^3\        P                  ^3\        P                  ^3\        P                  ^33 UUu0 uF  w  rVVR,          V,          '       g   K  VkK!  	  pppVR,          pVP                  R4      p	VR9   d(   \        VR,           WVXWR7      P                  4        R# VR	8X  d"   \        R
WVXRWR7      P                  4        R# VR8X  d'   \        RWW1R,          WR7      P                  4        R# VR8X  d(   \        VR,           WVWxV	R7      P                  4        R# VR9   d'   \        VR,           WVWR7      P                  4        R# R# u uppi )xyrj   buttonbuttons	modifiersguiEvent_event)rz   r{   dblclickZbutton_press_eventT)r}   rz   r{   ZscrollZscroll_eventstep)r~   rz   r{   Zmotion_notify)ry   rz   r{   N)Zbutton_pressZbutton_release)Zfigure_enterZfigure_leave)re   heightrP   r	   ZLEFTZRIGHTZMIDDLEZBACKZFORWARDgetr   _processr   )
r   rm   rv   rw   rn   rx   Zmaskry   rz   r{   s
   &&        r   _handle_mouseZ$FigureCanvasWebAggCore._handle_mouse  s   #J#J&&*dvx1$ !!1%""A&##Q'!!1%$$b)(
(|v y!D(( F ( 	 
 +&	99Z(77v($1f!*??Gxzz!+Ta$!*??Gxzx~tf!*??Gxz&v($1&h!77&8+Ta$-BBJ(* 81
s   /GGc                s    \        VR ,          R,           V \        VR,          4      .V P                  O5RVP                  R4      / P	                  4        R# )rj   r|   r   r{   N)r
   r   rP   r   r   rq   rD   r   r   Z"FigureCanvasWebAggCore._handle_key@  sI    v)4U5\*	1-1-@-@	1))J/	119r   c                sJ    \        V P                  VR ,          4      ! 4        R# )nameN)rk   toolbarrq   rD   r   handle_toolbar_buttonZ,FigureCanvasWebAggCore.handle_toolbar_buttonF  s    eFm,.r   c                s(   V P                   P                  4       pV'       g   R V P                  P                   2pV P	                  RVR7       RV n        V P                  '       d   V P                  P                  4        V P                  4        R# )zFigure figure_labelZlabelTN)	figureZ	get_labelrS   numrY   rL   r   set_history_buttonsrZ   )r   rm   r   s   && r   handle_refreshZ%FigureCanvasWebAggCore.handle_refreshJ  sk    {{,,.$T\\%5%5$67Ll;<<< LL,,.r   c                s   \        VP                  R R4      4      V P                  ,          p\        VP                  RR4      4      V P                  ,          pV P                  pVP	                  W$P
                  ,          W4P
                  ,          RR7       RV n        V P                  P                  ! VP                  P                  RR/  \        RV 4      P                  4        V P                  4        R# )	Zwidthi   r   F)forwardTr   Zresize_eventN)Zintr   device_pixel_ratior   Zset_size_inchesZdpirK   rS   resizerW   sizer   r   rZ   )r   rm   rv   rw   Zfigs   &&   r   handle_resizeZ$FigureCanvasWebAggCore.handle_resizeV  s    		'3'(4+B+BB		(C()D,C,CCkkAKWWeD  SXX]]:E:ND)224r   c                s@    V P                  R V P                  R7       R# )Z
image_moder^   N)rY   rO   rq   rD   r   r`   Z-FigureCanvasWebAggCore.handle_send_image_moded  s    4+C+CDr   c                H    V P                  VP                  R ^4      4       R# )r   N_handle_set_device_pixel_ratior   rq   rD   r   handle_set_device_pixel_ratioZ4FigureCanvasWebAggCore.handle_set_device_pixel_ratioh  s    ++EII6JA,NOr   c                r   )Z	dpi_ratioNr   rq   rD   r   handle_set_dpi_ratioZ+FigureCanvasWebAggCore.handle_set_dpi_ratiok  s    ++EIIk1,EFr   c                sf    V P                  V4      '       d   R V n        V P                  4        R# R# rB   )Z_set_device_pixel_ratiorL   rZ   )r   r   rD   r   r   Z5FigureCanvasWebAggCore._handle_set_device_pixel_ratioo  s+    ''(:;;#DNN <r   c                sh    V P                   '       d    V P                   P                  ! V3/ VB  R # R # r   )rS   _send_event)r   
event_typer    s   &&,r   rY   Z!FigureCanvasWebAggCore.send_eventt  s'    <<<LL$$Z:6: r   )rO   rL   rN   rP   rK   r   ),r6   r7   r8   r9   r   ZclasspropertyZmanager_classr@   Z
_timer_clsZsupports_blitr   rQ   rR   rX   rZ   r\   ra   ri   ro   rl   rt   ru   r   Zhandle_button_pressZhandle_button_releaseZhandle_dblclickZhandle_figure_enterZhandle_figure_leaveZhandle_motion_notifyZhandle_scrollr   Zhandle_key_pressZhandle_key_releaser   r   r   r`   r   r   r   rY   r:   r;   r<   r=   r?   r   rF   rF      s     &&'FGMJ M+$
'# 1.&BL!MJ && &/ &/ &&1&4H< -87)/
EPG
; ;r   rF   c            
       s   aa ] tR tRt o. ]P
                  P                  ORN U UUUu. uF  w  rr#V\        9   g   K  WW#3NK  	  upppp tV3R ltR t	R t
R tR tV3R ltV3R ltR	 tR
tVtV;t# u upppp i )NavigationToolbar2WebAggi  c                s4   < R V n         \        SV `	  V4       R# )r   N)messager   r   )r   canvasr!   s   &&r   r   Z!NavigationToolbar2WebAgg.__init__  s     r   c                sl    WP                   8w  d   V P                  P                  R VR7       Wn         R# )r   r   N)r   r   rY   )r   r   rD   r   set_messageZ$NavigationToolbar2WebAgg.set_message  s(    ll"KK""9g">r   c                sB    V P                   P                  R W#WER7       R# )
rubberbandx0y0x1y1Nr   rY   )r   rm   r   r   r   r   s   &&&&&&r   draw_rubberbandZ(NavigationToolbar2WebAgg.draw_rubberband  s    |bHr   c                sF    V P                   P                  R RRRRR7       R# )r   r   Nir   r3   r4   r   remove_rubberbandZ*NavigationToolbar2WebAgg.remove_rubberband  s    |rbRHr   c                sP    V P                   P                  R4       V P                  # )zSave the current figure.rf   )r   rY   ZUNKNOWN_SAVED_STATUS)r   r   s   &*r   save_figureZ$NavigationToolbar2WebAgg.save_figure  s     v&(((r   c                   < \         SV `  4        V P                  P                  R V P                  P
                  R7       R# Znavigate_moder^   N)r   panr   rY   r_   r   rU   rV   r   r   ZNavigationToolbar2WebAgg.pan  s+    TYY^^Dr   c                r   r   )r   zoomr   rY   r_   r   rU   rV   r   r   ZNavigationToolbar2WebAgg.zoom  s+    TYY^^Dr   c                s    V P                   P                  ^ 8  pV P                   P                  \        V P                   4      ^,
          8  pV P                  P	                  RWR7       R# )r#   Zhistory_buttons)ZBackZForwardN)Z
_nav_stackZ_posr   r   rY   )r   Zcan_backwardZcan_forwardr0   r   r   Z,NavigationToolbar2WebAgg.set_history_buttons  sV    ++a/oo**S-AA-EE0$0 	 	Gr   r   )ZDownloadzDownload plotZfilesavedownload)r6   r7   r8   r9   r   NavigationToolbar2	toolitems_ALLOWED_TOOL_ITEMSr   r   r   r   r   r   r   r   r:   r;   r<   )ZtextZtooltip_textZ
image_fileZname_of_methodr!   r>   s   0000@@r   r   r     s     C]--77 CACC ;D
 00	 	9Z8CI!
II)
EEG GIs
   A6
A6
r   c                   s   a a ] tR tRt oRt]tRtV 3R ltR t	RR lt
R tR tR	 tR
 tR tR t]RR l4       t]R 4       tR tRtVtV ;t# )rG   i  NZ
Matplotlibc                sD   < \        4       V n        \        SV `  W4       R # r   )Zsetweb_socketsr   r   )r   r   r   r!   s   &&&r   r   ZFigureManagerWebAgg.__init__  s    5%r   c                rr   r   rs   r3   r4   r   rQ   ZFigureManagerWebAgg.show  s    r   c                s    V P                  R WP                  P                  ,          W P                  P                  ,          3VR7       R# )r   )r   r   N)r   r   r   )r   ZwZhr   s   &&&&r   r   ZFigureManagerWebAgg.resize  s@    kk444kk4446	 	 	r   c                s8    V P                  R VR7       Wn        R# )r   r   N)r   _window_title)r   ZtitlerD   r   set_window_titleZ$FigureManagerWebAgg.set_window_title  s    u5"r   c                s    V P                   # r   )r   r3   r4   r   get_window_titleZ$FigureManagerWebAgg.get_window_title  s    !!!r   c                s   \        VR 4      '       g   Q h\        VR4      '       g   Q hV P                  P                  V4       V P                  ! V P                  P
                  P                  P                  !   V P                  R4       R# )send_binary	send_jsonZrefreshN)	Zhasattrr   Zaddr   r   r   rW   r   r   r   Z
web_socketrD   r   add_web_socketZ"FigureManagerWebAgg.add_web_socket  sl    z=1111z;////Z(T[['',,112#r   c                <    V P                   P                  V4       R # r   )r   Zremover   rD   r   remove_web_socketZ%FigureManagerWebAgg.remove_web_socket  s    
+r   c                r   r   )r   ro   )r   ZcontentrD   r   handle_jsonZFigureManagerWebAgg.handle_json  s      )r   c                s    V P                   '       dG   V P                  P                  4       pVe'   V P                    F  pVP                  V4       K  	  R # R # R # r   )r   r   ri   r   )r   r]   sr0   r   rT   ZFigureManagerWebAgg.refresh_all  sL    ;;--/D))AMM$' *   r   c                s6   Vf   \        4       pMTpVP                  \        \        4      P                  R,          P                  RR7      4       . pV P                  P                   F2  w  rErgVf   VP                  . RO4       K  VP                  WEWg.4       K4  	  VP                  R\        P                  ! V4       R24       . p\        \        P                  4       P                  4       4       F  w  rVP                  V
^ ,          4       K  	  VP                  R\        P                  ! V4       R24       VP                  RP                  \        P                  ! \        P!                  4       4      4      4       Vf   VP#                  4       # R # )	Nzweb_backend/js/mpl.jszutf-8)Zencodingzmpl.toolbar_items = z;

zmpl.extensions = zmpl.default_extension = {};)r   r   r   r   )r   Zwriter   __file__ZparentZ	read_text
ToolbarClsr   ZappendjsonZdumpsZsortedrF   Zget_supported_filetypes_groupedZitemsrc   Zget_default_filetyperg   )rI   Zstreamrh   r   r   ZtooltipZimageZmethodZ
extensionsZfiletypeZexts   &&         r   get_javascriptZ"FigureManagerWebAgg.get_javascript  sQ   >ZFFd8n++.EEii1	3 	,/NN,D,D(D5|  !12  $!?@	 -E
 	+DJJy,A+B%HI
#$:$C$C$E$)EG-MH c!f%- 	(J)?(@FG299JJ-BBDEG 	H >??$$ r   c                s    \         P                  P                  \         P                  P                  \        4      R 4      # )Zweb_backend)osZpathZjoinZdirnamer   rH   r4   r   get_static_file_pathZ(FigureManagerWebAgg.get_static_file_path  s$    ww||BGGOOH5}EEr   c                sZ    R V/VCpV P                    F  pVP                  V4       K  	  R# )rj   N)r   r   )r   r   r    Zpayloadr   s   &&,  r   r   ZFigureManagerWebAgg._send_event  s-    :00!!AKK  "r   )r   r   )Tr   )r6   r7   r8   r9   Z_toolbar2_classr   r   r   r   rQ   r   r   r   r   r   r   rT   Zclassmethodr   r   r   r:   r;   r<   r=   r?   r   rG   rG     su     O)J M&#"
$,*( % %< F F! !r   rG   c                   s    ] tR tRt]t]tRtR# )_BackendWebAggCoreAggi  rs   N)	r6   r7   r8   r9   rF   ZFigureCanvasrG   ZFigureManagerr:   rs   r   r   r   r     s    )L'Mr   r   >   Nr   Zbackr   r   r   r   )-Z__doc__rC   r+   Zior    r   r   Zloggingr   Zpathlibr   ZnumpyrM   ZPILr   Z
matplotlibr   r   r   Zmatplotlib.backendsr   Zmatplotlib.backend_basesr   r	   r
   r   r   r   Z	getLoggerr6   rp   r   r   Z	TimerBaser   r@   ZFigureCanvasAggrF   r   r   r   ZFigureManagerBaserG   Zexportr   rs   r   r   <module>r      s   =       	    9 9 +M M "%#UE %#%#%# 	%# V	%#
 
%# "=%# g%# g%# g%# E%# !&%# !&%# "7%# %# E%#  V!%#"  #%#$ x%%#& !+'%#( x)%#* x+%#, x-%#. g/%#0 x1%#2 V3%#4 45%#6 47%#8 49%#: 4;%#< 4=%#> 4?%#@ 4A%#B 4C%#D 4EEEK%# P	$ =** $ N  =**   F[;[88 [;| +G}?? +G\W!-99 W!t 
(H ( (r   