e ='dashed'#line:1
d ='grey'#line:2
o =enumerate #line:3
I =False #line:4
b =round #line:5
Z ='complex'#line:6
Y ='upper right'#line:7
X ='Energy $E$ (a.u.)'#line:8
W ='Tunneling coordinate $x$ (a.u.)'#line:9
S ='$|\\psi|^2$'#line:10
R ='red'#line:11
Q ='Im($\\psi$)'#line:12
P ='orange'#line:13
O ='Re($\\psi$)'#line:14
N ='blue'#line:15
L =range #line:16
F ='Warning'#line:17
G =True #line:18
D =len #line:19
B =float #line:20
import numpy as C #line:21
from scipy .linalg import eig ,inv #line:22
import tkinter as A #line:23
from matplotlib .figure import Figure as h #line:24
from matplotlib .backends .backend_tkagg import FigureCanvasTkAgg as i #line:25
from matplotlib .animation import FuncAnimation as g #line:26
class E (A .Tk ):#line:27
	def __init__ (OOOO00O0OOO0O0O00 ):super (E ,OOOO00O0OOO0O0O00 ).__init__ ();OOOO00O0OOO0O0O00 .title ('Tunneling through the Eckart barrier');OOOO00O0OOO0O0O00 .create_layout ()#line:28
	def create_layout (O0000OOO0O0O0OOOO ):OOOO0O00OOOOOOO0O ='W';OOOO0OO00000OOO0O =A .LabelFrame (O0000OOO0O0O0OOOO ,text ='Inputs',padx =5 ,pady =5 );OOOO0OO00000OOO0O .grid (row =0 ,column =0 ,padx =10 ,pady =10 );OO0O0O0O0OOO0OO00 =A .Label (OOOO0OO00000OOO0O ,text ='Energy');OO0O0O0O0OOO0OO00 .grid (row =0 ,column =0 );OO00000O0OO0OO000 =A .Entry (OOOO0OO00000OOO0O ,width =10 );OO00000O0OO0OO000 .grid (row =0 ,column =1 );OOOO000OO00O0000O =A .Label (OOOO0OO00000OOO0O ,text ='Max x');OOOO000OO00O0000O .grid (row =1 ,column =0 );OOOOOO0OOO0OO0OOO =A .Entry (OOOO0OO00000OOO0O ,width =10 );OOOOOO0OOO0OO0OOO .grid (row =1 ,column =1 );OO0O0O00O0OO0OO0O =A .Label (OOOO0OO00000OOO0O ,text ='Delta');OO0O0O00O0OO0OO0O .grid (row =2 ,column =0 );O0O000O00O0O0O0O0 =A .Entry (OOOO0OO00000OOO0O ,width =10 );O0O000O00O0O0O0O0 .grid (row =2 ,column =1 );O0000OOOOO0OO00OO =A .LabelFrame (O0000OOO0O0O0OOOO ,text ='Potential',padx =5 ,pady =5 );O0000OOOOO0OO00OO .grid (row =0 ,column =1 ,padx =10 ,pady =10 );OOO0OO00OO00OOOO0 =A .Label (O0000OOOOO0OO00OO ,text ='l');OOO0OO00OO00OOOO0 .grid (row =0 ,column =0 );O00OO0OOO0O00OO00 =A .Entry (O0000OOOOO0OO00OO ,width =10 );O00OO0OOO0O00OO00 .grid (row =0 ,column =1 );OO000O0O00000OOOO =A .Label (O0000OOOOO0OO00OO ,text ='A');OO000O0O00000OOOO .grid (row =1 ,column =0 );OO0O0OO000OOOOOO0 =A .Entry (O0000OOOOO0OO00OO ,width =10 );OO0O0OO000OOOOOO0 .grid (row =1 ,column =1 );OOO00OOOOO0OOO000 =A .Label (O0000OOOOO0OO00OO ,text ='B');OOO00OOOOO0OOO000 .grid (row =2 ,column =0 );O0O00O000O000OOOO =A .Entry (O0000OOOOO0OO00OO ,width =10 );O0O00O000O000OOOO .grid (row =2 ,column =1 );OOOO0O0OO0OOO00OO =A .LabelFrame (O0000OOO0O0O0OOOO ,text ='Wave packet',padx =5 ,pady =5 );OOOO0O0OO0OOO00OO .grid (row =0 ,column =2 ,padx =10 ,pady =10 );OOO00OO00OO0OOOO0 =A .Label (OOOO0O0OO0OOO00OO ,text ='Mass');OOO00OO00OO0OOOO0 .grid (row =0 ,column =0 );O0O00000OOO0OO0OO =A .Entry (OOOO0O0OO0OOO00OO ,width =10 );O0O00000OOO0OO0OO .grid (row =0 ,column =1 );O0O0O00000OO0O0O0 =A .Label (OOOO0O0OO0OOO00OO ,text ='Time step');O0O0O00000OO0O0O0 .grid (row =1 ,column =0 );OO00OO0OOOO0000O0 =A .Entry (OOOO0O0OO0OOO00OO ,width =10 );OO00OO0OOOO0000O0 .grid (row =1 ,column =1 );O000OOO0OO00000OO =A .Label (OOOO0O0OO0OOO00OO ,text ='Total time');O000OOO0OO00000OO .grid (row =2 ,column =0 );O0OO0O00000OOOO00 =A .Entry (OOOO0O0OO0OOO00OO ,width =10 );O0OO0O00000OOOO00 .grid (row =2 ,column =1 );OOO0000OO0OOOO00O =A .LabelFrame (O0000OOO0O0O0OOOO ,text ='Inputs Energy scan',padx =5 ,pady =5 );OOO0000OO0OOOO00O .grid (row =0 ,column =3 ,padx =10 ,pady =10 );OOO0O0O0OO0OO00O0 =A .Label (OOO0000OO0OOOO00O ,text ='Min Energy (a.u.)');OOO0O0O0OO0OO00O0 .grid (row =0 ,column =0 );O00O0O0O0OO0O000O =A .Entry (OOO0000OO0OOOO00O ,width =10 );O00O0O0O0OO0O000O .grid (row =0 ,column =1 );O000000000OO0OOO0 =A .Label (OOO0000OO0OOOO00O ,text ='Max Energy (a.u.)');O000000000OO0OOO0 .grid (row =1 ,column =0 );OO0O0O0000O0000O0 =A .Entry (OOO0000OO0OOOO00O ,width =10 );OO0O0O0000O0000O0 .grid (row =1 ,column =1 );O0000OOO0O0O0OOOO .clickReset (OO00000O0OO0OO000 ,OOOOOO0OOO0OO0OOO ,O0O000O00O0O0O0O0 ,O00OO0OOO0O00OO00 ,OO0O0OO000OOOOOO0 ,O0O00O000O000OOOO ,O0O00000OOO0OO0OO ,OO00OO0OOOO0000O0 ,O0OO0O00000OOOO00 ,O00O0O0O0OO0O000O ,OO0O0O0000O0000O0 );OOOO00O0OOOOO0OOO =A .LabelFrame (O0000OOO0O0O0OOOO ,text ='Scattering plot',padx =5 ,pady =5 );OOOO00O0OOOOO0OOO .grid (row =1 ,column =0 ,columnspan =10 ,padx =10 ,pady =10 );O00O00OO0O0O00OOO =h (figsize =(7 ,7 *(2 /3 )));OO00O0OOOO0O000O0 =O00O00OO0O0O00OOO .add_subplot (111 );O00O00OO0O0O00OOO .patch .set_facecolor ('gainsboro');O0OOOO00O00OO0OOO =i (O00O00OO0O0O00OOO ,OOOO00O0OOOOO0OOO );O0OOOO00O00OO0OOO .draw ();O0OOOO00O00OO0OOO .get_tk_widget ().grid (row =0 ,column =0 ,padx =10 ,pady =10 );O0000OOO0O0O0OOOO .plotPotential (OO00O0OOOO0O000O0 ,B (OO00000O0OO0OO000 .get ()),B (OOOOOO0OOO0OO0OOO .get ()),B (O0O000O00O0O0O0O0 .get ()),B (O00OO0OOO0O00OO00 .get ()),B (OO0O0OO000OOOOOO0 .get ()),B (O0O00O000O000OOOO .get ()));OO00O0OOOO0O000O0 .set_xlabel (W );OO00O0OOOO0O000O0 .set_ylabel (X );OO00O0OOOO0O000O0 .legend (loc =Y ,fontsize =12 );OO00O0OOOO0O000O0 .set_xlim ([-B (OOOOOO0OOO0OO0OOO .get ()),B (OOOOOO0OOO0OO0OOO .get ())]);O0OO0OOO0OOO0OOO0 =[0 ];OOO0OOO0000OO0O00 =A .LabelFrame (O0000OOO0O0O0OOOO ,text ='Plotting prompts',padx =5 ,pady =5 );OOO0OOO0000OO0O00 .grid (row =0 ,column =4 ,padx =10 ,pady =10 );OO00O0OO0OO0O00O0 =A .Button (OOO0OOO0000OO0O00 ,text ='Plot',command =lambda :O0000OOO0O0O0OOOO .clickPlot (O0OOOO00O00OO0OOO ,OO00O0OOOO0O000O0 ,O0OO0OOO0OOO0OOO0 ,OOOOOOOO0OO00O0OO ,B (OO00000O0OO0OO000 .get ()),B (OOOOOO0OOO0OO0OOO .get ()),B (O0O000O00O0O0O0O0 .get ()),B (O00OO0OOO0O00OO00 .get ()),B (OO0O0OO000OOOOOO0 .get ()),B (O0O00O000O000OOOO .get ())));OO00O0OO0OO0O00O0 .grid (row =0 ,column =0 );OOOOOOOO0OO00O0OO =A .IntVar ();O0OOOO0OOO0OO0O0O =A .Radiobutton (OOO0OOO0000OO0O00 ,text ='Wave & density',variable =OOOOOOOO0OO00O0OO ,value =1 );O0OOOO0OOO0OO0O0O .grid (row =0 ,column =1 ,sticky =OOOO0O00OOOOOOO0O );O0OOOO0OOO0OO0O0O .select ();OOO000OOO000OO0OO =A .Radiobutton (OOO0OOO0000OO0O00 ,text ='Wave only',variable =OOOOOOOO0OO00O0OO ,value =2 );OOO000OOO000OO0OO .grid (row =1 ,column =1 ,sticky =OOOO0O00OOOOOOO0O );O0000O0O0O00000O0 =A .Radiobutton (OOO0OOO0000OO0O00 ,text ='Density only',variable =OOOOOOOO0OO00O0OO ,value =3 );O0000O0O0O00000O0 .grid (row =2 ,column =1 ,sticky =OOOO0O00OOOOOOO0O );O00O0000000OOO0O0 =A .Button (OOO0OOO0000OO0O00 ,text ='Evolve time',command =lambda :O0000OOO0O0O0OOOO .clickAnimate (O0OOOO00O00OO0OOO ,O00O00OO0O0O00OOO ,OO00O0OOOO0O000O0 ,O0OO0OOO0OOO0OOO0 ,OOOOOOOO0OO00O0OO ,B (OO00000O0OO0OO000 .get ()),B (OOOOOO0OOO0OO0OOO .get ()),B (O0O000O00O0O0O0O0 .get ()),B (O00OO0OOO0O00OO00 .get ()),B (OO0O0OO000OOOOOO0 .get ()),B (O0O00O000O000OOOO .get ())));O00O0000000OOO0O0 .grid (row =1 ,column =0 );O0OOOOO00OO0O0O0O =A .Button (OOO0OOO0000OO0O00 ,text ='Send wave packet',command =lambda :O0000OOO0O0O0OOOO .clickWavepacket (O0OOOO00O00OO0OOO ,O00O00OO0O0O00OOO ,OO00O0OOOO0O000O0 ,O0OO0OOO0OOO0OOO0 ,OOOOOOOO0OO00O0OO ,B (OO00000O0OO0OO000 .get ()),B (OOOOOO0OOO0OO0OOO .get ()),B (O0O000O00O0O0O0O0 .get ()),B (O00OO0OOO0O00OO00 .get ()),B (OO0O0OO000OOOOOO0 .get ()),B (O0O00O000O000OOOO .get ()),B (O0O00000OOO0OO0OO .get ()),B (OO00OO0OOOO0000O0 .get ()),B (O0OO0O00000OOOO00 .get ())));O0OOOOO00OO0O0O0O .grid (row =2 ,column =0 );O0OOOOO00OO0O0O0O =A .Button (OOO0OOO0000OO0O00 ,text ='Energy scan',command =lambda :O0000OOO0O0O0OOOO .clickEnergyscan (O0OOOO00O00OO0OOO ,O00O00OO0O0O00OOO ,OO00O0OOOO0O000O0 ,O0OO0OOO0OOO0OOO0 ,OOOOOOOO0OO00O0OO ,B (OOOOOO0OOO0OO0OOO .get ()),B (O0O000O00O0O0O0O0 .get ()),B (O00OO0OOO0O00OO00 .get ()),B (OO0O0OO000OOOOOO0 .get ()),B (O0O00O000O000OOOO .get ()),B (O00O0O0O0OO0O000O .get ()),B (OO0O0O0000O0000O0 .get ())));O0OOOOO00OO0O0O0O .grid (row =3 ,column =0 );OOOO00O00O0OOOOO0 =A .LabelFrame (O0000OOO0O0O0OOOO ,text ='Other',padx =5 ,pady =5 );OOOO00O00O0OOOOO0 .grid (row =0 ,column =5 ,padx =10 ,pady =10 );OOOO0O00O00OOO00O =A .Button (OOOO00O00O0OOOOO0 ,text ='Reset to default',command =lambda :O0000OOO0O0O0OOOO .clickReset (OO00000O0OO0OO000 ,OOOOOO0OOO0OO0OOO ,O0O000O00O0O0O0O0 ,O00OO0OOO0O00OO00 ,OO0O0OO000OOOOOO0 ,O0O00O000O000OOOO ,O0O00000OOO0OO0OO ,OO00OO0OOOO0000O0 ,O0OO0O00000OOOO00 ,O00O0O0O0OO0O000O ,OO0O0O0000O0000O0 ));OOOO0O00O00OOO00O .grid (row =0 ,column =0 );O00O000O00O0000O0 =A .Button (OOOO00O00O0OOOOO0 ,text ='Quit',command =O0000OOO0O0O0OOOO .clickQuit );O00O000O00O0000O0 .grid (row =1 ,column =0 )#line:29
	def clickReset (OO0000O00OOOO00O0 ,OO0OO00O0O0OO000O ,O0OOO0O000O000O0O ,OO0O0O000OOO0OOO0 ,OO000000OO000000O ,O0000OOO0000OO00O ,O00O00OO0O0O0O000 ,OO00O0O0OOOO00O00 ,OO00OOO0O000O0O0O ,O0OO000000O000O00 ,OO0O0O0O0O00OO0OO ,OO00OOO000OO00OOO ):O0OOOOO0OO00O000O =OO00OOO000OO00OOO ;OO0OOO0000OO0OO00 =OO0O0O0O0O00OO0OO ;O000OOOO0OOO0O0OO =O0OO000000O000O00 ;OO00OO0OOOOO0O0OO =OO00OOO0O000O0O0O ;O000O0O0O0000O0OO =OO00O0O0OOOO00O00 ;O000OO000O0O00O00 =O00O00OO0O0O0O000 ;O00OO0OO0OO0OOOOO =O0000OOO0000OO00O ;OOO00O000O0O0000O =OO000000OO000000O ;O0000O0OOO00OOO00 =OO0O0O000OOO0OOO0 ;OOO000OOO0000OO00 =O0OOO0O000O000O0O ;OO000OO0O0O000O0O =OO0OO00O0O0OO000O ;OO000OO0O0O000O0O .delete (0 ,A .END );OOO000OOO0000OO00 .delete (0 ,A .END );O0000O0OOO00OOO00 .delete (0 ,A .END );OOO00O000O0O0000O .delete (0 ,A .END );O00OO0OO0OO0OOOOO .delete (0 ,A .END );O000OO000O0O00O00 .delete (0 ,A .END );O000O0O0O0000O0OO .delete (0 ,A .END );OO00OO0OOOOO0O0OO .delete (0 ,A .END );O000OOOO0OOO0O0OO .delete (0 ,A .END );OO0OOO0000OO0OO00 .delete (0 ,A .END );O0OOOOO0OO00O000O .delete (0 ,A .END );OO000OO0O0O000O0O .insert (0 ,1 );OOO000OOO0000OO00 .insert (0 ,10 );O0000O0OOO00OOO00 .insert (0 ,.1 );OOO00O000O0O0000O .insert (0 ,1 );O00OO0OO0OO0OOOOO .insert (0 ,0 );O000OO000O0O00O00 .insert (0 ,10 );O000O0O0O0000O0OO .insert (0 ,1 );OO00OO0OOOOO0O0OO .insert (0 ,1e-05 );O000OOOO0OOO0O0OO .insert (0 ,10 );OO0OOO0000OO0OO00 .insert (0 ,.1 );O0OOOOO0OO00O000O .insert (0 ,10 )#line:30
	def clickQuit (OOOOOOOO0O000OOOO ):OOOOOOOO0O000OOOO .quit ();OOOOOOOO0O000OOOO .destroy ()#line:31
	def clickPlot (OOO0O0O000O0OOOO0 ,OO0O000O000O00OO0 ,OOOO0O0OOO0OO0O0O ,O000O0000000O0000 ,O0OOOO000000O00O0 ,OO00OOO000OOOO0O0 ,O00OOO00000O000O0 ,O0000OOOO00OO0O0O ,OOOOO00OO00000O00 ,OO0O0O00O0OO0000O ,OO0000OOO00OO0OOO ):#line:32
		OOO0OO000O00OO0O0 =O0000OOOO00OO0O0O ;O000000O0OO0O0O00 =O00OOO00000O000O0 ;OOOO0OO0O0OOOOOO0 =O0OOOO000000O00O0 ;O0O0000000O00O000 =OOOO0O0OOO0OO0O0O #line:33
		if O000O0000000O0000 [0 ]!=0 :O000O0000000O0000 [0 ].event_source .stop ()#line:34
		O0O0000000O00O000 .cla ()#line:35
		if OOO0O0O000O0OOOO0 .paramWarning (OO00OOO000OOOO0O0 ,O000000O0OO0O0O00 ,OOO0OO000O00OO0O0 ,OOOOO00OO00000O00 ):return #line:36
		[O00OO000OO0OOOO0O ,OOOO0O0OOOO000000 ]=OOO0O0O000O0OOOO0 .plotPotential (O0O0000000O00O000 ,OO00OOO000OOOO0O0 ,O000000O0OO0O0O00 ,OOO0OO000O00OO0O0 ,OOOOO00OO00000O00 ,OO0O0O00O0OO0000O ,OO0000OOO00OO0OOO );O0O00000O00000OO0 =M (O00OO000OO0OOOO0O ,OOOO0O0OOOO000000 ,OO00OOO000OOOO0O0 )#line:37
		if OOOO0OO0O0OOOOOO0 .get ()==1 or OOOO0OO0O0OOOOOO0 .get ()==2 :O0O0000000O00O000 .plot (O00OO000OO0OOOO0O ,C .real (O0O00000O00000OO0 )+OO00OOO000OOOO0O0 ,c =N ,lw =2 ,label =O );O0O0000000O00O000 .plot (O00OO000OO0OOOO0O ,C .imag (O0O00000O00000OO0 )+OO00OOO000OOOO0O0 ,c =P ,lw =2 ,label =Q )#line:38
		if OOOO0OO0O0OOOOOO0 .get ()==1 or OOOO0OO0O0OOOOOO0 .get ()==3 :O0O0000000O00O000 .plot (O00OO000OO0OOOO0O ,4 *abs (O0O00000O00000OO0 )**2 ,c =R ,lw =2 ,label =S )#line:39
		O0O0000000O00O000 .legend (loc =Y ,fontsize =12 );O0O0000000O00O000 .set_xlabel (W );O0O0000000O00O000 .set_ylabel (X );O0O0000000O00O000 .set_xlim ([-O000000O0OO0O0O00 ,O000000O0OO0O0O00 ]);OO0O000O000O00OO0 .draw ()#line:40
	def clickAnimate (OOOO0000000O0OOOO ,OO0000O000OO0000O ,O0O00O0OO000O0O00 ,O00OOO000O00OO000 ,O00O0OOOO00000000 ,OO00OOO00O000O00O ,O00O00O0O0OOOOOOO ,OO0O00OO0O0OO0OOO ,OO0O00000O000OOO0 ,OOOOO00OOOOOOO0O0 ,OO0OO0OO0OO0O0OOO ,OOOOO0000OOO00OOO ):#line:41
		OOO0000O0000O0O0O =OO0O00000O000OOO0 ;OO0O00000O0OO0O0O =O00O0OOOO00000000 ;O00OO0000O00O00O0 =OO0O00OO0O0OO0OOO ;O0000OOO0OOOOOO00 =OO00OOO00O000O00O ;OOO0O00O00OOO0OO0 =O00OOO000O00OO000 #line:42
		if OO0O00000O0OO0O0O [0 ]!=0 :OO0O00000O0OO0O0O [0 ].event_source .stop ()#line:43
		OOO0O00O00OOO0OO0 .cla ()#line:44
		if OOOO0000000O0OOOO .paramWarning (O00O00O0O0OOOOOOO ,O00OO0000O00O00O0 ,OOO0000O0000O0O0O ,OOOOO00OOOOOOO0O0 ):return #line:45
		[O0O0OO0O0O000O0O0 ,OOOOOO0O0O0O000O0 ]=OOOO0000000O0OOOO .plotPotential (OOO0O00O00OOO0OO0 ,O00O00O0O0OOOOOOO ,O00OO0000O00O00O0 ,OOO0000O0000O0O0O ,OOOOO00OOOOOOO0O0 ,OO0OO0OO0OO0O0OOO ,OOOOO0000OOO00OOO );OO0OO0OO000000O00 =M (O0O0OO0O0O000O0O0 ,OOOOOO0O0O0O000O0 ,O00O00O0O0OOOOOOO )#line:46
		if O0000OOO0OOOOOO00 .get ()==1 or O0000OOO0OOOOOO00 .get ()==3 :OOO0O00O00OOO0OO0 .plot (O0O0OO0O0O000O0O0 ,4 *abs (OO0OO0OO000000O00 )**2 ,c =R ,lw =2 ,label =S )#line:47
		if O0000OOO0OOOOOO00 .get ()==1 or O0000OOO0OOOOOO00 .get ()==2 :#line:48
			OOO0O0OO00O0OO00O ,O0OO00O0000O0O0OO =[N ,P ],[O ,Q ];O0OO0000OOO0O0OO0 =[]#line:49
			for OOOO00OOOO0OOOOOO in L (2 ):OOOOOO0O000O0000O ,=OOO0O00O00OOO0OO0 .plot ([],[],lw =2 ,c =OOO0O0OO00O0OO00O [OOOO00OOOO0OOOOOO ],label =O0OO00O0000O0O0OO [OOOO00OOOO0OOOOOO ]);O0OO0000OOO0O0OO0 .append (OOOOOO0O000O0000O )#line:50
			def O00OO0OO00O000OOO ():#line:51
				for OO0OOO000OOO0OO00 in O0OO0000OOO0O0OO0 :OO0OOO000OOO0OO00 .set_data ([],[])#line:52
				return O0OO0000OOO0O0OO0 #line:53
			def O0O0O0000OO0OO0OO (O0O00000OOO0O0000 ):OO0000OOOOOO000OO =OO0OO0OO000000O00 *C .exp (-1j *2 *C .pi *.01 *O0O00000OOO0O0000 );O0OO0000OOO0O0OO0 [0 ].set_data (O0O0OO0O0O000O0O0 ,C .real (OO0000OOOOOO000OO )+O00O00O0O0OOOOOOO );O0OO0000OOO0O0OO0 [1 ].set_data (O0O0OO0O0O000O0O0 ,C .imag (OO0000OOOOOO000OO )+O00O00O0O0OOOOOOO );return O0OO0000OOO0O0OO0 #line:54
			OO0O00000O0OO0O0O [0 ]=g (O0O00O0OO000O0O00 ,O0O0O0000OO0OO0OO ,init_func =O00OO0OO00O000OOO ,frames =100 ,interval =30 ,blit =G )#line:55
		OOO0O00O00OOO0OO0 .legend (loc =Y ,fontsize =12 );OOO0O00O00OOO0OO0 .set_xlabel (W );OOO0O00O00OOO0OO0 .set_ylabel (X );OOO0O00O00OOO0OO0 .set_xlim ([-O00OO0000O00O00O0 ,O00OO0000O00O00O0 ]);OO0000O000OO0000O .draw ()#line:56
	def clickWavepacket (OO00O0OO0O0O0OO00 ,OOOO00OOOOO0O0OO0 ,O00O0O0O00O000OO0 ,OOO000000O00OOOO0 ,O0O0OO0OOO0O0OOOO ,O00OO0OO00O0OOO00 ,OOOO0O0OOOOO0OO0O ,O0O00OOOO0O0000OO ,OOO0O00OOO0OOO0O0 ,O000O000OO0OO00O0 ,O00OOO0OOO0O0OO0O ,OO0O0OOOO0O0O00OO ,OO0OO0OO00OO0OOO0 ,OO0OO0OOO0000O0O0 ,O00OO000O0OO0O0O0 ):#line:57
		O0OOOOO0OO000OOOO =O00OO000O0OO0O0O0 ;O00O00O000OO00OOO =O00OO0OO00O0OOO00 ;OOO00OO000OOO0O00 =O0O0OO0OOO0O0OOOO ;O0OO0O000OOO0O00O =OO0OO0OO00OO0OOO0 ;O0O0OOO0OOOOOO0O0 =OO0OO0OOO0000O0O0 ;O000O0OOOOOOOO0O0 =OOO0O00OOO0OOO0O0 ;OOO00OOOO0O0OOOO0 =OOO000000O00OOOO0 ;OOO00OOO000O00OOO =O0O00OOOO0O0000OO #line:58
		if OOO00OO000OOO0O00 [0 ]!=0 :OOO00OO000OOO0O00 [0 ].event_source .stop ()#line:59
		OOO00OOOO0O0OOOO0 .cla ()#line:60
		if OO00O0OO0O0O0OO00 .paramWarning (OOOO0O0OOOOO0OO0O ,OOO00OOO000O00OOO ,O000O0OOOOOOOO0O0 ,O000O000OO0OO00O0 )or OO00O0OO0O0O0OO00 .paramPacketWarning (O0OO0O000OOO0O00O ,O0O0OOO0OOOOOO0O0 ,O0OOOOO0OO000OOOO ,O000O0OOOOOOOO0O0 ,OOO00OOO000O00OOO ):return #line:61
		O00O00000O0OO000O =b (O0OOOOO0OO000OOOO /O0O0OOO0OOOOOO0O0 );O00O0O0O000OO0000 =b (.05 /O0O0OOO0OOOOOO0O0 );O00O000O000O0O000 =b (O00O00000O0OO000O /O00O0O0O000OO0000 );OOO00OOO000O00OOO =OOO00OOO000O00OOO +5 ;[OO0O000OOOO00000O ,OOOO0OOO00O0OOOOO ]=OO00O0OO0O0O0OO00 .plotPotential (OOO00OOOO0O0OOOO0 ,OOOO0O0OOOOO0OO0O ,OOO00OOO000O00OOO ,O000O0OOOOOOOO0O0 ,O000O000OO0OO00O0 ,O00OOO0OOO0O0OO0O ,OO0O0OOOO0O0O00OO );O0O0OO00O0000O0OO =D (OO0O000OOOO00000O );OOOO0OOO00O0OOOOO =OOOO0OOO00O0OOOOO +0j #line:62
		for (O0OOOO0OOO00OOO0O ,O0OO0OO000O0OO00O )in o (OO0O000OOOO00000O ):#line:63
			if -OOO00OOO000O00OOO <=O0OO0OO000O0OO00O <=-OOO00OOO000O00OOO +5 :OOOO0OOO00O0OOOOO [O0OOOO0OOO00OOO0O ]+=1j *C .max (C .real (OOOO0OOO00O0OOOOO ))*(O0OO0OO000O0OO00O -(-OOO00OOO000O00OOO +5 ))/5 #line:64
			if OOO00OOO000O00OOO -5 <=O0OO0OO000O0OO00O <=OOO00OOO000O00OOO :OOOO0OOO00O0OOOOO [O0OOOO0OOO00OOO0O ]+=-1j *C .max (C .real (OOOO0OOO00O0OOOOO ))*(O0OO0OO000O0OO00O -(OOO00OOO000O00OOO -5 ))/5 #line:65
		OO0OO0O000OO00O0O =C .sqrt (2 *O0OO0O000OOO0O00O *OOOO0O0OOOOO0OO0O );OO0O0O0O0OO000000 =(2 /C .pi )**.25 *C .exp (-(OO0O000OOOO00000O +6 )**2 +1j *OO0OO0O000OO00O0O *(OO0O000OOOO00000O +6 ));OOO000O00OO00O00O =C .zeros ([b (O00O00000O0OO000O /O00O0O0O000OO0000 )+1 ,O0O0OO00O0000O0OO ],dtype =Z );OOO000O00OO00O00O [0 ]=OO0O0O0O0OO000000 ;OO000OOOO0OOO000O =C .zeros ([O0O0OO00O0000O0OO ,O0O0OO00O0000O0OO ],dtype =Z )#line:66
		for O0OOOO0OOO00OOO0O in L (1 ,D (OO0O000OOOO00000O )-1 ):OO000OOOO0OOO000O [O0OOOO0OOO00OOO0O ,O0OOOO0OOO00OOO0O -1 ]=1j *O0O0OOO0OOOOOO0O0 /(2 *O0OO0O000OOO0O00O *O000O0OOOOOOOO0O0 **2 );OO000OOOO0OOO000O [O0OOOO0OOO00OOO0O ,O0OOOO0OOO00OOO0O ]=1 -1j *O0O0OOO0OOOOOO0O0 *(1 /(O0OO0O000OOO0O00O *O000O0OOOOOOOO0O0 **2 )+OOOO0OOO00O0OOOOO [O0OOOO0OOO00OOO0O ]);OO000OOOO0OOO000O [O0OOOO0OOO00OOO0O ,O0OOOO0OOO00OOO0O +1 ]=1j *O0O0OOO0OOOOOO0O0 /(2 *O0OO0O000OOO0O00O *O000O0OOOOOOOO0O0 **2 )#line:67
		OOOO0OO000OOO0OO0 ,OOOO0OOO00O0OOOOO =eig (OO000OOOO0OOO000O );O00OOOO0O000000O0 =C .power (OOOO0OO000OOO0OO0 ,O00O0O0O000OO0000 );OO00OO0OOO0000000 =OOOO0OOO00O0OOOOO @C .diag (O00OOOO0O000000O0 )@inv (OOOO0OOO00O0OOOOO );OOOO0OO0O0OO0OOO0 =OO0O0O0O0OO000000 ;OOOO0OO0O0OO0OOO0 =OO00OO0OOO0000000 @OOOO0OO0O0OO0OOO0 ;OOO000O00OO00O00O [1 ]=OOOO0OO0O0OO0OOO0 #line:68
		for OOOOO000OOOOOO00O in L (2 ,O00O000O000O0O000 -1 ):OOOO0OO0O0OO0OOO0 =OO00OO0OOO0000000 @OOOO0OO0O0OO0OOO0 ;OOO000O00OO00O00O [OOOOO000OOOOOO00O ]=OOOO0OO0O0OO0OOO0 #line:69
		if O00O00O000OO00OOO .get ()==1 :OO00O00OO00OOO000 ,O00O0OOOO0OO0O00O =[N ,P ,R ],[O ,Q ,S ]#line:70
		elif O00O00O000OO00OOO .get ()==2 :OO00O00OO00OOO000 ,O00O0OOOO0OO0O00O =[N ,P ],[O ,Q ]#line:71
		elif O00O00O000OO00OOO .get ()==3 :OO00O00OO00OOO000 ,O00O0OOOO0OO0O00O =[R ],[S ]#line:72
		O0O0O0OOOO00OOOOO =[]#line:73
		for O0OO0000O0000OO00 in L (D (OO00O00OO00OOO000 )):OO0O00O0O0OOO0OO0 ,=OOO00OOOO0O0OOOO0 .plot ([],[],lw =2 ,c =OO00O00OO00OOO000 [O0OO0000O0000OO00 ],label =O00O0OOOO0OO0O00O [O0OO0000O0000OO00 ]);O0O0O0OOOO00OOOOO .append (OO0O00O0O0OOO0OO0 )#line:74
		OOO00OOOO0O0OOOO0 .legend (loc =Y ,fontsize =12 );OOO00OOOO0O0OOOO0 .set_xlabel (W );OOO00OOOO0O0OOOO0 .set_ylabel (X );OOO00OOOO0O0OOOO0 .set_xlim ([-OOO00OOO000O00OOO +5 ,OOO00OOO000O00OOO -5 ])#line:75
		def OO00OO0O0000O000O ():#line:76
			for O0OOOO00000000O00 in O0O0O0OOOO00OOOOO :O0OOOO00000000O00 .set_data ([],[])#line:77
			return O0O0O0OOOO00OOOOO #line:78
		def O0OO00O00O00OO000 (O0O0O0OOO00OOO000 ):#line:79
			OOO0000O00O00O000 =OOO000O00OO00O00O [O0O0O0OOO00OOO000 ]#line:80
			if D (O0O0O0OOOO00OOOOO )==1 :O0O0O0OOOO00OOOOO [0 ].set_data (OO0O000OOOO00000O ,4 *C .abs (OOO0000O00O00O000 )**2 )#line:81
			elif D (O0O0O0OOOO00OOOOO )>=2 :O0O0O0OOOO00OOOOO [0 ].set_data (OO0O000OOOO00000O ,C .real (OOO0000O00O00O000 )+OOOO0O0OOOOO0OO0O );O0O0O0OOOO00OOOOO [1 ].set_data (OO0O000OOOO00000O ,C .imag (OOO0000O00O00O000 )+OOOO0O0OOOOO0OO0O )#line:82
			if D (O0O0O0OOOO00OOOOO )==3 :O0O0O0OOOO00OOOOO [2 ].set_data (OO0O000OOOO00000O ,4 *C .abs (OOO0000O00O00O000 )**2 )#line:83
			return O0O0O0OOOO00OOOOO #line:84
		OOO00OO000OOO0O00 [0 ]=g (O00O0O0O00O000OO0 ,O0OO00O00O00OO000 ,init_func =OO00OO0O0000O000O ,frames =O00O000O000O0O000 ,interval =30 ,blit =G );OOOO00OOOOO0O0OO0 .draw ()#line:85
	def clickEnergyscan (O00OO000000O000O0 ,O00O00O000OOOOOOO ,OOO000OO00OOOOOO0 ,O0000OO0OO00000OO ,OOO0OOOOO0OOOOOOO ,O0O00OOOO0O0OOOO0 ,O0O000OO000OO0O00 ,O0OOOO000OO0O0OOO ,OO0O000OOO000O00O ,O0000OO0OOO000000 ,OO0O0OO0OOO0OOOOO ,O0O00O00OO0O0OO0O ,OOOOOO0O0OO0O0O00 ):#line:86
		OO0000OO0OO0OO00O =O0O00O00OO0O0OO0O ;OOOO00O0OO00OOO0O =O0OOOO000OO0O0OOO ;OOO00OO0OO00000O0 =OOOOOO0O0OO0O0O00 ;OOOOO0O00O0OOOOOO =O0O00OOOO0O0OOOO0 ;OO0OOOO0OO00000OO =OOO0OOOOO0OOOOOOO ;OOOOOO00O0OOOO00O =O0O000OO000OO0O00 ;O00O00OOO00000O0O =O0000OO0OO00000OO #line:87
		if OO0OOOO0OO00000OO [0 ]!=0 :OO0OOOO0OO00000OO [0 ].event_source .stop ()#line:88
		O00O00OOO00000O0O .cla ()#line:89
		if O00OO000000O000O0 .paramWarning (OOO00OO0OO00000O0 ,OOOOOO00O0OOOO00O ,OOOO00O0OO00OOO0O ,OO0O000OOO000O00O )or O00OO000000O000O0 .paramScanWarning (OO0000OO0OO0OO00O ,OOO00OO0OO00000O0 ):return #line:90
		[O0OO00O0OO0O0OO0O ,OO00000OO0OO00O0O ]=O00OO000000O000O0 .plotPotential (O00O00OOO00000O0O ,None ,OOOOOO00O0OOOO00O ,OOOO00O0OO00OOO0O ,OO0O000OOO000O00O ,O0000OO0OOO000000 ,OO0O0OO0OOO0OOOOO );OOO00OO000OOO000O =C .logspace (C .log10 (OOO00OO0OO00000O0 ),C .log10 (OO0000OO0OO0OO00O ),600 );O00O000O0O0OO0OO0 =C .zeros ([D (OOO00OO000OOO000O ),D (O0OO00O0OO0O0OO0O )],dtype =Z )#line:91
		for (OO0OOO0O0OOOO0000 ,OO0O00O0O00OOOO0O )in o (OOO00OO000OOO000O ):O00O000O0O0OO0OO0 [OO0OOO0O0OOOO0000 ]=M (O0OO00O0OO0O0OO0O ,OO00000OO0OO00O0O ,OO0O00O0O00OOOO0O )#line:92
		if OOOOO0O00O0OOOOOO .get ()==1 :O00OO00OO0000OOO0 ,OOO00O000000O0OOO =[N ,P ,R ],[O ,Q ,S ]#line:93
		elif OOOOO0O00O0OOOOOO .get ()==2 :O00OO00OO0000OOO0 ,OOO00O000000O0OOO =[N ,P ],[O ,Q ]#line:94
		elif OOOOO0O00O0OOOOOO .get ()==3 :O00OO00OO0000OOO0 ,OOO00O000000O0OOO =[R ],[S ]#line:95
		OO0O0O00O0O0OO0O0 =[];O0OO00O00O00O00OO ,=O00O00OOO00000O0O .plot ([],[],lw =1 ,c =d ,linestyle =e );OO0O0O00O0O0OO0O0 .append (O0OO00O00O00O00OO )#line:96
		for OO00OOOO00O0OOOO0 in L (D (O00OO00OO0000OOO0 )):O0OO00O00O00O00OO ,=O00O00OOO00000O0O .plot ([],[],lw =2 ,c =O00OO00OO0000OOO0 [OO00OOOO00O0OOOO0 ],label =OOO00O000000O0OOO [OO00OOOO00O0OOOO0 ]);OO0O0O00O0O0OO0O0 .append (O0OO00O00O00O00OO )#line:97
		def O0O0OO0O00O0OO00O ():#line:98
			for OOOO000000OOO0O00 in OO0O0O00O0O0OO0O0 :OOOO000000OOO0O00 .set_data ([],[])#line:99
			return OO0O0O00O0O0OO0O0 #line:100
		def OOOOOOOOO0OO0OO0O (OOOOO000OO00OO0OO ):#line:101
			OO0OO00O0OOOO0OOO =O00O000O0O0OO0OO0 [OOOOO000OO00OO0OO ];O00O00OOO00000O0O .set_ylim ([-.1 ,C .max ([C .max (C .real (OO0OO00O0OOOO0OOO ))+OOO00OO000OOO000O [OOOOO000OO00OO0OO ]+1 ,C .max (C .imag (OO0OO00O0OOOO0OOO ))+OOO00OO000OOO000O [OOOOO000OO00OO0OO ]+1 ,C .max (OO00000OO0OO00O0O )])+.1 ]);OO0O0O00O0O0OO0O0 [0 ].set_data (O0OO00O0OO0O0OO0O ,[OOO00OO000OOO000O [OOOOO000OO00OO0OO ]]*D (O0OO00O0OO0O0OO0O ))#line:102
			if D (OO0O0O00O0O0OO0O0 )==2 :OO0O0O00O0O0OO0O0 [1 ].set_data (O0OO00O0OO0O0OO0O ,4 *C .abs (OO0OO00O0OOOO0OOO )**2 )#line:103
			elif D (OO0O0O00O0O0OO0O0 )>=3 :OO0O0O00O0O0OO0O0 [1 ].set_data (O0OO00O0OO0O0OO0O ,C .real (OO0OO00O0OOOO0OOO )+OOO00OO000OOO000O [OOOOO000OO00OO0OO ]);OO0O0O00O0O0OO0O0 [2 ].set_data (O0OO00O0OO0O0OO0O ,C .imag (OO0OO00O0OOOO0OOO )+OOO00OO000OOO000O [OOOOO000OO00OO0OO ])#line:104
			if D (OO0O0O00O0O0OO0O0 )==4 :OO0O0O00O0O0OO0O0 [3 ].set_data (O0OO00O0OO0O0OO0O ,4 *C .abs (OO0OO00O0OOOO0OOO )**2 )#line:105
			return OO0O0O00O0O0OO0O0 #line:106
		OO0OOOO0OO00000OO [0 ]=g (OOO000OO00OOOOOO0 ,OOOOOOOOO0OO0OO0O ,init_func =O0O0OO0O00O0OO00O ,frames =D (OOO00OO000OOO000O ),interval =30 ,blit =I );O00O00OOO00000O0O .legend (loc =Y ,fontsize =12 );O00O00OOO00000O0O .set_xlabel (W );O00O00OOO00000O0O .set_ylabel (X );O00O00OOO00000O0O .set_xlim ([-OOOOOO00O0OOOO00O ,OOOOOO00O0OOOO00O ]);O00O00O000OOOOOOO .draw ()#line:107
	def plotPotential (OOO0O000OOOO0O00O ,O00OOOO000O0OOO00 ,OO0OO000OOO00O0O0 ,O0OOOO0OO000O0000 ,O00000O00O0O00O00 ,OOOO0O000000O0O00 ,O0O0000OO0OO000OO ,OOO0000O00O0OO00O ):OO00O0000O0O000O0 =O00OOOO000O0OOO00 ;OO0000OOOOO0O0O0O =O0OOOO0OO000O0000 ;O00O0OOO0OO00OO00 =int (2 *OO0000OOOOO0O0O0O /O00000O00O0O00O00 +1 );O0O0OOO00OOO0O0OO =C .linspace (-OO0000OOOOO0O0O0O ,OO0000OOOOO0O0O0O ,O00O0OOO0OO00OO00 );O000OO0000O00OO00 =-C .exp (2 *C .pi *O0O0OOO00OOO0O0OO /OOOO0O000000O0O00 );O00O000O0OOOOOOOO =-O0O0000OO0OO000OO *O000OO0000O00OO00 /(1 -O000OO0000O00OO00 )-OOO0000O00O0OO00O *O000OO0000O00OO00 /(1 -O000OO0000O00OO00 )**2 ;OO00O0000O0O000O0 .plot (O0O0OOO00OOO0O0OO ,O00O000O0OOOOOOOO ,c ='black',lw =2 ,label ='$V$');OO00O0000O0O000O0 .plot ([-OO0000OOOOO0O0O0O ,OO0000OOOOO0O0O0O ],[OO0OO000OOO00O0O0 ,OO0OO000OOO00O0O0 ],linestyle =e ,c =d ,lw =1 ,label ='$E$');return [O0O0OOO00OOO0O0OO ,O00O000O0OOOOOOOO ]#line:108
	def paramWarning (O0OOO0OOO0O0OOOO0 ,O0O000O00OOO000O0 ,OO000O0O00OOO0000 ,O0OO0OOOOO0O0000O ,O00000O00OOO0OO00 ):#line:109
		O0000OOOO0O0OO00O =O0OO0OOOOO0O0000O ;O0O0OO0O000000OO0 =OO000O0O00OOO0000 #line:110
		if O0O000O00OOO000O0 <=0 or O0O0OO0O000000OO0 <=0 or O0000OOOO0O0OO00O <=0 :A .messagebox .showwarning (F ,'Energy, max x and Delta must be strictly positive');return G #line:111
		elif O0O0OO0O000000OO0 <.5 *O0000OOOO0O0OO00O :A .messagebox .showwarning (F ,'Max x must be at least half of Delta');return G #line:112
		elif O0O0OO0O000000OO0 /O00000O00OOO0OO00 >100 :A .messagebox .showwarning (F ,'The potential cannot become too narrow, either increase l or decrease xmax');return G #line:113
		elif O0O0OO0O000000OO0 /O0000OOOO0O0OO00O >1e5 :A .messagebox .showwarning (F ,'For the sake of impatience, this program does not allow xmax/delta > 1e5');return G #line:114
		else :return I #line:115
	def paramPacketWarning (OOO0OOOOO0O0OOOO0 ,O0O0OO0OO0OOO0O0O ,OOO0OO0O00O0O000O ,OO00O0000O0000O00 ,OO00OO0O0OOO0OO00 ,O0O0O0OO0OOOO000O ):#line:116
		OO000OOOO00OOOOO0 =OO00O0000O0000O00 #line:117
		if O0O0OO0OO0OOO0O0O <=0 or OOO0OO0O00O0O000O <=0 or OO000OOOO00OOOOO0 <=0 :A .messagebox .showwarning (F ,'Mass, Time step and Total time must be strictly positive');return G #line:118
		elif O0O0O0OO0OOOO000O /OO00OO0O0OOO0OO00 >200 :A .messagebox .showwarning (F ,'For the sake of impatience, this program does not allow xmax/delta > 200 for wave packet propagation');return G #line:119
		elif OO000OOOO00OOOOO0 /OOO0OO0O00O0O000O >1e8 :A .messagebox .showwarning (F ,'For the sake of impatience, this program does not allow totalt/dt > 1e8 for wave packet propagation');return G #line:120
		else :return I #line:121
	def paramScanWarning (OO0O0O000OOO00O00 ,O000OO000000O00O0 ,O0O0O00000OO000OO ):#line:122
		O00000OOOOO0O0OO0 =O0O0O00000OO000OO ;O0OOO0O0000O000O0 =O000OO000000O00O0 #line:123
		if O0OOO0O0000O000O0 <=0 or O00000OOOOO0O0OO0 <=0 :A .messagebox .showwarning (F ,'Energy minimum and maximum for energy scan need to be positive');return G #line:124
		elif O0OOO0O0000O000O0 >O00000OOOOO0O0OO0 :A .messagebox .showwarning (F ,'The minimum energy needs to be smaller than the maximum energy for the energy scan');return G #line:125
		else :return I #line:126
def M (OO00OO00O0O00O0O0 ,OOOO0O0OOOOOO0O00 ,O0O0000O00O0O0000 ):#line:127
	OOO0000000OOO00O0 =D (OO00OO00O0O00O0O0 );OOO00O0OOO000OOOO =OO00OO00O0O00O0O0 [1 ]-OO00OO00O0O00O0O0 [0 ];OO000OOOOO00O0O0O =C .sqrt (2 *O0O0000O00O0O0000 );O00OOO000OO0O0O0O =C .empty (OOO0000000OOO00O0 -1 ,dtype =Z );O00OOO000OO0O0O0O [OOO0000000OOO00O0 -2 ]=C .exp (1j *OO000OOOOO00O0O0O *OOO00O0OOO000OOOO )#line:128
	for O0O0OOO0O0O00OO0O in reversed (L (OOO0000000OOO00O0 -2 )):O00O000O00O0O00O0 =2 *(OOOO0O0OOOOOO0O00 [O0O0OOO0O0O00OO0O +1 ]-O0O0000O00O0O0000 );O00OOO000OO0O0O0O [O0O0OOO0O0O00OO0O ]=1 /(OOO00O0OOO000OOOO **2 *O00O000O00O0O00O0 +2 -O00OOO000OO0O0O0O [O0O0OOO0O0O00OO0O +1 ])#line:129
	O0OO0OOOOO0OO0OO0 =(O00OOO000OO0O0O0O [0 ]*C .exp (1j *OO000OOOOO00O0O0O *OO00OO00O0O00O0O0 [0 ])-C .exp (1j *OO000OOOOO00O0O0O *OO00OO00O0O00O0O0 [1 ]))/(C .exp (-1j *OO000OOOOO00O0O0O *OO00OO00O0O00O0O0 [1 ])-O00OOO000OO0O0O0O [0 ]*C .exp (-1j *OO000OOOOO00O0O0O *OO00OO00O0O00O0O0 [0 ]));O00O000000000OOOO =C .empty (OOO0000000OOO00O0 ,dtype =Z );O00O000000000OOOO [0 ]=C .exp (1j *OO000OOOOO00O0O0O *OO00OO00O0O00O0O0 [0 ])+O0OO0OOOOO0OO0OO0 *C .exp (-1j *OO000OOOOO00O0O0O *OO00OO00O0O00O0O0 [0 ])#line:130
	for O0O0OOO0O0O00OO0O in L (1 ,OOO0000000OOO00O0 ):O00O000000000OOOO [O0O0OOO0O0O00OO0O ]=O00OOO000OO0O0O0O [O0O0OOO0O0O00OO0O -1 ]*O00O000000000OOOO [O0O0OOO0O0O00OO0O -1 ]#line:131
	OO00OO0OOOO0O000O =C .max ([C .max (C .real (O00O000000000OOOO )),C .max (C .imag (O00O000000000OOOO ))]);OOO0OOOO000OOO0O0 =C .min ([C .min (C .real (O00O000000000OOOO )),C .min (C .imag (O00O000000000OOOO ))]);O00O000000000OOOO =O00O000000000OOOO *.25 *C .max (OOOO0O0OOOOOO0O00 )/(OO00OO0OOOO0O000O -OOO0OOOO000OOO0O0 );return O00O000000000OOOO #line:132
if __name__ =='__main__':H =E ();H .mainloop ()