From d2dbd7572b4ba26a88ffb774b5ae3c4558616cf4 Mon Sep 17 00:00:00 2001 From: zerothebigboy Date: Sun, 9 May 2021 19:09:58 -0400 Subject: [PATCH] cyborgs and runtime fixes --- .../modules/mob/living/silicon/robot/robot.dm | 17 +++++++++++++++++ .../mob/living/silicon/robot/robot_modules.dm | 6 ++++-- code/modules/ninja/suit/gloves.dm | 1 + code/modules/ninja/suit/ninjaDrainAct.dm | 5 ++--- code/modules/ninja/suit/suit.dm | 2 ++ icons/mob/talk.dmi | Bin 8698 -> 9216 bytes 6 files changed, 26 insertions(+), 5 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 0621390977..f7dd6658c0 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -812,12 +812,29 @@ set_module = /obj/item/robot_module/saboteur /mob/living/silicon/robot/modules/syndicate/spider// used for space ninja and their cyborg hacking special objective + bubble_icon = "spider" + playstyle_string = "You are a Spider Clan assault cyborg!
\ + You are armed with powerful offensive tools to aid you in your mission: obey your ninja masters by any means necessary. \ + Your cyborg LMG will slowly produce ammunition from your power supply, and your pinpointer will find and locate fellow members of the Spider Clan." set_module = /obj/item/robot_module/syndicate/spider /mob/living/silicon/robot/modules/syndicate_medical/spider// ditto + bubble_icon = "spider" + var/playstyle_string = "You are a Spider Clan medical cyborg!
\ + You are armed with powerful medical tools to aid you in your mission: obey your ninja masters by any means necessary. \ + Your hypospray will produce Restorative Nanites, a wonder-drug that will heal most types of bodily damages, including clone and brain damage. It also produces morphine for offense. \ + Your defibrillator paddles can revive allies through their hardsuits, or can be used on harm intent to shock enemies! \ + Your energy saw functions as a circular saw, but can be activated to deal more damage, and your pinpointer will find and locate fellow members of the Spider Clan." set_module = /obj/item/robot_module/syndicate_medical/spider /mob/living/silicon/robot/modules/saboteur/spider// ditto + bubble_icon = "spider" + var/playstyle_string = "You are a Spider Clan saboteur cyborg!
\ + You are armed with robust engineering tools to aid you in your mission: obey your ninja masters by any means necessary. \ + Your destination tagger will allow you to stealthily traverse the disposal network across the station. \ + Your welder will can be used to repair yourself or any allied silicon units, while serving as an impromptu melee weapon. \ + Your cyborg chameleon projector allows you to assume the appearance and registered name of a Nanotrasen engineering borg, and undertake covert actions on the station, \ + be aware that almost any physical contact or incidental damage will break your camouflage." set_module = /obj/item/robot_module/saboteur/spider /mob/living/silicon/robot/proc/notify_ai(notifytype, oldname, newname) diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 89426af429..975222fdf0 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -1146,17 +1146,18 @@ name = "Wrapping Paper Storage" /obj/item/robot_module/syndicate/spider// used for space ninja and their cyborg hacking special objective + name = "Spider Assault" basic_modules = list( /obj/item/assembly/flash/cyborg, /obj/item/extinguisher/mini, /obj/item/crowbar/cyborg, /obj/item/melee/transforming/energy/sword/cyborg, - /obj/item/gun/energy/printer, - /obj/item/crowbar/cyborg) + /obj/item/gun/energy/printer) cyborg_base_icon = "spider_sec" /obj/item/robot_module/syndicate_medical/spider// ditto + name = "Spider Medical" basic_modules = list( /obj/item/assembly/flash/cyborg, /obj/item/extinguisher/mini, @@ -1181,6 +1182,7 @@ cyborg_base_icon = "spider_medical" /obj/item/robot_module/saboteur/spider// ditto + name = "Spider Saboteur" basic_modules = list( /obj/item/assembly/flash/cyborg, /obj/item/borg/sight/thermal, diff --git a/code/modules/ninja/suit/gloves.dm b/code/modules/ninja/suit/gloves.dm index b5f39098ad..15abf0936e 100644 --- a/code/modules/ninja/suit/gloves.dm +++ b/code/modules/ninja/suit/gloves.dm @@ -21,6 +21,7 @@ strip_delay = 120 resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF actions_types = list(/datum/action/item_action/toggle_glove) + var/datum/action/innate/doorjack/ninja/hack ///Whether or not we're currently draining something var/draining = FALSE ///Whether or not we can currently drain something diff --git a/code/modules/ninja/suit/ninjaDrainAct.dm b/code/modules/ninja/suit/ninjaDrainAct.dm index 7fb0f65d08..4f287fc81b 100644 --- a/code/modules/ninja/suit/ninjaDrainAct.dm +++ b/code/modules/ninja/suit/ninjaDrainAct.dm @@ -147,7 +147,7 @@ return to_chat(ninja, "Hacking \the [src]...") AI_notify_hack() - if(do_after(ninja, 200)) + if(do_after(ninja, ninja_suit.s_longdelay, target = src) && ninja_gloves.candrain && src) for(var/datum/data/record/rec in sortRecord(GLOB.data_core.general, sortBy, order)) for(var/datum/data/record/security_record in GLOB.data_core.security) security_record.fields["criminal"] = "*Arrest*" @@ -168,7 +168,7 @@ return to_chat(ninja, "Hacking \the [src]...") AI_notify_hack() - if(do_after(ninja, 300)) + if(do_after(ninja, ninja_suit.s_longdelay, target = src) && ninja_gloves.candrain && src) var/announcement_pick = rand(0, 1) switch(announcement_pick) if(0) @@ -202,7 +202,6 @@ var/datum/objective/door_jack/objective = locate() in ninja_antag.objectives if(objective && objective.doors_required <= ninja_gloves.door_hack_counter) objective.completed = TRUE - to_chat(ninja, "Malware uploaded to airlock access subroutines. Forcing open.") //WIRE// /obj/structure/cable/ninjadrain_act(obj/item/clothing/suit/space/space_ninja/ninja_suit, mob/living/carbon/human/ninja, obj/item/clothing/gloves/space_ninja/ninja_gloves) diff --git a/code/modules/ninja/suit/suit.dm b/code/modules/ninja/suit/suit.dm index b0c18b8e34..66d9a85290 100644 --- a/code/modules/ninja/suit/suit.dm +++ b/code/modules/ninja/suit/suit.dm @@ -46,6 +46,8 @@ var/s_acost = 20 ///How fast the suit is at certain actions, like draining power from things var/s_delay = 40 + ///How fast the suit is at certain riskier actions, like hacking communications consoles. + var/s_longdelay = 200 ///Units of radium required to refill the adrenaline boost var/a_transfer = 20//How much radium is required to refill the adrenaline boost. ///Whether or not the suit is currently in stealth mode. diff --git a/icons/mob/talk.dmi b/icons/mob/talk.dmi index 0a563210378ee6a14a958cff5a1dc88fe6501434..beb38f01ccf9d7b89658d4c3b0cf486593b4f105 100644 GIT binary patch literal 9216 zcmeHtcTiJXyY~jf27(+>K%@vBLn;o_ea)b?L2GkwVvm< ze(Ndu!}WyIn$;Uu0|2n*=n;og03e?Lee6~)ho0#CO2+|!Tt&(=GTC%0Op9^P&EG|Xy|vtYi;^lkF3 zg@DCosYmv$*}>7z{BJ!RgbJs?SaBbz3xzFZOx!rX(TjyaF)k%u+xTM1)#%|9_JH@L zqjuz?=;pY(V0^+UFV-Fu-{_uSSe~$d&*on`$|FcUA(cX774Dj$z;jqcH7FlaI(&1r z{P~U;^R=y|6zEH<>o={ohbGnvTBEm-`h%P8;l61~tL`&$r#O(RM8D*k|Hq7NHVQ(RjaZF?DxMy5&t=3`t}R=2f2L)BfdA&r zxoQuz1G75z`qf`Tq@3*jgXr6_bSwPNShZ6LjT#vnanwPJ(Tl~Tx_sK!jaOZ+(mG~6 zIalIYZrB%}*#dbW!8$~90fLvNsp48dKL<6c3w7AB*Q60U)YM$^uZ6~5_2_?0p;A|` z)(4uF)v&7$z%q|9y{iYK3zu@IMq$!v%7NwagtQDh0C+U}O-w6O-X8zHUPRQJ)!Z%A zC>rkS;#_)lDx^1UseKkN@t>GH|$wD9i~W1kOPeD-YC@= zW8X*4hTI{_`psuE$txl4`TAWx3?{!;(ggH%ED`{q-S}T7}QKUi4RSyE4{ROnZ zJ4oh0jbds{!%%)$ivOlDT8>nv0qf|IKRK$i*pTN-?r%ix>r_MZD1DChk^yk*(IPs# zhnGqk3?VbgmxOwGC$=75bq^jdxqX#a-MFl+;DGeKu)wocX3{e_vdm&_uemsQl;r5i zV{)6SxCmjPDNK%6M1zNpA_8Jp8M9`u>?f+Ji80tW*Q`%V5__)R`xU#BefqM=&r~ffG^{wtro|A)mzhU@9dQFAO*IewUz023WJWggJrWb_Cht-}9 z?jfB-vs=lzCB_Yh<;-w}%AjF+W}}~ua;)y?$zZwZE9VZh6Sp0fl(GvS!5J~ezqttZ z;HQ+`_jnN9kkSu|`Zu45GLwgED7%BkbC@Y0zPwkyW+>#fa+1h{e#jDAC2+mGSW-Rq z;MF2dRYV9`q$>J$uaZZ-?)UQGsqT=VI^lu2%TBEWKeJroe@PJ4@{#aWb~5c9F2h~l zmKi1X?^|?hhhaCrZzcaG@d8VT2U_fPE{2CQ~z-||G z!2Y`%MypK%Tku1|I%{B%Z_OQ^pQ@;^Psibo7f*w72~p^g)xHkRKhL^X%uF4pOR0x- zMh^=j;X^x%xjm+_7+`pCaxSJJEd5)ZO}(@>D`;|`fTxN~77AzTV&91RsBj@SZBHl0 zpQZ}bA6R!9pyRpwWfIiqMN84mL94dUxcF&(4QPdp{5G>^Vg*pu<-n2GJsX!)aXMd7 zd%iNGe#e!kBW`iFFPBwqh6ArHjV4Tnx4Kx@#5eFxnOPr}E4D>Gh`L>l!@3SlDf>2G zWXa}eR&RPoV2XO`(s9Rz1#yGV++mc*pQ>{R3P5h||7{y>UjWa|OfqKtx;n~zLU3)NfD-CWeT7Qv5>)c&pe zv3E@lPXU-6YF^(|e4b=wwRAcVb>9XKgo=$Y8lkO&_&jsJ?V;%nf+eGB-EZP07aLoc2E8-a|;vkKxFiv4Rv)q@03lG65@Q6I&=XlwD>y z#Lt%@99LeO`{<;h7eDv0B`jT`CR=``9jbzsu&rr#mi!S^1(~Y>63g!fNiMTD$4V+X zel=#Z8{?++PEVMrgZO$~b-SPp@Hl+rx4+MQTR!=oWz^2pqKmo9NN69%EPyCG$_R^cw&1BL0HW-%C4wIVm zthSQ9o4y2reekXgdZW73nu}d3V}hIGQVY+xlvtC|Ph-=Soxnk8hU;Xn6xSQTu19#u zLh`7t!p$7HXOaC>#K{|S6@fhEKI7fB0R0@0yap@SlROPlci|qF5@P4ABnH@Cfoo?0 z%H|?X@8dMjV*7E-V6bUIiz7J(e|TPWyR=rxgO9}WVLYU_YLBSD_t0Mtk9Q#$I};#$ z1S8+=o-DWi#3EEe&QG_snS#RqN0W@B{!eJ4<-rY}Fu)((SG(EL;1Z%! z8+1nB>t>L}prJum?mprv@2c2^8P2FC)x1)@DKT+!a^SlvLYN(P4+_K~hv;cgJwempuw?>t}_tXw$SxI|=EE;~FHKd7p+e@+~h ze%`QhL(>z{88or|5$T>KcEU=WxZ}UD;=$g5+n2#8Xan&W4CX~$Tz5rS2}iSOe0;pp z!k&TYW$E)+olLfroj(&FHtt*_>_YGtHSbvNf*6i0^5Ek-X*Al;-9Y0fIDUOEi3!2m z5@hE%%(MoYrWe64`wen+2;ofd4Eh@Vo(%dfrN&sbPLhhR4Egh&q`{ek6Ob#@&X2Mk zSYmsZIYBZw?7*ld&H~xBJE#hM@0=2J33ZO{GXEDn-hahg{+~4V%Q=81!>#xwpJkZ} zkwk%&^t!@|4ZXs84n&>}G)BlTJah?LyI^0$CI9~fC<(H)51ocu4JjColqjrFG1+t= z^0G@9wt>Pp0;wIkZlM!!9xYK*gHD8ZkkHW%115`HthvnvP7a&)U->Rn19?uR75?-m*>=HgY#Iz1F)t^&vf&0J z-#qO)uG=fS7FZn!ujM0)+|iSbM((G}rN7H~A95X_`v&l^^-qaK6&rkP%CW90B z(I4O5bKfb!=4b_Qa+Rpdv%>`aMo21WRUPde@Xx4Fu?5>*d@Q?8u)c1#JfHj2{JSOfflUeI3)Ozt z*&FJ6zJY=th87;INO=7^)W44u$w^8~BqC|8TWz_2+)pQj^zfo4-jSPC&3sajhP~N& z^@85-SN3zC!{P%|49h5w>Ezd%=w^h8nIoBr=CJkDKF+E#ecY^)uG&-|ub42yzrET$ zd1ZN8?dQokhR>}!wDbldYqRhyJ`;g42+EbS4jpcKr=V(W9vbZp=jUCUenVN3sdXTN zX0y}May`z>8(Pt;SFaKigKe?g77cCgJ5-i|6jFwcn%f8F8w@XZ8ZI=C_hP0 z{N3roMo#Yzp2n}(hq8@~ro(mbs^|puu%#hu7y&9VKFv$d6CxkoqGKAc6iACbhhKV0 ziV43nh;;u`81NNzfjtrFSYHdRiaYR9J?-;-L#O=<0}(E{!VK@Q8JEbGFJI0$A3wfE zEFwsz2#&Ko~{msjg4( zoKWm{Vb@HdxgRQygY1HTg4wp(WS70|rx%xj)#r*n2hNdWw_eXwR}3H)RJZIP)c+#J zz-{BXesN19Ey0-BeG%Ufz1g_rQ=av_4?DDHB&qIs;?jKmcN3_{s(bS}ne@g!cQ-Wk z5;QkCa3bPl+}pBcsJU~MHqx^}OE7q)M$_ja7la9O&&Om~V_!c=?rObB7J7TtUD;;l zU8nxu7CZSIcP{GHLqn&uD-#nFeu0639IQwIO}mjrML0Bndw-X*@5?!Lkd|*l`WB(8 zXFE_wmk!qCr!H+#Pbhnvv&){C85N(6RyquB3-(;~)fwCo>?tYh9YbJ(U@}KmLq?0F z`ue!SnF7IyJnQHR>8E3`GM!lswcr+l2+WHb(t_3hIQW)h(w(u@WgdD(Tu-}MOUQ6I zh{xlT{i4F~XZSEv(-uUtHg~$y3L$`p+$W<5*l&62+3anW{j0kj{S7i+AQ9;77kvph zDh+EZM3mQ|POsWnrCTvZdsZcXO|;0Z6gs8rdT)ALzs)ClJgW~fQ%7fK%OO=8btEl6 zwYIjlkI4G)#|OxaVc)w8yNclA$zD`TF{s4QV9{rgAK(@i>ynd`xl3#U!KSDaRGNME z`k~yW(t0)1G=-oguAL|9Q?LC=dAjx}8YbOtU?7>Sl1BER-o*VPh-o;n4-HB`pD2px z(JDc8AgYbXv#Db)e`XzHzPUh|-_3CzmRUeI=6fL~><$aUabqMlB%~a>_~YBz0>HHs zdOI<4O+6=>9|n=fZZKKtyi@6=0!TqsWQm&F?2Ent1#fx;;|ZO8HR+iB8LP)0&Qtqe zW*6{SR`K7Qy)cnc&6I@}JqhPjbBo)ks+IWeBFdp&@b#5@-Kh4u`(gL0j}4#evw!YC znTEb1!xQ>~q-@W&+1NZEf*aM!%uFEyQlc?p-Rq-tDWg=zoL4oZ-YzF^B#lZhA(5UW z2C=x!Cl~m{7VOvZk&c{Ni|==*3kIs7Xnqn_@Nw>{Ys1{`N*co* z(<_ulPKXS}RV-|^(Re(eN?vnk?d|j(8pO*y_)y)&PK=ED!ZXCM41HOk!fq zn}>3-j5T_>N!30F)~kIiHaH`eR_$$t9g{=_|1z`?1YLaHXYi&8xPn2QaUz0Bsc)El zk?s{e^od_)V&6l=635Xy=yJ;vHW!b>{3_?v_54xR+L7JQ5xd6G7EtPRxiOBM+I7WL z7kzrwb{shcWSoGcuX_2!U^q3^Op|z4F(rv6{ei}f@ILXM>V7?Pk;Xg=B^u7C6R~I? z(NPBnk!0jleKdC~cPO11(Ze4Sa$`q2li`0b5nd3-S-~XF))ReOrV+g&t(39-33d_d zkv4>)z4)?n*1^+a$;hXy;Ninw5d#ci$kLH|aDKY)D?db>{!}mEcm+$gNcV*xL61^S zufPj%q?q{*>yU=XiluWq1BW8m9WSCF4*~m3n(v96(*1PApT@kjTHhRE7c6JC?A^1P zZ#PfxeECJ4(wf!4>dldL74-0D`uWv4@+<2v(1mxqR)_;l1B#hGlHcng-IeAIyUt&i zqtvdaks#s9bd)-@iUW#k6BBokB1)?9;Kl$vzA@BjD28(eQj=}S(z~2QcT=05{xWE< z7t54Q2f3+To`k%h7AD2CB2!xD^g^Vychxdz0%CLzqcg5kAW?p}>@c^au6{0VU^lZ7yT^k^{WEQ_+EAW1(T70qzkIZWT??e7$***17KndOgMif(@DJYl z>oh8DX6Ot5Ys{%;foNMz9pznb*amYzISlL{4Ex-{+7su)&CPl4w1leLFw_A$E#>^w z8o)L#kG5)qc9>M{XqEW}N)eUqhk~1d3jpAIYm>r1pA-8xr(*s}xlKiq#8VZJinJ*1 zj)AT-#ii`chh}a-Ipc!w`87sT$q)w2cz8?Z@lR_vO+yYn-JXo)1VR3RxC)t`sF~T& zJ^9uavqVQgA)LzBTVuN+Xoa)LXi5KOyR|l7@eqToB^7x1k;s z{>WOxSace@CLX8dVf$L)27butO?xfA81Y3^IoON1 zl{C=LbBjPyv1VPVu`4h9K1P!{;`ka_rVhtRC2yCB8F-C#Ws@Hr@RXb<$q|kJ%CsE! zQiURkX|mjgiUzKXmjyNCgV04RUSE-_zD}#TX-KQcpvDJ6bT1-qwHD%M79EDWZiEs!9hOW?5XykBfY1E~k$>!G zna4TeOi2N$V>oz(Gg~#fWX2IZ%r@ZH@u~FBAdu6FX=vf&JJMl<_6)!Ne;D2<0vt%e6E0Fw| zt^?j3%Kw;lsRl~ZmW*pdfd4+5l1DdzYp_mb0#JEG`T?hh=&y}n-Jaq_u(~*HuJU8F zJgH}awBv&nd8t2`hvfz{`|lS*MJy|+cp*|_Mo5IGSz*MzO%$3)l-iovbS_d(6#}}$ zbV{BA^3K<1xzYiKbbZBmdg2xEE=pu*5IHjteZITH6`#qUWmKahnT_$pmJ9tq1LzUV z9nt$eP@v5eO(9{*kFf!AY`5DJCV>*?c=89}^$ejmr3P3RqZ}kGg}Jv&dcM+KI5yJt2u?!PG6_ zJq#0B<&YqikQn5}%Gv3cW_oW+Q;Wgmksa7H(d}314GWLbU+AoGXPXTltX00)zlduu zfJq@+M5=F<&pi-j)}xKMCFu~SR6$7L0$ZZF9FtR831$*i{^?$@JelQF@=qezUzvE*3ymhsuY zw_3@O&tK|`9X(V%pc#d|6f{3WbMC}^&(@Ybai^yT=Y~sora)6o4@P;oqzHkC6U?!b zu}iP;NVde|_?e4XS$|Yl39xHk=_23mm9PuB0(gYnqG-;ZMr?*EY>z#H4k+#Q6YQ-? zOq7bhN zC=W`_o5GnApNQ48m$Dk(m+c`R%=b zd++-7vYpk|O?x&00I=2i;&}uB$XZC-21Nh>Jf8O(1Aq)M;_9`a^B#A94)hKP@<#gu zK-ddX$~zy~@3uYasJ8!RMfV41mY?AdI$A5En{iEtgO#+^toxd&7?mqGyjr#lPP{h( z8HeGPIa40os$l}p-x<4xdz$6l%DL%=Lpi`Z_eV>-TOC|a+aF8)lHv-(EJLNz0*(9WD3Yn(34)+=*O25#(bmEW5r~&eQ%}Jb!WV$K5ReuotjC zf9`773)V2|ca6|{+DoX|>#Y5Op`Su zDHWWkJ}+JaZQH!FKF^FArFiU_>}ZvAiaK1tbuO`=E4{ltg8We;eL9igF}RV_VJCj) zW#q$DhelZri>hBkD#o7su=fZyN=(|y;YV-7!A&KWeE8kv4E}KN%hRG{BIt!iD$DWwgS)i>PolI4^&jVxMxl?h7PZP_5!B~VCQCJv@1AED0pC#ug zrjQ%Q7IX#%J2&^9E5eZ@<#H;rS*bW04w1J&`en+HIdEnM5j_pa6sRROv`j3ARqB4f zGU%jKX0RpN@6~jk4ayOi_t?7+t3$W3FH`O#pl{qbY7u)5jhaMTC&PoyjJUZ4aXy{s zksNQfjCIoU+Dd+|IdJ%uq9o#*=c~tArRy0qgDG?w;1{%e@40{bV$^r!*`e2KefCj) z%27O-fUb?jn4(@69RXdB>e{q;a3-Y@Mue{)ye25&b~IZT`8~xNb1EX#qDav*2W~F; zK0}FZ-jC7`Vx7cOWZ_&k9Z?mk7NkB&Oa}{8GjT|8{wYfQ;2heFGtH#Xlv=ZqpsN}< zuwSw;iDqrPrh`<8J*X1RX_!XYsDpEp9qkMfa=m*mmd~xY5d#2Kjl#bKQvX13iSNMX zfD)}LNm@J!$Kg%GOL9*a_;-nT-X%8T1rWHMn5Jhz!Uc8+*;SWeE9`KFtLk&E(IS?q z4Iij>XrUWJf|3iESIqkCHP8~!{dJ@y#adnsCke)4b(1C50#%ei9K{p7j5IHGq1lV0 znM$L5ZI@&Q7IsQJ=OO{mJI98ONXGRTM2gCK8^v}uRBV%6ohXp`;&vkV+ZD6L>iPHC z?KYh_wX(7XInvfS?bPf6N- zO9;HAYvwG#0+VTJvMW+`ijri&Gs4y;I?Z4=3W>ruBU(@Ri-L*GNd{>d3iC`#k4kKT zNg`N6fW@#*I^f?)L?5w3&Ne!W3n%#`6^Qz>?oL=YtlNVuzzR&pC5uCmsar0mC{ zIC4c8&nexassa~96nt`-uPS+ioQ}RKApf4!Y(d%s3RAIJ;p^ZUBx6q>mCHIw3|?rL zK$C|AdtWA+Z-MmCaoM^JW!y}iAfF3)D4pv1gJLoD)?ydrRPtr24uyq-g9>EF2*@OpP3@oX{Jcpy>VKJs+xB^lY6l%Q~xM!T6nnX56Ghi28Oy4bl0 zuPJ+Hm07`jm5b~^AG5(#=6=dS^omVo%HIve3Ygq8lx#2^x^s7_dvI_t%jRzeuDl|L zNjxfAK<=paIkqPur*=!HY5iD$x4(a3eqmwAl$l}3Gmz6_h^2G&EIOZ!1-$KHYGVh# zev@0Pq5jn;*xgtB%l*MWl=rW3KmT#M_CjOoY``g(f!i6My@HAoh{Fn;7Fz#V=(4@# z_|~uYu1yRZ8C?>tva&LG(b?72Z@wYq5y+ufMGJ&>(E@rm2~@r(Q*hl(0G}c!dKf;w3JB;DYJ&Auc!eYDy=)m9JS=?+ zXE9TE37Cr!VyDg901MU1En0sSKlqOa^e^Kq)dOoeQkj*6U W&Nw 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