From 84ffcdb88902dd75328253cab96b6bf51fb5d3b0 Mon Sep 17 00:00:00 2001 From: IceGawd <35550454+IceGawd@users.noreply.github.com> Date: Wed, 29 May 2019 22:38:24 -0700 Subject: [PATCH 1/5] I dumb IDK if this makes a giant line creation count --- src/GeneticAlgorithm.java | 26 ++++++++++++++++++-------- src/Mario.java | 13 +++++-------- src/NeuralNetworkTester.java | 24 +++++++++++++----------- src/Trainer.java | 35 ++++++++++++++++++++++++++++------- 4 files changed, 64 insertions(+), 34 deletions(-) diff --git a/src/GeneticAlgorithm.java b/src/GeneticAlgorithm.java index d47a7f9..54333f4 100644 --- a/src/GeneticAlgorithm.java +++ b/src/GeneticAlgorithm.java @@ -1,4 +1,3 @@ -import java.io.EOFException; import java.util.ArrayList; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; @@ -46,13 +45,16 @@ private void main() throws InterruptedException, ExecutionException { if (firstTime) { for(int i = 0; i < popSize; i++) { Individual ind = new Individual(numInputs); - + /*/ try { - ind.getNN().getFromFile("best.nn"); +// System.out.println(ind.getNN().getLayers()); +// System.out.println(NeuralNetwork.getFromFile("best.nn")); + ind.getNN().setLayers(NeuralNetwork.getFromFile("best.nn").getLayers()); } catch (EOFException e) { e.printStackTrace(); } - + /*/ +// System.out.println(ind.getNN().getLayers().get(0).get(0).getBias()); futures.add(service.submit(ind)); } firstTime = false; @@ -85,7 +87,8 @@ private void main() throws InterruptedException, ExecutionException { break; } } -// individuals.get(0).getNN().save("best.nn"); + + individuals.get(0).getNN().save("best.nn"); System.out.println("Generation Score: " + (mean / individuals.size())); System.out.println("Best Fitness: "+ (best)); System.out.println("Old best: " + (oldBest)); @@ -131,16 +134,16 @@ private void select() { // theBest.add(new Individual(m1)); // theBest.add(new Individual(m2)); // } - for (int i = 0; i < 3; i++) + for (int i = 0; i < initSize / 3 + 1; i++) theBest.add(individuals.get(i)); - for (int i = 0; i < 5; i++) { + for (int i = 0; i < initSize * 2 / 3 + 1; i++) { NeuralNetwork m1 = NeuralNetwork.reproduce(individuals.get(i).getNN(), individuals.get(i+1).getNN(), mutationRate); theBest.add(new Individual(m1)); } while (theBest.size() < initSize) { - //System.out.println("WAITING HERE"); + System.out.println("WAITING HERE"); theBest.add(new Individual(numInputs)); } System.out.println(theBest); @@ -153,3 +156,10 @@ private void select() { System.out.println("*********************************"); } } + + + + + + + diff --git a/src/Mario.java b/src/Mario.java index ab4a8bd..4fac2a6 100644 --- a/src/Mario.java +++ b/src/Mario.java @@ -1,9 +1,6 @@ import java.awt.Color; import java.awt.Graphics; import java.awt.Image; -import java.awt.geom.AffineTransform; -import java.awt.image.AffineTransformOp; -import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; @@ -96,11 +93,11 @@ public int draw(Graphics g, int[][] t, int offset) { tilex = (int) Math.ceil(x / 48.0); tiley = (int) Math.ceil((624 - y) / 48.0); - g.setColor(Color.RED); - g.drawLine((tilex * 48) - offset, (tiley * 48), (tilex * 48) + 48 - offset, (tiley * 48)); - g.drawLine((tilex * 48) - offset, (tiley * 48), (tilex * 48) - offset, (tiley * 48) + 48); - g.drawLine((tilex * 48) - offset, (tiley * 48) + 48, (tilex * 48) + 48 - offset, (tiley * 48) + 48); - g.drawLine((tilex * 48) + 48 - offset, (tiley * 48) + 48, (tilex * 48) + 48 - offset, (tiley * 48)); +// g.setColor(Color.RED); +// g.drawLine((tilex * 48) - offset, (tiley * 48), (tilex * 48) + 48 - offset, (tiley * 48)); +// g.drawLine((tilex * 48) - offset, (tiley * 48), (tilex * 48) - offset, (tiley * 48) + 48); +// g.drawLine((tilex * 48) - offset, (tiley * 48) + 48, (tilex * 48) + 48 - offset, (tiley * 48) + 48); +// g.drawLine((tilex * 48) + 48 - offset, (tiley * 48) + 48, (tilex * 48) + 48 - offset, (tiley * 48)); if (tiley < 0) { tiley = 0; } diff --git a/src/NeuralNetworkTester.java b/src/NeuralNetworkTester.java index 4c35ad8..403959e 100644 --- a/src/NeuralNetworkTester.java +++ b/src/NeuralNetworkTester.java @@ -1,19 +1,21 @@ import java.util.ArrayList; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; public class NeuralNetworkTester implements Callable> { public static void main(String args[]) throws InterruptedException, ExecutionException { - ExecutorService executor = Executors.newFixedThreadPool(10); - int times = 0; - while (true) { - times++; - System.out.println(times+" times"); - Callable> callable = new NeuralNetworkTester(); - executor.submit(callable).get(); - executor.submit(callable).get(); +// ExecutorService executor = Executors.newFixedThreadPool(10); +// int times = 0; +// while (true) { +// times++; +// System.out.println(times+" times"); +// Callable> callable = new NeuralNetworkTester(); +// executor.submit(callable).get(); +// executor.submit(callable).get(); +// } + + for (int i=0; i<100; i++) { + System.out.println(1 / (1 + Math.pow(Math.E, (-1 * i)))); } } @@ -38,7 +40,7 @@ public ArrayList testPredict() { in.add(1.0); in.add(2.0); in.add(5.0); - return nn.predict(in); + return nn.predict(in, 0.8); } public void testReproduction() { diff --git a/src/Trainer.java b/src/Trainer.java index 15b32d1..64bccde 100644 --- a/src/Trainer.java +++ b/src/Trainer.java @@ -1,27 +1,48 @@ import java.io.EOFException; +import java.util.ArrayList; import java.util.concurrent.ExecutionException; public class Trainer { public static void main(String args[]) throws InterruptedException, ExecutionException, EOFException { Trainer t = new Trainer(); - t.start(); + try{ + t.start(); + } + catch(Exception e) { + e.printStackTrace(); + } + +// t.testSave(); +// t.testGet(); } public void start() throws InterruptedException, ExecutionException { GeneticAlgorithm ga = new GeneticAlgorithm(0.9, 10, 169); ga.start((int)Double.MAX_VALUE); } - static String path = "/home/computerscience/eclipse-workspace/Mario-Bros-Genetic-Algorithm/best.nn"; + + static String path = "best.nn"; public void testSave() throws EOFException { - - NeuralNetwork network = new NeuralNetwork(100); + ArrayList arr = new ArrayList(); + arr.add(123); + arr.add(9); + NeuralNetwork network = new NeuralNetwork(2); network.addLayer(40, Activation.Sigmoid); network.addLayer(3, Activation.Sigmoid); network.save(path); - System.out.println("done"); - NeuralNetwork nn2 = NeuralNetwork.getFromFile(path); - System.out.println("done2"); + System.out.println(network.getLayers().get(0).get(0).getBias()); + } + + public void testGet() { + NeuralNetwork network = null; + try { + network = NeuralNetwork.getFromFile(path); + } catch (EOFException e) { + + } + + System.out.println(network.getLayers().get(0).get(0).getBias()); } From 1de983198f827a8d27c57cbf5a946ff53943727d Mon Sep 17 00:00:00 2001 From: IceGawd <35550454+IceGawd@users.noreply.github.com> Date: Thu, 30 May 2019 20:36:29 -0700 Subject: [PATCH 2/5] Yes maybe or not --- Lframe_0_delay-0.1s.gif | Bin 0 -> 2084 bytes Lframe_1_delay-0.1s.gif | Bin 0 -> 1969 bytes Lframe_2_delay-0.1s.gif | Bin 0 -> 1739 bytes Lframe_3_delay-0.1s.gif | Bin 0 -> 1969 bytes _classpath.xml | 10 ++++++++++ _project.xml | 17 +++++++++++++++++ best.nn | Bin 155 -> 98251 bytes best2.nn | Bin 0 -> 98251 bytes data | 10 +++++----- frame_0_delay-0.1s.gif | Bin 0 -> 1667 bytes frame_1_delay-0.1s.gif | Bin 0 -> 1602 bytes frame_2_delay-0.1s.gif | Bin 0 -> 1502 bytes frame_3_delay-0.1s.gif | Bin 0 -> 1602 bytes 13 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 Lframe_0_delay-0.1s.gif create mode 100644 Lframe_1_delay-0.1s.gif create mode 100644 Lframe_2_delay-0.1s.gif create mode 100644 Lframe_3_delay-0.1s.gif create mode 100644 _classpath.xml create mode 100644 _project.xml create mode 100644 best2.nn create mode 100644 frame_0_delay-0.1s.gif create mode 100644 frame_1_delay-0.1s.gif create mode 100644 frame_2_delay-0.1s.gif create mode 100644 frame_3_delay-0.1s.gif diff --git a/Lframe_0_delay-0.1s.gif b/Lframe_0_delay-0.1s.gif new file mode 100644 index 0000000000000000000000000000000000000000..77a5cc8958bc669d450c98b1ce0c22fcb1ae7de5 GIT binary patch literal 2084 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 literal 0 HcmV?d00001 diff --git a/Lframe_3_delay-0.1s.gif b/Lframe_3_delay-0.1s.gif new file mode 100644 index 0000000000000000000000000000000000000000..95d6e63c8275fb485ee10dbc25b2f7d08b8ac862 GIT binary patch literal 1969 zcmV;i2Tu5jP)9(E6#m}NblOf!sih;8VryGUSpY^zh;bph(1pRoxG^Mdj7EcOjB(-Gg)3u7Kut8d zF!66;A`lc4jUjPikeHwd(o)*e(*M@!Or4+ibIrML&YL^0GxSa0RJofs@4k2MJKs6q z`MGB_L>ylq>KCS?m+fL3E@+Og{IJse)4vXDQACKem_B^^;4TqGfV&bvQ1f>JxM=`t z)$E;wu12LGu#JGJN});sf*h_z(_v_~=>SLwO=!@Y1$4s`DP`HdY)yua23?2iz<*8} z%DXPIwp)&&g6f|8`DV>NS@Qyt;^v7#>A0zajc;aWu#$3NXc~_6cA`7cCB>?=K z0Tdipf{bYzCRg(~H?e@6?V>$yO4@C0FkuOSbK?sbPv<1K58kswDYxoNOcPa`LBWVZ z)c`PPRsi#7Je|c?H)eeR&kuH?Egq8!`h0i>W9b|W9XNF|B7kZZD9DK700NQ<-``q9 z#&#qPp6N?sN70FyLUeTnyfuKd!0E9$P*5TZ5P(F?knems;sMyO1z77Uf7t@8$;nI( zXU68?2!UqPz?1iPAa3Z0=^7HIQARi3$B#l3ohW+cz0k`5f)*e;p4^B9SnDe1gJ6gP zpAAo!G`PD9Z4EI$!l;^OAK)mYx#f&i0g#{6)dG1(AnQ2N@puRgn97tW&=xoGY+n*B zF)yoCv%r<541SnelJ9WDAxpFrElBGvS4hiFX7Vy1Y{&w>qyXM}BO(4N@>ZRxz0#oU} zS{?{eN~L5fZ^=ADVc7FA${*e}vISl}Zu+{4={l&+S#PKo2>Ov4PW?PmOoR-8LC}XI zhtZ(0*G~2e*Ki?u14z!2e^3IF)Bw&y;#i)sy560 zqf|ar3dIbHLo?m)c;R|z87hGYy|`M4rE(%TC@GOq=t}t_?iz^Mx?i1U8!Tx_vf}<@ zW1(e;1fZG;-+Zlc&6$`&BzX+iq&pT`&_C8L&j^3F=5cvoPHsofDMJ?=QB(P#$`T1Z zZS=~qlCyJk61s)sn~Wee*Jp(4ch`HfxDIkpZY7R&z9|O{(qpj&`Cg6ZiIKVrjr~YYrnj zz4HK#T-=NMEIh}4x^lFxdl*$ws{nYOgn9VS`_Rq+lm+9-6m8>JRwp_l~82Y&0HD=SCT5~6OUM9>112cQeAOadck z0bzSB7Ez2QS_~L?3TW*HsD>K9ATV>)1Hgmkm$u|^anH2x#6b&enh%Vg@Oq$`Sz!D} zz!ENEw&4SyXT47Vt@nByCkrfJ_e7@#Si$tNLKq9w5>i9wf$t6v3TlPG0i0}Q4~eyS zoOS~5un%yCR(&8CjX0Oo-3QJb7!*tw(r8fotZC_-mJUrRUMULw(YGL}r53dmf%sni zO?%WmjB>A36yv+z0Jw#6OPI|h{aWkHY|G#}=K&$W^%Hj+8w^dB6KWz1+ocOlA^IbO zwC<`$Dn(WT)bp6<10wJafzHNl(CJh?k_MyC{?Sgfr@hu>*gk1!0AvA;Dg{e}WjcsK zhie0l>Cp)dLPnu2-5x5XyXeEzpXXgGLnJ33ap&fbwr;mYiq0MN!v zp&(Jn0y`fU*pl?N)Di+_pqr}#pfa2GYATfKr@bScn+HG@n5;pLY}h4FCE=*;&OXq6 z2)JkWT7Q^G=cEM)Kx5v-zTqU|mghKOX`}8M+5+k#ib#A + + + + + + + + + diff --git a/_project.xml b/_project.xml new file mode 100644 index 0000000..eab011b --- /dev/null +++ b/_project.xml @@ -0,0 +1,17 @@ + + + Full algorithm + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/best.nn b/best.nn index 1544120a4a3b461136e5000e4242dcb99bb59ca4..07255c8e1ccd10bfb44bc53e3681d40d2015ff9e 100644 GIT binary patch literal 98251 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 delta 32 dcmX^8pLI6lgh(C+1hAQys>i`l&H@st004L#1-t+N diff --git a/best2.nn b/best2.nn new file mode 100644 index 0000000000000000000000000000000000000000..b775540a12c76d6c88e62616cf7fd702eadbf0fd GIT binary patch literal 98251 zcmaH!c_7r=|Nke1vLuxxTbm@6qEePOB}qckUXnIjLX?z9g-WH8kfgNOvWIMMdv;?V z`|LBuEGlJ5`rXgPJi_eDo&+h&bKah(T`kXfUA^S# z@_NB_-af(IULk_82|?_%FNfe z{1y=+%rYU&zH-{t``kbA|35QJ?~4xSJcCl6D@lZt9|--E-W_YU(CoQFG5R;YG(I5d zxCtL2011wF#F#zp0IGA@QyM5121I$U&}2qx1FE@^kbRzo{PH4|Te0mWprxPFkA0yG z8b-PL;?S$?9MIgIHs9(wjI<=X>tE9ik>AkVl%X_B%V|rjcWfwr#5({eH?FVjPB9sX zyS2h1>il*fvaNYEV@)AYwa=$LxAonp31{j=M%(dafvA)L1?Ao7CIv_RWX@GCWL z+7xyLYQeg$8mdR?h=b)|PG)B03uhp+>bJu(*+tP_&)b+qpKpsZ2gsdD|LrD zSe7j_-^A#%2IAY4CgnVt1fthIH@G5i0e5w09dxG?k(LCE(02Woqz6|6}6y|0<(4c_K5)17M{5-v^*V%{O3dP;@jYdRR;LH zXiqc)jq@j#N4`FN7Nv1w@rPyW^-@6NKP6Jw0$35oGZRdGY~@UAI88HEC1h$LP-pG2 z9Y2n)L|V9Unb*`@pi*@wkvM7SJXV_F@q?g*ve(Zo(4^JIfh8yY*&EI^G)r{JD~Dfe znoMgL-RZ}~ojgR{E zlmIbXP3LS?(aQ$nOfU={*`kxfJ9Kl`sRDPS;FG+Y@)6ws*F9$RHmU(e%cbRUbr(L@Fwa@*RBTxk1rxL`=@EsCnuS1&){SFh0ct=r)83JwQ92OceVbUH@%m}PvTlY% z8rPtyrjZuuo?? z3f`P~EWOq_4u~?Yd8-@`gbclES+56F(RpBfOW(aPxEeHazIMyd6I1ZxF4}Qa_Z6BY z@@{AQoIkKyoaUG%a<*s(_zg~ssm_+<12sQ*XLD5)RXrH;(pQ>@vh$h)b{bws8K`r^ z@GEUVn85z2=8al5WalT!D@m$|pbWlm%N&ksfJRL@MNnBc1{!l$o&7Bf^ju+==tkTc zjzn71gD=55kYBw5+v)2#8KQ6=t@pl?0QsPn<&~mQ6RGA zUI~9QGq7w|9I*FB=N;=i?c8O=k0$YHJj#w`{ zc>-n$?|s_sC%!Kaw91mcTu&Pmv(h)@rjTL4w1zd#+xI!sO&*9DVO}HSgQlR@WVBzg zQWvyd`3)0qxz#{Dw1$SOD)5xSiHr5USL{`s)^OV1Suqjel0Z!3m#h9dqN-V=KjQxu zr$dxJf}!Gb;vJv@6@OxodKmZ(RjeA2t3L!ep#J~UPf3K0~9qoVrRT_JD`Uz#l%)3f^eAle4i!>n9fd8ZnML+*!9Yj}4;_UzmyTd-tcIXNP6TR`iIIW=l;lK>>RlrXB| z!v#y?nX(_3XTe@!c@ol!2ldga$sUiRZ4+(4kCc*k)9FqL`1Rl0rf%>k1T>EOy>;&f zeSugHQa8#A<%1>T&JKZUawcf}^xkC=GtWqxW1a8e9go1WK6STd@tHWV5r7z@!z#vdB%qErUB)jr!TH6h>CxAtXQGg73tx0;9s$d) zFzGFJUZ`iZeaBA??YM!WOs43~z5ug<^WWUsxiHQZG?v_0eEr&bAabBfu~HG-Gx*S! z;F?@jEznZtC&tXHLOr7$mu_Au46DU!S6c8Bw?GFm{+>5h1sm2+`{DiFZL{_|N%8Tosy2_3l|1lL>j{{hrzn2 z1AZKAP280%(afe!8K4e^G;QR3Dkp#?%T4!AJq5il z3r>dD%bu_XzsJ9gNPisyz%oI1qr<$=IG{!q|M$Kd9l^4B-^nshbyz#rlbZSJ>{rzJ zYL$FWTHo}6mBw2xeXpJOIUD?{?RcLrlF}h2Q+oexrSe9gl1Gwj8iKXJvejW}67f6A zP9~hYoby;5w3bzd=cvQ5BCPe|@q3=NB@iV%;?FO-4=W<0N&&_hg<($9W=JBuATT#K16vyRHjd;p<3ul zDJu{CK~E{}$X(_(ACxc2XYoO+kT~#5v8cSVIK>EJmgPU<$_(lParSO^`fwKAs)_Z_ zj_f{Q4}M)maqE?4-slFOOY&+g&=iog#eDRKX7)%Yt?EtGJBZmYHL+j%Pz*%rEKn>y zm|g)|fy0}o6*o~W@gKCzT8dDe*&}&k!Ba%=qdLV_eLcSth_YTs*drC{#ImyV#3tg> zL1X;9GfD|SGdSqEEvMrvs*|;vUL3Ck=N<1ie4=<}$q3X!S#Tw_z#tW(RLLwRr*cp& z#J<%0Ckwb>S>$F(#3!tQ+E-Yy_g{yp!x-m!$Yw3Dw^;X;1?6*3hJz*h_&R6f7Ed7R zWxu^iUbWMNvA!x)P|G`jm;)OPZWP1Y0!EZ$-5amW1FgSC?a9a$vF0YEEr&iFxk9Em=gQ5)5I`URsJX@p)8o%*! zl7~bI5WVl%SE+II&XG}fa2f7l4_aSq;2pi$glWQQwPI^cL>qyc&#N`+`-KAWYPq{_ zn9uY@-+#+`ae zkaj1Fe5?kl#wnp54Nnx&T+{9OvqsgU!E#8#f-;_V0;s1=S;6gL8^rABKfCW^I*RhC zFf7)-Minfx#7^z_qLU7mte9igj}6^HV+WeY*TtjVq~Gxi^=d+z;IdZJOPV2A4vAPU zH`{0m#GJEmF2fByVHslsjS90YL8Erdrk^3nO%qP9YTJwlv4Ota!6%7LVL*M3^otw! zqh3=A%{F|qbOkL(Lr}YssE@pz-?aY(C7~^PQ|J%B#Q7 zC7fB}CLFx!7g)A-_HKJx1a~A(78)&)QAWGTa%=Z8k3dsEQ#qj)@1u`uq5dRtvxcX) zS`???!5s@11^&ky7M>OQpxGtR9{gLA4kkWBCl3#sTpTB;B7nxdub?Zw1I>5)weqH- zGhEQxismSPGMuS*d9}->c`2Zkmw#XJ;su-ptl>rGE47MY&{#DO4U)G(xA6YE>a6N( zI-v1pZR1GI0ZXh>Z|8Dq57dH@r2_Xy>5``{v0iyr%{12#EY^5q-^} zr(j8X;cR?CL=%Wv-MwD^4w?oct>!B4E?VEjj(cMNeSWQ}4VLtkf*&YtzzK-?!QzU3A{6s)rJ#0o!gM~G5wz3SBqMd%<# zo_}LZt^j2q`n+k%H7Nwk*1KOVhAZoV7}9S3O+Vq};evq&9#8jyhE>SD>|aN=hwKbV zm2c__=0H^IW5-pUDu7rn&o}PbNJTL}N51(etN;^H?EZ|e21L}nG{IIz z6HS+j-_A0Y1i!XLONwz}l%XT_nsMp`%FcT{@cw%oy0!9Ajd_fDBREmdW^r9nu2giB>l|7vuvCI*Gj0JbetJaBPY- zT;@Oqd_d9d=&%KvrOu3))pMS>gC!e#`th%G0uVRwuzW?WF2wxu;LtJ^A_0isTD&NL zDFoEtY+tj$1$Bu@%yk`4l7uKjU!FRS#-YBDPOgnUv;dtB>cboTx7Le5l+OC>rjJ1%>W?c+IZ=gwsA;1BeKqS0ULQaTXRMZsnKI$@fy zfs2Q(Qg@)cVCctvYnOd!&e%Vvf_&F42fyOzi2bM0TQE+}FzR~WWCT&#J8Nt=T_S^J z$-&Zd-d|zgF_Nk#xhPv4Ea~yr2X1IUUoggcyX9x_Jn$nDg*Py^!y2%mQ-LpnpG1I0 z(hAK?=z;0MhDsLS?Fp#|jq+rx&E-P4QLz3vH(J$J6or%8M>_L!3uN!vxtc00c?bNs z78X~f-l~Jv^_CdCtpmD*@qWD9lw=hKmaGt4Rl6OiXUtuXXMY<{0Kb-(XXkcbK$Vs5 z8Iew|M^ixQsqeR+i#ks+*<_)8r4anSD4w;*sU`vm+NVU8&-)HUm1(oqIB!2qc&VG= zkecBUpcE;20g+e&#F|`et~@IS{AwqzZ%Vq3R>U5y)NGA{HDGj^^S5=RV2?2Fnw`GV zj&2ZzE4(Gh>Ii6faiLPNwL$=Bye0BGWr{K(Lp@Qc=2g275NmwRC!c4YVA=7Vw#4bl z2oTxbyMmgp1;pH~lwUB&0jjgOzov5LYtkJGKM$n`5T-SZ+xxfX-t(0}^aT%eVxOWn zI__xFvuiZ;ro_Ku>9vK4-p`4xVg%RyXtjgnb>7`Gz3yAGOzrZxB*dhqE-sf1cZ6EL zzRT>I{}T1=eU(l0uz3k++>?Uuy0OYYIaePxufG&Fy?9Y2}C}y{iC5Olw%dkL&sg z5vW^3oew@Hh1h@}m6&Jn%?~}xlk3@&YgZY8A5X06)k;f5tqH#L8+=#L24A)jL(JkJ zN`u6D)v2?D7TttyGM1*|k{$-i&U!WXT;NHt#Q8(&?2bY1v>#6O_^`0!4?O2_rt+cl zzjne6f%P)#3b&m=lfu|gU|jMQp4Yg*?NI?Y4Km;Z#@xF7T!wdaTD&5fS+!$_>~^e-0+QHJVXaYk+c zXk;O&126PZWt=M~4+O=FfTdul-bU#eI*0Ww%skiQsOs*|8m)!K! zy?aifI@!eiR)+JCA6)N~eJ7|?YWd{BOs4oIXll{r* z=BkTe-CkTD-dzutJmZm!OPjR7QgHr;_hV;x zd&YR9D;CaO41{;rZ`FGH5>?GhBWJB5nSx(iTkyG|)x$s>ol$+iwMIZgZ!ApsGjH;3 zlLv}!_CuXGS)pjxrM;+2B|T5*&sV|ez!(!|kO-I4{J0^vLmsvne0r!Zvqg*6t z#N%%jpIEd3Q3Bo=)Q%Pd;Rp98%(q9i6bcU7hs#()l$K7O^%tK>plZ5I#?=wjU7FL) zj$aFqA8X^9$*l#@Yn)X`_5Y}hde$LPzkr<`2KhL>ix$KiqkZ76<<>P9!o7>L9`u!T zuP1_Kk8%8;#WgS!7^_*U>2NNb9IR@el*_}j_D~rGTUK@GyEyn2OBCFVj}8Fs!_C0Z zqAPKrMfY8k?Oz8~V}jzJ#y!5MgKVvc2ju-K29xX4RQ>QM#F^^Rzc+v(p#mfX3Sys~>i?8=^2tj3*A3@<6Og;*aze)a$krDiSZ| zLDkq$tXih0q%A~Y+!+57_7~l)UKA8CmuI$$agEPS-uzW>6u5fTk2@sV_5vFZL zU*iv%CGC4ZbHA`C$@8vQ)PkkJ>8#(JrcjjcvQnFUYV|Z>j00L_nc8F^`ekjg@I0st zqlmkvByQORT4#oS*Cq!opt@nj?ldvSX~G%3ebiHSji9ka`fna`xdK{#lJxGRQ>vhm zzcr`q@7jj`~``yL75D z52gX*Nv-?-aUc+?cv+yyo70ANwSCnrzx^RPpf!JcPsyU1K!u$ACqpOuP=7eLX_uNb z&_oYyZLt1cx*YtdYknR7qCy1{6t|X@Y(sA@tjXM9Mvxk4Eu8CJN_PVw1DT9PW76<8 zgg1x0nv8dj1g$kwNtgat7yQ~Rf@#a|_JW3QB|lqzAMHRdff?g@0d^Imx;EpP`=HBs znJz7F?^YCrb(UIbmy2p)2-$a4Tr7c@9cRwl=js9BBy;^SX=MUv46PRjT8+^RQ@c7B z$a0OKGKy|SFE#Qe5VgPVbGE!CP)+F07`u<|5Jj+G;3)DIo#y7N+Jj5?z%76aE*V+a z>`y^4)4v>4Y~+AnZ}6%@QZJg?&f_n?9+>&6l4USyEsT827fI=@(=38DEn>|OQ= z%^7pn`hpN$I9(X!c*tjWk~GAu@RhDN7DctxnQwaDfPM;!GmeB;thkNtysTFtss-Nz zAYb7{wVDq$VGw0t9Iq@iG6U*bR9mW)LI=w(*@utog=K(v#`6Bw+fepiHN{`XmMCU3 zU-jZx1UhRy9Df8EaMA$5a8WVrJH{^d zdes$q1pL|@mYPs!e&XC>a(%PCHp)jQnpB3&e+w}i?}wE+*`$MCT2FRgau8a3*$dZo zYxIFI(i?x#%KkjCBwf;1y)KXhV(%@!b?Ob80^;(JjjT1pkRdYAs?)iJ0G6ExodR#n z9|5{r)7Lt65NWi>&AHcu48gDanp?R;nL7~M(DCfgV{nJyoY-dr8a%WQ6B8n9V@}Ik>{>;9<2}K`nkMo4!94N z6`SVIkJB#!;v17KP5aSFEpht!4_?T4Knz#S7BR-(r68xIcJskw`PN1yK=LYpCRlm#y@>7!9!#V_zhaw z?s6}L^Ny46mTHyR%v84Ia?js$aC>9y&*mgeNvH+S+NZTnQ6BA|;BCv8?Gxk|pW-Bv zb(8=Z=<3ndG#QvryyF7T`VpfIDr?qqk<;~+2V%Wuu?*I{13&7~lrjHJ=mz8LIsGj3 zM>J^6RYTWhuDStrH>LjbV_wLI3CITml;mR}W}K>IdiTutjk^66KEIRE1wXdw+uuS@ zw*%2zAKowVhgxuQgK*zYDHJpRXOIDF%uun`(m}UdwnOi1LpjKR zwJeWWo33XMF*$?FE`Mnf1&U-Yrt3LsC;xzJU=WpHUR58nsrCHrG1wY0`Ns(P^ z6{iX782n;p^BYloQ1Nw@XGUN-c-JOY%*zWb87@?5vrS<@WCwr41Ih4yj=#*hxV>h3 ziO;{HDAv(<#nQ!A=D*&sIG)WK;YP^+_&G}PSxx8)sGL( z_Mn)9r=lZf7onJRdBV%uU$WrG*|2L;tjhu@Z~V@ZZMrg$ulD(0haE#C(2}d>ay}eI z`2>d!KIsWXQ3f3y#6HxBfFJK_hSgv!WXI@gl9oM2a3^5xA5*xh$_v3VajnF>=jbO% zcy;oLvBaP9kdJcg@pji?bc@sPG|S}gK~HFw!Jc`U+35CQtBM)TzXtaOPKoLACcC9V z6mC-A@wA>G$k*m7sJ?t$6Eymqj(wz(JkUDUZc!-RRsqC1qxbah`UtRWy-~AmMI`Jr z#xuC3rv4Chf@MDzQm%<^Ii`EsCd%P0;Mb|9{F~(>4%GZvyr>6#rygUhzRo#Qw;Z&d z=i8>zXT$l$$~>u8^m~0kqezR$T&T32ChY5uDNS9&VW6fn&qs}=b-{8-G_>cI8(89B z^~_r`24QwF8t3*?6X^u-3;q?oGmAt3ikryUH2WbC{v~+5@ZDO-fb*7z->722GX!V7 zd1rdcPYC>Ycvo|i8rt`kr~KW=%b`nn^U)24j^q@u6f9}@Q)LP7y?9}iR>+P)`)Lg? z`*>rGc91F%FLd#>lBaUuM_gkgn&NAOqO87LB63O{EOX}szM8+02-Fzy%)V)pJ6Q4? zvm-CH%YY_O2s&8U=?PTFmz;C$654l`LGYiKu7=>(k>F`7@eO*0H+e1Dne|H?G)BtQ zh|YQF64tHgU7t}4wO|6#cghQog+K=4*YV9OjZg*w@6cznna}&tPv|=bS)u!ow6EBH z?gyAUyy@P=ZkKsx5T$KN)Q?qXvmraHw?>4ff;wNZ{@H}v+c3}?`7y6E>GI$wQ0dww zyb-+{F`d8dkF9_cfJZKCwko2bHB@h`ZrN?008x4}SKGgqwg+l?oqs9nJRM@Tu)gOi zy66K{rA&{|vIaGuX-ht)pl3r3g6HxE~S zfS3b~31J54C#yIkCEH?a7rF;IJ{kl~=Rj2Fw?|^Fif|X;bVVP#!%NV7c2vKcm=r_1 zNnWE^ZW^WleoU5skF#?N&==)eY|En(ATl{^$qO^*X~G*iPi&IC0(*q@JstiT?-&l+ z(7rVfF8fUaH6D}GJYYGDwC>d(zoW19@UC0RySt+TrZw!c+_7hT^c!h7E0{2`@jU7^ zvww2*bUEr$A1&uz=s28IyfH%cp>sTBzy@9$9eEdwx?81FY;eYgjk0fBJ9gw5+@Cm& zx!@7*4(r1QB-(tHRYsr|{f zIJqa%|Kkk{OG+wTGG1X1H4Tp2&Yj;0gnhjmRrP399%SmgeYbnd7w8B^Q~gSdiGiKN z7)AH&g!X8HrC@H{e(k1o6q8si#9pfm8rk6N&+504K-{TwTGvp2Fy5gvN!>E&iIOm$ z9q7COy8O@QgMXb?exnF}bjhXbzwWvL#1gX5+HZJhnsEBiLOS&pRE@WJr@nsn0`lS1 z)-=DL{3GB;-F$fAsat5m8sD^Z_Ft=pD0T1a+>_sg0W}-Bz9;{L+aIH_N%ub0`9Kun zuay(+;^@iH`a()VEg#i6ka$MW^-UKn$+35pGHTJSO3@A4-n!KbGIa9f2VX1;0n4Gj zBLk%e(5=dm8n&#BG6RiPV$6|yZ3%vSTThp=gG8XA38kzJqmTh_-m)jz`4CJd-uJBU z@=i%q3w7VqT@ucG@av6QBjuPF2N|fcShSJH6cG35UqZ5!3|NvqCf9FQ*8<}D^j2&x zjs@a6M5`hpLsPRM84p*xl&$vvpzZ!~R* z59z;jX~)ijAK7>I?RPcGKny8>Eu!PfN8xsk>8;Md?vHz)DPKm+IXq|GfX(h4LLejJ)_99nF)TO%wh|SIa zn@b}?6n<`>(OP;wP))_RwguX8K$Yd^6|x$kyI8~3i>bhj3aS__T?8B;(lf|+|;76k!vM;)QWSX$Poj!lYtk83wyezwW zZh1ObzWOAstfWBz>alM4E}7H@ew2EKjNM5zt<8;V_WxOdwCdRSHcNAP@Du#d**sqr z?L*4z^Lq`^Z&cvCyV$&gk4zyZ^~wT|(W|KQr29!$6{9f_B|oCky=l7^P^*fJ(a9fZ zmiS?$mfsK2O-=igxjkAp4`On=zuiu(HvvDoZRj^yGt>#D>oVHv=wD#TUu<M$t1=@o_*mAESFG^^z{UnPCH)Oadi$qV@3x91iXng}udC>gF=pe&P_N z@6ZLpJyTc6P+A@DWhV##jUN6&DR-$3XoDw`XUC+$8gQnWy+HSq8CX{MnBP5{iFUfr zWx3#9r8{Vy`sOL&C6EDYQ{!Rt-&jCQvPRzX;hEnyrEdEaUHTBt3Qp@`6y4~y14~ZN zhMoprO`zJ+TeL^_hk=x%(O$ zp%XamPubP+E<>=)5eSbezJc!I1LA#OdGcYPakp;WwCy>1ded?|v~xsip_Uv|ZsDjS z)QRz;^)OEZ0{C$hNa?@U#DXQ8vE9zpPZo$={p)m7A`>hH-)=K96X1D-)7ww2*gFq; zjZuE+CvUxy4Sru+6J-i!o{j7++d_BFMjfP8YF}BJ>j*JFI&2W9U5AOpsqTYH^>Q$S zIK^)Gyw0X~U`gE~NZMeM12nKiyZx%m802Gjt0a7uL#K+ix$mUK2Iv{il5dT$Bfzr* zCmZio8RNsV3Zs2VQwZoKp_oapPc=-T31Lb^g#G;im0`pKhlt*9WFX(*QN7qrA!w&N z!i~aZ_fA3-LE;bR#{{s%`0Hc!0{i4a<1Nqr;%93K^qF8N)zD+@^Dl~GHse(}?<)xZ z^@hbDd2HWx9PJz3`Rk}_4ED%vqvT?vk6{u%V?JtES=pat5sJj#*R{|P&xtGj_ z7Mp3pdOe9RcBEDS<@)R%eytV;)ZZyAM^Wmys)<%x6MFycL)kIN zN6EXVDkHH2h&`_)_7~p_sE5@bIFJ(xF*%ZpKSgTJ%*5ZWljr86d#2{j`hDpkB=Gx? zB^18xDyoyc+et6*EeE3XTU9BY^oax_Cn|s5tO9o)mj10~Z-KQcM0vmK*MmSK0ubj? z_%4$t&|RE*oa=qP3Qi-&JTtje-YfxGej8onXDSLAZd%Jkyx9j)FzUIHb3t_hVEN&9 z=RpE)1k`n}p-foP0w`y|<6Y!c8Hm!#UsY5&Ws58e&jq%nv4P6e^aN&JC_|akT5}g) zGH84&(th(;)cHX_5uYqd8EEuV3mr4qccuwz*M0Kkd#)B}9gfB=gGy*`dsmLXf6)Vk zcSc>EO#6HUEPGlKPYQGEAqrn;>$upYGH48qun_NNxKXgq#jpLXzoFgimR={(u=pML z^{ZbJ@#;di_>*w@zSWV?C5&;h?(1%=aESS7uY>e2^iw;$Q&@@o>;v=+BOkHWvXp#(pofW4#?6 zqEL68o~yS6&2@(*S7Gc9>NU%ANz>y)H^HxhP(9x^5OqnAx5DP*V@c48w=BIG*Mlk> z+(pftzXA3L=fA!XrCms0n)K1%})d$}-8+2cMU#zV0M{FLQjIe6Q_<_nt()E-ToMQDNv!3Lj=&pEd< z4)W12Ef^hn4Qs%gLiu@Va@FA1ry7wZbPG*gxx2ir`cHB2Yv|CKRVs?k14r%iz0I!3 zj}pH9o3}m@q6ik>;AnhS1Zs`vQC;;)fOy)MrCYbP0Ch$k9hZ9&Fim*#&WUizGq7WL z$CUxKR|aOF)j#MCxhfBY)lTN{&#BvkR))ntwAz5`WJKIBEtZuBtwY@_UiTQB2fT~X zly54BG{*DqhvqnBPFrH!XxisA4!S?zE*90i6=5Oi{v;0q3(T*CFZ!l)D z&O!N9(8$)iT&vj$K+TH9&G>zkFS~8sZ%-A%^a4fkToZN03+}`J^@i0cX@+pp^~O z3QrVh41?CWsOQ_`$0k7G!a9RTmVhPBX{sZf2{b6ZCN+}n4t`AKze_i#zXfU+8oNE|$wro|k3LcAKt1o>b|&Jn zt1f7*_m--MMauvQ4t+A12&jfA<_q_K^_lr>AB(WG*xgtaESYy7(u9)Xbm4;8&sZ6m zj^M{Gc*Jz74g%sbH^dMm;N2K!e3gFk@HspuF#d`8@d>}Rb7|NXXE-{j{Y) zfd~-qNphA?GTe@Mk)888DGAhTmYdthI6ivzw2#a0)1#nTdY=7x{cYyt_4_bC&1dF8 z%z-sZS5^HmF-ihw} zu8K`>&FyW$vPU4}6fXyLV)Pt`7PB$5KCTQgAn*g+5O~Y?9`jR~Cy<{ejpiEW1vK>P z!k@p{=cftpxGwwo>}9k^~ur4>AK z1FB5maCGxwS+w@5?LOB-zm!Zz!IPL z0$6s)omdgS9re0&-r30}(=pImg7wq($c{i10gx{luU^t#s>HG#A#5vqnWoLC& z@T>4nwlbD80?OBOo~-@>yMhVoB3*VkkRWE4+rh9uGk>Ln66z~0@t6vJ%-d>%t^{eY zBudyU)izNFjp)}Y>QYPxqKIC7Z*}S&SaQ!~T->7ow=v!xy1_tn7wi~b79!_YSV9Ir z>hcliR|9CW*t=|X@^#P~R+jg@rGmR?4IHZ3hPyTWkb%=79k)W057gBw(;hy+hL~B& zZpG3b?m(<5gSXs~VzBJrI{#zJ6*HigWu>GzF|-C|XmHh=DyR&5^vrDQ(DneZ9M}^2 zKyu$56!Ybhcl)mE0M&}$yD_Px3YIK0<85q>Dxi);567q!MX=;!4Ij#7&I08--Z;_Z zi!v12nhcCBi32}cslHl{j{;EBRQ8a%L<#tH>@Rz~b`+fe{=@Z(Vi}^K4UC@lxF_xk ze)Y17rR8^y0P&XT{#Y9YcL>hHH>?|(@ zi~(l_=bRE>^WaW6SPCknqk9Y!pfZMX@rbaO5oo;Kvo7Ryqmw#h9klyG4(ey)_|`Z@ zFEUux1+_Mv@6duM@9zI7C@upH>qu1ac31EMOQxj9gW>&+VA-+b9>tzf0oov0r@7Av zQ56>4(0c;Kq?^XxBN(Epo2(0COAXO#8HcNzeeb|~0miP5S<700ZiXK3vGBVEsFpVB zo2uEF=$;_W^{aH%Btk9JUj29fY%tV9`*OF%xg`d)W@lBePn1X?`iA2#jqbrdV0paD z7l=`)mVU2}LLD`<)AX)4UbTZ`5R4TvZR$dr-(_IK>u-f9Y*z%}zLZm>^ot z?bWe-h?+3l^nB{zA?Pd4C^YBmiOf`%T=gPo zL=EyW$1@kGbfY_u<>9}VSbZNfis}0Pi7Yg=180N^^+I4jaB@iGh`b*1Yy2v4EG8ix z{5tFwQy0FSggWUp4Yz}g&}zwp>$M_UbHH+_ak=SHWAMW$A=h^0Rly$r^ZlGpi_Ukz z9g9;p&%G_T31z2B|M-)nWC$4s^Nh7mHlF}u-+FM|>D@vgYKYj04ca?^m_ZvN)c3)P zuqN5%VOFBz(;D6rHutPo8Qd2bwX(2pZ#0U@Imr1CV~sR=*TN{Od=mJP71xOO^-BYF zRt(I3a9#_j{rL)Ys|$HRY=cIX%U)=;pS(M&e)q+J_GF zVPN(Viaa*BN=FL!Y(uc zeFcDh6&e;PHbM6xsfHL5V~L{B4Wwt?%tM`EJ$n7l=p@`1SP!YZO5>~!tp^{*}pt%5cuD(0cO+lAsOhD?i)Li2-UK_?Yw#{e=sx zlN5caY|#zSO49$ZRtcd!5KK%C8za#yudPTQRBzWx6w}5ben$I@&A?P)J-)l>Ze>1EWqYN9|c1;Tc%jQ0* zdBd~GKz*OJl-Zx4yBOat>U$aw-PiPJvwM1S%fYf}ATF|i6bIB0^<1J?D}9>q;?-;1 z9e3MFb)^tZEA{M36?Jk9_%ZfUeyRQ6XXzh5-FC3#1Ze$F4~c&&sRyc-y+6Fs z2gRf)7eAldGX~mVGF!Xl?m{4@PUx&F^ruME-n#6?GdP>Lz;^YpN#_V?Luz)(Dy|rsvsVPjM{e=NIxzxRlDmH|UPwv+t@3wAN*0L>RMnNQJ`a5=65GBx zuE<9Q`BB!IZMpUo?iY+R_dsi4DLgH(&cdPgPvM0SrP$lStWXS9*05}F`>GvzpncW9 zWq)G_+V{-;)Z3zdD0}U0%Yg!EGq5D>tZtG}GnpowrYqf>)A<%O-pJkScZ&K!V+QN_ zhaRW~t)x|~&|(Tr2>DeSQH50o8u_f_)aXf7@Z&@ngk3ml4cfplo9^c;&_1x){)d%o zr+oeuMe$Z@;l;e|uK)Fh#Ua$E7Aj0avHH(cXcJo-K;&&$8a(IT7-?eK6Mqruw z`^n~8s>49lQeI8I{?lotvD#y$Z-2~&PGZ!)Z>9_>xRJ0v>2EtM(<;D^^qHlh(Gdnj zjv(th1flGVbTg|bQ!sBB*_4!)i+`B5#2L}lj}uOCuVJN+FDN9sk3kf{{V9WciS|GY ziBNXpaTK3#CsZ}%Zc+cD=Ym0aUh}k4m@2Tqvgq3a(J<_U)cAC0j z#U3Mq4MY({tS*g>^#Q-~>+uCw>rp2vW5c|5D?w!#`vbXxbH@$*N)3O73Vxv5qjv7C zW&88uKQw%SZa^Y+R@wm@G-rczuQ8Ke8zD;>kKbnw!rC#;rb->^ zNmxGO)4e(QM$ z^i@P8uIn$--n6fHWpqmww3>NKwOy)ZfJirX2Pxmb14Ma$;bpai2@snf`zk7@ahk9< zB^h@Y3zvW<`1vaLpfl=VQ<0q7tUEv$o3>#s%-+O{EE}TZ<9ji!VzX5(lmJ7xQ$WhCNW%8FjtR5b`wP{qgm@o$@H=Q0&7) z%g5J)R`JosdEHOsM~fJg%{ZY5QFyz}KR&NUbHjzjh?=*d8T_)@I! z6GXu?*{57DtCc{8I%7wUH~OjxYoaXRxF?|%u^0(gNm6JgXh%ntyo;dMSU>;0Q`yX4 zbnI(;@i1d#A;c_E`#s8uRfjs?u9E7&4jO^>s>ML{t_I59t(u{@Z^QyD`yS3Jzxuoy zEMtS>bj@%AP>aj~x9#tVK-5L8{16{B1y9VsSc<$sG09y6FTQ&_f@SC0=KEz6XeKzv z$In@rZ2>K1nUqX?kv$MkhokaH*lU`w{>LG+PsX8LX&ZUo;_$59 z_5S$-kR2-&UY;8xMTVFRsqT$Cf5Od&_bp{b%tC+XA8T!^&igr-0G6EUd+A25Z9p`- zouW$kG04~bbMY^O;}8=o{OKGPHS=2<)Ca=dxqKb4yxk)q9CJ7Th<)Gqaq7_tL{10Z zo@s;gfVbZ}-=vd{c5LvyYk8nj?X)G%Aph=7mPgMxUNs|kzm*VZH>dWxzAh&KvF`@& z4A>R~L{=0&^~X;Qh;lAkB`y~Av#j5LW2OY`AND3MSIWf!MJcxMX}mR@4t`N8U50z& zOQs2K%-6xvCsTO zlSS3^(fh&vzg{zcy$(S$NV4h~(!$XFNgI&Sc_U&9QECd8Tjsln`}~Wd*wCQMbM>W$ z|MiA7^ggFwR}bw@_vulo@b|+Ijb;Asv-Br4r+n?O6!-QWpfS?v-vmT>O5tTXp0`M+ z&89V+D|fo_(}gOqjJN$6tD7DG#4&y?W>=dBmi?dFJuG~XADJ}khi(b_YOQ_uHBp8h z3H+$`dSi*IaHnIe-<>A&m(oGQ-ye_Q7ODb~8U2rhAL|34l5cvIqH6Mq4$9V0Jv3C__@0L!md>>uw>SWgq)t}h)StW5xI zF!?=WvJc&=%spPI7hcJOHl(~-VR)Y>_>r4GTN%ejgN7@Ke{t4^m{^|V4kfX-s7v)Z zDs*WgbRH9&cv#1r`8z4SRXSgPqMtQlWcSPqoTO~XK#J);_XDp-v>@!=)_Sydj;D^x z`m4^6{X@^I_)nYc!IGMP@Z4Mv)E6#KAyi}zx;@Bhew&NMU|#T-_xfhd(S)_*d2hW2 zquh)j3Wxu?C#xzPsHLEDEq_H@5Y&Ek6KmTPrvzqYU%v(-OLev z8XBk0DQc*-h81BImh(33%0j!+Rp32Yihk!DqcHAEnHp%KT6`84pTf{S@Y2dh&r{)k z!aA=J=7a^H)h50!*%yG5r~NQ;#TmxLUp7SX&0ikye&)MteYMTr@6b3OaTX*Yojli=-Q*B?ke~d5=}+ z$9DtW?@f*f5D%CpjG3!4*JMK=kihK8oL7_R^p|e`YxH~*s+xV!dsRYzKSVj`+I8dO z|9vGMtwGQ*j6*RWhtq#MfF;HzdX@=uEkS$psB1RAl>kvVvZBY1_mhG8Q-qG`1m*#? zva3&7y(NNQj>r+Cc;5>zhv!4>KN;x2VR)b<;#4`&hbBUhkF=DW=g za9E7aZT05+VYxfgr~UAXBVw*?I`$ByU9VX5<31Unybz73?o-xaS^I5X^iuSlBAnm1 zdS9-$186;~bsE3P^#Td*MLkF|YlA2}=cLL?UNLA?@0WL{vZOJS}nCN$XcR&tYHb+m78xs6kO(W)``QzKsk-`qWD`OJ4QbiA^Uif7sRCR)v&St ztpW6&6}c)y3-V!~Ro!Sm=I8Wo8R|5nJ*3+8AYzP`Y>~_>E;CSr4}W-niBG`Wh1wST@_RlMgGiA!e^tz^awkP|Uu>td5)4-hsx< zo1gJ1=_&ZJHXj)ZS)K!0=bSAy)^El@qgnjM_O`+l;f&pJc@pRoTNvqdLh!D}BjA@2 zcs@pcz6|)$Meps`7E=b|HFkC{UJLgVj&F<^cKJCB8tEr{?U_G!fGF9qawo)KPBF4i zZTvA=9nc!RhsUvP1Y}v1mCsnbewy%RwvtKR#0j7-GyL~UBh>kZqid^~s;ExZPD!o- zMh8otlDA>%%$x3D1+ik`WC+sI#AOt93|3gp7U^^&zX=k5L zS(O7Sj~?iZ^n?u9kfTDb?>{v6D$V+uvZK%;71P`b8A#WO5`zn) zz>}pRy5W6=4{+ToZ-iRYT!158Y1<<&x&SyXiP1`5?g$+5`nq5lJ;YI^-b*?xhm!@P z9B=F**h6RGO-qt*x!xdv3spGx@QX9!fChUbuC9Nn44z!4v&Qc>qmeNUwpC7kI}6GY zhDzR#0#s}69!sb98_{e>52n;iY_S1lo8c3)S7qYhNj^#nTHdD!9Gg%qU!5ciT=j#w zi;rDS2d-P{?gi;cP-6VOI>I}0P==!Wa_)&%0T9==W$Ikybvr=)*$rxT3Mt^iocwm@ z+%p1u{@fV%ta>R!BxL7Z~VO#nh7#UvUAk>`3F$b4-(KlaE6cPc|YSaDJE|dn8_9Hu=h~7iS38NYz5BpJ- zo_Q!PmyHzyCAlvA{CPIa4=26f>i$elb%w(ktDT>x&OX_|ntw&~S*S6@F%#IzC;ZX? zeXxI!=+dkVak-1-O^81TfcoZM_+nHG-Gi~`ER)wHP#|u|MfXr`_ZXmFbGkt2ZziB- z^@8u0s}V=EXwP|5r462?gvEN)R&c=uyKEQ(HdYWvBKjmPPe7fOs(4>!1l=#=RHCrx z^m=qR%L%q`e!XA=#Er0SWGp%k`wt&g*zsO3QwZ|$Y+N6+x7+|FJK%KD%QhGpPTEtF zqOj8el*6ygE+;O04N8H@KKZ2w(KV+c=QPVD4$Zym^U0#{8_?zWD;-|>PfbIJ>y`Zd zXnY0AP`=b*Pvi1zLCHZn<<{U?vs{YH=$ln;HZ@4~90!hd)M80xU??EAq#^ZAel#G4RPB!kmZpFP z6C9hAX1{6Dv@}Vc@Dp|%CQv%4{~`ii{}_4S^Dmx4dxf~IqHOt9$d0iWd$5x_cF%a? zNe#QN;c?24p`%3M;Ro4Wz-2hEF5-Sdqb7>~UiJ3mc2M&6>`i*j?*+s)C2JFHh!EGc zD?8(lJc<)srLb*UoPle~Ep?IUfmOjq_Uj0DP}P9TUF^Ex&kht<@ra6 z9lZc+gp-!}M_IR214m1%A@BTV2}tmKu={{^2%yg6W~Xmuq3)sai<7Rbqj>+96vGNn z9O(Fw|G%EY!immTO=LHs^>3Vr&L}>OYCiI4L3g$c%o;0w>ZS8`p*b2;=3u9sqU#L8 z>NL)-{?t1L9QUh{yV{60aOBIRcX#4Zr&OF45BTv2YJdsOT-W(~Ng3jp!CpqR4AeL6 zLt7S>+9rZa^Ci3Pj!vHydL>IjosyabD~ZC@BT%<-sAw!0{GlWEJd|1+F@!JYM=-kH3o-Oyw0VPiPdXS`k0?n2iOVjGDL$l>eXy`5bK?KiH z(}0Jv>AH}ebN$WA+G}tI;f>QKubuhkpzK`a%KvyB?HP)Q4)Ndo6ySI}tQYMLPzKbz zuxH5z^lP0MDfl<#;SD&SaO%2NZL#Mfkgwm(DcvWxqEmIi#D3M;*-wZ2VwCPU-bB6oyvWp5cda3sL;58t zr{80M`rI^M3|^Q9G`iQYq}^g2AU-4hw`C{l34yBfi;V&O!Loy4 z?s&urbtIoOA1RNp9{dTdkIK<^p=Uj6wg}Gx~Zh()?btO=; zD>nBftV44cp0h(->U03gfbaL!|0f16Js*x(i5EEnH*lummSJE#aMXhtPrZluz;z9m zofLLOqaKV_PDs54qsHh-Uzz6a1rWzL8`5xoTRotC`ClbAqW9AAS~BiXhQ^5Ft#U4COmd+kf2X zFIuA(A@7&Dv+o#Cr!z7q-MA1Zu%g`(nSJV^^!1^XKUoCe-sxoy-nB$71B<;^Z7UUr zQTLk)mhH4gW1;s;mt$^05XURHYIJX|2`IaX>1wan7y?&kw$r^@7-svQCs&Kld>sA= z%3)g2h*E_Dpihah>bL96A+EAgE?VM+HgNxWCNr&Q+a*9rqpT%V2Fg%ty7ZE55Fo4~ zN^HqU0_+uxUoF4w{{R2KF27sZlZ?jF{M}2A^w<$R`LTy~n&(JDc1Gs)heTtPuR(gE z@6haXBjnU26ErPlh+|cyq#MX>1XLDk@n&J%7@(1Mwez2drg;lw!dGYby)jAzCFSMJA8-;V^2_$u&FGoB<6H z&w0Fbg%!j2{u{VHWHjn#e@5}Ye?(B$d|+&T*isLOZ6En3cX!$h!UgO#$Cs@}cXSo% z(o=F(F^Jpc!7H>!{as-Bq;Xy^8g<91`3Jo(WP<0&@bUAHl#!CZwNXj81Xc_q-8dfG zyV)9)%u{5`N6X-z5g#7>b}1!Q3^)!gch$zvevqBT7fGH!`yV<(%q6EUxT1c^y*+iY zeGJwXXKBcWWQkgVONo!plI~ilAV!^_KWQ&M0-o(8i7#8xuTJ4Smq!g*ms}u@9kiFL z8DRv7!NEWEqTjN`+S9g~sD9h*tY(eYrX}9x%GTCt8I?}ehvAGCU!dZVyvv*LT zcQLlY;wQ`WLs5p&s}&0dG$F2gBnp>rgOOq6^Z!2ZHl={F-eyBvHW@sz2l-nP=dM6w z8OW>O`1w;OxD4|G#iB(gi}l%Q=cAy{=}J~ zDa(aekPm0qkxw1aS}B-hxF>UD0mrmKQA9yA4h$tT!q?s51IWB4$g`fguNAL-wrMt*!Ww+5%ML~3^+7Nqfs+H818)$=>pt9v8~;{I)pg> zSEN^UL<7gZWzLjA&k*AEp>LbSoFF^ad}Yhri?`7n1oTTgIW?#ft@tiCh1J`^g)#hi zkzG8T3>X1x9!#@E>yTBfi+w$YX2kFQ0sb3iOZl7*@ddUvf~-K5-T z%LZ^6m2DN@`L`CK+wL!VsF|1!p;P10n@qgT5;aSZGHmAO{gS;(2 zJEwl6f*VHl+&>h*eK&B#tM3i;(YLTMw(8u5F7rg-DkH5f?W;p^ooY$0<_5CB)whkt zR?U^3K{&-Y+hyLE` z*}#p&jp=&VL;>P1+^%HhFgb&8PNSiGhvaIc^cFd_`aSd_&i3OTIFEkQ4R8O4$*Wsg zLR|Z)6#rAx^?>GRK$2ppmNu!HJsJx2yQ z;|vVOARk>#x5n;xIH0;g4zG>}8Sp-$x7)Tr3b<66j+aY+E&?>{(&#DFhvraUb0t&Q z0XhUH``CUbj-u)^j$`}@GbPBtrnL*Wj1X{XIh8X?{$vPToQ11~D7q)cNB7qJnG8J$ zT-Un8)2kM^0UF)7W3MlI<_*7>*WO&=9RS?$wa)F!O3?jJ!yU!toyzNgBP-Jf%vLze zAdD#cdq)>~zXIpRG^w;KLi4K~YIOW^!W-gPcT|+V9!Q5c#&!KwU#F~r8B5c@Fj|4oO*FAu^6p%Tb##& zk!q+5_P)+y@}i|Ocvk$(Y}K8c2q>PAw_(X$LqKdN`$o1m>}f3fo~ELa53C9{d`D}w zf2|@YsVA(1qsBMRAiVRKph{5q=HYo`R5QLF>yuzTT8F}sG{YszXbzln7ngqUKr2S>veEQ3q|CTr z9d+HY$8H(}s+M`9yKa#-po)jIM_GhtanETE#XRp z^VqsdkIzzUe`sL*J#vLyZhBMPoTO8 z{!-4_|JeZfcnhR8a;~DQKL3LK?$iL(OG!tt(3aS8ybf=X57<*upqc6!DAjGTuKz|po5=kjJ>mvOda?QNNhx`#rv|0i6GD$mpN z*hW8vI+>rM`g3Jw%Zv+NwUu-}s1QbtGYO6BN;Oe`(iSx=5a@70*>O#4?zEUHWG_Dy z?XdTfGH}fMYwbf7On_@W*pBV@EdtanaGGoN5@w52L%w=%{{9WPH1W2PGuJ5K!rD*T zo&3oP5cj~*5StcM7nV!FUSjkFaJ9|%^tGbUIxzH4Tz=6G)x}3vI+32H^+JZCjEMo= zTIg%6C(PHfy+a7Nx_>kmZ_0{{^{z0$gV!hZPAC;x@p zPpnl2mvk!Y=#mQo-v5PS*ua|2E8;fq`d@cgquZh`|Fz5j?=E)*KgTyvWsJ7f`~1{) zI(Sz{3j5EgM3odw)>~~EWw%0oVE}mVxHS^c4ixkHCy@7R`=j z@+TUUB#x-aublmHK91>ucYi?~rkAiXHoW&DSZbPsRc$+SsS<2lGaigq) zJ=vLqfGQ+oiX$SjAp=Wxwe*!01%N0Xb5^9ZSOOvs68);&p+hkC#S2##Y;^&SzP4@r z%*G9X@RvSSBSJ!e2!W56246vl;=5V*fnhmHQck7cyU5Bsv5v8UEW5H=-%RQ~S zWWkdr(@}DGjT@l+%5T-dLI`pEEb}Wq!pVU3EcruDZD2t@2K%}&i3(>rMh|QHEztT4 zT$iH8j->;T0Z$fx?)$>c4mkdX!*TTrA&_rWAv-kUwlr}4^3nmq8h(J-(QO;A?8pQ( zP=;wckkE|yPT4ols-RP~drsT3T)8OlY<+xZdFFMrnzVxl6L&VDT91UUQcy-$TAaN; z?^OTl*N~w=vs*r(0LFr`_w3P2>x6#6c=ieV%$?9xV^~k!bg@nldsqjo`n%VywciXu$;{PRJ1K>FiFkWoUAaRMWG86btEAk7>SF!wU)IiB+Ynbj483RNdd4Bx&eMLZ{zR71@Ti_~#xoe)L6*dTgi{Kt@ z<%d730nwG(GU{JcBhH|CZEChTxG?v{Uemgv4d^8klYi=qs`UQwUXly?CNVZ_Rf_SF zpc447#!cO2J2pTZ`_YH*Z6f%_ECTpIa`h~h4Dx@0p@hFYKFw&EvXoY>0*vw^%kAI>SKwMH@Ai6pLitFCj=gABhnW?PcZ?~}Cm~-KBdgHE6ix=5ot$~BwG*yD7`0nW zP0K9Y`@d2#jCU_AHz@ei|G2}#YR($h;5%S<;W^u%`umg3Arq@O>5f+0c^DHl+;ht0 z**!r0$+Zi%Hfe(r-*8I%v2FlxT-SW2g)USJi_Eu*)l@bFjuFX88HRY`bOAj?S6(v30@1qo~_ko@e)N{1*c*ZI`nx zwFlAM8D`^qozp>yRTZQUeV(%&lrdBHhx+Z&SQ_36s|6jG29BN)73#MPxl}&;#*FZR zIp7`IFKZ&uFN)!K%A?ypFAO2B(ulRhv*&FV0u)^GyMQZDy5?K4*pFdi?VOQdV(vN*Er(U(2(^pMf3}>O0&!Ip z#%8ul93hSpJ+VVzCJh`b#q8*HJJ^j_t;Wt+b5;Ow6?Fx&(c0z^NBI8Z>%OPx1Z1Z( zeLpQg*Vgtxt#!DvEyQ)0WgnVOtVf7#URK6NYgE~1aAn=z7~tY=_qv+9pnL?I$7Qi$ z5Qo#>zV~`sa0s&3Mw!3)N(_fMc0z978uu398i#M4UH)7gxKY|GPi}F@BuR)dge0;rby%YsF z&IZ@T=>w<|yg$eCcWzua!{O}SBT;>`udkop+f5VffePYumR9V^MI=x%vy8G^u395x z9B}6D9c@584z{g5-3W0a4)`4Js|1eUy!`tL)$M>-M<3!r7ZIx5;WcXf*$_DPeBA@r z&ZEPu#r38WtL0G?BoB$ku)xJB1;g*2tpV*hBG!bGl ztoFJ63j>Zhef*aAcr~~%JYL-u@t8nyKh}pVvD5*s#?$D;5idvJsx`dAPfEb5VEwPm zd3tm-2ZmfL%j-fpD4Pe90tz{3WbMH#11s;t8eyf` z7r5ZS1K~z`Lcn!B_dcZ33hRy&w@r~8ZX=EuV`IBU4Apwns{Xd!?CT_I(pISh-%$1u zsfi#)o+xBsrl@^%VPybn`RjK~c{x&c_%;rd51?_@2u@9>xSNBLvj6jMn}kn*`iCk4 z_XdRkB1}ZT5c!!ngRst#ik#Knoq&2|cD#+sasws%M1bO%g(x5YLi==P1>BY3Uv^w_ z_+&2+$}fkMjH-4M!G&9_O1u9B)p{iR_dKR;HYodYsRO&qv6N`HB%l#cP-Tl45378Z1 zA^GU;n`*@VQfADAeBGA69~7?KfLwa?h_t|I;CMdQ6r6-o09C1lww11N1SLCP?C5zh zv^q^|&%Nd01mJkg>?dQV(a0!DwKpDb8wQupC#Q6k79)-rw1233(iY;FLtAd2)0*TW%zx-!2AO035LQNPF7d9Qp8h!{yP+BAiFpAt~hf9f*a4Po48 zjJ9Y8bn5V*#p_nsipUUIFzqDzAfdB8E`mDML%ufIP?o%o+XrX%s3l78>4@9u921o4u5UM6?PJW47_#i#XoPrsPX!djGEFA7AQ$Ol0`i)2ZEABqDggQ z1^{~ZM!oF@0bHb`=1czywOWZx+ZgL&5g;R3l+PomJB3*Kh5<=p1qFh6YAdF3LTpQ_-(uLy4pj2Z*f z|1w=L%|SC7;rqBB{tPE4#xah$x97a&j1s5l#}q{CuLjhqmiqRa3UbMp3BN8}1(m?M zPt>}uk*tRd?9GqzmuP!HTzA;R{-^ z+|SAbC2NlB$^1>|?oyz5Zu58apJy1S&O)^+0(LmgOiI>!dlo$L0=ILe_b@~7q!xW| zbyP_LRLWd?GyaM>WMK3p?y^Cr4bE56|IAmj0glTEtUj6=1aZS1k=0H*3xK0e8(vpD zj=HDf%o)44jZk@$J4$e|r@$1$qZSdra96ZZBv;k%KxZ`BY z?CDnX#I#}+2VAhG2S3-V384(s6IYtn+(Y*`84q&I$;;46H(l!1FKfw$?CdvenLYP? z01e7n{L_+!F2D!=xN}Ta>O%I;N3V9{anpbVVqfPnJW0i|IZCAp!~tJ#H5!2fY_dGtIl2>1jLJe z{(kSdLo*03a*aAHx(ekhm0h&qv9}v2Y0Hu`Bo4wWO^h*8_f&_x4&qp+ALnBlDS!sc zOM<7$y&;aNfBDzxBZ+_nZgoZzi$p=m6>YS*I7bpVpQ(kfLz{&F(E}-UVHkS#N|6?t z`;CH5O!nP<32$vs_Td8=CT}=!f?+vUI_hUXfD0~oH|D-w9Ckn6`Emcm^N@6|XyrWNR&B60|;fpyt>}HaOcVU z+Mke1ZP3k+61%s<$namce_fybrUUou)&aR+sNYCaAsg?Yt0G?fzBmimmq$L{|o zA+9oTm@d4M0;uHv@fUc+7$~a`$Xi|Xa|A@ab3w3h_H{CkK!0-Yn+|aF2%+V)^}7La zcZ~KrkWugVR3^v<9Cw-Fux7*9Q%TYxfSL|!h*`G5sPXpa{hSJCA#mZDYw_>>Tn9?p zy81a}AALYvNlA6RAYDN3KKJDIA0hx^UJFbU^?|bsC->Zo_1CJO;qY!N)0I{4(W>xt z=T)4WKs%w|zM^_HV>hngak)9y~8S&O)onr~S5U zTVV~H;Ne;0uWug#;@ZU)XwQE3z+R*((eeX%lK2OEJrDKHC~+ortBL57Z-7Q8_FQuu zHbtI-MGDe|e1EoM+wa8w$ z1UN4D=e&P)Xl>j6cH^yodVw4H{bb9paX4eK#`K0%h8N05w!#%hW#mCAn6vwHo0c_X z7%eGqFWUSGP}tTg8fhzJ!261O+ieMC;7W*Ott}_rz=fG+<~ec;omr!o&xx|eq4GGJ z|2)%hpCc&SR>usyxKIx+-C65P^j4z2t|3e9>zjR-x_0UJGdLZ(4sU)+HQk>L{en?> z4KZ&2&Vy&)PVd1-Unqb^V{JIwd3KPYF0%U6lW`Vs-Exe$ea+Hg!4>I30gDSXtk1k{}qB(lmC+7&cZk+iuOG4D4$W{l;54d7Tk%4 zIBw>lxFk0;vTiJ5yEMlQxRL{Zb;5p!L!6H+-`(K75O5=>O=-OAs=$>yFF7=rmr$v5#_eWh$_eek45a$ORCCq1a)Oolw!@s0B zr)6y&o8fS7<8|Tl?;HVj9q8MAvIy1z<4sz~-LBIFmtL7;q*lKaKm!s++wSX20}7F= zj(3@aD&f4d{Z1>cTLRZ}ZXn-{Wjura^NUoZs3uo**T$x1U23gC{Yf}_KjCh#8^o1= zI3%QOqYQ{=(Ry*MqX)S3I<#LlKhz0`uXxQb2R*Hgkpo<_d*Zx-%dVOje!2y%3fJXS zR$w!sM`|qvU**`%9C2dmm{-M{808s_SVPj%wydx(r_KKN|flKph$-eb!;-Kt& z=al}?Hv~|rqwZFz5Mdjf}b?=O6`ZM7-5^gdA!Kk*Jmjg6M>2)>mDHOCu0 zuH9!Q&Ssy-7cGoMYh3$t-UBTv$|v}wz}>`ye#7xYWRv6fvtcX^zgjQQs|*2k6}xgP zOUnS!#UcZO+hE^gdD#zEzo}FPj%^b4bX}P948mH@yimHma2;@?E7D)OiP!<6u6Opb z%c6jiSo8eeqzoE0>rmj%hGnQ5K3K?FpT7-b!T3>;{t6=-Ag;eYh^(Zqk-7yJe1)u9_=GR>7$8k$yWWH3D5Vi2IhyyWP%%xDI!JspG#A0TJFU*NTou zb0`a#yP@(P8cRQWgxCDI36$N6)9+mT!37)e(hwCJL^Z3JHy+wO{}obyopw9^pDl)$~WV{4XG=b*hi@XA{OXp>F4SK5^Oqu{5S!fEF-p| z6-y&G&Ttq{Uos-`t{b3X*}65i=sFNbOI8uGd=1&LMr#L^DRifVjrd+0-*y;Q6Q?Rn zIlX6EfD3JEZT|B>V{oB3HJIIXaR5|hEbpL`9S&%;GyVHD^gJuhT@hh1xmf|ZsH}+l zsffCcCOB;o);9>;uwwMOCr-A=WnxextO@S7Fyhd^-MVq{z>zK}glyK8hdAny=;`0R zW58wC*K$olwE>l;7_5DjtPDy4caNgfGC$y2R^F<<{h=Pvz`z&93sKUbENwO>1a3o~ ztdG|Q<2pWqlKpgUNn9kVMECHxo8m^aV$BYM2QN-Sc8qIASSz@U_8;}(zkxT3){vp? z&;2X~YjN-_Ur={JZkhn7yTVVH^e76Hy+)W+LL7n+K84!5dY>WM&%^e^QDhc_+vOE5<74PkAa*OI2w%Rt#`_-+9; ztQS0oZ8q1cZ$sl8UbG1)#CL&bg!7xDMW#Z4XhA>bjctSL1IFv;)~Xv#LI#Ff(D|!7 z(Ou0*iJg>&YY=dhE34)`nLz8n_`U0QfQdeM_AYIH=!fpJajGXrrhHr!xaj?4)70On zdw361n3$s!aP7C=xp=o*17hFjEyF`-g9ys#qi~Qd&V*qu&*i8~|hW&@t zxhzl!^ClvfWe<1jnEVDrjm!UeaL%E1vl*=^Q-|Gvrq8WL`=j5?(ZXw-JY!_XX$8HAU*WgNJcnFy%$z%Bov zcF2G+#8p<_vy2X(e{~zyR;RUBIrt5zQ2RHh%f0D~v;2MI{ZFut-u4ywIM)KeOIH?n6 zhSSAqWkD7&LhSk8P`WO9Y7MK6**#uiCIoSU?BWO~C8T7vCy(#SM%~94ayq)-U=WnO z)wdjC&=liNR z#Yn+g;dNniJ&d->Lq2{*=}?NM8Yp>n$+f2A(2Lm6rIRD;)zON-4ozROzYtuoiX|q` zPaK7s;k1*kMLM~l#CuL%^6WO9SyU;!OfxudST+&z^&6Xw^p8M)<4l^0WNsIlQ70kv zAt4IQs7j0Qx}QxJ!9WRhsT z)6n~PeaA%F!7cR=H(F^xTIPk$lBT^;CNYkaC_|F}gPU9uAnIqL=I=WT0HqztA{AR2 z0vb^n*`55FGK280LL0Tn*XY_xZ+$wgstmn^r*IDmoiRkCZo3$x?0y(^0jFxW#-Rkr zjuS17`Xf}dAp%p80zGne-+!>eHwmuz{jF1O+U-6;=_54whR_3EQw5>f+ zOOkT|j_#b0B5~s{xX|9~Nv(}q2dG6h^FP0Mh}M>(b?erOk3zsP0qo3FFI+?&nNc{S5CHEvi zUj~hC9Qy?|!)q(c(p@`I21aC!TyX^S1SX)xY}uU-D~9v`kfaa4MC;dQQXlCuKNCE; z_gBd>;%jFR)_Q+gk{Fo+9G{an|EUO!1?z9l8>G`9AJ)C{s_8?yX^5j<#H>G=`v9sI zaK9ZZL;GRSuuhqqu>j6_@I4k#h81tg;)F0`0Zc_TO88>qzUEchSfZPz@t; z>#Ht6SgTWFe3p6$#8HbQTaPTZ24!nNgaE&xj9fO){SpxlJ%KY$%be@-DuOuPXjkqa z7rF=I{jjdsdL6yGBTKDi60gGi@cc-P_pfwNmp6(e-Pl-W3NA%&30DbY=8%uCW4Qf( z4f1SOk$Kq`OaQLc=vhbW+!#RAXnsa7`o;myT>T~0^JxHZb-!$T`;xq85JumwVjwzz z&Jcbfz4&Y`n&03?+cN)55R4k{*oTR}`Kt&@ z*2G2MtUcC%Xa~P&&h;0WK{!|aaapt)7m&~NkZWd*5GaRZ_S&ldmH~vvtERI0Q6<=? z%FT`@psOhHNLWJBbyUyc%XCU(Xeh)nF|l)3zo4DkzUqeZpA}FuOh6y{?tS<-DD!NR ztc@6G?j43}pBl~nPY%H;V(Yzz$r&Zibx2m+vv0NsmwuKj%SQde)a=uITvaqvG%>t; zrNphM=S%(BggONyUYm%LZ-ceMUVb+u)=|-1 znBQpbo0m_+T#s_5vPg!6Q?I$5v8r@n5ZKpakg*R^>yj2ffl-6~J_4ggM|Vwp@DSDHci z$m^Q1yZy$%kt}YwW=YipqVC_A8X4sbN~U7dAN|??n{O%2HMxY|>BHLDW<6HF>_AB( z_KI?yS>VFlI^?^pOB*;z=NIGz(f8R-#hQSCWcNj2yq>8mt=C*ngYk%BqZse3fb}Q!VN#e za$sawbp2sxtpFGc)?odH5JyjhxYSLUyyNo#@a)X9HqUi~d|2D&1(VchbKn?@Bi}x- zf~zn-vR746^fRjUK)NgSL%=RjlGGI}6W+o6@Ghxz37u-#CI9&)t0Co+iVC1)?|bmJ zeH``osEHf1Y~=)Sl{e-zur^BrqSUQ-_jp8^K{$8qJ6Hd}a^N~lda`b}g#hAIhh;T} z5wJ8F`^;VkmS{dB~Py+&1zg>hX*mU-jf6GQY zP_|K@j(PP|L-w+dqz!=@s1m(p*q5J^sLyD{jB_KxXm7UcQ0%d|WDPEqo9&A;pTpYX zlqi;L0@(#T`-R-Eg*TuL4|>P3Iti#RQS{uJKtoWnP6zAPu|bJ*ugEOA=D-By@Tr}4 z%YGp=@R{TrpNd@SzINU(*DC@STugd3H&q$pvIAwM8~7+g=fd(0H^tHZ6A05fGrhSG z*EjFduTo=_y_A1@WdNN3F6{Q@hotqNO^&oJg@?)$rJyRePXVLQ7)*y!O0Avre*j_SoqMAdJ7L=k@$!upYQTQ}2DuUs!*9^GE%2PNl}=+=XhI$v(1Hti80 zdLD0aPYF69NEX!FgoQ5PLU`2sNq&tqAaa%K{Z%WV_c5yZ^_#-F@!-NUa^nzXe?S zuCM;ZSuPLxhJQ<3Q(T)3T({Jqljje}hf%G}QofL!mrE@BCy$T17g)yCwe8!*?@>MXi zqr9KMjPQEB`78J0+kxXI)PDW=Cj$^|%1@@Sei9Hn+~JMfPc(N*Zq|IadVk;s$-?Wl zyV=elyfalHY(M~W$Cy(=6X6_KcZ`)Q!b++224$7u$j_GzFiyOJ6`(`nz#Om2qLn)8&$cBe0vL1AerO~$Kh&H3cI)U+6)D;tjjZ|@ zFW2Hp5sZaaEj;vOjw6hP7G>|9NriR5iJJ^)KhZBh;LRf4eeLgJK-oR_&x0k;q>;;- zmrFJIvcS>PYkaCb6ZbWiUZfV<9KNMRxY4kqT|ArYeaAvG%-{7NV5dQE*jo; zAz2fY@6V7n6#PIn%QYxmuigR(ryp77B37OWN@mT&HKKD+%^KEhdinh(THBr{JL0EK zT0;houFl}*`t1*2$>1sgCA}?*J6VMab(2c6zkRPZnBX0BVoshlQ zt~JNjY=I8>&wsE83ogvQ7yS0gxZwIqaKU^3U1`CdAeTBNjz2#k1U&P;>s}bwA%G`C zBEr_J0M&YU@yRJ0=V;(qG_NZI&(Wxx10U-Dntk<3-|$nbJ?AfYQi7|h>j@|WL-nEO zt97tO7{xci+VmYdZMwpY!-dNNAa01VXYG(%FXXG=d*{fmf3GDLt?mW~>Wa*u5nupOz6#BgJmE$Pn!v>^}O3OKC&&1*UUpj5E zK{Ci?jK*};i~}@~JclD71>Ws*$*)bUf;zb5(yptgvtoK@G+ z8dK!cTYOniJB(VWXT2Z&W&l2TeyQfJXWJpJPEA@yD++lIzD)hM_$L>*vZo3s9~q&O zjJt3^8@uB=!(qIZ@9&a)Vf``oCs)q=E$Ad;s0f_h~W@rrpJtc3_a3$JEtRH#W30; zG5PGfs7m$Uw67%8p;2>=|Jm&N>pWy2wWl7}yeNVeIsci$3E9s4)20R)>Y=fQHNL)o6#k zA#PYXqg3SAHb5nMhEm^EP#m#ft>RVnGKl-AKjbg76Y^p0^R5`?qG$6k{_Vr`@2)U1 zteW-K@9QOP@a(Al9QH4BJGjubiQOlpjR57&pFh5NH=0qSXV9FWXCc5*nfn#${h?-f zchJ_U3m25Zlk4^IRmAbxxUyHQr$vsyQ6j#aPyC2><7gCZj?c6Qcvd~yzdBKp0LmH( z&fP0Qs4lbx=IJ$`QNGUgO9rXNsFQCQIPQO7Cj@cqJqNld1J;20@_q$O>81msOPlP@ zuIimZ80|Vod!8>;7vo%%o0s;~7L=SdvX4Vm;JSp9pNs~VD#A)*>{G7=JTr8!Lc10I zYYn*w;(7+fk0#Il3lVL3$iQI@m;>IWA9}B>C<>I_f$ph}=)a8c;eBIOFC;C2YZIRu z*)@V{&FdGF61j!mAL-*KoS%0&0F+cqDcNofbi&spPJcG1q51U_TdoQiXk?Z9Y|~Wt zj?Khjy!(T@J;@)zrG3?A2~{%85ASUK%gIg{2d=YoVe(`i3*s1OTo`jNSOFTjO8q%` zQUR3Y6sm@AK`5ZXw}+^|f)@ay>=)bgfFurxw(^*bUujzHd`N zS)OwHO!$}^pf(Yy`p>hURkgVOA75V@Pv!T$trC)i6p0K)Dn%12xsggyNhytpN>YX- z$y7;_N|F>sg^+nlq8pj#*)gAa9wZf_o}Qnz{oj3GUZ3k)*V=pSwfDWxan7;*(jj?N zrLL?6^0whNkgx2ciR^~4WQgm^-&ystG7V5&q}~(x$MJw##(&)T^vD+wS6rF0SQ_0q z_*>pTaorL=&EX7d+)?c@%nze3m-y@w3LHi?deE1`S_3YG;FZ^HeN`ZCU`>Ra6H^}$ ztoEq!)?#-}97<0kl4F7d!LCJ7; zo)q(-LWZXo_kQeHSqdEe$A?qhKZ^kImfrMIO`7S6?yP!eeg$yU)bkO-kJ`Ycy}~lX zXMPZHL#B_skp?pkz3%5i>890n~4yaOrNBBgAnE@`!ec zyMZI=_}^abG6{(MZqZ6MANC41_%U(yZCfsId{M`+&CJcnMe$?sz+bc~Sxxs_Tw7W| z$;fFMxv#DT%F>MwY%(U@09DsI%WoQhb-;K@jhm{x#(*oMJbXc%M+7vOzMRe)FZKQ( z6v0WePhH&;?foC`Vd2%<#j8c-;-}*=${%IVf-!`8wMJ?7cT2&WT%DA0DXjreS3a(w zJ`5|4GjfPZb3aA_M+rHVz2z1Jo&;rQW;hbV~Y+J zTTs!f`~DaHp_?3akTO%ad9wmKpV*5R`+%#sk|D z#DM$y%iMWRLI8)DiJtHA3$jNN-z8VBorsBWdEFuM#dZtanJN|0wqx?;_NZI^Pns9?6ldTVMW2U1?eKy)(qe zgE-!BwSKgr4RCEINAE-gqI&Z0xx73h*asZhw>B}9?GK3JsxmsT@GYR8mfb$$+g%Vh z7CO&z|l@6pK1$*T4OyW z*&7;lM!}^;B7@m`3)N+?_pB}c7_HI!iTe+TcM%FRUH+%@dLYDc)pL{%G=xHi%BRvb zy7{FjpUdA>5h@yh@)T|@tP;dS9Qk?Bj`-JPK%MNzpKeHagOadwwH~*%7!Y@Aq%-OU zc;cPalA;pfvcS>P&&;zu6#^~-f8(w{K|+9Ns*g5h=@9@m^|bhgm?uLVbHx%oa!nVY zGNqAEH!{)4s3{M3`fgnU+&e<^H%Dj0^;VupGp^SMjy-n|BU&4sJq%hxqUO;xz_p5< zsQw#|dWkZnYlNRoo91wK8gcNCvl&7`>%#(mp+4h=yB7q!@Bps;?zdJ6HF@x?FxC6s zd;+S3zY(olCYwqGjy*_>#uYY0+z|0f%`rv9k!~b}?&!7y<=|sK=XcP!uKy`dO=|fur5i-@g>En|;jWAN^F5c|D4Zw9iOQ~}i%L0zS z!k{uYI~Y(4>p|F8WhX$a1*_@ja&rLn$=yBj@BtcihQStN1DXnO+>|?qeMhxDm`8UE|h%nyNlgW1v|&$7G-ZO1tkxw(tJTA zg0lYEgJIczGe9)FclX9eus8AKH?hZ`tE)g<$DN)w2kW5e?I?n0n`#%X*eCTLH!O@L z^tSwy2s}e@R{KqIz1;+45*(2o_!|Q&fOi{;8$=C5%`s|7OpM`kDk!6m_H4Y`jz-_H zWPIJ8xMbi+WzTw*;~CiKQjxE!0pC&?n9&`w1!3wJduYuR@zaIxM~|f46oE%D!FjtV%+bYl?UTq z0!KBOV%8Kf0lnlVbw4wPe0Xo%x59cGbaqjfd%VcK_XU)k#cRt1!#@GFJpP?1G7J^O zDoa%^QZtbYSFik?y9L^LRr}R0S0}^Bu!d`U{A6Dgf(uD+&pLfF)EZ~xmv|qqke%i* zQqtOn#hGG&7`O%gWf-1dc&*#)wTB3(N{t5$GrYdlfb#2)>snhq#{jWYqGX0<8BQa- zez)P~X7njstS@_goJ9u#IM$YBHd!}1Ag-lnb$W218E|29Hw-;H9|(wgSWjqsGITj! zw|LWuEi<3nBm1oVB(Oo1XDY8r&8n;bPx8SP8mYGO;L`3~IAE^<*|A&h(x+Yu34xL} zQQPLnJpoGQ%J)WlRzv}+J$%9WwmBLZ+qh+5?wzv`*BNx<>ZMa?MkM|cgTMVe0IuaK*^Jy6_&3UE6?I7UlL=Mg}euYLxNv}23-qi&h)oryH z;baw{K4Yew?s5Y_#YMZVzRaoSpA6>xhilA#@ceeh+3Jt z07v>Bc|@|i5Rky2HeYfB>ejBL6KF=xrjn zP)iy#S}0PW^~nd9-8tuts=k&t=i6H?Z!QfXr01w?wx;BbH1+k$r?T)Nd^3zJJ>#plz+X3X#HD&+HQ$`D11h1RKqTXcz`WV&C zWb8wTy6N>^=b68TQTDU$KfJUaJo%v=jof<3fb*5d2Q18?U-0s8PWyiNLr-92Eu(gc zlwQa{UGjCYt8zTJu$#^)#NI$VjvG!6eu92K4J&`WK6Ej|3E~*`&RzL3kr3A_xxVDY z_Ax+=qbFray0HK7e2Lhzk7mAA$B0o;d)^%Z%B*We-yU5;BNP0bcyuu?5Hb+sq8Z1c z2!KB25}p+J4Fh`PJYe4Y7mb?gRk!rb{R!Y$%6ef7;;p>@2SxB!QQ{EiD)ql^SRA+2 z7Xy#wOvhuTgRT!%?eqZ=O~`W#f8GY~PaQ3{XrXq1xI2D5cs>GW9?pu1a-JXd8n~9j z4K=f4p_2H}lem$BOU1yEzaM(0F^f5kFm^hg3_P% zF`>#?2)KS{*StsuC^3@yyrp&cZcui5b*ca9^#w%qk%_>BHUg?2`=Q3Q)dUyzb=DO- z^vNB(;K*W^^S_|3xZt{qw{7YqDCuTHWUFR$S80-eePTgBR0*%p_nAS+ z%tbEkAFO7d&n*QP%ACLK->cy@7|xuq^5Q;70zwB&Q1?|`%2;ppQ)-&SSW1gG zWUo>K#OA#B7axU6U>$pnv#}mK;K*&(R$4Q^6iutjl$4qI935TtnPu`#bZ_GP-1R4N z6FkANUfp5F39U3V7GpO{H9^t_8f?tYgv-7}(F?saL(8w4d`u6^V*V@1Z zXBbpw4!oM_-Pr@A#m`j0rSaFn;YXKX4tQ5nRoj8idc`Cq*Mb zL-+mnzh|BTmnz@-FuVCk*;?>1i)e#t#&LCC?N%fVN~&i**4_qBKCJ#u$+M2xPT<)Z zoNqc}Dg`LiQLn4I3XQB^D_ee{g%G%qJ@4;$r3&w8VYH670UjQT5JxmophrB|45;&0 zU)TcN08onU#f}Od5m1-kRijfBbjoql^w*VoquT=M!o>5KVwf#fpFYn`cIL0Hq)v9+ z`rpuJc;0C1_`I1{Kdh#Xc)2BLrxLqkI`nVHPUpjzjvH0abX%e9CDc2E{_()EzP%kO zD$@W&a?dfZoH`H6p)DOtA0M*-H1JeY&W4P}$v&*x7p;qG-TmW|jATI#D0#^yc1<(C z?fr3~&Y!26I*@@T$=W@L-r2yo#Y^?-A0z|E�}7yj>11L*&H#^qer@D8-&NOJ!t$ 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 literal 0 HcmV?d00001 diff --git a/frame_1_delay-0.1s.gif b/frame_1_delay-0.1s.gif new file mode 100644 index 0000000000000000000000000000000000000000..6cf6d7a0a8ce117880b514289bedbf447fe2b475 GIT binary patch literal 1602 zcmeIxX;V{I7{KvpZZ<%c00~=CZjy6}txANbEG`Kkivnd;Q9zVMlH9Ng0kzs7h9w|@ zfMJJVMbxP!pvWNY5X0(>Q-a7+p~|LJ(NU&FeF4+(0s0Mk<~RR2XP$S@%<&8Gb#p(( z!Ei92F__$w#;IrUXN1@@C^lJ$O%`DVB5X2>6>K~qfq@7T2_d1OA_x`W1Slj#ArT6p z8*pM2mtr8sr6&?H5(#NZgtQcVRx06aJSi)ll%7D$NFZh!nn=t{BxWa(E(wh#X@r~% zf+U@olTOS{C!S9uoy#Cz$RPc^hk17ov&{p( z&jSw(_@J9-fas2c!8kB1X8xW5^b#<7o;7w3v=>s_i>MFewml_wk7RV6j6R^C4V2Rc z%W1 z&i0_k~&VY!h(quRWo+wBBZ>~ zSA7=#O2!(-x4gwGcu8TSxl$H>-Es@d-*N88{7rGs(ORGE@CJgJ8^=x_*1*lfo+%eJ@(N@`RMnS9}^J@J#wLo&3! zW}myVpf5{IS=%fKdktAq2*OfHIK4ai19aMIWaVUyB{$Qz9)pX1*ygnJt+GH~Op*8$ z&}kX>7bZ_wnwX2+xy*h`-ui(Lbe9~}{*qez0{P}($v|W)W7l3Lqb~>@E>IycFGIROj8lVaB-?HcN!pi4;u6K z+Eq@=%y?3BYwU$xn4{B?Q3^;~^`*~}8>+Sniw85Bp<7n))ozznKfue zoX$H)%|q9Hmp2*3iDLwUq~ymhM_Y^AwISxtHrheB0K&hjKT-NoOAO^y_6OSl3t!vo zg933q)~Yzf)VUg3z9R)yeYg`r94RUExW!=4J4B;<=;`ojhnG}uHPE8jzTyY>lb_$| z{rH)lLzw2D}{U3S~ z{q@?~0RHxnQP00#W@-;7OuU{tUNC>}=AoQzyQ?pHm1c$6q1|0mNU?jiN*wF|nK2{& mP9V5(^lpP>HnM`$cDZXcri({8^0s?k?s?Vus2B%fJpTopARN>H literal 0 HcmV?d00001 diff --git a/frame_2_delay-0.1s.gif b/frame_2_delay-0.1s.gif new file mode 100644 index 0000000000000000000000000000000000000000..f1e016baaf81b87103917c62da8d469abbe9ba68 GIT binary patch literal 1502 zcmZ?wbhEHbG+;1b_|Cvk70+E2%afnZmY&6&p2M7x#hj7NoSDs>k;9w`;<97{Q8r6< z7E2b8%x1~SWX;QB&COuT%3;aQVaWj@*4!M{JRr(tElg!ENMkR^V=K*PFHPnwOyMX> z;V1@@sT{?r9A#;o^;z82`J811?BxaQ6-7Xjqr8x#qL8DqkfW-Iqo#;+iM{+fGnMsb zDl4oMS6V5quvT1Yt+>ikX|<)&Dl4T`)=I1G6gL{HZZcBc1R~Wo8LMqHQQcswy2(U! zley|lx+zYXb%yZ6f3gOL2kLPTw4-InTyA$*m5m+kwbYb%%r6nR=xS9pW21#kY4$?&^^`+$MLZU*>qf+|dcLM<>c2 zn<#r?lH5rknk;u}vfTA%)vK*47rK=$PE)u%P4V({#VgYkuS{3GI$iPFbj2G}ly6T` zxjRAi?nKpl6IJhnklNK5idSbUUYh|#O1EYz-<_>|f40i~IVullsXm;e@_3HwXW&uPv)sU1)}*tw%Su5ny2;*h~}$3pRWdt7lu(lK?o@RWZ~pun9867 zG6R$+7&!hhXmiSVY*=uxnL}7B=ER1DhuZ~|TJ`#`=YZq9kadDw*kECYPn;QZu zC%V+NC;3POsd&k0=pXuH;o@<8nto-1Pvykt6Z%Y>xJ0{By{G9!_i)+HN=-i2r@Y8( zYSq)e(A9|^JsKB}y*kyz$z>riLE&HoQ=FP;)Rv4%GkG`zenh&w)OHlp37JvaprkLc zEn9rA?}0{N+>GPj!xQ9iL`u z=)^6tymNE=^R}+F|JHm>u6lDr?{4j8)+N$gbKZ9!;9qd*M~{eT< zY<_(M16y25rDx%>hJUi(Z*y1bK6fbj@lf0~L&)mDp_rGfYO^K9coO2;B$G5Aw#imS zoKQ)3=(yfpQK;}RT<*~G=z1QbjOz}szTUW&YIkgVvZ^KD3wPOY-XHg(%4SY&1A8plG<1d4l?umY8$74V2F^|9L))hvKv*~re|AC zXkZP}-F~y~uIlp(QTb12Dl!T2Ent$LxA(cUOK$JNsWaOqbu6mt3!f)EM;ri;mRmXPSX`8%)J+QB?z%h_lE<qV0g7@$hEzvr%q)!ood?he7f_loQ#uVPv%@$ QQS>WE-~yk6hya5%09DB8p8x;= literal 0 HcmV?d00001 diff --git a/frame_3_delay-0.1s.gif b/frame_3_delay-0.1s.gif new file mode 100644 index 0000000000000000000000000000000000000000..322e177b14fc89ba6d102dc85041d9e87158cbcc GIT binary patch literal 1602 zcmeIxX;V{I7{KvhZZ<#&0TQ;P+$84`Ta^e=SrijM76rF;~(hf=6;He zVxvBzP@?ij1VVNKAtMo=nTXFaGzp)TgwIJPToRZ_(s8+& zI7tRRHv^xSfj^&4IG2gPkV*J?FXQfBM!N@m%L8urgl`#m&~F=f(rY#T`owcE7IkPXgHvg1G@GCjTfWK4RpDKt^>^b`$2h#wek?9%HS}iGKf;^ zZ`aJDsse25zqge|S`3jDMjKR62P>#U z71WVR+Ngn&_E<@Kn$Mgn0Aq5x{+i>{Yw&~$ex`yaRq%|GF8^K}|SZV}IO<>t@X$H#%O~@;QX5@7< zveW{WTYxwfLj8aKV*~J4$jBI_Ms44mZ~h4segox0a0uv#Z-;&2n7%!su#SRd9BN=G z)Pr*JHo-)ZzST!&??dYQ@@Y|bm2!~mJ4#YNQf-SetKun<(t37@!h(Sm*U)$8A%y&} zSN#?NO8Pp=ucFmEWLaUOxl$f+-Eu24z;XV^0;BlnqB`H4h(?^b8{1AE)oN_bqKTG2 zu03hfNZti0TIgdx1&ax(|BO3@QmqMl`Uw-b@wv`(mhJJ8tb zq){{PFHW7XG$jh%Ig9~I?#6)+G?!eJS81Jnp?ph-Wcf{4zpRU;SogZxp0?yMzeBZe z?fv9*%B4B%R2=`;8;+EIZFkhkMWC9Bn@Q@fzJiV?&tAT`4yXd`x2y#$smi8?OFMFH zfmy-sbV%5Vbr~tfJWEa}Q8%vHm!Z{^qKGS|hhqv3*8i}|auSgzN5?{(PI>%ttgWO&8%lJx(GJ0d5cXBWiL#Gcd>FfGAjAe(_}N|` z;)@&5Rwbck&Na}=9Vw{p$D9aeO9^4eErxpEAsXF7Plr!Cy`_4q!B)+VReyMZ^!!fW z$KOmu@jNI4)0`2<9Y(4-vusw&J>wNK-#%i2g%44b9=;ewpYIHz{y z51)0L?XY`~HTuOnjlA6lx43hK&Ei99of!rloBo71@{)&R4(OdVDY?sk!J~mK|;<>gk?FO5Af);<$j%^jYzD leEyB2cN-;hQI&-D%iU|S-CXjKw>=AT&#TTy#TW?X`7eTy9LxX! literal 0 HcmV?d00001 From e8cf001c6b2ac10dc81eb7f8e321c7930fa7d699 Mon Sep 17 00:00:00 2001 From: IceGawd <35550454+IceGawd@users.noreply.github.com> Date: Thu, 30 May 2019 20:38:57 -0700 Subject: [PATCH 3/5] Maybe Yes or no --- src/Game.java | 5 +++-- src/GeneticAlgorithm.java | 3 +++ src/Gui.java | 4 ++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/Game.java b/src/Game.java index 67dcb57..726d8cc 100644 --- a/src/Game.java +++ b/src/Game.java @@ -31,7 +31,7 @@ public class Game { public static int maxFrames = 50; public boolean play = false; public BufferedReader in; - private Timer repaint = new Timer(18, new ActionListener(){ + private Timer repaint = new Timer(0, new ActionListener(){ public void actionPerformed(ActionEvent e) { frame.repaint(); frames += 1; @@ -66,7 +66,7 @@ public static void main(String[] args) { } void start() { - //System.out.println("THREAD: "+Thread.currentThread().getId()+ " "+getFitness()); +// System.out.println("THREAD: "+Thread.currentThread().getId()+ " "+getFitness()); makeFrame(); repaint.start(); } @@ -118,6 +118,7 @@ private void makeFrame() { frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); panel = new JPanel() { public void paintComponent(Graphics g) { + System.out.println("yet"); super.paintComponent(g); m.key(keys.r); draw(g); diff --git a/src/GeneticAlgorithm.java b/src/GeneticAlgorithm.java index 54333f4..bb9fb66 100644 --- a/src/GeneticAlgorithm.java +++ b/src/GeneticAlgorithm.java @@ -24,6 +24,9 @@ public GeneticAlgorithm(double mutationRate, int popSize, int numInputs) { this.mutationRate = mutationRate; this.popSize = popSize; this.numInputs = numInputs; + System.out.println(mutationRate); + System.out.println(popSize); + System.out.println(numInputs); } public void start(int times) throws InterruptedException, ExecutionException { diff --git a/src/Gui.java b/src/Gui.java index 782cda0..d3cddae 100644 --- a/src/Gui.java +++ b/src/Gui.java @@ -35,9 +35,9 @@ public Gui(int[][] gg) { } public void train() { - GeneticAlgorithm ga = new GeneticAlgorithm(jSlider1.getValue()/100, jSlider2.getValue(), 169); + GeneticAlgorithm ga = new GeneticAlgorithm(jSlider1.getValue() / 100.0, jSlider3.getValue(), 169); try { - ga.start(jSlider3.getValue()); + ga.start(jSlider2.getValue()); } catch (Exception e) { e.printStackTrace(); } From 922a01af039dce6c1ba52cdd48dee1215a113632 Mon Sep 17 00:00:00 2001 From: Abemarkar23 Date: Fri, 31 May 2019 17:00:20 -0700 Subject: [PATCH 4/5] fixed gui bug --- bin/.gitignore | 10 +--------- bin/Game$2.class | Bin 773 -> 925 bytes bin/Game.class | Bin 7059 -> 7058 bytes bin/GeneticAlgorithm.class | Bin 4037 -> 4464 bytes bin/Gui$1.class | Bin 0 -> 599 bytes bin/Gui.class | Bin 0 -> 7619 bytes bin/Mario.class | Bin 4105 -> 3781 bytes bin/NeuralNetworkTester.class | Bin 3752 -> 3151 bytes bin/Trainer.class | Bin 1589 -> 2303 bytes src/Gui.java | 14 +++++++++----- src/Trainer.java | 17 ++++++++++++++--- 11 files changed, 24 insertions(+), 17 deletions(-) create mode 100644 bin/Gui$1.class create mode 100644 bin/Gui.class diff --git a/bin/.gitignore b/bin/.gitignore index f5d4628..7ad6bd0 100644 --- a/bin/.gitignore +++ b/bin/.gitignore @@ -1,14 +1,6 @@ -/gui$1.class -/gui$2.class -/gui$3.class -/gui$4.class -/gui.class -/gui$5.class -/gui$6.class -/Gui$1.class +/Gui$1$1.class /Gui$2.class /Gui$3.class /Gui$4.class /Gui$5.class -/Gui.class /Gui$6.class diff --git a/bin/Game$2.class b/bin/Game$2.class index 57fef853d581d621026113c1488d19baa44fad8c..1b94b7e78b4ad8b42b768f5c408fd9c04c8be4bd 100644 GIT binary patch delta 442 zcmZvX$uC1u6vltIhF337l$z(UszuFH&0|C*5{Zq~6E9La@H~=d2pc;a>DnJb1hMc3 z*!Xko#A&;AZ*tB(=lkw=zH?XnsOew7AD_S&YY+POO$pW1YSbuvhvvB%NtmgF$hLdx zSV@CA>J-PhCJISuE&){C#}`6^>r?@3AI9#%6*^O_mvpoWeW_u0xwy<`k)* z*$mt5LRpb6`Y})~`Da0N*{a5Z1)D{dx^K$y9SRo9qBspZjaCp{*sQRsP?5r@*EB_3 zi;^NaklT2yD-u^>M^43ht#lqg+_c$ZyPGv`)Is;zczkGJNP^>fpG>(ubf4*Ao9~hT zU@cy}J{#}CGDu4u$CTP3$t^kV$aBxATr$H?j0qzShaGki6O?5$*kfP1DK;t`%A`># Hfd}yqV_q-D diff --git a/bin/Game.class b/bin/Game.class index 1602dba580fabbc053befcaa58d430270d7af103..7f0faf28ef1f808d68112071e03051495d5dd8ee 100644 GIT binary patch delta 352 zcmXAlTPTA87>1wUAtP-~%b_V(zij0KZF4BK78hEP5{YYRNx2bn$dwSaf0*PLxuMiQ zQY43z!_810PHiAEm*{7f**Br8m@PLL4O>@uSnEa&PR z2IeucKqiaiu!JgkA_;U?jAB6-ajLk)#}zGHi|;rc+|t7xgWT)k9KYgy#LN>m yo+%VCH|Gwcq@nBARqb~Xg- zqgpI|h@usr_&{w_t9=M20d3X3Tia^iwbr&)+p6v9spt4dPd(Q3yED6aq3tGTfA9Od zkMFy`yU)Dy_>%zE;B^%~1#>qUX~Qw&>yv$!Z94ra6#>p(st@XoNj=@yxNY~PM%+;_ z%Sg) z$~n4YTInv`;UT3(fts;0-R9*oYNyC_F4dmSEhgRjvW}6`@IJhs)>%1vAs-Oa zYTRy{X{Xz<4Luc$FwP%PaZW+a>B}0<#aeNRLhWhCu~3N~AjIpIQ%% zE~dTnF|oA`of@`byMmCO$r$N`f(jaa%I5rK^k^HpG<0JJA?8?~B;H?p>JiubJ>toZ z2qSy3hMg#-GgG=rUk3%YbgE)1m`&~D16%cs3%Lj`L9dFB7JTTE>=gf4c2X_WhE8VO&IZB$GZ)C(2N@~6|^}r$;t@g*dtzBHw*o^R0S1W@;?G) z*?CDC2Edy`+1&1wNklZ~T|QHRje0UE{EFpWHgml#C;5Zkt3q0Xg$yySC#dAK7uI= z7q?I0Ng*I4RUCI~xCi&rGK%f&q&2w4S;PWaT zBo(IZ((nZ#Zy>7=8ex2qL6Z!Wr+0VUvW>Ma%fBQXepsm6aw-oC)D7dy3g*b8QJuGR zZFLx5rS032iE7bA#*b2~Z8r0YC;7NYeoVoNsrjQ|>J;mzrKDI9MsY&L7**e-rwk1z z<-sXR=|gQc$Jx;NOZW!!6FTpo;|-f%8?KTJ@sx(AB}0U=M$&zA)vU)+J{sOtGpXXG z$_WNC9jkj>_DB%0uM1*wC*ha#P%VQ*j z&GxhE2%UG&i3|RIUDb&&UQ)2MjnzT6-$+b-c-$vZ=qrh&n)ON;FDp1R`u{$Xz*w?) zwU6rb8v<4Zz7(JT;u)3`w%u0FjvH;JlrCj6pXLTh0XUPe@)Kua_@olyNae`qj#+WI zebyUp%W8vdkrYR4d1Jn1wZbu^R^fM$XHQ2d*ULCs%2qx>|8dNFlpP<+`7IZL#}>FV zB5WZR<&T`CLP5^AM#oSQeF9ZG$51^&?*v9r6ZMZ^sq~gbmyMt zQLJWDIf@vYvH;u3E6;YdoR0wYD`w?XN;?*ymg%Y-HEwSq8mPo-RG0ZVVUg_bC;Nj*dSs>ib=fEu=s&TtO_Ray3}Ozgmu0;w)Fq zYVU#xHCJI5RU$TM)Q8yf;ln)7lKyQ3m8BfA*5LOHP5mcn6Qk}sJ^C1ypTI{t^8Vk- z@v=Lx+TT2k>L(E2$?=LY7;6Ld%NGPrqR+>Smbz%aU#XOnN5}slkyL2#?~X_!hS*58ieUB5wEGpnpx#Fhcu_ zl(HgE*TeT?k@U)nTp@9ubGP1hWc)>MUWRwpP zG^H*t_<%KvhrD1HmLK7AdGM6!uXqlqnQ%a1|JS?)y7X8<&`5cZ@@o$CmEv*hhCpxc zag0QFK1O!Pth>1MK-?-W=6LA=D?TtF%;9>mcp+MfugkbRcmw&xYmQ;WBamz%qlCG{ zS&VH;11?e4 zv-a&pud)}qa)=e~L#$Arf}y;GJ<99oQ{G^i`7fk=K-w39<(q?yuLPI5JjoE?gm<1N zVc#r#6W=0F=KB2jwo6(`3c?sa?U{}5;JdWCm*elT=f_RTwfH_M;%8BGHGaTe5Rb!g zPpGt@%RLdM?yK=bo+`pK^p!BtyWvN9CT_=^cTl0CUqzKt@fM25saQ~j;!TmMgTTCT zp7&2q;yb@;2&K#D&Ygntx;VTfD_5#R2bO!cp#{C6Ys*V?0ZKEEI8Bc(|!R zXW{X@dYNUmBvS}-kG+dR$w2SX@mFO-Y})z}cO?1B+b`p~6L^*>KoY`&z!-i$Atl)F z$$5Ghi$sTCQ3rP$4@usTjlvx!xmUQ(?r)Ca1^$=f_XF|ccp+NPlrJa$$dl6kiR~l= zyJ#wK1tEAPA$S#Gc|FtOK?3u7zTG!6yoX>AY+3fNA>j7oFjsEH5%wP>_#VbxthtWh zN!-oA-iv2(p9_y>H_bkmhsRtzMKDV6$_dgxyYN_uGxG3=5z-z|48A3Q!CwiKLa@F4 g@~TSOJq@9EP|46%DJ8Sdc?+}WQ{<~$@Zq)p0-h#T2mk;8 literal 4037 zcmai0ZE#d)6@K3AZtiZlKnMf~Bs6>!k|j;37ARR7zCth<0wtI>q$)SNm*kS&z3bh( zNuaH5H56=xwusV}il(i`&#KUbP!!RrbgbX{#~+T)=sy`}oarw+NPN!S-F#7XC%NzE zdEax+^PF?ucW=LS4ZsHcK|_H;@h&rIx>j^syxVpxw&&)FkJpHUY#lHGNCyN;Mq zS7DZwj9GnFEMvse3Z*UHj*M%?>$W+LakRxsyAg#@o7J5(+>B!?to)!on_HSE&WSWo zLQiB|!?o<>e#51ZYE;ltcB;)fCZlE^nam`blc|i$Yc=*8?Ic$;J09C^rm0xyu;rxP z16D%zA5;i#j>fH|9dn>7%x$rfW@{$VWjY6pt~ljNTI{G1 zZ#NuE#<|JD&ADR=s~Ve|tJ{mNxm#dcR2%u1UD|O6;F1@>T z6l0$B*60YKNP5*eW@T5`>XcWDhD zQdl;LT65Ah9Ve4=&Dg{y4fpZtNv)%HGMaH5GwIgt95AEA(oRln4v``EYuGrA3vEZ! zu9?uW3H5ZYouMi@B3O3aKF3PBZLVV)iHL^H3X3My;k1?P-k!1IG1Ccx&@5;ZQ#e`K zO#(U|11gIU!B+9`HXdA+rH@C#tb9Z;h+v0~M(k85G*T%u8B-{yJMP$=yDTCSyL5a6 zq*BnevnTQXsyjuv_oLXOp(PLQbgOis?2;V*(4`Mz6Nf=g=__$;t!BdvP zY#JEt-D9LYHWi^A4{LZR50V!+cK~2JX&oIPiA$1Zf0H#}#t!t*p|O3o9Vb~P?EG)y zZKl&_MNRtu5z=Ea(u&ZDPl#jdX5kRJG#Co2{s$9mCwG#LDCptBbfzm|5$=W@Dl-+> zVZ`GSI+2`LXRbG8Bqz|p6*#P;8$INY5#!0zV9w^6NcBP4cSJ`oXm!vcl?~T+7{GbZ zyyKg5^O0FdBBjBm+a_(wuj=>|DC$p|1Jr*y?790y-qn#oAJOeG(yiWBCXa(b43G=^ z>{KS6WoVjdsnSZ5smJh`hDWD`M;0p`kK@x4t8vpzNv!U!ZV%!~g?Vj8pAde(na;%B zbZu>|nE4qUpT!{E(QQgNO+Y*)`4Y~j6_!rgHibA@$IilWoRotcLHZdT&*JkW0FP|4 z+@zT%CuvTj+;>{Xb9kP5i7DQ6vrL~6RK6fCZk`fKc|d5u7wKI|Nx4vMi`tG^??vo6 ziN_Zu3>)u^seBj)@v_1k$=H=SmFg=)cm)?Ue3{DZG7_eauSfz6C5(Y4hvT$_h$;SIePcD6 zTAp~96g@Tx(_nb}yS##<$ccs13&zn@zG!Tpa`QxC+&pD+iaJ^BW>mz6NDyyQkv7jL z^2OsxCq{K##u#};P+MEcCdNXmnQ@GGtLgUJPA`M&E&Nc!Rpy>)3p##;YxJvQrW`w# zi4yg7RWoE~3<>14BY1Wvu1f;>3287>xVpV?%Nt`4-aNi+EW~|3({TeujGL5W#;mB6 z6^V>=4@-98mJ8X9LA=X~*u)B(?lEIii-1?-Bu*q^D_QJ=_$3Q!`2YPRQ?Tr39}b$^ zV`iTR1&Mp5;!ih+vC(E{oT%AkN%=3GS!-)0*07u;^YN|3hmurtjx>%65ad7Wx7TO& z_FC3%wjp_7u;q7`ow%pULGI#r=Zu_Z+;>~N&#$Evq@Eihl3jwu^LzZQJXQ<~}N@ablKmYgT|aJ=dztoJnxqw*>`J2uFjou z!XCw!vT){?U*huOz?A9p#YKlM;e2>;;52E4;J+dgb$O}ig2@L_tE&%GD%0A5D} zzJo2ynOm9uw&Azfjz3}t{>EDMckIMJc*;Mq3-6&xE#lj71-7bMw5mPWt76!v5`3$< zcvwA-4t0VrvS-n$p2H&^8B+`gawr!lL3I+}z&A<8V)Z1x<%L5TsytfysP}Aqo0|Bk zt&Z=q=cAtEc!NCjQQKSi9(w_%Zr790sOf%BB1j$As&GpYIl`)GgF#=#+pdSotriSs>+{yDXl_7`j?`PE7j!KY3TJ>-`~Jo}ku2FS2}dixma@hA*D2AlnUJi+f%c!up6 z4B|CBO(ae*6`aI1&fefNOA==TF{i6?d?+U8e&wOHnArZ>Y%fo^ucR2NBR^H6x3xC*u3cej8kr_Clj?T~F5rV7;75r! zW5E}3Aj!Rldlv3|e!YJH*ha-ciXnU4la);e8HUmwf8h0ytDE|H`%VPLL5^WQLHVPp ziwB`h{U9(>D__P&C=oH_%&m+o8>Hlu)D8i=Qc1JNkgq1lYKtM$&>c|#!=MKTc^7FE zJrq!4NLTGZ(U(e`^}1~lUGa7(7)E>@@UX=rY5P8yv1Sa86|QWOS&=7kE<|*#qps*M zl&k)qiJLb4&T7lW6lNSulQW5Un6)9YCgM^tFfyL|kI&#<>RuFxBWXkCNn+jFQIe(# zLLEzWb1KZO?s! zplXYHi@3G57kITd3_T??!*u6p1~|kB-Ck0=7{wTM4C9#SE9}#274o%bc(0iJ<+};q nB;TV%W8!D7uR#pVVV>A&ED%41GUWv_w815;P-QdP1oV9aVTN<) literal 0 HcmV?d00001 diff --git a/bin/Gui.class b/bin/Gui.class new file mode 100644 index 0000000000000000000000000000000000000000..c42129fa476c6b6e963b7806757cb81406a36c02 GIT binary patch literal 7619 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 DhLRx+ delta 1553 zcmZ{k3s96*6vuz}Ufd6s4Ov8OB~a8-Ac8chP$^O@i$*6)rSh@D0;?+!4>d8#vV4W9 zpARr!IR+_eiLjuK)o9L?Hrb4p_8N1toUxpm9@9)UPG{H0SYzKebMHCl|NozJ@BQxi zjwCMW<2-t4|2seyoqL>XbzKxwnP%Zt#7y_j@@9BvS7(eU50qEBD5OYX9?Ki4h|T{u zIMhior4}U$_ci3fN^eD}zp%=MpXrLoDqnRtlcL+e|LRl5hcX0Qw=t74;TBbTXXpFN zdchDB0o@6w4+RlCS#vc)V#&v4Ozx2z;%Ty>?ttmJ_jf1t=$8Oa=l zqqx#L(>KLQ4Rc-eq*l@W$^x!a3=Ng2;W-!csk3i2scL~e*2G8F@M0*m&<>bE;=Jr) z5sU36(_byMkC}x2uP9W$#d3u!ya<1J#wdTl=cJywPF7-Dtg@XEz07LX*aIT6Ba2z* zqJc*H`G_%&jV?B^+5R-*cGYa_E{h^sEZXKi6Num@qKJ{VE8U3YX51taM_=&< z5>Gna8AK26mQ4*4G#3w}xP?cAHI^j%qN7~(vnN^eJp-^r5krb7(uA2#e=@|o)Beqx z?7mCTA(A^QoGXEB`;*8ddqHH5d$=Gug4`#_{Uk6#klN(Y5`CCx@?|ZL3Nj{KFPU-N z!Q*5z!45-NCaGOiY{_>kL>GLFUChALNA~FJ)WJ#KbKLO;+6H41*i#5mqe| zmB+fuJ3xJb$LiqKPF7?)(mak(LbtAvsdteIqSo4HqmvTWH*CO}8qfN6Lg$q(*42pJ z%he}$!{T-lQ$wOfA-J%UP^7om8I2^R7K9~RO4>;e*=g}?ogtZ;>3YT8X4kq3>a<^< z*B5BQ$UQ^l$k&D^#q-JyoF;dukW7l0fKR%lm=;PnO(|!j>CZ8Piv;+U3gw|nB~z_Z zSfVmnss^)6Wl^t6SfOfIsphguEoO~sWUbo7I<=Dq)lQ?T+s|w2ARE;owy58EUH!>c zZSjVVp-H=G*70oDdF<5V*rg}3Tl;9$e%f>e?Rp+Ty^#*Rg?)M(2Xr$Bbqnw6R^HP` zIHXT-SfA&8{UaafKlo5z;+TozBNNNVCV}IoFDL3uDkse#J~JaZWyW*bOyYCn=L=KA zmu3!Mn}wV)%lXDMaMo<*Thqij)53SAjqlAqE||moV2<*WInK}KB)@QvoZr)zJA-?r zTjVjPc$4k&g9}+Zmem9d9b wY0f;!nMcy!oU?0Vl2eK;_9`X6Qrf^_JVh2w%I$Xl#S_uJJh4(YC<0B#KbMex-v9sr diff --git a/bin/NeuralNetworkTester.class b/bin/NeuralNetworkTester.class index e5f9e0de93f35db07338760828ec320f41df4c3b..d9e3c0c090fca7f8b439fdd8b1f93ef5b8e3748b 100644 GIT binary patch literal 3151 zcmZ`*TXP%b8Gb$;yt1;f9Y-<_Ip8FO$gvVr2Mk88W5-TFt*j)LN$Nm`ZlsO9iM*?> zS4j+|EyWxfpg>QQ^Z@2i7p@=|N+6w3fsFpLir1O&Eb^|GxMv$}J|vMl&3{GmrqISNh3$%?Irs0eU1QY$I1wxZnL60JcO)3;b1UfT@ zsb|ZJ=XHD5yV0Go@>=n|p3t*^$1x3Jq)UB>i&eovtmW+Q!5GioO&(V?@!1JqmUUbkv-i)|>?udvQ0F zl&mWP;l$Kb|5OzBAfaGC(Q2VnML!M*C?#p8$h3qKQ*Q1xd!9Mm+9F2+!r(70usP>w z`AgGUshW6VQ53i%(eJtMB0XW-+H%HNa#9KoSDkQ~v5^&l_M9gHFH71iE1($(-cJ(o1&P(tb$wvPo}IgNv`5ikfq9HtytDiTp(A7SY2*B zDLR|Qk5tUzEa^aJrCgnqSCy&$vu)$7XZhDQ9`h$h{{5!>yDsBBuObg#CPCc13LNy+ zG%ZbD_F3rQ6}SMdux!@E>0<hm*k;(PMthKDM6n4|4Ab(+5 zcO3b4KjtI=)feI>Hgm3e0_Z>|SMBJ+7D{!yQUPp5+*MTKGr+yQ z!O=C`c>{NJcE+$Xuzlf$TevH4Rj_YGi0xg4)%CBWnV@T?8zIiO&`>wFaomHLYqG~v zg#jda9^l*OAP&)uL9X~A@Lz;Q50^|a6-iG*Tn*tqSNQ&>z$zI2$UUe9*4rX5A)7jF z)hQ9%s5r>GuiVDST;wKFnE~Yn#wwT^h}^&<-!V3y|FBN(HnMX!adJA@c?+j1ICCZ$ z!(-KHtGyV``NsnkeWC(Q2IHmgD6s%`Fy5U^-Y%x_E<)YMLf_3$_OPAq#RTp~8vAgH zJ>V?%Lq`H8C6;l3H9O!YqR$I*1K|})U0_B}VHERNU{Va)kv#BrE^E|!$=Px-BL-7{OY;ZVqumZb+a?%^#LPuygL?U%BSMXGDIJ}0T0UpJ} z75wZoWPQoHW$nfiXv$BjMn%vW8r6II@P}UiT=jc)H>dcU+MkH1AdL ze10Un5)tu;)K)#F`PKD*tSBO`Y#3SV4R^e89XsjtZCsn{e)%ST-Ai|0tKfI^h~dOT z*Re^)^hd61bzl=jS&QwY^cF(54TlNeeT3+K()t0U2;~?a!U@i12+CQ$-G7X6JVSU_ z_yO@U*MH)N!e8+)-oqpKkdS}L@oV|%fN7y1D|Yb%U^iyOJ$%a_!f6-y$357p!1L_7 z3;Z6jnffje<`n*eKXVqO{jc#CS_t7B=Wnqd!(6?Nx3S9EDxPrn6s++> literal 3752 zcmb7H`*Ryt75=UsURmBGu4B1wn}?I;VaIaRIMl7H#EIiaYa%;NyZGnLTr8I>Ww*^CawE<+O?l25LG5o+Ez<<#he(C_`ySpn{GD-(*OMCa; zbI(2JeBXC={nvkg_(uSJ_((xOVEcq#w6)xX?p(L*Yg2l`(QO4Gf#$2)yq3sm=4|53 z%vC+(C}CP4%BbUfnW~OM{y6Gf_v|LV`$>{eok&8+vx?imhweNz2L!bajq(d7=U?mBYUq#r;0`{tJ_f=K&OI( zwXWSNs_4QY0cBpx74ciozkc{CZksJvRXMa z3W263oWP)hlLGrbg$$PMW252}hL}pBI5TGuf&o93&5)MWk-Q7!qeZ7^>&YgJ;Bf_` z0uR(Z-7{111jY#Ztj-f_^Y&ya<)PWLRL}N0>R{P)m(rFkaNvKVpg`EgPeAbG2-WI~ zeRuu+m3*ntT5&Jr%K|_B>06IgEf3nZwvaLkjz8&QEM+{a+sOg`3T#O`TISlgmM^yt z86$~briF`0#ScmGxiTqSXBBM=G^UMNQJL6uyDm1I}SV|iFST>0_Wy#A=8JFgM(IfZ?o0hcg=vDAG z$MRr{EpQ3%s`x2>#sf3fTwb&FDT{3OBDc(B*Khb$!AUmb@JUPjJOSTdJazT5D-k#`AR z1+U>lD~Nu;K>(_61e$H(SoI9B729~%h-TbFs}|QPfbEF6j{b%ae}S>)=qm0_1&=QV z#BJp#PkY|PjvU(!9W0az`|XqxmjNSGo6LpVD>Uv zd2j=w9I0qxSo;`GoB{PSoKbfMIOGL@&*HQj+z?V2XYdgWVghFvbR73%5@%V9bF`3& zc{6FwOu1)>e<7mage(dHA~R@NBAExs6N-Mt9^k=I(Ocyq>SJTSI|$Esn>xtzy1}FI#U8pFN6^8#?_pKq@0IWa<|r?3VQZ)_M0U2^A{m2y;bru8b14=s;YWW$ z!MCis-PrLKcPxfQEbRMQTK~(|{&28QSw=e87g8-rXyN^stDB31osm9wBVK6w6V5Ka3Fg+{9dsIzvU>v zlmCJDISTT$kMRL+Q)ibr{vBfp^SoE^d;Ec;B|PKKDOjeoOI(e(VjVzqo#BQRFo?_E zA4B>l!lFB{j#el&D?xv)_Y<^z!hZvr2dVHe#<8Jr*%0@WezasmEMaA{viWMnrGWdn L<9>hWD|+oeKklV< diff --git a/bin/Trainer.class b/bin/Trainer.class index 0a8dc335b491aee7e3a379456839db0096e4b621..b2416758c7fe78796c97a5950ac59a5c6c5db31c 100644 GIT binary patch literal 2303 zcmZ`)Yf~Fl7=BI&*(6;ggiA|XX_Z2gLW!MLYz10rxd;Ym4bswjTb6BDNOt39LyJ{g zFCYBm2meIJkHwkLkr~IYI{Hui4dQclmym#FCfT#^c`wiVyw5rLXiBA* z=zPmwHKI7iv@1s09kQ$#1X@%yBO=h6Wuf^>am8>JwUvS)v)Z~=SkfF*z6Zw0sFyR2 zCL~oP5M^F>%`6MVvH@7u4i^bqpeyy@C^88pKKWQTO0H>JWd+>=JqP$_EZ1cZvlbK0h%fYR_=_E;Tv9BnIWmPyE%@6HTjl7c*>6Tcuz-Q*~|&E9-{t zj->A^c#o9K8x=<@%p2|_+u4X?7IU)IYcVX~j)L1%&A9HGo0^=qiuaKtf}EKz+9ngL z*@I2ioy7+#mT;HtvTjz}G8__{nyL3nFG;^;75DLgyp>7GA%MYIN-xFm5k67yal;|Z zZIxZ4sNz$Q>L$Cwkq6_Z?r!^X;V~_GaC8-`VE$O%a6LGb&hb=0S|j})ZFv=IFqxPB z5>*4g0dWd8r~^rxZN;$;VzFS86~^2&HCEukpNQi#@RYHCf7XrQRJf=x#FKY{XEvOg zkosxT97Y8F9KuI;3RF%>UKC{m@<2DLbg zuT(t6Gl665Ys#^UQ>MJ0dh4aMKdB>VJhe|2$_$9-?24lsezY1~Rzp(UJUQ%`_b%lk zZ$qvWuH=^!<6A$U@)JqMe}?*ks}Nq1@1Fe}T0M)5=ZzS|WcZX(%@=mib~q&Bg{Zy* z+R;JB7&_6##K*ag63z*n#A&bm_q0lQox2drJLt&{RB`4xqH}{)y#9hoqEMNzmrfGZ zNw0$_t#R6qaYr7c78Xf*WzYJ_a2_eIR14DFli0(!fB_a8q`e)XJ-UY!TvWIz6!eDq z9I7?=Bg;rsXLgZU?!cu)ybV9?;Bs~#Ib6kC_4pEOtosnYF4jBY*}HMdYqbYGb@d`P}mnyPsC8^-*{dKHB#N^-nD_x*uhqGUHo zeovFzKC(JQUWdu+7%t)--=t#vIV=Z#MsWw5ctp^BxPr&nVjG{+ONzwbd%~5#7qtQW z5VVyRSt5LiFSE}Po+C`k<9}fCkAVPH!t&vEQSQJcS})Ung(A61(APY8Qi~vbU!5T~ tBteM-ai{_Lvy%MNQvF}ounjO&s$U#d{&g?6uY6ufp7I60p=$`={tHs9-2eap delta 800 zcmZ9I+f&m(6vn@8NK!H>l$L^sR9Z!W8Y<_SgGp3HrIQr`7AL5LEgY~2^c*&XU?sxW_`F&?=E$>z3>#vWW0F2`4j?yJ9J$r8G z?v6G#mrrlln?_ooTLt5rLKVX1N0PHaXzfHV7H3Cd@6Eb+k^H$&41qzQJVguwIfOl z(2b0X7_8GW$Fv60r|PV? private void jSlider1StateChanged(javax.swing.event.ChangeEvent evt) { diff --git a/src/Trainer.java b/src/Trainer.java index 64bccde..934aee1 100644 --- a/src/Trainer.java +++ b/src/Trainer.java @@ -3,7 +3,7 @@ import java.util.ArrayList; import java.util.concurrent.ExecutionException; -public class Trainer { +public class Trainer extends Thread { public static void main(String args[]) throws InterruptedException, ExecutionException, EOFException { Trainer t = new Trainer(); try{ @@ -17,10 +17,21 @@ public static void main(String args[]) throws InterruptedException, ExecutionExc // t.testGet(); } - public void start() throws InterruptedException, ExecutionException { + + public void run() { GeneticAlgorithm ga = new GeneticAlgorithm(0.9, 10, 169); - ga.start((int)Double.MAX_VALUE); + try { + ga.start((int)Double.MAX_VALUE); + } + + catch (Exception e) { + e.printStackTrace(); + } } +// public void start() throws InterruptedException, ExecutionException { +// GeneticAlgorithm ga = new GeneticAlgorithm(0.9, 10, 169); +// ga.start((int)Double.MAX_VALUE); +// } static String path = "best.nn"; public void testSave() throws EOFException { From e18599213ddde671b91e8d7fa9b62a23d1866bc1 Mon Sep 17 00:00:00 2001 From: IceGawd <35550454+IceGawd@users.noreply.github.com> Date: Fri, 31 May 2019 22:55:19 -0700 Subject: [PATCH 5/5] Upload Da code --- src/Game.java | 34 +++++++++++++++++---- src/GameGrid.java | 7 +++++ src/GenerationUpdate.java | 30 +++++++++++++++++++ src/GeneticAlgorithm.java | 36 ++++++++++------------ src/Gui.java | 19 ++++++++++-- src/LevelMaker.java | 63 +++++++++++++++++---------------------- src/Mario.java | 2 +- src/Trainer.java | 14 ++++++--- 8 files changed, 137 insertions(+), 68 deletions(-) create mode 100644 src/GenerationUpdate.java diff --git a/src/Game.java b/src/Game.java index 726d8cc..86984da 100644 --- a/src/Game.java +++ b/src/Game.java @@ -5,8 +5,10 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; +import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; +import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; @@ -20,7 +22,7 @@ public class Game { private JPanel panel; private Mario m = new Mario(0, 624); private Keyboard keys = new Keyboard(m); - private int[][] tilelayout = new int[13][14]; + private static int[][] tilelayout = new int[13][14]; private String[] tileID = {"AIR", "ground"}; private int offset = 0; private double fitness = 0; @@ -29,9 +31,9 @@ public class Game { public Individual indiv; public static int me = 0; public static int maxFrames = 50; - public boolean play = false; + public static boolean play = false; public BufferedReader in; - private Timer repaint = new Timer(0, new ActionListener(){ + private Timer repaint = new Timer(15, new ActionListener(){ public void actionPerformed(ActionEvent e) { frame.repaint(); frames += 1; @@ -61,12 +63,29 @@ public void actionPerformed(ActionEvent e) { } }); + public static void setLevel(int[][] nl) { + try { + BufferedWriter out = new BufferedWriter(new FileWriter("data")); + for (int[] y : nl) { + String s = ""; + for (int x : y) { + s += x + ", "; + } + s += "\n"; + out.write(s); + } + out.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + public static void main(String[] args) { new Game().start(); } void start() { -// System.out.println("THREAD: "+Thread.currentThread().getId()+ " "+getFitness()); + //System.out.println("THREAD: "+Thread.currentThread().getId()+ " "+getFitness()); makeFrame(); repaint.start(); } @@ -118,7 +137,6 @@ private void makeFrame() { frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); panel = new JPanel() { public void paintComponent(Graphics g) { - System.out.println("yet"); super.paintComponent(g); m.key(keys.r); draw(g); @@ -137,6 +155,10 @@ public void paintComponent(Graphics g) { String str; for (int x = 0; x < tilelayout[0].length; x++) { str = in.readLine(); + if (str == null) { + in = new BufferedReader(new FileReader("level.gg")); + str = in.readLine(); + } process(str, x); } } catch (IOException e) { @@ -241,7 +263,7 @@ private void draw(Graphics g) { if (tile != 0) { Image img; try { - img = ImageIO.read(new File(tileID[tile] + ".png")); + img = ImageIO.read(new File(System.getProperty("user.dir") + "/" + tileID[tile] + ".png")); g.drawImage(img, x * 48 - offset, y * 48, null); } catch (IOException e) { // Auto-generated catch block diff --git a/src/GameGrid.java b/src/GameGrid.java index e81f726..5ee9677 100644 --- a/src/GameGrid.java +++ b/src/GameGrid.java @@ -22,6 +22,13 @@ public GameGrid (int cols) { } } + public void addRandom(int num) { + for (int i=0; i"+text+""); + jtf.setFont(new Font(jtf.getName(), Font.PLAIN, 20)); + frame.add(jtf); + frame.pack(); + frame.setVisible(true); + frame.setTitle("Generation Update!"); + } + + public GenerationUpdate(String text, int height) { + frame.setPreferredSize(new Dimension(400, height)); + JLabel jtf = new JLabel(""+text+""); + jtf.setFont(new Font(jtf.getName(), Font.PLAIN, 20)); + frame.add(jtf); + frame.pack(); + frame.setVisible(true); + + } + + public static void main(String[] args) { + GenerationUpdate gu = new GenerationUpdate("lol
lol"); + } +} diff --git a/src/GeneticAlgorithm.java b/src/GeneticAlgorithm.java index bb9fb66..f841f75 100644 --- a/src/GeneticAlgorithm.java +++ b/src/GeneticAlgorithm.java @@ -4,6 +4,8 @@ import java.util.concurrent.Executors; import java.util.concurrent.Future; +import javax.swing.JOptionPane; + public class GeneticAlgorithm { private ArrayList individuals = new ArrayList (); private double mutationRate; @@ -50,14 +52,12 @@ private void main() throws InterruptedException, ExecutionException { Individual ind = new Individual(numInputs); /*/ try { -// System.out.println(ind.getNN().getLayers()); -// System.out.println(NeuralNetwork.getFromFile("best.nn")); - ind.getNN().setLayers(NeuralNetwork.getFromFile("best.nn").getLayers()); - } catch (EOFException e) { + ind.getNN().setLayers(NeuralNetwork.getFromFile(System.getProperty("user.dir") + "/" + "best.nn").getLayers()); + } catch (Exception e) { e.printStackTrace(); } - /*/ -// System.out.println(ind.getNN().getLayers().get(0).get(0).getBias()); +// /*/ + System.out.println(ind.getNN().getLayers().get(0).get(0).getBias()); futures.add(service.submit(ind)); } firstTime = false; @@ -91,11 +91,14 @@ private void main() throws InterruptedException, ExecutionException { } } - individuals.get(0).getNN().save("best.nn"); - System.out.println("Generation Score: " + (mean / individuals.size())); - System.out.println("Best Fitness: "+ (best)); - System.out.println("Old best: " + (oldBest)); - System.out.println("Order: " + (individuals)); + individuals.get(0).getNN().save(System.getProperty("user.dir") + "/" + "best.nn"); +// new GenerationUpdate("Generation Score: " + (mean / individuals.size())+"
" +// +"Best Fitness: "+ (best)+"
" +// +"Old best: " + (oldBest)); + JOptionPane.showMessageDialog(null, "Generation Score: " + (mean / individuals.size())+"\n" + +"Best Fitness: "+ (best)+"\n" + +"Old best: " + (oldBest)+"\n"+"click okay to start next Generation", "Generation Update", JOptionPane.INFORMATION_MESSAGE); + System.out.println(); // Game.maxFrames += 10; Game.maxFrames += (int) ((best - oldBest) / 10.0) + 1; mutationRate = mutationRate * (oldBest / (best + time) * (1.0 + (1.0 / time))); @@ -137,10 +140,10 @@ private void select() { // theBest.add(new Individual(m1)); // theBest.add(new Individual(m2)); // } - for (int i = 0; i < initSize / 3 + 1; i++) + for (int i = 0; i < Math.round(initSize / 3.0); i++) theBest.add(individuals.get(i)); - for (int i = 0; i < initSize * 2 / 3 + 1; i++) { + for (int i = 0; i < Math.round(initSize * 2 / 3.0); i++) { NeuralNetwork m1 = NeuralNetwork.reproduce(individuals.get(i).getNN(), individuals.get(i+1).getNN(), mutationRate); theBest.add(new Individual(m1)); } @@ -159,10 +162,3 @@ private void select() { System.out.println("*********************************"); } } - - - - - - - diff --git a/src/Gui.java b/src/Gui.java index e3a0dfb..4df3382 100644 --- a/src/Gui.java +++ b/src/Gui.java @@ -27,6 +27,7 @@ public Gui() { initComponents(); setTitle("Mario Bros Genetic Algorithm"); setSize(600,400); + } int[][] gameGrid; public Gui(int[][] gg) { @@ -35,10 +36,18 @@ public Gui(int[][] gg) { } public void train() { - System.out.println("LuL"); + //System.out.println("LuL"); + //double mutationRate, int popSize, int numInputs, int numTimes // GeneticAlgorithm ga = new GeneticAlgorithm(jSlider1.getValue()/100, jSlider2.getValue(), 169); + try { - new Trainer().start(); + double mutationRate = ((double) jSlider1.getValue())/100.0; + int popSize = jSlider3.getValue(); + int numTimes = jSlider2.getValue(); + Trainer t = new Trainer(mutationRate, popSize, 169, numTimes); + t.start(); + setVisible(false); + //new Trainer((double)jSlider1.getValue()/100, jSlider).start(); } catch (Exception e) { @@ -226,6 +235,12 @@ public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new Gui().setVisible(true); + new GenerationUpdate("Multiple windows will appear once you hit train, " + + "every generation there will be an update given on how good all" + + " Mario's are doing. In the multiple windows you can see how " + + "Mario is doing and learning. You can also create your own level, " + + "after creating the level you can click the Genetic Algorithm " + + "button so you can use it.", 400); } }); } diff --git a/src/LevelMaker.java b/src/LevelMaker.java index c1b2077..6a505b8 100644 --- a/src/LevelMaker.java +++ b/src/LevelMaker.java @@ -16,6 +16,7 @@ public class LevelMaker { private JLabel label = new JLabel("Green Squares represent blocks, black squares are holes"); private Dimension DIM; int[] dims; + public static void main(String[] args) { new LevelMaker(); } @@ -26,6 +27,8 @@ public LevelMaker() { private void start() { dims = grid.recommendedDims(); + + DIM = new Dimension(dims[0], dims[1]+50); panel = new JPanel() { @Override @@ -68,59 +71,49 @@ public void actionPerformed(ActionEvent e) { } }); - JButton loadButton = new JButton("load"); - loadButton.addActionListener(new ActionListener() { + JButton gameButton = new JButton("Play Game"); + gameButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + playGame(); + } + }); + + JButton randomButton = new JButton("Random"); + randomButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - load(); + grid.addRandom(7); + frame.repaint(); } }); + JPanel subPanel = new JPanel(); + subPanel.add(gameButton); + subPanel.add(randomButton); + label.setForeground(Color.BLACK); frame.add(label, BorderLayout.CENTER); - frame.add(saveButton, BorderLayout.WEST); - frame.add(loadButton, BorderLayout.EAST); - + frame.add(saveButton, BorderLayout.WEST); + frame.add(subPanel, BorderLayout.EAST); } - public File showFileDialog(String prompt) { - FileDialog dialog = new FileDialog((Frame)null, prompt); - dialog.setMode(FileDialog.LOAD); - dialog.setVisible(true); - File file = new File(dialog.getFile()); - return file; - } - - public void sendBack() { Gui gui = new Gui(grid.getGrid()); gui.setVisible(true); frame.setVisible(false); - } - - public static void print(int[][] arr) { - for (int r=0; r