From d41b40281b39afa5c6d3dc4031865cc46e6a20cc Mon Sep 17 00:00:00 2001 From: Helin Wang Date: Thu, 13 Apr 2017 13:44:39 -0700 Subject: [PATCH] fix according to comments --- doc/design/dist/README.md | 19 +++++++++---------- doc/design/dist/src/arch.graffle | Bin 3834 -> 0 bytes doc/design/dist/src/arch.png | Bin 52097 -> 0 bytes 3 files changed, 9 insertions(+), 10 deletions(-) delete mode 100644 doc/design/dist/src/arch.graffle delete mode 100644 doc/design/dist/src/arch.png diff --git a/doc/design/dist/README.md b/doc/design/dist/README.md index 321398ce160..8f5bc981251 100644 --- a/doc/design/dist/README.md +++ b/doc/design/dist/README.md @@ -2,25 +2,24 @@ ## Objective -We want Paddle to support training on the general-purpose cluster. The cluster runs Paddle, the web server (e.g., Nginx), the log collector (e.g., fluentd), the distributed queue service (e.g., Kafka), the log joiner and other data processors written using Storm, Spark, and Hadoop MapReduce on the same cluster. As illustrated in the following graph: +In [this slides](https://www.slideshare.net/cxwangyi/paddlepaddle-a-complete-solution-for-businesses), we explained that we'd like PaddlePaddle running on general-purpose clusters like those managed by Kubernetes, so to address demands for AI from both Internet and non-Internet industries. - +This poses technical challenges to PaddlePaddle: -This poses new challenges for Paddle, +1. Support fault-recovery. +1. Support both offline and online training. +1. [Serverless computing](https://en.wikipedia.org/wiki/Serverless_computing) of distributed training. -- Paddle need to be fault tolerant. -- Input training data can be online data from real time logs or batch data from distributed file system. -- User needs a simple way to train model on Paddle cloud. Complexities such as job scheduling should be hidden from user. ## Training Job A training job will be created once user asks Paddle cloud to train a model. The training job is made up of different processes that collaboratively consume data and produce a trained model. There are three kinds of processes: -- Master process -- Trainer process -- Parameter server process +1. the *master process*, which dispatches tasks to +1. one or more *trainer processes*, which run distributed training and synchronize gradients/models via +1. one or more *parameter server processes*, where each holds a shard of the global model. -One training job will only have one master process, typically multiple trainer processes and parameter server processes. Their relation is illustrated in the following graph: +Their relation is illustrated in the following graph: diff --git a/doc/design/dist/src/arch.graffle b/doc/design/dist/src/arch.graffle deleted file mode 100644 index f3a0693d51a0e05371877ce0b5aeabc66287a072..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3834 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 diff --git a/doc/design/dist/src/arch.png b/doc/design/dist/src/arch.png deleted file mode 100644 index 30b5c34df2abd052ee9be7d8edd4a4dd111e501c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52097 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ξ-}&N45_j~wIeL>!$irImRQ43E;Q!&L1T zRM*r*X&mPa&w7iZEWb1wBqbQN?Pq)-34pIKQ{AR%w|N&~&e}p@tPn&vxzM*yBWwgx zyXJm=X@a#r(PU2Sh*ba9sf;nL=%@I`!)yfp#_=(MFrsJ8Y%+C5sFr=mINWGXw(?pEiSxm z_c-_zLx+@avV48kO{5rt>G45#4-%bFM)N#1@e5bY&t1}UwI09LC-R9^Y&Rl{6+DOd z6cbW~1oJ7Pe>%6gm-*e>_!0?=T#XsR;wSiG^@W8nV`_oswVH$;{Zo7&SBclU6M_4y z3)?bzC$l_D6Gcio{8DcV(u-0h-lU_csVr;n3FqsD1Cl!MJ{jtp2G$GOK1eB2bwAxv z*3vyMQ|MB7-Q`?j1+e87JockduI}E+7r2wljs1bM^EkVVY~)zRfj3jGt|qVv<`8Vz&!qXGZX0GJXRLVcp;j2A z_5+Wikd2%PGn+8uMPBlv#>b?I8seg`{^~OvS-{OQ0@HV@LbEa>kJcHJj{FMq@f9JO zn5kS@ePIeieIc(rd~rmtq*Z;BP~8*nwWh2(f1HC6AN_+6T~^x4RNJ&|<+j&-*yGeZ zyQIJRrs4P=4=O@EL?pNuTg-x*gl~8*+!p9dc&qfTnYr$*l*K20C=TKEMRLO%d@zuV zdIs?fI;ZY_Ec5d2MNzyrh_e0b5*!>*;yi`jw|ITFHy2=q|787W$X3oCi+-+qZlMHltTFg6C zzSc_j;-(&d?>Z+>cq;Ltf+j!u4zVE_O>MkX$dJVu^>Dd~xVySQ&%2G`vLQL#J18@j zRD30fc&IlY(>@(?I9ClYYD**dc!+OBw6DVYUWCOHi(H5CFDYOmh|d}KA^f83>uguV z3+R#G98}4pEkWRu2gF6e%2vMjj~#O`%>&n|R_$=VsEEZ^c&@}2%CenD)hYKI%A?z( zOwiL~VX6OgR*BKUCrKmCj$q3armNJ^328D<%$D11Z?ndm#h7QR7#=&n?hai~1xx($m8H)Xe9foP5SsrcJ8N}dHjZPiE89q#V*X?uSluz9YBqIfrq1x z@@@5U;G>xLooGUmv10j*d#+ag4E-50(a(hQqC?b}{@TXlSM>O!KNM5)9pd^2HWnwR z%70ATn)of?mja6}MnsrF?2}UAN|TH*f2zi7z?O$573y<0K4wBk2|SM5cyE zv$s%wpc2IDe9zddC;b z9mDoj2_Gr%Fgns|5h)DoRFOTrGQ2L#G4Vn81F}BuUb-;T%)y5N^s(D3noA!P^3ET7 z7<5lt*HM&G^Dd_+<)YiX5#S7i^Z1c#Z=E)I-z-a@6?d!TTRQ&nwB!;jmK6pogM4t?F?y2pDw;MBwi++tuKtC+_t9`M9#+2nu-Mj|Zw&xeVX4yGeh|+=SV?6A&yNTgdJ9 zJxh(xeP{OQr_mZlhEq;C?m9C)8;mtcfsLHxCm}oBrSD<1(kK8kMjl7R$z+h_joyo3 zc`w+il3N^$LnWntf4oal_{E;*2d;)4c9!HEa8JqLGSt)Cp2?ZL6{tZkIS!Xn# zIHGZ2F0S21W%R?I#uw)KIm`2If;Ic8i;5eH3TF>P z9)%ecqgghud*CW1nkTC1(@WRMmALiOzu8YC_@2cvg{8onxKkuhjADpx?+&t>6ga6d z@c^%59XD?}Zz5~=Rm@vFH&=Ypn{oD0`X9Ih;YXql*%e$F9iY(Fr-b50xQA4NW2sF? zQ1(VXY>h&mwfh-|7p`|S9bQcw&iv9bEB`okFZUut7^j}^x*H9$w#eaijOrr8sX!mD zHPJ^__0F-6=T^*o2Rz5Q4I)^2vhFJBN??a=vSB9gOet@9mV0NIZds6+_B+sj-HxG4 zE3Bt?ndOF;(ImlEnti{?!5~T$Z+X;-CZR5hX{zD_ zww$i;+|0R;HrLn%7{hEivCoqZtrfBhESae6)A2jLXL^M zZN3h-RJlQY+#JbWH{LamQ5&ugYz!aX!%8gxw#|*S_2WUXX|-N6wz~<6yo z+O&%aoN(Oe(rKl2Gx>IQRD*oq+`BP)dB^v_jBtW#qHq`C@Vjzn?lEr@KOu%+AMEad1i zasgM=J|-R8DqkLDLK9VGRaK@Z;<7PE`!vdR}$5!*D@=3b6pp$A~DNB-;1Eq?(=H+0>HWGKnJJiEZo zD{c&KlY|y4t4y-19~t8NBCLLaovun*Nf*ogCj+_Ui~$C#3W9exl?)HDX6vX zYZi%95AO$&3Pb3sGzG3Zt_Fp4Z6HbeJHyGUBF0)vVr)d zE$7p)YFlS6QvZs&yDL=4mxle2?uPq+UE^F*{68oYgbSL4f&_s>x>@xBCG(gV;%>fW*1_2TlD{l+E=1<=fk zj(~*}4XDEd4CxF2RGkYZP7^>10c1Hv=5M0j=u5c&{*J>eyk0xgkU#?ZB~U(5f&9_V zx6C=9Op6K9(8*4@K!D+8b~h+szXITq&({SP;GYK|IZ;F<|DOks0ce&4E(1#Kcc0#Q z3?XI!=PG{qdGZztW-BN@1Ja?y(qD2x?X+%CnSBTNv_R$H0(|@+Z_))*H}i&^Txj;H zWV>Yq4SF1yz``me5Ix^aPnCddEr7to5}5CH0dGLyQuhn6f^oS4j5h^Pq(Gq7n0v9} z-iP(F{Yw=nvkHm76qdRM&{y*M%TzS?K~vvMzlr(YAG60NIo!9j9JmUmM_0NjPC(sf z?faT*8}Rni@3aaUVYkrPo#h88qZb0qKi(@OeTNQO?OLk<_E-U^B4iWlFbbTSn*o}g z)&{^CN#N?y2xbXT`0-yH(pVAA{8;IlNt_Q0y169Zjgef)!avM&Wa}Yc`AA@5!@~Gd zOw4P;6Oj8cYI1|R)ixYE*Ysl?q6^`NP_!Cf_70J8^a1#JE5&VY$% zO5b5F_($UPgIN`p3GTfA0h-i-PS+7wdUykfIU0g9@|)@a_C$UGq)#vYVQp zZJ&2OyMUVN`07d!*P|(DU_o+`#~gyz@Igw-gbZ$%ns>)aSQGX`3nZS`Q^iVPb$c#AlQFDFMepV2+%l@}S-4n`W4dh|u(d z{69hRKQ5!l0(2INT`-BD-;a+wf=d3&>#5{cI%R5gk@RCSA%Pww0!&KLLol<_lvW*r z7L35iRt;JG-vMV|0jz{m`ftDwHZ)1avSEaI>;XOHCRp^mKrnabWLyB$(#7+JAxYen z_2zbuTlLLE*9DsWYgrnjxFMa{~uW7*JGjS^0{|8#1B5i{Y zg6H_jfewgaE*c?ZeuWvYYKmX~%fCM%A*5bGQE~XkACvO0FzclaVj$J`et)C?coDp@ zVR#s=?ce;3lx~2kL0UM6=^_Y*1FQ5HOoKQkSo+ux*(Gt|`qABg`l{b8=XR&+!^83y)KB@Tl2#$yoFIE@U>*P+Gzqr3|onNNYp(huOSh88O9P)Okf#+{Bc@`#~8 zS?S#l;-EuGtpATMLO>uj1?m4HA7VVu(uAO;oLElY%XMbzGS@5)4c^?HO$F9A4aT=y3ELYmgx?*$4x_n%!|0N1bq;d}+CS6%|* zLzrayB0daI%AoLl*Zk32AiB&V@Bs`04ZZ(;c-4WI*nkc>r`0-kWv0Rkz!OT!dp$kNaC1QN5J26ZE% zPA@Mw#R`dpBN%!uwpB3xwmb|3QOHf;i$}T%Z5^2HWt+Z zA8=_&@K99_HQMJhY2$?|5F2j-SZfJj$&jM5)5Hz%9DGj(vl!1>``>N2erVSLd=tdL zTd@WJqg6e_lK{EF_eE04c;m>iZirI>SPOdFz(Lgrzz<;Sc{z_JZUw>Q%wD5>I{8T8 zWg2zP$#1}Do`06O6VOL|V^)p3qlZ$7Tci;Y%c5&qmeHwf!{E%TAD6%;ZrlNF#1cN} zEma5f7T*Oe6Zi&KOZf`VfDDx26Vt&KpwiIfZUYTp2M`}uy;gF1L611dA5r)kFmoP0 zcRwMkjJ`|s)79WDQysXSlP{1Lyk0W|qLvfA;onN}1uj;1O&pnAby0dP1ImxVrnCo4 z&;x+JbIo5E@ML)E`|*dXm#{Eq0ilFDnd&lu{st__6_Ba;Z3uARlDPy^q_#z701EkI zIxNW-;EXG_HHTP)XpG84&CCkZ30VsT2@eC&v9}S(q8e-O18n#J5M(BA-3L3#o%I+7 z@p0cbfGg|>Xx(d6dBEOPz1U^O39?*1!i^x6dzO;ZW(w#C_ULBd16sE|gmtu1bhMu# zHh>%fV(94L+(kC^2(rOja|ZLZAwOh&VS0?2_1l`rXj#=sesn&P&ZAs1)$@V&>bj+`tJ201VX#$g zX6PYPGC`MUb?Zd&4A8h#TguB24I9dGGYLY(4osFj1al^GmN=^GWUC@r*y9VBJMekS z$<`xs@UfXiy{*_EzIzGMx}E$AY6&D)5H6ZrWWs(O01knyWNhHzWB2r91ex;Hb*P!f zhHP)tX9m<{FE8CPQwvXm=U3Fgs)F;QMBP2evU2>SKlZ zs%)xz4uPb6k0hg_T=QmDNVYB{Q0CVRckw6&A?Kld_@F_Z)4SSX^)e_QfwH=2t`EHJ z>J{v(>pHPtwdYTOF?7Ab@mD&CLpBafkdXt}{7~Y58r5Y&abpf`THyq^@d27?M>&uT zuX#C~jnCb)O1&$T4F7mkANLVQ6;*S&UUVx%&)PpV=>YGZGW}BvLd~}Co<^H?>RoZ& zHi0C)?!BKFN6%h`AQWJDnzRlt6>Iw22R^oT#*nPKMBkOxd*T)jnhUV>yxR^tW;FvM zZ9d5sKm$QUr61*0Cl81{{{DqGUuBiAf109Gw}C5)uh6_8Ifij`9rPRMyDQWFIH9%e zOVx|I#N8{s=axJ*P0CKDmD^c&F_`kAm!y$WtZ4&pP;c){7mKnvsLKb?dC~lukcp#< zxJ&YrD#;Qlu=wXVcN8XBuOTbmeD|&yqL7zI2b98A#Dr z4g}uf?>_`yE6f+U#5e@L)^x$Jilim6%Cx$7RFi*t_`OKd$S}t*keTT-u=iz*z9k51g}2+$Xf369+k5RCqQ|r(Ft1AcUeK_9Ar>LG-_j zp#tV{f{kTS42htTGKBJPkQN@c78csxL$8GyXLWaoeIC6amiLMACT2riK`ua+jtBQ=Iw z-v5`opXKLo;7C)w9@;&};L?kC^nF!MZPZaQtkh}H(BM-=M%is$A!m{R=x~1ucgYd4@Sm!X6YjFj~9SKci7jlf}P# zZZ$nfUue_mr669-e6bD$$5fn;etBLTRZcFbbr=6&ce9$vAqY&tVew`}>HI+#%=nmb zXm~^>j5-$g)?gvL`3JG>n27dl@xq5l_FS}PnS#0akTy;SV{ zXv>uP7}eg)kk4qb>lUI{L1nmJuUI<(f2SS*b!(%bBLN`|7KB8Vri9wk749i=dd(f)8g#WvOR zKJWeH0hfxo0&=lmk5s4ZMKVJ)zrFXkW}LQyAL_7DQJ@gvpb;O1W0i+Dq05Op!@yr6 zZ+LNrJreC?aSApt>I*gR%w73aDP4JkVB;>Iaec)HmZ>F9>UYjJ9m@ycC=pKs4%)nG z>e3s-yTv>Li`T!>=LdosLEzM;oS@|KI{EP0de6_$PSI_Vr;R0;GH2&!DsIVcGom^t zez}3O$U+6)%Z>&Ehh3xS-uk!W&-4yea5qq2V%aJsQ0n7Lu<=rtq>_pSt|khilZ4)4 z4UbGu&WOdSOKgmerHU8saUq?&Qy&*l&?>uGo>uUfA8ye7(^imBT{UW8Z6po74C#YU z34R2XCUf<<;srPWtO^p^)h)~-OJln-H?bQYS+0$Q?BU06+Mp{gcWE$niv$ny9&aQF zJV|ZrUPNafX_IYz?Z=r6xa{>jntb6@^b_opkN zYD|=<4Fl>R*Zhpk(m<*do)ODLIjY~n9#}1^wDUoNvel~b1?gsvd4GQLfVP1$B_OJv zW%efzi7q3_*}Lyp60xM-$MCVc@W}G>p#5;nVa#Q^b-C!cCz)B?bLrb^b-3|7!#m>R z=+}_P&(eP6uf|T8Hnd*t7)t2d?C?3A_hyW`)9|I_uDVwANrWDq#Ta81@psUW&N2vf=w^Ea888`b zSkL-HbCt9T(e^9Z35;Q^BpPq4PR8b5tNvhd!;|ehoZ#IeVFCDhM$%W@D*j1piC+zrhL8_Ba<(wi1NZFU{yvsBPAo*38D0=Pm2kh^ZB%Buoan@BFi?lO1+{>_juuXqA2NTTHBPttz35aLPETO z2QQ8;&^`33G||gG!_Zr)>`0fhqKca2C`+M{b?3GRZA?_4o8`PNrM_yNGONFt?Aga| zRLmz+NZBf=NvENlVP=ti*r`sb3LtgnvltTnRGd?0oyzKiV&meSj7-rE>Y#$LpeCB` zZfpdj3PregbB3vWp9wqa<(1cbo|k3dP4QR7c|~i!V~-rKeToVV@$Nh>%7Wd=b%sP7 zm_Yt?==N>8>o;O9%&s&}yN&pIA(Kv?BC9JTH0it1l2_m70(VMHqkuqEPwVaM&2tuw zp~7B17Q7e7zm6PN6xDFi@y6&L4{se7$BCdW6O1ZPv)7uY>FDbk8-w}drRL;O$QcFBXc0oFzL1+qziu3ek$J*;+-K;hGx5D{-%lql&Zj>37 za60H_Ki#YHHZ}`e;*RR}!XdDaAkr~eY3TlFwUuT_>LxvBe zbZ5ZPb*ip(vn10{CkGqf6wgn*X=4wrKzts&U-+nqbD-I$D;`ND?Dd_3Rcc0D+E%p? zBp)1j5d7dk(_L$t7W|9!j<)9mRVUGDsl|-Ihx?Ol_a~{0PlnpwzJ2zh>ht9Fk6Ly? zywy^pRAgf$jR-!4$?Zrbc1D;TgOT#~GbBdd2&A~FkGRD5y}<+f1HM{2g@G>I^!Y97 zw?vPTgMD_=mZ#mu+4nwQ-k-|HH9Nxi)@(u}o8N+aAFD-Z%ZF4-#p7UA#OtMaFAs0f zv((g2{kHO`J?z^WB-`Rr1GvL!EbcD#z8V|pQ_JWUzUxo%yS!cm54|IvW#R)NSvb>$ z@Z@?OudjmX^9esg`733QmZ6Xyx)=k2`k2_e{nd%$cJa=vYJv%=TSO|6JiDv{(tTXloXFH#U zwrW>k^rYSxEw#l?h#G&!r>1G+VYzYIXdZfp*3R;k9x8&_?f zNCLV2K%M@dw@fSOy&F*?Vtdwv0$;JzV-5)#t{eqRs)~~ti${l0N0uIXVi-qrips2F z%GTGv#QkMmH=XuKu)}AKBPsJ9C#IFL;RAzTC})QE^@w(69-peO-Odt03cMCm9yT(vlkl&~^myuhK!>g`&M+zos3Pjb5 zgvkVahr6&2YuVw|`&i7}U5Ry%&ZqADjCgrK+EwFc6~=LgS)5I*A?Y4`@41EOU~@a} zx6?!fVxDgqM%goGzC?gy$|R*r<`L8~=oGBEwv|beue1t$&V_?E>sQ-SIJ!1{=(2=g z3dZgo`2;?x59oEE>0lUGT*YGN7TeKS9e9nJeyfkcqrz$PI~E&9@uF)wvJfT*Gl4KB zj&D`Wt=qnvOTiJ%0+@V`i}UG^aUE^T)-?F1c--pR;@`nv=BbR2sRvD`cY9VJwBAeg;SAQl|vM7v|jCNz^v2DgyOqhunjPe(u3H*k1(NeNv234~0yHS$nP|s+nXzq&l zvejIgxqhNvI_8IYlp#wE93ypX$iA~I6zFQ1yYNiAQtG@n6(jgKB%0OwIN}~i;%|ngs#Yd!fchg9gJ9sp*QOFs!f7WaGaoD3d z@~YavQKm$-M1+kfIeWQ2e%ufUYaT4vbR4i}z`Y^a#1S3g4ObaNHGOre|7||4n8G1D z-N9cWRtaB;t7&(5;GJ^B`Jglb9sXFZjn{_Xp20|}NYra#hELS<1{6~aQzM;rZ;MZ6 zm%j_8-5)B%6%$R~eVAjs{JBG8bU3)O<7xL=?a*;(w=WZ+@+@cVF5g{am|~YR(pW=N zKp;j^&})X~D>T1-CuPo^MhT*t2&C6EmiJ9JQ&JDhYdOw^n24^(d>g zxvlXCq%u4@M&G65z;&b2ny-wsD{Bdhj3|%mgMFuBZ@iN~(&VVL5@onpq{IpF9wPY{ z&`G38gzrh~uLz&c+nO}|lH0G5h}wE2F;-l+c~nENo#Ke;dEKI!p7$>8d*Vz7yGe`f zwSaZ+E9VnuBR#n2g~ou>8ZzwWv#n|C8i?-Gl}L*}u*wlmmp3~UFOhwJ#;gP$tbD4Z zdUfv+ybh^QtDR`_?QX*mLYIl>7@1miE#HET7*#I9E}h@p{66h9RUrDSC?vL8`bR=| zRp7=q&IzkHUdw+ORchhPJ-Ve;G(?u>)YbW z2{+61i=Tt$lcNV}MZs`~&F?%~YU$GV307A(Cl89=qys>QcOLvQ<`23$#NTMav^kQX zXS-9!{-5|UP+w|v-|{yN2z35KnE7vbVG40|3?fd zm|weUK}MKVmdlK~p7&AMf_{|~DU zLGp)s^a(KN{rg-0F;b~uBN6vB+Rym+clbRLlHj}V=BBd!pL@a-L;Oih<{6bm8yW;@ zP`@d2Y5x<`{&N&gX?e{81m_I@;kcTCOKP8E<%?|Y*=SSx6I7g&_VcNJJqclH5yb$|R%o6D5vq_zuj7)COBm>|rg=@b8f!@eUWV6B7R%#NU`3 zgw{fU52^g?e?oD8PObDkAbR~CndkR^zSH+C@Ol1fbBCK)>xxuCM#ql%Dkv#NzI=HiFmrVtVqr&$e*?^W*>gCMGdp zQDb05Y5Wt;gD_Jtf|j(xk&i04=oCZ`%1f^;?$Zu zK}&r9ws(u!|K9Z1`$Oq~T#sM=Z2Z3-!Cw%R_^G~e>+fqpZdwJ2A^;pB#L! zxxl>lzn_oaHx^0**6=wW&ddLp&7J>#A88emnY@7hk!c&!7Xs4Spr-mi7xV%1A;7zu z*+Kv^QwG$AjekY1lK`NZ_l zs7)IcOZNX7xIc#G0wSnLNjIVW$7{=};I-RHc`pA1YeSHhlfhD6b{lv0Ac1t$VKOcM z*+Ldzy1L169{(ECKc>O-!xI43rN-U13CgSQYpLo! z{Cy`yl5os-PbOO4{yFYR^t=OvdIg}OO7)iM_FsL^z!wb#e1Lsk)fS!Kmof?OhT1_w z%oeEk6;Pi7IN%`=@hQEA&(cQCCRJ075kbp2}NHADvj>gHwO1`Kg=9{K^U%{O4*0LuJyYh1ve z6~JOp+h8S14|#46t|c(2z|fRVLaEhya-``mFMt97eM26QFl83oF5p{&Rz9W7kk|x7 zbWk7b;IlrOn6g1|rCUR|y-ghHMdR_|GTX!M){ZLk0x>jr4% zY3wp|K)dd|j*!adc@MxCGevFj0>LXHH{H4UZ21_VaWO=u@;>;9nhP8QAifD$H&Gu{ zYTuli*b)*F$3fWN&G8kB9ZSkL6a1rQdc%iJ8MULFUOkuNYMG4e;<}e zop+RN!H2PnJV-lBrE+X0znvZRcMJq+hJrNevc(#I{qG>?#S;n|{G>M89Ii?egu+(B z=IuhK&@fz%spNn&c5NhyMb0CUM|1BI%|NgAVTHuj{Z$EB@`BsXfqydOqu|GMXKyV| zwfCUrks9wG!)uZPBAbc3wsRUtS_*Fc86Kk0R=*wr7DwY7v?sLA=RL(8wgG_E;3Ux4 z^93?*NPPpDN?!~EHR4oDb^WIYF6-@l0F@`9sPr_M0DxociE^1$@LM42`wqev=p6e> zbk82>U+uHg7jK$f=@kEw!F-3FWhHs$KX*OAf`b}l5!1zUx3gMMa6Vu2BE>E>wn-G4 zt$hI}_-dxyEz<$oQBlBsMPjm2=Myuk=|kLx0oh^bni;^a&Z;fIx)Z9^7L45n-pX}c z9F7nY@Ad9~6PO}RgEqgkTZ8i~=g-7w+6w85Yg=6R5dfwe3YDDmFF*z9VTfyI=Hr5l^({CobQP6i`Lq*bXW9e8vG-SkvZ+z73^59lO`gsQ@IqnXPhh7K!=M8+K^J3 z8=k{g^og%%SKsB$fjz!;>&xHCfrA_DQZ*mMUOgII=Fz5DWr(p<)_+CXt@eyYt&#Qb zeQA0E3LF!qZlC_KB>voW%{9QNy@>ua`ENoaG=c58U=tHb?tBdFGXAkgqa=l(e#fSC za!Ql#1CvdzX!l>{{NnN8&G!?_-~30eQe*|zJyt3I|FOysrK4S?&!Y>uZwMEJ-rYEC zQv1&f|9KBwnwG7^Zcitm!v)BEFo|I4>ii?xmGAy(%a4);<=O;_L35_a9f7UttdHr7!Ee^FpC{HN6`rjM>{@9{ya7BOk_~zd~`Co+gLI?ST zCYj2wKO0Ewz+gAmKf54ZKVWNhVO)rRe+}98J_eAiTo+XfVEV~-zfll(;N4gK45csy z^-V1Jq@)lDaSt@BwgBGT9qoWokMd}J=y+tF_O4J8!VKv+XveSuL1wABLhTNglaF>-vCSw+)CJ#%&S zE%>wJ6>#qLS2xb5m1HZt7`AD+?A69CO4d;w7?x=;E}$Q{FGf+k8h z0>;N)yICFXMG`7?eUu!0K6Vf6-wD7G{TPXfxWPtlcfN8JIWo72D<`ro5ak^Y#&-dHH~DfK*_} zryk#k0UFBz;I#m^k0wy)NfCUW@=A~9Jm0O8?9q>>H{`we+w#irHW%ppoZs zb)LrJ@$cuF77df-cQPs`YYB3zp1kOaUdo89^?v#DQFL^@l(@ z+5p`9%g4aikOJu?W6}~h`&5uu9{W_Srrq1ukA9k+aa(~NBe8OS6*L*m`t@Nt1T-x725e8TksblpDlqweOkdgod8%Ru zd?^hB0dzon6?F1*_h<10SqbQ!`)tG2yv5^1HACehp(xn*d~I+ZibHI^Ap{SfR0U!v zH~T7__PYA%@L1(9tG%W?ND9NWDdYQaoW;RN6e!jway{miMloxUL?KBpfQ z)`Uu%AA&yStH<(f!;JA`_1o&jLLNc zebaFT=p5;LB61)$oU4bi@Eou;3jqk)4%o1B0bSnsyrCP00a0kg-h#w?^Ig~V50Lws z<;ePx_u6TxD&08-sSv9+Pb7~U|G^0g5DX#IT?H}f90GR5$*W>QKYJo17Y^j zU~iUk(FEEac;*0s?;9XG8rBIL2S0h;+=v0Um-|A|I|Moc1p|{7%XS+Rx7M{Nk9bL# zwH#JZ*a-?L2bw^>X$;JPzN6wjhzirlyo^tSul)+zeL#q6UNDJAf%=-pAk$f75H(E8 zVrYQ&feZ<}y`X-q7Ge#Md-;Y&!!2OU*iCE>%q;5lV~2bPZ?=AR-CRMu#%6T^-riWA zz-c=p%VdopkP2IKmEKw1q;ceBbl_cp;qo5y^%+@2SVc`}-B!_aPTjW++=0sC}7%%{$7gF_LjL|g;-e(wx#~YJ0y3ihcSBW!$=HBp#u@8RUX^^Yqeu-xqb_xmrlgfhF5j(WoNI z`w|~yGh6jQT6aK0=6&9EHo)UR?INcavyU^Z{Ap%#G0_^FLs~(Kvj)5)lAj%vb%T6s zXj(uTlRzN7ZOD+h>*DRpoTh48<&o*@pzD*T4Dh!apE$OgaLLdT6V9hFk*I{l7_ez5 zt+b7Hf~wvjAe~|Rfs8H7F@0t%1x*g~yh zS#zS_3nNAeIvxT48k(thfMYlL3bH`b?baRaIIvl_F(~>Bil$)OYr;je=skl{i)m5B zJ@n4rL(3uet#A{a;a}-bFOhIk31jP{vw9#}qn2Vqx>tM&I6jaHpD@@b3N3Wk(|_nq zvB$Z~i1QuUlaAYRZqQu!*rsqFdHooK8al)*scgGQ_phK9N(Jmr=rQd5obAZ7FBO)0 zE}82bu0YA5B4{9X@algg4mwss_XfMv8&qf zXG{qCrcpU^HbgH7gH8USF<<0yd)3p7q`=MHJNF#aCs(^)31aFfwvN+u^KaWFtB6P# zo{#f!hPES}twofZelS(sMq1vIs_dAETFC}mhlEEE$j&SXEbCE%h{0wjriRcP=2C~I z{xu^_Qae>a_72pZ68zz|C>x4KCV3x6gjF`w$j~7{&%=yWt|L#19E#wL5&Qxp_WR{y zKwnf&?z_Zk{-8zo9d;M_<9+MC(ll+tmx_3_hXq<>3?Z{UHG$FbMz?g86?2tITMH~T z8$FShwgA`qVreSKP?g*D zupxh1#znx zJTO7pzGNrLExqU*@(59)9L2cL_ITmXI0s14U@?Y7tX22Pd-Z%Zbzt{6$1S3M{idaT z)hzC)MR}T`>A!h$kR8d9lP$@7$Iy;9@pnoeTC4_@zmH#e!<#q|ZSk5A7JO*64%I}m z6a;62)ySlDiI-Q#>UcDi9K5k}cL+N^Yqg=RdZgULS1dTFPsu>m zBItGYIF@sHSmz#vUl(euqxG(CZOJ`?Zj}vt?tlsCp8i9rWCYq)BkUyf}B{ER@@_YxNxHEp}CC+0jtbi1k=b zCq{9!)BEe{2zu;T98d6A@ha5~h3OL4V#ARsT-08%!)A(I;~(lT3ZL4lG`>0@99zjUCnBs zc-Ei)kkjat7%IQa-M(4ACd?{rOrX~a$AN{xwhpb>Mk%DOR~^V>Da1${hGcc$IPgUn z7aeUZf9!r2;_F>%=>xyBClWd*%Ix16j0)ElKO1YuydI3ck}>*x-1qk8Dn2!t06h+8 zL5P`vo2Z_0^+xv+w`#}I0&k>^Q?0q4&Q<|RyRg9`qd?-PI2ahv+7tucelgl-1x z^QJ|H50b_vPVm{SNg?OrQK!px)AlmWAEcJ4`l7hcGS+^ka_b=|;d`IhB^+W|+2DQ0 zTbOqzk-`?__pY~cH#Q8vt!2xm_7t5_yGKIHzEuWR5vNY1SS&30t8q0#A@GMfN8onzBR>U8t9T@G=`eQ-<%*?frZ-oUjdv{_>liW&^YI^}GO-q7 z>Mkf}jo0O}>d_b5mwyyAIQAaY;i;a369`K9A0xd%*W=-q8s&v(xex#3CLs zm=qKbjV0$66Gel?L4z%JTh**Gp~a}>^G`>~fef~zId`SNQ=C{Ql=#Q$;{}HlL=@LY z_&d@tO4PnA+&w2!LsouNcKAzozt2-#)pH$F&g%aw3FR$n!M#jZ(-QLdsbp z&r@EU;%oa(tfuval2cxXVTW1B@f#KuHP-!tze@3SzhAUCoP;S8!X)8=qD=-p`8s9& zkHY5eA3i}~V0t)U~XvkUjmsalb6sYtKwpVZ+CO?en z9VorqS|Tl+Y-xwil3e6usn&=TWgrEB-PJNbGMT|hg;epjlJ6k1eduw)G{bYf}k!~5~*2DrJ7TAmL zuPccJ)AC1nrJ&Or>{#b3HllfGdJw+hZE3LTc%wz0+bS2{`*6Z??JJLP*TqWz;Y9vA=p8vaJ#mGY9C>C%JR9 zJiYvS?M2pY<2wUaqX3M#U&q9qCrvpQ!R=!Xk7$HFj&52h{zg zQAIhlBDhniyNGaF)yW(BhpXfGOO9Nb))6F{C3KR78e{6bM7XgfDII*xRO+abDWp=t zr;4Rw>v*T=+NNms&;>lWN^Yb$fj>Mf_|i&vZF^Qm0EZ|SBdm7BNIoy zBP-aw)$@IgSP|(spZxs7mZ8e5eN&f14;7-ez)HFPnPb`j9I^ zTg~Z8x#$!8a6enq>g&(m+m(Qy{8XQXuZbs-fK*<0y8w_9q+wUeAw0wd{Ju9&le9-L z?l+=n23Q4**{*H+;F<9@%6SZL1Q5B_;VzV=@XHr;1gg`n&ybIv?k4mb8KzQUa7{gl zKEkzP!?#>E=(ZYI+7GOQen6ScxYZd7)(-I-!nnXq@UzAWa0`oqr{ z!pG8Ht3Lva8Ajr#y!RVbYZ)mp66u}-Sc{_g@QB9Ocb2q+_<>wyDdH0<1j5LBh2Pg2&S$werEn11x zdQ8s~euvbZsKllSnSP_K5e3bvUtBu3=iIk@;X9yMzeQ|9P0=cRTsQBc&Y-0lEqVM% zjF8?bS1GJvsLYOr<1~6OeFykHZqIbPBr0S8Q6jh3f*KrP)Mj_i@7<=9itcE_=C*RU zVtL!6yl;XWdh?jUB(>KRs#E!^h1`rhXpYiH6NX4))FgSL1apN)c8QEUFk|yXPB$^o zt?j_7?3TFvJW=R0AbDw*enl`)t#PuggQr@>OcPw~ot&gc~)t z&6D!oUS6BT{%+KAYO?|(=D`E5R)#gsbPm^M+nmrd_qT)PIdQp$9vpTru?3IIycQYm zVKE+Lh1NV)H#w=de)AbrRU&;btH>Tul~7z+Q|3NP^!g^F!z6TWiBZ1`!K|I$;7FEA{` z7a09Fa2)_`QRlp_S~H(szJ*E=G7X2}T77LgQ*`|kJ|P;VDyZ=}mvc<)5Thh#r1aYC zcVyZ~wR41sN}-7InrE>OAb5rcCN~t?(q-Z%_WR}lZ=(*GS42dtL#tso9fO7S5 zNU+SF{;co*p5YjN$i1sCcNf(XKl9r$AQ{PrFJ??ODbmZdTi-V5P&hoQJSBE4yObq2 zLojkOe8*FrGCO8Z;LtOK{t1_Oa+PFoR&$$CA z#q*Xp<1P7q@~(Io!q+xUV6h0$#>~t+4&LgT!Xx&Pca^**HI<9FAY6B=uGytj?G@a4 zg?i}^jlBasqQwV@9b!jR=fUP?Hg-VHgNRlqxC=0$&jy#EE6^dRG(04Kl@~)`Q$dge zDD1}Xx@Gh!0|!;PJBR!OWG}V9g<<_J!iL^~C>jFd0sx{gmstfIbXz*b;76IyD4`O{ zGmkqop9dC*O^Jhnw()QoN#xry=UcvNLnDA@fz=$8eWJ7ryUhly-csUA#Ub9RX1f^Z zPlEAk`73{-PJqzsM3Z>Vu+}Je9Nn_w#AJS+RC1yg>13RJJ<8VR(uwtn`^LckYwx?` zsqFv%kCD9&*?aGqj7YX)3(3mf*_jaz$2wLUaPIfEtE66pW6Uf@i`n@7Hd#39YLIR19R3q zWPX&OUb-mx{EZxIf9;?)`+jE%xR2sp!JklK@gt~#zHH5e0NQZ_A3W!M;Kys-nAkJL ziC?I0-x)g4ymfwM{p7If`ZO@jLS9J&Tg_tu(W93x zMW8C-u1*+P^FZ*Gqy`%D%Kq%!UqCbN*MN=G6O>#94KxU*vC;geV7h?4SVM#Yv?e3DSG+}SX)0=5X=MR(a|qjG<{1ZU z=sv*k-}?j$oxZHVRo{Ygvk1+(`@k=IiNxM(0Km7(QD;sgx+zxxdUQu~=UFhw+%7#| zF|63}>;{B=0Jc>cxIs?25Q(=k#dj*;4LSH-XPXT-JH3}Y|SD?lLaB}Tl+yUfy8-zJ3 zZ2@QMcZVcV%{sstdw>$UnDHe=)!9!VBAw+kadFx*gFItS5Af42Q0t0xns=b2W#@d= zvZ!vf0>gdcvRKu0;3Bx#Z3yZ9T7Sn+Y!LF23d$>GI)E}>I_h}kjR7N0qT+3f6kSPYlmHHdg2+7j_sb zchm7Kp25$3uXkvQ0T^;dw!Eog?&j8ajO}s8M_oGGaKBNQ!3=XKi@8QuY7LFPG<vavG>(D%60RWH7oDQQez|Dcz?mColVU$+XaN|&d@?c&LU>AZV-#>6YTsXW*cz^3k z|094`qUx)`cc*8v4hM#1j}ImK9vz8mi38v0s$zY3-WJPSfRP@&CAysK{tmQf(6&356~|$kG&kAqASwyDsQtK77#ss;pE^&ZF+UfB8j*C@J%v( zRB21&uoT8_z8<5Q1-T2iXLB|I-p@`*J_pDIBH=2YH8Ix_F3IBHno0rpY*0D4%5Coy zF2hH4huOPwV~E@6iszu(ta{#oZSpP%>wxJ(6%`yO1|d=dOnz&`OvLpL&cGXY(tqK& z(}o8j0n&0M&v!9#it8D9xXDLT1TnF(NOMb5yb=Mq?CXL+Qh@*cR8TLd=*Kj%opi^= zcex(|M{zZ3Prc;HfKtX^CnF`T1 z#iLMNi=Hg~mx@W)a%$!4nC8P9pvtdmRaJ<@%toAwYo9-n@WT&)t77O2jY-4HWWVJL z3JGH?RNSC!3xE52ZS{JNGB1_woks84)jeDR=H(=j4Zmu)P@#68-7S!jzM79z6?!IS zOglgq`?;;9_cBg21tovq-J0NKjI#eh5NI^Mp z)V%Rlhhc+ab9as+dQr49s$$99$ePLKRo7p``UWRY`3|$+&~OqZYbSCm=fA`?=9#&B zsYg$u6Tdy4CyJEJQcoun7Y;NVqaxEse!_FDwZ1K7N1zRkftV%93Y-Th3VVYVsV`6* z?ZVR*>Edwu^|-QpiK_vYDzbQxM2K&x+?EVWrA=TGI4#KL4eRXT;tTh1uXA(x-eW;*t#6dSti>3SeSd&R9_d^gi9=$Ha~$ z+ngQoQ|-ez!&5Czq~W9Giol*Isu)-1*S|pJ}i*`?wNrU60npFM^fR$6M zZZ6}f>#o!-+7FW^$5XK9B`iOQ<#z*U`Kr{(S7GLHG|tehh2+m(;1w#@KIn1z)MTGT zIE0cSc{)x;55_&rarJqN>6C67HU|P0`W}ABeRO9Hs1f0S+zs0U(g(q+*AMb(6z-hj z_9LCZ3oF`m*C5Lgq^DCL?gDjDJCFL@5})kL**TCO{6~2isbepUS%}6M+?tB9a5?qa_aZ;+J0}h1xV$!nVtX;mQk5cUFZxdNT*pf zpkXcykr!Dcj@+E)7Fop!B2j*^%4Q2Q597L>0I9W7mM`L^7ec6tkxTVI{)M-L0xiXoBN;}?plsi-zTISyE zD=tkOJll(`6$xJ4k`^x&^n`4%`Bxh{%D zCiWYms6(a-?Y?@U%caOcfs2`#L7a|Z#yF*N@<{E$GhIAB%YGdWYj9A)T|!ig&+&uv zs(H){sWfWC88BPqUuUfxeC3QkWXTqMc$F>t#+B1dCSik_%<21!$n;OwEVd<9dAG(& z6c_nu(uwpW)CY&gO;OB@9Ceq;B!hQ-O6uCy-vD_I+AQ@`W@O&3C{owXBr@8n1!P6( zN1Y5|imaD-$3BA-!FSe*Q($XzgR?^_L?kHu(TpjsIPrWPU;Hk5(fs3`cPkT;IquKX zT9WaPmRSLR-Wq$2@EL)&Nx~EBx^lj*qb%_-!vTLX5nt?>vEP5~^&eifOZZ z)=%5uYbQzGvt_w{4uISxmu`TP*;UW%y-w2*e?d_*%)No9?F-x~Nmf4UeIC``G5pPB zefIQ7(%Cs+eWK)(Vmw`f#u_De z8|=ju&M*rMw?*VgcbhGJZ1(G?RU?QxbiAZEN<8I=IoC?@IDAK%7E3_*z#&1feM{7| z`P{Q>H|@4sm%^BNZ$B2yGEy4OY}-irS>O_x3TZ#myFKnhHI5_{Ll_UiNq76*GEbL?BHkRO=xhXQ=lie>h`R~0nE-(Q}$T(nS73knZ1 zkBLblmkehrC{3S!j;G9VBJ<$TPRh%T0Mi(u=r`Z7jofErCv0c-ZR$!%;7>mrtS6Mc z+>`viHhB9+#)V`=!Fq5bPst|_V`Ry+WHM#x8ju3Sms^=xgKF&s%usNY- z9a4R@6646=*1!Iic!;vNMgm` z0@PDN`*NGTzn>y`^M2zb7%S8lfcwLpB#dW`54 zQ9*lwYVH-G?R&0X2Gi)Lr&QhLZuoYPKfXOP$EmdGjLGJ`2rm*J;3D!E;Og0;C(X_^ zS5YJT*dNJrM`$m-!q}HH@zp+NgE?7b{+!;0>{%)kNevS*yb-<*d?Nai2Lk7>gMqNi z_(I$%o!wJU*SS1Ikigj&NrX`Jq9NcWyp(gB2Bpru^4j=<)4X^iRuJZ@Q3;u(s4>rXihQH*ZV8rfWs0-UF%)FZC(DW=QlxC zgvoAKFbi?whfuzVD99DwH?te8=f$^5i4#n{iB!R)i?s)9e0dNky}-a^R=Bm4Pva!- z8SSMqW)@AVaLd=1n{gZEIzxIGuwd{)G&NJ17u#YMzOj93ft<6+Y?H%?G|ToQ!*Z<& zOn72Oiz)w%Dzn`@Il4@t{Qf=btBZ~1`Ce_k-Ba*FA2gtYASJsjuLEEf}a@$}j~2eet%!lPr}j%FNTi>|Lu%cbKN4DxI~eIVsFU% zuub|j>Wxt9gY06D@LOfRr(Ar!lKC@OJ0M9Gf^(1;M>Oh(nWSw6lLC*$ z^Y+<(c#Qa2brNqsQ=DqveP&3PYwMlC4eXdcoo&xI z?*1GO-X2j3aXVr|9Zi@9Uln%&yrpcoVF%ZQaaP2T#eQ@tnOtg}$bh$iYuGScMts@( z92?h#Bu?=Xsuw#nOoP#^9{f=ih7KYrb>pEen8iZhq2izbd;|WJOgAGn3Am(b=~Pvl z)|Y|GR0%o`7pKh&B<2Lsr-=M2FY~`#W{^Zj6}SQU>lxA&RU+J7M*ui;gofiBAYK-1fcFa{?K+Xpt|^ue9AS_ykYj4B?y~FC3ikXA#qEW! zFUj;Y+OAgE6Z}LhlyQMg?EE)@MY3J(PkUOqP1D{yah7Dz74gJkXl9i{ z%TH6+XT?eL5ZxtG!7(XlBN@CMoJfFTm3oEXrhV99ibon^Z`^XrwvH0_!_}Iqhd%^& zL?-NgU-C$&Qr%+Ex6HsVf8Ty^MUP`A?o(#JEQ6+`eP(*Y@WW2)(7HOo+xI2s6mj)< zg3heujZl&&z87NCv^(M5MyMX=@on~y}!|`SluOW2y z6klqtS#CVJQgV109@W0{m=H8)k#IPxSrd!_CE#{Yc_}h#&439+3Huu>fe4t*#s=7 z(zK6b|5MP*Gu8$k!ZO&?Gw&a62An2DUYWMjiT%3-6}0&Wh^YPV1OE37{;l8q&s`LW zwQP28(!=#Kumg&-IpA`6(@rB}``2hJ)+L6B)DKnl2020V-oZ3T6`=CGBKu|P8MK7` zyObGu0>s-)_kVFE|1!Y9k5_cSIMOAY_x^`IUo5i7^6!^|%rv^tu5+Vf*6SbS)PGqR z{x%i@1i`QqV-0!omoWUV9#NNY?VoO13>sDU@O+y8Vcq}|af-h`$gh$A|0xlNKGc>4 zW|-a&_T-J>Q=_#t5+g$juVTj2Lm@2ez$y%WnGGNo6DD)dtEA^-@r3(mX$3f6(EAWgpUd%tNtN@y8<49WPU%VpJRNRmQ3tp}P zEqnXo$jBcbY$4AZ1qDz_v#nnJNRs|GX!c`TH(#9e=2pml!*R z5<#ML0b-H^L^@01%gl#3+Q@130kc97U^AGnR@M5lOhfUK#D+&8`c?lTpoM;F+5wUP zNpJ&6lc{%}11<0Y2&z0xvORJDZoYnUEZ}hTf`LYS9_SE5w-!19@pS;$C^b+LZ~bn7 z?5TfOJImJoRy+HB1E^ccB|xjV>$HQEW_Dmk*w}#%mp~XT4^qGNF8tW*H~@WO{1H)9 z7PSp9)CE}Rw`@BB75pBFa8(CF9}t#Mk}9P453QUH2e&LAEm?XA=wpu|d#7fe4)DW$Ojs80{sB0V9oGwojH5*HEdB^Rg2fM$sz<-2>}UFO z?+HI@pgto(dyCKjs4+lBwqIGgri0l+m3r`^_m?b45${?UXy!lin=Y~8z=Cwjlx#}S z?@$<*D<7rBP8(;ZJ56{AXLWNxX6WG~0OBUg*8oBR^e*A_RZ#5RGT@~~g&R1ldTV%lsEQy+P97hvpd<=2ta)u&`VwDEL}NJ`vahS)}0}b3hoK*q_Wf19WElyLV2Y zRP#s>%=v*X_hBkb3SUzyb`y*#&=Y06x;-?~6Q4BT;8DsG=u+Zk=njczb*zBg*65TJ zJvGkh2=k~4s@IH`UjSTQZp|mHeDu^9%;0vfes0@uh+PGzxf z9++y7_|mU}?AcDhAqKy`sD&exqT8FL%*`=HXXS~U>mU$V7wiTW0)Tik_ev3tIdqIV z_f}OF_ElV(U~IK|+0=fM=&pmrw=s5X)NMSpG)@Q=gISgm7hDCA78iZpA6SddSb^+; zI1m8*2^2`>DC*A(aWDYF`zC$H(B<@tJc;(F6R?RKj;1-Q*L?UjoeU#|*^s6hz4+Bu zVIOnICMG`me_VepD$zLk$7cNt@zL{1pHfi>*%;HrH?#6;1TIeW2Arkc^|4A3{QNDPET7S!f~iM6Z-Mat0gNWV;&Gs#uU&&E+{zgIlikQ6-49Z(9&5B zaD{Z1`QPN1*xWAU^yDi( z+tQtQ0=KA;?H&$B=NzPobM%SZ35?GBRvb2}9pow8dqG6cZ%Akd%LO zl~*XS;4rKt_TIBIIGPOhD5_gGHKteSUsOQ3vU|gX3-ud5%aEn@rNUOt0<{r>Q!cGX zwEgM2e^(MWabwRT={rBi>vt=eX6>5~ALMp8H_|_I8fpV0*7;O90rT%YSc4o$sK8Do z{gO{+g49Bni>w5OFdm#(MbYI_bPcJUS+~_NEERjT-3W3$iIRJU-sbIkLlD~ zpE)uZ=wh~n6ui$Gb9iYE*$*l^buu|&VdeCsBoZ}=Ws-hL&*h#&9QcM5YiL1~Db>4B6qSQheh5g}mNUlG)9GHgDpihvxX!BqNyj@2<6Vbr?_=8mNog0Q!?M)z(J1dD+ zx}~6pw*ce9dbJUeX}DyHi$o{Wj?)f8W;w)4F@7(;nnqVJ-(ntYA$ArrDv@1S@Qp}} z&p|XukYH&NL#e1JLX2Aq0C3+2sM-Xr++xNA3qNf|5=+$hI}pc}dQK;lSlQ0*nbZ5A zJpL@1<+~=6g+P4&dsF&IZ{Z|jvB6*1D<5q2kWCyNhv7EdOM!Qq>E4k~!j~m!?X&M3 zeF}cA0GidJIXdiu_`IK@VA*}TNtK##ym4Wr=@1aVf9cI8Eb=((UOKKVV6eZEYg-WY z@NUBglePosU*cbryt0bZv^F3fqc-!5wo#CqK*JrR4~t?ZIIx--SndwHi6F%<=X~r* z>d8=sZ;Q&M1&!z<9>-D6MBifxA-lK=h}XWZ2W2f9qBuf6l$j}lmoJhAr_WA5Cpe^2 zA^(yhs%xBY0y|{CL87#e>k0V!*y|q*h?kk`)>7;@$Y<{AHBE;Ar<)mwE^pcNn_L-} zYeXxj0R%h6dj0H1%n*(9>LcDbZDs=+KYBU1od&hX0wv{K*uztua9** zLnq!^dUeBWW`8pFT_x7>oFut9x;L7ysYXLe_m(CsB}Q3kh3L$Rn^P}O=M$Ve^yQ4Y z{sK5@#FMT;aU|g|7%``|x{4{SPT!RTro5D4Lzx!supe|8D>+E9c(r?MAN<&6$fWB)4cvi`QdeP~ga zh?|K<7Lo!P$o89h#SqpJZFUxoPRp46nsh>p>yA{|C60TwiH@I&JN@yhR-*Ye-kVx1 z0CsDH6e~hWVsEc1VvKk^IfKV*sOf(2J`U2FD})2%|3fR?7!5wBt0A z(O&m&@wA&MHSrys7jUQ69IQHAkmd@Kz;fL3jST_u6~_0Rab(!-OY~FsfN8uhEpbnp z?GA3iS>t)77i~(edY9Ia?Tw0BH_PZlqlxOBRzWs_miu>X9&`LHv&{{Y{JQ>J&H{#% zVXrqvGDwWaW3Ql?E8guLZ-kP6Tdy04z_FE%ktiQ3mqLUy>VaidhzC<>5xJCHL+qCW zHinKSEsjv!oJV6v46?ZR!|JdpZM%;Ar;UF+mF0Q^wz71r%B6Q|F1Zs=4hc zJhNcr8`&cUIfpjOTY(9v^sVn{NwCi$W1Pb`Vn+;jQ8^_=_p3Ct<3_}E)2}R)b@&UN zCgCBo({%ctv>un$cg(6MQ_hk}va|UPxo>Pn`s7N@RY9}!7$>9RX^xo845I|&JpAc! zlw_%195rK7o+h0cc$9k4#8WDn!)K zp{bIG(HODL(X(Zlt7cfE%N@3vHRwX+mxwc*bTz|%xaNd+k!ZVid(HOb`xK)49U9k! z36~*kGoK;MV{s9Q>dfCoM9D>;%B8->CUGcUhB>{!!}OZH>YKz{ciQh1MY!p(Gg6Bd zs4n-%`y3o%zNFpxV!rEwY=`)6Fs(MbyPDPNA{Ug(qkTQdkabR>7kQTUEIdj)lz`6i z>~$@nvZ@gtJ9ljn2K!`*Tkz}ei_}eUo_AuC`jj(PJB1oW3)R)g-V@BTBXhpiM2e1c z7*9TmwSpPy8st_MR21kK;H0vro|h7!(TIyxT*nozZs8&pD#yRZ+<(tk!k%IbW;Rlj zB!P*P%jBhHL)Jk%80KL>_cqazU^5ym1$49yz@FgBcjxB6!-vRF@ ze`@`R`LDo3?aGsw1^1&u3W|+~fBM*ixTjI<>3vQ1l1hsw?&a4u`xzCpD{o#_2-J-E zi~q4eY8MBrwSSJ}`u_W@fq>1j)z^5Yk&&zfo|~;G#}nD{2>F;6vrPRQ7H;MJ^ov;&swY0y#C<15R{$rH&Qcc}yDz|^OBqQ% z#}ze+2rS!3_stqdNX?%tv8VgwP=S-6-e3ah<`<*43nX9&8HkSiwjI=+JdTJ6^H0R+E+8l8^+!~tTbKdo0k{YfT50Gkrn=vBPvHUASW`3r+O zR|GtNP{0xtPS&AJWrrnWJFLoQNEoV8!~LPM01^kB8BO01Ke&KyAp7I=2r0bLb -- GitLab