PK O) META-INF/PK O)^LMETA-INF/MANIFEST.MFManifest-Version: 1.0 Main-Class: Main Created-By: CodeWarrior Java Linker Name: Main.class Digest-Algorithms: SHA MD5 SHA-Digest: lQffL5WO+WOW9Mix2sRdESOf6ZI= MD5-Digest: gewBORsE6TzAQFDwiT1yGA== PK O)ho.MRJApp.propertiescom.apple.mrj.application.main=Main com.apple.mrj.application.classpath=/$VFS/ com.apple.mrj.application.growbox.intrudes=true com.apple.mrj.application.apple.menu.quit=false PK O)pcMorsePractice.gifGIF89a=)ggؠ!,=)@H0I"gPȶp}dyhA%u tmx>| * 0Ǭ4ZُJjnmώ"3UMչGإ=rMZ[X!FN }0^0"PvUu+ll?(SǨ B3{8ia ;PK O)org/minow/MorsePractice/PK O)Tü(org/minow/MorsePractice/Comparable.class߼- ()V compareTo(Ljava/lang/Object;)I SourceFile"org/minow/MorsePractice/Comparablejava/lang/ObjectComparable.java  PK O)hր*org/minow/MorsePractice/EditTextArea.class߼-T()Vlistener.Lorg/minow/MorsePractice/EditTextAreaListener;activeTextArea&Lorg/minow/MorsePractice/EditTextArea;currentHasSelectionZcurrentHasClipboardContentcurrentUndoStateI undoStateundoTextLjava/lang/String;previousSelectionStartbeforeSelectionStartbeforeSelectionEnd undoClipboard$Ljava/awt/datatransfer/Transferable;1(Lorg/minow/MorsePractice/EditTextAreaListener;)V java/awt/TextArea  $org/minow/MorsePractice/EditTextArea       " $ &(  *  ,  .  0  2setEditTextAreaListener 4 5CodeC(Ljava/lang/String;Lorg/minow/MorsePractice/EditTextAreaListener;)V(Ljava/lang/String;)V 9 :3(IILorg/minow/MorsePractice/EditTextAreaListener;)V(II)V = >E(Ljava/lang/String;IILorg/minow/MorsePractice/EditTextAreaListener;)V(Ljava/lang/String;II)V A BF(Ljava/lang/String;IIILorg/minow/MorsePractice/EditTextAreaListener;)V(Ljava/lang/String;III)V E FremoveKeyListener(Ljava/awt/event/KeyListener;)V HIjava/awt/ComponentK LJremoveFocusListener!(Ljava/awt/event/FocusListener;)V NO LPremoveTextListener (Ljava/awt/event/TextListener;)V RSjava/awt/TextComponentU VTremoveMouseListener!(Ljava/awt/event/MouseListener;)V XY LZenableEditMenu*(Lorg/minow/MorsePractice/EditTextArea;Z)V \] ^addKeyListener `I LaaddFocusListener cO LdaddTextListener fS VgaddMouseListener iY LjgetEditTextAreaListener0()Lorg/minow/MorsePractice/EditTextAreaListener;setUndoMenuItem<(Lorg/minow/MorsePractice/EditTextArea;Ljava/awt/MenuItem;)V(Ljava/awt/MenuItem;)V np qundoMenuLabels[Ljava/lang/String; st,org/minow/MorsePractice/EditTextAreaListenerv wusetLabel y9java/awt/MenuItem{ |z setEnabled(Z)V ~ |getUndoMenuItemLabel()Ljava/lang/String; isUndoMenuItemEnabled()Z cutClipboardContents saveUndoState(I)V copyClipboardContents  getSelectionStart()I VgetSelectionEnd V replaceRange A getSelectedText V putClipboard 9 pasteClipboardContentsisClipboardString whiteLjava/awt/Color; java/awt/Color  setBackground(Ljava/awt/Color;)V Lblack  setForeground L getClipboard clearSelectionreplaceSelection focusGained(Ljava/awt/event/FocusEvent;)V focusLosttextValueChanged(Ljava/awt/event/TextEvent;)VeditTextValueChanged w keyPressed(Ljava/awt/event/KeyEvent;)V keyReleasedkeyTypedsaveKeyEventUndoState  mouseClicked(Ljava/awt/event/MouseEvent;)V mouseEntered mouseExited mousePressed mouseReleased getKeyChar()C java/awt/event/KeyEvent abs(I)I java/lang/Math getText VgetClipboardContents&()Ljava/awt/datatransfer/Transferable; killUndo performUndosetText 9 VsetSelectionStart VsetSelectionEnd Vjava/lang/Exception getToolkit()Ljava/awt/Toolkit; LgetSystemClipboard#()Ljava/awt/datatransfer/Clipboard; java/awt/Toolkit  setContentsM(Ljava/awt/datatransfer/Transferable;Ljava/awt/datatransfer/ClipboardOwner;)V java/awt/datatransfer/Clipboard errLjava/io/PrintStream; java/lang/System java/lang/StringBuffer#Undo clipboard exchange exception:  :append,(Ljava/lang/Object;)Ljava/lang/StringBuffer;    toString  println 9java/io/PrintStream %java/awt/datatransfer/StringSelection :#No system clipboard support, sorry.#Put data into clipboard exception: 0java/awt/datatransfer/UnsupportedFlavorExceptionjava/io/IOException  stringFlavor"Ljava/awt/datatransfer/DataFlavor; "# java/awt/datatransfer/DataFlavor% &$isDataFlavorSupported%(Ljava/awt/datatransfer/DataFlavor;)Z ()"java/awt/datatransfer/Transferable+ ,*getTransferData6(Ljava/awt/datatransfer/DataFlavor;)Ljava/lang/Object; ./ ,0java/lang/String2out 4 5Warning: can't get clipboard: 7java/lang/Throwable9 :,(Ljava/lang/String;)Ljava/lang/StringBuffer;  < = Exception looking at clipboard: ? getContents8(Ljava/lang/Object;)Ljava/awt/datatransfer/Transferable; AB CGet clipboard exception: E+(Lorg/minow/MorsePractice/EditTextArea;ZZ)V \G wH SourceFilejava/awt/event/FocusListenerKjava/awt/event/TextListenerMjava/awt/event/KeyListenerOjava/awt/event/MouseListenerQEditTextArea.java!LNPR        $7NB****!*#*%*'*)+*-*/*1*3*+687OC*+;***!*#*%*'*)+*-*/*1*3*,6<7PD*?***!*#*%*'*)+*-*/*1*3*-6@7RF*+C***!*#*%*'*)+*-*/*1*3*6D7TH*+G***!*#*%*'*)+*-*/*1*3*6!47PD*++ **M**Q**W**[*_ **b**e**h**k**_lm7* no7'* *+r+x2}+np7+*}+*Ŧ7 x*'27MA<*'7227777772<<7$***)**7 **7:.*<&**Ǧ*Ӧ****7!**)**97 **+**7**_7*_7'**_* *+7 7 7*+**_7 7 7 7 7 **_7:.+$*ڤ*ڱ7*=*>*'*-d^*'*/*1**޵+*3> 33>>>>>33**3*-7&*'*)+*3**_7*'**' *'` *'d'*L*=**+**/**1*-*++*3G*N-*: *3*-3NY  -**_Y97WCY+M*N-$-,ؤNY - '*7qM)L*M,B,'-6,'13L&W"WM6Y8 ,;>+%(%,!%07J6<*M,,,'- <MY@ ,7E1L*M,$,*DLMYF ,+"\]7zn*+*d>6+***>*6*!*#*'*%#*!*#**'%*+IJSPK O)yb 2org/minow/MorsePractice/EditTextAreaListener.class߼-S()Vjava/lang/StringUndo BugUndo Undo Typing  Undo Delete Undo Cut  Undo Paste Undo Clear Undo ReplaceRedo Redo Typing Redo DeleteRedo Cut Redo Paste Redo Clear Redo Replace!undoMenuLabels[Ljava/lang/String; #$,org/minow/MorsePractice/EditTextAreaListener& '%CodeUNDO_UNDEFINEDI UNDO_NOTHING UNDO_TYPING UNDO_DELETEUNDO_CUT UNDO_PASTE UNDO_CLEAR UNDO_REPLACE REDO_NOTHING REDO_TYPING  REDO_DELETE REDO_CUT  REDO_PASTE  REDO_CLEAR  REDO_REPLACEUNDO_ACTION_COUNTenableEditMenu+(Lorg/minow/MorsePractice/EditTextArea;ZZ)VeditTextValueChanged(Ljava/awt/event/TextEvent;)V ConstantValue SourceFilejava/lang/ObjectPEditTextAreaListener.java'Q*+N,-+N./+N01+N23+N45+N67+N89+N:;+N<=+N>?+N@A+NBC+NDE+NFG+NHI+N:#$)i]YSYSY SY SYSYSYSYSYSY SY SY SY SY  SY"S(JKLMORPK O)UU*org/minow/MorsePractice/EtchedBorder.class߼-()V java/awt/Font TimesRoman(Ljava/lang/String;II)V   defaultLabelFontLjava/awt/Font; $org/minow/MorsePractice/EtchedBorder  controlDkShadowLjava/awt/SystemColor; java/awt/SystemColor borderDarkShadowLjava/awt/Color;   controlShadow   borderShadow  controlLtHighlight ! "borderLightHighlight $ %controlHighlight ' (borderHighlight * +CodeLEFTICENTERRIGHTdefaultBorderThicknessdefaultBorderGapslop labelFont labelTextLjava/lang/String; alignmentborderThickness borderGapinsideComponentLjava/awt/Component; labelColor(Ljava/awt/Component;)V)(Ljava/awt/Component;Ljava/lang/String;)V D E java/awt/PanelH IG : K ;< M =/ O >/ Q ?/ Sjava/awt/ColorU(I)V X VY B [ @A ] setLabelText:(Ljava/lang/String;)Lorg/minow/MorsePractice/EtchedBorder; _` ajava/awt/BorderLayoutc dG setLayout(Ljava/awt/LayoutManager;)V fgjava/awt/Containeri jhCenterladd<(Ljava/lang/String;Ljava/awt/Component;)Ljava/awt/Component; no jp getBackground()Ljava/awt/Color; rsjava/awt/Componentu vt setBackground(Ljava/awt/Color;)V xy vzinsets()Ljava/awt/Insets; |} j~max(II)I java/lang/Math length()I java/lang/String java/lang/ExceptiongetFontMetrics'(Ljava/awt/Font;)Ljava/awt/FontMetrics; v getAscent java/awt/FontMetrics  getDescent  getLeading  getHeight top /java/awt/Insets left / right / bottom /  setThickness)(I)Lorg/minow/MorsePractice/EtchedBorder;layout  jrepaint  vsetGap setLabelFont7(Ljava/awt/Font;)Lorg/minow/MorsePractice/EtchedBorder; setAlignment setLabelColor8(Ljava/awt/Color;)Lorg/minow/MorsePractice/EtchedBorder;paint(Ljava/awt/Graphics;)Vsize()Ljava/awt/Dimension; vwidth /java/awt/Dimension height / setFont(Ljava/awt/Font;)V java/awt/Graphics ()Ljava/awt/FontMetrics; black  Vwhite  VsetColor y drawLine(IIII)V  stringWidth(Ljava/lang/String;)I  clearRect clipRect  drawString   ConstantValue SourceFileEtchedBorder.java!I./01/23/4 5/67/28/9: ;<=/>/?/@AB$* -4(Y  #&),C-*+FD-_S*J*L*N*P*R*T*VYWZ\*+^*,bW*dYek*m+qW*+w{|}- *L*R=*T`>6*NS*NI**L:6666    d`6``6W6>+Y`+Y`+Y`+Y`+)hk- ***-*T***-+*+L***_`-*+N***-*P***- *+\**-*M,>,6+*L+:66*w :*N!*N*R*Rdl6*Rl6  `6 *Rdd6 *Rddd6 6 r :&: *Rd :,: dd6 dd6++   +   ++ +   *R*N*N*R`66*N6hd66*P22&dl6dd66+d ``+`+*\+*N`+*^ *^PK O)2r)org/minow/MorsePractice/ImageCanvas.class߼-5()VtheImageLjava/awt/Image;(Ljava/awt/Image;)V java/awt/Canvas  #org/minow/MorsePractice/ImageCanvas Codepaint(Ljava/awt/Graphics;)Vupdate   drawImage3(Ljava/awt/Image;IILjava/awt/image/ImageObserver;)Z java/awt/Graphics getPreferredSize()Ljava/awt/Dimension;java/awt/DimensiongetWidth!(Ljava/awt/image/ImageObserver;)I  java/awt/Image" #! getHeight % #&(II)V ( ) preferredSize  ,getMinimumSize minimumSize . 0getMaximumSize SourceFileImageCanvas.java * **+*+++*W&Y**$**'*L++*-.*-/*12*-34PK O)08 *org/minow/MorsePractice/IntegerField.class߼-()VtoolkitLjava/awt/Toolkit;integerFormatterLjava/text/NumberFormat;lastGoodStringLjava/lang/String;minimumImaximummyName(IIII)V $org/minow/MorsePractice/IntegerField Code(I)V(II)V java/awt/TextField      whiteLjava/awt/Color; "#java/awt/Color% &$ setBackground(Ljava/awt/Color;)V ()java/awt/Component+ ,*getDefaultToolkit()Ljava/awt/Toolkit; ./java/awt/Toolkit1 20  4 getDefault()Ljava/util/Locale; 67java/util/Locale9 :8getNumberInstance,(Ljava/util/Locale;)Ljava/text/NumberFormat; <=java/text/NumberFormat? @>  BsetParseIntegerOnly(Z)V DE @FaddTextListener (Ljava/awt/event/TextListener;)V HIjava/awt/TextComponentK LJtoString(I)Ljava/lang/String; NOjava/lang/IntegerQ RP  TsetText(Ljava/lang/String;)V VW LX setMyNamegetValue()Itrim()Ljava/lang/String; ]^java/lang/String` a_length c\ ad0fjava/text/ParseExceptionhparse&(Ljava/lang/String;)Ljava/lang/Number; jk @lintValue n\java/lang/Numberp qoerrLjava/io/PrintStream; stjava/lang/Systemv wujava/lang/StringBufferyUnexpected exception { W z} getMessage ^java/lang/Throwable append,(Ljava/lang/String;)Ljava/lang/StringBuffer; z parsing "" N^ zprintln Wjava/io/PrintStream setValueformat(J)Ljava/lang/String; @ selectAll  L setMinimumgetText ^ LparseInt(Ljava/lang/String;)I R getMinimum setMaximum getMaximumtextValueChanged(Ljava/awt/event/TextEvent;)Vjava/lang/NumberFormatExceptionrange }beep  2 SourceFilejava/awt/event/TextListenerIntegerField.java!      *  *  * XL****!*'-*35*;AC*CG**M*SU**UYZW*+[\iU*Ube *gU*C*UmrLxzY|~+Ŧ*UѦ٦*gU""i&**CU**UY*4(**!*SM*,Y*,U\*7+*!* **SM*,Y*,U\*!!cO*M,e-,>**!* *! Y*,UM*5**UY;>PK O)hS_ +org/minow/MorsePractice/KochTextField.class߼-()Vowner'Lorg/minow/MorsePractice/MorsePractice;labelsLjava/util/Hashtable;normalTextColorLjava/awt/Color;selectedTextColor*(Lorg/minow/MorsePractice/MorsePractice;)V java/awt/Panel  %org/minow/MorsePractice/KochTextField java/util/Hashtable kochChars[C %org/minow/MorsePractice/MorsePractice (I)V    blue !java/awt/Color# $"  &yellow ( $)  + java/awt/Font- Monospaced/(Ljava/lang/String;II)V 1 .2java/awt/GridLayout4(II)V 6 57 setLayout(Ljava/awt/LayoutManager;)V 9:java/awt/Container< =;java/lang/String?([CII)V A @Bjava/awt/LabelD(Ljava/lang/String;)V F EGsetFont(Ljava/awt/Font;)V IJjava/awt/ComponentL MKaddMouseListener!(Ljava/awt/event/MouseListener;)V OP MQcharAt(I)C ST @UgetMorseButtonState(C)Z WX YsetKochLabelState(Ljava/awt/Label;Z)V [\ ]getMorseButton(C)Ljava/awt/Checkbox; _` aaddItemListener (Ljava/awt/event/ItemListener;)V cdjava/awt/Checkboxf gegetName()Ljava/lang/String; ij Mkput8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; mn oadd*(Ljava/awt/Component;)Ljava/awt/Component; qr =sCode mouseClicked(Ljava/awt/event/MouseEvent;)V getComponent()Ljava/awt/Component; xyjava/awt/event/ComponentEvent{ |zgetText ~j EsetMorseButtonState(CZZ)V  mouseEnteredgetPredefinedCursor(I)Ljava/awt/Cursor; java/awt/Cursor  setCursor(Ljava/awt/Cursor;)V = mouseExitedgetDefaultCursor()Ljava/awt/Cursor;  mousePressed mouseReleaseditemStateChanged(Ljava/awt/event/ItemEvent;)Vjava/lang/ExceptiongetItemSelectable()Ljava/awt/ItemSelectable; java/awt/event/ItemEvent (Ljava/awt/Checkbox;)V [ printStackTrace java/lang/Throwable get&(Ljava/lang/Object;)Ljava/lang/Object; getState()Z g setForeground(Ljava/awt/Color;)V M setBackground M getBackground()Ljava/awt/Color; Mrepaint  M SourceFilejava/awt/event/MouseListenerjava/awt/event/ItemListenerKochTextField.java!   u***Y *%'**,*+.Y0 3M*5Y8>>c@YC:EYH:,N*RV6*+Z^+b:*h* lpW*tWvwu<0+}EM,V>*Z6**,^wu * Ѧwu*wu wu u*+gM*,M, [u++lM* ,EN+6*-^[\u8,+*,+*'+*'+*Ȧ+PK O)Ӛ .org/minow/MorsePractice/MacFileUtilities.class߼-()V mrjFileUtilsLjava/lang/Class; (org/minow/MorsePractice/MacFileUtilities  mrjOSType   mrjSetFileTypeAndCreatorLjava/lang/reflect/Method; mrjOSTypeConstructorLjava/lang/reflect/Constructor;  mrjOSTypeMethodToInt  mrjGetFileTypeMethod  java/lang/Exceptioncom.apple.mrj.MRJFileUtilsforName%(Ljava/lang/String;)Ljava/lang/Class; java/lang/Class! " com.apple.mrj.MRJOSType$class$java$lang$String & 'java.lang.String)class$ + ,getDeclaredConstructor3([Ljava/lang/Class;)Ljava/lang/reflect/Constructor; ./ "0toInt2getDeclaredMethod@(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; 45 "6 getFileType8class$java$io$File : ; java.io.File=setFileTypeAndCreator?CodesetCreatorAndFileType9(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;)V Exceptionsjava/lang/ObjectE newInstance'([Ljava/lang/Object;)Ljava/lang/Object; GHjava/lang/reflect/ConstructorJ KIinvoke9(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; MNjava/lang/reflect/MethodP QOjava/io/IOExceptionS getMessage()Ljava/lang/String; UVjava/lang/ThrowableX YW(Ljava/lang/String;)V [\ T] isFileType5(Ljava/io/File;Ljava/lang/String;Ljava/lang/String;)Z java/io/Filea#(Ljava/io/File;Ljava/lang/String;)V [c bd#(Ljava/io/File;Ljava/lang/String;)Z _f g java/lang/ClassNotFoundExceptioni osTypeToInt(Ljava/lang/String;)I kl m(Ljava/io/File;)I 8o p j]java/lang/Stringsjava/lang/IntegeruintValue()I wx vy [ F{ Syntheticjava/lang/NoClassDefFoundError~ ] SourceFileMacFileUtilities.java!F      &}:}A #%# "Y( ( *-Y(S1 3"79"Y< < >-Y-Y=+n>*q6=#N-TTY-Z^jY-ZrDTj klAC/<tM,*S,LN-FR:vz<W), 8oA@,<FY*SRM,FRN-vz<W&)[A*|+A&*#LY+Zj}PK O)ƛ9 'org/minow/MorsePractice/MorseCode.class߼-()V!org/minow/MorsePractice/MorseCode.-(CLjava/lang/String;)V   -... -.-. -.....-.--........----.-.-..--!-.#---%.--.'--.-).-.+...--/..-1...-3.--5-..-7-.--9--..;-..-.=.-.-.-?--..--A..--..C-----E.----G..---I...--K....-M.....O-....Q--...S---..U----.W= BTY-...-[((CLjava/lang/String;Ljava/lang/String;)V ] ^+ AR`.-.-.b# SKd...-.-f SPhjmorse$[Lorg/minow/MorsePractice/MorseCode; lm nspp rspace#Lorg/minow/MorsePractice/MorseCode; tu vjava/util/Hashtablex  yzsymbolsLjava/util/Hashtable; |} ~ getLetter()C valueOf(C)Ljava/lang/String; java/lang/String put8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; yCodeletterClabelLjava/lang/String;codejava/lang/Object z   getLabel()Ljava/lang/String;getCodetoString getCodeTokens8(Ljava/lang/String;)[Lorg/minow/MorsePractice/MorseCode;java/util/Vectorlength()I (I)V  java/util/StringTokenizer ((Ljava/lang/String;Ljava/lang/String;Z)V   nextToken  toUpperCase  equals(Ljava/lang/Object;)Z  get&(Ljava/lang/Object;)Ljava/lang/Object; y addElement(Ljava/lang/Object;)V  toCharArray()[C  getMorseCode&(C)Lorg/minow/MorsePractice/MorseCode;  hasMoreTokens()Z size  elementAt(I)Ljava/lang/Object; 7(Ljava/lang/String;)Lorg/minow/MorsePractice/MorseCode;  SourceFileMorseCode.java!lmtu|} .YYA SYYB SYYC SYYD SYYE SYYF SYYG SYYH SYYI SY YJ SY YK SY YL SY YM" SY YN$ SYYO& SYYP( SYYQ* SYYR, SYYS. SYYT0 SYYU2 SYYV4 SYYW6 SYYX8 SYYY: SYYZ< SYY/> SYY.@ SYY,B SYY?D SYY0F SYY1H SY Y2J SY!Y3L SY"Y4N SY#Y5P SY$Y6R SY%Y7T SY&Y8V SY'Y9X SY(Y SY)Y SY*Y=Z\_SY+Y+ac_SY,Y#eg_SY-Y ik_SoY qs_wyY{;o2L+o2Woا *,_] ***,*-****š Y*LY*Mf,N- -sN-: +/-:64: +؋,+׸N6-+S+ؐ- ޡ !*L+wL+PK O)3 -org/minow/MorsePractice/MorseCodeSender.class߼-()V synthesizerLorg/minow/sound/Sound;textRateIfarnsworthRateusingFarnsworthZ ditDuration dahDuration charDuration wordDuration PARIS_TICKS4 PARIS_CHARS  PARIS_SPACE(Lorg/minow/sound/Sound;)V java/lang/Object  'org/minow/MorsePractice/MorseCodeSender       "  $  &  (  * setDurations , -Code getTextRate()I setTextRate(I)VgetFarnsworthRatesetFarnsworthRate()ZsetUsingFarnsworth(Z)V` synthesize(Ljava/lang/String;)J getCodeTokens8(Ljava/lang/String;)[Lorg/minow/MorsePractice/MorseCode; <=!org/minow/MorsePractice/MorseCode? @>&(Lorg/minow/MorsePractice/MorseCode;)I :B Cjava/lang/ExceptionEgetCode()Ljava/lang/String; GH @Isilence K3org/minow/sound/SoundM NLcharAt(I)C PQjava/lang/StringS TRtone V3 NWlength Y1 TZprintStackTrace \java/lang/Throwable^ _]testDurationComputation a8 b 01 d 41 f 6 h 78 joutLjava/io/PrintStream; lmjava/lang/Systemo pnjava/lang/StringBufferr Farnsworth t(Ljava/lang/String;)V v swenabledydisabled{append,(Ljava/lang/String;)Ljava/lang/StringBuffer; }~ stoString H sprintln vjava/io/PrintStream 23  s PARISvalueOf(I)Ljava/lang/String; T 53 resetSynthesizer  N :; (I)Ljava/lang/StringBuffer; } s(J)Ljava/lang/StringBuffer; } s msec.   ConstantValue SourceFileMorseCodeSender.java!      /?3** **!*#*%*'*)*++*.01/*23/ **.41/*53/ **.6/*!78/ *!*.,/sg9*4hl<*!**9*4hl=4h hdl>*#**#h%*h*#d'*h*'d*#d):;/4( A+A:6 *2DaAؑ :B/=+JN-*+*%O*%`=6-U6t ]-9."*+*#X*#`=>*+*%X*+*#O*%`=*+*)O*)`=*+*#O*#`=-[e*+*'O*'`=N-`Fa/ *c*ca8/] Q*e=*g>*i6*kqsYux*!z|6*sY:6 ٦WW؊:qsYx٦*!T6 C* *+*7 qsYx ٦ ó  ع:*+*7 qsYx٦ q۳ *+*k**PK O)niqiq+org/minow/MorsePractice/MorsePractice.class߼-m()V+KMRSUAPTLOWI.NJEF0Y,VG5/Q9ZH38B?427C1D6X=+#length()I java/lang/String  kochChars[C %org/minow/MorsePractice/MorsePractice  javax.sound.sampled.AudioFormat"javax.sound.sampled.SourceDataLinejavax.sound.sampled.DataLine javax.sound.sampled.LineListenerjavaxSoundClassNames[Ljava/lang/String;  sun.audio.AudioDatasun.audio.AudioDataStreamsun.audio.AudioStream!sun.audio.AudioPlayer#sunSoundClassNames % &Code copyrightLjava/lang/String;:Copyright 1999-2000, Martin Minow. All Rights Reserved.+version1.3.authorMartin Minow, 1DEBUGZdefaultRandomDurationIdefaultFiveCharGroupsdefaultParamFileMorsePractice.txt;defaultUsingFarnsworthdefaultTextRate defaultFarnsworthRateinitialSilence2morsePracticeImageNameMorsePractice.gifE kochStringaboutMorseTraining To learn Morse Code using random symbols and the Koch method, train in this order: K M R S U A P T L O W I . N J E F 0 Y , V G 5 / Q 9 Z H 3 8 B ? 4 2 7 C 1 D 6 X BT or = SK or + AR or # Set the code speed fairly high using "Fransworth" spacing and train on the selected characters until you are at least 90% correct for a 5 minute sequence, then add the next character. The Koch Training Sequence field shows the characters in the recommended training order. To start training, select the symbol set, sending speed, and training duration, then click on the "Random Trial" button. You will hear five short beeps, before the training begins. (If you don't select any symbol, the program will use the entire Morse Code set.) After the training completes, type what you heard into the text box, using '~' as a placeholder for characters you missed, then click on the "Check" button to see the results. The program can save your training results in a "student workbook" file. (Analysis programs haven't been written yet.) MorsePractice saves your training set and speed parameters in a parameter file named MorsePractice.txt. You can also listen to QSO's (amateur radio contacts) generated using a random grammar. These follow the format used in the United States for license examinations. When you select the "Random QSO" option, MorsePractice will synthesize a QSO, then display it in the text area. By the way, the callsigns are not necessarily real and don't always match the license class: a novice might have an "amateur extra" license. Similarly, you should expect other inconsistencies, such as a 13 year-old retired politician. The program uses your current sending speed to select between a short, medium, and long QSO, or you can select one of the three lengths directly. You will have to check your listening ability yourself: the "Check" button only works for random symbol training since, for high speeds, you should be listening for content, and will not be concerned with the exact symbols that MorsePractice sends. Additional random symbol training options concentrate on symbols of various lengths, digits, and punctuation and prosigns, or amateur call signs. After listening to the sequence, type what you heard and click the "Check" button to get your score.IaboutMorsePracticeMorsePractice lets you listen to Morse Code or learn the code by listening to randomly-generated code symbols or amateur contacts (QSO's). You can use the large text area to listen to text you choose, including text you load from a file or the system clipboard. To enter "prosigns" such as AR, you must surround each by spaces or, preferably, use the single character equivalents: BT or = SK or + AR or # The "File" Menu lets you load text into the text area, save text to a file, or save an audio file from Morse Code that you generated. MorsePractice provides two kinds of random message practice: random symbol and random QSO ("QSO" is an amateur radio abbreviation for a contact between two amateur radio operators). Click the "Training Info" button for more information about random symbol and random QSO training. 1.3 Copyright 1999-2000, Martin Minow. All Rights Reserved. Programmed by Martin Minow, L dialogFontLjava/awt/Font; symbolFont isJustCreatedtextArea&Lorg/minow/MorsePractice/EditTextArea; kochTextField'Lorg/minow/MorsePractice/KochTextField;pRandomSymbolsRandom SymbolsW pRandomQSO Random QSOZpRandomShortQSORandom Short QSO]pRandomMediumQSORandom Medium QSO`pRandomLongQSORandom Long QSOc pRandomDigits Random DigitsfpRandom2ElementRandom 1 & 2-Elem SymbsipRandom3ElementRandom 3-Elem SymbslpRandom4ElementRandom 4-Elem Symbso pRandomPunctRandom Punct & SignsrpRandomCallSignRandom Call Signsu randomChoiceLjava/awt/Choice; listenButtonLjava/awt/Button; startButton stopButton checkButton trainButton infoButton optionsButton textRateField&Lorg/minow/MorsePractice/IntegerField;farnsworthRateFieldrandomDurationFieldusingFarnsworthLjava/awt/Checkbox;fiveCharGroups pTextRateTextRatepFarnsworthRateFarnsworthRatepTrialDuration TrialDurationpUseFarnsworth UseFarnsworthpUse5CharGroupsUseFiveCharGroups pRandomCharsRandomCharacters pRandomFlavor RandomFlavorpSynthFrequencySynthesizerFrequencymenuBarLjava/awt/MenuBar;fileMenuLjava/awt/Menu;miOpenLjava/awt/MenuItem; miSaveText miSaveAudiomiQuitmiHelpmiPariseditMenumiUndomiCutmiCopymiPastemiClear miSelectAll miSelectNoneactiveTextArea codePanelLjava/awt/Panel; buttonPanel optionPanel trainDialog Lorg/minow/awt/util/AlertDialog; aboutDialogbuttonsLjava/util/Hashtable; morseSpace#Lorg/minow/MorsePractice/MorseCode; morseSender)Lorg/minow/MorsePractice/MorseCodeSender; synthesizerLorg/minow/sound/Sound; randomQSO#Lorg/minow/MorsePractice/RandomQSO; randomText wasRandomQSO isApplication(Z)V  java/applet/Applet charAt(I)C  java/awt/FontDialog(Ljava/lang/String;II)V NO  Monospaced PO  Q4  RS  TU java/awt/Choice wx addItem(Ljava/lang/String;)V java/awt/Button Listen  yz  Start Trial  {z  Stop  |z  Check  }z  Training Info  ~z  Program Info  z   Options  z $org/minow/MorsePractice/IntegerField(IIII)V    (II)V   java/awt/CheckboxUse Farnsworth Timings  #Random Uses 5 Character Groups% 'java/awt/MenuBar) * , java/awt/Menu.File0 / 3java/awt/MenuItem5Open...7java/awt/MenuShortcut9(I)V ; :<,(Ljava/lang/String;Ljava/awt/MenuShortcut;)V > 6? A Save Text...C E Save Audio...G 6 JQuitL NMorsePractice HelpP RParis text for debugT VEditX(Ljava/lang/String;Z)V Z /[ ]Undo_ aCutc eCopyg iPastek mClearo q Select Alls u Select Nonew y S { } java/util/Hashtable  !org/minow/MorsePractice/MorseCode (CLjava/lang/String;)V      *  4  4 init showStatus   isSupported([Ljava/lang/String;)Z  java/lang/Exception%org/minow/sound/JavaxSoundSynthesizer printStackTrace java/lang/Throwable outLjava/io/PrintStream; java/lang/System toString()Ljava/lang/String;  println java/io/PrintStream #org/minow/sound/SunSoundSynthesizer org/minow/awt/util/AlertDialogMorse Practice Failure Your Java implementation does not provide a supported audio class library. MorsePractice can use the "sun.audio" or "javax.sound" libraries. Unfortunately, these are not available on your Java implementation. MorsePractice will exit when you click on the "OK" button.<(Ljava/awt/Component;Ljava/lang/String;Ljava/lang/String;Z)V  'org/minow/MorsePractice/MorseCodeSender(Lorg/minow/sound/Sound;)V   !org/minow/MorsePractice/RandomQSO java/lang/StringBuffer!Can't create random QSO grammar:  append,(Ljava/lang/String;)Ljava/lang/StringBuffer;   addComponentListener%(Ljava/awt/event/ComponentListener;)V java/awt/Component  lightGrayLjava/awt/Color; java/awt/Color  setBackground(Ljava/awt/Color;)V  getMorsePracticeImage$(Ljava/lang/String;)Ljava/awt/Image;  #org/minow/MorsePractice/ImageCanvas(Ljava/awt/Image;)V  createCodePanel  createButtonPanel(Ljava/awt/Canvas;)V  createOptionPanel  %org/minow/MorsePractice/KochTextField*(Lorg/minow/MorsePractice/MorsePractice;)V   getBackground()Ljava/awt/Color;  getFrame&(Ljava/awt/Component;)Ljava/awt/Frame;   $org/minow/MorsePractice/EditTextArea F(Ljava/lang/String;IIILorg/minow/MorsePractice/EditTextAreaListener;)V    createMenus  setState  setFont(Ljava/awt/Font;)V  addActionListener"(Ljava/awt/event/ActionListener;)V   setEnabled    addListener#(Lorg/minow/sound/Sound$Listener;)V "#org/minow/sound/Sound% &$createUserExperience ( ) setMenuBar(Ljava/awt/MenuBar;)V +,java/awt/Frame. /-enableEditMenu+(Lorg/minow/MorsePractice/EditTextArea;ZZ)V 12 3getPreferredSize()Ljava/awt/Dimension; 56 7readParameters 9 :add((Ljava/awt/MenuItem;)Ljava/awt/MenuItem; <= /> addSeparator @ /A (Ljava/awt/Menu;)Ljava/awt/Menu; <C *D getHelpMenu()Ljava/awt/Menu; FG *HHelpJ setHelpMenu(Ljava/awt/Menu;)V LM *N 6getItem(I)Ljava/awt/MenuItem; QR /S getItemCount U /Vjava/awt/PanelX Yjava/awt/BorderLayout[ \ setLayout(Ljava/awt/LayoutManager;)V ^_java/awt/Containera b` dWestf)(Ljava/awt/Component;Ljava/lang/Object;)V <h bi kEastmwhite o p$org/minow/MorsePractice/EtchedBorderrListen or Practice Textt)(Ljava/awt/Component;Ljava/lang/String;)V v swKoch Training Sequenceyjava/awt/GridBagLayout{ |java/awt/GridBagConstraints~ gridy 7 gridx 7 weightxD  weighty  fill 7 anchor 7 java/awt/Insets insetsLjava/awt/Insets;  setConstraints4(Ljava/awt/Component;Ljava/awt/GridBagConstraints;)V  |*(Ljava/awt/Component;)Ljava/awt/Component; < b  _ Y gridwidth 7 java/awt/GridLayout getFontMetrics'(Ljava/awt/Font;)Ljava/awt/FontMetrics;  MMM stringWidth(Ljava/lang/String;)I java/awt/FontMetrics morse$[Lorg/minow/MorsePractice/MorseCode;  getLabel   7width 7java/awt/Dimension setSize(Ljava/awt/Dimension;)V  getCode  addItemListener (Ljava/awt/event/ItemListener;)V   getLetter()C  valueOf(C)Ljava/lang/String;  (I)Ljava/lang/String; java/lang/Integer setName  put8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;   setVisible  Morse Code Symbolsjava/awt/LabelOverall speed (WPM): Farnsworth speed (WPM):Random Text Duration (Minutes):getMinimumSize b7height 7 max(II)I java/lang/Math java/awt/TextArea 7 actionPerformed(Ljava/awt/event/ActionEvent;)V getSource()Ljava/lang/Object; java/util/EventObject  listenToText    getSelectedItem     setRandomText  getValue  listenToRandomQSO ; setRandomSymbols  No training choice selectedstopSynthesizer  &checkRandomTrial   !showAboutTrainingDialog # $showAboutProgramDialog & 'setFrequencyDialog ) * readTextFile , - saveTextFile / 0 saveAudio 2 3writeParameters 5 6exit 8; 9 performUndo ;  <cutClipboardContents >  ?copyClipboardContents A  BpasteClipboardContents()Z DE  FclearSelection H  IsetMorseButtonState(CZZ)V KL MtestDurationComputation O PUnknown actionEvent: Rjava/awt/AWTEventT ULearning Morse CodeWtoFront Yjava/awt/Window[ \ZAbout the MorsePractice Program^itemStateChanged(Ljava/awt/event/ItemEvent;)Vjava/lang/ClassCastExceptionbjava/lang/NumberFormatExceptiondgetItemSelectable()Ljava/awt/ItemSelectable; fgjava/awt/event/ItemEventi jhgetState lE mgetSymbolFromCheckbox8(Ljava/awt/Checkbox;)Lorg/minow/MorsePractice/MorseCode; op qlistenToOneSymbol&(Lorg/minow/MorsePractice/MorseCode;)V st uNot a checkbox: wBogus checkbox: ygetMorseButton(C)Ljava/awt/Checkbox; {| }getMorseButtonState(C)Z  setKochLabelState(Ljava/awt/Checkbox;)V  getName  parseInt  get&(Ljava/lang/Object;)Ljava/lang/Object;  No button for '(C)Ljava/lang/StringBuffer;   ', key = ""getSelectedText <org/minow/MorsePractice/Trial currentTimeMillis()J   setTrialText  getText java/awt/TextComponent  toUpperCase(C)C java/lang/Character addPair(CC)V  &(Ljava/lang/Object;)Ljava/lang/String;   % Correct,  correct,  incorrect,  total#org/minow/MorsePractice/TrialDialog~(Ljava/awt/Component;Ljava/lang/String;Ljava/lang/String;Lorg/minow/MorsePractice/Trial;Ljava/lang/String;Ljava/lang/String;)V  setText  getQSO    Z  startSending   synthesize(Ljava/lang/String;)J  silence ; &startSynthesizer  &java/lang/InterruptedExceptionisSynthesizerActive E & getDuration  &d sleep(J)V java/lang/Thread &(Lorg/minow/MorsePractice/MorseCode;)I     getCodeTokens8(Ljava/lang/String;)[Lorg/minow/MorsePractice/MorseCode;   `random()D    Illegal menu option " expand&(Ljava/lang/String;)Ljava/lang/String;   &org/minow/MorsePractice/RandomSentence resetSynthesizer  & setTextRate ; setFarnsworthRate ; setUsingFarnsworth  tick  & Text to read!6(Ljava/awt/Frame;Ljava/lang/String;)Ljava/lang/String; ,#)org/minow/MorsePractice/MorsePracticeFile% &$killUndo (  ) Text to write+7(Ljava/awt/Frame;Ljava/lang/String;Ljava/lang/String;)V /- &.Write Audio File0createBinaryFile>(Ljava/awt/Frame;Ljava/lang/String;)Ljava/io/DataOutputStream; 23 &4java/io/IOException6 writeAudio(Ljava/io/DataOutputStream;)V 89 &:flush <java/io/DataOutputStream> ?=close Ajava/io/FilterOutputStreamC DB 6 setUndoMenuItem<(Lorg/minow/MorsePractice/EditTextArea;Ljava/awt/MenuItem;)V GH  IeditTextValueChanged(Ljava/awt/event/TextEvent;)VsoundSynthesis*org/minow/MorsePractice/SetFrequencyDialogNgetSynthesizerFrequency P &Q(Ljava/awt/Component;D)V S OT isSuccess VE OW OQsetSynthesizerFrequency(D)V Z[ &\java/io/FileNotFoundException^java/io/FileReader` ajava/io/LineNumberReaderc(Ljava/io/Reader;)V e df#h startsWith(Ljava/lang/String;)Z jk ljava/util/StringTokenizern:p'(Ljava/lang/String;Ljava/lang/String;)V r os java/util/NoSuchElementExceptionu nextToken w oxtrim z { hasMoreTokens }E o~equalsIgnoreCase k setValue ; '(Ljava/lang/String;)Ljava/lang/Boolean; java/lang/Boolean  booleanValue E  toCharArray()[C  select  &(Ljava/lang/String;)Ljava/lang/Double; java/lang/Double  doubleValue  err  Unknown param " " ignoredprint   at line  getLineNumber  d(I)Ljava/lang/StringBuffer;  Number format error, "Param line error, "Strange Param line error, "readLine  dParam file error: java/io/BufferedReader Bjava/io/Reader B java/io/File java/io/FileOutputStream(Ljava/io/File;)V  java/io/PrintWriter(Ljava/io/OutputStream;)V  R*chTEXTsetCreatorAndFileType9(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;)V (org/minow/MorsePractice/MacFileUtilities # java/util/Date    TextRate:FarnsworthRate:TrialDuration:UseFarnsworth:(Z)Ljava/lang/StringBuffer;  UseFiveCharGroups: RandomFlavor:SynthesizerFrequency:(D)Ljava/lang/StringBuffer;  RandomCharacters:" (C)V   =Error writing param file:  B checkError E Error writing param file B)Error closing param file (OutputStream): ,(Ljava/lang/Object;)Ljava/lang/StringBuffer;  UnknowngetDefaultToolkit()Ljava/awt/Toolkit;   java/awt/Toolkit   MainforName%(Ljava/lang/String;)Ljava/lang/Class; java/lang/Class / getResource"(Ljava/lang/String;)Ljava/net/URL;  getImage (Ljava/net/URL;)Ljava/awt/Image;    getCodeBase()Ljava/net/URL; !" #2(Ljava/net/URL;Ljava/lang/String;)Ljava/awt/Image; % &java/awt/MediaTracker((Ljava/awt/Component;)V * )+addImage(Ljava/awt/Image;I)V -. )/ waitForID 1; )2 isErrorID(I)Z 45 )6statusID(IZ)I 89 ):Image load error: <Can't load image: >componentHidden"(Ljava/awt/event/ComponentEvent;)VcomponentMovedcomponentShowncomponentResized requestFocus E Fjava/lang/NoClassDefFoundErrorH java/lang/ClassNotFoundExceptionJmain([Ljava/lang/String;)V!org/minow/applets/AppletFrameworkN MorsePracticeP?(Ljava/applet/Applet;Ljava/lang/String;II[Ljava/lang/String;Z)V R OSMorse Code PracticeU /'MorsePractice failed during execution: X8(Ljava/awt/Frame;Ljava/lang/String;Ljava/lang/String;Z)V Z [log ConstantValue SourceFilejava/awt/event/ActionListenerbjava/awt/event/ItemListenerdorg/minow/sound/Sound$Listenerf,org/minow/MorsePractice/EditTextAreaListenerh java/awt/event/ComponentListenerjMorsePractice.java!cegikU)*`,-*`/0*`234`567`894`8:*`<=4`8>7`?@7`AB7`CD*`FG*` H*`JK*`MNOPOQ4RSTUV*`XY*`[\*`^_*`ab*`de*`gh*`jk*`mn*`pq*`st*`vwxyz{z|z}z~zzz*`*`*`*`*`*`*`*`%S*44-(MA  YSYSYSYS YSY SY"SY$S'(*(t*=Uؒ*Y *Y ****Y*X*Y*Y*Y*Y*Y*Y  *Y *Y 2*Y2*Y*Y!"$*Y&"(**Y+-*/Y124*6Y8:YO=@B*6YD:YS=@F*6YHIK*6YM:YQ=@O*6YQIS*6YUIW*/YY\^*6Y`:YZ=@b*6Yd:YX=@f*6Yh:YC=@j*6Yl:YV=@n*6YpIr*6YtIv*6YxIz*|*~**Y*Y Ե******(h*,**Ƃ-*#*YƤL++Ȥ*Ƃ-*'#*YƤL++Ȥ*Ƃ**Y**Y*[*^*a*d*g*m*p*s*vLY+****FLM+ Y+M**,**Y**** N* Y0***(*$************************* ** **!*!*!*****!**'**-*-0*4*8:**;'*MX[(B6*M*4*B?W*4*F?W*4B*4*K?W*4B*4*O?W*-*4EW*^*b?W*^*f?W*^*j?W*^*n?W*^B*^*r?W*^B*^*v?W*^*z?W*-*^EW*-IL+ +B/YK\L*-+O+*S?W*S*P=*4T*P*4W؎>*^T*P*^W؎((*YYZL+\Y]c+*egj+*lnj*qsY*uxM,*sY*zxN|Y}:Y:*cY+*+WY`,*,WY`-*-WY`***W(t|Y}MYN*YY,l-------Y-+,+-*l+W-Y`,*-*l*W-Y`---,*-*l*W-Y`,*-*l*ئW-Y`-,*-*l*֦W-Y`,*-*l*W-Y`-,*-*l*W-Y`,*-*l*W-Y`,* -*l* W( YYYL**M,>6}2:Y":*:,*:*W!+WȲإsY+x:*e(|Y}LYM*YY+,,,,,,Y,, YN+-,*-W,Y`,,,Y+*,**W,Y`+*(,**(W,Y`,,,, Y:+,*W,Y`,,,Y+*,**W,Y`+*$,**$W,Y`,,,, Y:+,*W,Y`,,,Y+*,**W,Y`Y:+,*W6(*856(sg*e*l`<*e*l=*ث>*ث`*``6Y(+M,* * ,**N-X**!-[*6**!d-^**!N-a* *!7-d**! -g!-j-m-p-s -v*-*!Ȥ,**,***",***%,* **(,***+l,*B**.T,*F**1<,*K**4$,*O**7:,*b*|*|=,*f*|*|@,*j*|*|C,*n*|*|GW,*r*|*|J,*v!>*4Nؒd,*z!>*4Nؒ>,*W *Q,,*S *(YS+Vȱ#(5)*~*Y*XJ~*~*~]&(5)**Y*_M**]`a(c+kM,n>T*,r:*vDWYx+VȤ&WYz+VȤM,±!c?e]KL(K?*~:5*6(**r:*vop( +M,>2:(=*~N--n={|(J>M*,N-*Y,-(C7YL=*4 +4W؉+ (B 6YLA+**:666l*6 ?6 *(n   -+  +*** ڤ+* ؎dhl6Yզ: Y Ȧd: *  +*;(1%****** (*** Z(?+**+X*2*N-±"%st(z^*=*amA6 * ؎WW**+W*>A>E( **L+ =*(n>*+: :Y:*i7 76 : k6  2:     * ݷa7 6  W   ؤĤ/ p**ڦݷa7ŦWp** :±$( *M+g Me+j MX+m MK+p M>+s M1+v  M$Y +M*iB 7Y:*B*,: ŦW*Ŧa7W*a7!ظ** :±(nb********$n*2=* ؘ,(+* "'L+*+**/(* ,*/2(iE* 15L+8*+;+@+EW M,:+ +EW!$7(.6>A712(:.*+|*fF*jF*rF*nF+*bJKL(&** !M(1%*!****)(5)OY**RUL+X+YI*(]9( LMaY<bLdY+gM6im*oYqt:y|:: y|:ɦ6 * ٦6 * Ʀ6 * ɦ6 *$ ɦ6 *( d3: 6   4"*  4N   ؋**Ħ9 * ]YY,ǦȤWYY,ǦȤ{WYY,ǦȤ?WYY,ǦȤ,Y:த'W#:YȤ %N-:, ,W+ +W4e4v4WZ_W^7~5(LMNY<LY+MY,N+-YY-Y*-Y*-Y*-Y*$n-Y*(n-Y*-Y*R-6%26* -ֳȲد--#:YȤl::---ȤW---ȤW,$,:YȩLO7ou(MN*3::Y+: M **$+'M,S)Y*,:,0373M;6Y=NW :N,*Y?-,@A( BA( CA( DA( ***G(H,=> +2=W=W= +؈IK LM(cOX<=YNOY-Q*T:,L/YVWYY+\"% ](&*^W alPK O)~ Ii i /org/minow/MorsePractice/MorsePracticeFile.class߼-()V readTextFile6(Ljava/awt/Frame;Ljava/lang/String;)Ljava/lang/String;java/io/IOExceptionjava/awt/FileDialog&(Ljava/awt/Frame;Ljava/lang/String;I)V  )org/minow/MorsePractice/MorsePracticeFile  setFilenameFilter(Ljava/io/FilenameFilter;)V  show java/awt/Dialog getFile()Ljava/lang/String;  java/io/FileReaderjava/lang/StringBuffer  getDirectory " #valueOf&(Ljava/lang/Object;)Ljava/lang/String; %&java/lang/String( )'(Ljava/lang/String;)V + !,append,(Ljava/lang/String;)Ljava/lang/StringBuffer; ./ !0toString 2 !3 , !(C)Ljava/lang/StringBuffer; .7 !8read()I :;java/io/InputStreamReader= ><close @ >ACode saveTextFile7(Ljava/awt/Frame;Ljava/lang/String;Ljava/lang/String;)V java/io/FileF'(Ljava/lang/String;Ljava/lang/String;)V H GIjava/io/FileWriterK(Ljava/io/File;)V M LNR*chPTEXTRsetCreatorAndFileType9(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;)V TU(org/minow/MorsePractice/MacFileUtilitiesW XVwrite Z+java/io/Writer\ ][flush _java/io/OutputStreamWritera b` bAcreateBinaryFile>(Ljava/awt/Frame;Ljava/lang/String;)Ljava/io/DataOutputStream;java/io/FileOutputStreamg hNjava/io/DataOutputStreamj(Ljava/io/OutputStream;)V l kmTVODoULAWqaccept#(Ljava/io/File;Ljava/lang/String;)Zjava/lang/Exceptionu isFileType5(Ljava/io/File;Ljava/lang/String;Ljava/lang/String;)Z wx Xy.txt{endsWith(Ljava/lang/String;)Z }~ ).textjava/lang/Object  SourceFilejava/io/FilenameFilterMorsePracticeFile.java! C MNY*+ :Y:QY!Y$*-145M!Y6:6  9W,?Y6 4NW::, ,BW-tw{ DECtNY*+ :=GY$J:LYONQSY-,^-c-dW::- -dWNQU[emp efCaMMY*+ N--6GY-$-J:hYi:kYnMprYW,GJstCJ.>+,Sz>"W>W,|,>  v C*PK O)ʯ!r=r='org/minow/MorsePractice/RandomQSO.class߼-{()Vjava/lang/StringNovice Technician Tech Plus General Advanced ExtralicenseClasses[Ljava/lang/String; !org/minow/MorsePractice/RandomQSO    callSignFormat   Code noviceLicenseLjava/lang/String; techLicensetechPlusLicensegeneralLicenseadvancedLicense extraLicensegrammar6 Collins | Drake | Eico 753 | Hallicrafters | Heathkit | Icom | Kenwood | National | Radio Shack HTX=100 | RS HTX=100 | Swan | Ten Tec | Yaesu | Homebrew 75S=3 | KWM=2 TR3 | TR4 | T=4XB SR150 | SR160 | SR400 | SR500 | SR2000 DX=660B | HG=10B | HR=10 | HW12 | HW22 | HW32 | HW12A | HW22A | HW32A | HW100 | SB100 IC=275 | IC=475 | IC=575 | IC=725 | IC726 | IC730 | IC=735 | IC=751 | IC=765 | IC=781 | IC=1275 TS=77 | TS=140 | TS=680 | TS=711 | TS=850 | TR=450 | TR=751 | TR=850 | TR=851 NCX3 | NCX5 | NCL 200 120 | 140 | 180 | 240 | 350 585 | 562 | Delta | Argonaut | Omni FT=102 | FT=736 | FT=747 | FT=757 | FT=767 | FT=990 | FT=1000 beam | delta loop | dipole | double zepp | half wave dipole | inverted V | whip | delta loop | parasitic beam | log periodic | quad loop | quad vertical | quagi | rhombic | long=wire | ground=plane | trap doublet | yagi | zepp | monobander | tribander | symmetrical delta loop | 3 element beam | 5 band vertical | 5 element loop | 10 meter dipole | 10 meter whip | 7 band beam | G5RV 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 0 | 5 sunny | rain | freezing rain | sleet | snow | cloudy | partly cloudy | partly sunny | clear | cold and windy | raining | snowing | sunny | hot | windy and warm | cloudy | drizzling | foggy | wet/foggy | fog/drizzle | hot/muggy | hot/dry | cool/windy | smoggy | hot/smoggy | cold/dry | hot/humid | warm | windy | very hot | very cold | very windy | wet/windy | humid | hot and humid 5 | 10 | 20 | 25 | 40 | 50 | 80 | 100 | 125 | 140 | 150 | 170 | 200 | 250 | 270 | 300 engineer | nurse | fireman | mechanic | programmer | carpenter | electrician | writer | teacher | doctor | attorney | lawyer | clerk | [2] chemist | librarian | teller | pyysician | physicist | mathematician | professor | driver | milkman | gardener | bricklayer | guard | dentist | curator | farmer | stock broker | letter carrier | designer | student | college student | high school student | administrator | police officer | investment banker | politician | xray technician Al | Alan | Alice | Allen | Alex | Alexeev | Amber | Anne | Art | Barbara | Bart | Betty | Bea | Bill | Bob | Bruce | Bud | Carl | Carol | Cathy | Cheryl | Chris | Christy | Chuck | Dale | Dave | David | Dennis | Diane | Dick | Dan | Don | Ed | Elaine | Ellen | Francie | Fred | Gary | Helen | Ingrid | Frank | George | Gilda | Gus | Harry | Henry | Jack | James | Jane | Janet | Jeff | Jessica | Jill | Jim | Joan | Joe | John | Jon | Kathy | Kevin | Karen | Karl | Keith | Ken | Kent | Kristen | Kurt | Larry | Lauren | Liholiho | Linda | Lou | Lynda | Lynn | Mark | Margaret | Marv | Maria | Mark | Martin | Marty | Mary | Mike | Monica | Nancy | Neil | Noelani | Oliver | Olivia | Pat | Patrick | Paul | Paula | Peter | Phil | Ralph | Ray | Rex | Rich | Rick | Roy | Ron | Sally | Sam | Scott | Scottie | Spencer | Steve | Stu | Sue | Terry | Tim | Todd | Tony | Thomas | Walt | Wendy | William | Zelda | [5] | | | | G | VE | A | K | W | N 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z [2] Novice | [2] Technician | Tech Plus | [4] General | Advanced | Extra Aiea | Alexander | Asbury | Baker | Beckley | Bedford | Berkeley | Brunswick | Brunsville | Chicago | Cambridge | Charleston | Circleville | Clarksburg | Clear Lake | Cleveland | Crystal | Duncanville | Elizabeth | Ewa | Fairbanks | Fairfield | Flint | Gahanna | Grant | Greensburg | Harper | Honolulu | Hillsdale | Jamestown | Jefferson | Kaaawa | Kona | Lawrenceville | Lakewood | Lincoln | Litchfield | London | Long Beach | Lyndhurst | Lynnville | Mansfield | Maple | Medows | Mentor | Mercer | Mewquite | Midland | Milldale | Milltown | Moorestown | Mountain View | Murray | Newfield | Newport | New London | Olmstead | Oak | Oxnard | Oxford | Paradise | Paris | Perry | Potter | Pottsville | Redwood | Russellville | Salem | Sandy | Saratoga | Smithville | Springdale | Springfield | Starkville | Sunnyvale | Tinker | Trenton | Walnut Creek | Warsaw | Washington | Weston | Wheatfield | Williamson | Worchester | Zion | [23] | New York City | [40] Albany | Avalon | Barnard | Brunswick | Bedford | Chester | Conway | Dime Box | Franklin | Granville | Hamilton | London | Morris | Oxford | Salisbury | Stafford | Stanton | Trenton | Troy | Walpole | Warren | Weston | Windsor Apple | Ashford | Baker | Baldwin | Banner | Barnard | Benton | Carson | Chester | Conway | Cornwall | Crystal | Fletcher | Franklin | Granite | Crant | Harper | Jefferson | Hamilton | Hickory | Lincoln | Maple | Mercer | Morgan | Morris | Murray | Oak | Orwell | Quail | Perry | Potter | Salem | Stafford | Stone | Tinker | Walnut | Warren | Washington | Weston | Wilton New | Old | North | South | East | West Castle | Heights | Island | Valley | City | Creek | Park | Mill | Neck Lots of QRM. | Lots of QRM= | Should we QSY? | [2] Please QRS. | Must QRT for dinner. | Must QRT for dinner. | Must QRT for hot dinner. | Must QRT for cold dinner. | Must QRT for lunch. | Must QRT for lunch. | Must QRT for hot lunch. | Must QRT for sleep. | Must QRT for some sleep. | Must QRT for bathroom break. | Must QRT, lightning threatens. | Must QRT, lightning storm has started. | Must QRT, tornado sirens sounding. | Must QRT, tsunami sirens sounding. | Must QRT to hear news about approaching hurricane. | Must QRT to check email. | Must QRT, weather radio warbling. | [5] Must QRT for sked with . | Must QRT occupation forces knocking at door. | QRM | QRM? | QRS | QRS? | QSY? | QSK? | QRX? | QTH? | QTR? | What is your QTH? my uncle | local net | ARES net | my mom Alabama | Alaska | Arizona | Arkansas | California | Colorado | Connecticut | Delaware | Florida | Gaum | Georgia | Hawaii | Idaho | Illinois | Indiana | Iowa | Kansas | Kentucky | Louisiana | Maine | Maryland | Massachusetts | Michigan | Midway | Minnesota | Mississippi | Missouri | Montana | Nebraska | Nevada | New Hampshire | New Jersey | New Mexico | New York | North Carolina | North Dakota | Ohio | Oklahoma | Oregon | Pennsylvania | Puerto Rico | Rhode Island | Saipan | American Samoa | South Carolina | South Dakota | Tennessee | Texas | Utah | Vermont | Virginia | Virgin Islands | Wake Island | Washington | West Virginia | Wisconsin | Wyoming I sometimes work packet on vhf. | I usually work packet on vhf. | [2] We are on vacation and I am mobile. | Your signal is chirpy. | [10] | Is it green there or brown? | Where do you live? | Where do you live? | Where do you live now? | How long have you been a radio amateur? | How long have you been a radio amateur? | What are your hobbies? | What is your hobby? | I am mobile and am going to the office. | I am mobile and am going to work. | I am mobile and driving to work. | I am mobile, driving home from work. | I am mobile, stuck in traffic. | I am mobile, driving cross country. | I am mobile, riding a Peruvian Paso Fino horse. | How is my signal? | Hows my signal? | How copy so far? | How copy so far? | How copy? | Copy? | Copy? | Cpy? | Tnx for the report. | Thanks for the call. | Tnx for the call. | Tnx for ur call. | Do you understand English? | Do u understand English? | Habla espanol? | Sprechen Sie Deutsch? | What is your job? | Whats your job? | How is the weather? | Hows the weather? | How is the weather? | Are you using a linear amplifier? | ru using linear amplifier? | I am using a linear amplifier. | Are you using a linear amplifier? | You are using a nonlinear amplifier? | Propagation is good. | Propagation is good. | Propagation is very good. | Propagation is poor. | Propagation is very poor. | Are you on daylight savings time? | Did you hear the news? | Did you hear news? | Is the bad news true? | Sorry, stack of books just fell over. | There is an eclipse of the moon right now. | Do you recycle often? | Do you prefer metric units? | We just felt a small quake here. | Whoa, we are having an earthquake here. A real roller. | You are my first contact today. | You are my second contact today. | You are my last contact today. | Are you married? | Do you have a horse? | Do you have a dog? | Do you have a cat? | Do you have a ferret? | Do you have a gecko? | A clumsy gecko just fell on my hand. | How old is your rig? | How did you learn morse code? | Do you know morse code? | When did you start to learn morse code? | Are you good at calculus? I have a question for you. | Are you good at group theory? I have a question for you. | Can you pick master locks? Those are supposed to be easy. | Can you pick kryptonite locks? | QLF? | There is a rainbow outside the window. | I just saw a bolide. | Do you know the word copacetic? | Do you know the word garralous? | What time zone are you in? | Would you have given Morse a Nobel prize? | Our neighbors have a horse named morse. | What is your elevation? | What is the air pressure there? | I sometimes monitor ULF for earthquake precursors. | Can you think of something else interesting to say? [25] 5<5To9><5To9> | 478 | 354 | 248 | 126 <5To9> 5 | 6 | 7 | 8 | 9 Thanks for your call. | Tnx for ur call. | Tnx for the call OM. | Thanks for the call. | Thanks for the call. Name is . | This is . | Name here is . | My name is . I am a . | I work as a . | I was a , now retired.| I was a but am now retired. I am <1To8> years old. | My age is <1To8>. | Age is <1To8>. <1To8> 1 | 2 | 3 | 4 | 5 | 8 | 7 | 8 I have a license. | I am a ham. | I have had a for 1 year. | I have been a for <5To9> years. | I have a license for 1 years. Temperature here is | Temperature is | temperature here is | temperature is | = . | = . | It is degrees here and . | here and degrees. is | here is | It is here Weather | WX <1To8> , My location is . | My QTH is . | QTH is . My rig runs watts into a up feet. | Rig is a running watts, and antenna is a . | My rig is a . It runs watts into a . My antenna is up feet. | Rig is a running watts into a up . =. is | [2] Your | [2] UR | RST | Signal de [2] 73 | 73 and tnx for QSO. | | | | | | | | | | | | | | | | + # + # + # A | E | I | M | N | T D | G | K | O | R | S | U | W B | C | F | H | J | L | P | Q | V | X | Y | Z . | , | / | ? | = | + | # + Exceptions(Ljava/lang/String;)V -/&org/minow/MorsePractice/RandomSentence1 20java/text/ParseException4java/io/IOException6getQSO(I)Ljava/lang/String;:expand&(Ljava/lang/String;)Ljava/lang/String; <= 2>equals(Ljava/lang/Object;)Z @A B D Fjava/lang/ExceptionHjava/lang/StringBufferJ L K0append,(Ljava/lang/String;)Ljava/lang/StringBuffer; OP KQtoString()Ljava/lang/String; ST KUaddRule W/ 2X Z \ ^outLjava/io/PrintStream; `ajava/lang/Systemc dbCan't compile QSO: fjava/lang/Throwableh iUprintln k/java/io/PrintStreamm nlp r t v ConstantValue SourceFileRandomQSO.java!2 #$x%$x&$x '$x ($x)$x*$x,"YMYSYSY SY SYSYSYSYSYSYSYSYS!-"*,3.5789" *;?M!2N6,2C !2N؈*-?::*E?:Cؖ*G?:*KYMN,RVY*KY[NRVY*KY]NRVY*KY_NRVY:eKYgNjRVoq: *s?:*u?: *w?:ZIyzPK O) ,,1org/minow/MorsePractice/RandomSentence$Rule.class߼-[()Vthis$0(Lorg/minow/MorsePractice/RandomSentence; SyntheticnameLjava/lang/String; weightSumItermsLjava/util/Vector;=(Lorg/minow/MorsePractice/RandomSentence;Ljava/lang/String;)V java/lang/Object  +org/minow/MorsePractice/RandomSentence$Rule     java/util/Vector  CodetoString()Ljava/lang/String;java/lang/StringBuffer"valueOf&(Ljava/lang/Object;)Ljava/lang/String; $%java/lang/String' (&(Ljava/lang/String;)V * #+ [-append,(Ljava/lang/String;)Ljava/lang/StringBuffer; /0 #1(I)Ljava/lang/StringBuffer; /3 #4] :==6 ! #8{:size()I <= >} @elements()Ljava/util/Enumeration; BC D "F nextElement()Ljava/lang/Object; HIjava/util/EnumerationK LJ (8"OhasMoreElements()Z QR LS SourceFile InnerClassesRandomSentence.java&org/minow/MorsePractice/RandomSentenceXRule    0$**+***Y*, !#Y#Y*),.2*5729,L+#Y;,*?5A292W*EM(+#YG,,M(N2P292W,T+9UWV YZPK O)[00,org/minow/MorsePractice/RandomSentence.class߼-9()V Exceptions java/util/Hashtable Codejava/io/IOException java/text/ParseException (Ljava/lang/String;)VaddRule &org/minow/MorsePractice/RandomSentence expand&(Ljava/lang/String;)Ljava/lang/String;java/lang/StringBufferlength()I java/lang/String (I)V  charAt(I)C !" #append(C)Ljava/lang/StringBuffer; %& 'toString()Ljava/lang/String; )* +get&(Ljava/lang/Object;)Ljava/lang/Object; -. /+org/minow/MorsePractice/RandomSentence$Rule1 getRewriteA(Lorg/minow/MorsePractice/RandomSentence$Rule;)Ljava/lang/String; 34 5  7,(Ljava/lang/String;)Ljava/lang/StringBuffer; %9 :,(Ljava/lang/Object;)Ljava/lang/StringBuffer; %< = setLength ? @nameLjava/lang/String; BC 2D java/util/NoSuchElementExceptionFjava/lang/NumberFormatExceptionHrandom()D JKjava/lang/MathM NL weightSumI PQ 2Rfloor(D)D TU NVtermsLjava/util/Vector; XY 2Zelements()Ljava/util/Enumeration; \]java/util/Vector_ `^java/util/StringTokenizerb nextElement()Ljava/lang/Object; dejava/util/Enumerationg hf j((Ljava/lang/String;Ljava/lang/String;Z)V l cm nextToken o* cpparseInt(Ljava/lang/String;)I rsjava/lang/Integeru vtx o czhasMoreElements()Z |} h~errLjava/io/PrintStream; java/lang/System Corrupted rule rewrite   println java/io/PrintStream Rewrite parse error: java/lang/Throwable +Weight format error: ([Ljava/lang/String;)V addThisRule  (Ljava/io/LineNumberReader;)VreadLine *java/io/LineNumberReader %RandomSentence reader failed on line  getLineNumber  (I)Ljava/lang/StringBuffer; % :   '(Ljava/lang/String;Ljava/lang/String;)V  c hasMoreTokens } cjava/io/PushbackReaderjava/io/StringReader (Ljava/io/Reader;)V  (Ljava/io/PushbackReader;)V EOLCskipWhitespace(Ljava/io/PushbackReader;)C readName,(Ljava/io/PushbackReader;)Ljava/lang/String; Malformed rule name syntaxErrorF(Ljava/lang/String;Ljava/io/PushbackReader;)Ljava/text/ParseException; #Expecting rule body after rule name=(Lorg/minow/MorsePractice/RandomSentence;Ljava/lang/String;)V  2 readRuleBodyH(Lorg/minow/MorsePractice/RandomSentence$Rule;Ljava/io/PushbackReader;)V put8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;  writeRulesisEmpty } out No rules have been compiledGrammar table has size   elements ^(Ljava/lang/Object;)V read   readWeight(Ljava/io/PushbackReader;)I valueOf(I)Ljava/lang/String; trim *  addElement  `isDigit(C)Z java/lang/Character unread    Malformed [weight] in term  isWhitespace   Syntax error: reset java/io/FilterReader  , rule is "" ()(Ljava/lang/String;I)V ! "checkAllSymbolscheckTermSymbols'(Ljava/lang/String;Ljava/lang/String;)I %& '#No errors: all symbols were defined)One symbol was undefined+ symbols were undefined-Rule / has undefined symbol "1Rule-Lorg/minow/MorsePractice/RandomSentence$Rule; ConstantValue SourceFile InnerClassesRandomSentence.java!5 *   **+   Y+h MY N6+66v+$6F-(W>X*-,02:,**68;W ,->W6-A#<-A-(W6 ,(W,-,;W,,34 +EMO+SkW>+[a:=cYikn:qw6dY>qWy{MsfNY+>,Y-;,ڤ3NY+>,Y-;,,cfGcI "= *+2+ؗ  S?M*,+YM؛+M YY+ۦ;,;,   *cY+M *,q,ؙ  "YY+M*,  M>*+6 [> *+M,> *+"*+6> *+2Y*,:*+*,W  ZN*ڤ>Y*;,*L+i+ؔ sg*+WY MN6+Y6<N-+,(W,(W>+Y6ؾ-> ,,NN-  ڤ*,>+YS`S*,WY :Yk;,;W*,W6 (W,Y6 |؏,:+[| ,6*,y  xl*+=>[_+W*+W>6 h>0d`>+Y6 ؋ + *+=] +W * +  =1= +Y=ؒ+   YN-Y+;,;W,Y :6 (W,Y6ؕ-Y-,;;,;W%:-Y; ;,;W Y-,#gj $ *L=8+i2N-[a:*-Ei(`=؊+؁/#*ڤ),ڤY.;,%&  Y N66,66,$6[-(W>c*-,02:  0Y0+;2;-,;;,ڳ6-A<-A-(W6~687 23PK O)&g1y y )org/minow/MorsePractice/ResultPanel.class߼-()V sentChars[Cmatched[Z cellWidthI cellHeightoffscreenImageLjava/awt/Image;fmLjava/awt/FontMetrics;K(Ljava/awt/ScrollPane;Ljava/awt/Font;Ljava/lang/String;Ljava/lang/String;)V(Ljava/awt/ScrollPane;)V $org/minow/MorsePractice/ScrollCanvas  #org/minow/MorsePractice/ResultPanel      toCharArray()[C  java/lang/String" #!  %length()I '( #)setFont(Ljava/awt/Font;)V +,java/awt/Component. /-getFontMetrics'(Ljava/awt/Font;)Ljava/awt/FontMetrics; 12 /3  5min(II)I 78java/lang/Math: ;9 toUpperCase(C)C =>java/lang/Character@ A? charWidth(C)I CDjava/awt/FontMetricsF GEmax I8 ;J getHeight L( GMsetHScrollUnitIncrement(I)V OP QsetVScrollUnitIncrement SP TCodegetCellWidthUnusedgetCellHeightUnusedpaint(Ljava/awt/Graphics;)Vupdate [Z \getSize()Ljava/awt/Dimension; ^_ /`getWidth!(Ljava/awt/image/ImageObserver;)I bcjava/awt/Imagee fdwidth hjava/awt/Dimensionj ki Lc fmheight o kp createImage(II)Ljava/awt/Image; rs /t getGraphics()Ljava/awt/Graphics; vw fx drawContent zZ {dispose }java/awt/Graphics ~ drawImage3(Ljava/awt/Image;IILjava/awt/image/ImageObserver;)Z  getAscent ( G getNextLine(I)I redLjava/awt/Color; java/awt/Color setColor(Ljava/awt/Color;)V fillRect(IIII)V white  drawChars ([CIIII)V  getForeground()Ljava/awt/Color; /getPreferredSize(II)V  k preferredSize _ getMinimumSize minimumSize _ getMaximumSize isWhitespace(C)Z A SourceFileResultPanel.java    V *+*****-$&$:-*6*6*,0**,4*6<66 +*& 4B6  4B6   *6 T  *6 ****& 4HK  ؈**N**R**UW(V*X(V*YZV*+][ZVh\+Z*aM*!*g,l*n,q$**,l,qu*yN*-|-+*WzZV *=>6*h6*6m6[*&^*h6*63!++**++*&`+*شذ_VZN<=>*6dK<>*&*h6*h6kY:_V*¡_V*¡_V*_V*¡Vh\=>6*al6A*&46*`6=>`ؤ *&عPK O)v`T/org/minow/MorsePractice/RotateImageFilter.class߼-9()VwidthIheight intPixels[I bytePixels[B colorModelLjava/awt/image/ColorModel; java/awt/image/ImageFilter  Code setDimensions(II)V )org/minow/MorsePractice/RotateImageFilter   consumerLjava/awt/image/ImageConsumer;   java/awt/image/ImageConsumer  setPixels&(IIIILjava/awt/image/ColorModel;[BII)V  $ &dst(II)I () *&(IIIILjava/awt/image/ColorModel;[III)V  - imageComplete(I)V "# 1 ", 3 /0 5 SourceFileRotateImageFilter.java!   *(*****!"#a U*%*'***h%6 .6 *%* ` `+3T  ؇  ؄",a U*.*'***h .6 .6 *.* ` `+.O  ؇  ؄()*dd*h`/0 v~*%*.[*%&****'*%*2 1*.&****'*.*4 <*678PK O)QuuRotateTextFilter.class߼-9()VwidthIheight intPixels[I bytePixels[B colorModelLjava/awt/image/ColorModel; java/awt/image/ImageFilter  Code setDimensions(II)V RotateTextFilter   consumerLjava/awt/image/ImageConsumer;   java/awt/image/ImageConsumer  setPixels&(IIIILjava/awt/image/ColorModel;[BII)V  $ &dst(II)I () *&(IIIILjava/awt/image/ColorModel;[III)V  - imageComplete(I)V "# 1 ", 3 /0 5 SourceFileRotateTextFilter.java    *(*****!"#a U*%*'***h%6 .6 *%* ` `+3T  ؇  ؄",a U*.*'***h .6 .6 *.* ` `+.O  ؇  ؄()*dd*h`/0 v~*%*.[*%&****'*%*2 1*.&****'*.*4 <*678PK O)-P=Borg/minow/MorsePractice/ScrollCanvas$MouseMotionEventHandler.class߼-[()Vthis$0&Lorg/minow/MorsePractice/ScrollCanvas; Synthetic mouseDragged(Ljava/awt/event/MouseEvent;)V <min(II)I @Ajava/lang/MathC DBmax FA DGheight I& >JsetScrollPosition(Ljava/awt/Point;)V LM NCode)(Lorg/minow/MorsePractice/ScrollCanvas;)V Q!java/awt/event/MouseMotionAdapterT US SourceFile InnerClassesScrollCanvas.javaMouseMotionEventHandler UP* M* N* :,* $*+0d* $3+6d:,?-?d,*EH*,K-Kd,3EH3* ,OQRP *V*+ WYX  ZPK O)9X<org/minow/MorsePractice/ScrollCanvas$MouseEventHandler.class߼-1()Vthis$0&Lorg/minow/MorsePractice/ScrollCanvas; Synthetic mousePressed(Ljava/awt/event/MouseEvent;)V 6org/minow/MorsePractice/ScrollCanvas$MouseEventHandler getPoint()Ljava/awt/Point; java/awt/event/MouseEvent  mouseDownPtLjava/awt/Point; $org/minow/MorsePractice/ScrollCanvas Code mouseEnteredgetPredefinedCursor(I)Ljava/awt/Cursor; java/awt/Cursor  setCursor(Ljava/awt/Cursor;)V !java/awt/Component# $" mouseExited)(Lorg/minow/MorsePractice/ScrollCanvas;)V 'java/awt/event/MouseAdapter* +) SourceFile InnerClassesScrollCanvas.javaMouseEventHandler + * + *  %& * %'( *,*+ -/.  0PK O)ތw*org/minow/MorsePractice/ScrollCanvas.class߼-L()V scrollPaneLjava/awt/ScrollPane; isScrollPaneZ(Ljava/awt/ScrollPane;)V java/awt/Canvas java/awt/Point   mouseDownPtLjava/awt/Point; $org/minow/MorsePractice/ScrollCanvas   getScrollbarDisplayPolicy()I java/awt/ScrollPane   6org/minow/MorsePractice/ScrollCanvas$MouseEventHandler )(Lorg/minow/MorsePractice/ScrollCanvas;)V " !#addMouseListener!(Ljava/awt/event/MouseListener;)V %&java/awt/Component( )'Lorg/minow/MorsePractice/ScrollCanvas$MouseMotionEventHandler;access$0=(Lorg/minow/MorsePractice/ScrollCanvas;)Ljava/awt/ScrollPane; Synthetic SourceFile InnerClassesScrollCanvas.java  2UI* *Y*+*+ +**!Y*$**,Y*-1342#**8M,=>42#**AM,=FG2*HIKJ!B,DPK O){|G"org/minow/MorsePractice/Sort.class߼-0()Vsort<(Ljava/util/Hashtable;)[Lorg/minow/MorsePractice/Comparable;size()I java/util/Hashtable "org/minow/MorsePractice/Comparable elements()Ljava/util/Enumeration;   nextElement()Ljava/lang/Object; java/util/Enumeration hasMoreElements()Z  L([Lorg/minow/MorsePractice/Comparable;)[Lorg/minow/MorsePractice/Comparable; org/minow/MorsePractice/Sort Code shiftHeap*([Lorg/minow/MorsePractice/Comparable;II)V !" # compareTo(Ljava/lang/Object;)I %& ' )java/lang/Object+ ,* SourceFile Sort.java!,  =1* L*M>+, S,ؑ+W+  H<*<l= *$ؚ>*2:**2S*S*$،* !" pd>h6V*d2*2(*d2*d2(.*d2:*d*d2S*dS>h6ػ) *-./PK O)>`xx#org/minow/MorsePractice/Trial.class߼-O()VtrialHashtableLjava/util/Hashtable; trialTextLjava/lang/String; java/lang/Object java/util/Hashtable  org/minow/MorsePractice/Trial   Code setTrialText(Ljava/lang/String;)V getTrialText()Ljava/lang/String;addPair(CC)V!org/minow/MorsePractice/TrialPair   &(Lorg/minow/MorsePractice/TrialPair;)V " #getKey % &get&(Ljava/lang/Object;)Ljava/lang/Object; () *countI ,- .put8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; 01 2toString getTrialPairs&()[Lorg/minow/MorsePractice/TrialPair; 56 7java/lang/StringBuffer9  :;append(C)Ljava/lang/StringBuffer; => :? 4 A,(Ljava/lang/String;)Ljava/lang/StringBuffer; =C :D :Asort<(Ljava/util/Hashtable;)[Lorg/minow/MorsePractice/Comparable; GHorg/minow/MorsePractice/SortJ KI SourceFile Trial.java! "* * Y**+**Y!$"<0+'M*,+N--Y/+/`/ *,+3W4I=*8L:Y*,+2BEW,,@W+؏,F563'*LL+M>,+2S+ؖ,MNPK O) 'org/minow/MorsePractice/TrialChar.class߼-()VtheCharC(C)V java/lang/Object  !org/minow/MorsePractice/TrialChar Code compareTo(Ljava/lang/Object;)ItoString()Ljava/lang/String;java/lang/Character     SourceFile"org/minow/MorsePractice/ComparableTrialChar.java!  * * *+ dY*PK O)c33'org/minow/MorsePractice/TrialData.class߼-()V trialPair$[Lorg/minow/MorsePractice/TrialPair;matrix[[IsentSum[IgotSum sentSymbols$[Lorg/minow/MorsePractice/TrialChar; gotSymbols sentLengthI gotLength"(Lorg/minow/MorsePractice/Trial;)V java/lang/Object  !org/minow/MorsePractice/TrialData         "  $java/lang/Exception& getTrialPairs&()[Lorg/minow/MorsePractice/TrialPair; ()org/minow/MorsePractice/Trial+ ,*  .java/util/Hashtable0(I)V 2 13sentCharC 56!org/minow/MorsePractice/TrialPair8 97 storeChar(Ljava/util/Hashtable;C)V ;< =gotChar ?6 9@ sortSymbols;(Ljava/util/Hashtable;)[Lorg/minow/MorsePractice/TrialChar; BC Dfind((C[Lorg/minow/MorsePractice/TrialChar;)I GH Icount K 9LoutLjava/io/PrintStream; NOjava/lang/SystemQ RPtoString()Ljava/lang/String; TUjava/lang/ThrowableW XVprintln(Ljava/lang/String;)V Z[java/io/PrintStream] ^\ dumpTrialData ` ajava/lang/RuntimeExceptionc [ deCode!org/minow/MorsePractice/TrialCharh(C)V j ik iVget&(Ljava/lang/Object;)Ljava/lang/Object; no 1pput8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; rs 1tsort<(Ljava/util/Hashtable;)[Lorg/minow/MorsePractice/Comparable; vworg/minow/MorsePractice/Sorty zxtheChar |6 i}java/lang/StringBuffer value = ' eappend(C)Ljava/lang/StringBuffer; ',(Ljava/lang/String;)Ljava/lang/StringBuffer; V size = (I)Ljava/lang/StringBuffer;  low =  mid =  high = valueOf(I)Ljava/lang/String; java/lang/String : ' dumpTrialPair  Sent dumpSymbols9(Ljava/lang/String;[Lorg/minow/MorsePractice/TrialChar;)V  Got dumpMatrix   dumpVector(Ljava/lang/String;[I)V null trialPairTrialPair length =  9VNull  symbol vector&(Ljava/lang/Object;)Ljava/lang/String;  symbol vector length =  Null matrixMatrix length =  Tjava/lang/Integer  vector[]: print [ ^  Z ^ SourceFileTrialData.java!     g ******!*#*%*+-/*/=1Yl`4N1Yl`4:6$*/2:*-:>*A>؆**-E**E!**#**!%**%*#F**# **% 6M*/2:6*/2A6**J6 **!J6 * 2 \.*/2M`O6@*2:6 % .6 *\. `O* \. `O  *#د*%ظMS,Y_*bdY,Yf'hk';<g-!iYlN-m:+q +-uWBCg4(+{M,iN6-,2iS,ؔ-GHg.>,d664dl`6,2~ d6,2~`>,,,d6:SYŦԦ٦_SY,٦_SY٦_SY٦_SY٦_6/SYʦ,2~ŦԦ٦_,dYYf YY'`g=1*****!*****ӱgth*/S_XSY*/٦_<0SYʦ*/2ŦԦ٦_*/gv,!SY+ȦԦ٦_VSY+˦,٦_>-SYʦ,2mŦԦ٦_,gXL*S_<SY*٦_<**2ӳ*؎g~r,!SY+Ԧ٦_RSY+,Ԧ٦>SY,.٦,؉SͱPK O)U*KK)org/minow/MorsePractice/TrialDialog.class߼-f()V java/awt/FontSerif(Ljava/lang/String;II)V    labelFontLjava/awt/Font; #org/minow/MorsePractice/TrialDialog   SansSeriftextFont  CodeokButtonLjava/awt/Button; trialData#Lorg/minow/MorsePractice/TrialData;~(Ljava/awt/Component;Ljava/lang/String;Ljava/lang/String;Lorg/minow/MorsePractice/Trial;Ljava/lang/String;Ljava/lang/String;)VgetFrame&(Ljava/awt/Component;)Ljava/awt/Frame;  &(Ljava/awt/Frame;Ljava/lang/String;Z)V  java/awt/Dialog" #!java/awt/Button% OK '(Ljava/lang/String;)V ) &*  ,  . setResizable(Z)V 01 #2!org/minow/MorsePractice/TrialData4"(Lorg/minow/MorsePractice/Trial;)V 6 57Dialog9setFont(Ljava/awt/Font;)V ;<java/awt/Component> ?=addActionListener"(Ljava/awt/event/ActionListener;)V AB &CaddFocusListener!(Ljava/awt/event/FocusListener;)V EF ?GcontrolLjava/awt/SystemColor; IJjava/awt/SystemColorL MK setBackground(Ljava/awt/Color;)V OP ?Q(org/minow/MorsePractice/TrialScrollPanelS5(Lorg/minow/MorsePractice/TrialData;Ljava/awt/Font;)V U TVjava/awt/LabelX(Ljava/lang/String;I)V Z Y[Sent]%org/minow/MorsePractice/VerticalLabel_Receiveda `*java/awt/Paneld  efjava/awt/BorderLayouth if setLayout(Ljava/awt/LayoutManager;)V kljava/awt/Containern omCenterqadd)(Ljava/awt/Component;Ljava/lang/Object;)V st ouNorthwWestySouth{java/awt/ScrollPane}(I)V  ~#org/minow/MorsePractice/ResultPanelK(Ljava/awt/ScrollPane;Ljava/awt/Font;Ljava/lang/String;Ljava/lang/String;)V  *(Ljava/awt/Component;)Ljava/awt/Component; s ojava/awt/GridBagLayout fjava/awt/GridBagConstraints fgridyI gridx  gridwidth  gridheight weightxD weighty fill anchor java/awt/Insets(IIII)V  insetsLjava/awt/Insets; setConstraints4(Ljava/awt/Component;Ljava/awt/GridBagConstraints;)V getPreferredSize()Ljava/awt/Dimension; `width java/awt/Dimension pack java/awt/Window validate  o o getInsets()Ljava/awt/Insets; left right height top bottom getDefaultToolkit()Ljava/awt/Toolkit; java/awt/Toolkit  getScreenSize min(II)I java/lang/Math setSize(II)V ? setVisible 1 ?actionPerformed(Ljava/awt/event/ActionEvent;)V getSource()Ljava/lang/Object; java/util/EventObject dispose   focusGained(Ljava/awt/event/FocusEvent;)V requestFocus  ? focusLost transferFocus  ? oclone    getParent()Ljava/awt/Container;   ? java/awt/FrameshowAllComponents((Ljava/awt/Component;Ljava/util/Stack;)VoutLjava/io/PrintStream; java/lang/System  print )java/io/PrintStream size()I  !java/util/Vector# $" getBounds()Ljava/awt/Rectangle; &' ?((Ljava/lang/Object;)V * +push&(Ljava/lang/Object;)Ljava/lang/Object; -.java/util/Stack0 1/getComponentCount 3! o4java/lang/StringBuffer6 , inset: 8 7* oappend,(Ljava/lang/Object;)Ljava/lang/StringBuffer; <= 7>, has @,(Ljava/lang/String;)Ljava/lang/StringBuffer; <B 7C(I)Ljava/lang/StringBuffer; <E 7FtoString()Ljava/lang/String; HI 7Jprintln L) M getComponent(I)Ljava/awt/Component; OP oQcontains(Ljava/lang/Object;)Z ST $U*** Recursing ***W  Ypop [ 1\ L ^ SourceFilejava/awt/event/ActionListenerajava/awt/event/FocusListenercTrialDialog.java #bd  +Y Y rf*+,$*&Y(+-*/*3*5Y8/*-Y: @*-*D**H*@*NRTY*/W:YY-\:YY^\: `Ybc: eYg:  iYjp rv  xv  zv |v~Y: Y :   WY:Y:*p Y * W 6Y` * WY*-**-W***:*:Y``Y``:hlhld*ͦ*!+*- ***-*-A5* L+Y`+Y`+Y`+Y`+ $*K* *ؗ*>,%ؕ+),+oy,+2W+o:567Y9:;?ADGKN6+R:,VXN *,Z,]W _`ePK O)6ޜ (org/minow/MorsePractice/TrialLabel.class߼-()Vcontent[Ljava/lang/String; isSentSymbolsZ cellWidthI cellHeightxInsetxOffsetyOffsetoffscreenImageLjava/awt/Image;8(Lorg/minow/MorsePractice/TrialData;Ljava/awt/Font;IIZ)V java/awt/Canvas  "org/minow/MorsePractice/TrialLabel       setFont(Ljava/awt/Font;)V  java/awt/Component" #!  %  '  ) sentSymbols$[Lorg/minow/MorsePractice/TrialChar; +,!org/minow/MorsePractice/TrialData. /- gotSymbols 1, /2java/lang/String4  6toString()Ljava/lang/String; 89!org/minow/MorsePractice/TrialChar; <:textInactiveTextLjava/awt/SystemColor; >?java/awt/SystemColorA B@ setBackground(Ljava/awt/Color;)V DE #FCodegetPreferredSize()Ljava/awt/Dimension;java/awt/DimensionK Lwidth N LOheight Q LR preferredSize IJ UgetMinimumSize minimumSize WJ YgetMaximumSizepaint(Ljava/awt/Graphics;)Vupdate ^] _getSize aJ #bgetWidth!(Ljava/awt/image/ImageObserver;)I dejava/awt/Imageg hf getHeight je hk createImage(II)Ljava/awt/Image; mn #o getGraphics()Ljava/awt/Graphics; qr hs drawContent u] v drawImage3(Ljava/awt/Image;IILjava/awt/image/ImageObserver;)Z xyjava/awt/Graphics{ |zgetFont()Ljava/awt/Font; ~ #getFontMetrics'(Ljava/awt/Font;)Ljava/awt/FontMetrics; # getAscent()I java/awt/FontMetrics  clearRect(IIII)V | stringWidth(Ljava/lang/String;)I  drawString(Ljava/lang/String;II)V |adjustmentValueChanged#(Ljava/awt/event/AdjustmentEvent;)V getAdjustable()Ljava/awt/Adjustable; java/awt/event/AdjustmentEvent getValue java/awt/Adjustable getOrientation outLjava/io/PrintStream; java/lang/System java/lang/StringBufferBad Adjustable orientation: (Ljava/lang/String;)V  append(I)Ljava/lang/StringBuffer; :println java/io/PrintStream  Adjustable = java/lang/Object :,(Ljava/lang/String;)Ljava/lang/StringBuffer; repaint  # SourceFile!java/awt/event/AdjustmentListenerTrialLabel.java       H******,$*&*(*** +0+3:*,$*576*72=S؎*CGIJHNBLYML**+*&*7`hP+*(S+*&P+*(*7hS+TJH*VWJH*VXJH*Z[JH*V\]H*+`^]H+*cM,YP*dP**,YP*&dP,YS*(dS*!*i,P*l,S**,P,Sp*tN*-w+**}Wu]H **M*>*,`6*c:+PS6D*72:*&d,d6+`** *&`> *(`6*7Hs+M,>,(*t@*t7Y,զY,̦զ*PK O)s )org/minow/MorsePractice/TrialMatrix.class߼-()Vcontent[[Ljava/lang/String;matched[[Z contentRowsI contentCols cellWidth cellHeightoffscreenImageLjava/awt/Image;fmLjava/awt/FontMetrics;J(Ljava/awt/ScrollPane;Lorg/minow/MorsePractice/TrialData;Ljava/awt/Font;)V(Ljava/awt/ScrollPane;)V $org/minow/MorsePractice/ScrollCanvas  #org/minow/MorsePractice/TrialMatrix      setFont(Ljava/awt/Font;)V !"java/awt/Component$ %#getFontMetrics'(Ljava/awt/Font;)Ljava/awt/FontMetrics; '( %) gotSymbols$[Lorg/minow/MorsePractice/TrialChar; +,!org/minow/MorsePractice/TrialData. /-  1 sentSymbols 3, /4  6  9  <populateContentMatrix&(Lorg/minow/MorsePractice/TrialData;)V >? @ getHeight()I BCjava/awt/FontMetricsE FDsetHScrollUnitIncrement(I)V HI JsetVScrollUnitIncrement LI MCode getCellWidth getCellHeighttheCharC RS!org/minow/MorsePractice/TrialCharU VTmatrix[[I XY /Zstore(IIIZ)V \] ^gotSum[I `a /bsentSum da /egtoString(I)Ljava/lang/String; ijjava/lang/Integerl mk stringWidth(Ljava/lang/String;)I op Fqmax(II)I stjava/lang/Mathv wupaint(Ljava/awt/Graphics;)Vupdate {z |getSize()Ljava/awt/Dimension; ~ %getWidth!(Ljava/awt/image/ImageObserver;)I java/awt/Image width java/awt/Dimension B height   createImage(II)Ljava/awt/Image; % getGraphics()Ljava/awt/Graphics;  drawContent z dispose java/awt/Graphics  drawImage3(Ljava/awt/Image;IILjava/awt/image/ImageObserver;)Z  getAscent C Flength Cjava/lang/String  textHighlightLjava/awt/SystemColor; java/awt/SystemColor setColor(Ljava/awt/Color;)V fillRect(IIII)V textHighlightText  drawString(Ljava/lang/String;II)V  getForeground()Ljava/awt/Color; %drawLine getPreferredSize(II)V   preferredSize  getMinimumSizemin t w minimumSize  getMaximumSize SourceFileTrialMatrix.java      O*+**** *-&**-* *,0`2*,5`7**2*78:**2*7;=*,A*Y`** G`**K**NPCO*QCO*>?O*=T+02W6>++52W6*+[2._+5*+c._+0ة6>+f.6`6*_+5ا*_\]OD8hn:*:2S*=2T*** rxyzO*+}{zOh\+Z*M*!*,*,$**,,Φ*N*--+*WzO *:=*:2>* 66*:2:*=2:*h66 u *h6  2: *d*  rd6  30 2%+Ҧ+ *d*d++   ``+*  ѳa6*h6+*h؉6*h6+*h؉O0$*:<*:2=Y*h*hN-O*ܡO6**7*h<*2*h=YN-O*סO*ܡPK O)hm3'org/minow/MorsePractice/TrialPair.class߼-c()VsentCharCgotCharcountI(CC)V java/lang/Object !org/minow/MorsePractice/TrialPair  toUpperCase(C)C java/lang/Character     CodegetKey()Ljava/lang/String;java/lang/StringBuffer append(C)Ljava/lang/StringBuffer; "# $toString & ' compareTo(Ljava/lang/Object;)Iwrite(Ljava/io/FileWriter;)Vjava/io/IOException- '(Ljava/lang/String;)V +0java/io/Writer2 31(I)V +5java/io/OutputStreamWriter7 86outLjava/io/PrintStream; :;java/lang/System= ><Exception writing file: @ 0 Bjava/lang/ThrowableD E',(Ljava/lang/String;)Ljava/lang/StringBuffer; "G Hprintln J0java/io/PrintStreamL MKvalueOf(C)Ljava/lang/String; OPjava/lang/StringR SQ&(Ljava/lang/Object;)Ljava/lang/String; OU SV X(I)Ljava/lang/String; &Zjava/lang/Integer\ ][ SourceFile"org/minow/MorsePractice/Comparable`TrialPair.java! a &* ***+ Y!L+*%W+*%W+()*9-+=+>*d6*d6+,@,+*/4+,9M? YAC,FI(N.&:. Y*TWC*TIYI*^I(_bPK O).org/minow/MorsePractice/TrialScrollPanel.class߼-z()V5(Lorg/minow/MorsePractice/TrialData;Ljava/awt/Font;)V java/awt/Panel java/awt/ScrollPane (I)V  #org/minow/MorsePractice/TrialMatrixJ(Ljava/awt/ScrollPane;Lorg/minow/MorsePractice/TrialData;Ljava/awt/Font;)V   getCellWidth()I   getCellHeight  add*(Ljava/awt/Component;)Ljava/awt/Component; java/awt/Container getHAdjustable()Ljava/awt/Adjustable; ! "getVAdjustable $! %"org/minow/MorsePractice/TrialLabel'8(Lorg/minow/MorsePractice/TrialData;Ljava/awt/Font;IIZ)V ) (*addAdjustmentListener&(Ljava/awt/event/AdjustmentListener;)V ,-java/awt/Adjustable/ 0.getPreferredSize()Ljava/awt/Dimension; 23 4widthI 67java/awt/Dimension9 :8height <7 :=setSize(II)V ?@java/awt/ComponentB CAjava/awt/GridBagLayoutE Fjava/awt/GridBagConstraintsH I setLayout(Ljava/awt/LayoutManager;)V KL Mgridy O7 IPgridx R7 IS gridwidth U7 IV gridheight X7 IYweightxD [\ I]weighty _\ I`fill b7 Icanchor e7 Ifjava/awt/Insetsh(IIII)V j ikinsetsLjava/awt/Insets; mn IosetConstraints4(Ljava/awt/Component;Ljava/awt/GridBagConstraints;)V qr FsCode SourceFile(org/minow/MorsePractice/TrialScrollPanelwTrialScrollPanel.java xuE9* Y NY-+,:66-W-#:-&:(Y+,+: (Y+,+:  1 15: - ; >DFYG: IYJ: * N Q T W Z ^ a d g iYlp   t* W Q W ^ a d   t* W T ^ d - t*-WvyPK O)| +org/minow/MorsePractice/VerticalLabel.class߼-()VCENTERILEFTRIGHTtextLjava/lang/String; alignment textImageLjava/awt/Image; textWidth textHeight(Ljava/lang/String;I)V %org/minow/MorsePractice/VerticalLabel Code(Ljava/lang/String;)V java/awt/Component    !  #  %  'getText()Ljava/lang/String;setTextrepaint , - getAlignment()I setAlignment(I)VgetPreferredSize()Ljava/awt/Dimension;getFont()Ljava/awt/Font; 56 7getFontMetrics'(Ljava/awt/Font;)Ljava/awt/FontMetrics; 9: ; getHeight =0java/awt/FontMetrics? @> stringWidth(Ljava/lang/String;)I BC @Djava/awt/DimensionF(II)V H GIgetMinimumSize 34 Lpaint(Ljava/awt/Graphics;)VgetSize P4 Qheight S GTwidth V GW createImage(II)Ljava/awt/Image; YZ [ getGraphics()Ljava/awt/Graphics; ]^java/awt/Image` a_setFont(Ljava/awt/Font;)V cdjava/awt/Graphicsf ge getBackground()Ljava/awt/Color; ij ksetColor(Ljava/awt/Color;)V mn gofillRect(IIII)V qr gs getForeground uj v getAscent x0 @y drawString(Ljava/lang/String;II)V {| g}"java/awt/image/FilteredImageSource getSource ()Ljava/awt/image/ImageProducer; a)org/minow/MorsePractice/RotateImageFilter =(Ljava/awt/image/ImageProducer;Ljava/awt/image/ImageFilter;)V   getToolkit()Ljava/awt/Toolkit; 0(Ljava/awt/image/ImageProducer;)Ljava/awt/Image; Yjava/awt/Toolkit  drawImage3(Ljava/awt/Image;IILjava/awt/image/ImageObserver;)Z gdispose  g ConstantValue SourceFileVerticalLabel.java!     **+5)** *"*$*&*(*+ *")** + *+ *./0*"12 *"*.34-!**8GYJK4*MNO  *RM*$*&,U*(,X#*,U&*,X(***&*(\$*$bN*8:-h-*lp-*&*(t-*wp*<:* E66*"&1&*&d6*&dl6-* z~Y*$Y:*: + W-PK O)org/minow/applets/PK O)[{T,@org/minow/applets/AppletFramework$AppletFrameworkAudioClip.class߼-*()Vthis$0#Lorg/minow/applets/AppletFramework; Synthetic4(Lorg/minow/applets/AppletFramework;Ljava/net/URL;)V java/lang/Object  :org/minow/applets/AppletFramework$AppletFrameworkAudioClip  outLjava/io/PrintStream; java/lang/System AudioClip not supportedprintln(Ljava/lang/String;)V java/io/PrintStream Codeplaystoploop SourceFile InnerClassesjava/applet/AudioClip$AppletFramework.java!org/minow/applets/AppletFramework'AppletFrameworkAudioClip  %* *+   ! "&# ()PK O)j :)org/minow/applets/AppletFramework$2.class߼-()V windowClosing(Ljava/awt/event/WindowEvent;)V getRuntime()Ljava/lang/Runtime; java/lang/Runtime exit(I)V Code Synthetic java/awt/event/WindowAdapter  SourceFile InnerClasses#org/minow/applets/AppletFramework$2AppletFramework.java!org/minow/applets/AppletFramework0 * PK O)L)org/minow/applets/AppletFramework$1.class߼- ()VactionPerformed(Ljava/awt/event/ActionEvent;)V getRuntime()Ljava/lang/Runtime; java/lang/Runtime exit(I)V Code Synthetic java/lang/Object  SourceFile InnerClasses#org/minow/applets/AppletFramework$1java/awt/event/ActionListenerAppletFramework.java!org/minow/applets/AppletFramework0 * PK O)``'org/minow/applets/AppletFramework.class߼-()V statusLabelLjava/awt/Label;appletLjava/applet/Applet;paramsLjava/util/Hashtable; appletContext4Lorg/minow/applets/AppletFramework$FrameworkContext; appletStub1Lorg/minow/applets/AppletFramework$FrameworkStub;>(Ljava/applet/Applet;Ljava/lang/String;II[Ljava/lang/String;)VR(Ljava/applet/Applet;Ljava/lang/String;II[Ljava/lang/String;Z[Ljava/lang/String;)V !org/minow/applets/AppletFramework Code?(Ljava/applet/Applet;Ljava/lang/String;II[Ljava/lang/String;Z)V(Ljava/lang/String;)V java/awt/Frame     java/util/Hashtable  !  # % 'java/lang/Exception)configureHashtable([Ljava/lang/String;)V +, -java/awt/Label/1 0 java/awt/Font4 SansSerif6(Ljava/lang/String;II)V 8 59setFont(Ljava/awt/Font;)V ;<java/awt/Component> ?=whiteLjava/awt/Color; ABjava/awt/ColorD EC setBackground(Ljava/awt/Color;)V GH ?Iblack KB EL setForeground NH ?O2org/minow/applets/AppletFramework$FrameworkContextQJ(Lorg/minow/applets/AppletFramework;Ljava/applet/Applet;Ljava/awt/Label;)V S RT/org/minow/applets/AppletFramework$FrameworkStubVf(Lorg/minow/applets/AppletFramework;Ljava/util/Hashtable;Ljava/applet/AppletContext;Ljava/awt/Frame;)V X WYsetStub(Ljava/applet/AppletStub;)V [\java/applet/Applet^ _]Centeraadd<(Ljava/lang/String;Ljava/awt/Component;)Ljava/awt/Component; cdjava/awt/Containerf geSouthijava/awt/MenuBark l! java/awt/MenunFilep(Ljava/lang/String;Z)V r osjava/awt/MenuItemuQuitwjava/awt/MenuShortcuty(I)V { z|,(Ljava/lang/String;Ljava/awt/MenuShortcut;)V ~ v (Ljava/awt/Menu;)Ljava/awt/Menu; c l((Ljava/awt/MenuItem;)Ljava/awt/MenuItem; c o setMenuBar(Ljava/awt/MenuBar;)V #org/minow/applets/AppletFramework$1 !addActionListener"(Ljava/awt/event/ActionListener;)V v#org/minow/applets/AppletFramework$2 !addWindowListener"(Ljava/awt/event/WindowListener;)V java/awt/Window init  _errLjava/io/PrintStream; java/lang/System Applet init failedprintln java/io/PrintStream pack  getSize()Ljava/awt/Dimension; ?heightI java/awt/Dimension setSize(II)V ?java/lang/NullPointerExceptionstart  _ setVisible(Z)V ?repaint  ?out java/lang/StringBufferApplet start failed:  append,(Ljava/lang/Object;)Ljava/lang/StringBuffer; toString()Ljava/lang/String; AppletFrame failed: printStackTrace java/lang/Throwable indexOf(I)I java/lang/String  toLowerCase put8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;  substring(II)Ljava/lang/String; (I)Ljava/lang/String; FrameworkContextAppletFrameworkAudioClip*$+2W'+2:+2`:*$W+*RW11PK O)@Y5org/minow/applets/AppletFramework$FrameworkStub.class߼-^()Vthis$0#Lorg/minow/applets/AppletFramework; SyntheticcodeBaseLjava/net/URL; documentBaseparamsLjava/util/Hashtable; appletContextLjava/applet/AppletContext; appletFrameLjava/awt/Frame;f(Lorg/minow/applets/AppletFramework;Ljava/util/Hashtable;Ljava/applet/AppletContext;Ljava/awt/Frame;)V java/lang/Object  /org/minow/applets/AppletFramework$FrameworkStub         !CodeisActive()ZgetDocumentBase()Ljava/net/URL;java/net/MalformedURLException( java/io/File*,(Ljava/lang/String;)V . +/ java/net/URL1file3getAbsolutePath()Ljava/lang/String; 56 +7toString 96java/lang/String; <:9(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V > 2? getCodeBase getParameter&(Ljava/lang/String;)Ljava/lang/String; toLowerCase D6 <Eget&(Ljava/lang/Object;)Ljava/lang/Object; GHjava/util/HashtableJ KIgetAppletContext()Ljava/applet/AppletContext; appletResize(II)VsetSize QPjava/awt/ComponentS TR SourceFile InnerClassesjava/applet/AppletStubXAppletFramework.java!org/minow/applets/AppletFramework[ FrameworkStub Y   #0$**+***,*- *"$%#&'#G3**+Y-0L*2Y4-+8=@W*'*)A'#G3**+Y-0L*2Y4-+8=@W*'*)BC#*+FL<MN#* OP# *"UVZW \]PK O) *uu8org/minow/applets/AppletFramework$FrameworkContext.class߼-j()Vthis$0#Lorg/minow/applets/AppletFramework; Synthetic appletToolkitLjava/awt/Toolkit; appletVectorLjava/util/Vector; statusLabelLjava/awt/Label;J(Lorg/minow/applets/AppletFramework;Ljava/applet/Applet;Ljava/awt/Label;)V java/lang/Object  2org/minow/applets/AppletFramework$FrameworkContext   getToolkit()Ljava/awt/Toolkit; java/awt/Component   java/util/Vector (I)V " !#  % addElement(Ljava/lang/Object;)V '( !)CodegetImage (Ljava/net/URL;)Ljava/awt/Image; ,-java/awt/Toolkit/ 0. getAudioClip'(Ljava/net/URL;)Ljava/applet/AudioClip;:org/minow/applets/AppletFramework$AppletFrameworkAudioClip44(Lorg/minow/applets/AppletFramework;Ljava/net/URL;)V 6 57 getApplet((Ljava/lang/String;)Ljava/applet/Applet; getApplets()Ljava/util/Enumeration; ;< = nextElement()Ljava/lang/Object; ?@java/util/EnumerationB CAjava/applet/AppletEgetName()Ljava/lang/String; GH Iequals(Ljava/lang/Object;)Z KLjava/lang/StringN OMhasMoreElements()Z QR CSelements U< !V showDocument(Ljava/net/URL;)V#(Ljava/net/URL;Ljava/lang/String;)V showStatus(Ljava/lang/String;)VsetText ]\java/awt/Label_ `^ SourceFile InnerClassesjava/applet/AppletContextdAppletFramework.java!org/minow/applets/AppletFrameworkgFrameworkContext e   +7+**+*-*,*!Y$&*&,*,-+ *+123+ 5Y*+89:+6**>M,DFN+-JP-,T؋;<+*&WXY+ XZ+ [\+* *+abfc hiPK O)< Main.class߼-()Vmain([Ljava/lang/String;)V  MorsePractice Code java/lang/Object  SourceFileMain Main.java!   *  *PK O)Qi0 0 )org/minow/MorsePractice/NumberField.class߼-()VlastGoodStringLjava/lang/String;minimumDmaximum isIntegerOnlyZ(I)V #org/minow/MorsePractice/NumberField  Code(ID)V  (IZ)V(IDDDZ)V  java/awt/TextField        !  #setValue(D)V %& 'addTextListener (Ljava/awt/event/TextListener;)V )*java/awt/TextComponent, -+toString()Ljava/lang/String;getValue()Dtrim 30java/lang/String5 64length()I 89 6:0<java/lang/NumberFormatException> parseString(Ljava/lang/String;)D @A BerrLjava/io/PrintStream; DEjava/lang/SystemG HFjava/lang/StringBufferJ Unexpected L(Ljava/lang/String;)V