From e2ed744479eca76e9968cac9b82d58c18c1d3303 Mon Sep 17 00:00:00 2001 From: simon Date: Sat, 11 Nov 2017 14:34:33 -0500 Subject: [PATCH] Added Random number generator --- .../net/simon987/cubotplugin/CubotLidar.java | 2 +- Plugin Misc HW/plugin.properties | 3 ++ .../simon987/mischwplugin/MiscHWPlugin.java | 31 ++++++++++++ .../mischwplugin/RandomNumberGenerator.java | 44 ++++++++++++++++++ .../event/CpuInitialisationListener.java | 23 +++++++++ Server/src/net/simon987/server/Main.java | 11 +++-- config.properties | 4 +- plugins/Cubot.jar | Bin 16609 -> 17581 bytes plugins/Plant.jar | Bin 5651 -> 5677 bytes 9 files changed, 110 insertions(+), 8 deletions(-) create mode 100644 Plugin Misc HW/plugin.properties create mode 100644 Plugin Misc HW/src/net/simon987/mischwplugin/MiscHWPlugin.java create mode 100644 Plugin Misc HW/src/net/simon987/mischwplugin/RandomNumberGenerator.java create mode 100644 Plugin Misc HW/src/net/simon987/mischwplugin/event/CpuInitialisationListener.java diff --git a/Plugin Cubot/src/net/simon987/cubotplugin/CubotLidar.java b/Plugin Cubot/src/net/simon987/cubotplugin/CubotLidar.java index 23c88c5..340c970 100644 --- a/Plugin Cubot/src/net/simon987/cubotplugin/CubotLidar.java +++ b/Plugin Cubot/src/net/simon987/cubotplugin/CubotLidar.java @@ -64,7 +64,7 @@ public class CubotLidar extends CpuHardware implements JSONSerialisable { //Write to memory byte[] mem = getCpu().getMemory().getBytes(); - int counter = 0; //todo get memory address from config/constant + int counter = MEMORY_PATH_START; if (nodes != null) { diff --git a/Plugin Misc HW/plugin.properties b/Plugin Misc HW/plugin.properties new file mode 100644 index 0000000..38fc991 --- /dev/null +++ b/Plugin Misc HW/plugin.properties @@ -0,0 +1,3 @@ +classpath=net.simon987.mischwplugin.MiscHWPlugin +name=Misc HW Plugin +version=1.0 \ No newline at end of file diff --git a/Plugin Misc HW/src/net/simon987/mischwplugin/MiscHWPlugin.java b/Plugin Misc HW/src/net/simon987/mischwplugin/MiscHWPlugin.java new file mode 100644 index 0000000..cc98376 --- /dev/null +++ b/Plugin Misc HW/src/net/simon987/mischwplugin/MiscHWPlugin.java @@ -0,0 +1,31 @@ +package net.simon987.mischwplugin; + +import net.simon987.mischwplugin.event.CpuInitialisationListener; +import net.simon987.server.assembly.CpuHardware; +import net.simon987.server.io.CpuHardwareDeserializer; +import net.simon987.server.logging.LogManager; +import net.simon987.server.plugin.ServerPlugin; +import org.json.simple.JSONObject; + +public class MiscHWPlugin extends ServerPlugin implements CpuHardwareDeserializer { + + + @Override + public void init() { + listeners.add(new CpuInitialisationListener()); + + LogManager.LOGGER.info("Initialised Misc Hardware Plugin"); + } + + @Override + public CpuHardware deserializeHardware(JSONObject hwJson) { + int hwid = (int) (long) hwJson.get("hwid"); + + switch (hwid) { + case RandomNumberGenerator.HWID: + return RandomNumberGenerator.deserialize(hwJson); + } + + return null; + } +} diff --git a/Plugin Misc HW/src/net/simon987/mischwplugin/RandomNumberGenerator.java b/Plugin Misc HW/src/net/simon987/mischwplugin/RandomNumberGenerator.java new file mode 100644 index 0000000..9efd360 --- /dev/null +++ b/Plugin Misc HW/src/net/simon987/mischwplugin/RandomNumberGenerator.java @@ -0,0 +1,44 @@ +package net.simon987.mischwplugin; + +import net.simon987.server.assembly.CpuHardware; +import net.simon987.server.assembly.Status; +import org.json.simple.JSONObject; + +import java.util.Random; + +public class RandomNumberGenerator extends CpuHardware { + + public static final char HWID = 0x0007; + + public static final char DEFAULT_ADDRESS = 0x0007; + + private Random random; + + public RandomNumberGenerator() { + random = new Random(); + } + + @Override + public void handleInterrupt(Status status) { + + getCpu().getRegisterSet().getRegister("B").setValue(random.nextInt(0xFFFF)); + + } + + @Override + public char getId() { + return HWID; + } + + @Override + public JSONObject serialise() { + JSONObject json = new JSONObject(); + json.put("hwid", (int) HWID); + + return json; + } + + public static RandomNumberGenerator deserialize(JSONObject hwJSON) { + return new RandomNumberGenerator(); + } +} diff --git a/Plugin Misc HW/src/net/simon987/mischwplugin/event/CpuInitialisationListener.java b/Plugin Misc HW/src/net/simon987/mischwplugin/event/CpuInitialisationListener.java new file mode 100644 index 0000000..86bc1ee --- /dev/null +++ b/Plugin Misc HW/src/net/simon987/mischwplugin/event/CpuInitialisationListener.java @@ -0,0 +1,23 @@ +package net.simon987.mischwplugin.event; + +import net.simon987.mischwplugin.RandomNumberGenerator; +import net.simon987.server.assembly.CPU; +import net.simon987.server.event.CpuInitialisationEvent; +import net.simon987.server.event.GameEvent; +import net.simon987.server.event.GameEventListener; + +public class CpuInitialisationListener implements GameEventListener { + + @Override + public Class getListenedEventType() { + return CpuInitialisationEvent.class; + } + + @Override + public void handle(GameEvent event) { + + CPU cpu = (CPU) event.getSource(); + + cpu.attachHardware(new RandomNumberGenerator(), RandomNumberGenerator.DEFAULT_ADDRESS); + } +} \ No newline at end of file diff --git a/Server/src/net/simon987/server/Main.java b/Server/src/net/simon987/server/Main.java index e90c352..d877a68 100644 --- a/Server/src/net/simon987/server/Main.java +++ b/Server/src/net/simon987/server/Main.java @@ -20,10 +20,15 @@ public class Main { * - Instruction set * - */ + //TODO: Random number generator + //TODO: Clock hardware + //TODO: Floppy drive hardware (and item?) + //TODO: LEA instruction + //TODO: NOT instruction + //TODO: Battery Hardware //--------------------------------- - //TODO: Random number generator //TODO: favicon //TODO: Email verification //TODO: Real account page @@ -35,9 +40,6 @@ public class Main { * - INT/INTO instruction * - IRET instruction */ - //TODO: Clock hardware - //TODO: Floppy drive hardware (and item?) - //TODO: LEA instruction //TODO: XCHG instruction //TODO: SAL/SAR instruction //TODO: ROL/ROR/RCL/RCR instruction @@ -56,7 +58,6 @@ public class Main { //TODO: Multiple Biomass style (and yield, rarity) //TODO: Clean sprites //TODO: Auto-resize - //TODO: Battery Hardware LogManager.initialize(); diff --git a/config.properties b/config.properties index e33a517..fe03606 100644 --- a/config.properties +++ b/config.properties @@ -7,9 +7,9 @@ mysql_url=jdbc:mysql://localhost:3306/mar?useSSL=false save_interval=10 # Web server port webSocket_port=8887 -webSocket_host=localhost +webSocket_host=0.0.0.0 -use_secure_webSocket=1 +use_secure_webSocket=0 cert_path=certificates # ---------------------------------------------- diff --git a/plugins/Cubot.jar b/plugins/Cubot.jar index 1b084539e8d63e79f1a73e8e686422860113c93e..b9c2743a728dc1591b78a36f0d94a2ef76c1e3e5 100644 GIT binary patch literal 17581 zcma)j1#leMwxpPunVFd_S490s^9Qww4C^Ex>@lfb2|N7~jT$fE51gRq#JY{JP57 z($?ONn~Rh2zh8>|*Gr9EjqF_&(A^scf*8#K}g!UncBJ7 zJ9#n~+ZZ}Kr>JSGNJ)Z_FO`GmFS2b2l>~%Dc~m5szzI{b zI+}qrZ+#zn-;v(-xz2Yz-Kn>3dp@^!YTGbp2~7s-OG|2aSUq0few)g5zIo{Je*@of zeI+7^mEjF)r6;1D`<5JTIVr+KYlOg!eA|i|NLK*q-d5LZ9tDyr;zEMj*Fln+a6Bvp z2I}M3gm0~ZY3UKy!3oyMxW~tjbWO~Ua>Xp~B;QL3m*4h%0}XV7#l=i^zzuCcQ~53v zhs@3pP+fMKFUukci{87rAK(Q&lxqJzvCFtROeg0?Yx3|MWeS>=oxrop(luT*9HC&C~(vUr$3{EJ}iFRyaojJ7H@ zMP0@A!LvP??Odc+)yT*M2Y?t@;c}P)LqH-yq)=3Rq_j-IlF4m^P;1F|`KuGYHG|=! zLqo_wtER(!5MLH^vc0q*2hNkMHIQ~tNUDvA48VuZ3ufUT#6;;HREI0!x@fG%I&8GT zNq)5UA>Gl2-rn`*N#D2LIV>)9jlBr6Y2ql+_>4cK)OEQJFVZDp2bhRBxTa6m)%py2 zVvR2BigZw~wPa&;(kX=#-56vSo@=2x06U5gUxr12a?>5+IWiZ0(|5!J6Ela9OBGKn z#NFjxk?SY7D9tTiD1V7mpL2Q=GXR;xx6#tyayiclAg*Ca>HR+PiSvL^O5p&O3jf?@f2k1zT zkcH7n1Ou(|jWXJ8D8llyZFNz~Hx8AwIB%eem?g_$#&tYhtkd{$4=&*e*+gX|D&IAY zSS7F@Lh*0fL{3__NOBiA2EP{P-Nm|le0*01UZh?Av_&A(|a zM(xQR^(U?AHOR2wTR%#F_ff-H=^w0A~ZP9H6~v2D2%*2&>BF- zsl+FBSU3+dM}p(95DblsL(%3q9Gv5$^k4)7kcfkGHwWh9u`p_ZV%vo_fpNSlK<%k*V zoo8mT1PoAnm+A{dUXvzEQnD;${-W@5tGr*Hp)l-v^JtV&R1im1JbaNjZz*fR4Y)^- zFDx!TYs6I7YC1p*9v~zFe5F7m{ajIRSXP`dt;GE%sy$hD)My1r){)D>S)K;$r5YVN z5BX~0YzOd~chEE|n37*t#j}}^Pvfc9f2Qd~tDg~yLY zyhDtZFPEGuNt$M2VVqDPHGS}hf#zo{heQ_YwQjgFA zN$nG;{cYaKYYwYwktVmkkr|naGK-fcR$`pr+1s$!UIPzbm{_`t5gPbN1IH`u-aeiz+v`N%dk&}@U`G$=9+70;`@ZTFQO6vZBP00 zjLtk=Y}j&II0EKxL#FECYSBd-wiOYDWKL{LUuNpGG`bgOqs!*InyMlp+|1XRb)&p1 zNrGY-fm34zzsFJw(7i6@vyYs+B}ENuBv23_Q^4!`X&xyziJ0Y;mzYTB7$Frn+1G4r zPbkR0No=vH8s~=fN_`7P0o6%xg{AMSIb%yxNIxoo&o;9lS~WsPZnPHXkoR6!-ctO` zTQi4R>VmG_U~#oPoH%)pqUh)?p)~g6TBKEAPWRfZ5{lxA2jn=`P?!|5=M{7!LXlwH zTKcwOzD~qeT5WIfl!K;;yUe3?T(N9aCHZMe^yFBEv7EpUhNv3ill6%{+!he5+go7f z_W9%Hoeu2V>Kqj1;XTS0K|N07>`K%KkoTbCsctaCIjx~xi>=W0D^J{E^9OAkxH2y7 zeuI@b(4iC?Qd5^idk&3&2B5TQ-2jCEbN>cs1bFvsJtrO*q#BaV^L9A-25$t)pq|3w zfVH#uYJ*yfN@@dJM-}zg3Pyv?z%SL@Y))CV%eU`mttA2Q>a&d*4jc|~4$E+qgNB%O zu+}H5kzR=wpb`6&*ls9ekYxw^BJb1%zCjk#Ne_6lPPyUT5{K6X!73|`iMvEY&RXWj z)Y(J(P^iG)J%Gb3njw(0e2#4&Gafh)>ii?z095VLV0jc^48kL_Y|)#&U3GH$g~#$X zbe}96=Ud7&Y;N&KnmmzxINA(7sHVNf=fuKc3*3_34u~_nW~AFXPl9#EJqPXZJ{?lv z886qh1<(s_7lT}OgjRt!>QEW1(>HE?TyGN1oG{I7*{*L}>{*nF_{*@g6oBuzn*{b7;qWJ-eR%>-X$rcr((Jta_(a{Rgr(+B$fVc#% z6)lvjQjWQ3wy(xyfyupszrhK-Kzs8o7*C&G2j{)YejxZ}BeWtEu;hU7aJkWT%lEL= z#+u>(_Tv^j!1A?pkA$Klp?3tPSS5t1Eb*y5NM1$cU=n^(gt=l*xu~GEY!BlI&8N5k zGLJT0eKw4-AYCD0I4E*mLnWavG19cMv=vl%h-L|`lD4&CM;iPAi-ePYqRToS0`1?%Ihr5xNu|F zWV0+YF*|?rQvIGo;y*Uz&`m`X6ku~kS(m$w0$%@F9B!HQdsXC_L{UBcUCQ~hmN5_e zGYx3f7Dle!P2vnIS*Bic%z6keA9Rc$agR=y40Ww3AlD`ZGq>`_iM7gusGIx}-Mv+O z>GL}>agB-ywf*vUm$v3OvVn~aO=2vX(W6*Z6NLu5FSOyJ()D?;3pPek_RjFZ9^%3n z+<**YTKeWt@4cC?HEeu?%Wx4G zom2=<2?*?Jw2xu~EgobYK{ORRyzsx6R4*gg&Us`3ewmrw;Q*T@$3iN>jP%*=_E~S^et*!!?H)Pi?0})x3Za-hz7%re$8@1xTH4Qhnl! zLA6s@7E3^QUGCUMah3s5FM$IYB@D6SMz((`VMiFqnA!&?$uV5hokw9|?(`s&dR+u@ z*?NtIkGLDv(C^(^hFrK@<#5jSP9kwGkjOgRs{=?B13uzpV1j(#^7aO4>+9`ZD4QWY z;TbAMd5;r`N}TCEQf=MG4}*&k2=_?sCSp6k=+sQbpN7|fyBPUzAb;Q1%mcVi?Wob|R zt~lO#z__RIj9UmXkGM086%l6u3Lc%?C(@$Q8}Tc!Pjo?iJ)$GXS8)_f5S0P?@`}e# zlB&fi#B-qgbq(G#Z$i@qUjE(eSa0C7*8&c9X%}-gQ~`d_U1%2BbkIUcC&KU{6z#84 zD40KrkiJ2QMHp5lJWG?As19EnCjIzE;cds~#y|Q-yE^ArLM{*`Z^WuhmubG-i5)2q|3|dgA(2RAb*r~NCD~qSt^rgP1RXzSjI<&HZ=zB8{32W z@CY>qoaD50GsE{dGgp5|{%6ErG($S7?uPg?%Ow3-!T+ke|8tf}`HwUsV`~1tIi|Kd ziaOdGf(#axIO=RMPN6JY1X97ul6NIWAQlM4`HD$K=@qo`eiL;Bwtmdj%nC(H_k7yW~{aqaMt? zoaR2GLMbP#6RX_F&M3`7NlbClBsUwIK~TCOeKR;wh@upU`|}AJHgvgithHbR&!zd8 z(vfUTO^x-9G;I8Q_a1!YD?N{l0z0UYM+_>x1# zB_w0>8v#*paPs6v2SnpDEXq?@ePNw+rF7NJbtw1woo7LlG9x(eMAMWiqBes)NPm)6mTo+8CbJ=QS^YC<(i+G}Q ziOSLubiuqxMQB>bXdklFQN1MDzc>XZLRZ4nmS#qkW2;4qx)LY#$XHN+cAAZy%UP5G zFdu7$jL($$%C}2mhI-f=>)i$7CvjoQ_vys=JQ$OJc z8q6^{?>-geJ6D8u;t)v26^pUn9%P+E`Gn;+bT715e#Pn%5+e=tn(HeLxSynV#D}1^ zP5y%IDzV?B)k9a8#`!6_i^&wu08!XoxR521DuQZ4V-O_}75O?cdZLwNPZhgnm*`p! z?P=@0iRWa+&?9p(wz2*UGbTC>ZZ^F`aWKSThFn!UD!&+_et|#T#pmY*Tc+i1`e)W zT2Tb+=zLy@#$jBprht$f^4Va6cc!XQ;Drjj)oCg5a~8`s5aEA9EmMZ`g-7r;;m+Z> z!KBYBF0avm=D>MQfRwcLQDEm!amF)sOc3VdnV6YUtV$rNxfIIK+Hr85&9PLSfL^Mn z*;FRZUMH@52IB?FD-bHWAWsoUkctymn)UcXu0blppfv_=E^~sz{CI`HzsIyPRE=?n zedLk!P?fNo`Sf_hmXN(vWFtl}JI|gg;S3J#hr4uURDH}P!udhMEnpYg<0NNJlr4tf z&7_y1zug zKkOz1B)8#rrc)50Rv-vJl;o0>cag-DoL)e94^_?O1cGv%tl-sJ)|0$88%-EHx7*-4 znJ(A$IY5QcX4(iiYKOZwZ3h|T4}Gg6(z@brka?lGyO!JK30k)o=Ap4ce-re6Cvu--=4|=8TB<_0?m|1ngf5}8Te9h9ZHv|>$wH5b8vAw(aY)?2u@CkjyCBSGiSWt*r zs={!5kM59PQd6fFd2)}+1+UQh9!xhMnRkCb*&k}%@_{O!TQa4hl4>5EtR`{DI7ArN zQb0JxC1E70Xv}*L?7}|qn7<%8!sDI*Y}tQBl6IFs6_AUAW(oeHnRtZ$wIg`Rxn(95 z?uiqoWw)i)lICE0GO6)ug=K$O%JaH=&4mzU$Wk2y}-g&AtoTnqf- zb53n4bMK#NBkBL7jsLkZOZazuZu+Yg`dc^E%h2pkU0v>f9<1tY>Ll!BYUpBVZzp5v z>|$zX>h$mBAxG^=8BY}LjfZZs9vdVO2?117IF=l*0+1ezC94KfF+m&;wih^XSqsO& z%ESvxyhUNPSLGj3Tq&8NrulYGX!_(j4U|=@kSt*HkhQ$c+r3=V@sQ{L{s`L(Z2|7P2zMDi^M~IARF+&js?Q5PPcwj z4WmNdZVxS@BsYatI<3*nt)`XBxoK(K{ZZCKB%}Eh0S0d@OYboQH?j9L2Hne6 z%Edf2nw?aW>D-4!l_^p*$QlElmok_FMLw+X8~Z#wDLn2(u@gJhstWDr-ZEd!c=-rv zkP+Jc!%QO~gQh(yr0pC}sd1F{Jq?yHKtNL6B{^jgK)Q~)mSh zC_Y9i7|#PkFaXg7t+sLiP-qNZVZ*$xla~}RS;cEd%vspCs2I{>Y^o+KIfAp~x-kSu zzO;N)7!iNe7@*|gA2R3p*&5)v+zE=HQ%q?8{n?TLj! zNtD4pEc*xI@av-!;p`dLySw?4f%m<#V+}Bey`5G!OPfm`3K$*&P;8XrbLlraLJMtY zmC4};ET2UJExc^3p4T+2EJl#mfXzt07cro7+D1i^fVwvTrA*$4kWb_X3+^h#b{W)7 zc)QiX3W1j&UFUfr_jR+i?^6A!)D7A&3o6XP*Gsh+iAL} zc4JTMI62Fmt9HoNpu0QZ5<5_BBz<~%gle?8FS1IvuC}%r#VDyMhOz4A6k~Xh>FO7| z>_)YDO7~obRXNS}%F`GLHtDE}BAZK0P>D?s)yag+efd%YJ)jzPByt#OqklNpnNdgK zdCEP3>SMKVTWohQEGu^CexF~$4zkDKKS|eL%ZkPc;;6Rcpvazk%mcnvvSD2C@~~1M zTRHi$AOr86ZSaW{`7Nq+Z!#@lpW2U{8+K~ZJn!SH*e;NqbEV=qPxfvpBoNum7tI|y zFQNVJnbz{_-kRxjj^qqA+l+e})XYc>p334&#kjcg9%O9a=&!>#gll=>Q~ZJ#8r#N$ zK6omHTN=mv3RFwVce6YD4ta56gtFPO8wk7nnZ9@zu=(^bYirAAh4erz`muLSqJAUJ z{IS&e1LEe4%dz&(JyQpPg|AujQe`>&%ox?dW$t@?hk|$`OcUH+Sj;5N5>(VBuLx+J z^Uw$j^b-i7pa2J-7iz}w4_R+P^h_Gn*1AHR>1JpSfxY4!ewe0=g}(nxej%ao-8<1T zekQ};|F-4I|IhpTXk+R8A4yPJd0h?djbSCVsx`#CmkbG2iX<#--aK4# zK8*OIV*o%r>yCO|C>&~xbi!oCbWzm*qnfTsaYuC`gG5QLb2_HFuIS+#cy?c_(cwJoJeTqOM%1uQ*5^-KTgb z@Z&-Ap~laKy&HWKHPU#ysPK-@lvDKKxZT#(()Ui;BHm*R7jNYUI?Lt0_#WF7a2D>7 zt9euFWmh}dZ5d1&&t=9{^m(Vb;oRNFQ=78-QL0osZPU#b9ZK^Q-vQ=M>_ENwt1~l4 zx%%Y?X`Oa)=|i`>462p9s>`g&k-3YDAYI&GnU4&N>M&AQTlRp@LpTj-ei8owl!X$u=&aGBa<3EN= zvI#9==Nlum9$vOSqs`S@(7vseC=$O*sLOMAt?@W2PW?)TU2vk=yeSo~DVZGBoc&=; zo_&{*N6B+}y(F&vNUbx-aXC?vfWOJE*u-*>Ifxd7Q%?TO|1}to)&pzg_)*9}OB?<^ zL5cy)RaJ(iW^A8f%%H3Y!-ie+nD&t+w&toS$bN4o0aJp5HjNAB(+a69?8iXl5e%8! zcbjUycQ-r?xAXywuSML_OT(JlI#vrZu;fGzRYQX#*HA_B@7o+CGpi@)v`_ejy)XP* z{jTnv^RT43%h z#h=$Rza^kFR?K2F(<2!#SL&j>%@|kJyZLw;O0Gi9@fUo~bSuqgg$B{pp+Dp4K3?mj z#FYu|J)l0z+%SJe*X*Vy%V8F4qR1gaB2qFVTMZhKySyIps&zS;@zrOvVXS2$JR<GwV5{PluNezCA{4<%5QdAR=*xIN84<*+Pah zs3Utbc>;Y$I@Tk}g(eq5h4iS3jD_&xN0keSa8sLI{Mf;oAQECBkKP5}$XG~*R)AT4 zV*d#=!-7PLO>xKov@1P=+(?8`mP}}4ZAOFy5209sEFFzJyGN>X(%p4Z-r=JHfiaU(Zpk$<$%S5`(LMdPNUluIlgv>ee$;Pv+W#VWELd!EPi;0_{CUgaJDvLKN)NOZyD=v%Xev0Pa}In zCzJnMzW;0I8v#1Q1PdlaujsQ5odL>P?BY`MoRKgTInpN-hP@cMequO$3P%dyvKFtJ zhmPvQ;0aEBpHhaL_H(Uj{ukO;{Az}@7dYag!{^?EbKmaUi>{uoV>ti!hhu#pxqV*j z3oMx4U_)rh3_o#`XrswET9(}5)@U>elSU&YzG4%ZeeCP>gsaMEEk4TV;~yS^K>Eo{ zw4~w00@abSvRIY^Dvlhey?CuMah|(VQX28IaJs`J)sjpi=j6~7!n*!GL_8VU=`r^Y zaU;sq5UB>GF^4i8pE5$Jzfd_Lntn6AiWL*zgX=peXs#>+n3*lA^v!*-i6i8OAWw}J zA2ENSfP~oF--E&e0lkh`**SOc5#z#ggp;FurWT9N=TVk9hJmw{Ou|&r)*sI}p3YI# zwcnyLb5)Lsa77IM7G(D|R1aXBzuCJ>4TCcA#gT@-EX${{HTh^MB$cC8;zQbOH1(Ic zP+cc4SlD*ig>_cM+eH_-h9jz^uXK!LM_7FMOeqR2pE8^w7=mQN4%+v$Q8R zl-Spgq%Dn8z~*5@*T2j;$J8iUHlG=uY|INL$`#(nr?hbt97>aeK~-4;?B?6a(d3RQ zE88uOWdzeWTX~XkaPg%XZ=#XrY2C0g-NhCsuTf52Nn!wQLSYYNIrfI4*@p4TZ3QX2 zpzRV}ZupK$GATjIqqGXwRKhRSMKF3nJTCi|9#5C9#C+NZLqc+_K8P1fi7`BYLI(=u0_WL8{s5|4bVEB8(VEFst zp$Tap!SZMx;qsz1^qJ1r!&4?RG{N=vXrc9KA0f7tI^1&2iARmu)Oe@F==AZ(xYgLA zz--f(=?=7iC^nI_^aHRA%TNXH#>7j3y$Xr(r1lJUc=w}xgNjk@VGe?`{q%&jc_{*el~y0qq1>Dkr!17Y4!n$tw%)%qb` zmrL|B9X+hGP44c_55CWelqB-q5{6Tu9FVK$t1PIqG3>${0DA3HPfhJTYIjLV3NdBW z*;x&rdDk9jnFCi52E3$VIRwYD&=%|py8Hzxs+`NUf^vFmD6Bi4)FRUFVa*v)vdkwY zZC;N1lx|~HXz|@Y2%bTGEcyqy#PUWE>dR*&-7pEL*NO4OT8#vR+}uNbv#%%}>i2w7 zTA3|%W%=6~PoB6mK@VyQ^tqjI>E?d$miswgmz=gC?gejvF*-szfSHf-v;u}vxoEq$ z8c`};@b~bh(zxO}IO-$>(%O8gOBN3mmfWQA;N%NRTy6+&yiV1lxUP6g5uWiR5MD8} zdcjHS?y9*>AlU^zb(whJQMoIg8R&lll-POY)Z{+K@>n2=dTk7n zsDMc1dZD-rNUrUTdj#=ON|K@fP}xG4x}+iZ9v47<;2Pb*bin!f|!?TM$Eol3i_!m8SArrQaIOlPx_>D_0&aBW)%EOh-v&(<6>Y-Za9F;gB1f01xY#{@Rh&zigYZ+oc!yi+e@ z__J*O9~xGFQAbrrdP^m2cgWeZ0%3nk%!W^0XEA2MXhxw#pz z66ULZ@uI6`eKEjqTcIMXJ$+i&bMJ2@e{6^HQ7C}W>0xU%qm6aj$Nlms@BQr+wpVWw zwse3Q5$|Ll8U19H(Eupe4i4G_Z2%;8KLj@py0mZK#-l$t$s-XyF#tK5MRO7q+ZbdI z%RIQ>xB%)i*U(nk`6gMGC7%nhw&P?>NI;1}ZRn{Os<)+Q{9y9O0XEdUBW6+q$|)!h zoarl%RMC69xCXpzUEy6f1fB2!KzwyZYLRAeVrDXavI20}-hJ%U&c~v6liIGX8d4nc zMJC8)3n!5lE)_AhRhabgqH6q=9!3LcR4bNhi$J8T76%8!(3g(2mmuLu;*tDX)mgNP zm;r`ut>HJpNXDWO6ByD03nzCcClQY4&&VlcTjBgPWxyhJSlymVE%|R5U>l2IdOUx%{ z*emo66_Z6Mim0iHWVHkJbZ4<(I{8_Mf5GL&FN9x}lRExw?meB|?1 z!Y6xXdaSZFVJXl0{@M3|j14qKfQd*hsuD=dkXiiqY#Jf%r2PiNcS zy%l#MB}iv-jp3Fqb=q-gEa5el3pKFkO0KC^MN49pn~tB4w`aF~=dsq};{Q^~1*Q1G zGI~76O)?VGH4}@5?vC{A6p6X47@71bJGmWYpb z&9jAcO|i9i-5l;dL$#;NcH<#G`11I1FzhjWWQ2sjk1kGL)CUkn!aqW8q_tHZ(nPJ< z;9^`Xt!_*g&*-2znD!_&xSWoD4PWiBl1j)`KJ?g#vVUC_{_UzOobakJJkKFvL={qlmphXYB|!0vpJdTAD;`9$LN zE^we zy(l^%tR^_oC`NNTe)~q-FYRb$C3CrMNk>F;jm~x7J*cO%j|LXPT!cT%wXh;0a4g#7 zq|(7+@F6wH&)b`E13Sr--OkEI*$%=b+Ga4~-5;NN5-1_YYQb2ecONDkUeQ)bnk}Bq zl5T~qlj7r9EuS^Jgc6NKS#nYq&}@3ga?w7S>2r{FOu}AF+Deuj)RN05qL<-OI;Gby zl2_D;5?^;wd6NP<5RpxaP^54m@NaB(-kR)&Wkx4gi-)*YhS1ILc1o}~y@pThT3P3! zAws`OkWnZ6=-yy+BBwnXx5(40g>?}%Vj>Z_pcX{EjJ=2K5XR@;hT|ST=;RVE1ePTR z?r?amxOOX}(Oj;MUyS7TQ2FYZ;Vkm~L-sMy(Rl)eU31qn*6>-IilV5#uInB8L6JNQ z;p>jVG=Kd}0L!`9exfUIM}|c=`~yS6HYDbkvaz|=G_o8r+D|140*KY!yA&|h>t2X6 zt;pxz*1Q+02#7RSL{-g2O?8Mbz}~}d`Gql{7E_NKwl!l>XJ3PAgtV1RUy$bQS@}zM z^Vx03*ymzH$vPDBf>^=RTA0B3!5@TIn<%^NXx;V1I^Q5*l#nuWP9+sHZXrZCY$Obg z8))h2bA`vy8FkDZcY?IYq13O@tqP|QPk)-%d8A`*r>$lXI zVYB6j5A!4=U8aQC!yj&ntTdyh4iph9^UsI$YmOiDA*^RKD{{zk1%_E1k$pknixw{h zN!|qs!bBPr9Pa@$M=Fp)kAHxkGu3c0nUT_VOFSe_yxMsi@{A4K2z7wCV^%W%T-Fs@ zHE>H6#pcn{<~MSWHXer4iEhc{W&*y90ki+PH-MmZR@xsaHXmn}Jhb{t$muYG)G5@( zp&*zzt2aU2n22c?_{bIBrDT5nmh_|Q=I|7nTaI-8Gl$iYqPHzJA|UnZ6U^p8`1Ple zrLRB!wbG;>_y(gw00F`L)Xe^|TlZJl?f=J0V`*aeKPyd&I;@YfIr_W5WM-} zc!1$VVNocuNo8&GCtpPn%P3i?)ArR(j+WEVJBo?IxCrHzsSg?QF3$YORU}_OVqh)8 za~krvmd-zA8-LB7fAR}@smlF!)C_O?T-&4H<305><^J<{5IBChxjQQ%1g%9*6TyKv zXEIjkr6=*-rZ5uNvKy!(*$Q-z^uV-h*mXn3Wg5)jwejFIziixPc5Z*AC(a^gv}$=JO5x<+}aiM+mF_8`JE&Z zwH;*;1V`^Y3?S6?<=WHDKDmIW~p?T#t<8`TeFlUE1d!O zlozv6c=M)ce7uB9BHPA1O&sVrOdt0YwvfClbp)t3Xxx_xa*K6LLQ_NA$M>BxC$t>Bf_fGq*$mep}|Ok^tH;) zi*HjuHDzj2pSN@oP2{s+Vf*+VOm>=5s8_`+WOZ@T$X=|px9`=cT+jNY*dk$4!ND^X zvd}oAdJ04B@I4`*>cEiT>Fe4uk+^H2N&|=zh#ZVXi4v-VRIe_ zg2reAC&6rMo`uHs`4uNShwG(kyN4Q`55VwrQVU_+X6=ODq;dE|lG_+woyo=NaRru$ zKNe#)+BgB*xS6E57b<&k=HhFc+f&I_WOS6RNEl#&lq=TP>|H5*B*P4q*9a_2HOfVY_(CT?TU}RaUr*u| zrSx!#NATR^0Y>WaCKSD1a9~EMM|3~>T~3dPSkJYOTBLOj3jOxiECYL|@-YE3^ED9Q zuX6pgk6j@GJF3wBgPOqpiC5;YqW${UoY4Lw0#uz5y}rowWV?BfX#xJykBAI%v8LnH z*PxqnIYz^Yj@exureuyRa!{ZKO4m-Zo9e$F9br z+2|gt&C;ox*CcJJI4Y8;%JliVOuHL7`oW9hRH$i)^1!afPj}Wu+ba-36>vCjVgxdU z7H%$=(lYVsdpuVkI9$rAeHk32-kUnh7g3`U4cz1{iRjCi#RhzBtvVwPo7mNT&r$-J zEAPoYhF$j*S$uKhKwj1&=H#0Z@i;tt6$lis%$kzVnNvE<#WjTY9;}R07?NBlFlAnX zVK^qT2-nG)zOvuHyM9^VV%adG0=UR%99pQ%p6pal!Bkmh;?e7Ty`N&Ul@^&R7{g_j zVWrDtpcx0s;Ru|}peGZ`8I5x|AD+$^x#iu)J3dU@zyI2+!&Db9;NVgrL^xun%qb8# zVZ_PyNK2YYMw+#$j4Gg-_}#^$tr+`lW_)es47$`Wr-;rI_q1+BLz(k1g-0|a`Z&>% z!D3bg0_JCj9yDZZlkjufFhVheMEKVW zd9=91cODCoBtz$_sU-BXSx0R(-MuASiBru1hyjL9@~$~PDX&|LamCCa^3ZG_YZxJz zW_szklO8sPug^34T0-w88Th#KO-XjA(CJD@%2+K#G1A8gF6sD$S?PHkUF^=>*QTkH zDLU~5yt{xS>ejq!l})B;9w@ zy~AgZ6VrtDqeTMh<|VXXCMGUmvBpK5GX_paCwN1?AF+&4JC@H#x)pm(Ec!wH1)AU`CyiSGyWyN7MgH_p(-`9S(FxH-#YTkudipJH1 zx)LM&x?*j{|Q`MGQQH<${z_JUmnI#t9CZ zXl0qf?~U5Pq%ytmY}Uq@wTS{hMF+=JsCRB*!F#15kaj^i1*>2gCM1kyb&2HVsJbd* zp65MKbCuAMipiGxn+LQaiC8y!16s{?XgGKvUSMmSKcH7=6(&LYLA(N&6+}!F6=&25eF1?$5J6<1 zPAgYdphKnmqqlla}=`9l(K6Sme74csTp$SJV}H% zoTfa!TbtjtMiUMB-eMoTdyc)glwStk-@e-e@m@`1HTOl5L>i%y>%^zf3v+`|0yw@^ zqVy%>2@vcbML-oB&lr?>DBa5sU9sgNk2TQvmF*QkPC0fZHxEZ%D#K}Oe@>n!$B7EV`{12h!f%y4Dbr<;+SW~*JBoJUV^yHj zco3@8CxMTTgNKEeV~`Gomx>B*jWK6LL93C>>a#%^v5u>MBDA*z(bO)~p9+7RPbAoX z-RR+{*sUhvJP)&0=26LTMY|7A%82y!X;!mpDob~I;SRs4YWMrFBysx1(-WH7OkYfc zz4d;Q8FvevHj_&Sfgg3%Wlx(0%Jq5$jv*fTKB^yseK@6E#uu5Kk3GD8u-{i9%_4@* z2sJ+ChDDrGdQccYBnRx1oef zSKXg{0ua$%*yVNH=vYg3Nux!s>HzXrWq|3cHZ+h0vc>iH2%z2#dcu_XaBd&9&5H1l9&B_SZ=B8GLP`1KbXGdPvMuvBkxyzg4ybb$Izr;$yUk+lbR zTTI*4y2nhlaol6tt><{OHUVMquR^N;q-N3~Rm{u2E(Hg|9$ukV!ivZ1Ce{^!UjKUt z_b+Qs#~G~*Zo9_*YU^>UMZSxpy*;mt#)OP-d=}*cr9{ElrXIL^{)9xevUESxRrto2ZW59khaJA+J_<@?p@7T3__UyEGTQfb6x4 zba!j7dl5dx7=)Q@HnvJb(!Hk8nR7Nq`?UY%w3C~F*M|UYZ-wLrD5Wxia>cz66oQe^wRwK{pU?#gm%!-# zB2)S0wHaskjr>c@GwcO=dajuW^2b0g<(`n!NU)6V}@9R$aqs# z>P`h#bcQx-RO&*5Oq+tZz$dK1p<$LLq0MSjgV3FW&OViRQJs~mYF%XFmP3Cd#S2T1 zr^G%mg!qnzdc{UCfUVOj5#wpPOvQY{=Nj8S=9#ILE7-MwT-AJF#m|!V#;opzP$iN* zV0EiYUh%K_)+p#M|#YeE%*c%X#<0)wLQh`s_tAeKpk}8!l0i5=NP> zaU0RNgz8yMoDfvO{^b9wHSW3W`?C16VG)e@cgy5IyBGwGe@V&yXR%bam7iBY^SfNC z(xtWsg^)qhN8(VR;5smcH8e!U#AU)Dj>>D-GM8M=s5*>$6gMF=V#DEoDU3eW!(k<1 zJ`20uC^^nP=0Co_U;bt<0DPb*^ReF;ePVP>V#1?L~KPE<9LnqNKo0~cm-&omxn5wyUN_Q3LGG`<%b=z0Q+X|C6fv3 zYIj!A<`Qp~p@uu3w}8dc#eKe}`)Lf_0>T!njp-fg?ZRYR@$x9P-}*I9s7=qaWS42i zWx}dkt4%4rr`h~bo4<=?WWhf78;9^$fNjMp>DPM!E;iGC2b|nfNL!^yGY=tZExVP@ z*?H~jAhSAwo^_Lt>{^2B^?AG-rxNmR8PZniNA8qWhN#+b&Ob)2(nSRa@CdB123i5o z1WJ4|H%y_9fc!H6wo&T(&1k;|#X9Sx;E%y(pZc~XZ@!M|)l)RPXPISHSYBF};G{d= zLHFV|%m4?HL6z_%VmU`V$=irBVIhzfCQ!io;3evf_(hPf-~r0)^dQ!ygKa{T(hs^z zz;{oPL2Y(wdOy)~6qK4cor)fD#g1~4ACM&SVPXlil?tNC3VJ%3Z69CH1uj^Q+Fa?v zGvUxosP(X)M1rqMuJM)Vsl^#TWs?$z(?GKjg=3(aD8%Qt5)A}Jj|N542!xAvxFB0A zVSgCa))eu3|8f+$sE*wzBXx z=g<`d2&n1jhWj7gw;(V1KglDJf98DucBC^nIN3XxI=NVyI!jMU(lIbd(2do8k*1%e zotpeI-O$LiEX^Q0&PY8voV( zup@G=AAf?&{5%w-fk9w^{!z$?wp=8>oJDME?lmpL=zG5B-~G z_OGzN8zz47)*oR6`%kdHd$InC`@3-WmtNzK82ibcfB(4u*L?AJuf;FT?;nwY{x_ii zs{sCELVp!DzpLYZX@LKTrGEzd?~35RPQ>q$mS0l4KVk{zAD{Ujgm-_v*Y7*Gf1dR4 zpVReUC;iWonZJVm-lYHYiw95sH=zG|r+?c5{vGyLhyVAA^UtvEwEqbEN5B7f*k8Zu z?<@4La`le@X8$MHf3L@XMf{y6|NIZ3;`=AW-`DxyaetBQ@BH_RWdDfoKi`x8hjJC9 W!G9(mKtM=8KcqkZ@h$?tzWpB-xxeD>;j$f-> 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 diff --git a/plugins/Plant.jar b/plugins/Plant.jar index e616e70af7e473e6c5aad0dd330143b5868a7fa5..197eb9ea90debc92b1a29056d69b95566df8c9d7 100644 GIT binary patch delta 2981 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 IIDSw53w@P>VgLXD delta 2987 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