7  java/lang/Object()Vjava/util/ArrayList   org/freertr/user/userTesterOneshowsLjava/util/List;org/freertr/tab/tabGen   procsLorg/freertr/tab/tabGen;unnamed  testNameLjava/lang/String;   testResI"c $ %window'org/freertr/util/cmds) &+ ,'(Ljava/lang/String;Ljava/lang/String;)V . /0cmdLorg/freertr/util/cmds;2init 4 5stage 7 8 lineN :.;org/freertr/user/userTester &= >?pipeLorg/freertr/pipe/pipeSide; :A B parallel DEF GHorg/freertr/pipe/pipeDiscardneedAny8(Lorg/freertr/pipe/pipeSide;)Lorg/freertr/pipe/pipeSide;Jorg/freertr/pipe/pipeProgress IL M(Lorg/freertr/pipe/pipeSide;)V O PQrdrLorg/freertr/pipe/pipeProgress; = :T Utemp W Xpath Z [prefix :] ^ slot ] :a bcconfigZ a :f gcunexit f :j kcwait j :n o reapply n :r s restart r :v wcfgarch v :z {|chattyLorg/freertr/tab/tabIntMatcher; z : predelay  :  postdelay : jvn : jvp makeConcatWithConstants8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; jvm : oobase : others : remoteD : remoteALorg/freertr/addr/addrIP; : remoteL : remoteP : remoteS : persistP : persistD : persistC Lorg/freertr/user/userTesterPrc; : capture : %c &(Ljava/lang/String;)Ljava/lang/String;failed:  qc pass: &  getOriginal()Ljava/lang/String; 9(ILjava/lang/String;Ljava/lang/String;)Ljava/lang/String; fileName getRes n(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; lineD  java/util/Listsize()I get(I)Ljava/lang/Object;java/lang/String   (I)Ljava/lang/Comparable;org/freertr/user/userTesterPrc stopNow  getLogName(I)Ljava/lang/String;  org/freertr/util/bitstxt2buf$(Ljava/lang/String;)Ljava/util/List; buf2txt&(ZLjava/util/List;Ljava/lang/String;)Z  org/freertr/user/userFlashdelete(Ljava/lang/String;)Z     checkLogs(Ljava/util/List;)Z   tracesgenerating mdfile I debugRes(Ljava/lang/String;)V  add(Ljava/lang/Object;)Z## **Topology diagram**## **Configuration**   name#```% &9(Ljava/lang/String;ILjava/lang/String;)Ljava/lang/String; ( )*addAll(Ljava/util/Collection;)Z,## **Verification**.java/util/Collection 1 2 readConns 4 5conns7org/freertr/user/userTesterCon 6 6: ; remP 6= > locP @ ABfind.(Ljava/lang/Comparable;)Ljava/lang/Comparable; D EBdel 6G HperP 6J KLperC Lorg/freertr/user/userTesterCon;Norg/freertr/spf/spfCalcPsfdp -Tpng > net.png << EOFR graph net {Tinode [fontname=ubuntu,shape=none,labelloc=b,image="../misc/router.svg"] edge [fontname=ubuntu,shape=none] 6W Xifc Z [\(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;]}_EOF b cequalsesuccessgnot applicableirun k lgetLin n odoLine q e{ t uvdoChattyB(Lorg/freertr/user/userTesterPrc;Lorg/freertr/tab/tabIntMatcher;)Zx$ z {|indexOf(Ljava/lang/String;)I ~ length   substring(II)Ljava/lang/String;rem   startsWith  |str2num  :(Ljava/lang/String;IILjava/lang/String;)Ljava/lang/String;  valueOf&(Ljava/lang/Object;)Ljava/lang/String; ^(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;ILjava/lang/String;)Ljava/lang/String;perbp%%   toLowerCaseexecuteswcommandjava.net.serversocket.bindjava.net.bindexception exception tracebackterminal table raw  putLine  doSync;   getSummary'(Ljava/lang/String;Ljava/lang/String;)I  org/freertr/tab/tabIntMatchermatches(I)Z & word!commentcomments description &  getRemainingexitoutputshow: config: addpersist '(ILjava/lang/String;)Ljava/lang/String; I  debugStat   repairHwCfg%  B  str2lst  applyCfg(Ljava/util/List;)V addremote '(Ljava/lang/String;I)Ljava/lang/String;  Y(Lorg/freertr/pipe/pipeProgress;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V  syncraddother controllerfeatureorg/freertr/user/userTesterImgftr  otherP   nothave  random(II)Ihworg/freertr/addr/addrMac    fromString  java/lang/Integer(I)Ljava/lang/Integer; ! "otherC1 $ %& convert2udpi(Ljava/lang/String;Ljava/lang/String;ILjava/util/List;Ljava/util/List;Ljava/util/List;)Ljava/lang/String; ()* +,org/freertr/pipe/pipeShellexec9(Ljava/lang/String;Ljava/lang/String;ZZZ)Ljava/util/List; . /otherC2 1 2otherC3 = 678 9:org/freertr/pipe/pipeSidesetTime(I)V < =otherS ? @otherW IB CDsetMax(J)V F GgetLine II JDsetCurr L Mtrim O  Q R:putChar T UotherDW addrouter Y Z:sleep\ln^extra`noextrabwritednowritefswcfghnoswcfgjfancylnofancyntstamppnotstamprtelnettnotelnetvsourcexnosourcezextcfg|noextcfg~replaceorg/freertr/user/userTesterRep + noreplace  clearnodelete %   J(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;  :(Ljava/lang/String;ILjava/lang/String;I)Ljava/lang/String;!logging milliseconds"vrf definition tester exitserver telnet tester security protocol telnet vrf tester exec colorize header exec monitor  src  trg   replaceAll  set'(ILjava/lang/Object;)Ljava/lang/Object;  org/freertr/user/userFilter text2section"(Ljava/util/List;)Ljava/util/List;   getSection7(Ljava/util/List;Ljava/lang/String;ZZZ)Ljava/util/List;   section2text#(Ljava/util/List;Z)Ljava/util/List;%fn%%rn%s# o(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)Ljava/lang/String;$  (ILjava/lang/Object;)V java/io/File    exists()Z reload force  waitForterminal no monitorterminal length 0org/freertr/user/userTesterCap  rtr W% ](Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)Ljava/lang/String;terminal table fancyterminal timestamps reload in 10yconfigure reapply5Z  getPrc4(Ljava/lang/String;)Lorg/freertr/user/userTesterPrc;&syncsendpcap'charread   ping(  pingTest$(Lorg/freertr/user/userTesterPrc;Z)Zmpingtpingdping size 1111 repeat 1111org/freertr/addr/addrIP     isMulticast)*"90-100 $ %& morePings5(Ljava/lang/String;Lorg/freertr/tab/tabIntMatcher;I)Z +) *((ILjava/lang/String;I)Ljava/lang/String;, - . getOutput Signature2Ljava/util/List;$Ljava/util/List;2Ljava/util/List;6Ljava/util/List;>;:Lorg/freertr/tab/tabGen;!(Lorg/freertr/user/userTester;I)VCodeLineNumberTable StackMapTablegetSuccgetFetgetCsvgetHtmstopAllsaveMddoTest'(Ljava/util/List;)Z SourceFileuserTester.javaBootstrapMethodsEGwI#--K;;;M8O # Example: Q![topology](/img/.png)S**:**U -sw.txtW.mdY//[0  --  [weight=10] [taillabel=] [headlabel=]].dot_127.0.0.1  127.0.0.1 a    ce 127.0.0.1 gtest: i/: configuring processk -hw.txtm telnet  o!q s - u  wfound  images for features ytest hwcfg tcp2vrf  {hwid tester-slot}rwpath save -statetcp2vrf  tester 23port    -  - : hostname logging file debug  router - hw.txt packet capture  -.pcapcmd:packet capture 100 1   delay 11cmd:$/: test failed: too much traffic /: output .  $java/lang/invoke/StringConcatFactory(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; InnerClasses%java/lang/invoke/MethodHandles$Lookupjava/lang/invoke/MethodHandlesLookup %>?PQ^ X[bcgckco s w{|   /0 /1/1 /2/3/4 % /05/18 56K**Y *Y***!#*&Y((*-*13*6+96  *NY L+*W+(W+W+(W+*ѺW+(W+W=*]*N+(W+-!W+"W+*Y*_-$'W+"W* +(W++W=* :+(W+"W+* -'W+"W+*V*Ѻ/WY L=**0=**N6-3-36:6Y8:6Y8:9<<<6*g*: - J 3?6:   3?6:   3 CW F I J*+OW+QW+SW=*x*N+-UW6-3G-36:F(+-FVIVYW+\W+^W+*V*Ѻ`W7"H3 45"6+758>9N:W;a<n=z>?@AB<DEFHIJ KL'H-N@OHPUQcPiSvTUVWXYZ[\]^`abdeg!h(i/j2[8U>SDnNoXpbqor{stuvwytq|}~ 8cdCB  666""6 )$6$6s3=*"*N+-a-*7 $&,18 #e6@**d3*&Y((*-7  6@**f3*&Y((*-7 ?,6**,*+,*h3**jM,*&Y(,*-*m*}*p*r3>* ***}s*p7V '(-14BIPTU\i8  !6[+wy=M+`+}N+L-wy=-`-}:-N-\--}=*%*_dh`h`=+``L*`=+**Lb-R--}=*%*_dh`h`=+``L"h*`=+`L --}dh=*_dh``=--}d-}N-a-a+L +L+7$ "*7>HU\l{~ (25?LVY8 n"?:   6f+=+U+N-y-y(-y-y-y7B *,69CFPR \ ^d 8# /@uv6g++++>*}* 7 !#)8#o6u$*-L+}+Ŷ+Ƕa+ɶa*jL++Ŷa+˶a**-͵*N*+Ѷa*h*p+ӶaMNY :*jL+}+Ŷap+,++,}+}L* +-'W+-,+-}+}L*Y*_+$'W+W}*-͸W+ٶa**p*-MY N*N*_,*jL+!+Ŷa*+L-+W-*Y*_,W*,**W(*WY N*jL++Ŷa-+W-*Y*_,$W***-+a**p*-MY N*jL+!+Ŷa*+L-+W**L-+W-*Y*_,WY*N*Y*_,+:**W(WY N*jL++Ŷa-+W-*Y*_,$W*-+a-**pMNu1*_dh`*`6*-:(:*-L+}v+aVY*N*Y*_*-M,*,?M*-N-*-ºN-*-ºN+a*-:Y :6*o*: *&Y*-6 *-L+}!  + y6    W*N * :Y : *jL+"+Ŷa*+L +WػY : Y : Y : 6     :*&Y*-*-:*-:*-:Y:*-¶W W*-W *-¸W*-W *-¸W ^,,-, *Y*_   #'W-*Y*_   #'W0*Y*_   #L +W *Y*_WY*N*Y*_+:  345 ;* W( WY : *jL++Ŷa +W *Y*_$W>>}6*NA67 E:*NHK:>N   P S  +Va* *X*-M>66666: : Y : Y : *-L+}6*jL++Ŷa*&Y[+*-+]a 6+_a 6+aa>+ca>+ea 6r+ga 6b+ia 6R+ka 6B+ma 62+oa 6"+qa 6+sa 6+ua*-: +wa : +ya*-: +{a : +}a)*-LY+*-·:   W+a  r+aD*-L*&Y[(*- *-LY+(:   W'+a Y : *jL+"+Ŷa*+L +W *_W *YW *Y*_,W **_dh`*`W*_dh`626*h`6 ```W *Y*_,WY :  (W (W (W *,*W *Y*_,WY :  ,W W *Y*_,W[ W W W W W W W W*jL++Ŷa +W )*x : *  'W6 S :6 0 L+L +Wʄ D :6 & ::: 66 ' L*+L +W*L+*ѶL+,L(: :+*#*Y*_,L + L +  *Y*_,$WY Ӷ՚   WY*N*Y*_,+:(WA6*t5aٶۻY*N*Y*_,+:*W޶6*E*:,a *Y*_,   a*l6*p*d ٶ* *X+a**-͵3+a*-¸==X*+M,*-ʺ,W*-L+a,+a,*-Ͷ+a,*-ͺ+a,*-¸P+a,EL++*-Ͷy+raYN-*-¶W*,-sW+ a$*&Y(*-ͺ *-*, W+a *, W+a *, W+a *-N*-:**-¶:*-::Y:*-¶W : W,,,-6 6  vY:  !W #,,-6   *  d6  6  '*N*_, (ބ * +Ӷa=*-L*N*_,++,+,N- ** -W*7&'(*+-&.'01263:4=6G7J:K<U=`>p?qA{BCEFHIJKMNOQRTUVWYZ[\^)`7a8cBdIeMfNhVi^joltmxn{pqstvwxyz|}~&'18<=EMRVYcflw#,23=JNOQShqu}%58@HKinq{ )9BKT]jt|  < J ` x!"$%&'!(+)0*1,8-E.H&N1U2_3f4g6q7x8:;<=>?@ABCDFGHIKLMOPRSUVWY Z[]^_"a,b.c1e;f>gAiKjNkQm[n^oaqkrnsqu{v~wyz{}~    * - 7 > A K P X k s                  - : > M g |             $ / : E P [ f k o r |                  & 5 C R X ` e t                '  >  N  R  ^  f  n  s     ! " # $ & ! ( ) + , . /# 1* 22 3: 5F 6N 5T 8[ 9c ;j <q >r @| A B D E F G I J L M N P Q R S T V W X Z [ \ ^ _- `. b8 d= eA fB hP iS lT n^ of pr qy rz t u v w y z { } ~            # , C J N W ` i r                         # 87 % /0   A ' s #% \ 0V   $     0   /)   8./'#*-:,    / %*-4-,   7 6PYN-*-¶W*-¸6+*--#W+*--#*7*   $ 3 5 F H N 8 5ABC-DFHJLNPRTVXZ\^`bdfhjlnprtvxz|~