From b2f46d3180dc0bf7cdc75f1c87ebf9dc866d4be8 Mon Sep 17 00:00:00 2001 From: hansonr Date: Sun, 12 May 2019 21:14:04 -0500 Subject: [PATCH] jalview.bin.AppletParams --- doc/parameters.xlsx | Bin 44673 -> 46107 bytes src/jalview/bin/AppletParams.java | 279 ++++++++++++++++++++++++++++++++++++- src/jalview/bin/ArgsParser.java | 34 ++++- 3 files changed, 307 insertions(+), 6 deletions(-) diff --git a/doc/parameters.xlsx b/doc/parameters.xlsx index fcbd0fda697b85abc998c0c41bcded167bd5f72e..b04aba1dd2ca016fb48736a8a977e0ac1319c81f 100644 GIT binary patch delta 15846 zcmajG1yCeS&^Cy>yDskT?zZ^i?(Xg~*y29eqKmr@?(Vk0;_kM<;?A+}|3!Rv7Z-8U z6FE<1WmRWpWmRSObO&!hWF14)ZNNiO{XI$s?!XfRfa3uu3{2u8`;T;Z95ThM4y&gnrQ`qduB1zqJNLl6kN~);fYBw?Jfjp%Hekh)* zu$!&`IDud^yj$cdwoJ^-X48Y?x$3Of14}P5iM-Y0RZnvnufg8HRagy|Kdhw zX6QZ5WfmSa8?XcfG{-wXn$0sm%ZY>9T!(T&pIvB-FOknGPW1ovm;M z;L1DA*`146d_DZlDq`$?!)Wc{p_HIsa*BuPPoOOHqTNB_W9ydU9e$&bJ^T>$*TJzq z0Lb`U=r7W{3an*D*l4a>G&&>2-gxz$0G#(B9z^v#Ck4R&ddS6=0K7 z!rbhU2~Z4YI?bUt4%|sAHe5vB~JKNnDbR#IS#IeaXA+Am7sLb zQqU0$ZrKz`FP^Z{g(GtY6`B-Ja(P#*h$ICv$kkLgK~q$bEJ?8P z=UW(SM~2&l>G#PP9KlE&*6>3HLIeo|0RXBt?8W+BYUPI{RP>f<=Szk0Y)hP4YA(3> znxC@>2-U2opG4bM)Ds$+osoaw9KXzBJ2_Y$h8e%rd^@@RLJ@(4!)BT(L#>=I@BQDG zD~}`i(4YQjeTq-#hpZ5FrK}XU`4ARQI3=>IQVi#k0NpCEVyeMGyJf1#83a%#T(li9 zbW;ARK$! zHp+Y3KF8nNxiqRvXyLIE$>B)2=;?ci@yTvmRO@y6#k<`CAi5F|MtKw>f%UhIhcujX z=`B6t-Ntk$N+gmRETtolt^!aputwMH)3Qd_6;ZQBH&D_x-mC;g?lS&Bh*j0T#>OkI zH)mp%vluflPMO}N7{QY@m2_97o!({mCGUdcha9`hD2$0Wq@%EpN0Ez)KBO~=%}UQR zXbN8FDiMqG2{DFrh?ZK@Gngf@to}mx9*-!WFy7&HrA(LaGExE70rC~X6dIP9BGAMHdT2g3dM^F*|1o{G>-|>VsUvbC(Of}OzRkIVhqvp{mi|8v&zWo_LdbhIKT6(ec=h_V= z0fcwJJ@j8k9A9u6#Gf5h81rg*ja<(sN(5Z2?egl=w%P#^Z3&(ey}Hi)E5Zr$cig6O zUr-G$KVV9mwIe<(V~+n&2e4|LycxKs+Jhc#?>vF}LY*r`4>z1qport1Zx^98Gt??x z;u`f1Sv4yUwatoLcK0u)c6Zg^xF_}vnMY5olh1H3vr&eo$A>27hr)Wkw+m~1IH~$= zuKvYds6%(`yRJ2A_AgetXmiwo0-tZUdHUnw|FCS``aB(}H-0s=ea-0l7Tq%N%%`70H z*S3K6h&tQ`oV{4&7Nyb;=^lZ zV#z>dZDPH+J$>bVWarN4W@>^#{coK<(?gGUaVjYN3E**Q)3q}FMU(X+Pt1dx<@6Ac zcxse(^T)EqXFX5C1J_69BqIxV3bE|uaNZQ2!niKa0W>m`s_C2q6K8p_dx$A>e8%p# zMfV}RHuGh8g+A*N1g)TcVBh2O$134PsadygO(TPbn+i2+3iaL=HH$9xCa1L)fs18&GK8DI+p)@B@q9e6ISerC*` zY@EfG`#5g|0d6ji0;Yp^$SvWF&#R(wDnolQ$e#b!H5=_k`Di?uNkfRO`)s*^h%=1|Uj(Z~Q%g@AT??XM1|2v*N-)4nfy~YnCx`j@ffp{Bh(NAgUI6qnCjlk_WFIs-2NX{&zfo1>HB7 z*B#zb%@zUTgwpE1-YVLvFIG|}{p|(nzqZ#hBQ3!Gz*Q09p>YTOG+it#Q%@k*03;NM zClsJk3q{v`kqY!J>NYBoIlHr*(Gq6W%Np=Ru*6uPTe1lP@Y*Q)4v1MTlWZoGv{d)d z_Yi9Q;T$$VLpQR$V;5Zv*F;-58(l5qN}RjZma}46;(dhMbj&bR++FK{61M2@>}%Mq zF;Kv>!F{%0&5UdV__tw@@ch8K0yv)o=Lof_58Rj9Ny(|9Jp@W>dF-sE7nc6Yq<%r1 zpc(vWdZ_#*&E`SYr2n~So5c`#m5FKT7}vc1Xfm6-AYSxhkeFnr9k#ffv500;hS?NO zpE+`?eawd{6mw#MGrMxjZW8e23Zq)Kb#mbB%$Dy6$If@TX5Y%iYw6OX6;PkKned#( zQedrE6?r8Z+#MZ@@kdz9u$r`0a!baSQ3(94h{xg1uex66?~mGJB<~CDiZjmpl}{rO zcVVw8z^|TATE}dmtCWI-8KQ>^Mmq(u91zxbfEWPYex)RP&ZFBXFSih76Gh$7@t-ingFE=D6)fA*(C@Mp_R1g3>O1ckkV~s)tfrKLz6G+|; zR8T3eyG+1l=Do`2+O?@oL1?e4L3Y@%UXT*4TM%ET36U5iJe4l72_)fN!LkjCtD*G| z2$tk8-yrbFu#c{ocnD*b>HH(oqkEuQio4{E69Qe3JJs2Ug)&`HXSm~ zV8=BXiBuQ~(Wx~QHdqSLvFoih_dRFWYwv{ii~F96Q=;zG!)`G+l^a>#R(htT$is@K zkY4bL;N(LDz~LSy>tSWF;#TSn!!a&skrk2MogX3b639vh|3Fni!4xfDEjK5B*$1)- zHrqT4JoBiYsKkXuri~dOfVkfws)4eyo#-+ZwYcO4q=Cu52xM$7ZRTqAuTPbQ;E_WsDPo@f>AhNAz$;-$Pc z1ztd5Um7QMhG7xMwpedua_snR#O@2G>NjayKpxIeF>Pse$I0W1gWodGi*x=~8wXX4 zhJB1roUr@bT|ds2H9(7)2J0XQp^nsz|MHwWIXfKMzm zkkAk$aYK;M4u?-mx3<7zCR4XWw`@o6V)81Riay&35kY_ShXUk#YT_77(AG~0a^L5!yJd5zF*<3-R`VYS09Q;8iM|qX|T~9Kh zgqW{kKUrGzoZbUh>gpgtq0+56$DfncSs@Y?0`oqzad1Dof>s#$6yQ2??QgNPF&eYv zVza?lX?CfQ?lNl-nG_hDC>;sl+!S;O%Ry6qIWMQWiuK6#kXbhW)hfC^d+;+Fo)c3w z5@s`#Hd-E?q%Q6`&}mZ1DuE1o{+*RL(?NP)>Y|mipIE2kb5RO?VSYIR6MMmV9T}Nx z@F6`{c9))pJSg3V<2I?KbBFrFQ7YwfBDmhvu0|Sw-R)>|#Ni~0mM9+5$ABL7@$`KXTY;ib7y^UK27msmUABZ@-_ zpi9sV9vl$Fz>%z0Wf>Lhl=wpg=q=2;a{H%U*v-xLmN`CSThjK=*U3^C?Le}#(WwmB|YaV zpMGrpTxsNg`>f*+{WX53vcxoI!#12`DZr|f^S3ZMY{_ym_84nPyaCd@Q<^97eI7<7>bhD*b+xykAj+au_+GDlUE`Ti1Rj*Epc1nj%x<4#Q*TCL&RLo8R-m8sMT zT~l)3GLr7>DSTDY>$Fk9>JWWS*D$|zLHqC_LFND3xJCGCqVrN=Sn91$P|n$ge>8FH z$qJ7e@fJA1JcvIAvewLmn|v^pSc2$u`SBTR=)p(yOwkjm1auKY>fTA6^asjZA(c)@ zGy@(eC#a-3y}>zGM~FmA4gm}kC7V8>x@e@`fUI9a_kumYW|%2Q!s{iMedIF|GvHbq z6Ug~uOe3O#dc^~GN`HR|Y;wj(``WvAO>>~S%;j)H5MT=4*ye56U-F14IkQTAAnzoI zUsAYO?OM;)Jpm^126tS?QcP>2BgJcK0$lz z9)Q1BB=rwrPq=kP#xJcv^k3W*jauNst*6nBW5vC_%;iRfIgGn3tQJkVh6owITvvK) ze19o0$8ndkPAymv(G1Y>%PugcLr)5sNubJZd-sQ7<IF{b3M*gj&BH&9)$ochC32Eccl(}xqj z*a*Y+tbG|8^XA7#c>!+bKnJo+>l91YNN+zJW`q6R183f7U|^J)8~YX^)AfC-6K#>M zo!TL42MI#}{d2N}#9bDbO8vDt%UyqX;Tz$BG`KO%)h8ehGbyZ@;63F-b!y}lI{{dG z18Cw3pnX3_(SLs(Tildep?0TwDh!?u6l^9Py*m#I4mbUQ!E&!#20IxAoW|^KUt90pKhe$)<1TuyfMX#Ed9-j6eIhj@t(96+GUm-?lru z{>swkrm!^>%#bgH@6|$b#~(@9%YzJ4I7fd4Y!1NO49H=FdNkp8k4;T)VTz z_GvwMo~JQZNdc znC8I(gSx0yg157pR=D~yw1d)7QRz{Fi^X=b82#EiOFZ30@=LObd18Sx>dOX4Afec^ z6eg|h1bHC`0U^Ki#RR3oSJJh?5m~7d8)K6^liMa-0H~_L(7st3o|HS=!C)Bj7xXzt z5ZjR!frn^E!QlCN40SPp8(5|-u>|RFMr|TKE*^cUh&xm&CbBAucxYJEB#la9$Ez=u z?lSlahOcVU;qWr-R4PAsnR%xK z`kslKbTBvSik2Wn(J`F?vfj7vV;m)ze(|99>zS7SfsTKriuexLKUR0w-gV;VA3~2f z=Nj?_LeKx0+>{6uhT{o)Os$bR>dLT>OO|Lb_r+Y9^86q*NF{zqTJDFg!yI=@M3R5X&g?rKY)Qbp z?)p{4cM1&fI79--YFeHBK@cx{i9p7N8omVas@oq{l;77eC}q=@9}L$f$hn6j=mtt# z>f&WcU;H)Vwe>H_d6rq|r6}y2%AcGg6DpA3%mj4{~-Y<*wm}*!8+sw(FtGAmm zNsEg4mHexOzFsVRr|X%`nXvR6q>#OH#xnH~xn z^^=tO={#6WKXcbX@6-hgeNvbRG)Fy_r4Tp11ohgQPTde(JMG{%&hd0glrDM0%aZvjiKJ;T@Ll{H>dK5dK=x>4K zBMAzVW`(Z>`Xec&w8FvH$6p%oX$p7#U_op#*%ji>@7vUP91PQVd|nth_OL9)AnQ9@ zJ-vU29wRvvfiV6H^SL40iL)TTA%DF0DoAOc7NafaM!eH47U0&}?Wt3xubzeds3 zE-A7d?7?SYrA@&Jj&uZ0Gyt_9$P4ueR){(sZ3k!A(>%NS0Cm9$#kR5*hE6Gm>=C9^ zbb(ze<{S}6CGLlJFw<6sPLEWaOSZIQ*145fA7M$Ee~rTHZ1Bl`L)f3VtEk4+-qM^i z4FT+TwNne0U%MpFG1k_Qw_c%Ch3b9u4DAU5GeU_F&5B(}=YMxP`M8dGE&G6mjH2%M zALOQekpmD2M&0Bx5`&ThYl_dcN%57R{-DID+!hRZD9Eqv%SH&EB-7M;7hI(6QN}5J z)xnFrG?X(){gnX2^m1=D5K-gV$_WxSH3f_TwFQ%M5=N^zsXuq1mif7Y$3Y&9gpx$~ zMjkL&iWza6CtU*Js=9&VJF#8T746Y7%t-&9FnHN?>^w>A;$kz#uGOupe0^f(YScxLwpS$AGoQz4n-=gmpN5kVwFSGhg zQBmCf_2EZukW$Y5Oe^`tO^0rxk@yex_}#a8R=y=eTvOsGFT8JOiOP^6yJWL7S%||7 zW(7tX`S8K&>%Q2Ie!5phCi0S<=zAl2vVDU>Wc=0XoLkr&M`X>80OJ&3ZnKR%-Qqtn z>8}uN@#5;GHT%gIb0nQXUQaKlM4u;JB`M#_OzljzyEs`iW3E+D`BA&W+gprsLyY&^Kb<~h+K+EzG&@A7CfQ+A*}IXb$Ap>k}1zy$-yQOOU6rRnkQ%Jw!quFrN#N&-xo=q=3FOlby*y zTs-%St_Ff2hm%xkN(IsNd&{2?`S1RPi$(A*wo}FuHKUg(`t;^_Tr|~@YHr~j{_f5Q zdQ#Q00=o;DfIf?#n5C@B3z_M3!CAxMDMg=^Y?4zxI+&w9Ce|pmKUERdm>&%odun@) zRjyED`&mSE6r-;NbePqw9`noLN*k27c}^&g=KItGiO0+N=Bc0{N}l}`%lJfqrjN+^ zk^0C8VOT!|-ZA-}l4|CU%VeXj4D7(>ZPgx~`n)*-G7fTI0}t`0QL5dJtke`la>N5M zn9)?R6hsP5AIpJ}l>A5wBs5|byH*-VBG2eMv;r9dl^Q!e+BgviR^9W* zNP;7P+3epcDj1^zTvk8%7b+sLF7`Y2+D3$WId!lL=*jc>9HwU~@Kk+(3~#Jnnp)qF z%I@)qJv1QvK}4CLXL>;okc``c7TMBXKHsNSI9am6~E7udL?Q{Yd{`EWb;}I5^e5J~c&#qt{CmQK908z#E znlHdz?vy9}vNzErPJc%cf{TODcG^jKC^3YQvdw!ZJqZK0VXC9#ec!MWum)4|%$gL*A25vVv?io8*nH=mmWL zN~XqgQOx(mN)746^!Pp{(+j2vaA>89^rUi?kQtJz&4e%mzMD_8P@s?QR(^>6Yox^d z*7+Bv1Vk*g&hbJgei@gDpXpZ^F~^bK%OARbqLKl9HqJ0K-`{nsGyj6cO*WPhHplL2>73;2|bTiwvZB9x9 zi3gJ+8ASfgiL>DFH8y&O+z3cp;+urpbl4(m*ZKn|@dXf^NWK;9nllM6e_F&jhMHK> z(lxvNY9GB5sQR_R4dzsl2C$G#a>=H@kWZ51y9e8JcvP5CQ?Xt7<4R&i6Iig0=aR`c zV2RK)b7}y~$u9yd7&@2n=#Tq70bWKXVpcFTBI6Dzh1{`3s2Z|q0LCfV$TL>AAnLu4 znTO35mc}5qSY|5%G=aMe4~2CTq@x_TTczib)Ea0HCU)XdB19gV0f^!i|9fyGmTMdtTAGxHffT4Gu>(k49v{dLcsW~s!x>1MFc>iU{SAPzSz+kc zrd+&edffHcp4!oknJ4%+q3Z6vBeCPHiJ4pgfxv@fRk|t9u2anQr)tC#L#IC@!cI={Z^bpRMZ<_a9eY(gCDlLFH zB6N%Hk1jG^fs6R+vIykO_fYG!9sZnJCm^f!KI`eFySV9N zzM%s=Av<(eZ|FmLaC|naNvrlO?F$dB!!+NY*rNxO$WgTerKnEj3lPz zG}O8DM$kqjVcnVsr00lZuj4B6azF>TAChBlZWv+Y9~;rZTsTQVZBOjczsJi4q$7I( zv-Du1gv1S)#v3@ygv1=!+-oR{nP4Ji)%!1_eacT3bzqEE>F4=TI4EiaMoo=m>O@a0aQyCv?OOa{XK zgMRn>NvEiXw*y{g3mSr4Zp%&|=$<{4_=H{h%{ z<*n)ZegBbH27Gajd2&~AsR;7}u)&HE9x8V@yz@Nl6f{1Q0L4_W5WbcvE1kfBfsJv0 z{^$P%key|qw%&>neyRNX3019|SE~c*-FyH-4->6Jy}mcx{9(OVu-S4r%0clJe1FTS zr87|hF-|wD0*YF&aVu@rmr6(Y>7cya3bo;k;dd^~PM--Y&>?@k!XOWZWYg&VQH}L1 zqLb-Hx9OVmk^W^n9rW>jw6Efk_Y#*ffJEL1c(bX)5C8Mme-oE*W&bUBbsQ(KLDc|= zdR4DC^Ws2rqxzw$Hd8n-V86MqL8yQpFQA0fq^t40^V`t!sAooqd&4yB?3Po7!v|3{ z9q&$N=Zl~tfKeUv9c`kbCcKv4n$<3PuhOHk-CsvyQ`saLcc%Uhmcm~RJLmMbEpL!B z;6}FW$4%B#7M~=)03E|9SXRK|*l(M<$b=yktjQTAcgQ!Lv61(VORLaT!-?O{%x47K zobZ;*kn+XC6uug{pO==6=}nAvOqP89K8YXOq7OzT6O#Fi5r3Bm{{_#36xk`0|_%jEdFG4J&F3w(x3uD={MaYDdBx9njGJ3u^)qp)7&Ek zhzZrIqL2-UVRz8m>_VKs26R$#CrL<8Al}6X)9aSy&gHi1A|Df3e`b!N-XTZ;a7u>^DMb4YmEq;%p(KXss7!t730F0*669O5aHQR1 zOIwcDN@;!Sv*bcJ%Oe5B@;7>({r|q7-XHEocr7&}apWPPZ%$q5wI~zs zQ$nHDTJcgr|3)zgJ=l^h`(1By2Jojl+bsDQl@aOhcpiv!Pa;GQYUOx5`XZv$L?Dpm z%?WY85zLDI5gzG90fDCcm&eRx{$uz*X$oIJD>`^&>3fF~ax;|pm1Q8RwJ*<6RI1Nb7M`6FAU$Ib}vUXAHJ%RvCiaZ9>t8LOYPQ_9OxaMC&l*;sij@=XM6Y1NKG_vlA7R}#=!vtNXRnl!8_`xoQOVwWAw~y*x z!X(HT7YDXGsw0m_^{X$l8l?<3D^E6**cv#x(n%o-mj$GpsQTEuQYKs+{$R75#VP2; zArU%rK0c{&&l2>;UF=05}Hel7CI`Qp=7UosXcna=QO)}B(aMjnC28b8_n zwW;DIeZqqaenDIYEZN!R(t1%i$dq^E(|>#-hMtFOjU6g7RB{#b#djX?0CUQ^3Q;- z$AJ>TzYVI2z&5rf)&FF-)UP^CR@n@_Y{O)l(*(HxHmEBCDa(rgwYZEwpxUvhi?XSM z=hFU^-l1~gyBq8xg7H3dx9DVa_llG0s*|{4(5HXj6~DxM=-pg3><;R0Q4fPW z|3$n&g0fHCS!G;Rix@mo#k*7wF`%zbLrIjc?bttYwH|N226HBI7NcPfr^dl@md`na#1iVpt47-a8*mO7 z&kWtFXP5`7okEpoea=?bN3$?=n>t}Pg{~^?`J%`&;(w7PgWLFKO(NHo&C7*5OqYYn z_OFxRwF11IWp$HFa25$AMG2)7^T>Zw7T!N-ulJd|&Z)Y{F!0kyk_!p=pYa0X4FU>z zSIKGqDG*^U40G?V(Yoa~>XW=fp>V}^KA zF@C&c1_LYjXKopj6G>c(4L{>2KmFdBwPUCx(6MA&UFETVF!7^JeY)(Qfw2Oxyfd3Y zB)7?_k?BHKB|=sUx&L%n!tdF=NV-1`fJySfZ!D3O#RnXPD~3+PeGadT*LgJ!OU(3S zs8bQN?*)$tdNi)+`w29EF6ymMfH>ws39)^P zpDW+M1XSEEL~@W%L;!lGPg`@zSe#gC;6KxpcdJz)1s|sWWDPzqK)mR;m&oF{zmFK- z>c9goZsBL5$1ytgVHOMT(;+*Nh&FffWAbCCAs;vdYP);0WWLB`b9Jpn|7y|9hET4> zRjmDEf7A3Tbh)UpHe>4@1#g5C($SE$Ni(-KaHjYSFj>~8_eNV31g!Qlm|<-01uw;f ztRRf1mV7A z)k-8O%n*og`Z2229JlI>{qk7aBPqtInu+Kx;H3MRU?qG$ixbbL%fhBAHM~Csv9nzvCvAWt$2>g++i7%_8qqRx9YfJNEw_k9siZZYJyKI6Fv=Ivx87*M z3DPg*um^l?-E=s#39_7sV>(}%5t3)UrN?fY0zO9k37dKnU$8z%rCrdaICJOrO(g}v zuCYi05?&Gi<(eSwXjlk9{8~aqF9aBvAu1Rc+NbZm?ODuB?9C*sO>7+hJ#cECuHu*_ ziY4{I;DL(sfovH>Rvk;xBzFn33Qd|dm}YN}Uuo-Qgq53<&X?ELmP^F!j8&Wa{slEg z=ghI`f^>TKm5u| zoLH@uHB>y+J#ymoXRT@yCjy>o;?l?L$qyrG;VV7m{Fu{GPab9>*4GkQ;lPUb=zZxx zkv14NymLzpMGc?gd6lB!X$PE1FM#CO|O3Ne+-OCstkG7bYtc|{g5^& zH~7PU49NeF1CbTin7LO!s13{w{19RiI^!P$hCPxFxwFZpx0KwWsLHo9DZo7~^Olk8 zB(<{d^C`gt+c^e+mI8}`m(%8XVTNI+sc#F`d`B_d;r|?#cxoQLJy2!{!&tF&cxtRA z#tMBIA#Bk9KMdQeg}(d{3Frs}6l@}TUUlcP?Qj3fsDN?8tfJS}sH-s6=&JyPXh2sY zXljJE5awbFGI(oVRXMNy-Bjg@;)MRy%Q359`@`zSxb;Kp(f-Tr*yJG)fBG})7yj|r zpZ(^^9OiaR;TX6QD*Qv}7~|%ra_^@QF>4lV0PN(U*cLd*XV&YJbA!w=a10zEXo3=RsfkOl~1Ne>1G{2dbN=FM9-+zNti+jpmR|56*i zHxl8ZxF^;{{C!Q4UmMp`zLL+U4%O2bOD7FOoNS30<^EE@FCG2s8eeN-H;im6nNI6G z!9D&0Emw2jyVEiD=$P2ilw=HwFhOQ-Rx)M%-pXi7TU4?bogV$xoqs3>+eq3qqr}@4 zn-RJfprnv4*NaLe5`&UHndK;UjoH;XbTlQZtX$y`;T)l7OhTL$NE+3Izpo4N@%RA| zJ*hv;26UUun(KdHrHLPbVt!*!eA;-h7q6dHS`HH!@5c&Nl&&^pJ0}m_4a}WL3C;B* z+4BZR3D$Kq*<|UX6?$sDa>%;1W7Zxg=OC{HL;|G$8kL7|dxt(D{H6}EoZj89dCH!|H$t(&=s7hM za@sMtr@+m(oJu4iRd(4LO%6Fv&;AWsYA*%j!7oRSXfo+KF8zJAqNUi|$r%rX7I9j0q!X?^n6Vz;6QqiS(Bns;@#$hx)_z3JcQEV z+;Ks&oK(RF-%d~`Cux? zc_JLOp!gdvmi74?X`BXCp;V7hv3gw@=rNuyF1O`UX3;qk5MNIknrsnZy00clpd zr=BHWkBSs}F$)kw(#MCc@NiS}ON(0twaX)~SaDQOEY!6c;sC`Iw*qo9oUd>##n;)6 zFmzS%!qbdVdkM9|(`t2Zk^M8jnkyaA&sD+j6(vyiePs9b;Z?WLW!KYwD@Abt{cvFBG@(?lk58#bksP=oSTOE*dC1 zU1C0&l$`jDa_PM{d=JTi1?1CG>d`PfC~vWMg=DI{U*-Q<%|C)gy)GxyQd{>z<*GKR z)PGS`f532?wyk51Gi*>lfYY_8eYPOmbX0HD%GzdN`i-la_2||U7aA8X&a^0x=Ac2) z8FtFFsvb@MaqBW+H5%;NJQ`44dk~ijfux40n)j@xC<%AFsZ2v~>RcW^tj-q%~1 zIC-`d7Z;4S)zH0lz=pTRb>ymoX9f303Ia>1MJY&Fo-jqJm~!9b{#H()37JxK8%C?* zprcsm9X^?A*j${Ina$D&^Sz_&7dhz=xb1*oh#PcC1x!Og4oZ&(%9~u1JPJ>t9!_gW zP@i$>QC)X3&No4laX^8xX?g{!gY4VuE76+=ukqD&q@a}M$;@H7b z5#f*GmW#OSWaxs(oTm(U+bWjJZR78#=--5xmL)?<4=U30=K<`$!xpqIWYa6E{jqEW z=2Oc$ejR9{9J}|eyMi^wYMDPGGZeR>pf>XJGA8p51T9l_ayKTg>~iN^%zOl|GU$GH zPpn|dB!DXG@+XtI1$+JBfQm;#G|s`>&E=k?8lUrdLsWZ_d0>eB@`f4KP@w&kc!W}j zR@JPZxj(Cx_5>j2UDpk^0fzn-H{HLzdAK9-!C2gwfy(|{J}7&9s;&d?_e3PY9DzXT-Ryt zAA#GrI3W2ve%Sx>T5(hf;Qze1iB$Ua|Na(`VW}p>EkCdh2^(0;1r3}nrH3e!04fPn z0SU^{fNW(15T%lzMM9u;87D-E6fn0;8KO)Ycv+?a0h0OrAp`n~Bm9#k`tR;O)MvJb z3z`6=a2q!n-eT4`FhcA$)lKQ{=9cWUC1CbF6^r;krAV>hVR`L=3zq8N(Jrh|H z5V=Ya0yPDg6we6+RMA6_rhYGqY!BcGLet1+GEWtRcdvXQ-Egwh&2xVTTnqj8442A_yIVI!um1g*nc8T%yV_ zr64^&0@cL+G)naZgP^>(^&e^s@|hBmcP4112fUn)NsoJ_7!!fkeLtfkfGx~0xiS@& zX7*M?f8s9@rc6WF-xHW1TqZi?1hn99I0Vo@8W{x+Nl zu=H%JJL;?2z?BXY)Q31hPZG7mI>`}+%65lHm=hGA=uG?nDzKO3`e4NF2fChVu!HqS z)`#?IW`$S7p;57G*}N;IrBM{iPp?!X^`0 zPhn(OXeUURt4>fU$uOs+17RD1%_G$X7@bLpzATG9=?`8{*7Rk$C?^XIlvyoc?634t zN&025h=ZG3D6`3T2qC)oFTqnpJnTFZsLH7liFW)!VMJnG}tv&axBH)pt(d8I4 z%)zu9V_sZcvc&{RHFWW&yb8cuC(a!+Hy=Baqh*l1xR?EHqvOq3xMGEY*D*f>OpX-1 zVqS_-hC6Kb;oTgwU@NO84u6cQk(dVMU(VIX-Ck3DwU5P`tjUg;?eI78OV?%EFpG8+ zWfrNyu`|J%`*A}&-xq*(Jp04_gI^^abx&#e1W^U&vcR_0-}Hv6Z305ydWrnCTwB2M zuQ7UzM;NKbbY^ZXyr4sapxeVoK;R^I`fMs+bNbtVg$n|W+e#SNy6plV`JbKHu8*}o ze^c^+Y;jiVJwT?sEDgGAOi|0I4s`nE9$VbFgV%9lCPI`xcKQ3y9{b}~*m_t5FEaeP z3m@V4S#7qI&_1IYgzDfutGW&YgP3ox8}@-8up5z^6DZ;BH3|QsE!<#}j8^q*-j(?F z_4C#Ct(2_Y84k08w(xN3^H9`~VZI{?w1A%QPJrVn<>9!&s{_O0qjY;-j#UA-ME?hc z*)szK$Fw%h#W?Scl_rhL_ByW$#(&~*K%_q4Wf?WtcRu|E|K#dZ_hek((Zbe3hY-Ji z(Cl=`>De);B8sgf@(Hxo+$4ySApC|U=wx}W=uf5QQ{7I~{MY`rmig%Q^K|kb>mw80 zVqnQ^F>jr}&LDVyF1f!(3eEfREtu+HWxn(z%G8=SgxNDa&&}3TVxn&)y>4m$+p$i& zVVLLTZKk$B=DpO)?fEM1(w*vcU)+{NU-(C-jYMb@4@S8yy2BuQSHctm-iS#YGPEn# zEeq0D_r8`n0WOg<`33(?j*3UmZgU?*Sm0pGlK1K2-_(VwFgN9Moe`(vg>6P``eh3w zxlt6m9lt}xKnx1!4_1V9M5!Ap!wWWYlb+uJk&wv{c)~m@tu|%utQt`2jlM z3-id<$du7=$k^Ig{Nr#jAvov#9%@+83_ICSJuD}=9-6IJ#hfn!R%xQMFmqT4z)z*( z;parJKmydI!m(M{Y$zti{yLTDw7Lyy`{^&K{lni$uCpWYtTFf>R0zVJ5@iO?074SD3DHiVgJsp7mbAA&r zY1gG0uDl0k=Crpd6|^`@@i?lh_z7Ip{LC|Y=LJ?@%XmhcjMsQTz2kt2y;eDDRHJbt z57Po|UINpig-&fL^=OST2~WQGNyg^Hnd^Z>SeW;IW!ArcD+GDdYwHc;==Rk2!GQl= zaJ^-8SU2$N)B1YGi`#@y+Z)^l>%Q~8&R588shxn0SLdGd2fodFKjMp0el#z+LCEZ^ zoq(@X&Y~{ZnAt_)^mRZ&MGt*jLVgc@Z$erR{YXO2)PyB8Wn{hCM>cumVNIjNfrQ2$ z`kyqOfyx3=am1$75t!3*xqMO8lC1sOC){k2^$%Z+ur1ktm_~bjk^}?Io|09JDA?!` zRCXOOl*P7m*4r^KX~R&?=*NS|Cle{GpEJEt5h#wVPkeR;SWBP6OZ;#T;J_7}oqGOy zhR$f85cx1nY;On? zEC91Gg{anAlHpAHgitx{B5;IeiT8QI~PicLL|}qgUm&I`QyPtuEvYIinbkJWZT%R^X4f^9 zr17pT)ZkO*wDQC!{26c7Vsc6A(>;jq^qKr^Nd^I{M=x=zQemNhG{tduC zqg+KECCh7{b>pu}E)Uw$TO%3$DuH&}>KL`-l)G7_z*1uUS7QCP>bjKB;d|&Lx9^#V zTjv{5##wjd)O>sP!Fuee7~dN18_r{1=M zno51rEwH2A-Q#kK$Ep>*SX%` z;A|dn=*~DbXfEFi_C9<(WU}TFw45Bh{k&teWuiMcuz%_7-#x;6zmcWM`Y-s$>5+A- zCh&H4{N%2whGZJ@WhDcGl;un0=Yg8|doB|K`19mzKY+t9XAO*$85lkpe*!n^)aA3E$vS#@cZAfTzWW23se8m_#! zcvPCU?TG4i0Z_|-t1RQIcYka+C(~+77K}4jWZ}bi5QD6&HQHeH-MR1@_Y&vq)YwBqY05SvR^@9KL0g zD3-kbT{~9sw053We$xQl9(l>a*)g)9<~{85s_j$mv3Uh=jk~%Xqpm$IH*i+&Wxfm; zC0O8aZn9b9fKsB}1zkCUsHoH1rJAE78O@5|)lX_OUk>Py2_q2?A zYQMeqV^3#(+F}11aNICEZ?hD@h7Kx#Q}R#X!j}!2On)KfP{R0(1$1Q1F8JCT4FM$G%FaxZK{`xgJC|nb z+30jTzs$H=(^(vzx-W(09-E)2t(|^SpU7fQE9O+AU=N^(tUyI%Pw@z<$oGwZX z;L<{&-AN^$JcBB*>eorfMhzWCEIPz8=2u1+Qk-g53NApF-4I9T=f|a_J0PZ8T60Qd zy?WKVddbI=2!Ycqm7OY1#25|n*=(`e0@Ng#k$%f=1X<FPZ+{R9? zjeD^lS-N2Vr4X-lIr78|uEL_~QMbS~O`ZPQ;Q)m?%Ae0CWY#Y|6SAe5*gq6&Rd=I@ z?zr2~-Eulv{kTpk`uHljO?qP@Wi7_YX{xMxV5RKnEet0d>HjNG5)`hz5lUWP4>aYL zlQ$s5Ch6h6v`_o}P@p5TbRjgNmA^nLQ&L{E#NA0Lr8l!vpTNh_$In&?W@?wi)Bmjf zCB^ussOs-0hZ9*;O9r-Z_hpZ1y2@vRKxuCV2ihK>n8T6p2aV)Rn^=>?!?j0C47cGYc;*iDbdoPxTsX(;XnhK zP)UWvGaR+zqD>smDCbqR2FI`#lYx=|WvWK?IHGMks3*-DsFsxIgDB@W+8jVC5rW4m zTqyo9Le}Ud$^I*HvKqgs8qm){v8+@};go8S*#CRFMqts2gXop6M-GeT8!F*%RssAd z=dJe02bv5vu#GVBQC(hOVAYgyLFA;2-_SG0L}J7XB;_`~%Nyz~nBnfomdb9RO~^(o zPm5KTi;*%+#YNVo#P`Z?l)s*u+#S-UM?Y8#L?BzuKS&;C|QC7k`?k`s>L*A&_CiKJHHgBhCWY5&6?TJAL%; zh@nR+(N3YH_X``YC3}^j5eitI0@<=T@)g!LQE%m>1czTp>V5r2r955Dj&+zcS|13F z6o&tN#H_euUf@g-Weznd{5I~5f)&jag-B8%&F%JV`*@>I!vtCy`VGySJtnX>R3Pml7p6TWgW>)m%z)Z{zj|M)3z! z7nVc}%n>dl_rIrZS1ZN+r)GrVO-0Itb2-Mfab2?}#HjcH*zRVZ#cksAA=NFl<)5I- z1<<)lDv@Z|q0T7e-OGM6*TEva@YmzZz$j-%lhi>|a1Vhp3nXAT;8Zj`K6aKiJ>v?X zkdXtF@~%Z{t|olK@1)Zi(U~wm6X(d|5H2La!@3QooIg$yM$^(dah=QRBC({FY2Y#d ziOceYT7R2?@y87976mzxg!73@tnB{{#4$NCLbC# zb7NeNZxV6RWoXwIU9F{tzXXRu29eI1*kzM{bs2~yN8}>hy+zauN$g*w)2SE};=q&@ zwUru{4~E075!8w{4IGjmi0zpV0qX<18o?Nah+I)2REL3}){tjbD5k01(>VY{{|cx5 z;t!2nxAWb%^79q8e_^UgPvaC%OW=%2;r^G`e~Pj2F6@M{0BXymM&cru)n97rR8Y9W zzoea@NR2>7mr_GlTXeG)`Y1U%rI?dTvR1uQqyxlUf;DcW; zxNuZ#ySz2zyvr$n88cHpDyyF4g*1)$kZSybQr?=9VU!;s*HAzp*Xt1hRafvCvf;Yhp{VV~<6nv>*^fq?MONy`mJ8Y=OCZ z)a^)_U+0@Fs!L(s2Mt?&>OjT7qOsOhi)=!qkepd=UJWpYD*3wv9*~$pOLt(`3n5oq zb5r!MS-D|w3K5*rYuf@-7<7_hy+$yh8SuDfk6Q+Pjg4S;k*$U@ME%I-sdnQQ(VQJ# zJDr^AUr{bw$SJ2bPBR}cf}xc~Wg7bNn|jVJ9H^&NcCu`(!K9a8!Z8zr|1muY_mdJkpLdlgFtl&L3vyvuA1Of zX%y+qzzX@MKv;ec{K9BND{zfk2_I#0mK8L{JtA*c-eW^pY9m2;S|Tn!%9{~f(_)4z zYReM@$UIG(cwU9ASW9pRm)H6b=ZL(N{brVBBNJf~3@3fDi5N_gYNirwXX}e^&-hu+ zv~OFZ^z|?d$bH673CP2?PajcqgHP>mIah?Li6#krG*t-}l8GePGH1`FWHNm7FQ$wW zd&4NyU2z-jj`8IJ#|7kVKWjlMw0>*L5}8E`P6AydNtN~9fPm%)M?SWV*n~ZL{g7MUPIPA78fMc`2_Kx1gx9 z%?Tgp=QNu%3??RM(Vz$41!Q{@Zg-f-Cg7HB{d9&7-8fKTGz64q=5unxj3kqOHC!H} zGYxqV?sJO?#K7@4N3sXkVOt+vjHuf?k>0U6ByMi{exZ}EC*=D6nN4NX=&!Revdf9m zcv=(S6ggk5?U8^sApq7iY@s4FE4zPBK-pwICy-q4Q7f86^?ja}8_xZNdPR(K$P^fE zAEsH97IQKyPU43mTdkPL#%*N;rC-_4M=R?BVF^EpCyVNm54S^O&Txp^f$(yeF&iEx5Q$C;CCM+Vlch{C87CBFefHR0Vahm*q z$N8X`J_-@9L!4XhFSM1-YbVJq^ys2u;umhKzl1|@HZy_#!wQsYrzRt9bB=(w1WYr_ zh>18{xyrb_dg+|Ete@oYEZPTkDco>@Mpk~@5`yWFC9$IgCe(({Fu$$CaEd)Yu1ryX zfQ6Gz{CJwvGd2W*^iEiz`^E)@&TSii@FCm}VHe6x3$u(!nB>0i^B;%ki!l_PI0(VT zVbJO)=So?*fgHG2>1~s0`lwm}@YF^uCFIvHQ61^4O+!E%Y=#!@B%-3`46bTQvOCa? zev>oaPbA#6_=Ym^v#_AHg4~aDwu>kq`kersQ`|M`vWxaiSRS?RRB%wcf{EtTlxDrw zKk8Q_@$(4!yhHTBC`#M1eBK7rfFljs7u2gnCTk1w$VGG5)xlDM7{EfMxpy?nA^Q6} znIh#Rn2fHsn#-@iEf(MrX?~AO=@O6JAj_e|^R^kzT}9v!-Zm z6A!jRp48^Plt#|L>sC zx^&JXt)gQaR`V{K#nvN%(8J}KQKAY$57N3=<2F4(&)!^cew#q3wO{vfhgQGSq<0Eo zD1h3wyfdLZqaA%!KVN1N>a(72Z0te<>W?ook#=4;t%GEP*3`i$WwaT)OX+kU!%M)G zJc=aj7Z!+wHSnco4xhu}uJRpgp-raHey1w9|0^q_K*t=awm0zYxcGzOdcLWM{f?Wp zSOLoc+R#@oS^lVZxPUvLj80*de1D@{$TIC_kS}cx&-X>m%RI5IREbDf zF;gk?nz*sdv@T~z=7Yl5&!X-VzH?=tSoSbfr}dgYGF$zllBulQd4oc?)ybAxRkmANmXXrfn>2% z;)r+iaX+*x{0P4~NQO_{U95UrzgW|jT&X&t2wzW~AT_sYdreKVSl~>9-_hOY!5HBu z0)7RHVu{mzN|+DM+Z9k(rpeyyJb#`# zwx_@Amqy9?SAFcKCgwalGHG3e={M)lg@%2d((t1aO-wH%`9_u!^|5gU%z5Q%aYg^q zqacHRy;y8zl6q%_>Zn^s^PnoMV)c~IaWJIAnw7{tIOp=Y0?>i&$Ow~XvhHxSyXqb7 zJ~rxuRycLaRL{pgWoCd+@;2B<+OM0+IP+~enwM2srRrcoRqDuVc}L@yR@=7=!NNY# z(a4W=@4*g5&wd<3rH87h;23AZBNQM*VISJzi6OR=S+EHlLwy-6~7V~P5hx(-{#jqeb+r&t&7jiXIswonY3`K7YEWv2~ zg0fmspB<2s`LKPH;`y*$o2p*vH)FSrHJWYoo%T!tv>GWj8O=|KtsF8BbO)O&{odI7 zMmq9mVi>PtTqP_Hdws-9SaZb>Vcli(-j-!YZaDk9s`83h<%OD7r1xkH^JTG-iKK@q zuZYxEdKuDNvCr|rpL<2Nq38P_vG;|(#62T?2WsGKqOKXnazWo$lc=9}7?t!_+rs#l z#NaalKoZ6#YUO@wLUA*d)d=Z!@--LEN{diD%NWOjvN<Qd4Cobnu<22$-!OaW#7=Mi@UTEGgS8b%|-r2*oOFqebc|C zZ>@$T-!eaaWtmeLjChUkR%cu65URMpD?T0-XU0ACJ>TeL>8@}{T46m-UK^f0Qm&mf z5K?EdLl>cTeC^!mNGm=X1=dgI<9d_dZrvOGv`T$X=gvoX6-jy1{U6E7(Cj^%mH}Vk zCA)>Ag@fcL)>gZYG7-CWy>oR`yyLLZ0gnfxZ@RB1gBJhVAAjE8zkPV$w*+xjV$@>^ zwxPlnKRNYMgQjJ-z-xiQS58(NuL2(3{WW_oqw(?f59NeMUwd`uZCUS2=X6jy@eG?? z7Cg5>bgw@e*8x12=57tDmbSS)e{Z&S!_e-LJJ~0gLFf>vmt!VdOt{PwAlw3DXI<7K zRgS?M`#4`CIe7eg%llBp<*A~ILbY%EcfgV&;2 zIUKI>thmTMkfS04jXO(tr(V02BP6G@=%+&9Q-62lzBaQ1*KhZDwR*~rl`+PI!#itX zq$z-o1PiIZ2af@ua>Xc7<+NDG&N?`2W}C5ebZ zQ-U;<5WvD7jYa-BfC;h=X6QcvTZcWQBE)7S7f1t}gsr9WKLACG!)Q2wrmq?Pe*kpS ze>s6P@JYm4E=I$b>TvG>FdBZ(g3>}VVhAXNcn8n=ke{8+DTqp>R1@G+v(?OigB$-w zSp4Yn{u~2;JnLvr{Z;a|-NhUD1;NNvXVCn%ndXj2aI)t?xK;01YQS0vQH`%Vv`4!` z&)FjCqCz`lyCbhr+%MEckP~#RFlzYXhrn?7(JCl@Qj&H6dDqMDgd=_jvu-88gVcB% zv+lY_H7nw?0qq}#q>#lO)zIZSh>rJDs1MEuqAj^Q14ySOga zlW!l6t;6zXO`I6V?;MU9z`a9ja798%q0FTX^1<0ue>4{`JpT`(zr(jx;yXYz+)JPy zPdv7m)0c7=40**T)DHqqTzHiR6=*#?*mgYrY->cxHyU{q{Yn`4JMrNhyks{H95rhQ z-Nd;3vmx^1ieYLEw*OUvw__3a@5}5@Wz~CjNo|o^a`Ymi!mNM7$EJU4iMfUSPR87O zA3FIC2bEXOH~EIlAI>XeyX@?*6@-S*7lx_JEe?0jR(R6wx*V?mS!Wg2D_j{4B}Y6m zOmrYi(UptEluh&gJffWEs>6EyX@WccpduzPu=G5OJZkVKsQu1W*S4DN`h&X*nFD(^ z%SXkZPUo!qn?Gn@VRag0N zL(iLS-XxM)?`%Q`vZ9}jdNlt356#V)IqVYPwi z1`is|I%Vp>t3$4;lceSgnq|VMy}^A(v@7C2)!PM7KLKq|xB6_yVI9oZI*nIc4=n#S zo9ltson1Niji*K+u@8l^;l;X!G<5vZZynEeY4;^?c?kE_ytIv$Y}2+m?LJ*`zwq^| zf^Zxfdc8MD)4nFgX|?sY(x|!m&}a4N7`rh0c*Q@D5RdoAHnZK5wn)iN3hVwvyxq8E zOQPXY>Y9C?BwQ)n{g=08>iS(JV)w2oyZxW-UiuL>)TD|5pGIOd@>Rd|lG4YQ=NDqi z%*;d_`ks|f$GcZtd~tF8%GhI*iZ`fFUum+RvOi72HMag3-4g%9-D8b4Rs)MG?=NxF zCWMMcVZ~~zz1f+vcd?`V+7o#8wr)Vn|49VtlH+>e`1$#9FHN&;?W|p!A^A}Yoos%V ztWKvA{x9_~Aco`#leWQ@h?^t{-=hvo`2iKvuy0%61ucrr3eln(Fy82tp2zD-p@zYD=ng}h(aD0n zI5q@tmfcI`0X++bL7+!0RkW)n^}eQL`0k6tzD%dDWLs-D=yFe>?-1L}{x8m%o^>cq zBsv9ylzr3rGy2yG`Zi^P-QC@-U3_nD{+|E#t_O+Id&gubdfSmU()?FM!4-ovTX0}I zNzwqgc7QIoI#xmV09pIK={e5tO2&)#jg3-)D+WQd2rfK{z>U?NF~r|^0wPAn9hCTm#XauSP1Sd*8K~KCQ8S%h zmHoa&F>@n=RB`-uVGfxzH&UuwYw1n(VpqV>R@0aMN=IilOnIHkzrb_0SYISV5{7bi z7_i@~skk#c+e_T~^AWgfh`;lJmnPqd7gP)0Ti@+`=Hoi$L9!0ZwtyK(RqU!-cI4&z z1JrsDvI?RpG{=~vy>L;n#eTiZ<@RT-Mpa;pDbeO7ZC(H7jcFm4SxFMqit(NXerCc`QCWa{d^WC#}$XV z!Ux+t^KNLW_|ysiRXa1!ANPNV$h;rRisY^uiUq;#gzfq+>5rJtkGKH(1m3OXMG@iA zH}48?GK)`Y-T#66k=$pKHV6FV@}B)ZEc=ly^7EPfBZqZ!4BwCBew(ya-?Yxdn&01H zrJctOs^PRi_bys`4&>$pB+SK_f#DKY`dzgar{)!yrWMkj?>6ur{a0KV`gbTJ=A3ba zlGSnk#vzWqj<@qCIaL0|a5pE2bmCpo=i6yDta`{HOAw*uExY9!b!TilXGp>f?nO;bQJb!gP$y3{74+orjZADN?pOOkt-rt=si|Il94 znRtB_t>i1>gaBKy?;x9f$EH5s9I<>hiMwoZG?`l=EkGdsy$u?+uGQ*!@Zvb!ypEJt ztLxYo+e7jHN~G9cE0)VDD{M1rlf`V)8lboVt9NF|Mkr6OSAFxhF*Q7a$rOY8W_(4V zCt&@wU=dA+ayG@D%|FC@5!4lVrjzIXSKtL1O;OG0Wm>E6YT$13J-I6>OyH8kLg54R zTnY((AWC%zyMe!4WX=8A`Rd>@1_!U^+^`7#h;J%q?@ z|1L!N)|Ymr%++R(#D`8cp5g&ScYBf_H=?~@E2FMP&9AJqe|_pa>R%gQJBTxU?dWR! z#AHC5#dd9NL;9bg`cfWRDGr_i4Ss{rtQ64S-(I=@`FPYA<;B)u=fr{eczjXYQZ^#F z6l`7!9liJA02m;c9{r)#!$8%#H4Hca~FeH$@r!eu?hk>p&aWb=F*{XDY|K zi^H+i-H`7jHkhTBJGyw66t9<0r~_Z~HlG;V4k!mj36DOOCimH>XgzxOF-o-nfG zr)7aS`OawlSxFdfk9YG#ZAO!fBwjDPsQt;>+dFHai1PrB&i;pAi{Kw!yqa@mk2oLO z6!pmD`r@Mc;yE#5u&Asd&K`+Z3kaqQM*hNSJ_Kz=a+7&H|Mgv*B!V`;A-;+1)U-M| zyLg{kxX?Z6y#u+keT%Jh*2Jbdx&L@_x@CS`YJJSWT=UMZI=I$-?vkL1^H}D0*B!{G z^*?@9XYYN5hG6GN*g>gx&A85H@?TWlxIMb>zWHg|Iu1zL*7Mz}_zq(Fj=>KNmY>D; z&5zS)DNBIL_sPNl#`O3RVdbasA~UJciYF>jP=#YA2dm)%7p8>&+I!bAVd{FlF#Yi) zU76VE>fP#Vp}4~NKiVhvwg}oSIrhl-92N|Y?sCrVa@t(In`Ob2{c*$jr|pau2W$EQ z*P-PAnsq()5CRn&8f$3nF=iQ;CQCr=2)gmAHB5H%IYuvFfT)z1u1R!uoTh>?M1_D$sVwL#M}UG6w6_)|8=1Nx**&?DOts8FqTB zU{aoA{t|f#Punp9!M7lJU_`*oe$Od57`VxmG}z>*aK1kF_te4x+A&VgK90lw>gO}( zxrX}6qz&I<2z<$A#A%ad#f>H3RpA>h++s-3!ng6!W^UqqkW&+4tR8GV%}r!7t5?PG zthU(JAoKg~dN#<-3!H&H9_5*fwn4{+m@KEYncag_xnW+ROF?TNazu)UktoG85~Q& zKG%#$4yg_Dv|c$}x=g9=jNKRRklQwIE0TUT7rRZeVeps_Rt=0UYFUE|ypLGs>=FAE ztq8;BiUV9(svO?->u>BElBXh@T!wm+=03O_n|m9ttoJ z??}Xlf`BMPf`Gt)fPnC_V>LClGnKG1wsv@rea({A9F|3~zn?SSl2mj$j=iQf^zP=# zXXW@qAg=~|xBsp@-{oI{xN5~M3cV00&Y!<>kQLXuzZ&nAeOp!dxAU;v zmMvn?CDdlq<+0Nxs9?I$*8Osl1vF)g*n6y5-@i@`7>E^|qZ{E1k=E#^}vngHQ-Fj_w=jy`rIImn0IkJ4? z)}7-;LR-jj0-Z+mQfd8QLy_C?TzEX;{%v@iP#&5_0@4+FA8rgag^10P4X^|!|L=p2 z?f-wsu>IdhH9r9ZrHW)hxGd%m%1v!Z1}GJn0t8vi9^xM22aPLjS%YjhCN4Wz%(ngjHIsjW%dmOWkupA-tCnF4 zsgHb9X9y@uv@cU>Dn&}Egzq;ME_pxCLt7k+-3BcACQfu>@xu zfw>(0$^ugb3+tjs4*DqJoV-&my28{qW@SNv6Q3TtN;*s-bp3EfAS6&3<$JvC=i=)RO}d*fn>*#*K^RL$HozSNf9rwmz3nLO8pkDQRROV>yFf;-1ZInNv#5@u|;0%KP4&T<4a__ zGB_RDhkl__s?z2aailWVFh0|wBmVjlME%Di-WKtB=M9;j!;}2)_$f_tj1dTrZHBl&$|GZgL(R|MQqjzBWU~F1Lyt`rYZ+3Tj zo9$<+Ta6f^#=ST&w&7g-tYQYHMQrKK}f* zq%tS(UJ$H0b{=`~ON=ZKT4|q!jF@GuE}V^^p-(>0Q}1p{tPQF1FJFHM1$I-o+0Q%Z z&t8e5aQxAlr6~J|f^h0^SS=3Evf0MTzqmXevy_P2rwVUV2PPjcMD@utd8B6!8s*?v zc2oj|p_78dfJKmz!(l`W`IrN$9S1ZG(qjUqtz3o9njJpuA{P|xbRtZWL}65`$|3hm z0m9Wek5rXa40VV@_YWRgwrz`fs;M9O66klemP4v0d-xR}H;CKxG5=1rnYtcMWp!YF z#*`&sFUJV@{qSWxHGo<}C#uuDl+G-tFkta9C`GHP1JKEeC|^mX%mi^jehp_qF!+eq zXR4j)S-@8Sz{oYd!h z1elxL7yxLr6J~gIRd~;d!!KfrClw;-aI5!iXx`uNKajvJeE;(&@Lz8THKVk7&7(x8iarEa=!JsALSiX=mmEUDp39KNAICVA11$-X-3ezuo zG+P3?EFblu>OXlXR2W@r{N_jbxQRh~T~%>7Lcj(%K8DD^F?H-qsGsgj%JKxCy36M% z>*eAcpkGV5V!0@GEyMCnmQWk0QiUR)lggCum7S`7{1WTT*hFBdbj2b*95bKNInh%D z!A7mAz?(G%wMVFJFSYk1K%%LXyuJN>!DrxW4e`kX)VPker*LQI*WIwxqH~G`yT?&n zBo9*HdtSU$TLujST>1XA&&tv@MzuLHb zhE;x2S^exhN)GXASDrSo52|iZGnBR8o_yg!;~_+9)M6EDP`AFoDr>e*0{eG?f)LDJ0L0CrxDMfZ1IDTGobDXY2!t97bq22qXt{^95F)gP z+jDET%%r%C|4(ws&3%K>2gIzTa)VGsU{vjcieW3Aep%C%a>3~r&Ac<|WL^H8Sym!Vwzi*TW9j#vbGFWZYyWM(kz!c%&d=?%EZ zlAPTF99XI`yCfe@99%q|d0JlxvIvp~cI|><+S4QK4Kg2HS$8GtB>G21Z3;pbxde zQ1p=?o;U`OZ!HG#|2K;JUvk!HP;spglzS{l=;ud}Q#~vQt{Ml#P)7(A8VAne0<~9S zfFi(`$?>4vdO}cl9Y54`A{bJDi0W~O-|z1$@DLD9*boqO|H~DONRs~#JrbBJE0l0H U_)-aKG7ofJPYG9F_)hzO0l<;c;{X5v diff --git a/src/jalview/bin/AppletParams.java b/src/jalview/bin/AppletParams.java index 8beee03..01c910d 100644 --- a/src/jalview/bin/AppletParams.java +++ b/src/jalview/bin/AppletParams.java @@ -2,6 +2,7 @@ package jalview.bin; import java.util.HashMap; import java.util.Map; +import java.util.Vector; /** * Collection of all known applet tags from JalviewLite @@ -97,6 +98,282 @@ public class AppletParams extends HashMap put("_code", code); } + public AppletParams() + { + // TODO Auto-generated constructor stub + } + + public static AppletParams getAppletParams(String[] args, + Vector vargs) + { + AppletParams appletParams = new AppletParams(); + String resourcePath = null; + for (int i = args.length; --i > 0;) // > 0 is correct, not >=0 + { + if (args[i].startsWith("name=\"Info.resourcePath\"")) + { + resourcePath = getAttr(args[i], "value"); + if (resourcePath.length() > 0 && !resourcePath.endsWith("/")) + { + resourcePath += "/"; + } + break; + } + } + for (int i = 1; i < args.length; i++) + { + String arg = args[i].trim(); + if (arg.startsWith("name=")) + { + String key = getAttr(arg, "name"); + String value = getAttr(arg, "value"); + String name = key; + switch (name) + { + case "alignpdbfiles": + break; + case "annotationcolour_max": + name = "ANNOTATIONCOLOUR_MAX"; + break; + case "annotationcolour_min": + name = "ANNOTATIONCOLOUR_MIN"; + break; + case "annotations": + value = checkTF(value); + break; + case "application_url": + name = "APPLICATION_URL"; + break; + case "automaticscrolling": + name = "automaticScrolling"; + break; + case "centrecolumnlabels": + break; + case "defaultcolour": + name = "defaultColour"; + break; + case "defaultcolournuc": + name = "defaultColourNuc"; + break; + case "defaultcolourprot": + name = "defaultColourProt"; + break; + case "enablesplitframe": + name = "enableSplitFrame"; + break; + case "externalstructureviewer": + break; + case "features": + value = resourcePath + value; + break; + case "format": + break; + case "heightscale": + name = "heightScale"; + break; + case "hidefeaturegroups": + break; + case "jalviewhelpurl": + break; + case "jnetfile": + value = resourcePath + value; + break; + case "jpredfile": + value = resourcePath + value; + break; + case "label": + break; + case "linklabel_": + name = "linkLabel_"; + break; + case "linklabel_1": + name = "linkLabel_1"; + break; + case "linkurl_": + name = "linkURL_"; + break; + case "nojmol": + break; + case "normaliselogo": + name = "normaliseLogo"; + break; + case "normalisesequencelogo": + name = "normaliseSequenceLogo"; + break; + case "oninit": + break; + case "pdbfile": + name = "PDBFILE"; + break; + case "pdbseq": + name = "PDBSEQ"; + break; + case "relaxedidmatch": + break; + case "resolvetocodebase": + break; + case "rgb": + name = "RGB"; + break; + case "scaleproteinascdna": + name = "scaleProteinAsCdna"; + break; + case "scorefile": + name = "scoreFile"; + value = resourcePath + value; + break; + case "separator": + break; + case "sequence": + break; + case "sortby": + name = "sortBy"; + break; + case "sortbytree": + value = checkTF(value); + key = null; // taken care of by Jalview + break; + case "tree": + case "treefile": + name = "tree"; + value = resourcePath + value; + key = null; // taken care of by Jalview + break; + case "uppercase": + name = "upperCase"; + break; + case "userdefinedcolour": + name = "userDefinedColour"; + break; + case "widthscale": + name = "widthScale"; + break; + case "windowheight": + name = "windowHeight"; + break; + case "windowwidth": + name = "windowWidth"; + break; + case "wrap": + break; + + // cases not handled in doc/parameters.xlsx + case "debug": + value = checkTF(value); + break; + case "file": + name = "open"; + value = resourcePath + value; + break; + case "file2": + value = resourcePath + value; + break; + case "embedded": + value = checkTF(value); + break; + case "showannotation": + name = "SHOW_ANNOTATIONS"; + value = checkTF(value); + break; + case "showbutton": + value = checkTF(value); + break; + case "showconsensus": + name = "SHOW_CONSENSUS_LOGO"; + value = checkTF(value); + break; + case "showconsensushistogram": + name = "SHOW_CONSENSUS_HISTOGRAM"; + value = checkTF(value); + break; + case "showconservation": + name = "SHOW_CONSERVATION"; + value = checkTF(value); + break; + case "showfeaturegroups": + value = checkTF(value); + break; + case "showfeaturesettings": + name = "showFeatureSettings"; + value = checkTF(value); + break; + case "showfullid": + name = "showFullId"; + value = checkTF(value); + break; + case "showgroupconsensus": + name = "SHOW_GROUP_CONSENSUS"; + value = checkTF(value); + break; + case "showgroupconservation": + name = "SHOW_GROUP_CONSERVATION"; + value = checkTF(value); + break; + case "showoccupancy": + name = "SHOW_OCCUPANCY"; + value = checkTF(value); + break; + case "showquality": + name = "SHOW_QUALITY"; + value = checkTF(value); + break; + case "showsequencelogo": + name = "showSequenceLogo"; + value = checkTF(value); + break; + case "showtreebootstraps": + name = "showTreeBootstraps"; + value = checkTF(value); + break; + case "showtreedistances": + name = "showTreeDistances"; + value = checkTF(value); + break; + case "showunconserved": + name = "showUnconserved"; + value = checkTF(value); + break; + case "showunlinkedtreenodes": + name = "showUnlinkedTreeNodes"; + value = checkTF(value); + break; + default: + break; + } + if (value != null) + { + vargs.add(name); + if (value != "true") + { + vargs.add(value); + } + } + if (value == null) + { + value = "false"; + } + System.out.println("AppletParams name=" + name + " value=" + value); + Cache.setPropertyNoSave(name, value); + if (key != null) + { + appletParams.put(key, value); + } + } + } + return appletParams; + } + + /** + * Check for a single-argument option. + * + * @param value + * @return "true" or null + */ + private static String checkTF(String value) + { + return (value.toLowerCase() == "true" ? "true" : null); + } + /** * Crude applet innerHTML parser * @@ -104,7 +381,7 @@ public class AppletParams extends HashMap * @param attr * @return */ - private String getAttr(String tag, String attr) + private static String getAttr(String tag, String attr) { int pt = tag.indexOf(attr + "=\""); if (pt < 0) diff --git a/src/jalview/bin/ArgsParser.java b/src/jalview/bin/ArgsParser.java index 2c6cea7..4c2a6c0 100644 --- a/src/jalview/bin/ArgsParser.java +++ b/src/jalview/bin/ArgsParser.java @@ -83,17 +83,34 @@ public class ArgsParser private Vector vargs = null; + private boolean isApplet; + + private AppletParams appletParams; + + public boolean isApplet() + { + return isApplet; + } + public ArgsParser(String[] args) { vargs = new Vector<>(); - for (int i = 0; i < args.length; i++) + isApplet = (args.length > 0 && args[0].startsWith("