From 244728ed11e4af6c124a941117c7202e80f5e11d Mon Sep 17 00:00:00 2001 From: Arjun Patel Date: Fri, 22 Feb 2019 00:32:14 -0800 Subject: [PATCH] question 2 main implementation --- grading.pyc | Bin 0 -> 10946 bytes multiAgents.py | 84 +++++++++++++++++++++++++++++++++++++++++++--- multiAgents.pyc | Bin 0 -> 8287 bytes pacman.pyc | Bin 0 -> 26890 bytes projectParams.pyc | Bin 0 -> 354 bytes util.pyc | Bin 0 -> 30489 bytes 6 files changed, 79 insertions(+), 5 deletions(-) create mode 100644 grading.pyc create mode 100644 multiAgents.pyc create mode 100644 pacman.pyc create mode 100644 projectParams.pyc create mode 100644 util.pyc diff --git a/grading.pyc b/grading.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5b281377f3e0b3e6729f35e8b572de354ca3dcde GIT binary patch literal 10946 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 literal 0 HcmV?d00001 diff --git a/multiAgents.py b/multiAgents.py index 9e2c709..6f02ff1 100644 --- a/multiAgents.py +++ b/multiAgents.py @@ -77,10 +77,10 @@ class ReflexAgent(Agent): newGhostStates = successorGameState.getGhostStates() newScaredTimes = [ ghostState.scaredTimer for ghostState in newGhostStates] - print(newPos) - print(newFood) - print(newGhostStates) - print(newScaredTimes) + # print(newPos) + # print(newFood) + # print(newGhostStates) + # print(newScaredTimes) # make is so that if it is closer to a ghost then reduce the score # increase if closer to food @@ -163,7 +163,81 @@ class MinimaxAgent(MultiAgentSearchAgent): Returns whether or not the game state is a losing state """ "*** YOUR CODE HERE ***" - util.raiseNotDefined() + # Use function for min and max of node + # need same args to call main_delegation again after agents turn + # mechanism to keep track with agenCount whether ghost or pacman + def min_recurse(depth, agentCount, gameState): + # action value pair + best_action = "" + best_value = 1000 + node_actions = gameState.getLegalActions(agentCount) + # base + if not node_actions: + # print(self.depth) + return self.evaluationFunction(gameState) + + for successor in node_actions: + curr_succ = gameState.generateSuccessor(agentCount, successor) + + value_node = main_delegation(depth, agentCount + 1, curr_succ) + + if type(value_node) is list: + updated_action = value_node[1] + else: + updated_action = value_node + # update best_action + if updated_action < best_value: + best_action = successor + best_value = updated_action + return [best_action, best_value] + + def max_recurse(depth, agentCount, gameState): + # action value pair + best_action = "" + best_value = -1000 + node_actions = gameState.getLegalActions(agentCount) + + # base + if not node_actions: + # print(self.depth) + return self.evaluationFunction(gameState) + + for successor in node_actions: + curr_succ = gameState.generateSuccessor(agentCount, successor) + + value_node = main_delegation(depth, agentCount + 1, curr_succ) + + if type(value_node) is list: + updated_action = value_node[1] + else: + updated_action = value_node + # update best_action + if updated_action > best_value: + best_action = successor + best_value = updated_action + return [best_action, best_value] + + + # main recurring function depending on who the player is + def main_delegation(depth, agentCount, gameState): + # see if all ghosts or agent recursed this time + iterAgentCount = gameState.getNumAgents() + if iterAgentCount <= agentCount: + agentCount = 0 + depth += 1 + + # stopping mechanisms + if depth == self.depth: + return self.evaluationFunction(gameState) + if gameState.isWin() or gameState.isLose(): + return self.evaluationFunction(gameState) + + if agentCount == 0: + return max_recurse(depth, agentCount, gameState) + else: + return min_recurse(depth, agentCount, gameState) + + return main_delegation(0, 0, gameState)[0] class AlphaBetaAgent(MultiAgentSearchAgent): diff --git a/multiAgents.pyc b/multiAgents.pyc new file mode 100644 index 0000000000000000000000000000000000000000..931f71899430c323137f14387d646298ea6e3301 GIT binary patch literal 8287 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 literal 0 HcmV?d00001 diff --git a/pacman.pyc b/pacman.pyc new file mode 100644 index 0000000000000000000000000000000000000000..02effae8683519e79aa455b35880f8ba0a2a4759 GIT binary patch literal 26890 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 QX#atI=Y|GHyn(L&17VFpT>t<8 literal 0 HcmV?d00001 diff --git a/projectParams.pyc b/projectParams.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9729ca4e7c8de98587bc048f63387773b82a7b19 GIT binary patch literal 354 zcmYLEO-sZu5KXu1qT_rP6Ma0@>LD_AKNiRhxF%8|i&35Ue2QU6<|A3Ra zVnSYK=Dm6F-0#!ltFP`&lKpY;f5Zou2o)g(qC*OYR1;E6h;m6WC6!B?G zr7$4CoD076>Q<~(g%$_438}bhj zVjJY3dI*eYH_&XZwU9yF$wAvhLEV`3@E+`h)M8uKLMsS%zX>wY3vFYWLv*>Am4nl|%1PzAaX67b2WHK|EI|B&}^Fwz=~_vRb1ODvUb4&vX&KBclG-}&$)9a1l@1nm-zdA@B1TUPR>33JpFmj zxkJ)7ojUYi9XiFQ**{76dn`WIqb^PJV3s-m2{8^motogfgrVDM#pRJvNy>!+5Ib4{n z`MYr@NAq{*OgGJ+%bD()zXxY>HGfae^w9iyoaw2Vd78f$57kTa_vXUhn!gWc`osa! zSF7q9&-c@+`f2{Yn%SRM+>cr^e00s+g4BFl6?eQhXL=-&nC%h&#ai#4n6UCvzo%4vV*%o}e6p5u)Cvj1kzbZ$9=_aa9O%{@*Y*tx!3 zJTmF!hp0|gS)Wdl*N%A3C)cH{E*AT4{^|=Zk1pO6lt0`xb*OCUZ!8u&&)o1bmruXv znnm)Z&z>t0?~nO@Hx-F*%6|GC*S&N4?Ls7b#{I~}2gY~$kc*d%nOGo4rKZf5IahTx z#nQ4_?{N9_8R?cdDR02}+`QKhL(b*mJ?C7|BKve*-dmj1{iV0LF73&63UCMhmLCw4 zr{vwuEe9{z;E`Vx96LZv+cR+kxBTPJ%^!1S=J=)?xzXdHeY(hg^Nlb0Nu(~GCps4m z`YS(eNXyQawQp~kDdycj>Uu6Z_7BGdmhz z%)B=0Y({~c`0U4Cxqr>R?jkVs?kjnev8zU=%D2DzXOm1`+cI6;v-p^e-1+BcXDI6M z-m&#$`Q4JQPL8P28rkAopuI4#cC#>Djr;1 zq{#WNHJ4V&)m4*b%E#{AVTs8%^x*}`!h1Gm$tfdi=Zmk;@_x%5^XE*f6PHweaSuNY zE;xRyxF-LZOX*2mU2@MB&V01>#WOiG<6r9;Jo3u5zca+i`+6#B-BYsT9IBU|%1_<0 z>Y-Jo;>}0TzmALkGGnk5-Y4!=Bvd-6-wqzBCVJsNxjz5%K%Ll{R=kFvhMurGMZSJ| zzv1HPC%;i+{>zw`Bkp`?@lV`fOu?sFvSHKAQS#o=HN)in70=X*!Letbp-NE`@&1up zeKmHrTYSIZ8YW=b_~7o@qWq)bYq{>k{Hjsn#4RT%c&@(7P+N2V{KXy~aL_ZxQUJd?nJ2$ATeQXzJo?iX&lbp%C zwM4<_^VN&)qY}Ar-EBR^l1?>TEPcx_HAT1KOO;e95jQhF#gMA(b=?1g-ao#=nI-<3 zr#Vx!H~)Fc$d$=I&6IQhv8zA^UcWjZZ`d(lrQ8u2UM8|0`tSj6@%?Gzip7naLyA8t zcP;5Hvhs3%&vkds`@t*ROY^_yr)Op#n=fjb-(=|`TsMRmUGlwSnr4d+&wlg?ZuIIm zBge_lx(AcR#Jv@dQ;~S|oikM?|IagD;*v9m7bsFL8B@7bo^;dFL9$=-bpu5B!7u*C zqnx`uB~xt9U2r`=ZNIaJN4$4_RBiI>7q=;9JA0asu`kxIx79Z}MB*@`2cgis~-DuRAY7-1hyy7~=AY zH81xUf4pf415C`_vWn-I_guYctUM+5)L8M+#@p8LAXA14C8WOEw%|`(a^Zb{evmUo zPd&~ha{t=xO>$Mfd!(qzepqP?EAt7)oBT0p;CRuuax#;WtnGinaIx|aKmDBskYz>t za)tYraJ^Vi#R;V+f5Hs{gC3nNgToh1muKGBKVO{n-Bwnh;``USKg$g^ zJY@lnQ~ipm29|$0Ok_?L0xQ`=L&9)6EUt!7_$h8# zGJk8CSo+%8ijmI>?NH3o?b_1UUm$(ajpdV!^iO!|J5TP*agSMp>1 z_{$XuJUez{y}WpFSC`EAap6o^_S)qW#qoO6N7PxqeaGOwqB`?frF3UK`Q2??9148W zQv`cA-_B2!D|@BLS*y=0mYpuz(IP(I@`e&fH7zd( zn>vYkJ8FL5-g&VZIpT?db&69vTtIhS&LN+3p+MBB|G9ylr{PmDMge zb;4T#`NGw*SWIXf^#ZrLxZ|DG@|bZ2-Q`28ZyY5zfBgFeGHp%TL|N6cdZavWVV~p0 z6kpY+-1gC@&*~t9kG6!w*1NVVNPPX(6TQUR17E2Hcz+Bnmz)0l#w7VzT3siRxA8A( zSN9cm87ZE;d-63r%*_wv_LlF4s``j?|9qU1rH{Qgy1%&P*$OpJb$Pc@!gKU0Ry;!Q zbCFVN_jjLGEvGiV;ur52r!%ZY$Egdy;W5`d_+wa%=|1sYdJ>-$Y-;~sd(?A$t>RGQO{M+m8tnaTyEm>FW z#POxSQ$(rnI;}vMTUIGj`gr%!XL!Ep*{3Ob-Vy1c%z`Bs$XfB*-?jU>{?P*_OEP)# ze$5gCmw7+ov0t8&<`p-Lo2Zn>JFo9nnFotsRL0}O13#K5J2t)vgdF&Nq1>8wo-VF= zX!=I(+&Q*F6My;Ld5X+7NB0gFduMM^aqSgqo=H(u<2qUe(Gj2ifv+>9l%I_IVm@vnWSU%(@@tXRYPOw3!6tK{a>>AB3i za`&p;!^LH30VQBw+1dAJ?s5I|Z@tNxDP4msQbkkAE+yl0T8w_8-%EdEgo^ajHvNkm zuDB#$aYnD3x-68*cZQb8w|9x&@{6r2rpWS}=FAfxf47&Vy%_x2-*^>r#gNDH#I--o zQSezaXXgr;_D*n|NEsJZc$n~RxzaiJ7T>*}rjajf{vaf_&AwdWaLb!jQ{}^JzFjTc zKVAF=uVeTkQ(2h%`whO4yHu8cK1zy&OS?#eRY<<9^95?zBO)jmy%aq$*dSjxT zAHD+i<|7|4MTq?;c2Jx<9AbMPv3VB6z#SMHi{RJzFe@Bk|zadnR}#-fPb^-tCE?(MU(MEO1YH}Jsy>Q4TW z2dMPCDUtA(`?l@0TPtxsO)Y`iax?{BbVbQ~e^u6mnSteibVQ0B)ThT0WLit_H z81j`jTTT&+{_zPLdgA{2Z;;R!fct*pCEj&(lOncF6Dt(@Q$PCT1evw^>w59S<6phc%ilk~q+Irz zav&@Y9P=kd5obN$H%~4tPbwAt?l0KMLq+yXQ#-2ox-uxWHRmo6qyK(D@%Fc`b^e@( zO1^S-rFiefD#f4+u1L9@`+hR+yKP*5^VxUxm%WeqdWqaLXZ>{f!L74;ic`W>ioo_f zvL{7sEtsJ&`P|8Rfs{8sSt>U^-MzE;soP?fmSV5-_&k*LU#sE8(xL`9&+k3>awlTZ{#q9RA4B1fVk+u1-k z5*0ZT6*&?W(ZrFc$dRbXk*LU#s0hsDBTudi@c-DHWT zqtr5^R@8`^g@~f44wf0Hjds9OEnRx4x@Rz8X1eqz=&`QPw4f^pp1IGgK4y_G^Q&F*IfQ* z{mXQ9aTO+E?e>;}*rwOZQ1f~lL;hF*kDfF%V5lXM!-AiOpfv~|i;$J-il*QX5aes{ zA;Ui|q{rdI7mdvLr6js)=HjbKxM$|(46c*$^)hv}>AEizj2bd% zM)c)Cscz^2!-@{a@o24#AQOs3^};z~#=IiEDQ3oGuucz$0@Bwqf^R+1LTHsGG+-wr zb?Sl>Uxrh+qssY?6ccGcT2X%T&;r^ETm=8~X?|LW=JL^>_=nfk4FxN4--@qX#qV3u z^)G5=^+Hk+v+5C?jGB!FI^Yq~qxGf^hVeC&b0bejG-94I!eKM$SB10*-WPRjr`_;) zVJzn&S{v`k?LeBK?LgYu(K@<1Mpf1*Bo(1Buf8#4MfHg31GffRbQ;n0>$Fh4HWF$~ zY_Qe-lF&UI3b#Lox?o^Bl54vk+8*yG2bris5?_Y{88^7&2pWJ&j~R_cf|eeQ#7te* zCYG;DOE(+C(H4nT8gC{_`v{mpMq0aXCQ9TctumUE?o!!%Dx_jhIwcuMxRuxI5BY2X z;pt3O1PD)8BnfKa+~LU!lH%v!V^Jp6mFmt&%1F*gX1Q?!nAY^6oPXLyZcN5dzaTf1 zyf|2J%s70(@!MdLg*F{iwiOygJ4}*2ka1WH^hk2UjeD9zmek0~M^Y9fp=dHW+TugT z#Ru0gRkoEOG6=;QO~?=r3C;vX93C+co!v<5Bj(cnbJ?*5tvl%UPpO&MmuW--(u6QE z)n;ueVnNvlbQ$EmbL$cM{Ca6QV}!zH#E8mJ5K^cyw9EwaLZ}`rfmA=IOF|Ygr?flo z@~F39qY5}Fj$kENG1mWEf=I#YP(kF$!mz&){gM#5+u4b`jrj3o)66WAenYuKz`B;! zaFEX=K2VrEB$pIAhuojp2aFcByXYVS8q_ zS4`b+L=C9&NX!QfVvf+u3|~FSmN?K>h&)8SVYTjSSXRg}sZ9AGjeH zCA|}~VnzVU6)bN?z#*oehXPMD#iXwRbRUgKbD0s)LrP->Ld(%?xU)iLhF@W!gV(KN zqR?_npI11#NH=^w(*ipwGv${C9l;AZl)Q5RwmQc`<6G#si|!`_f>@xul@cYVqTV#Z ztVMjGSnxNp+~|DUqRBK@hRa8il^*DC2|g?fSGsLU3>i$9>67fs^dz2ffj)@^Gaiy* z;XzVQaC>d@Q|*bAULg(YA(_tmp^Y`MQBOHCjywb!)r!nI7RlTojx6p6#7A1%Q&Q6{ z35$qXb7i}7T#PZ=yR-lPcz|VucLiv-c!9vBox<-E;FW?^fD5T3+F&^=B~MRkPJGY% z3We3SXf!st@e%^wK4@2cLnh6W_}Dn?t@c3k{6|8y70D@a$#|gd?dl_txO|pYNsH1H zoe`J_*CqH^bTy{=oP&(e(&~Ec6gQC@K|EPom7=Xm)mGw{tiwta>t0bTGnYZ429(N*g$I>>(G2=~o8*W-}8(m{T98vYjZJ9i&(olFNJnGg_pC zwB*6AO#DlBb#UdmvRvuz!gQ1-EahKSRh~g;mslC+4$m~|jsfq($0Eq3rov86&Pc&0 zDVm3ZgEZDc_`)+{K_A&KK2-7#QRQ*?SUQq_uf3q6i0P~j=)E2eyxHSKe1ToH zk#NIwOV$MqQd+k9;Bi==I=YCX0=f?_yJcF+{vyTXH>odlS8XVw`y-(+{CQ}jaKP}f znxt|bEm|M4V7)F6wI0LNeb6=t2#`*Mk_ksb%cS4bTdCGs8#KlG@_Om3=dnOo5yKaS zJH{H8d}+&3#)20t>~4R$;1-hV8WMAl-Q`T6$0;^Z9v{{V*BmwbL^q*)9{*` z!%M%);R%?x14|Fad^>4o(xJ@KDTji-7`FKf+i>&}Zs3W^}n}1`!d1325ofEu)z;n_I@PAtgy*uy*E)V z1R#DuTl?>r1V9dp2&1Iq5R6reEVb9T7lk%j*e)m`OU{h=P|QD$Ok07+e=pMxjU+l2 zIo?q{1F=QChRUz0R^iRlbS}Z0r~H;`RY!V5mD=E~Q+`9W3U8gNw^KWlK~Lmp-482` zWeJ5Bc%6EKX@)86gHRlaK`ypft{FOl+EmtHwpb%NaKHJ$Q@kfjMUsZV7-W+fw8$5= zEpbAi--!5igsbaALGJ9AEbfg+iymzW!&T4)oB3AQgewq`Dz5frNx@ zA2XH9TS#6&9RlV$WNvLBWJIl^VkQR}^aWxN$q=CRn6);>{(#~4OVTbzfG3YjRF=4= zK~foei5ga7+Z1~xuYeW?nlmC%>5B!7NHGrpkHSRbrRbrkVYb*2+RL~TB}W2 zN|T_45eU`AOndC9Q>S9eDZ1ULu!yIj(za7k1Y(q$5dM=2`T-L5j`UFq<|Fj-P?Y91 zqO`?`Sql%0SkfRM@Zen65{l^!!O(J|gLtGH0Spzjuqj2sk6QY$FBR8_*$7AgNw-=M zC~y9M?#BTdc01E;B)Rn3w2-^fs@KP!+95YOx`<>Br(AGI z)Y$+aEaOf&)@dUIqmij1YbEgsZ4!F}U!bTiNd7y>b3Pd(iur*uAfyIJ_4`e~y}eis zn;9T&bZ-Qa%P<^rBJ?^FEEB;Hl>kAF3BQ=9@S8Z_2*5f*c*<;{A$c{tAB-IgMH+49 zwmp0RG#bLGms$q1uo0=#8;$1pdTdk2^tUlG@H`-Ab`k^-%R&D%UhWVV!6=aOrLUBcgi&dr14G9hVlQ<}CgVYd{7o2X95zG`|3w7%I%ksmi83DpnV^0qR3KtdNFtnh!0CsIbv0f0ZkC>C`p{;DUnsTIuRD^-BiKli#OO(8o*83ampr~UfmRIVIYCw%G|g>gM(swgiOd|-KWdL&STF_pzhVBivv7xo8AWsg)TX%6O~sUR1) zy--6|CuGB1qj@YLg)pTh_k**W?dt35u8>2BagZ|u56bF9c)$TYAb5txU}p~qkf$hs z=5n>d2?x4>ImXEt_(n9QRe)&^0XWWZVg1ETBi#yds8g{Qgqwl~u;pqN>{P7ZS;k zpe%Dst9vrfg94QY+8wpXPHq|p9qODjevIKAA})i|02cv5)V7gyD~9t7We20Qwc!H2 z3PI>}g$TCLx{*DM(aIds`GoFQ0Pgf;5digyYa)(@Zf$_aO(-%*$upp%ai=rGk8hU% zk2ocP#YXmb+=ED9mC3xE>6xWG`%s?auzN-Jqytoto8>$wWTtsWQw2UMIXoXa1H;6( zV=f@96VYpF*&M>mQ*j-_K26Wqr`eSdf#3k%$vV=Mb;RffLfJZUX_H_b<+QerMxv_& zr&38lHf0(yZY?s1{3r#>Ijz)X8V}9f3Kk?i?3V2g4I0;P!mJ{~S4S1enJ(M#AZ{mU zFeGx20VE(8ohTkaVl(_fdyQKL2BA6COkkn(18o|G|r#EsB8#1m~TkdB1f@Bl%%=Q0+fIQf#&hluC#gtogdI? z0ZgzoEmBEV6`dDgJm_`UP_`-6Z33o1-9psZ(a*J5mjjZy%HL^W*RQpsL|(a)3;s|P zJ~i&9`Pc%0s34VZ`l2DYT+87gna*e&sEq|B0*koy1&@iNC3fSuef}S-`S zzhwy2v^F5dI?E;-0adN+hj9nhkq4fzA4VKfSsRK)qT~j{L2p~D57ld&!A2+S5~YKQ z-1(F$VQ+fqB-=Bc5>mD8%6`PwxMvs(c)d+To!NNSvT(u2)f4Kr6GT#~tCtc<#2XH^ zl16MEWlJT;&Md9&!^c^CqNOwq3#KG?+YS;;I1^6L9754bu!lfPcB}z^5p^NUHT`8hzeMmuSEvZZ5{h1 z&C``qJKFXINsgszkz=S75{$(c{`61+Z88ot;}tC7s9<692ois#)kETAK;~kMfYvmh zWg$!^8p-Z3-Y z0y)@3wMhi!?b#(d5uyrb(!LQp_OBZt+p#bV(+H6>d$J zm3Cy3g=JihsRKGAsAOk*lBtylgz|;n|0UEq{1>TpctVNu*LD6X&3fhlFTVk`0@_~h zmS3mVTvs9A?Ii)r7l75Z28yV9#!$kiiN{ioJ(@Dg&7_2EPmiGFcuM9{QjR1c@;P@{ zZjFby`+I!&vU_R)-+btt(J>=CBQ>K_Mmo}7$oKN03ET6I7Qm@Iahx(DC_F-+Rc*`Q zzQW!;xE+`VwyYmEFC;pch`$FlcjhcO!SH}F415Fit*4~r%K5BR5?Ar}pIYQE3>`XD zpNpV=$d4#JyvF!}g6W^64~C}{MVu>WQWg??u%%o_GMaF`4`+5!b|d)~KSu?v7K?od zvsp&jx8RUqtqhpu2sv{VjmKgS&zLrWgTn%Ult?3DNXx{bRjFBvN&K%8Epfci)s6nS zlklzyxmX&xpbq?>$Ac~L_$y=qM!=1Nw+uiEFRUfl0@M^;VAw)sqYcI88P3#3P*r8~ z7;>VhQHm3S=*ON3y21&;1t+?zl%#bhge4;oaSF6BTsWE_l_sD7aB4gNoTjbBR}rhA z@*PxOSqEz%6)GMf6hhvlRVLyY3$Z0uL*?<47u|^a9Pwi>*q65R%eE&w zDr^WjhXg82L|R>0lRP3@>2~m#NS<*@XSwV!w}~aN(OyW}qPV>1qN-A|k@NQ8fXBqG}=9s|y;o$RKF&6*=XE5tx|o@g7{A=^-3= zrcy$@rm#&py225WHF#q!6yyjZ<1FYIh&rYkdX0`ROyD>Q$EX%xz*G4OyjeqZKx0ro z33;Etww(~oLkBB))~^ZQbVZ78hjwud2A;|H>jLku14IU4ouk@BdXC6=6%P)su`S|% zqiyUF@`9Mvt(Y|~D)?++7?HyvmG)uKEIY74a)iZu z!jX{_4d*Wu3`x-_YVy1-rzViZ;z7vZngH5rx{<{XJsyg3!hnZl2`e||J{6m0cPc>) zOah8PNSQIRRTIWFfzDSSl0K99xxJ7`!zyY?0ts4lEthae$3i;eGSk%+cw`Kc&?oFs zpAvkm6ObqjI?g+(SA{ago2S5wSB`v=M!ea_Iljwo<>b4$ZlXGFrfKX;VZg4YU_cU6 z=}o5MXoQQI85%fU)?N_likTEdX5jrZTb^bUaA@xY92Q#y1X>CMf)WrI2m^sMf(X=+yATC-AT5l+SWC=wVr7Vv)fhFBFD_8DTo z$28M1{d}VVQCJgqhnaqCLxC=;B#vYY3BSb@izvb!E*z-x1rx;?mP0S)D#FO}je_4S zr(%MW_? zg#zq3(41UJM9L4SX)l12kz#MIg0^)Ofte=Kk~7^|zj)e8N(SI1jhv$4?F6XZN0DY zcG|ON62_WF`y?fReZr)5h=>S@*?b8yU=wE3Od=#akOqX+3I07+RZL`^F_O3+k^poB z0>f`r+dAnxYTttH$6gVop^k6iOBWAUpN z^cUAqDXgdtt`?)adZmR;Puc(*rbZ-Uv?xQ9_Nk6UxdylUFb_49LA;RPPGDu)&Gzv%{lEpeTs{#oFbv|DO zbx;77paY0F^nIaF1oVqHPb@-`kFHEALZ-{RxNqoJia9~f3Q1WQ-ouz;BoPeQlvIdT zjvWbC$N&{Q0E=6UBA*#RE=kq#-*)DHwS?)`91zxg!Wk)XEx9iX*c`+R`YF7Tqvznw z0Of);ps|520F~4hduU{7`>7BnB{g6iLR`9>+(UGRM^{>1K=gu{;ag#3w5Icb z+u{?!=ur0SZFV#vF=q#IEO<`cekF^%PmDx!eZkHp=#A$40-8Hr0}H^Bq~*ZnK$Bt@ z9;r*^K{Wu;To_%Foc$u7L;u<>WQU$6gf2nR;M8liVnhr!f`NNxE*Zqi|dG)QAiC(p?Is6 z zRQ?5vMfRx6ntf)NoN(ou(@X>wuA_{FFPKrGIh<=-JgwR#?Tn`l)hy*a$x>CtQ=yov zRgrSoLp+n!UUHRYR46luJqO@XOXk4mQ-?TG`dWWN}CRE@4gd^#E? zLh|joLC*#ZePMiWbS}@4#5Q|7bV~!#&Dqi!*c%ID%C!349{UYKc8ZhG0n;R$GIC1z zl{xZBkbz`NIAzq5Y2OBe3Uk}9g(;X2W<0;Ad?q`31Yn;^1&z=cdIw#7?jI zC_0CDZM9}%!;S-=QeX1krfq+=4Vm)>dhdaofY zb3`?{3*Vwia^NEQ{SN0>UGfjXc1JCNDgaK&%GFHb9}y3mjf}H zz62ku2npCXg0~R?3ox01XFe-4VB_*(7#_XMEOAf~Y?uYSb5ERKR?5UYAKyOZ;pnV_ zoF6KTUpV&8^N5+EeEJ-3<^0llC(h?3CAP=8!`dSoM2+wdE9lL8SIX28}oJr5$s8})2Pu3b0M5d+48&Q_kGt)!z& zv$xV_vbK+eO0_Z)%pS5OI3fo8!EFwCkZK+RjfbwIsu#ZpQ*J0FiBQ@CdMu-)mJ-%K zBnLf>lr&LdQL>B@9BF7Ao$#!s+yj)HL&-IiTt~^Rl-y3qC6th5;34*AP##JnWgd@b zD^(NVnOZzsD7Otsn=Kz6-4JLeDQWa|&~_Gct2`W^~BN m&FGrh1>cI0$)AoW>6qCmBQGNh?UQm-a{7{)lbV!+7XKHGEdg!- literal 0 HcmV?d00001