From 96c6c37b6b1b6fc5f555a58f675c813ddf390fc2 Mon Sep 17 00:00:00 2001 From: wusamzong Date: Tue, 14 Nov 2023 22:49:32 +0800 Subject: [PATCH 1/2] [YUNIKORN-2037] Testing the performance of Throughput --- docs/assets/kwok-throughput-01.png | Bin 0 -> 19471 bytes docs/assets/kwok-throughput-02.png | Bin 0 -> 19317 bytes docs/assets/kwok-throughput-03.png | Bin 0 -> 18247 bytes .../evaluate_perf_function_with_kwok.md | 83 ++++++++++++++++++ sidebars.js | 1 + 5 files changed, 84 insertions(+) create mode 100644 docs/assets/kwok-throughput-01.png create mode 100644 docs/assets/kwok-throughput-02.png create mode 100644 docs/assets/kwok-throughput-03.png create mode 100644 docs/performance/evaluate_perf_function_with_kwok.md diff --git a/docs/assets/kwok-throughput-01.png b/docs/assets/kwok-throughput-01.png new file mode 100644 index 0000000000000000000000000000000000000000..59e34a5925c4f53bf9346701313efbba2eeeabb0 GIT binary patch literal 19471 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 ZmA*;c+TL^qd@2jN^oQZ^x!N}Z|1Vt4w7UQR literal 0 HcmV?d00001 diff --git a/docs/assets/kwok-throughput-03.png b/docs/assets/kwok-throughput-03.png new file mode 100644 index 0000000000000000000000000000000000000000..6b87e3243ba09c9985306f0ba9d5db77d1a90f34 GIT binary patch literal 18247 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 j#`6F9&52ING9q#))`p}h2h8Ih9?C<>#*n-fd literal 0 HcmV?d00001 diff --git a/docs/performance/evaluate_perf_function_with_kwok.md b/docs/performance/evaluate_perf_function_with_kwok.md new file mode 100644 index 00000000000..6f31f79dd47 --- /dev/null +++ b/docs/performance/evaluate_perf_function_with_kwok.md @@ -0,0 +1,83 @@ +--- +id: evaluate_perf_function_with_kwok +title: Evaluate YuniKorn Performance with KWOK +--- + + +[KWOK](https://kwok.sigs.k8s.io/) is a powerful toolkit designed to swiftly establish a cluster of thousands of Nodes within seconds. This page is dedicated to leveraging KWOK for performance testing. The objective is to conduct a comparative analysis between YuniKorn (Standard mode/Plugin mode) and Kube-scheduler, evaluating their capabilities in workload handling. + +KWOK conserves memory by emulating only node and pod behavior, unlike Kubemark, which emulates a kubelet and consumes a significant amount of memory. + +Using Kwok, we replicated previous performance tests, deploying 10 deployments on 5000 nodes with 5000 replicas each, resulting in a remarkably low total memory usage of 30-40GB. As a result, Kwok enables us to scale up experiments and assess the performance of YuniKorn without the need to consider bandwidth and Kubelet processing speed. + +## Environment + +The test is conducted using KWOK in a Cluster. The cluster environment is optimized according to the performance tuning settings in the YuniKorn documentation. For more details, refer to the [Benchmarking Tutorial](performance/performance_tutorial.md#performance-tuning). + +For data monitoring, Prometheus will be employed to gather metrics. We'll use count(kube_pod_status_scheduled_time{namespace="default"}) as an indicator of throughput. + +## Test Cases + +We will start a comparative analysis with kube-scheduler to evaluate the throughput of these two different schedulers. In addition, we will compare the performance differences when managing large numbers of Taints and Tolerations, configuring Affinity and Anti-Affinity settings, and handling PriorityClass jobs. + +#### Test Cases: +- Throughput +- Taint & Tolerations +- Affinity & Non-Affinity +- PriorityClass + +## Test Result +### Throughtput +In this experiment, we will use the following three test cases to measure the throughput and scheduling duration of different schedulers. Each application will be deployed at one-second intervals. + +#### Test Case: + +| Test Case | Applications | Tasks | Total Pods | +| --------- | ------------ | ----- | ---------- | +| #1 | 1 | 5000 | 5000 | +| #2 | 5 | 1000 | 5000 | +| #3 | 25 | 200 | 5000 | + +#### Result: + +| #1 | kube-scheduler | yunikorn | yunikorn plugin mode | +| -------------------- | -------------- | -------- | -------------------- | +| makespan | 99 | 6 | 99 | +| throughput(pods/sec) | 50.5 | 833.3 | 50.5 | + +| #2 | kube-scheduler | yunikorn | yunikorn plugin mode | +| -------------------- | -------------- | -------- | -------------------- | +| makespan | 99 | 9 | 100 | +| throughput(pods/sec) | 50.5 | 555.6 | 50 | + +| #3 | kube-scheduler | yunikorn | yunikorn plugin mode | +| -------------------- | -------------- | -------- | -------------------- | +| makespan | 99 | 32 | 100 | +| throughput(pods/sec) | 50.5 | 156.3 | 50 | + +![throughput-result-01](../assets/kwok-throughput-01.png) +![throughput-result-02](../assets/kwok-throughput-02.png) +![throughput-result-03](../assets/kwok-throughput-03.png) + +#### Summary + +The test results reveal that YuniKorn demonstrates the highest throughput across all three tests. Both Kube-scheduler and YuniKorn plugin mode perform comparably. + +Regarding the throughput of the YuniKorn Scheduler, the third test took the longest time. This can be attributed to the fact that the application is deployed only every second, thereby lengthening the makespan. diff --git a/sidebars.js b/sidebars.js index fc859fa4eab..ce8a41fe1f7 100644 --- a/sidebars.js +++ b/sidebars.js @@ -112,6 +112,7 @@ module.exports = { ], 'Performance': [ 'performance/evaluate_perf_function_with_kubemark', + 'performance/evaluate_perf_function_with_kwok', 'performance/performance_tutorial', 'performance/metrics', 'performance/profiling' From 137d855f27dec24e0bb9c14e546c75c1277f2ed0 Mon Sep 17 00:00:00 2001 From: wusamzong Date: Fri, 26 Jan 2024 18:38:05 +0800 Subject: [PATCH 2/2] Update other test results --- docs/assets/kwok-affinity.png | Bin 0 -> 10716 bytes docs/assets/kwok-priorityclass.png | Bin 0 -> 19425 bytes docs/assets/kwok-toleration-taint.png | Bin 0 -> 10541 bytes .../evaluate_perf_function_with_kwok.md | 114 ++++++++++++++++-- 4 files changed, 102 insertions(+), 12 deletions(-) create mode 100644 docs/assets/kwok-affinity.png create mode 100644 docs/assets/kwok-priorityclass.png create mode 100644 docs/assets/kwok-toleration-taint.png diff --git a/docs/assets/kwok-affinity.png b/docs/assets/kwok-affinity.png new file mode 100644 index 0000000000000000000000000000000000000000..a79d93592c5948adeb8e2b8a5161a7af29f6b5e6 GIT binary patch literal 10716 zcmb_?2UOF~voC^*ic+MBAR8D zA`&PO(UsF1BtTCk`56NEcg5wc!Yd+VFVhOpxN0e*CPPG27D;w$dX0#P7^|tOB{x1k zK5+@)LDm_q;L@h#{6pETRoT5m&Amk(+NR;spy7$u^!%ae{qwDN$6KFHuvatK8?Eiz zuH)0BC<{wM@^q(Gb8_jPa)i6B85DVC)CiJTo&hi?4N-;e8(g1lHOB2&%CK z5Lj&&JzyVPZ6Dd~1R$i!1wg`(ySqCyq7s^b@pMb@1OOlL^78Uc#`*z>Di4S$3rNL& z{`~n%Y-u2X%<-V0pilsbNEm?J$?)*-$jHbjcu`c*R4f2QVQgMse0+QofTI57w0r~t zkpkd*UJ9~5rRsM&fQ;Pl|6k-xxBo*{QUfajFf_cg2KYW zqV&{aU;APJEepuhSmd_^BobMI8Y)dsE-fuBD=RB6FRuX5zEoLRSyfe4Q&Uq5pmn$o zK=(>RLjwwhYV^`?Y;0@-(7W2)-2CImkCv8}*4Eaxwl*{x-QM2b2>>(pGuEN2yrdhz z*k(`v7zTsE`h&4pY_GRk-{4q(fB)d%;Ly;}@bK^`fZy9=V`Jl^!-Tgv)C;`N$${?4 z$;qkCx~X3D)co$WkL2_}%G2n|>FMcNRMzj`zj0-exRw36xw-jl?}deh#Z335M3W`B z#nRH!vM*>k&R`k9#^K7!%4)FuYUG>M)z!5?>9w`B^)C|Z>+2i7f*YSiHoi)3Y#(g~ zh;9Z-ZUVsXZH35gg{y4gxBo`J!6&@K!y$M)eml*4JHuw1fW4g@=binN-2&(?(tme% zcdtBfuR3gRZ*RXoX1^(Ezcp=tfB&E(>!7>vu(#}Ru=eoq@MyH@2*AnN@kIOaOwS2! z@MQ7V>Duh+>FL?l!r9LH`N8)2$QRy(mQ8!1Ctqm_Dx4cJr^P( zdMd)-m2Qq5DIy|{U?o`@EhuCoH5|d#=^J&&R+HF?I0@X@z@%#Xhn=#=r^u}RS8%Df zOw^65Vprc82#N>)k?z1fW>ToV*}+IH-XdF_-IdHEGRw+w#Tj-3+VVCk%JuDEeMQTs zQ8*r6$;_2@Y&(@kp?59Y3)7um?7~e_8ptQ0I;NLGh&r4N0yGv%Nx;hV(8&7;NiMXeCO z7->>VLS1%j*Iuy>>!n7UuYc%C+7=HVrL!Q$TRT_!9q(5fZQfD!$8to7#2(~@3EFP{ z^cXGA{r(EyAte$-W^lR^!2#$I00l9yTNNc*z43p{z)xtM3Im{}E= zERBNOa=yR~n`tP8iFwLpmH}Q-n2v7`??a~$Rj?%I{c`D4eb>##nqZzctM2qHYERHl z@&9B{wUz#`kx!D^_?;@JO(_!?jdFvMclA~$Vq)N6c zY<{Mnh!Hi9)(o<1lCSh`fy$_DesCG+X|J%gkzp+6#azXWv{spn9dX-r*N3l)ycmeX z@{%05cRf+Er@y9c<{_Tjf)E-E()qJ>jIMv&tvjGC65;NKrlO6O2sE$}#4m&E(+-K2;=7`1U4U6DJT$M)WvA@SaU&{bmWC9~B#j~^yR z$p?L3xgeSZMGy}MSf*!v2JV`Bb>tM;=RLSkaFgACxOb%ZxSOp8=J&_4$$0-s>>W2L zjb}%|Yy<({`Z79MaT2&AYciqF(47woJG93kiwubJ!)BWwxZ|EU!R0TXM-CqNnM5(C zoB~!8E_z`?nZ_YHlfqVmVNWA_nv})nDy)X$cN7vrn9($&uEG8sr=$TA|gr2PbVu{D))tUqrmPf3xp?Z zk0mqLs4AQi4ZG?zFyFyFM`%%@VP6|ttYOFY09)99F}?i9$w|`y^|G!r&rsjkKKQ#1 zy?co2Eu!*aT8EGA6O1=b=AS11%px)ggX6erXeOO0U~|~;*NKW1s#HV*!!!;bb^E3C zb+41_ZdHUBCAPb(6N#^eB&PN5UoTJ)SMD80NAzTr+>FXZLT7nBZqn{EG|G295Gk80 z=V))Z+V7+a=Fd!nDy)@1^sH=h3WgHt5qdTmH0(y%_~w?ai80cT$Dqm*LNVnZsIBO} zJSB*?ln2#l7!TYEP1m)<^_wT->4{1KRUBB3;g65zLysTz+4Ds!UHNej)K0xPp4%$V z`kl??-&RFIwD|uqU;oDj{lDA{0F~nu)s3mTGTovlx;UP35&e9tiyASConTCPDb8>U zYseZ){7LXWwS)KE-}!l{%UnPEAP@K|(QUO5k4nB?d)#TYSGwAIJUzrT2yn2c+PUsaLHah<4j8uh)tKCK_9)&?N z=gASjob-ZqVK&A-wzGe;x<3Cp98R5enyzWyh-~h0Y%xm&gC*LlHEl%jd@|;eN8ifS z-*2;U`^^{69vjS_Dulbh^WTCV%?unTGc>?+S_M-5&s93ayZDn;gM%o1xAsc>C(}im z^!z?@;kp7;+}5Ncvetj0kv;Dn&Hb9Tqny;Yf5JHES^pF+Ie2X#F0#sa7p8KtcxU+Y zxs`_NxFv0bn5*8DdJeqtt%aD!pR`E7y$<+`K z6jyz8Ct|xR{taud!}j{(-DDa}r;vO@31W=$4n^KToRp0Z756CDgruydJQQil{5;};;(!U0)bYPwdk$d6lTxJ@HNpTnFn zzp+EN=|F#9+X(IJc-944m-&ErGcrRR5W?OiVJ!aJU^SEwA1 zPDj^fgx$+ucx%K*#}QNV%R|ch3M5WxV@bYy{@yeggLt?7a_m;kpabI8txnEt!U8ct=dd1)|B>0TEi8=X(&RSz;5{jv#2TzX%;tu*G36%G3UI+d3 z=jmMmj)qNkcIND&@NFc;d4{+?2^w~LZJL@Nar;JRkb}Nn-KIxm`g-q-K_Sda230FC z^K#dG=l*9W$AgJ(x7qV*DTlAIr@#NsxsbnC{{($w+Bmn$Cy?0Z;M;Skm3}=tmIb2v z+vs)@Bk2dQ?`mYuyfiBKN5gNLDKSc6L4qc@KeQ+^m4Wat9r9pj7KpHqkrYk1hv^fP zljhnV8vbBSqr9cP=bAiue9_s}q+lcakt*u;?gYF#B%)t?wi+gTvcA`cA6nAKT$fe~QjUAz>- zv^MRs2;xcka)2!M8M?ETtH!KjAK?2tsAVQB5>Jc!W zTWB(3n^C@$4839*d&0^el~NRzT5NoN0w1}*dbu8=wFdylKcDrAuUy)ur_-wwUIqJR zqGLlta2$t~Ux>vby-A7K3jH;EzVauO4IyFW)&=+iebS$trbiD_vFbUYH_GTI!E z%f?!#emTZHaNw|=vtPf1!WzBZme^RhnsMBIHJ_*g^IHkPYL~Z``OTzl%7gBae4xzeAgA zW}sfIp=)T?SEOvM+YNn*Mi3;6qAt}xP}>Dat_RUl^TLJS z{Zfhv`}btEFz+d}vZuFmfAP`h1p&s)&EKKYsrX$Z68uhq8dH7I%&dCtzIgHUd7|od zj5>US(MNmR74|ijt@c$9o8QgF% z=OCe_-(V+xV1PF8{$>Xb=7-r{B=v$Sgj(keXS5g3i^0(ZYDI8v`acOq>PevwdVN;m zU7xrJes8`|FB+b@Uhg>fElIB)zM608R!lln+LqjxH1>N5$mRNao*Q>Qv~f)X@%hHr zQOEp@-B!aLZbQlDy?Q(&sc($>vj%9GwU-I<$d$SFM5nG##sLU5a9yEz zxr+hA2v1PmB3P`p){VQSPH_ncF|fA8UQv$OPlghjMYuQDL_CUAlsq(_J54V#l~cFd z6j>LUVbpcv1ejvgQet{ULVqbt_qGf6CC$3>3@E|OEX!$fRoVBe@KQAHb%NstZ}C2vcH^Q{Bq0^_;y2UtDji55ebK(E_E z&2=|K$xpTD`Xa1X1?eaS#tc~>wqdrEd&9rvYtd=&|LvUq3K*r3ku-H2$QBqDW;0-_ zu}k$uA2z1j%rp|Fal`M*F&nAL^)10YoOQPs-s+*Eht&lnYcm#atuWqJRu$h~xtpw2 zvwUEI~crXrB9IK;dALJrrVkdFj|In40FojtemLGRePON5&_#q^ zk8cG1V$u>{FLg=Os6ys2y(&}fRbLh{O1J44X*Ro;i!Vh4x;xeHni9Vflho1q>XR=`$7UA$re z=ysA11ln>MbPN+WcE+C+_N&f+Z5S=7KPC3@!AJvKl)Tb=y1t`g=H+%wS1_W-1F5!7 z2yl^SC!iUAj}=JT-sX-Z9LY?;0UjJSq|FA8-F8=x*C+!@bk>Cy#ACmwv5Nd ze(%SyKg+)-s9`C;K^T_6Q4gQoCjX*udi?Ll9zJf2;ZAVl2ie-_;jnF#?cKlF&d|z0jn?hb{*WCcW%jcY&ZSLI zuQ}9sJv_%==5YRte#6DNgQ~pn={&{h`D|2!)8EbJy+}!mh*u4S>R|$xJbA64nM>iV zyY2fib2(7$-LWrx|A7^pZthMK$b`=i` z9WGCIpwQyJ&pLG@&xA0_HQft0t{pX>`P5m4jy)MDD55E+<)!6%Or7VxQ4Bvcw4x~6 zuz}Pvafp&1%S57q^PEdU+q&o(6@QK|mV(c|jLD*TB^-)hw>g(?`FJb0zG;9S|DK^2 zJFmjYzP6%;h!03-!$m!S&+rk{~8dRM~CU!OhagZ%Kt>XB1Rxay-moxm%YIG`)# z(3X9WrMPO6d{8@CWr;X2^R?$sAyJo%+=JS9;&q!|=OoQk`%rq5OF4SWSx|Q^bE^~h zLzL*nJr0W8PljkHu3!|G&@P$W zu-UQG?W5ECri!GrD@jllM(t=(a>60PX^x0{h!+n5k%jO=wd7v@lWhDrjFD7;B=v5e zy4<_GE&Oh@c{=Ob_Tt^++p7bQ@Q{A+CuaSryl#Rf zOtXex0TBG~eW(&W z0uiuM`Fq3P8F9RhSAZM00J;8~`1Q8raQ@#1<2yCwbvJlElLs#`_u4|GVoqj{t^+LB z2K?|-ZOLlLB32J}OBbqlOm_4RR1}te1(&`eompup(a^JYPOm0!w>kS9R7UWMZ&ubY z4^;Ac9(uqlCNB%{AhOoY?cJK%av)e26|HUK;J80;_GA#)Zh3D2f`-DU z8c$Y_5IQ=)46i1j{5;?t46%vRZ{@9I}iGDd&2B;lz zJOZO{I6G9wpbYFmgAF5ERMqQohYNk3*d17+VlZ<&gGf%`VsbBD^oRwHX ze3iWqpwkVqZ(ycqd7rGw_!1a-1ZN2z*T5z2uOX8?ysif6MiOE zx>I1Yfn@huwo(aYS>>@KQP7HMOPs-pS+!W+!qYUx7KHwSzlu)dn%4rKgBhgJk-grO``%P zA`3P`>0*4wtS^a`Uw^iH_o~Y!HC+;6!TP8~W}%6f5_T0zfOL1NGGMo`mdCjs6m)R| ziT}GD`e_=%^WYbZBljM_KzFwo>b^Mr+W4=UoQbaUN6xZPOZt%g>4pzLgEyMc;CrZL z3N(bALPhPOKLTSCs57Bsr!d)yr{b0AH`*)Ok^_ad04qP2@xhJ%!F*2k02XcZ=sAAf z(ZX+$V4TEYHHjA~;*vXn<-UKA<$w%0asb^2!OAEb4eKptjdZM;uJbaRV2CCC-IEkw z#V~-cP?l|G$Ku_B-dPOLYLk7OW>n&Sp|VX2jI0TflbFQ%9NJjxJiTnn5}G(#AYVyR z211dDqxFkAZ{SQt_He8$y;P%~xzE-DlEmwmqC=ne5#pz+1AD@`mTX}{fPm?d-XsfNGF0#^RHJ(KjoP2Mz5u^r>nh_$JtTR;?^@Mxhj z_t=!&F)-G3!yW%)yJ|!iAnF_s?mD)jIlVIp1@25A4f1_Yn; z;N%*lPmIrvsu7+g;=nB`-4nv8`cDXWW);sCRdReLr z#^J+)pz#SXyY5eFCFa43k2zQ026hvN_}@8Gr$T^WtK_>->VBMUeroJk>$MZdUH2?adgYPEx5_Ba81KRodA`Yu zX;sQC51}C6S+yoG_Gs5vR5wo|#%rlsV*O?u9rsP)ai+#u{xB#wpT{458TC!>!Shy>#%tIq<`Y;@5#0|!rml}jJjy(Vi{^eaLtir zq2scB0t~-zD<1a+(x5LDc{0Ydwd2>!f;&p6cT+v8iCrcFXJ}JvoRg>(k5)Ff+#Nbd ze#?HOfg`It=rG!|oS^@ifWPJ(kSMQwVed_BeqMXhgpdYxa5b|{o4gFzzn)vd z>6|eBs2B4$<2?PXvgWW`3400tTfU(3z-|(*%I{6w z_^2$LSi$|OSHIU}sPa3ctsKHA_>>y%-a)zIroM$N3cPOke2Bk?`JvyteR6fR@ zbDLMF5Z?iE0{EORD^NHvdU&=qTxx-qpEt{x?iyirtTYbFoR7b3E+>8`Q4LAJ@{{Gt z7v@|W3=~fD>UurYWOBUUD!uwlMoAm+{mgv5Ow0+4HJRe>v=qVfy!7@XwmNxMpG z@*`vaZ)HxV8o=4w%2>eH+mvM_IeI;gRJmt)3}hpmt<0f;ng(9F@V*x@b*llpizfKq z6W<0-&2vq?_)4Xj`$})8Lx~sQa}lEYlz7+T9{-zMY0a9%XKJ~!J)ycx_IV|BrvbK) z!gC?p{c+spGZ1FQRH>Y+1%4d}olGn3L6U??=d28gsHa)R3EEw*4^Z0O?);%7*$GhM z1#Rxa7(QHaG+TV$6HTNzWKW)qH7zgW&^PXsOMuBC)Io6cPZC;eA=1MCLH3{BdzmV< zq|Sj70TH7kkB-g<6|Iu3j5SpjF6`xd2c?r=F9Zy}N>lVE!7Fk9lPiymI%ud9Sqm}i zfi@$2EcHubwk*gz3)yCPUmsety#btI0g)-He-AI4D)9w!e$n2{&+V*ZWrA&DEO!pqVQ%QDT8u z=5a&p&7U8`Wu#HPChcI3a2<~z>jT*{@Nah|VH-7j1j!;h4?TMA_8hJYv=K3?aUocj zkwv4*E1j={9m*9OZ<{)Kjk~h~AuW}qED@SV$DVbW)+5yGRWkJ7gEky=Hom{g1m^h} z!l_}ipDS_1H8Ag~UL1i;e3uYcg1k+3761H;u0%zD8LDV#@^0|$VrJa6EBNPaGytkjIM#Q$%R#Z?x_#l07u3u#kd*#n?w zA21*KB@QP-0jD-2!P)tqm*ULtAa z=A?}`Ew4v#>0lxmiwhiEuG(iYbL-M|hj4;lJ1N4JN_>J=DxkSxTJe+wi5m*=M7CDZ zGkVll1wtRTAKfDi9Zxau20=YByN>1#9(n4tfSyYLRp7z0{OWhNyPciwV0ObwuJ|nh zU%D;cj(qN-knPuFC4__1-SI4~*r$t1b6T{_BO5xqf6MPca?DOd?m+y3rTb>_AocC^ zi;~EIK~wDAqB<0N`pi3_iQZuU-cN>B_fmcG|ywuMKLwbVW9Hxcu3l zc~WsLI0#A`T`Ws6)Fo0SDkgMSO`)dax|n{VukN%M>Gs3`NO|n{NN%AF+1ZCjIFL4l zP=VF;*F%oS_Mf}#>$f+q;0rSKL#(X}@IOVk&N&%BJhtum$(^%|p%sPhtt{SGM!gG$ zs*Sv!o{s&FnN$@U@s4+pkwC*p+!$!C+!=W-4hrcNc`fwvI{v+kSUPB?!0-1WCz7V*pA?Hv@unsiZK#xDW#b3>pbR+F@jn8e#^O zF3F(>MRMpGn)e>iwOsqR_xtI8?ES&RgPAApxZ=Fd>%8ZgriSv7L#&4&2s(1}#&vB7 zqV|R$D(Cn@iIu5Sn?T(l+9W@wWihQFe{D4pdk&RBn!WT}yT zK1+D;$IRvJ{+DbA-(LMbFte{eMrhyDV@LnWto`%)o0qS(=u$ono~gEbdWMGnQti{3 z+2!`7Pm1|iU-g#8$(c^HL1)GZ-->*nrntmd|HZA`7IMG_Ibes(>8F2_CoMu-g(t0J zu4{g{hBFLluzF?hlL+n4dIr=SVECVJ;;A7h^B{~Kf|9xR$v_Y??${jo!r|)w!55kM zi%E!A`e=AU6ra(nLg&6N1Ovnrg`|ZT!Jsn#LegqpdqU6YvhP_6mXurCmKrV>Ct!x{ zI4$dST%W^#^;>lwhwoJ0XlmyKdC~T}%*u3Mv!K=UkL#zWJSbBEf6WK5V@oktC0E$7EtiFGEQTZNa%({wprI zmBoExA>r~{OYP2RgN)cuT}p!UlC(!p+l8(6n^sc^y`j7=u7M6N=k()RZ5X?BuH)HP zL2<&jFJMha<%Qo;Um#xVK^qaFJh%F{D!?-v?f|D5*uAr7r3oBYJsG9Wo!KD*& zjkY(AGZNC5Nl$&Zj6d6L$7szLjD9vLopmnCgXjcd^vRF0`^z@f4CFFDK1Lp3?U~X* z@Wp$O81%0eKEIspvBG1sj2UW^3M|xYAv!;^*(dDt>;fe(UB8^X8WP0Z7CVW!K zP|fCT(6$H75UPh;J~29!FDLVwy@t!uslsanam?`=9g!kIe3M3)7lV=)#_)=!hL7Dlo$k5)9?^0Ili1*uNgmja_ zXi`yQ-l9~3Tal&=Vb)f>qET&_Vmqt5w&QrFmhU>gzD21(S}9f_u3Rplw)w4^U7cXv zb5fVf0~@Z=LapOe(q=@K`2AJFF!TVQagR}}S}E6MMasTaUZm`sJT-jVN(;9&?TVIs zvRQ6}8Y=?J9ZYox(cI^X8(7^zVW3F8B2pA5XOqgH_i*T_a&E0)0N=?u%&dW9ZE#DS zD@&3*dbRsjzmLvH>R$-DjTppyyoB~ zyO1BIm5?a?WqxtvU|~*|Lf6cj#r&sQMFXBD*sYa5^tP9K+w&b~ud*pO%snIP{1?0H z44mB|lL!<15)*@RJaS^52)v401|8(Ty*Xvj7$&>YZPgSG=M5+;;nPEq2fWx?UN$k= zByomn8`~~p6WkCoSFN@Ud!m?(AZM@_W7iED5iE^~JE)>ThcK+=Piuq_Ho4>y82${{ zR+a||D;3np+h>PhLJOD+DArI&XbMDlCFAYEV$VJX2>$^DRTld-zahSseHPsZLE?kN z{uqKmP{$(>av{x=R3JqtsDn`Xzxu_OTG}!Z+vay84bd4FRHIB$&V7Yq@;+5lQ%=Tt zmQ`X_=@}XEoaHHvF`AyIAqa08>W=Tj1q2X~k^Aw8amTGPVXLb>_rRdbS$dEL428kZ z!^1Q3^77m#+R{eP@%Sy&U9?}G>@?sM6yb_s2Q&Q|^74rHWw%179*q0;=Gy2vLPL}e zQxJZ2Gfg!*Jyki}lilt6muK2F!MjgotwS1kcJalJ@EXfK0Aaqmt)5-l)1Cb!C$Ae{ zgD4C_uCYuY$-|sG#q+r1xtRJV6&jVi8{O;6q|&fw;gOP*j0QE<+@L9QD!D_#)K1Ow z{WxNUZ>R_d=^Ethtjf$w)-95+M7(!H{zA#-*4@v=*F`quF6||7n$+wF*$m&gxL_)H zMm6{GdTc0Fo5D>_S$F)SP~&-Br;2`GG-k{T=C`~#8su7QJ%-x)=LfB8fLSzl-k_x*1gYcy zX9(ec37!DE@d6wB@lM?wHt8Xge;^Tu|YvuiYVah0`a`K{vC?}8S zPZ04D7%s54X(DbX&O+Ztja&LCKv~RG@MxrjoLnM67;WIDxbSyNbr+M~b>3izLXXWk7<+yL7)jQiYBR!+auw;L^VsA+)@a64UA#J1bWfMRLU2V1ifm zDvYVkGlnAloVM1N&1$~X)Sq_zg9^Ulr>l|`l>1sIJPqemezAP99d|3BbWz^Sz;%bj zAC!~X|8ru&dR$2QX%u>VwXtve3c%zL*7YsGp|kZZPbTx{H^w+jN;)ML@}uR|eL+CW z^FWKwq=m#{&0SWVZyUxtIlTY%hp(ABDrT0>t=?*@sX@s>7JvR=OGAu=1x}doCaKA9N3#e0fl{k-sCf45 z833EF!%j=S(nyesY)+KzLlkaMrI(79Yx2qUqTh1aVvW(Yf{!3v<={L2pqy(}U&G>{9NT z$A8dtf;jdf2!$w!S9D}I`4uj7v-(~&E|OeMOhPQI%0zG6WmT`?0g*+A2#g1*YpGGB z<=t>icm}=v=7$GMmEsrx%I~WRTb)Xmoq<@~5BG3ih%!r*d4S2QckKol=-efnAIuyqPds_00*=?Y!tRVNnr}Y09PJ3+6khJk%Af4O#2 zm%Wdl7JqQGzWpI2cqA^*=_Ity;}~&&amyeI9_El5u?8}zgMgHE1#Uj-lLa$lsD8gI ztpe_PYQ)9F4L9S0Z#_!Mq=K6&x@N3tjZXkpvl@`HR+PFGApqZZlgz5;#mY)y5nn2 zO$OUWH{<@&%n({}QDrLp_oo{Zmf={th=pZe`g9ZjrRyyXg32hZdIY7~ahs@8?sEw| z7H%%JaL4UD#PfxQ0XzPo+LyS7V03SReK|{8EBT4$qrkke((Bb5p+;D?*~FU? zgO_7n%nB}|%!wv-16g7Ze&oUz@;e1YK%H$XS=eH5n4WpIT~|Whd`3`(9zLh zO`|&lR_K7Jl(kE7iBPwqVrt|qdG8`gR!A<|HDV!B`l$FyHmQI*U5O{~7M_~rZZuJ* zEiX1$BNqDTK;Rzv7HV=R&?F=HLd=t+>?#==2@V_yS11$w0BnZgG4{QC{k}8#$AEvN z7}blk$h;2Yly^yYIRI9VIw2b1=~e-WYQWTXvRcAf1J{ea zsII|&V!Ze)&#>t3n7=gA=V^0vX$H~dzp-pPuyL6$?$TOqY-F z+&UhjqY2f{JPB@}zg7(3w)@6(kva2R^Bc+6QG(`!tAuE^=Pk7PyHFE92ds3~wJdGV ztnG@a6aq#-N?Tsp0-nYx_dzF>;qf4-1)P+o@eip(jmo({ZQhvoLu*y*5$ zC@1@fPswZ(NM=@Pj>*HQG|J+JChMqby1u{-ji`hUk{k99;lvUy0;)FuYNL!8P1Im zNE_AGt50u}r;_I=2YG8o#ORgP}e%ShVz=aw5*#Nx6?}N_nW*T1{G?r-n0SO6kc(csM*iF^mm;=DS&cTJ<#}3&O1E zilNtQ5V%4tKp>oWHn#mn-`TtHI3?APbLLU@!{>b44+qFh!lfLX!DC*goGP2j(=cJX zGaymw9H2RBSa=gz+2zdkh+aIvAVUqgKf*NvlUt+2Gi>7d?pfBkP_n7ep?ziPe0C$$ z@LHRV1rb-2h>LagBg``B8pN!6xS#>W|0zHv9|6}Yrs|A7j;HvfsPWoTpcjabcDAG4 zC8C8hol2Rdj?=k`(QtZ>m@v;(Rpt zs+q3U&C&Umoj(p*=zclTSabCBEt15nI-B@P*O?2vU!xE)QPWeuT6Ah=`^KM z1>V3@JD^O8-Ei!h2CdxI8|~#1DyN7aC7lsJo-KXi497+veO!wN>!{w?5Frq!ApMD5 z$l+|q^v36S`>j#GiD-JV=dFQJXWzDb5p-`e^tj_It&ExI!?WPJOBCO*Z}?&|5k{Ng zQ<34)x55r!WK&1w99s<1;Jmo7>vUr5vv5UxyW&YZkF}H zRe8A1){O+bd%XU8!&b4O5?cBLdFL0mLW>w^O1ZxsW#Q`aq(MD&$rbUyu@d9N=qQe2$$93E$%%7$ zW|J`!ry%Qb*emJ|Rp1%cv`veFmrG3>E8;fe9P7(npN6_np0k4q8i_JlT8D%#0%yl) z#G<|l@Un~Ec6UGImAC&Bh-{-bkdun35eXZ&-j#B6$9LuS!CAWNyE-}|lz0?cfO%In znw2`A0Ih(o0}pH#lDEOw$bGP_W2!=&(syN0#4-uz?rxL7i1(r@Fs6FoeZp)B%8+OX z?J`$CEby#j#6mkiTHI#RXWA#W^UIg(Qulv6?UAy$a>N54!WQNn4J}{jhiydx3~E2J z7@8Zs*qf@6Onph{15B`Q$E7Jw3`CEMLs$IF{1&hW=m`I;0?^2mgZ3Z z8}~9=%u_bdh}<|aK_b>#lZQMGA@O(DLERpD>|#GmFU~bJVqQJIy;?c(hT!IWrtbu@ z;?y{jfC{lGrQyTh4ZaY|>9p;#i<6K+g#a{*yY{_KOnA`gNrP8l8AnDxON&8$({N+V zjMe}<-Hh72y1u$R2I8;J;%ID$J$b3mzB4^~tdraNm&3pUZMdm8G+h&-?kFXgd+Dq% z$&x=nZp;k=7tIkDQG@r-Zhe*wh%rcwu-g>>fOQC0;=$iw1+(y|cQRPC$Gmd>{6Zd363oF@Z5(Y|b}^f#?Js~yaWN3c zFqYDRfYwN-@J9m$o(3)C4riYqc}p9CXz+Tv@`p#fjUY#6>@Nhks0Mecd_lY}dl-&t ziI%9Tm)X#0-@&xue@Ws!gmHWbODym4F&GNmT%8>jRL}BZPyqu4X z`InT&?v-^JRUY^Y^@s4`q@Llu2jr&2s%T|~1b+p1|EmUHWxuprdMn=uaI*|bHGC`I zW4_`lcv3UvNtGEUc#~R-4%RuTphl;uJ$`K%kh8K|nfZrH^_gf&GYxZ3HHgE6*A$pV zJo5I5NLj43@mZ5+23XUeb5<4rMa)$48dt>ddzogYh4#3OP#b29)mG1T=cSTjRt;mV z_&W$xf#?4VKkx{V8i7cTC#jij@+ZZ`snmpX7Hytjkpv!imC3(ezvn`H58dr;HxpZe z)PD4o6^VeJmEw}qA2p=n@HqJ`S0|(Kfd6G07U#pAV2LJy1NW@5(Fp0 z^r10N)adO|DgK7%8nMw~GCijcb_{@0rw8ldI6Q0Z?B%ypf3hfjVt-x;*pfgG zD&y=VZ-WDE6n{y8B`+wB&Gyn&X3z0Pey0@}f~y@RFy7f30;t90qx{-2QX* zAnUt3jJ(E2Ipv(tQpo+HnlM)cVsmoK6+g7`GZ2Smp z-ym`3_?*R@yYZ`29{&I=xTgQw{rnns2FW%^NeS9hwOo0jq)OR>B;O371p7GE3T z+oID6lCP_~%Ht|zRyHW>7OKtBQ<0iCUmPoitORU;v)MKYmqykf&;%tOU)`fhP$W=j zl;#{Qm3}t)ze6k(=#)&&@m2mZFJZzTK(^Z-KuHc9?x*+DWxYM%t=MF+Fd+Ugh_OkR zf(0MRfy;!x$a**y;kt@5W^#&VXG?aocl$49W$gm~1%L$6&Iw;xXE3a6Y^u=$W)5LA zOrL(Qq7?#~PD^_&C+-poYl+zI)R`Z3uR+Y|s8ygXizzX|y4y?L`+j}#Weey#y+6Lt z_@naEQ%W)YZ;mL_xZj}2cYV6rX+UD8hp;H?A?-EO!M#7Zni49U5rdbgl8t0yaMhzD z>~UFNm=4Yq1x{9-Xaw9U@zR2x!i2RYuUeNm(D`~mN;rPZ$*0UiTHlU!WhK2|0ZfL3GDHoj3y zkICpT@0^hm6H5b6e+qycGiD}sw-}I%9tgBel8Gq=aLH;B5aNJ(WHqE~uQ0R;bCc&0L*xpm1e~1Uxv_`%g6$$OZadH13Dmy6z0GIL zFPnI+FHMZTgbf8hJn9{57~I1;BWm!lgeU*};&&Z+SFi^ve3ghP{QO7%#leratz7#~ z-C=AHq6c1jkPC7?qKKy+z4*z@$xV}CGKE!DINTh^z#3C3(PHZ4Wc$IPy&*If3nynb zTw2MN-i0ub%JI46(Osx^+uyQhuHL=otps{& z0eAb0Ql8H4RAyqmEw1eXt|2#y^O3qx6S205H}_H|@}aOM46R2x(PUK< zX2!e_#cvYToCL~7Sn7qSJ3l%33;mU!0COfw$&&!+Le!3#REZbj=1Tqz(Qbd_y8~dZ zv==Ch@n1oBVusChnYgN7)OcgJS%jpmlH#v>E`^&(Uz(tu6<7Xj_mz7;^fE#uU6wMCUqX{m{v}08n9jclsYQBemDPS`b3Kdk?{Gj=o$P%w~He?Qr{#LJ^i7 zK4{y4lqf3caU+=;c|r-qu4i8fSTtNlTwL6E4JS5Z^={)oFZA8HFl z3_*LtzAoVwxh$b_kCnYK>~$W}OhiVX%(q`dM)PMhwiH`iPJupb`yK#vX0JcputJ~8 z^P2%(9tS9w!smc4MtgLPKQShY1fuh^I_im~iT0**)R5bSp^=ZxL)NO7LZWWjs7it6 zajSJX9;8vR2P-AkH~kKy9=6negrN6S12x9mF0 zmj}uw=?Q>;_a2S{gt{EAHBu-6vDP;;}ix z+}^i?c@IMQax{v};Ge6lM|e#Ozv;ETpt)X8pGYdvQt1Fr)s`p=Sb!F}c)0)C$fq%i zrf|}jLM6VVhVwP?VQHIBs52R7fLsjX;()7i62ES0L}pBy^n-6bANwv&~46x^3pg7Nb8GX~{; zbvYdPn~H(2?|g?r(Os|ktRxBLs~${Pkh*W#qNSj5G|+MMU}` zF&)TPz8HV*_WW<{%+Z0}bp8)(LJe(+zk&(Ii-mm9)1^o+!phDbwlQMdkJ+t$IvEHNl60+>CMA{X@*nME}z|IOl&Xhv@l1a! zJxF8!P@6u^uTD@rlI|jmo~b)yHUT)0ny5+-`H4jPdecT5_K7dOyB6?C{M^Yo3)nC0 za;85o6QjffsL4(@LIb6;M*0A3_wc$zlzh1^c*y#d>9ghi9~Nz z5SfFOcw6u8$FB8lbp$roX)d3}H z(g%<|#C;PV_)4IB)vm_*m;n0&jN~h=C}-Qdpga99?Er0&IAw3X^1|p=dZe( zEoK{IDJ<;LNFGrFP#)zO8mSDB1%Q%Yl?cwqx(43qj6SXVEjoa<9)!097(t=P`Iuby zrdfip^7T?B9(vb)ZI*ti&Y6MI_P5ubv}Nh6DDQ)qK!=&1weQS(>|3ydX5O0@n_hNw zUKLe&)(fgBpV3&`HXsCU>VQF!$L7x10tnHk5eqnLC&#dNF2J57hym6U)&Mf6aB*?9 z)xEwbrV4{D0r1eS+~RzR&O__?`q@n_!T+$}0=Kbd5NT{CA*BC_xgil|PZS>@!}Cl< zqMWsX!CMnK2h{*Es!HORk^KsKm=UqDr+hnM5cM^@)jP5O+S`n~9r;hYo3aB!wfkh0 zx`1FqbS01XkSFL#9!3AR{XVdkF$cV#zbhu@>WDBV2tQGk`^sNF8&q9AY?K-y>1z97 zk6jPlnBXhl2R#l&*4%h@A@;I}0Rx53cKh>x?EFElE zRE3@4a(@DPP{qBX9~Xe5SW4~jxy-cg7#VSHL9k3wcaA;|a)>zl6$Y99F{C98N*U+F z`&5ND9Di#J?uU|Z;#2kiAx>;4{WGGho5L00pz7-OAa-dg;8Vo~ri_h1$pkoezP@+H z$0xbW5gEX(0@&kKfK%QB@B?CciLCh=@>^4nk=&;@R)9mq08LF~1rU(5G2^_>_$^kH zhi*)YyY!l}^!G+?OhVA82Hq;ugA{S9QjqFQ2x**c7Lb}QWxiYk-Zgiy9-WCFJqK1m zV$0np1r%;4=U9w?Z_^doTngcqvH;~?zYe8h{H5FRCh3CE3GtnVg}+^zpP#6f^HluR ze&c)B(~tyu=MB5}p~)STiGG+@X4`8l_Cn&yg#-R7}^YfzO z;!zaQJL1Qp5pHUJH#3Fn{Fl61pvnb*c8}nedl=NA$BU}bRm)qk#OU*LYCGf)xSAwu_#DDbt4?zk^ z2fdT*nddM@6)CahQ*NGr1D#+w@yWl{8IsEXeUK=m0YL(y2}F`(Jz+UIbM>B$!xpsY%v;BR@(l6KaD6#9x-9`G6S3Ww zpfeH0DcicZ(7A#+b;q(KLs5In!91^FtPf+^X}6TYeVv)thvvz2PmwArx}G-9Qb#_RtP=doiy?B zy6}eKKVq-`%!w`@k-vzUu7N^sQ>LsYWQTJdy9BPPU`^4~jgvactUDio`giL&Fuo`? zr6C7YSI*^>YDOc)i)b6-t;yrfjWX1zJdf7kv32YNYXXBcPS|ryB?%Ne8@jQ%K?mNG{pd z8I6DoEVb3(zmXb|mBmAeXyZ5VR;?a=G~WW7h$ub4yL!A9tY|Mr&)~w;(?D5N45BWi zdlhe`C02OF(1TK{Vu3<0?%b0;$AC2<=U8uEzyDrt#7hSGPYCGFLTvud!-$G+8$we5 zKT4yc5E97O^0;^98Wf(J`I{??B5h+#R_WSyph2m*+)temC74lggW=uZbMevFAm*k2 zQl=#qiqrzJ2Z)bcu<-ru;}Ip_M)x#qyFIP(N~Tclm91}0fDftoIP-0g+6=UOz-$%q zR#!|xv&D+D6yO^%x&&b$AKUGcPt&DX9vt1nBN=hZv>*zCr0IGOXO>}eDX^DEWG17J z!pL)vkjNZrMVsT#5~IzP@*`{$A8@hD`}eD{Ly+IOq1JpuAVYKmTD+VqlM%7>?s@a8 zpy~=J_!S=u3-;1D)|?6w(%dKG)8>40v?S8}#x6E<-}#@jIK%=tbhj>W`I?7B+ASh! zw%k^vra6tG%)B~a=IFItwsarS5GH!r1JHdCM7JLn-d4|7_k3e|y;JRil=)1ef9Yit za;Wc0Q;t^smmjb`km`lp_sOU{J5|y>n#|pySoNyW-wB?$*WPQ%(V~!+5Q`@jhgnti zkGv}nfI2Sw{>{w8 zp>)TACCk8EzaTc(7b%U7&+J|jHe_RfHl+!iE|0L|2uT8pE~RkRTNDUaxf7%cKKPCU zReRFOIi(wqiguRsae{PS%=AunVc4@k@6+eSw>4LJv7MS!#Q3;SL+sxaHgJUNc(y;7 zF9v9_%wU|4ZLe%Q`FtNTZ^LccoZZTPVua0X>H~Sf7EYn=prwaMiL)v8Dy?v@49-;_ zAG;Q|2^@OOYQ1?YocwX~{@?vTNFm^$_qh}^LgNl;XD|*(F)EgZaB|u#gS~qHbjlIH zHj|0_%8uWisC^yu&1G|@Z>-}W1$aO#PE_zFMXSi}k20K78pJJJMjh>Tp3s*O)!lCe zsNg|1wzloTjJ$0C;^cNwFivX7Fz6$eaP^mCd~Wtu-1EDg+&~!KNOXK72&`LXUs>=Q zNjENj^NO;2v&J?%+gl;53j#aK#9W$E+-CdE%S7WMj8NkUZ}aY1xO3p-#pmnzoZ8h@ z?_U(R+$&a-gYV(x>)0CR`Zd~}x5sB}{MU)?QR-}msm&+?4Nq6Ffpn5EG*wSqt1j-QdHrJ5e8Iwe#j|?K8 zIWN_|^_}Lk^4%EJVOYu$i_wQro-}I18_Kr~&6zc&+`u;LS-H{Vbs~p?mPjYdy zE}Ig4ZK{Ih?#pbsyLlgovnVGskVQ{}3vbl&>Az-#Ad95~-i&rd?4K-MUxTH2&ICiB z?a^-R3TI>1ety0^I6-J%_v(UyNeLH{pdI5OLN*K_52b>7Z7@8Ihe7Ia6-pV+>3rtv3Gz+u@jx;GN#+< zacLd9*tu?uo|I}DDWmx|hF)G~$VR9~N@n<*XZ$)wA-`Ud9k5dW#-NjsowTnku5P>d zM*wV!h{MfO!5cZ>Yka589uP!cD%iGQHVe;2o5#9kFRX`#hcjFF+ zr%TP{ePdG`+t5knWhri%3&vG$1^(qdR$Ewo>z1r~lI~JLH8G)UjPp@adCFq;g7I=Z z(m-VXFOHvG9l3=yoMw?6Jo3uw!}=Wz&w5&H*1~$EESMy&mExtHgezv3X@C)M%KJW0 z#7S>#Nnc_}FaV=(7pvWYgK>gaWasLvY+#njcUp(R5|q3#zy)k)pC9VHv0^E(POY=V zg}xNHLd`g)!;rrIV5>JlXPmqof|lKR;&lveiyC8~`R38JzD!?V;NX|&Z<;ejza4a# zIoCI^4NdBpcyqOrkkzleJ1-~51(&2UG?xp4NpmPyznpo5;tth7IH_a$U&G4I z)$1`rUP9}DlOK9!8D|w;b2sMm3E2bj+hD|=>=+zx5BXzKz()NWoyFp7fu=DdM5-DMw#&Y3c>$d@+yUdbAi5^2E`UB(!)u^K((?B(tr zNt-L#d+Vo1a5#3rTTFYIz7z2Um%T(n>5i85W_=$+bM7l+t=le0sprgwTL-Mxm%TN%+udoRX}EdSa)`N)Vr6m?A!|Ug zKxdisetC`Nn=NK{Ad&1M@*#!{>3e3MP*tpv@KKJKiA$IALocXq{rcEn-FnPmNvS9a zouM(-*=%W+lY-;#Atde3&PIc6aj?xZ*Fk+Z1zRjtmt-Ifwj&!X-K#B4M*g}>i^}OL zJ%TGP^4=kD2LxllK9_8_nM{E-%(>mVwnUQh085tbpHLu2JhQ15RZbIf4}~FkWCYLJ zMiR27BnyVcI*A0`469KbFfhu3*CiTUaa>3wdQP2jXaJ^wXMbL$l)|M!v7?lFMtQSd%vVUFOj=tK%yk=SJpS)Ok!PiNkL6}K9 zL#Pu?BJjKGdu#<)Y@Y=&MR-hi*`t2@41=sWNi1`6H|U`Ca;8d*cVhI{;vDqcDS@j* z#$1mQR+~opnXj&lO6+W1!gA?Vqyw+(B=AH$SnLf?Dt8&v8!4y{>sw!r@=M?!ZGjho zNG`?r3|+qL^T@v}eId9xhe*hFpn@NiPR%;e!rC4ZVG}up~o~4olVf~aRU)(#G2TiBH;-Fg8nr4jwBjAmh)@q zt+OqgY(;8%U|5nF*=U^=rK0iPA9@cGuEtV=SJiV%(qaKkG}uD0u3!PW7AKYp$cs`1 zzPZ`vI$PjW(f{kb{oftIRR{$cP#&-jdB$ahlhvlot*g0u34WBoDmJg@)0K!b=#xjzRKs0`k6f<|^|86zWN6$_45fI}IY zSBt<|+gIQ7ekO2JvrnfYllUFU-tgA@tzAOD4n=;tkaGDNVM0>MPXPK1n(D|CK0qV( zq5hK&Q`cEL**QG5fo(r#xQONhA7aFI6r*XlWQwXpd#qWXb{(mYBp{CTNKT|56xsww znYnMv!O$K(cbL8!a|%i+wTjayj-9A!v^gwd9qsJ7(F;+|sY4M$Nl1cJPS^B&S5HL> zvP(*Yd1rui4&&zHSEeVPYq!Srb0F)-=P)C&^M+a;hrRy@cN1jao)o&X07nM*qWm0d=VS;xm z`Q)PX99bNh2Z3~0kud=rrG#0mQr7t-%H(21Cus~O=Na?4bCloJU0Ym zI0O=(aQNc;^FVBqm~GiRO5?v=thE-~|APHuvosr9i}`4OaTGzRgrI~r zH|cR?wsi9BM^qK3ShbKHsU8O+Y0nK&Bx~U4URoNt{DsTvOb1^74Y7Vc;8uWdK;eT? zgCE3N#`0%}d)P`mhcP?NEu&RzZB=guHp0UPZvhTTZ5Fkrz229wV{gIRJWDxM?6+Q7 z+9VMNA z3EI1AxV0u%n!@j!>FMchRUyprwlf8->ub{t>_y9Of-4F!gj^3(8T0Lu;4oPt`XI|u zDvsyKP7@6Vn(Qm6J`O|)815Ig7gI-Ww#Fx^k#JpO;D%8+Su$w~K))*vj6!Rr z;3a#J&M|@Y-g?v0ltpg0fzb^y*k{nYJx*y423>J@!7J#S%Fwx9eNm9j3;d>v*%2R< z>$~rH*@LxZMU#&|oe`^zB&^#A*>EoG$VN-dqlS%%NapfWM-nQ?M#+Nf{)LIYqyXFc zH+`0%JD_~~1?!J`$MQrt8-aIy^F=^K3fei3dJs{;W%1_$Zy_p6rT5&|k2q9mH-pW*3xh}pRDDPvIP6_jCiEMc8XGIzj~`1G-`>m|xY zXb?B1HiO~xsE6lv(xuSmuHIHZpSj$!*js$xrDrzgy>WQo`r02m2t|tZ5TtUKN!(JN zv0&}}DQgcjPHH=2TTc#s?nu^a6mLE)O^{jS#YkKjYff-1J8th6C>$MtYPplt?(;rq z33MOQ_Q({SK>f>otMl`YM7lBJ85{LeQstF&AR%_o+4ipRX}kNL#q?n&a#(hjvh Yb?2rFTwD>5EYM9wjqABrE&lrd07ic4zW@LL literal 0 HcmV?d00001 diff --git a/docs/assets/kwok-toleration-taint.png b/docs/assets/kwok-toleration-taint.png new file mode 100644 index 0000000000000000000000000000000000000000..183c7216530e32f48db4162e3083d1c93df2ef28 GIT binary patch literal 10541 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 dXnS(`IsKc+pDPYF!2gAT