From 6e5a6f039b3d5751900b24f5cef450b5c974a9b6 Mon Sep 17 00:00:00 2001 From: Jongwoo Han Date: Fri, 6 Sep 2024 23:48:41 +0900 Subject: [PATCH] feat: Add a rds-instance-stop chaos fault Signed-off-by: Jongwoo Han --- faults/aws/aws.chartserviceversion.yaml | 3 + faults/aws/aws.package.yaml | 3 + faults/aws/experiments.yaml | 104 ++++++++++++++++++ faults/aws/icons/rds-instance-stop.png | Bin 0 -> 62023 bytes faults/aws/rds-instance-stop/engine.yaml | 34 ++++++ faults/aws/rds-instance-stop/fault.yaml | 104 ++++++++++++++++++ ...rds-instance-stop.chartserviceversion.yaml | 33 ++++++ 7 files changed, 281 insertions(+) create mode 100644 faults/aws/icons/rds-instance-stop.png create mode 100644 faults/aws/rds-instance-stop/engine.yaml create mode 100644 faults/aws/rds-instance-stop/fault.yaml create mode 100644 faults/aws/rds-instance-stop/rds-instance-stop.chartserviceversion.yaml diff --git a/faults/aws/aws.chartserviceversion.yaml b/faults/aws/aws.chartserviceversion.yaml index 37f9d5799..26ef8d5e4 100644 --- a/faults/aws/aws.chartserviceversion.yaml +++ b/faults/aws/aws.chartserviceversion.yaml @@ -34,6 +34,9 @@ spec: - name: ebs-loss-by-tag description: It detach the EBS volume from AWS EC2 instance identified by Tag for a certain chaos duration. displayName: "EBS Loss By Tag" + - name: rds-instance-stop + description: It stops the RDS instance identified by instance identifier. + displayName: "RDS Instance Stop" keywords: - AWS maintainers: diff --git a/faults/aws/aws.package.yaml b/faults/aws/aws.package.yaml index 9210c7813..5bafdb4fd 100644 --- a/faults/aws/aws.package.yaml +++ b/faults/aws/aws.package.yaml @@ -22,3 +22,6 @@ faults: - name: ebs-loss-by-tag CSV: ebs-loss-by-tag.chartserviceversion.yaml desc: "ebs-loss-by-tag" + - name: rds-instance-stop + CSV: rds-instance-stop.chartserviceversion.yaml + desc: "rds-instance-stop" diff --git a/faults/aws/experiments.yaml b/faults/aws/experiments.yaml index 032387eaa..54be0946d 100644 --- a/faults/aws/experiments.yaml +++ b/faults/aws/experiments.yaml @@ -779,3 +779,107 @@ spec: mountPath: /tmp/ --- +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Stopping an RDS instance identified by instance identifier. +kind: ChaosExperiment +metadata: + name: rds-instance-stop + labels: + name: rds-instance-stop + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: ci +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: + [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "deletecollection", + ] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create", "get", "list", "patch", "update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["secrets", "configmaps"] + verbs: ["get", "list"] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get", "list", "watch"] + # for creating and managing to execute commands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get", "list", "create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create", "list", "get", "delete", "deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines", "chaosexperiments", "chaosresults"] + verbs: ["create", "list", "get", "patch", "update", "delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get", "list"] + image: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name rds-instance-stop + command: + - /bin/bash + env: + - name: TOTAL_CHAOS_DURATION + value: "30" + + - name: CHAOS_INTERVAL + value: "30" + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: "" + + # Provide the RDS instance identifier + - name: RDS_INSTANCE_IDENTIFIER + value: "" + + - name: REGION + value: "" + + - name: INSTANCE_AFFECTED_PERC + value: "" + + - name: SEQUENCE + value: "parallel" + + - name: DEFAULT_HEALTH_CHECK + value: "false" + + # Provide the path of AWS credentials mounted from secret + - name: AWS_SHARED_CREDENTIALS_FILE + value: "/tmp/cloud_config.yml" + + labels: + name: rds-instance-stop + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: ci + secrets: + - name: cloud-secret + mountPath: /tmp/ diff --git a/faults/aws/icons/rds-instance-stop.png b/faults/aws/icons/rds-instance-stop.png new file mode 100644 index 0000000000000000000000000000000000000000..f28852318fac43573f9cb1bd641bff6b3474df53 GIT binary patch literal 62023 zcmeFZWmjC=5-!}(Sa2tS;O-6~SmW;QgkZtlJ%W31cX#(DxVvj`ch|SG_u2Q{bH{l9 z!T!*LH72W9)vP&J&8nxK>R?5A2^2(pL;wJQA|)xR3;+O0{(KPNAR|k5aORLdP>#wH z!hrJ8_xk_<2|!9zNYzdMXvH&1Rl|q+?(}qdxRhJLpCT&L4FO%UaAw>?DZpu-sKvU$ zb9S??!1MiKUt`14rnx6C6_x3WQ}+vdO$}B^8tRyn#I5YSexPT|+|A-DzFRshz{~m(;*AEJT0P275lkOoD%FtuA9Mco7$}6L|FH?p`oG4580uf+{k!x2 zeQp2sdH)_5{~j3sb1eUR+GhS6s{9-0{Tn3zn_>JLB>$V9{r}~*uIN!lRd2n|I_Vsr zADRja`nGDh*OZ7PMhR1#RAt*4cv8lauEy+n2Gy1`a<0bQQxZif%w}?Z)Avof7bQ8% z6Z_@)XH_u?b~#5&ic}HtC1UTdPLcG2OlsNOH-CgDFu0RwwLMfb#!0^cq!lr|@c*5g z8`h7t+3V0Y?&^tIt@7_?BQzC_afg?(zHz`;%kXvdmWt6NAdTrY8c2jvWQ22{m)_yf$%xXG zs9H79D^5FUhCfhLeLsMe3@khbay-|BV3X`&W!~JncF4jGDuxAF+|QEdl^Th2#9)vQ z1cjuP#tG&pcclKjoJ-gm7RBD*3c=YPP%gsehW$pJ_a_baug6V1X@WO&zjiP1KH(_{ zScT}1WIxuVZ+?Bxy_*o^c@mDVn&C?E~D*kL4vw z4Z0zK4T*w?&CK7)__H}eQ$&QckLV@gWU&0_Awm^T7mi6L3ezHteJSj;>}JvKa%J)_ z0O%4z#3|}JKXMdM<_S_`&JCMdPXo@Nz2of>AFQzRE7tZ!_r@y>`$?G;2|6?2V4Ou^t;~ zWQQXeQM7(_T($qUX^Iv}!Ea+M(#@pS=}=XT2!1|*jw<5k4cG>#1NXjQR1*LM{5G^d z#wZ{1VD8}n@XFQ$%pF!i<<042L1`@a<>%)Y^LHCZq!0X4YX)>-%(SB3pS!*&@=Uf( zmt_f&zrOc&qtuI4p}AVf$})O)*R}*4#{Ht7WnlXGko_c0)>m>{oVU~x@4kdQ-m=WA z*586Zeu#Xg&iS_Vr??l9ZN*sm;kL07*MJmo7hcRKGiz60QZ!{+ks-*ue&rbw*OiAnmHz zRz1hMg5k1FyM-bv*tB}K)wrO294tn)J;a=5OqSc#$u4p`Uz@z>aPi>PNtK_d8bG}1 zel1NN;Kc0=Ro86)bwFqTbtB7cgr)d0+Iy$Z?-bh=C>lnK+X`l1|lz3 z)2gx1L4*p+d$BW-*#Qw2sl>f+1&ly!b31y^%YFQ@D@v&b_)>Xz(N4YijKP`o4C8Y_ z4_H!@08!2my%zLnR{y3?S=^$>D4aXZnvTbCEQ=8tu}!msd=V8U??iVcm9=6HK^cch zfzc-AL|IhN$l6sWeP;oJkqvXyqCd#@C@Jp1E;|By20tcTG|4NyA8&p+Yc1-4rU^=J zf(`2m%kfyz8h10lm*UMZ0#2->F(TYK%6QxJ1Vq+jkU%hvZUsqDaj9W-mzNbviJ`yw zkU_X2jANHXhx{gsDGaU)MY@?;_SJAkv&9G67^Tq0MF<}GH)nvw1!;1E%dMuVC7WYf zmLjDNrh)%x}8+h{^@LevQq8; zYE)UxHMv%{FMQ#oCqW-(H{22~=e^m-4r2^`kWcb?W0W0uCCe-LiXYGmthGwuC5+Wzpu5^}n$#`Lt*{tFm~3L5n$2EuX)34hL$zM#W>`!7H|EwnK&ouOlL zax?4?w8aIg%l(p9KAu-s>Yk$$daL=pPo;%Nuvb;J)Z=3%Ctgxw^3V_D{>UM65ehB} z`t5diXNeg@<}=F0*VKAD`t-3&;mHytE(O9|o)4`B*9Bk{yr3W?5J`pbl?3|ZLwN4y zdkJCFwfYA^HQgT$O~jbiz$^RjM`z3I88<

rur|?(!EE*rjbwr9ClD%K{spx&<<+ z7NHDNDCVI%o5enE2rl)y&FyB;3G@et{frJ{n)p5Oxi4ZRp31kr=d4j30>)2TaL#@^ zY+F$Iad8n6PYg2*H&+9c>;PD*O@X@dz{iSlOx%$;m3n@SVT7Uifo4!w4P#l(g5M-E zZO+rvzfWu)k5B2G@<_ODOQ}5`qVu8T9{PR6GvrQa$RD*yi%|6*3tDHHZinf)ELijS zJ*+EVKOa#xmvNkYR||fML|;)W6HGW*9NKMr;8CLZQctuFmpKP;N6Ge${z|kV*?*+7 z-D?fBsomV2UZ+)CIhx(RKT3LSl+aaxzHo&`?yVvc@Z4DczOW{CBe5#50fiS8Y6X~f zF1-?(Xp@w9GSlI4^?oT@|B26oA$D`@AhyQudeu`>!_OLNX$^^*%Jh6MTOPD$BPg33 zTosS zYHZujPFih8`v@$@`iL?$!u6Q6wfZn3^TBg-VXXxi^1|1-N<5!tQey*}a5bnZ97S_! zPdZb7LP@fy{XP{w(Bh>Fxz4Wcx!!5yB($3<6V(vzzSgcWD;Q8?qb!MEdOw)=fe&eq zwdx|DqG_%!#y5DN`X)DHo^fogH8}?xg%Dr{q8++O+%65zXl?e1>Uv$6FO{RiE z{iogZvgE`uktsm;%!)TVl;^{vW$_1;Ok)^dr-!}u!}LMx0VBx7!dQV8*9D~W$@XY% zI#Ew_r6++szP#QW>%mc<4#)a5uSqc$@+|5dyK~MtT`upbCCy+8dpI$4)%SRfw$!i| zxOvDX-EN~s`vDZWi{_JcvI%t}VqA!ouylv~Bj+}gg!Lm|rieWK+hI8+M6b&z%vR-U z9g1)~0w5I<3lxz^;6(yRIl!g0S8Tt*SHIX&P*$OJ3EBYq%&M1vr@_F`+Byg|Wd7An zgcsF;;_$>jw{BurmxOj)VXl3t<|(F?qSzKxXPmQ~k>P#`*3r@*b~2fhhzKj#E;?lwz5KKi&N_8OZo3hJsh9G&w!0So+;)0p+$d=P@D(A z{tZVTuSy^;P3!FE$V0%7tPiL;uZ9jDjek^54N$ANkb&lho_NOn{Q?*)_FmO}oX{g; z8DCRgFADP!WW=QzBpOe^{On%m(dqisJ83z`!bgGx zC}d2lni|+h9Iefk?DaaWBk0A8ytf!}27Be=q^?dTRX{G7cQ9M-KC+4jC*h`{q}R2Z zKOS=LS#{x2kQiDPFUH6>YgZlwCHcX5qLTji``I5#rru=S+&3aL@(tn&ir4-&EwTJ$ z51dMT1i#QSX)UecpxkYwra9+PA2B$J?FG)}rz~?QJcO|y0Z+(&f%wiRa2b7N(Z!6W zvuAkh+;=->A6G`|yjdQ*2W^F?DgFETWU^$cq1J6Nl9a#g<+(=u9363D7IP>V#ij#&6y+$P>&D_ljdjWRIZl&Yb82kC-}&#Q zXDnbdpA>HY;R4Kg7;CY+GCgiuX*r0By>f&cU6xf+vGEO@{n;IE&TPB%#b!+*6diJ< z&r(62cXp_Usia-LBGzl@@9V*@SX!6TL5@b;0#92a>e*w$xd?HF9@8Reh%wGJI=6dZ zrmDMYbC%Hf0`lM5=`9@bBTKhOLH-8PK;QnZItp?vu8N1=80I%;&S9?a``OCeo_Ug7 zd6P;Opc2Ol2L+(G0$J2JhC(dDt4$EVK5thdX>QR(D&m$i?kzq+&LKu!_iLF7v!=-p z9@1GEUyZ1DE9-@NR$Y)(X4z8l)`Jk?L{hO@+|ADYVFpwrtuVj}Gn1O82Be)#KStv7 zeILQGba#5(&}3kTpoX-=U8hamAxGD86ka$YmAwjK6Ji*G^#isg4bHOSb$2!Q(J(Ri znq|$pm(*HT7m;mhfIWeAvuqTTjOLD|Np)FqJdL-e+L*9nfcWe6a1~I{BDiEnOr9PL z$VI`Icr6HdmfRrziqjC}M4b6-ZKu=veIGV}=#5s(ad2FdmrZD4WBNQZ=-m8m9IZy? z0WM2?nB2?O^f}%d!e%pDbBJOM)krs~n^fi))VUAgF+LGKo!szMJlCryEpF(<_{^XU z#T_Dvr-sW>|~#J1hl>&y=K+Rl-fft5gQORCOpY6=ceI<(=Txzh?8fM~w! zjpwx~2eG8}_}f|AwZ{(>_u;khD%~R{&b&#NGx^Y2k>5%e>PlK#CL74Aq?FV;5Z8lQ ziiP_!9p2GVevVlabiVqo@vE`is+?@PREpgK0afHmhl~b?%AWL)6P8`yHWuw4aAhv` z917I2Pf&#kv|Hl)^$51IK_ zb>S92xPJjCM4rCm5t=SeeP6>HW0CPcNOkL>C%f?NqN?~-`Pm9A7&QNtEALa;f^usC zJF)E)hZev`YsN$o@s%=wJL|3-kQXd{a`!#E8e3`^4c zG*HBi%5Y!|4VB+E>QwyM8*wj4{zy6HsX2G5d`qCrv}L1Y8}_YVtryO$jo%*yD1cG8 z<*hrq51s(HPnBz;JH)e$>;*D;$}u*u@tueMed+oHloMFlOzZ?caA1*ly1mpPTRtRe zF^1e>saes}HT1!IK5F+auLsM&8J65K!;ePy z;n~WMpsY>D7NyL&T@{l-=CoB}gf> z>NAG0Ks}?c`;g24jQiL#s<2?TYaz=?w7e;IDtmGKk z|LCxC4T;uu49^_3^_FUpz{#bDLEGHQkV%ts*6`s0qZqF7G`WCLu+a5~ORyFA{SD-j zQq)vq9hakM6=wD&zp149Z{U@2o$W1?7&G{p(>8z;394suU+>m8meDBYJs>eElARQE z*vrZSw}IQ7M2hPg_g*hs^c_2*7X~<%^eAu=>{(G!CZ&oVTKvdP5(B~znWP|K@4$u& zc(1y$6RLhiKS znVSU7&JeHRmFrbR*$RVnLXf#xQtM=|1K*w%gJ1AO9Sm7d;4$s^A#OGUN_$Yu?Q(^j z*^A{cSr6?0ycBv%OBYG-8E*POL8Ov1>RA!jPNSi*(r3ZjA{#L2wb zZNV!5K}G3+IN48O z*qS4g3i0!K6T<|uZJIM$L!$tDlzMjzk#as9^Bui>(rI+M*Zfl36kf78;eT?$#kpf9 zwjzJ_@Yc^WMaQOVR3E9Z4m#1kP(Em{QCJuBJ3aCwNt5szD87PEb8D-D1e%5=3c;B0 z0I`Vx$dvsu6(&L5+f;bBws?MxVh?S8PGEjP9CrlWsEza_D1PpDejKISCSGI^7oq_c z4zcZ|)oi$4H>5aj!g!|?^k_tgF^|#c8~T`C_a!pI0=tFTAjeeQ@?EJWo~BbU1yiFR z7+ZCUc~0QFy+Nxt^s(AZdo8tOW$Va~gF~$q=xsD$SlII1F`-Up zCEc2h^hi_WVEK83DhjG&MK&YrTzm~#juO=TRykR+m>LV+zV{r}y%hbVG4kJ!BRCGE z{{hDh-8IML;7BelOrY9>p(Op{*p_4su}<@f!d+pQiCE+8xTWJ!L!d9B2c1~L9s|}@u<2U z5Geql*G(1&3{8Q>>SWZKNhaUSGl6tZ6_AF*pGAjw$kbmnF;(bxhfdRZA2wzd>dVB5 z@Q!}ChB^sG0dB(+Z5?@$B(2MYHmu7!y_oAKPLV2zYLXTkO=Zs0%e|^+v=d~ZUR7Zu zITo8ccS~H*)g;)&moF7RRRkvwG2H=<#0JFhO6TeK9a&-yE6*joP4~^&V;QHX@Th~G zbR(_JR0|m}ib@^EdUyr7P4fO=8M~%|Al@gwKYOQ<-_+$J97)mybL%>wz;LCG8oroV z%O1%uClZ3?VaPV7r%(vJ|EHFN_gBfq@&3G4f|`5rlSFd@)kL6%X`DP)lUd$XIEsY* zsqtbLmPWIz1VxhrMU$7715VYwu9$<;x75Qolaeh_iFst2d6j4(MrF;zv~)HGFt-Z$ ziQfddZ?LQn!U_e@dVDN%h*Np&*ROu*tSpZ~e6G{Zrgex@*RX*)$`1UmY>4Lrdz0_1 z78ak{@%L2xI`GkaYM7!%O;0=x);{4REdof(1=>L-BMSHsb$wt!HO<6_FmdoaD%EKMV{O4Y5l9(&cn5%l0xLb z7u)vF%j$@(9yZNMFmJZ>l}a7RDQyN*GIpteQBef9y5-?e{kpZ#yj&#!Q9n(8DG=4N zml^_goME5qEd7AvFBpS&P(C|HQiDX514Qbtg*E=njp zQ;MKEl9GBn&xGWQHk?Fnqit@|X5McYc|Faky4}i24<@+$Dryn6lZ=C3?y}P?i$lr_4?89JFt6mxF+x3oVC-v5YAEvpF<>ECY zq=(z~9kF(N=G+U6G~Nt51gU4Fd`UhPAEtqvjPuFECsxRy>KX&Pfp_wq4qbi3Ap18l zH^TZ(ZPDs>q*3XqO^f;bg47b?hz{fj2Xs!Z3xjSNWceDhwb*pGoqHazTv7py=%q+k zLavYAfmOJXGfh z2ai5+t8)fJAC!O!=T|v!YhWX{(vL|w?BR^9s#y?Bm=?L zcDu8dVIr)w0hWlV@OGWBB(obve-(b_L-={7)OsP1rr!dIdINMdY%&~~rH*mcre)>5vBx{mjlUKFR z;4;^gCX{u9719M?F5-B6#D@3n5?t`u?rBLJ7M2Cj`s;bpGVkFvxPPdn;_hM4L`cSX z>d`mdR?8wzJ}s5U+c|FOROzeMgN(bN&9E5`wn*C#M$CASL0%TzjSOfil?UX6r(eFs z_8w@dIcmWsKydW8>|t-QV%^!xu@VcnSSFGoGg2RBBqt|S%A!_34i)7R-lA1IvWa$z zv<2P~;2bGrZ*4nPbnFF4oK~#ohZ)*mXU+i+KDAY8ls?e|fTXhDbwDDzKLsVBS6??x zFz!8!vnMruwhq2`1+Ji-<+sfWR^NX5dWV-;tw72Plx=zZ3nKCFx721ei_tat;F|N9 zVW@Ubt|V$nL6_iOKZf2lf$<@1h7u`NsZx^ned|o(Z2*K;O>L{|AC3qzCE6b+<#hN3 zfqpL%OgNhB-+I{PmlUNC=m*+3+B2OWHU6#j&)-S7T3j{bH?MbYa+!}+ zjAM+!&2TA6WdkPa3KAFP>MrD+8i0mVc=aypTs&||z0~?6A|wu8OL>nPN1v>P`wJjB zDbqL<7BFJtBsyK5Od2}Nsn#e;M@fE{GbI6UfVRErMtBJUli36tNLFXSw3@Dj`$1|I z+oIwQX-%x}%4D0v-XA}SSmzHq^G8AAwa;{DjVmr?Jxpo~)ZiWTg4)LL5>b0497;8> z%eKw0fo9Eprcd5(Uqq@3J;vv3JdI44GM32b#6azUo}7`wUF6ZG!s;a0##f2!dnkTC zgta|`Xu;`WE4gdp>i=YC;upf&k4id7muomTuo#}T**nXaghc!e50ToDQJR=wo7x7+$*-Q_t_+;(gZ?BbU zre+sHPFPdXOuLZgB7Bae=%o!qQ2ZDI!-*L)0Qadu2JQ*?A&8T$#@79k_oB1!wse4U zzU+-I;G)J3Nn~k#+wY)B4DWU1Kh;3`gz-J1R>v|Y|b&H+G_IoL=GJ<>xLeY z8;2`M!+8Y$3f=IPgZjdOw=CEy{tU>QuCLTTL{&HOP_#g;r|kub7hb=)ECyXSf?hvj zJ_VJJ6r*(PngBNDS~~MaJXtpw-TTF^e}<$g^}xU1PZYtK*=ckUJ3lBi;?kL*CVgOs zwnDR_$eo>H4xHX=xU77vxr0V?LsUe!G~OA%*m2(LB?KN~eop@`=bHO!Pl6J!^IF#r zF+F$OgtP7&pY{A+QQWTu5va{|XmXzXjm~4qy7DeUl?pf+NHkI9<@e~kG?J(hi{&cT z^;Ffg&dvWRaxJ}cc2XFDV3IiE&UyH(Hq>sCR{{>_NfQIVaGJUD=vp&=LIt^A^x`#s z>H~jPKNk!(Bq96-6CX?luY{Cn-=Gl~6j2g1WW>n?rUclQ94wWk2DYBZT=H&?L>ER3 ze&(vq2;3-Il2HM5QtlmfJ{mO#?P~^YX;oW7%OW)t_K*MH-Ji$3;+{Oec)ZocqZJ zOu0^J8)}484~5mEk-sgPJgpc<_? z5cy!mDF@0`an+ETRfAL%yAdO1n&14J*i(FB=E!hM1-ACQii+i72Fmcpym&r|GNK1r zla%87()>q;z0X-&1!$B6>gFmm<2#T3Fnrf#O2n69(IZw+QWE&vUXSjrrX9t2?e=|s zDHcz**fc+)o~1d`79V`yk>{ODJN>$yo;6it8k6xiMS=h!^(LMRmeImw)nWazC)P4edA9d7W85R61*!$lQmQfe|gNC zbR-Eaa{K)pReTB`V;x^<%Bj|1uh#^$fX4(0uUxVWDswLF;z+kHQC$;_-L?*5~aQ&EDA@lV&zd~o?E9^L# zU({@Xn;wTpi=Cf})TGStM;Xl;?Tuu{9?y@L=Um(-umJ|@J>(;F^v*CwuvA$G0ebKR z_la~q0 zZX~3HbqJT9;v!J<5qE*qzBzh_`PXs7&;63)SPkRip+=16xGTOzZ{2U~iGeQ+k|bX=@m7fdhsUuay2oO6wNMQ1aXQ z%wK$Q5}>??tb-DO?YHu=u3I-N>cGWU^4K~wG=X+AIi^k3&Q@MZJ6A7Fjr&+pBEm$dd8tMCXng!N{bbbwsh4v{MqC!Iz z2%=;c2!1URVxQLclrPf!4NFq-^Qp`Oujtr9IE%MLB#r?vd>L zPnieZ2}+Xt%jNSRU7G731evB!P(5uj*>v3TQP1QSlOHv@!%s@O(5Y3xsr1Un1+OcH zcH9H9CABL?-FnK%(GTG4gs!e0_22V5)_fTg%X?mePgnIH>fO1K(?tDp(wm5gEFRz+ zh(H}HN{r#Wubd)iLRAueZfc`}#JjP1q+pt%c`p}q0*4O8g2a2-x|TNZBOl@n^$fho zVFMr#8K!aFS@xn7_!T?x-4%2aJ@GnP$;~2Kx9^yHGZzTwF+BNoW@~dZi2)zCm12C? z&#fcE1qBTyj!OIfk)jnum_%WTz=ZTx0;GNaxyKR>1ldD?IIxVltv@m@)EEqYude&6 zV3e6d5o5V^dYW(4eZDeCa>L?{H3PXWB2$vug=q@IxM9{qy&5Z715eNA_q1mH*< zH#R!48}%UliAylB$qehSf$L!^l~mY`J1#7^J+G`zR%d~7RE>xGKxt;}j#1hCM2=?E zC;0XTri}(HLR*>BJ7tmv1yX~r8%5%4n;g5Ap${$Z{P>!0l`N0(R`7|K_rnS*a%Br> z*Z}8O`=3~`&nO_obS#cgtybtiDAQ0j^&Qj3OcC4vakw&hF-vvYHHCTMXoB}qaeFo8 zW>|Czph~XL!$f6Mh~LGvi0Vwe*NGu0?GSuDnJM`maX4@X$TR@5tbdkp%6(*CH^DPZ z>HbqygkO$WVSKzu>#_1Ew2I|`;f6&*FcQp*x1Mi36JrJgj3>CEpgD9hJ38i*loZaK z8r0LIp^%Fwd^=Pp_x@XRf6!8Y@Ce|iE>|I5#!xyx?}xxX1QnL$d@{~)CW5_VtQmaK9| z%=D@m5I;a1jTJn$c{?Z(a&X2lnvaz0t*peg;{?lv6hEi|6gWDhPt=9$RpjuUPuuZs z6&miAZpjWFd`O^w!rV1L;yqNZ!RcLhwtge7sbj+b1wW?<@b7OS8KyPY#BF`oO4TTEI_@5|z*+s*vAew10O}d8h|DfuN_|#$ASPRSfGPdYIDpY|>PM{MRQX$r1q+ae58jW2oeJ zc~0N@4S6}10A*^ov36Q>R7m%Ak}+hN1_A3+NLJ14&und$+PkH*ceNJJGgaOSdMz@P z2~drzFEJtaYh$hM>)-S13%S)f3_YLTUf5B8-gr(GYzzA1Xd zD7gbJGSxppKuu!=?@xDe)r>%+j=Bl7(bNxiAEOR8OcY7XA%cZ8(3s29VAv!>KVq$6 zU_5_TVvNg5x?R41`OSwVUvfhITd?eWWoq@0)Vy0qsaOQi3oOawQ!aD*4py|O=VU_G zKiq<0V}m%rtxECNJShBb)Z(pnZqt!ybzMh}&0A8mOwdI;GD}Z+$Z&a-jv)j#0|YNgV}<@Mu1R{ zB@Jz^e$*%asO}*s^Zc;!W$7R42ZOKM2uB@_Oi4=|;ou8# zgF((KgB@dYhK%)VqyQEkR!;|R?i6N?=bKf)6)&B32>toMWuHNNOi$0W#N?0bUj3?z z3PtBHrVihER!kWcA5YQwh(*vOa=u>J*gY;LC3dWdF-dqQDb`^Hni$~N}#odkc7+$*J05YmKvk) zitMdF6d}v-O`E;7ydGJcg6laTxceQ1=@D8#d^D)hMe z@kgHSeOA0zsd8W$SaR)+U53}iVnY*a&pU=FQR|I!2`2)<0N7fR5on&xWsc!v7O-(T zWuU!LgKiJa=V~8G?hM{XYCks}cFnP_+Gj#!L4v%T`iXQR&^Ozwihg3cIB6;8$i5@} zce1Rhha>vmHwbaw2dtl7R!THd8JB|6_aKX8}7q44EkWU zPpypB1@hG}nEgLQi2fsOBQ6P8EI%Zsu8p^%w>mwytGq5}=3HbA@!E1bq=IjxZh?PT z6r{RyKP?NxQ#S}PR&0?`MeKhqKJkS8&Ve9$qK0!rLs=jyh{Iv~WR?}G^hdY_|4&*P zmGXMZo7jHCt`45-D6_=vqyMFhn9X6<@X#gF1_h|l-T5#1u~fh1b9Opwvl6vo0yDb$_#{KoWcWW88VoI5%gh5N!e#mWBB z?1vg@4Zf8;*msSvx6dq&J^IjF&h{$Rss`0Ys~DE$D**8(E@M+ZqKQAL`C@~OyO}@a zHx!agzE4j^-Slq}sa^6yzw75(8d>%+AG=^8@JYPo7;{7&F4h{ga;=sS?Vt)VYn!$t zA=n>L{r%2n-fdR~$@xIrZVionhGF?<$?wJ9d}^_yl)p%FPf%cb8YTHZCC60k2nqi(Trf`<<^7LEqEXpCJ-ahpzPET`|mPhcI zgW{gob^Oq+#-y(cVK{Iix~&~HOJF7pFD)1`oMmRv>2mw0R^l{yEhlmZM0XsE$ddkd zYF<%T?`X;2>1B82^hFRl5)fR7`Pbt?fU6s|VFF|^$g(b5kR@7ihd2qML&2#HbH|IP z2_lmc?o&fYN!$upls%JSiv{t)>e9dCL*n}K9wyeuW7N`f=cdVKdSa;o&vU4E zIfaBt_*jGEk#KX@$&y<_6voEv9s|TAbj`7h%}7oS@cj5UmV#v8?JUnd^p(~Q9wOEX z_pi{`*k&9`PD+ZIZ~7VJRY90|2=V1}A8&z8m%AiiIr*l%N!H-bxasCILv_h*8t+7_pTgaQJ5he1sF>Fj4WnQp0v`#IH4Co1Fqqb34Ogh zY?F4L=`28q)OVRR{XMjhK-cE_~25N=?5Srhw<Xse0Y05R=KA5=(+}uIHziBVOWqZ9bdjO``f5+9 z2=x#12Bu8bKK^~pV@tF_?bKjcP6u4|QP7ol-GE)L%TI_h*gH$?5FZ}%h8IaM?9U$4 zJ={mDaZHFw3!d=JFAr3y!~kFLWE7FwA~@QY-_`*`hWy&MUHV6%);xFTJ98X2w|z)d z+Sqiv96jsu25?o+T8sJ2db7Whnsz*h0wxWPM7iUOC_G{AGO`|iCOn($%-bJIgsL~DRK!l8uUQ>5S7N%ex;folyzs{Fka zlR><$n3aG=bn1viul<&_5oUC%TI`D!xutACs`yMt#tEgAk@YuC%uSCooAxkGf}&m= zti0E?|EvA%?~)}iwKd;l8^?eFVU$*td5#>rS z?c>8Q`pcG_-u9u#MSnQ!qg`*oC|G#;@Un)7h1sLUnH9Z#o#^@8!eRs1Gf_wB=0~l= z$CbkW(z51Q*VyL%=3Jp9{LmI9DlLOgI^7rcG2o;pwnG7n1?kI5h{NozBx5)q^Hq0o z^#%>)#~lub515-cIIuyurG9M2Zu&Z(|Ab$&v1Tb`XXn_-zx5NB*`%DLVq*1k_G<92 zrLw)V>(R!Yq{II-uEj256Cl~YcHn70Kkk#G+w+U&zPuUah!Jkw zEy-r|SJzq9;9EMj@_b7psZm+cX!-vb!kdq+KiR1dDXm&aN6OFF^I&g%{pqBz>U43> z{n&3w5(T_Q#+HXLA#?hkHZ5h0@O}*q1}XU?SB7Wmi0AD8QQC&z2@4`D9O8`Mmc+wtYQiRXs4x))J&qsg)~q;W!?s73Mdu-ZYB<0 zD?j-}eW`$jX?zc>5Q*jEB!B{i?@v42yQqNtmZg0Eem#9{T(I?t(-LYm+nc?@Mi2#m znk=31G|DHWqaYb?ngFFkX!M481!Gx5n;@xP&Iu`uG|-Wd2P=7)Lv%TW=C%0}Wes zljmdHZ6O4fhTz;1e0|JnG|0Ry98?Zsg6+?~Z4Hk*aM#uzN==rt9w}m+LBxA7ewJcZ|^A^I9U@MNLGwK<6XK1dUn z=lF+!uxBMM3z2@BgFT2H_b@|mhmgJ2FCx=bZ?}I@HM#e6Qp$RIuqJSpi|E6h=CLu` zCmA~xMW+wDr4y8`EYalP)Bc#H%AFkMgBd`UIR>zsGEKhGHh)+*)zhR=K^Bo?=hwMC zh8#TQLzAniqP#r^%rsj`R&!w^H-iM8%hc6hn)bCrq%d?wD^TSl?qTQ{1wYtZ|eG&q;`6BQx+OD>nNgzLAM)@%F zA$QV^5&zO|8~hIg2_5?I9^cCCF6kPb4~dnDK3+z*Dr=u@a^ap^4A;Yhu68G|Uy|_d?_o+TpRB=r!tU zbJ7pspLt|^N@94}Y3Tc^<`T{@KpWAnXUE&2lt%)W+|A zACcoeVGz2gv@9oMfhrnHDQtj65VLHi51c?7$A)05ZEN^Bg@9ZtaNmHIZC^N&I{zWP zLY0=wRrLR24l1Jif0+?2f7@k{#M`c}>_6<(@0B^v{{Sk=uT@99Lpo)fV(?-|zO7k= z@H+Q_1q7_eZx1z1!WV!&6`?xQYxsnQa?ebUZZL{e%gq?7u7(|?c7#^Mkztylp*)>p zD7D+_iDK@IOqY1bx^$YYEiFcL+g=SZSV?;#4W{47$&WS8wbn3zQKgn7;0s$D>{)*I47ppqsFBJ8ABGC7i8!0{#$u-? zB~-8r)JDE~-7f@*oVr659g%P!Jq!6-T246S2VX@lc-|Cp+QjMR@W8w53%$vZT! zD*Xp|nB55KA5@SCbSsc7u){qs^X0}$BOIF~C?>tpM|=h?H*LzY%$mFU`@bRd&NN4G z@RyM7F8^eNyw^X|sAb@D?y~{KXNnEYXV2JbtMHZ2iMA-Pmyk3If-&zN-)Otr3fIQJyZu;{S;Wciu5%3!-%n zq5qUMYWF=T1KN(&5HjppcT#AWE4MKr6hPUQyXG#84l+qzz>>QmMm-iM;oK*G2NOz& zm;Tj@3*kvA2}um~udOFXYnfj}DM0evPdT9HQ0^}>_;YWz0LsB$Vh zzw-L@!pI4ctSK8Je+Jb|TZmU4=`-T`UHzAmddCUK7=&j2X(ioWL(OUN8o6{h?2G@K zMZ8j2ig~5fV`QVo-7;w=qAs_gl?#3Wwx;N`gA_x;)!u&kdK^hq-neg zH2Y|Nt^I#ly9aC&&fIlUT;{Kl3NR$;b2s0rbJ|WZN?U5f6U4R-ql2YC-$$3=p%S|+ zL@(~DL3EW90B}YI8~KrwA{DPXi5mDzNnuqO9?f!+f7o_0j3j$>Y0CaX?K4XD`_7EG z%mm3RSnGlx@TyXjO^zILT-Zg^m3wSJ#6w<6S4PF5=qGjC&{1@Y|0$he*z)?WRn=Dy z<*TM?Z?K|U?m=>&&!%<6lC!*vW-I~Dylsa`F7KY;NFS~RrY?V3ajByGF0mAtQzU*P zMe_e~^_2lpzuVR`!wlUm2n;1D2qK_#cT0DJv~+hjA|NSJ(%p@8cXxMpzT^L%bMCqC zm-#r)esb@<*4q2mSk$#6ya~%N;YJhp#P>a{-wfU?R={z6mLvL(BjJZ)T`bNW8r$-c z(aeDnx6yFI-MW&fKE=Tg0Q0X~0;mA&;_|pIAWQ}HzN|l#?mWCkAGs~&D2t7_jDkBV z*FtB#am&3AEnQxtFR;{9o!=9wlMbZMX%8fLm}>!mryy}GXfi+?6d4Xh1VKk5c?(!q zY&MLQKa9z+H54?^zc1WR#0oK~e7|yb*Uas8;_Ui^m_bF4HDjc)qxHMP&0cC`RKXtj zGtm6g`lZ7=t1$ffj7@Z`3n(~cU@jnaD~pRKYbus4jX#_oN?da?Z%}+=9SKEXV%~?*;g{_Exjfxlm6sHFa!^HmW)Lj*e-6irA@i49I??H8~eD~(KwE; z5$i(_EvBs|>d^|lddD_AwU6X$3EBk>J}AXT=6B!i?x9hP{z4X4Qd|5J@t zHb_*{_nD->? zZhs8;*Fr;bIX*RWt)F-3n8X0HA~E8DrriAM-ypvV<{KZRubHbHA+&`uhhmCX{Mfze zlZP0N+h0H0Y<@XY2)M;=%QK{(ocrAMr3CV-6=E^0nbi!dCAK&_ zoD1<&Z4oKp2Yt%;#IdxV$u(oU2qulhLqW*v>%N)Ng~ObIKX)vUxmSP95&DRMwslX_ zwag$&ieFCVKj2;B$TKfLj*_ZaNDtjIFZDj%OT&FQ0d8VnEk)In_Ie66)@+NvY-cBJJQYE;La>3F^ix()P0U z#8!CsiImxN$D+HRxpr=G^}ZfH-3MZEEst$SV)+Y7JbpPkDt`@6aN`V=f-LiZD#sK_ zf9W+gFmZs-w8Bmap)-grNT;q0*D>8eZ0XKKnx7$5k&5~D(s%=6W`~CGw{`;YGNP4Q zQ+<_3%ocVKDhS!vG3?L-xFtut%0k8ZX9SGUSiZrwW2@Y7VbI)Aa8`jhUL( zrfY@Y9d*ZEq5R|QKghHH1 z4@KEX3@e;Ek40vwT83(90o9wY&WydfSEMt;18*6@7}OL2NxZvSWtKK}dgf+-QbRmm zwQb0xmFg+_SU}HlABTHSpLbH`bYZ6+>VmY&vFdtPB6!vjii04U@_uBNVRqz0-!F(sO=H2 z9sZEUd*ZZT!@=qKmKW73{V%H{)Y67R^>Yq74=9R@_EkB zXE6#UQyHzFp=?j>gjki3%q406Y6>-L+HjFsxC-Jj9)LEHuII}nQ*i|fZ4mim34i*K z%eFA52~#0;wo{UMlOSFUn`BNui;OBKhe@s49XRAI3DJdumwdSkmqUP&gXuoI5p3Hf zptKJ)&L&#sG912rC#7iTNe920Uh9tj_Z&+WKLMbMfJ>?UM3{j{Rk}EjB7+U% zdI6&BHJajB2+dPu8R=j&RtZwJ1e8M*l7;F*!!SI)`$&~!Jb z1dU9RQ$Eh72<+_iq#P)6oP-w*$^M?i!a68Ugla*Orzk3jRwWe^#=63O8)uW|kCX+p zo%@i1OIz-?+nx8#rAs9+V25*@GQ2>H_30-{6Ak3tT-dc=v!TOv3uyn%r_j$0(kTKg z#hiu&M8y$ScG%^a5wggV`+h*=Hoz`}jH3tzu}s7j<@RTObpLZS?7KtU z=(mSBK87J0gt5Qb>qe#Kn}@3 z^SmZ*_rbIA$wZYu^uc`6i{GL;D8b>R4!i-p4q>DR?W}Lb@->hWtd}FEyEH$g*X)+0#dU z8AQZzn9zDnI@~BD#iJ1ei?-fURqa7#xSk2Yy0i>r&W#AF;nI|DK5aSIU?#t>v2B_L zF6arSV2@w}8={d2$~LNqGIw(KZ{J12rvrF+^0pCq zGbD@+3@B|DIZxCzL#91lZdlPHbZ`8g>2}-#f6f{j_m#Z%70FL^M$#P3z4 z9Y~+bP%_mmdwES2GJ7e;nF#bG`o2;OKx0o%So4Z7ccpSLY*T2V{{Hoivjjy1;jdA7 z5mtqemM~=O)FtUTiDjJVQlvzY>gc<$Q=3`V?#X06$KW(9DXv&m+1Y+|U>iu$f%UVf z?NJwn<`R=OzBS4p)wBW^Y88b*W-Qo?x%#V`eEU#*921&6->|LlT+O%Sc3S3mIaap= zl!4~t@388&y%+dYk{bh zJ8rSf)5wruda?lhUM5q8vx+VeBfEMO_6SBA14@W6Ky_`l-r?;pz1YfMZFH15i)Z0L z2O9d;YX$xW2^$u-+;sfa0cg5(=lW#!&!f7DiEg~ld^7XWTuY~yoXIK}RA={OyH`RW2J(fQ+wD2SR=}#w$oQEKpqAuCdaal5|$`-8rtL);&ZP4-RYuap0B)r950u>WRi<4* zGd$&nZzkTeC=h1EwAdP4wDFT?j096N=Y1yIVx%32to(g>^-A~ty*5rwl4Amn+607b z31~STaQb%kq<)F1cET72II8wal180()3{cJfbk%wg8MG%h)?ZJgN zuQ_EtF$RzU%UL8(5{LgB2`}RI;`!}}*dhn@ME2T6&#mcfv@RhhM2TjmJp=aA8hWsa z>0Ge=$n4F(5l@L}A5}$y6qBDCiW{9{ZYe@jF>fl2Ji{)``hy<|hUyy|-?ys(ze0H_ z{SZ>P^0#Rfr=sc&^qZJCGIFi)LA}K=?%Muj+B1{66wb4(>@{s_gEx>W zY`_dwa7k9LSaOSe0ELJ}Oq$aV(A^{3fnIgMgMQhJ%eLw-vqtFkqElJKVfnbrt%!sp$6P6{@tM=8T1iaW5TMXz6 zu}}1*Oam4{%?}XvL-73~tBddEiEH;jw5e!mi{ovXyTY_5mHbN<9oc#{D1^tXQ6g++ z9>LlAyy)i7&q6(BE?`md_b$)~A40DH;yJ97+CO<3!ECxtI=~l0ZG7nyJvA4dx+oRB z%dCjFs@N1Uxen_pnVX)@n>?nbv+fHHY|LmUbp)7`-S@%2p|&=57Aebg=`cjV<8VEfkZ28IbLXWfS0evW$z1t$Fe7?AZp`2S<)6D+rAUtL_F|3d ztXlWJxW+F0uLhf{09Wp9^1;KBA>5d-69+64jJJFk{aK+#f4-a|JT?S7o&4+~pkwK( zVN>%haE_#r$H=B*;XY$fd>@Kpix^*O481#Gci*d+mig^0k$c|I-<@z7EG0QdIMmOj zY7jksoi`WQs4`5QXw&~5_kw`+nB>)~K0Ke&hC>^->?D{wqr)F|I25zdul0S51IXpF zq3PnHik^Q&A!v!6(f=f|nuFHZBMl@M8E|FI`{5fO%W*FRUX$OF+^^XuquW@Y7Wi~l(tdkh70NO| zGEn)QdzzvrwzukxYPP~4r@K2OtW_L0{Z*+Tc+1}cq6zRY=o-zAMGksZ4 z`c?tcJ;32u^|(DYmon_mr&oYwJ429;bjFXrz=x`t|C^I5kO)UA#z#tBNh@Yw8>8g8 z?=yQPk^ZhO&X`2URC->DroE6p9n1_#7%+6#EG8kR>cwS z%j5)V+Xcx(_&MLv$^n24i5?kddpCPuu453z2!Gj(#>s=J>><}uMchG*Zy_koK!E0j z+|iwLf-A=lhwahb;>auVF3FobA7bPs8p%oNJL^05$GSJz!w3lBK>C5B{~BNZrrnJw zz8U<&wudpDjeHyHg6G%jKz961t+(b1 zTERZkolJ_pBZ#AiUcCR(`O2;beUQ{XOX~-_)k-}Dw3fwoPxI~@Ac&~lbeJ8S2y`8) zKfGJa`z<;f&+sJCV1s7aTXwL~?~|<7<2Gim_~O zGx;&vZM$S9JDK0;mFo_PLv&D=$g7R3dP|LIeAUpi)RYaCpjlJ{ZOL!TgAi41bfxA) zUQSL}@K0N|=^4C}boZ9hZO&Vo7Kc{Unbgst4n0*>Kvq3t zMW_lsP)PaEx+fsCP0l(j=8@s{+XNb1>|>L1+|S=DL9*F(%2U%oD{EZC->~axA5{&L zGHBgs_8k>MASPj-6d+Wj`bG2QS+%vCWo%XYvcfH>&>t{D{}B+e@SU-kYx}J67yFwa z8sGc3l{RG%y0){$;&~|zL{v01V;fsLZ+snZD65{?3}-mv+uHD160r95U*xJP!Zph7 zHThP`C3UHU-S}HN*rBJ*=!C6@o}%4b^40O9XWv&N$1@JjQ_MfVFT5!0&UD^NnyeyA zK4Sw_^C;@GhW33v^Q(BI+63S<0`HK0mXPjPnScM(eI#4v6z$dR5aRvT*W`3=>sgKw zsWWQFU;v6xuvG|YBJ_AV9D52r_@QJ}5A=Sun$D@MPP7G58%e!Nz9xTXg@rUIRCP|+ zTMSYcvQ>F<`A|9ndYBi%v_S ze3QJ*b)G2mE?8^q4Wtg9LazNJ0`Y!ZV=P~dtu;cKa3mAN&h4j$MQq+{WtdX0q>Nd=M*goN`UO; z-*&7vlg688*tK+=rp(xndD~I zFobh+lZFA7p-2vIm$KWOZ?FGQ%Oah5CQ|oQ&U)|9dZ_}nqv?@;gA}QM!>85QEgU;$ zhVnjt#r42tTJbCr^DGA=WoNwgw8a?-IjtS4bB4+!41xE3qccb^a5aE`au!UJo`eRLKfK^Qpa=2+Z6{{DGmd`(dN#;Y89=$UOv zL1JcRMt>Z~Jq>4UB}FT`Fi|ouDT!N?00~Iemxnm z?Bf`$0|`iR?qh9p;1WEncOLgE`**e?O&@ZEWT3kZ)bu7jr12Q3FlfC5nu+wXw^)d< zQnc+QLmwnpiK{|M!jq=}X6G)m=Lw1S**3>Ir0WUD&Xo-T1VeA(=qUK6CfxVNW4#^l z&3P1sVVD6flHpKtp4;q9Yv--f$Bt)MskI_&Qy4>^4&0sRReq5ieNGbi0!z(Ky^I%G zSiqx?#Hz#xkdtOVLBRdRml<#?PBB;Zr3eArd45hsLh}c|#`=FT0R;?o$$F?6CUnxr z=JR$ujc!uf8`=ZKERE1xNQ0YHegO^zGs>-ZxHzvS;&Aidi1L%HI9)~=%*|lSk26s^ z^V^~MO)x#+we#_KTD~yQbxgAgsXwd^%cNg<5jx<<^upAbW9_xgAjMxPs|fnAWtxJk zw=tWk0oF_`uSwNTcm6Y2C8P({}3B0F-Ph-ol3m?`2$>i zbWKy{wYw+Qc1l3r8|!ewmiUSRO^nV&nM&8E$@O`*Qgz}TEy77nra`RDHF9yRr^q%s z%zq^c;#zP{cMqn8h9W@V2p}Fv5#xehJD0H^wO!Yj1#I&5hQOO@O6+O0+rPaHSXNK4 zP8n?5>(59_;ciPX-G!Jv)*cx~bV6#~kBV`SKGWw)wWT6@GtqxeipqL3VE-v-Q9bLg z3ForqAVt-8CSjww2DIfTmLnVo=nDLCvf=b?gb)Ie7=reh5z-a!Tc=+VdI-(A7>9QW zN|i6^KCdklM^jO(GEoYtDyq&WeQ+AvbJu?s<@oy3gnh51iFfosabGODv`qbe>SqLszd2lgUa;jueX0od<87vP)qtZ_D7wZ3>-3 z`%XsSYUX{Q=Fs;K2 zSe(%ZQ4m=v@c9g+D^dETS0Z>Sl*1^&l!S7yvHuYD{2vBGIZbkb3N34RWM1!Ptp{QEFvAHAa>*tE0y>0k_q(2T>@aG!4YnqSiCA)i)A~ zS9}GIXBKZLtu&Fcnfj1_B8&GY!k$Dr?3lklqHw|IEeD8cHn)k0oCH5NqiHRongFp) zv8V2NI_}Gm@|vSqev;51j5{!9(FamRZP+-?Q{|5Ewnbb(HpCt2lEZOK#WjNp*0g_~ z3PGkTJJOlm_qK9!Xh0J$#uba&9R~dOoo9?S{%f$fpEkE1m36|gS+cm!}N4{4UKki;m5M~k{cJgCC_VHi&!1Od2> z_zd>RyaRl=Jh?c`?s?IVOc+eYZT;o6qxS@^NE}j2pwbCkWk%Yh34cDTmEB&k+HIKX zj_1b%W80Fa*?j)*abRyxEFhUJ9&N$ds(ku^P55g-r+j<;ekg3fxH^W#MF`IZ>|*Z~ zNg&Z)I-{OP@wv}kK4~XV{)<9uwysQM!r194@B;0IO8yi8E2@dYTmXDujr!1U&^Tj- zV^tx3%%`8#ZPW)f$IAli;YQND2UG9&Xd&5gXbkN}fEg$!TEC8;x7+>fvuf&Z?AiYr zt&VM3K|lQOXlOcdltz5!-Z!}pBy~-oZ%N;^i|>1U)APamG_Ygvbol8?5*CG0-A&R% zeR9`|P1C3n*{kNqoDx8axp8_e_bGs7pb;6jhn21Qc1$4xD`(O{ShZix{~@>vwcnX@ zGMD>#+fTwt3}0ne@7HDPAMFytnotKKhfFhDq}LITSI|Sz+GmqQ6^nd!BejACR`+Ct&p0t|pz2Se~t7cE*>-|K9CR23u z?FK{T+2xF7s{>yu0uL@5TaPBcvE@(6{K$BiOPn%yVK7Eh1SDAw8jsui^bP-L{%xa* zYdSZ4L;ubr79iyt=|sfyPLzcB)H`CHq(}^IyVjf=iFcCWkDMV>k;jJV*Cvy2?YsOo z&TnQlm{zY|VG+=-3}!v9Np426tbB5GSQ#_9p5Cp&u~jdWUaKKvJ45J73|2CBTNS;S zxsGo;LZmW9N);m2Xl1-YQHGtvP}(kJaVdO8DUB-Yyd~sk)17TO130a*DhHCWI8yDj)0DCW%?VLzV#|{ z3i=XVsk1pJ0oLU@lYU)z+Y2a`M&J_AJGo%;zQn>&HP!706(O6)0!9y==I(isYKa_$ z-6V~9cmr0s_pP_QojYaXfa`xkdo(?WPm9}(N#qR4KS_-)ZGXy6G>?0A_ra9|_2@fL zs5)pTz1>Rt4KcgEm0A1W2l!n__lKBIINJ|O2fbU!AtF6;uQ9*Y)Lj#X$AX4M(V5qD{l0G#S&Xra zHgl)Ge2V}@Mp}m^tO%RX>WjC`7j9s<-PXst8Gf&oI}>fXq_D)3PPTcmoTr4()s7e&?*r=JJawe%D^OWZ zYn-U^_xV=5*0WKXK{>opd=YjXrEe#P121PoLW%vP#DEO!)Jr`4CpT;en|ncDrKBTD zC+?3p)wkTjV_T0Y1n)u=&!%2>JeVWHD{g`3rN{*LeU?}rJ?_>X zu@Q1>jOfJvUgh@^J2rOs7S`bh-WTVMHE}b4G{m8FHI4|j2j$}0hV&I-kdRRQvmXnC z5cp%rQyd_gy}a=*Qn}JuTY7V-paYb{$=~MTNG8r0Os;c z=@UTaX$-hs4*M1nF;U&z+`zveXM^3YFW zq#L>VJA<)eIXC!vBI)Iin@N(unHSb!)P%80rS6nl-of1v)#~`r1Fy5sETx|uO`3I! z(zil3rS73GFc)bOTb#A@!6JQMU-t!jB*Q}k+A6pj`o=qEl3j8=9&^RHr6;}XS*hnb zqqx|&hKsAhBej*32}y7+B!&xeZbLh}JeYPUs$`k?b5o@PC z|9+q?7w+E{bkta*cHl`wF>If;C&9Lzq2$i9vz=jcke&%Uh(;W2mrCmAqA#3poRKXLD>?u+3y_qVXEj}q%#6it9$ zNq+Votx-j7{X)$%Hx*RywAE6xe<#7-J|Wf(_HK0MLVcrI>yFkh&Xl=&dgxHLrs2YO zjQNALO&rEM#fGXVskTWlix|^u+>d&pd_;+Z;fbnx*dzoII{i-6JZsn{O;?D2@-)WI zS(>@IE`52@*nXPsn*&==*ZY$2dMczoQ-yNwi&f?P+C%n2-rONy^mjq_(!o8Y7EDFi z2Y_$7W1EYX3|zi=@W^KHva!WCw|6~hlRo9k`?a*;=H;?>wF`jLV!BFotRq{7>-n7` zo!{1WANs8lAabW;5418A-D{Iy2kG2)+^MEFkM7o6xJQ!1oV6h*d%^edsAaBpbVXj~ z4xap31=VkJBs7C z2J+n#jduJaD_eR$QRk+Lx5bB+@IuzME@u{#nDYDsroVGXODbU>1H-sLHsHQsiZnf! z9NGpiQtyg@kqzN_mpu)7lk%VHV)rjhJIvk)OFTMd9Sq42j9WzpRoi^)}$-7H#%Cv5lDCsQy+=mMhy8 zmJolF{?KaZxsU~Gh{7cI_SY8uN)lQ^MW7!L+fZ=v=PHqpg^pQ?8m_2JuBicQD$xum zGSYjt4viD$J>PjG#mI%PO1ulx)f~TF{_;iPzvWXg?5hqPM#am^4IORS7_;#t7J)MhhDK|#s@-^ z$od=8d8A?0n0m!yip)L=IowFKe=`{SZ`G=Jr0ED~xOitRm5~rFD+} zd5hSa=5Qilfa1dom(Q$jkL3?y2NRc-0kkiwDdyOJ`4_Mg`B2GxYGWf8jwRmCgtUh!7=tOh z`Hhw)i(~qmaspVd`qRO^8T52>LETUeb=b_H^jjeQP$xeh`DVKH(&I5K&}M zmAOXkSOb}4Mc>Kx2jJ<@*r_uPx4)-}oW&un{L|d+t!XIorIm;NL|~j735(#O9Iwp) z`c~pACrFPu;xKUMWuO=1{MeaCQTi`hguH{Vn!!``$W04VhZ6BQWRcKdk09NWgxnx^ zpDn|@IBTFebY@*7_d#ZF}xnW-qbEBk`uLE1))-X@kcXIZk3w!az% zG#-lZ8&>uqN5>NrOrGrRd{!KZeYi&N3ssqvwP*I2;;2z_RBPlV-{SWxHj}Kz#n7N_ zaq8*7byN~DC=QJ?Q18(ijjc>+YX!xmC_Rx*-g8bNeo)?l!G`p9@d!$HfbB^ptcyah zbKc}sUd4ukV2F26uK>lxd9UsB5t~7=lk|6tasExOI4!!8!mDy z9}v$eZtv$d9xzm$jl(mhKHX?~{-j)SaUJTiyn|5~W{vkeeJ1Y<PmM`Xuv^Ym zL;i^y{dyZ5ZN6VpNHqhLz@oqi>^k7;ukNrxxw2ogDa#$6P5ice9qUMZF@+Y>ml3sorB>9XQsY#(|JDL{{002iSqqDP_PUK) zI)2xNICMcaeow?)ekuCA%PYQm6AshAz`pAOTiY+1GzzB`|CL|Y&sQ&v)tn3Un6!pX z@7^P1c(nzzx7w)>2YCDjvLMt(;*lRNAR1#=eParr7S{I=yzdAdf`bcGaf$x08WdF# z*?fWCAogdSV&ofMb}RZcFI8tr#eg!=ivRG&`X^u0-7|})T~}G{L!vSw12dT74Wa|Wv(JdJgSZ)HmAjl3!~}>Fyh_v|I+Qs<-cmp3lMTy0E{( z!VmOyK@Cey2ed_@$K1fEq0)i!%4FnlOUg2@D~o9^4AZ&s zR|=gcMglv3XmbnFi^f5L+$l14;?9&Wxz?P z{YgkaI*m%xXd|wf(A}+ZJMarraMeG_Mn##pP8{s@U0=_x3r7n$LH{k26i%(Cn_`Ln zj#i07^{gU%UG0zJQhg)Bm6`{Org8|61_>%tIx9c2oZACx@?7ey&Blh~_)9RkF=96i zZh!48WSP%Oly*9)vE0D>xtkBV1vtG&n-+E5lKCud4)9x!KfdgwevXnhP2%SXt=pW# zY8gACZ*?lx(>+>`769f?I?{nmKoqc3ln{fn1--WLX+k@t2nnBF|0Sn|DqND;i^RO! zFemBwE%z-6EhC+zesN~4hMz5-`67JYz^O|qAiV!9imw0bl`o!>)2nTJ(4#Ky3BM*) zd;WE|ng0b04JpTD5YVfsEnDFClJKF?-279gMI$^Mw_P^c;%32n4Pxb3LLUc&D=8`c zSYL(u1^$qh68Mc1Ua{PE>u9rhX_OZDXI3y#H(PF=k=seLS24489#N$}xCk<%)S2U; z^~yfR`!0~+Z3~+TM`5qcf595PJN~#UOem!D`^C}B7w?}hoVkj)yF?&84F@`f`>C+;q4#zJ>a(9yz31mcohd0tcY3)BX zZ9$-Ej9A$kV|KZG54kVPMd59*GII~ijgG;4SCOtVja-J@;YgQn#+$)S?|sti*E`i= z9{6_|tK%gxaQ}tp+ghucqk>Xo%Fox{qn{>+Xw`opYgBXZK7xkQBvqD3ttCN($2 zsqil|Z}v%;k^osG356_@uDOwTSt>WWaS*-+qA}F!q-Eh8$d)2DMJvp zk)%&neen7Cf8)TTKsTLFe>o`hkBfG=f9qH%GVfSI>N*0V0d;whAkPC#({01xI=?`I zu3ls0l6nL-{qCjX*egsId|w)D+{hi?fV}7kG#QxeFT(CciQ7UNamDY6)F|KaSP6Dl zHzgfQIU(S2We=haeL6IHNF)}_I>58$QSdw`MBo0%xLHdQSg>wi5H z4d;3}0}{y7is3Ab0!F4UZ>Bx zG3t0bEsESbf~chW%9A&&@}fLij7z)?*Qfu_0#8|*MLQw6A!dYPCy!Y!26?4kd?@9; zeC^MNJ<_spS~V(R406&w>A8-z=VQuGBiDezPRqTdp`5BLSPFc*qHXOK`@3xVIzG9D zYp9b1Vj89OmNyJj7j)|ouJ(GT?xlZE)3>R7tyY%A`+C=dh^U}VrL-M0_>%9g) z@W(45zuo4oBI0A+v!|DYcNIwh@;1!lrr+|va048y>MY|7a~+0Cu;R(9b)5AD*7S^+E<<^y1_%g`@sLOIUIEdURwpLatjLQ>)|c zsY^B5uInBJENyMrwCfo|wf6jq*TU5lA5~G)eZeG1cDHA!+4$XspiGf4Swb}_CFwp-3=kHvaHP9 zZB+8g`u|tP&^oZ`ZszX>CHVn1DEU6ojVyl7A!QK>J%<8fY3_FNbUnAlEzoquxKjSA zk*nSuH^OSm505oS1i#{+yCU)~3jR6S%p?syeZiVFjc`C42x!K|E9u`FI(Hsj8dx_J zJq;H;mNXs&+P%X6^YgIU&nANeCZb6T{K%Qq81C8bR^HpbY7gL@jJv>Vf^kcyO&+S5 zE^D2kaI#p|4_RpYzOVpEQzf4sYUMqk!qwjE&o6j<<-a<`v2rLKu2)^AvBs^;uOT40 z#iCMi8PUIqUcSbRsc_iF!-W1TFn0_|sMx6SE18Fl(CuS!LUe3w6AF7OuLg8LoeqQd z-;ljLSDw9Bk7xl>uSZ!sz6@ozvVzag*)fp=p3w4O~aC(_ElgCE5^$x zv!jCnI~E(wc6-bd=0T%vTN<7b4NW&^(q>qd9Q6{d)X0y6z$w~Q7N22}O&rkjjK+l7 z!Ol2#U>%l}LvIcL8BK5-jdx}S^ z_s1k5jMkOY+HQBumPY?5(on3iS!p^l!Yc-=Co|_tVRs-OvM|}6U^w?o+W8*1S;mpj zJSs6#ncE>#XQ#}MjnB`s^f$3?oCQkp(j{cztttRua^{(dbe)NJAiRMd9yh3h9${KZiZ1~ zz^ToJO_*n~s8%>|>Q0>?Z_Y)S$_5y2pQkxnDrRgIWzm08ozAk4tek$RVgN{ngx7u* zY0_BTJtet3hds|qjlzSa*o#Y&dlFn9+~>47RERq-tJ>aEdI}Y(@dnId%&S@lY421o zi`{Ql#bD)wDlpxUbh$X=8^z>3z?-tjyzmB6DN_g%Nw$tlE9<`;AQY6K7TVRDrqIK} z>f3@`&Ve~ctdBbt(fmz(pWZi}Z0+|}U8@(??o7J~oW}1kLfd+PmR~|&?V-C-<+f)o z$swLuFr~5jQtO4Qg@k7LJO;|23$Spy{zXkS43<8a$NYx~WqP3GLunV1*_TX_0RpQ% zviT8N&;;;elK45Yh<6(N|5u+eXL2Qw>|6ZGO2x10{}eN+gqMDCt4y^6x9Jehp^UsF z#*%F=omhF-&88kpmnr{p!@i9`B()5bI6!xkkUSurZ}!L6&8|vDA<==}xu>6OX zzbTXIMawUu8G|n}m1#GwY=|=Jc|{YsDuVLBhky4}I)js~-S?F}D3pdeo*7BYGe+3Z zUGjo53iA>D>9qde$jT8-KgRIyKtrS;;GM-;?2Sm2;}>9~N}<_`YaeNWd)Vi6SWl~4 zLrf1~>;TI#{HUfjiknI@(qhH27@fjwMVtr|e=7-2PmKnpC+mQ69GN*~+kq$-6<2;Z-`L$H40*>Hszf8C z@nS^fr6q{B2#)_<;bd9Eo}3Bmeg?2y8Il8 zU;*cwNFi&hozD!vD+xXV_*{^3X9iK!uBO~>VYsL0$_o$s!LV75~6PJ<~Z z?+>!qv>S%l-uL&5RGF@?{p3P~_r6bID>C$6rk=1@SSxP&`TT)mxVHhh(mk^hX8SIs z#l#dDUV)-+;GnNh-waOhC^5okqk$fu4F!ql%On#DImG8IU>)sjJLU&nVHLu2 z5cq?mdh7)u_-LflNV5YB|E?<%|u#o?BRRnYKTZ(fg z{M@s*{)#Xr8~IPF*pB70)_U8KHFT-4ROfhOLilJwXRHtVbg%Na?T;2-U$szmFFo9= zz8Uat8#G?Gr=@TYkilp5&mU)*T7BCrYct_$eD1Myc}wso3sw@W@q#B6f>sBYz$dIH zPN*&jZ%~1&`azaw4-RaiF)K2R`4t>P0Cm~Ev_Kf4tsMUA?TKMZe;kVL1^SpJFqs_8 zyeYaw=P$Man*vhk?gk^#Vcyk0cnkc=`j-L)^)b5-egAQhR59bLhuH|z#?oi#?}H(w!MYaDpK42F8`vR9eK(7v5j2C8%ZnXHiyrG5v)Tp_HQ;UpA`LaQw*1*oZjRa%DN z0WqdkDPc~_AFloaYj6JrTh08~Dwxg}p3@!HVlEPGH)hWocs@r0o)lJRs_(2g(I5-F z!@hXL=Zs8ZVm`^fsklwTdi)jBsMs*!7Lc%FWOg1XooP5uJyMIT@y~o@L;eHKB&9Q7 zWJ=www0?m{xR?{ff6`v+GG_0j4=X|#QW50U@{;|+-n*Hj)}M>$D$yo{nQkzxg%YO3 zG1-ycWE=O|7pB@AkIp~Qbh0JGP0EwtrKKqB?Io%pG>b)Ums$T{bq4JQM*J<0pU5V` zkNv}Y=l0%^XFFxO>QR^!VNg!A53)b-{HvVwqP^wM3Iof>gbIY8_Q8!D)CrxEJjtdK z7d?a{+@RZQk^SK#Z|I%G#DLO_B=%r>TM1l4BJSGDVg9i9I4=oz$y{Y-%+Ih9V)@y@}@2*lpBSAIRV0E?vi zJh@KdH4X!ME71Rg-e$#OQ8eMg&pA7K)+Pz3aBIOpa#YU9Ayp@^{;j^oXT>X~|Hs~2 zhQ+lsZKJpacXthL!6iXv2o_-D8r8kFouDVOQ8*K(}hBkCR;!CcDJfkuKg6^mV@rVeCyP6TDN*7U{ zjj4K(i#?6sq3~2umHmFcvvJz z51Be_0bgYy@Dbrdn5|yGCJd^qf}e*}tG#Oy8QEOCsj=bBLESi}GAx)F(^Kg1Dm&rPv(8<9Ljvqy90Z zziWi9KTf5fn_5Uw284k4#Wt&=l*3;=6A&`wT4#uL442>68#D?>Knkh@&h#3gA9$c! z&;2_qn5=s1qg=FB4)5>nj0IvJ&I~rlPMv-+OBs0=#qId%)_fK3S!L{>raz{x5L;69 zaPt*CSo;Dh!bsz0gdi;LD*BN2v{iQmufFwp(mJVF_;tgc;&c85_9!Bf%iqV?ILlZS zP|mO*myW>&y&9xc%89>Z*1X#^Ns_(O_a!~bED2t->am#|R+BIBGL|7$GFwrA$>;^XWWp%7s;&4ox=7>b~Y zKR$jOsU?jNkkWQRs_M&{K-$tv;NqzKUR(*O4(Ek#3mL= zPf<9Wp^0vQMR2_(CmWqO?4m@W<+oFC{=05E!B>R9YQ!9d z?cl3X*Qr3MG+9W;=?D*&a;&D_lS~}XeSJ86*d$|$!_uoDtO~k7qY!+>U75S4r!RSZs(WUc& zo!_bN`^Lmb?W`Lts}qD%AH{0q%sJgj606I!{3oa0N0h8kDV(J;p7&$VS+^%Ut6@EkXup;coS zhi|PPql+ylwNZ;Ljxlkf5VG}EDM~PUGDNefx&!V>0b}Y-a zCw5S0ecHA;!LjNqZgX=i#rCM@EMqgUtsLFF*`+=$==)J=#72 z)tIDYL7Rqq{Z=#ZR>V4A6(4E|i-ccX??VY+Aq_M0Ee9m4A-eIKad9wKwoS!f6aG*XhD$94+rYk$MgqsIpVAA(;mnd@H8XshNBv3p zvI^t+HIOFhdYRFIjjwqflvqUAg&?>2a=nr>nVe`Pvd&Sj83|;)aMfvu7lx84({&z)4%{VO@Hna4u zs@+DU$Gv;zsb;%rbp`V=D}QAJ{ZiIckIn$1OGn4fgG*1_4qn45ft~vwbGHbUX zt-Ac`l)s%MlV@6vDf)tc}bg&h!9rOC|qd>}&^i8tezu2Ffn#J1Bg5N^D@E=DKk%cd{gJwAb zHK{G&fy7QQc&rt@bxSI<=7U=viq1>@lkU3SH-|l(cR_6tuWfVL5ahJn^?B$br~Db8 zlQUun5L$K<=UNr@wZ82GK%vW=tVQZZQCWx!E8y^CDe2DZApJw7;Bg#YA-yz1173JO z2k8F$^dg=KiUQUk#&5m z6~w9cF8;&9Z-S5CdP?7n_77M8c|;hU06ebwFqQbfU%Wz| zb19Eq`|lTDLboXY*Q1y8&wxUi?nna(&Hwq`m$D@I#>oHU=fFSRkLAQOuN*-C`^6`u zLWln*_4qz)2FR=sQrYi;A7}KxM*tXXod5NR<^Lb-{~A-Pn}_XxYXN@G*#D;o{wp0K zVsw6ZXP+4#Y6Oq(;m@C}FP9+<*aC;i91qT~li%W9)Ma&b00?e>vjRjA&iI1sMKl7# zNBqJkqz~9}?cpr+lR{OS-RgjFT|yj^{%as?sgRDf4i7mj`C_@Q$50EX5dB}tvStd5qCTyDI#eH8UpRZrt>o zh<``;r!XmBFO?vFjUvDNu9cp8CJra$J>!a%Fl* zE3E-nYpi4MIE&u;^wGgO$UHAxM*?3AJ!dbNd1dEBNKCzRaL6MoTyW@EAOIp@QM*KZ zdU1nBe|L83h{awIiUfRgfS(ZeWdi3Eh~<m|2IqKW_F>1Id=*t+alB`rLj>OjpwOe1DnY?<86L^wu;unl zL6#J%*-qlk#%|(?ZE}w;C}dCc8zRg*NBcnOPq&Hnx(Of&mlsR1gXki1DHISUZi8Tw!Ft9< z@DPD=^FWCK!Kd!p%8by>uvGbvmU(3CzLcUPsA?ri>(@j{(pco7rvwvP9RGAY6se1J zYyTz5+n*_mjYCUDw9?BJgQDQL9VMgr5l18CPMnUhoH5(Ap+0s?fiH#eyM1nirS2b@ zk2nn^D_00*nO|z;Ffd?n*hwo{qs$jtvp-+3ljgus0b{DHOs_F2zfV1>__zT6N4CzB)X(x zDqG`F>h8}pVJ5?DO6258v89S0L%#*s{eO!0a_cd`W=YB+R)6kbhip1d& zb$w;RSpr|l5aO$oi6M{hCs4-(*oG~R?6b{{y5AB9e1v_#GGdrGdJ0#B|1y%#bLZ}p z)(pVZxf7ty&MmD?FCI$FDS|7&Gl*}=eKSdu447)g43LwDo36P2WuZVbY=2)HeP-CP zrIN|}Q`V*dBk-syW=2S_nf{=VWSv zIcv=M?NUlL!sYwQvf!XkQ{>4uUb^s0>TVLpR1eBfM{~v&2cFd??~#Q!1?n3A%tqK5 zN-VlNLQNFu%`uM-cjX88N23XXPV@zpxNKY3V(S*23Xtyb1<^9gksTo(BHK9KhCe|P zEef`*zpTN1@_yFfWiMH#D&7We4(-27M|SzK%}!qwiuLg?-DM{NWjagJBDK^S^8|Eb z7}aVmI%mVaacurM-J2d#7?SVy*WYsIRXtM|LD+u%rG+A?#eMmEkS-J=H#ybbZfY39BKXks6Y)$#@TJWmk)(3dpQpU_z?2-4A4G0!f2TBg1n7+I? z90HrHW0(L-6)$ys*jL4aGo~fXba01DE4Ytg3OUb7q|8siW$f9o+ceTS!j9Y@0Wf1g z*!E=4hv_GZOu%ss#7+o=X{Ws7mmF9GXl3kqJFf$qMO?;q#v*`|W%0m0Y@!{^RVYg@ zBbHH@k}t-1kn!E8htNhf4o?<7p)un7C1R?%hk0zPdqj52{bzk+h$gP%TZDUvH8#dF zUhGCwCe15BDSQ)J^b-!BupSAZj=rcwyqfofp)}Ch-l{skpOFM|Jdg$`Dlh{!x^&IH_Dp_* z8DSajXqJiU#WEXIOn&c~d^OPMrBq%XQ7rXHK728L7#oxz$Osi=R?~D1?^b8O#Et2* zJ#uW$uam<5zw<$bMI6$lVE|1GZ$LU2Qm!<|)R`5n&S)3>_F+J8=^Y}BwR9Mv7`<_& z%1;F6o()EkoZ#p&y`6cbf-4J;>QDz$+vH_5br5T*lv)g(xl;URY8Nke3}y0a$0++HLkt^O z610-x*FS~GGb3Y}S}U#kdv3!Bh_=oNZu+S0E{+XbBCj?C#%dLm^$*ibtks{A zW~gir?~QEp8X=76%v1jHGl5Pk?ndGDm|uNk0d8Fv&G~)NQQMVMe9EF<)YRg^Hj>m7 znf;>znZE6!s(pulrI{2-`Xxy6Xv2xgQNx_+YPuzqZbg{)7vP%v8jUzrubmL%zKdM_ z;zQU*tZXq}lB{w;r$2x>i2St0Q*R%a6Q@YQkRL%9MMz4%tf84~VBeYe(^_pup|tq{ z+7hlGYLDWxI*MZ&(OYrg%J%HQ81hg@gvv{1k?%t-+PADR%f&F7mpA&7-m&3*C*G}b z5?@9=V$sMh87CycoC*hCcz^UYxm}p*DZ$S4ou@s~ibuH*1l^j0y?vkh=s;nKi>-|g z6xY2F+t<^ck)(fpyHxcJvB}RPFmcE3)tam$dQ6P7#pdNj?bt~oKjsfWEr#H51#CMV z$9M%A9JN&M=2?W3ak%590P3nmhVNRkyj1ItnWzBP;IM@4u?=8_ zvrX(lgF^}fA&0z{T%-adb$i$fYz|}nU{3+!l#=MAnZu7nuH6?acvb9$)7| z)P*uX^k0#L^-9)#bsr3EtQ@A6u&vIpmOzLJwamLqMovJ@U?kh1V|8n6{oB$MS4|W5 z)k;8al0Y)W{cD8Uelb3TSrnrNR_1SOxud972M9~bE9t5^`!CfwB))WUz%z=W7E?vc zvx+kPKtPpzXK7xE7 zzD^?_3LUP|SSF-6DX}L=Aa>E0D;O~j9E~4Zz1#v53#^E7k&{(N!T}ZabH%O)SxlAu zIc(nUP@TQeLl%;JjIKE=$1K1g!+L}vD5)Odu?x?kNa0o~R@eSL>}Ci^i*sXJ{JrL1GUT?m@78s2e{zHIdj>;}Gh{+0h|U z?!|p)L&+W!Z`bH`1h{?%5?DQ|;TP)6f5i>#1RZp#+vl za$^G8^mlW09_Yw{26#`9iQlfhd>V`Z*{Wdaf zvi!WqSK_|*+MQ%MulC}7Un5T4wR~q?NjKYLWD-oGpOVeqnA@Gr;DROujR&t-VdcH0 z4!w11PNF-#5&mjCYJ)Hy1=+KHfwh!HMf!I(yZcvKj=!HfHrOZ@zYgFi&AxV}^yN-9pfg&W!(SrfVpgm}E4r@GLzm^e^Q zv^tgUr}3xx9(bo)9k`ZW`N5Wa))}DJ*cfBXV%B}&Zl!?Dp%W#z6VF6HE6kta4#)c zB&fFA%pzE(76O{=jp3eM&t~Qt^UZ8O4e@Qpo-8xcyBP*f&8UdE`p$ST-R9W8XuV_W ziKl}j*3zO$7@=}4TFtSgSA3cXvVRUE091^clRzL-C!xyk2*pV!uc(VUX;fU(yM{cN zVj7Y!onSk}=uL`a{}1g^LQ}h?n1d~3In}5BzGOLEGoLQJp+6d@(NaU5^LHop|feb#w>3{G(St85LZ5E?Mm^oqPAyOz3fiRIT{pUfScz zW(D#G@wwox{ee(aL0})UsFvf{(ITOfcjZr~*-gZl#@8?<%3M5kf}sBz(?Z!JI}=dc z#RS|r)+miuxG6$r;NH=+xLRIl<2rP;wh1c|bB1TVls!*<9Q3jX zIHoyyJayWK^aU9WbFK2Le!F;pr-RQf-OnxLQ3r$*MFO`2EVd?H%HWuU4>q{6lz}pf zT~(28538ad5y7Z+-)s}iJ>~Cc;3Aw$6|e0Si{U*ixsz14-SJ>lUX-ZcrVel(+MW>S zuagY9+n9u-wyUq4x8c=ZW72(qFR!!c;RNSN%kRdn|LOOgKUjna$z?R*$rBU7f|2bV zkcW#gIE$z@eL0_qM~1ADNl(!i$SBOI{CFz6qi(&5ky_`oVXO!o-7geRJ`=UpRV-SSsy3( zWt`~#AMY+7={-7q42MC^Kt0`|?zVK>;^@uit|n~R zNYTL_epdI=c*pF2qukcK?|uJq zyYGm}UmzSmLVsM@`)7-Nc-MY1UZNR@FpQyN3{SNKZHDla)eb>1gqXXkpKL;xBt%9l z0%Ut^h`Z!g%`$vLSMst_Zt41^-{B$?SW>k1`!cC8OKcf>^s3P zvf3qX9|6XiAQwx;yb)ohb0YoG;RDX!u>(GDq{Wg|3A>HBW#vxl6KZScOof^EE?o}j zr`+w{II`bVW*&&*U$rNnIaj6<#FT>rp*a%e^XisTB7elNV+PYxWE5iK(srq2eL}b! zXGFd6?5muuye-f~n?KM5hA6Dm=jJUj^nLdYyDzdUi7Ubk&Mx`dWwz+WuRD3zFpl~- zoW*B!?#-7!K5oH_uoZHgeY5b4nPFU9zENp2Jk%&VH>sGry+H`ex(NL!?#V^qk-kYM zmyhO};+w}+8|F?D7}d?j;hQOD0)CJ@!20#?7~Fk#Zcpy6-`n#m3b>X*+DCAJ6o*o{r>AK2$m@Hf{Vg&WtWEVa zq4H6qBG2z%Mu zSq}#g-F(vXLf(>wjHtB@{C4)~hb)i*$W7HjIVIQf`MZZ0Dy4F@Ne0s`sSDeYIDD(R zvZBu|V?PhohFx^_zVlQMSCLY(k45c9?L|_dw8}pmNn?6u1U4K~GO0xT|Ue~pd5@exevJS`+AuqbmdKQ_xDq5S@AHP-Ow|UTjb@{=LVmLQ2ZQafjd)> z^@@(a^Utw3aM#xA6z_5nwpc4Du3eq)>jNPo3U9t1F&_RNPx0P`Pcs2De-L(=>;=v+ za3Ts&pSL=;f}m>hywi!VxXUfo1%-Vs8_%R-RhZ;|N1)da9P$w!O*~z~CAqIC|0eqXfzzF`= zwcftO%7;Hn$q;{wXM1Tl1zP+xJWAn6r*suF&Nv8d!X`RA zLIE<{|B@laH2Uz3DYpM2d1kuuDB7{l9-wlxJuIdKJ9=t|0) zud5|2L}{fmY@zROlKF=s^*R8@vB6&FSyS!4t0!IlRnN#BEH-r48znZKSn+%0I^4rJ zPxqo3kMAeF9do3ANj@NR(-y)(+g;t?Zi6J6LmpII0pB0>aHK6aa63j^xv%Kcy%urc zEX#^v>N6nxxD1vIcx*j=)u5g+g`}nm28LckF&;-L?DdoK*@hyRDzb&dVldGDsZI#i zEeOt#707nS!1l~PoKvdpa(Si?W%`}_(N&ZZv?71g)U)y!XDs{y`E7bv1F^#yR@ntfjPs6biXBgLoX%P5O7w3zj3Ckb>jb|= zZ_k1(Aak&11zlvO!J?XMPV6Ssfi-s2m4w^bfh_;QXOGq{qOk!(S}oZ(y1R6uHP8n? z;>UIl8vVTMx0V)51r2>6Jo`gZ_#(53;P;jCUtH6_INce^D#;{wcnl_0Bbk0%n7^35 zSNJu;G`x@O4g6XbcIHvnskY}ehEe-Q(or9H9)2#tH@D?-wl_O^Z2VBU_bsJ;WFLYE z8!k?6<3`SqI1a|I_;952_lLPrB)ci5n_Mjc3zuQB;+gQD)M<=N{W&!Q4amg zBxdl3ZQMlD2Zl!uTF0+`o6ax|k}cY^Kn!dqUMsDT(I?N;F+7G0YGh7S2%*=@_y`KlS@Z4?6x;&|=wKz8FZt zVI$^TToO2Ycqt%8 z71Zh&)khWT7^S}em-5tVK7rD@e3xA> z8oc$nqz8h_iY1%Za!H;SWjJnU_hx`YU-502sYStw8@EBL*@gLNz9W17tz(g9_cQjB z5gvn#&|{|c=9Jp@Xh_QQrT`OQtrtuoIarIsNs=?PX_(hvoVa67eX-Jih2falldiM z3yJB-a$zZJ#onK9cZ8n;Fo=n#Izf*KXd))xuvvt1R0*| z8`6de7$Qu@scMb9yKH5%LuSqCO?Du65FhX2`PO4tnGV12jCgS_xy8NHkgL5J^Rhk% zb9Sko!9f)QNpTC}4_E|dumc0raaEmPJIc z(^%+)uw1W`U=Vf_!rZ3bX`>{m5@$1Um$Uake6I7O{_y+(Yh@Ia#Z4wjO?B`e%sxjiD1HY$bQ1$$aO2QlZ>Q~?z@sy| zBk{yJ=+= z_Va#BJi!OK9~P`d?3vnh*T;+h0fu!@;DpZPMh96Z6ceO80M(z|&YyyAt99Awrn7H(m>{%L9|iGN(

dI}^L&vp!3JB9NeB8&o;;2)j}N+LIBq)1jE!oX^S zw#hhEH~-cG82^Z!OGc~e4{&bqeG-GA$cTTWhtDp^6k`_)UHBz{s#OdPP&}oKVO1S% z$fj?Tjnn!n3Y`1Zbs4tb{b-@Q$hO+*+9X^KC?#IB)!s!p2PTRvRDOgFR(dCBgN`fI z9ifo(3L{&SLu1PBZ(nUhJKnyAzSarMa$q3K1sz@8Fg)OlKQJ9>!&kq$vt0}bNZz%l zj7b$C!nQ_+VaEC*BvM^C#0yHP4Qr!ol@&k$OnAGvZMKOcZq6X*W6FiH%yUlO3Gw$K z1t8aV$0omQAh5TA84#PujLdJ|mUU~=>VR~GdO3&{MmO~^Wcm4Nqfl234VG^OJ6@o* z=4SLC8ziwEpEqmljKPn9803w;E$B$!`E}yOH{|4&`H+y)6aRrWR;#_f{8E{fojb{< zO#^)3X5z{3b+Q-emjN@w%u&bwGu=*NPu{tcox$R}@phYU3-)I#?>a`l1s@^rn~%IB zR%sAqA;^I?783>RmPn7m%>ySXJU7H`-+-X(2J`Z{X!2X3RE}}0v zZDg0`mM9MLJ2i|56u0}jG)bSX zE;+3)zqst;oIlW_(MOzBOwPvrlV0O#pCBHrHo;kV-bu5cUSE>&LSN$DvGh(|lQZ)# z&_M1t9?fTx@d(W6j!i97>7RmX0s6JS=`WJwZE%4cAyf+Ms1hyuiD?aS%g<9H(l877 z2QKtG>k~XH`eG3*4_i#VB->P0T*P1(Mst!gx*rf>W2T**>q*Yq%q6&y9hevQSf709d>oBB3B1IzR#jq#WM14Ca^$dO5iE4 z&(F5bth74!b=wizFeOzY9z=qo*#cUh(KUzxu>~M`Ue1Z(skO#ilTAZymbJ6M?NGoA zIrE-wHjA_@xX&{}M7?INw#EUa+^8x$u*#FImk}(%hhCKDSS?lxA`^OrBndd& zSkwz~h11wdKT^1MYbUqm2$dVH{UEI>N2u0XD2$KvI?zy>gG4{h3?}AuHrn^|Xg{IA zbr5|9pX-tX=pD8$ysCzms%+$M6QsolMjhQHQp9CsKTG!o@FtW zxHqYmQ^djN7)Am~pkSSOE*M3TF*`ZpF8}j_*5GP0U{~HNI=pPL#Gbyc!PAG+7tKAl z?;>;4aJ$P7y{ASjw)5b3=S^_X=;gwzPO29dYc=;j273iGls8PQaPOxJr|I_oYH{S= z8<(Egmm}PHtNuq(x zqVJVthZFM>Xho{2T`whKCYU;RF0*O^u4S}Ab$+*n?r^XPWIGoJKn6qyYlA){kCk9H<dLHNGV;a9 zvb52iF{5U9e6(cLO&MAr6&%vw8*DSO5!m64{Hb24TP=k`>Xa(oDUVBBXm0V2f^|0K zVVO*VP_aG1M34%7kI!V=p(ynzS|oyzGbk&Zh&fn54Hz!AZ?+d@F#o_e-Nr#n<*e6% zw^H1+ANxhdTjjZDTCG;k z2I3=Wddsqxj}!9raFv76ANqhR5Ylb>?0m}38k?&oXciP!nEbA^Wg2#pDx#mvLKh3wQt_Co;R)21|MCg+cO6*-?rFwSw>4%z5qwKwZRVn$WcQ z4+k#Oj+wLMGv!Xdx^uJMYIU3xFMPhyAWRwuP{s3=<%VGm$z&hp7D#xD(n9Kv{Ede^ zL9h_TE!N@mEd^M!juMcisl1{U7P_9km9%mSmev9YQydBQj-~(qWH;!be7H<1SyY z9jR3)LRx2(m_qis+Mmi~&ytsL@H&uE-XdH+J7gw;W{My-bu^up%7@lEC9b$Mrd%0$ z()Mf~AUp3&4EHELU1mJui)r6H@EaHTa?RY*IRRws@rR=D)C+DB!TQDb29(g=c-Y}a z(cdW|>HHiS&Z=WW`f0T`O4JGxpSCU4%qIg*1(ceOE%WR)hI9TBEyJysH&b9;r5-lQ zC3whooVMnw9OEmhSu}l~8xPtQCC~QjCf!Q>)D*=@%XAx^fKQWL6f5)!bzdPm%g2eY`FZKzh8QzaVZ|ABj2~t zL^Yh5HrPLHr%vnM_%A3S6w$YybpHRDaz%$PbhFj!;` z`n>hICIj=F=kp_TdnU+(&Y$X(CoDQFgnXY~oUn`bVDp~fXM8)6xcK7=Q6#5@O!pmk zR8Z$G{@wOGRXyeM+IxuF3H8&jP0G-}xc7a7i1Y-Rkg6PAFe!u?YtjnF8lFpyiDGaa z?9#S4jx9+yV#^jr3nC>K0#fz-<*5LqFy*0T_jT=MQL307KB5Nni-BK5rQe1J+a+=n z6%>-@=KJ>ah_Yoq<^dPyqg{2X^^&oDE4E@GgtrJLlW#u#x%KO@_nMWHqPfq0=@{%e zZ0R=0LFii4gURR1q#&(^C2h~f1a(!HHT7c2G`b)9AscgWnR<(9PqwNIBCUB|yE5HK zC9NDW;2|=$$+@VS4aZ|ZA>H%fh4E54Bg2+g`Ns7f$0Pez9m$z4(-~>?tlTRex8q5& zO!jJwhtcIqC|pN5m(bb`=3kmC(bYu@6`bjQ#zSFokhCwG{#&bFH&!{LezRL%HJk@L z^}%RNv{WERpB4irMHKcU0+&Le`BtIwG4ktpyj>)nQC}g^VXjTlp%QUN(9&Wc>yb0% z0y?yn*M(V;UiZ+4Sdusl+$__6wZ<tOc581J3;{Sj>7Y-fusZ z?iW@$L^JT)o(y@PP3W>$y?Qlui+1jaoE$dhzw!mOnIZ+iT9IY8u2QHCDZceB*4k23 z7Gfr)ozpLRi|bIz79eGH%DPu~0?LGt)R9W#qh;NJ;xy&X!ic~hg!~Nz zxTXP_3rrh*okM)iRT+CvJ~rDTDGrI7sXUj(l_bQ8r7qyQ*OQ9Skml*-0Lqu-WHaKY zw$B`Zj?MB&_c(A|vK2#bCg>bMa?hinQrWcoQ~~RMhgc~B#t;yg~pE<`LZCB@-YdR znW>xBcZ{nj+nlQHy<}Uhz5T)%pgHxme7dn*GNg3F>bp;az-o11_c}#1P#*L{v)DPZ z@HQCb*^~~p|GDJDOGH6hDqn44yy_^iN^60OyGy#z<(ZBN-2hw9$dI(~sM*fVarBtI zcqv6N;Hkc0?NX*F52Z-yy!JmIKuxzc5bpv-mh3Vv_ZM@uR==mntmlEILiFz>@7fmM zQ$(#ZaSh9sW0#B96I(@^|BMdtk=PF&&Db znX7`k8}rWNHA?-6GQ$X#9UXbWo~SyO@&-n7ovOqOFCq-*<}cfDMa7$ae!l-5)yLK- zF!}=KaSqN2X9M5HllDP26}*o$bFY0Jy=i0B-Pu(48GynAk%oX($6HU-Q3O*YTI;;3 zLzXaL+9}Bmk;SaJARTC?- zo*_%gT^1++Xi{|5gckqA@C?DHH4~}ZwIb79mx38CWK9?S$wHcI?6_{gG=M66ilwY`4{tVIQ-%Z z9+!|>Y=#ge(!b?1I2}9ezN%_CrMG8Z%$3eIir(1-6bWJ{PamTb(oeXCeTi@1p~;l= zjJhL?!#S4imZ82!2q0TGi3Fp-dvzt~>j;~jA$62+(?WRJ`OQoLJek%RL4eseiYDkk zX=PPU-TXn+ZS*kRchPgnBYim5@`@qStuG#gP4+_IQGx-n_q01ciBB_-d1KiIg&h-B7A_bnySzZoviVr0WxjDr)08X3rvvNJ+6dZ zO%mFTom(htRRPQpqm9y++x3YC%*6TU&hJbn-!;;@vkte~1Y8U&I4^GCr#>N@-Qhcm zq?0yx!S8kNu0c|A$@QYV#BRK=M4+j3C(Q?j_lKQ z@9I7F$Dei)`zh({TJ7)a&%2GcvH@{spRh@vx>!dLSEs#u=RHkC_6oPBw8#m6quuAz zAvF5;?h<-5C_1}&lLItUMH#TOsn{PsN#IgXAEW79ReO!#PGTGrm={e=LS>7-wzP5f zBjKWBeahX?$7syit}wA)O~6zjupz)wp`7INPtLy$bpVOQ;;Pt-&PpU5UF!{t*|c>X zpG*8@V?&fXIvn_yj4CqC7=mR1G|wmuHH`B|th_~+6!ZD4Znthcped?Z!qh;!99SQf zpbPtdnM`>TODcCxG(q5x8#MI4LRt23q?>Ng7WJ2uIzf*rDcHE<3@26Fk(*Bgimnagm zeTde6csTd*j4oX*b7TFM3i(MOaNwdeofJXRa0Iq&uk{z`_dV9{stWm|K?>(^g zDP?x+;b%aeERRuS6QLv};vHwnmjuF8T=m?4Wr9Y-<_;&oLE&}FauChG4~6iz zE;|LyE~353@RcA6#BfJr_P0`qlu3jI8o@lCEF-oJOD?~p8+rb*?-?Oby{eeHUEzoa z=nSG=E4IhIA@^18nCUIHPDy}c0L&8;Qkjjo!ELSav|BnR4}TvErIDq~gk-OgxT0hG z4!=1PDzmg~#D%-yuo1dD+o1vc%Xvv&|2!jzMtub|bi$P(nkt}V&)O;>$16X8IAdZecLBViZK+tG#KKn)S~TS_P-(MbrhvpDdyeRKe!xBy$0 zQqpQ~#6NcR4hVf7<;hgFDI#%tk7aGjR#L=-pII*{asEgevYQPysAa|-wr?;ehAYr_Ce$c~POl+SYhcY> z53Ko-c$GD}v)@6sdL(P{FK6CDsEV2Z`^=?1ahhg;=o!o{4@UN3?p-!9HWd)+YAcqNa=NGgBqYtk?08uYVr(0;u&ioPpDWp z3Pz#yp#G2&H|JJXPBClEi{t_d`-v%^?3PEmsg&d7l5#WQ9g@h-C%w0?-IYxZ z(lPrB;6>4j6^e_B##PNIIKD>GQBT~o3`Su-IwOE7fAxOnuE<==l#AyxNqI=^=a1S8 zE+}6It7!3|8+|nULgOi)l$a4(N8AJgIhI{NG06GQqkrQWKgJdC84LSyc4e#cbiy=% z_!tGpj-ogJm`S*{YvW?r9S~gx@4<_Wn%650ik^KiNkZx(VRsNC9ILsejxilup}@*3 zO^HZ^1rLp{X)aBE0;2VqugU7px5@Xr#hQ_dfV922AW^IB zlwZ{Wd*W#?2AGy6qrtI(&R!1K@XCNeV)%*J1b>&1MCJ;0My9zq&0uF-)T8qJ5{ekj zi;YU$2$YA4v5NHvQ~Etw27DS%eIO@LOUJklWGJG6ePUKP{kXdlE1W7}8pL{eKcjbh zsZo!v%q6OQAu!kO+ArNlx69mW`h)zj6WhWZd?tV(tO}c&R3Nrv$;Ep&I5>GeF&P` zh3ZQPX`WlZ?L<&R=5lE$>Uyc7iDh1r;a+kf;n1k%9~g zJ)ujNf1q!<5BK4&bMHFCKHvWK+2=cVJMr3(2%ck3-C*Kn-1MO{uN4;IDrLyZqA(o9e^ymPv(PDD0H-Y!ppBXRiC{9A~Uu8%$_((r(i}- zE-VRI6Bj71h-D0C4qpj2)&7JjLBOJbLXce zX@cid_W2TD&r)@?2%@(T=?>ZCXge$+ zt9E-Jdl}@4Lt2L_fVsN@_)?2?3S6b^xsT-W12$BJg?mgweJ~s~yKmxLSz%5P=1)Yb zn2Kxkl7~twu?U)v=kZ>ZIFGh)Yb21CjjpGnMP>LJoMql(Bo6h^A?od1Skc4w9tJt% z>6>~@UsARleUIAQgDG#mh9h;z>r6>#tS4g4dXoF^h&pAa)`lY`1^|E4g$3w70?U-@ zD@y&Q9;W}DR(-uVuE*LMru_T19%6 z#mqy%Nd}i#AlW-^kiCP>g5ux2}RNL%oY*lZhQeanP{;2KlJDUQ@WeZ+;2N57U5Li;VCJq zat=XA7go5J>)Z2fdut6+tW65r_W}_Hfly>M%B<8dGH;wd|05s2yySJ&hi1^ELHHE| zqle|vv~9)^J2!)sjJ9IFFBzJiQkug^AEQ_fkC(wyP&LrY_lMg(;BuAEv>Sx$kZ6^s zO{HIkK%h6V?ydoe={^}yS7BMm@6bmL@}=YMazRbzXB{#YAKp8#AWIDEM5)x%Ah_TY&^8 zkpA{EoaPR6nNw(?6VozhnHGaXEI1rA$!z2E9dxUKnz1Vg$KwZH%Ik%vy=aX&+RD+; zYq8-$G1=^tb$a$QT2j~@Y6)lq)EagM{fbS`joV;Z%rBr772clHF$bAI5#-Mm=_W}H z4EDk1X}R>JnWlV~oz0Gs?YYfLaWXWuHla$g)&;=m_+Yyo1k9F+5dRz8_YdsZc|KO3 zax5CvlV)p|gZLTFc|=BQ;pIWMW9NAFxj*Ifn?qWp4PV-?1X6<+yHXwp!q8|mqLJ{ zV-AZ04PPFeRnk-g0tEH9Cq5SfCA$dCkSm=vla2pv6JL2*@i|4`DGWt1D-?*LfKP?5 zP&mdf3_?LF6bwp17Zp@n5mzXJC`H8hzed|j@iXDGALom-OCaFFdic2Caw8@D3q&jJ Axc~qF literal 0 HcmV?d00001 diff --git a/faults/aws/rds-instance-stop/engine.yaml b/faults/aws/rds-instance-stop/engine.yaml new file mode 100644 index 000000000..47f3d973c --- /dev/null +++ b/faults/aws/rds-instance-stop/engine.yaml @@ -0,0 +1,34 @@ +--- +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: aws-chaos + namespace: default +spec: + engineState: 'active' + chaosServiceAccount: litmus-admin + experiments: + - name: rds-instance-stop + spec: + components: + env: + # set chaos duration (in sec) as desired + - name: TOTAL_CHAOS_DURATION + value: '30' + + # set interval duration (in sec) as desired + - name: CHAOS_INTERVAL + value: '30' + + # Instance Identifier of the target RDS instances + # ex: rds-demo-instance-1,rds-demo-instance-2 + - name: RDS_INSTANCE_IDENTIFIER + value: '' + + # provide the region name of the instance + - name: REGION + value: '' + + # Target the percentage of instance filtered from tag + - name: INSTANCE_AFFECTED_PERC + value: '' diff --git a/faults/aws/rds-instance-stop/fault.yaml b/faults/aws/rds-instance-stop/fault.yaml new file mode 100644 index 000000000..3774faab7 --- /dev/null +++ b/faults/aws/rds-instance-stop/fault.yaml @@ -0,0 +1,104 @@ +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Stopping an RDS instance identified by instance identifier. +kind: ChaosExperiment +metadata: + name: rds-instance-stop + labels: + name: rds-instance-stop + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: ci +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: + [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "deletecollection", + ] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create", "get", "list", "patch", "update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["secrets", "configmaps"] + verbs: ["get", "list"] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get", "list", "watch"] + # for creating and managing to execute commands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get", "list", "create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create", "list", "get", "delete", "deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines", "chaosexperiments", "chaosresults"] + verbs: ["create", "list", "get", "patch", "update", "delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get", "list"] + image: "litmuschaos.docker.scarf.sh/litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name rds-instance-stop + command: + - /bin/bash + env: + - name: TOTAL_CHAOS_DURATION + value: "30" + + - name: CHAOS_INTERVAL + value: "30" + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: "" + + # Provide the RDS instance identifier + - name: RDS_INSTANCE_IDENTIFIER + value: "" + + - name: REGION + value: "" + + - name: INSTANCE_AFFECTED_PERC + value: "" + + - name: SEQUENCE + value: "parallel" + + - name: DEFAULT_HEALTH_CHECK + value: "false" + + # Provide the path of AWS credentials mounted from secret + - name: AWS_SHARED_CREDENTIALS_FILE + value: "/tmp/cloud_config.yml" + + labels: + name: rds-instance-stop + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: ci + secrets: + - name: cloud-secret + mountPath: /tmp/ diff --git a/faults/aws/rds-instance-stop/rds-instance-stop.chartserviceversion.yaml b/faults/aws/rds-instance-stop/rds-instance-stop.chartserviceversion.yaml new file mode 100644 index 000000000..6c20d12cb --- /dev/null +++ b/faults/aws/rds-instance-stop/rds-instance-stop.chartserviceversion.yaml @@ -0,0 +1,33 @@ +--- +apiVersion: litmuschaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2024-09-06T10:28:08Z + name: rds-instance-stop + version: 0.1.0 + annotations: + categories: AWS + vendor: LitmusChaos +spec: + displayName: RDS Instance Stop + categoryDescription: | + This fault causes termination of an RDS instance for a certain chaos duration. + - Causes termination of an RDS instance using instance identifier before bringing it back to available state after the specified chaos duration. + - It helps to check the performance of the application when the RDS instance is stopped. + keywords: + - AWS + platforms: + - AWS + maintainers: + - name: Jongwoo Han + email: jongwooo.han@gmail.com + chaosType: infra + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: ci + links: + - name: Documentation + url: https://litmuschaos.github.io/litmus/experiments/categories/contents + icon: + - url: + mediatype: ""