From 8ca656b9012cae8b8c244b70a08327db2c2573c3 Mon Sep 17 00:00:00 2001 From: bktan8 Date: Thu, 21 Nov 2019 15:39:14 -0800 Subject: [PATCH] iPXE updated to use clr-installer. (#932) ister and icis deprecated. See also: https://github.com/clearlinux/clr-bundles/issues/171 Signed-off-by: Bun K Tan --- source/_figures/ipxe/ipxe-install-1.png | Bin 0 -> 48404 bytes source/_figures/ipxe/ipxe-install-2.png | Bin 0 -> 44134 bytes source/get-started/index.rst | 1 + source/get-started/ipxe-install.rst | 580 ++++++++++++++++++ source/guides/clear/ister.rst | 1 - source/guides/maintenance/bulk-provision.rst | 172 ------ source/guides/maintenance/deploy-at-scale.rst | 4 +- .../figures/bulk-provision-flow.png | Bin 36437 -> 0 bytes .../network/figures/network-boot-flow.png | Bin 30580 -> 0 bytes .../network/figures/network-boot-setup.png | Bin 13168 -> 0 bytes source/guides/network/ipxe-install.rst | 342 ----------- 11 files changed, 583 insertions(+), 517 deletions(-) create mode 100644 source/_figures/ipxe/ipxe-install-1.png create mode 100644 source/_figures/ipxe/ipxe-install-2.png create mode 100644 source/get-started/ipxe-install.rst delete mode 100644 source/guides/maintenance/bulk-provision.rst delete mode 100644 source/guides/maintenance/figures/bulk-provision-flow.png delete mode 100644 source/guides/network/figures/network-boot-flow.png delete mode 100644 source/guides/network/figures/network-boot-setup.png delete mode 100644 source/guides/network/ipxe-install.rst diff --git a/source/_figures/ipxe/ipxe-install-1.png b/source/_figures/ipxe/ipxe-install-1.png new file mode 100644 index 0000000000000000000000000000000000000000..52bab4b1aa39b0e62be6e3cbee676176feccc8d9 GIT binary patch literal 48404 zcmeFZWmHyu^d?Lx-6i3F`cbYAThKPUsT@ofBas|8Lkaa6^YinB_x_$x ze=mLlXrDK-^|nF(a|Z$R9qv8ee@!5gJ>fz1QSyymaq^>4SHa0qUY z|1A_un*Xh68*(Ao->o3MZXDsih5o;d|96o8cTZdh0{naMP|>`^<}S^At?g#Utxr|( z(4n@W!slv2BJL_{b@?RU?Z)cjiDs#7e@m6Xk1V{#!BA)xVDkxkd(`eyY7EqR7e9-- zcnA~TbvN>P8M-+NDc2h#UoDDO@4uTb5H)nvC!nI7=M=20405!8vFUHAH85Q&r_a{+ zzScW2RtR`ERlA;VR(Sg*S3bZKDq0oHXwc(R;+^iyb8&X8XYG5$LV32DS&c8nqn9<> zlyUUp-o(_@4@VZPQg?Q0l=$GQ4IV~eoNQ^U1T-{LwHs8Vuc|PwqSDXTlFaDx^Ybk~ zLC!<<*O7W+X31v*nRRqhN)?>c&`2f@I2I7j#!T*45j*wwEP@aFP>nC(oHO8@U4?lg0&eLjP(1ys-lK&I{ z<4;R8D zugVDt#*yo?w@D86eUGpY7{fL;&#!YcAYR*9;1eToaP?5XXvWpqVeARxQ_o-nGlzLh z3bOvFWgw~7DfY0g3!;SDo!b7Aj9>@Rfaa~3p=oy}&wAZKms^6%OfFq~Y)WM10^WGK z;E)lUzUeLb*K0q7W?Gw(qdf7H7lr#kmGWjkKLxWjg0`;<8z++(9!YFk9Kx^q9)akE z{o9(5Ci6Q^`$kAL=qhYoG7(YTcfnRLO;pOE*29DZLx)fa672*hA-Xxb?97nP=lc=k zIE0uk(CQsj1WUnM2jbodRUgRhRN+)0obYj9m51le#hWXYY$pTa%l%ALGZYP!b65bn0SZt%)@Mz_vPnmyG**FF8lYiAXSRr7J7{y zY(Btca`q{u-lbUX$2@dnlmT}_xt@Y!%)Jh}F;NubZsw((O(*pXoy+qRhp<5BfaasV zp=5n@D{s53Re?}Ky9{trr(qF)2JBAa7kWaa=Hn)Bm=vaKj7UkTH-UHPq?%!64AA0@ zjIj;xj_aHG)}3r6r|*qgE*9zT*q{A&8Oj+j{omdFr}$rmp8^>o6f%(WAe4cnA_^fs zY2NP|Hl=Sb884v=U{vaWya}l0n zL(Mov(mAEKq;~x`<7O^VQOq{#GbHL(0NYe$PcL$oel^I{kbrkl0bSn;x3~+L9=7%4ea(RvYvfg2&DQVzY%@WKU z^z{*4xF9yJjcnI}M3Faohx?HQ7cfe|NYNNzhcVfO^Mvy%4>eh(_ufj)-;OoEow(ZW zO8iVrOH7IRG-e3MWlm{YZw*=_|NTO1l|(lJN#7)J9Il>Izik197sQ0(qp?|#-9q!J zamf6;q?Ck+)9b6Q*CtqV-f6k89*eQ+T1LWn=4cEFsh` zMG^CaXMPiGC*t?+DDY$Zw^L>DVHONy(`#4h*SD0O+9E!s~g)ywY&cp^FwBBAWyh~8&5h>Rfqfv2a z^5=Q!xxiMRsgzb$HZ*qLxj*`(lR+r8AKg8Y_l45nP`}sPWM7GXvfN2{h@kQ9>ckgh z9dMVK`LfLqB9Ru@^5U;hCy>jlFZNrP?fdwcbSoIt2RB z;8k(9&O$aymvKFWC#i&+chbmyk{WNpz0z6P;nF=6kMXZo#G^`73HSGH4pKak86|6k7j>8QzybZueWAR;WlQ8WdGu#Gnd@B`($#BFW$RG@U*(%jo7q3 zu2iP9yRVe2fC;`mY=o2hT+VYK*2N4i0L7k;qaJ)8_@?um$(LZKh43aVn_d$I9*W!lhvGCQBFKFdy)O;UK#tzA3n3CmUe7T zJM8X5%bPG7pQ!ozpwO7S!JSPfR?3K>y)#9&vEUG_%a~RgZiFzjo>ehc(?w{!-ka2t zwme;l;D4^QKvCkLGw#k2v^VK&PDRD;327`os-rY%eR9E!RM_|_qCS1tl_R>^l$?<8 zbnK8sHoDM5JM&eux$?=6&zv{YO<@Q*)Bfgpikw$nIE1*wbVM8}frnFm)357lbZE7v z7cmr7F2emUFy}``p>Tf-S!S#ly5rEXZVPU%C9qJ}Zz8I(x*u_%8W|NC8{pAV2OsRY z+j^id>I9xKnT>iQP8B^oU-jK)0tnvJLDWJxjgs`bZCDXyrUk~u9h zDsFD>%lj4hipt8?v__NB_9?kV#rAW@wSpZs?n+N#{NS*`(E^;ba8|Qx1e%y5m#=1Z zxh0K%@L{(vKLZoHGDH1s@PZkR5_^1ni<3jekGoOQvr3HPJ*O^))1Au@Q>t?F1fhes z+ggo{%`pKuPJngY+8bwjyZvY|=;-#x?X=@_4 zJ+CI?$pVTYIb`*fxU!-`>(N!?7~E1&SI_#p;2n~(G0OF7IRi5Cdd79Kf!*LX3;P_V zH{65nVPtCVB6FzVZLRP_aHltO5LbfAJoBP#g|o!Za#l$MvtN@eIjY@;jZgZ})P#Sd zB2sUDh7ar@!wV3tPcyD0kIJn??C9#^!UiU?s^@`F0CAoad z>6Ge9Bg@1C@Gh+z;u$ErQuDI>vL?F-a#p5s= ziY``U2>gL3!<#QEeQ4-Hg4BiT)c@-AU;Vxn;pZkETxIm9hFQ+&=(C~TLfTPK@!a1yVc4Bd96l<4mxfZSZC>b!uBXo|E zHaznZTCR66idKXs$51 zS*+*CwXJ)}`l@fX95uun$L5>nf7J0s&vw`ic^UoHC#Dl2VaxIEL>CgNrQ#{(BUoq+ za@JAXjQUP_@XBaCiGHq@3!!uc`)Fo~6x)tFWR+Y}r@mN-SIcf2gerE#_)@~z7BoY* z_hmP*^5C2k-CUs<$<2Is-~Qdi96UX4y~$`Ur|w6~WJ~T@qodpY`T!D96W2?<5uHpd z=1GGSeaJ(2w|zZJOCxl0AH7=>i4&}``0rgMiLR!J)r$yGJDx}q6ABwYWM+X$-Te&E z+5K$q4^tS~)xBg}fCK)3;vY=uF}aA$Vx4*n;Nj7^>gdVdOx5I`(RGVdsgwtm4>c-g zR5V~2lG#5LX3v~Q-tj)%3M1vR^Q2_9A>c}{HgL_apIU2HVW7U>p`wc+9-3G2HqjqU z-D;u_8LaI^6Y9wjVas;Mom?K)SO$F6Yls2LiJ7caAIo#n68ydp!Q;$w=Q!Dqhj-m> zQKhZwmFbkY4ck8L-@%DS1 z@obNVQl#_+4;xD|hEmR};GjW!`7adbvpLNq#a6d}-I>Y$q!!0nMb2EK%N`mYJQbW$ zC^%u3OXVl(tB+@eBN_)^`k9H^%EMk&S4@Ns-(Jj6SxiV?%s@nJW?cB&?gG070rOIy zk3s^Hirq` zQ3jzB2~Qa~X4`Zw2uWmSXAa{j^zhV532ZZXj>o1-#j@^%NEFwN@-SWz1+R`0h){j_ z_ctt%H=oYGLUN~W%J)4$2l+Qzfz62Y#CG?$Hb>PQ=7t{@&Dop;o4Qj~WQ><*tRrKg zuG>kAX)#dmJ(L?2zQBdh;VkFOT1jPOjHl2609#V+UeDjfjA6U8aEgBNV&?F2Yik~# zOd8u>JwR6YBR^i~&-4;bVSvL)Cqe03s3hF;iyHv8a2bGk+W8!P$x*ZLQ>?5|_IIF>0HKWgNrRmy=U_Wx zxZ%gFF}hsw7u&c&*_VXK%S}fjRwC?Vv05urpB_cVr_rTy6o)tV-aowa5cJH#qspC- z>NX0fe*%3!yhOgW`pETWqAx36^fy zLWrrms=;IIWwi~`jo4z%*Iu-PRU$HAFaD7H)31nu{}X8&@7$J(h5qrP{Bb0C=E8N) z+6PDm+-LKl@nVWz=g<&qnsg^zH|RvxcPLy-u)}|3F=(zX&06_ytKx2 zg*LTrwnS==hy)lLYQ50-_c`4`1osjZxhgayR$JJJJzXa(##Sh96zt9$s1@09(Q;h1 zTIe<)1RL9!+vWyUOv=e&N;0us%*LiTU7DfAvXTaddfMlsy?2?Wd36b-K_F@Zx(}gn zv@XoNowjs4ThwCu)+-`nV)s3FkD*6A+$0S}^@As6b=VxDCUwt9U>(EOm^|2;`O*s& z_?1zJ*ea`4^(CSXU=n~RwVlV<|6U{y#Lq@JIBGS@#OWxON{+8Vv-v`-90|BfD3l&D z-vt*uw7%IkQvEbff)OO&Eh@{x4a}S6El>#SoD|6&c^N>@8(Kb?V59RlokRADcH-#q zySvRfQZ{;0n*$h2G*+u=^52V(X={(Ww}BFsf4G<*G`@<68i{Jb*W<=bZm{~b{IMJ} z*x%SqF=5hznek9v*w?n^$dK6&%&Q&4!8aT*;R8F9TPM zS;<@)4U?MtYVkZ`8<{yTrzfRCuJk{MRVf&Pto*QgHqCBwRw z*$SJ$iR_tA0yl2z=g8lIs=p^D#2ilKy1R>*K?8?UCv3L4&{N^ClyHLr2-xw4ElfIV z+D`!d+=>0F>4kup)RRX+14U*RAyAh|>ivxNsMUTMtOIaKF`GZRO;WSY$qC}`m?C`u z=`sh?*)G@~8H+gqx(V6~>seMADX;u*Jkfhn1dfKw1W#>e{}MyEP;;|F$NxW3^rhID zbL-c{w^ypD0icQ+YV*|##e@B%qT_ME0P+e4^tZkDYJwnAyRv+~zis+CU?l+(+-6Jt zGf5O0Eu>~gJRnrrf&2g`Xjk`2PEg+Pm&{?!Eq((bIDi5{Jnpx2jD7EdcG~bFleBjDjdN&ZER>t*=s#I9) z^$4Cp8@)@IU$M{Z8nkJ^+%+o$kL95h3ZOF2>tt*j)`B(t{+E>*qDQtDE;1>0>Z{+j}Sq zuPm*VvIBsDDSMLL+YsZ=UF5{CM)a7|Z6);Xlom94)g>rquV}5+3Z>UOnejP6jD}V5 zL~@m{7W?>r|6)u6Fin8DUuR)N z|KoRF`@{l$ECN1h{vA}P%>C` zQNmH?xZEDX6;*p8vBOBqLruk4fQFK)m599lFWCLL3 zUWLO8MG%mMG(YRR9-rA9bLDE%alvL~5GP&9QcMJ_Z0OgWpb@fe4TT z3-500ew<0Rq4>&4wh(GI@)ZvEPpjrEkT)h>6+sr_f5;&~0=`E968#c9c>I))*jnlO z6q*HA(5b0XL#T5pRa~ePNS989{#RwZ)(F$djrfAQcQigZglef1C&)8FCV)pidFc?3Yj_t<0yt@=nq7+Q#tIe^HyXyLHCb2#Iq% z_!+EP=Eq-ICSV8fCdC*#66t~z9u!Mv{9I+%pX#0X0w{`hz9(;vWgwer6BRtoX(Ef4l`hN5k{ zBJ5jd6F$uK#(19pTLBiZf>SHBoYDDpy-z1WR^knl0&J_UHgn}NcjwzOoO@X^ymwvs zS&V->q#M4f;}5=4oupdbR(eu5s!lGIJO+#LqN1YpPCtCk^Sism(371=~Qlx z(k$!0TKKQ)iRbWxBI`|Hhk)S7p|aWG7;CM@)LgUvO5>Dph|@)XKwu!1!`5WBMBJB5 zk*mGQ-QwC6YpQ(7f2S${SQS^VQJh^KdJGH&mE5r8`{djwOJCed>F=xq)#6nEG+4}M)ttpBF z%NmXLDGn=6u$XjP4(jUavn3k6VfbNwJydysa|UFUzyH->#hoqJUHpPO`n0Z@VzT7o zR0%MrajnX=`cLhLrZO-b1CGj@!1y?9BWLOQ1_r5iGb(De=1=Q>_}7Q?7h{5m%kB?H zsAQ6P>h+9Y@U`5oV)EA>PFhdKGCD=^-Sp{NpYIQ*rltxM3Uz;6vY)pL#WQ{#INu&D z{}4PBh)(?hyQ8y{Tq=>-{!lr}$i1;3y3xqUXw~gzxy=jQqHf(+Dv31&m*YG?H}(Fg zcJ;9PuTP?Ahqydv)q3mjz)KGox{7%;JTUV7wLSGR_z)na&azv=k(5|;C5zPSQBvkW zm2pV{7frJ2rD%Xuq%| z@euu&=cf>NlsQhHI^cLFKL*hKkxy}wSDk??oJ5jV3Pi}&A4#rVoYp|R(3tMS<#V|< zjV_ZOuQHnCd%pFahM}|ilI(ik-?Q*R0S@cKS^#jRw z{^dr8Oi%}?9A8S!41phor7a85QZh0!;^MjrKZv$2kCzv>xE}50@*}#8%L8o>=aBIO z?DGG=kDm5XDY>q|YApR@k<``^c>BBY@$u_N#;?}8qJ5=GrFbIHBf(S(1;EODKf_^Y z@xDA>ycOjwR;?BY?v6NKZoD~|9i8A8?pYwnH5g7*Y~fkYktG(f3aqQbt}S?I=X#4OI!pJ@UZ^m+~#YY_`O&>qhR>8(_?%`E#1U`mkHu}SKhHUgJW!@s=3CSzJh3s`f zLe_o1_t6uIn*J`*TFa=VoAi$l|NQ;csC>0FQ9Ao-Qb^D8o_e!N1hvCSl4Q2k^v74F zzKLv!Gh?LwcE!2El7<0B_PIUh0m|I)Pv3P9-FSe*V)!i0z7CQ3LwV$8#l_;+SO!|D zS}mOfp-+0En*9F27vQ+qq=u)>HU0pP=+9soO+lGH_Qm|moZlR!Npi04tRx+%r8Z*d zXQh&wCsQ|d?qAu;8~@r^Ckl&zs}s$O8c?YsiBZ&|0wnx}tWQyWePW{$Dv_o--J$|k zN`n-!Sv+6b#E%N10W3$60oCdp0y z3Mh2V3v0+5_xnyo^v@Xx@G}5n4?&m=P=e>#Su$T6Y6`Z@#`0vY^1}b3B8Wi1BjER6 zAH<@XtFWiJFT<9WbnHbKBmZ{46lQ?0x@F%;QI$7UX-y9M(M%~q`##BpryEB<@|6w& zfG6*(;l+;vJn^08+-BqtxuD+Ri1fe1-wFW!h<-{kVFrHl-rmN&ul7XTCQgX2dTV4d z=5HG`K41hGW&`gB7Grhl8h$EuOcADgjn&!r|7<(!Z;zSh*xmmtNmZ#BNr8ZN1SS)8 zc%?<4JArKbpX(n7ME%PcL!KsO;)URoiA_3uiXolhru;v+`rRAYD_^kS6LvZM^2&&o z3H7g!IGj&ojQM|&sMi_+aIk!vo@~00DMzq)f`M-@`)b$IzC>XBUW!*bVS4896DwMm z+LD!3R3(>!i`l-ff*MNm^q>>Yq33iennnFzbeyh?1SsCFPKU1JcFFaH())PcZ@o?E z4;OB$FejhZqisiMw@DcI*o620Izj@&SDLBsvo_DE4F%;ZV;(g7eyNVh>7hlRZgQg1 z(&tn+dO=};xk$y=q3v9ewV9lhK#w5%5Al{K-udfOWst6Y27L8UxhfZ(M~23FJ3v z5i+w_Utt}8K6#npdWY<2n;gg$4r`Hoeq`>%4^nbOQJn}yo`2I&K(JaY)p@);3*-+3 zi389ZRO08qf1`nd$QUN{&Qx}_nG*Z^m`_9b%jR)`*Z_y`(|;=?M3QIqgA3g_ul~aI z7i<7QN4uU4U>clH|BEUDk-Z4YIRIRhc@msR^;iB|kf7cs2?Fv*ocmhQ@Opi2ffgRwfKE&r| z{W};@FkxL_F%+R%=+!EJF&d0e`l%UE>rlfFzSDB*)phy91c62+t<31##I+k`K>s_V zJ(VvJI@<$6Qza;q=?12YJy!1%6^fMUCYtenv(2xoXhm(?;s2J=tfctXZ&maI2^W{k z$i!{w%R;^Ol~<9e=o6)p3Z;>e3t|qfX4(h6k&&{o@X%puO-u1%b2BPGUtdn~1J%DP z0uxF9@VXs$yq!WDMonr_;_8npGQu;XRE}rg9}kGY;naoEa(OxT~gUl7Dcs585y;5dW>=_=2}X zYem)?0E%Ip$9$#vswAoYX~%C+{ENM4!Sz>$Lo9i&0fu};G55k)fPq?SXL6sf9gqZGAmgQ6bJu#-==0eIuGR)cN6!kGBu#5ft?BW4^%9{_ZWzn?Lf5*u62wM|x90j0@HnWwOD*HtpLT-QpZ@Dgz8~Gz`{-w?9#24(^tPMyB8fW8{Jfv$LEfdG(&_ z#ips4ja8y4YIKJ2sS!`z7K<(vDO0r84(xy?Ck6oQPX)Z+x}?5Dk$Ir2*bXa=|0_GT^-D}9+Wi3 z(rdX-O0n4;&RHETRC~XLzu%72DoPXy#hq_*x&R`cR9q#PT%FRl}(&=p~}1h-ibZtkIhy4Q8K(bI(_+`JT}V>c0eqV(n%Gp(MG7z z;_3wTd4OTJ5F%Dtth+X=O1cOz%*U+rR-(peH#&2&f5dDcrfx5TiH_0 zW)xJ^`m57U#L9uw`-4(Fe%H%!(JU>OBNmeSnB-(h5Hjck?=KZL-$v5llweebGkV&+ zA)~ZK@YyX13?QY0=v!`o0xCDkeE|neL`(Cd1O*uxIfctXv)($J8r0>v;_G1idB~Ig zs6$MTm4K_^W>1I)bodJpOI)#^>qx=SBaa=|Z6cfpu(bO=0LxHGZ^wI$xmH|Gc+OMo zmqPH&_kawuHdNo@7tU7bbIV)C<3_|SEO=g5M|c{0o<;Q+jXl?Zt{7=0mXSo3gXf2n zUhH@_3p|^BVN4BM0C;C^4brzR)md%gdpv&05Rh)_o0Q=jX71MyK<@ywiN2+8Nt}1| zDGUgMJVC+58ei&U{k0(Cpd~oi!N;^|jgh30@$jT63elC;HTfI@j+dI8DoK5R_@L`* zM3yD9#ecjj5Ps`{_#7}_`Av^s`$-#azM3N|4Tz;$+#Yy=;BAY|Waco#4-agI>!e8# zM@EbVWZr)Xw1s zLV;pe(>El=5=ziYFy$!6%{Q6`x-$gvWeHjDiy)L>E_ODp2%V<}$aym*;^<~bq4h{2 z+CmxJF&{Min2Q4g0vH|~PE%ZgGmN2DvJWrU+E{O6Z@k|xlp;$q4fxnj-gOQ$0td%6 z#DWpvFTkQ0Q5f1du2(8;giJ9EK@}S`6)8^n27?o!tpL) zCB@yUTg9&QNWlWA$;staZPty#BqYem1xWu@p4s7yS<|4ezN{`E0W18`;FrhCQyer3 z!xCQd2L^*7ESHEHv&D^Tg1ShRNg+bZIHQ<^TR>@F?Nl6%iuHLvIjWXXOh;rJ1HZmE z^$#I8q9H|Obpjy9erLmUmDmm2!2vvOy-llfv_yzwB-WTQ6c^s%Oi_nbH?{=nH=K6+ zwhu?OsGkMm-vkLsJ}P$QX@pURI{2B;oF8o=cM0pI*re~IoL?W4C! zV{b6k`Qac7Il{Ql{l6Y>9o13u*jI}O0p)$C6T1hv9qim}EU&RpuKeBEo1pIou&K>D zq-4vyt$gusPV%{NTRzaBzIUhS?{AS(YVg&Z`_(aNY$JAeOF!Fqu24s1a-Kil3}OPx z{e2aPQ-|)wQY|~6eK;8fQNQTW`=^1UUMyO)R=X0;LFVU+D*4B^I#u+-b|ivjTPB}2 znJW^hQ!)?Wuow$bkm4JBoiQK6hA2TOdgpRvJ~4EUg``-xBxViE%($FqDqjWr;O9jL7$>joG(orR02=9gX27E7oQsmxYZWCK{i0QV20XLI;P z*hoEI3|@1Dx_vz`xY2cF!qS23ra5%j#ucu~@VP0< zBtFfCO9}A;rD+m-o?oXlkf#KKgK-_%;-hIVFw-asG%ExwC>H+ElaK{L7|+Kp(h)cs zZ&tGfb-<4Tyj1xm(mg*76ca-RAq_6l8(m|o?C{$#fSAM4G47@BxEw-I%M7WYQMMdR z>@HRzLzAfOUcV1Wv6G2X zC{(l~7$b}LBa+MX$8JmZ-fdoAy?y*et(1m#r+)5wL3(4?_55nw3el!|(-yW|zXaiT zkff>Vc zj&4|k?Y%=muis9-KUB0dSl~LvmX#8mC?WVwRf9CG^&62o`s;nAgF7qws1uD+<0_NR z&i39^y$Q+kYZaj0sFDjA=Ni}Lb$S>jVat%Ypa-7efS+A9XhOx{khwVK4D>W6-VHQr zT~fU%`;=l_3coRLAd8ne@15>)REMc+^M1M1!Im`^M3w#i&mK=j!tKA{9O?5bQP3s9 z>>EbfOpo!aVU9=QgWt^&fXrTL1Wqsr>jas0wVrkU7h2US>KhmQu>6}#eF%vaLY>6j z@c!&VSK>X(+BG*CN%#ef1L7l14P)2G%^5dn4jf#t`*jwJDfBTa_DbsX`)u`BBo5;T zvcCJ$c*H7)>17gv&B_hn6v$QQLJpXO$1h>L;HvNgzt2_9>r-_aq!J3=8?(ex@mhSiS{Y>ZB*UU2p0!xAK|3BJG&JT zsDACTdt>KvoR+KA0H#(Qr5y!f`+g?5ndO+4PaLpqAAEFV`^h`_xxIZor?8+euy#%~ zbRSd=j!c1)l zenfxefV?I?c`h4wMNT@nGch=v%$W6!Wo!ZZL26vpp}cOt;N=AEwu&;S?5?V z%~Zoi-fZw~4D7@Vh+>HSIOs4GX+3yo_)||8jtEM2vIt;=lW!xztF3(av?+q9FUT&NC)XQ#jEGltkihc|A+NZectPN;V z2S(ccIFF5-8N}Acj$OUM3*+5kN@X0w5f=%LKfLd3=c;6jb*BI-j4fZoao6=0 z)Jy(%MxhKvTM(#$Qz(>YfN$E`2(sX+iR#`u)iha&)1Oc%kk?@=N-EJNf@|ExgDBH; zgoRL(zu$EqtV*hIvMB$$(?Yy3M2of))1S1t%DOd;pN{(u_Zf7tO1d5>hGREBZ{Ulo zd&t>Qn+IOffy0@raxLm1)sjc~&7Flot%Ymn2H4%wpT%2k+uViCW9d=~9IoD76c08* z6LGiPZv-{nwQM6rEYz5(Sq$FS!mrF6S2n$PBf6T4ThU`-;&ANW$I2`%6}ZD|Azb93 zeH|w-$*l80opJ|+FrDahps+O6{eJJd7PZa@?>KOKFfJ)hxDk1h79Z-@rv*sE<3L+8 zg?foWahup4kEhv@H-(7$+YVS7%7##-QO#@7iOUP}*GJ2G$EukwznP!`s8e&{l|8Xs z4syNDo{*E)7v5ccNyiH*M21u6Ba_nlofc%`w;5O3NW&{2H9rSYNiqP&X7nS zAD?e&9?u2TB?KbVA<9NAq~4t`nLymwY=-WRK$1hRZlm3Q?*o+X)|^Ouk{l6}7!3@B zqgEpOX&)2+mPK!oHS}Pth{(e7+JiXj%d4>x#|PEKl7bMam6ORnNDdz_`v@+L?Pj&a zen9eBY1A%5r}yc}VZ}4P0 zmh7C9-9P5*QGkG!=P7j2;#*RoR#l7`DI>f1R#}1EA2s1 z3WuRu>2>(PM1DnUfu4J(J)B+OMUA*>3kgMW0WoJ|F@0NQNpB?ZD^3q)_N}P z{AT<~!}xbn;i2*2`laWN;!1R?NhIrdj~iw?3*T(&pyRtep5>;wbMD;jHrnoW1neY- zji?=F64{|tX}#qW4XEk9htEd)y|Yh5o)(>9Grol0N8hEHAqn$zsv2 zNCaFgCi}ysdK*MCk}9*wofel9vy~f4Tek<@!Puwc#uHYH z`SYjRRo`v*?ZE7UI`XY`ieuuu>)#aa3p9xvU(T8pPD$bqgP)%@mT3zfK`}KhCr9~K zoo<$4F=+bw`l|Qh29qG+JEk0UFMrXu-h$QkhGz&4a~aJ7iQ&bgT0g%ZJQtUfO>4y( zi!~?BH+WwNaxh8iNHBZ`XICBdCUVm>ZH8Im(Q21mFXpT^PxHgWs?YWhNHiGF+>qzBj?59>?A4zB&Fl40bXc!HOaG>cf z=L5NE&ih47qw3AhcJlI5lcU^vEJTcqk!CbI6)v^rite_y%&CzwraG{Z$75j0o)a|W+XQfax`|@BM zc4+K6P_+QlVIw9eCG7v+ZWIHVjNH_3QX2yWm1wtX9&KXr6 zL9LsVre<@@-dJFn3~@J;l9AOIj(0e({Ip5EOab8}+JiczH^!nn_?FssH7uALVfiM+ z^@fBNTT!ZH3!uk%Hu4V8fhcFz_FXGHx%&}9vdmy3LsAb7+M9J#7s!w z#3Z39o&QUp5K*n?dfSh;p)#CW!OoqWzl+_2V94)X&<($IGJ6DN*9rPv`sq%R1uMMX z0`bz*VdbbhkdQrcX0Q2G+WK6v8-Bb{eE^gVSbVkqxdBuyyu-wt%@BliRsu5Hu=Guq zCo9cR%J=zisJF7Br0=()WQx8kZtMaMaLpUBXplgX`|-51jR8J07o!R&jkr2l_1K%p zUedK{*6H*G(!gc4X_8=1=B-cmj7O^wnO>^^%~&y*ba}ZqnZ#;#4^Wa!67z*4)bFY| znqp|(hSPq`aIf?Wg#1uUNeY}xV?3=GTyeY@zP)wqLP2<+$YHZHWi$!Zx)!-Q2d~!~ zy6piUhxKdK{U!y+Oi9z~&Byddb-QkKks{Oi3QR;SevrMM5S;#YA5yxmscjJ%=tfdR zKR!q_Ibx?7wY|bny74=?YFqR-UO+2))o9e&o>hO9N`vy6M)T!{-cWY2WoAgFc7U<6 z+0V~yh@f1f#cT3Kcz-`M_R*sB-~R=`GLOZDts6U=4s|h;4wf7$PRiwKlMtrtly{tPklf zH^(`$oWcZtokm#I#Ru}v^Sn!#CwRv@BHs%uN1Uzq|q-0#+Z3Yr%61~pH ztc1;q4VzdL?x!^`RX+NCpX5)?hJ0|p{2xwsv&MmFq^++9zG}_!09MP z3GW@teihRQ!QA&3_V^Q;>QjpEBU{@18b+Fp9iK+5qk+HJG@Qnt+x&3lZf$MK{7=v2_E7f3@TJY z>xY{q+fPtB3>JFe2K?rL7so5R(}+R2zl47K{w}(YomxJ`51=|*SE)?)$Z66>0T*&J zqh^8LwdM)UP5bmLet9r^^2(teRZS*Sb+PGg zUQCO%;?Bx2^3{S!4STa|wFsov^)DR5X@QV-ZObt{)&N&#E28UPJyJ;@N)Kl8^=Nyn z;(Eivcps5QdrMNd7|4oFdW4c@$M(?zWG>j>PztE`J>9Gfa^Rv<%WIbgMzrqi7v7b} z(dHYyyu8roXQ^LNe*@j#Y(!b9Qw@bz@)wunoty@kXekHBN4K+X%yPl__=G(xqwrCo zZsty^XLzmleADEtDKO*babDvVOXnO_Er8YqK*{zZuE})Z_G4iM9i@h{bxx zkH?;uQR1oFvrV2V4ad}-c5J6YqMHCEO{X8uw7^Sr9~=O2Q*Yur?sh!PG2)zN#z0HZ+J?&Tj)! zKZlCZ8os&8P--b1p+0YSzUM#vz|>41ws*QQGWliEut#>!sM7)AGA#{x4VjRxX z9>1DD?ooTdmo5+#>6$f4wiuNf4=Jg&zxlwZ%51TcWu@0xt&>mc>#h7{aG~s+M`n#( z2fX;JnWJVIgxEmm`U643jd2%W#AaXdW%-yZhVB zI}WSR82r1%$N-N=eQL99CavSz-LOOx{m?B39y-4LUy^%tFAPbKnXGrc4Y;!xzxaBu zk{*fA;$!f+?t2+TUoum|26qSep2Jn|$}_{XfdA~^0l#{iuVpRIo&KU2`$FpU=Kg9{ z>$Qj~gk%u@b}NB50T1e{c6lq1(cz}3%xkCV(1p|lb-jXOiknk1PB0&q94bbqR@7G0 zPWixrEaHh3glRHUqekikr}* zAtaN8M_HJFPq+gZPDZy0OxJN}Xy_u9u?SL$SR|J3h)#25I(hf2FVDTJwy~xlSEGC{ z+KJ(N;)pg`Neddwx+(sw?9D+(Vq*ti<1`G8&xK%ZxYq%tX44a0Jj}jzKQG^9hX|>_ z(8G7mi2_OzCkqz#`1KCfLN@Dpf?eRoey{AWv3f4$+mS--DDDE79EAy7Z^&?ziUt9+N~{& zai`;B5A!&Ax*2-aU6Rrw_SM4%ACp@*5z>xafS zsrVNA8HGY!kNGY|zU9I0Hr3uasTq#0pN(_lGqJ5DtU+TXfrF+pCKN-rF;7k_C}~^) zR6pZ9utgjhaKeMz{ZDfW_2L)doaRgHHnVf2jt?O!g5NoO4W$s_5mHqWT;gjb9YHU6 zqVk$G$=q!Mur%_tT3en<1f54yd8n02NTT{tOf~`P{OgVlkmPW`+m3UjdA{95Mgh{$~k zf=X)?D;)1|q>ErQVzn`kHt36rmn)gjVQQvDLbMVkL8iT<=l6ZF#;meaf9iwcAtO80 z5~ACRm%$szZ{Xq|V6kA|F1w~c^|lLnlJtOb96B-7oq`}EwOQy{BBdL*kjHkyrNQfn zu&-eG14iIy0usJR2)(Zn)mwP7AQjZ1`RlteL7KMpq`l1n$Aj(PGbKp zf8$y5gSC<(wS2O=4161k*D)r*>hMu>RwHB$6hwAGddpPhCk-22hSA1UUd~#l zUkV|!Z@(?6y@N6su&a@3RqPFMs7oewGE_fEbNm67>7^VbLTPA#umQv2O-7L-LXrLP zkdr8;^m_qw2Hrem9P^8vVG-Z?vxb9`&O{xDA#^2muNaXQ9G+MM6!|WsaP8~uBEu%} zER~A#!7VAhh&3x6_iQ>vYRCV@*INf=@jYeDLsQC9ekjoa!iewa$)2lbf4z#lV+E zs;O@|(oZlRxHUWDAs8r=l2Kn)QFExqWEnhw3 zTg82fmmNEO*hE!^rW5oQ7^O&QW*nt(^JUVna4DLkU^tXQulP$r9Ez49F2x`hK3=f_i#(24vV#O1StU8`nw{vwG zr$`CUw_0Om#qx8Jnv(uWmhxQcF*FD}vfjU#TP_l4I{R6s%IUfpda5eJB$gsGfiX87 zL%e3Nz4kQ#mX*j%CUDoWi3F8~OfLYf$*kOtg-7RCMar2MLEj5oOv!noW>$|glS%Qd zaT33oB)2bzNcgBVbDI*HY8{K+ENQ@36crCM(E5Cd-Hgp}4xUL0){UYFS459!vgu-Z znr1xjmdf}-db&+LOzrJM%^q-l*|->`wI5}Bn(`~`dgz0K2ufh-l`0X4YI0;<*$Kp$T4n;ul69-J#JC@+*(^5g4c& zx`{I*&I~htTslwf7khT6PM$HU74c?YNj$@^?Gg!fVG)hEgGT4Bt;BtR?`Sq$< zLQ}EbLu890K2;#HiX9hFBpAo&kK?+GS&`_A#n+;_QD1gq+wW?&*vGkf4yf>>5@H<; zJcQA@f_Jo+#z53~CQANeB`{=%>752Naa5J*mgOH_PeoCI(K<#d-sj!QbB$q`5q{aPj* z+2d?d$!3ni(nL+a&h*PZI2THAe}n?r>__~(9J4+(=Fp$EhosSy%G1y%9CMi{b6f%; z?2Kt4PPOu9(8CE3`|#ZmCt)jy@?_2a!hfLsQriwP1bey!V{_$B>5ei$;Q){EkJays`YF;*c$T)%quSZjN+82DxOpxN3AMNLxQmQRH0J!?y}6OsPa1 zic2%PUPAUnSvMoPuGC_&vkUsu5q3c@ly}^bkrrfF5UUSKy{Zdaa0@JdxC#@!BQ#U( zfNL7}Cl6cZb030d>%lRBwh*{tvY}`WvPcJ0{s}Iw^0_u-$pjusa*tbI%z*%pu&=!& z)=oor#Ck0eNu%5tZbSDt#~HXzzg^->JbN!*g5qcfXMOdy@UHea)0$fJRp47Ze#oz` ztGX3dK5GQtqbHk-T7}zvth`=2f)BYRcbVss^vI9>VjdAV`jEqt^-P-jV@+?yoSGvP za@`)7pOZbG5M|FgX0>YjH}Y6qgQkMu&TLrpaI4sRq|aP&Hs~wpG?^*}jr7o&KH?ZT z)^n&ZnAo2YM)qO4=Jbh5rr<(c9iU5?%$6`T&+3LjuSzmt;@+PT@L3M|zI|ZmliwJi zsocgl9VPhKV-S^IoC`G|9HWqVY|E{pR|8tmqrW=zPh*{{k*X*gU&nfw;3+oxLoYPJ z+tGb_@8y6`Zh?mx#v6}c_ ztYhFD-_u6rr3sMY6M4izbLF5TqcRpkyTa$`{uQ1vAa)-6%?dn!u2ts_XBJhVT3;_L z7%0e{Pi4F(T;UX%>Yg_M_-@fNYF^v!-EoudSZ1Jbh%KG%c- zCZ)+Le+>ZH82imwAys8W)6^E?SCk*$Se~V0xrHCHf42z{Ft^f$^ff6&MfR1mxSG2( z_zhuSDF2pt@;p!K5}6fUwR7qblenHKmU?MXUJ~t z#Fn*y@2p-5-er^md`xGF(LIynP2YSiby%C)HM3)w)oL4KbS@9|nK6ne+!sPow?MJV7)JpcK! z^_(j|>(dnc*GVG>%)*@hFcFl$-WM3~gl87l0IBh%;@_VDe#Ucvnw%7p^Iz@ptq>SA zD!-^1vH$EBjMt9OBkc`84PI!$IRi%UEwnT0|NTnNHJT7M3{{09g*g7IY z^^gB@{@}uu14m#<;&b`;t^kLP7~wy<4o|ixCWDXklSs4qXstJMVDXyDDJ?k*2M1qW zhzodGY$#UA0ABJ2@Fp6N4JdN|#f<~~{qr0BkvkvM;LL{SS>1XbqlT@+5S1q@l_w{! zh@`cvkJhT^`6)WZnreSc*J+o$W2EDg{;m9Pcag#F`jQN86JqJ5HyX|)i$6z|hxG`? z6o&4$Loe*68x1qUVE(VxTTeK6J!(V29ip<6TLnqzcdHzwOBwFFH&i}NGek>e7(-00 zv`V!9J9Yq3V&i#WXKK1G5PBFryW~$m{Eq5nIv*N5!Ch0TN89NCL-lWf0E|Lln15F8 z9~RtnH>zb`Ux$tolqu{B&@1q@Nc-!#J{v*yATF#l?$BQ6@RUAuMIuN4om|_a`YYB* ztpL@(6Y}!;68h3X@!U0jdQX@y`W#9|nij(Ouj7mUw|S5wvMG}Iy-i*DtQKlyZ!Eox z=-=6LeXd~$nH>0EdMJDhtNE7wUI05e_4)GudzV5SDxdmT01DuBCrOI8&qC;_TkW-` zPT*gklMR94eSNu!>#$$T$Ec4V7K*i0RTH07?^Hes5D86gF({2GT%T3MQ1tL*2Q}(g z_6wakxNuvXPfbp;v9ZaW%i-M|idmIZs*{%`fYP4{$ijM@2eJ3P%O8KAnvro()_Cw^ z3Hfd7jFxFh@D%ylXAs_zWp3$SCKuhURs(sVZ{%@V$+fN{1dq(vYEVl*=>fNfG{vm| zbPLb2+U)G#HmW3Xueck}#Vc4?SVR+Wh9cv$nU4|`By=QubRy6+g9=;q2as;gM|y~f zin5+9o(KK3l(@L6j~8J6o51dNq~o=@JCcq^OgzHKR&u0GApHPd3|&1YH~V7sHN8oq z7(fgNerX%X2zZ2qO-==|aI^D-W*Tbn6kb422NC0Ec@^~P^6*1qM_1hPB*>)Up{qbm zpeuzL;s4!foUokuTWEB)09~_B)bbxABlm$lb|P1riV8w=byH@~DPZ$V7u>qa%1Q!m zTQGjbdM$S#G<*wUr4^L*GdWVRU&X?nO(Gc?saQ(Gzy^>coETut!G%zny+eU;qW{vi z>|El1`QBt{U#r|e6nMT%L+Dmlt|Z^6;l4!&Qmb3~+B&$oiH z_RowWRI8VpnwnaMclRxNn?%RGWFNG9riqE1rs4so7C@p^TnZxST8yXYnN<4i!Gx$V z(>e(s%NAYThqr13`Bhs06pc@9C^5Gb#zQ}91OwQNqfhqGyo2O+Bz76sB`DYW6U{!K z5M6%sx@#|W5ey~L8qZRUw*f~DTrVWq?5Ivz_jt^D)@pY^I0lwgq1?$ZI`^{k6!_;8 za5o%*byG9PnEWy#oz9bxMz%pbTGj|8pC8OFgW;n<^9;=}`S(O9MVJe20nD-qu+Nt~b~8c5>4ij{ z?eYPVg53LQ%?hI)(9s0(yq_e84r}cY>V*WL3yFm##tghNl^^|eRsybdcB@&E>P6}$ zpi%?=W<$}gG(kx0=dif}`#sQ?B4!K%#4#Y}ZD<{D9DjSW8LRJoD)I6;HNoNEL!Gr* zNR0nL9}bQ!Qr+cn0cXEY)zG)?w3iShe(MDbK=ReBhw@nZRV@e?LPwb`fH;xg1g57h z=w%YUGpp&eFn0I>%6n0cAjp23wU+ZO{_5kwkAqw4!@l?$Nr-a-co1yIQJb5H1~y`6 zFoO4?LnE0S|A66X9lI6`DLGMmLq4h!@=Ijh?iP+uhGk0~>I zt{r;A#cj380nZmd5loR5?^Xl6S0!z7xcWSKw#Ilytd6>=o;$<(zFnrvV zRJgC%&pn^6HirUcQCEN!ERZdF+d7Shxgirhj50j9!;AJ4($D4;OD=;4qYln5(d+Ve zQflfs>LQ4tXFHAZrs%rP?~J5tInz7_wM_$8Y6BO;59EepTSE4KmT@~J5r#b7uRfh{ zC?eI4KC6Ws2(h)#!`tTj$MgC~KG22q`4ZT#9(hiL0S|(bfb)Y1(`nk~Zv9c?{tf-p zf>l|?qY<;I1or3PKgojfP@P>}4#~ix3Q-sBeaQiI^Zk_;eymr?v!K?lZ3{XI>MiKjnKOs%PHivcNn7Y{)O<3o4tY;>L37WW~uqk8D8Srj|#eq*W zDj9P7RX+Ew>^|>#qj-vxbaseo*(!QpI=@KB7xcNipw({`FdGM&D-@}5gkxkOF+BR3 zHZ)ega#R8mQ@y|TY+vc%U^S*Mk(L$qOMbFcDx7^;n8q+*sQ^o{OwI}p@NcRRMM0gT@XjJCJk`7pEPOazZ7TKo@R&ZuO-XbW>ohtgnP}8t zP{muFyD^mFa4%Gb62lcesK46Op+B@?oZ}>qMxuWFqZe3;%is&>!E)2?wI3gI;~qIl z_yl-b>a*=X0O6X4q~650Q{e;*&1sxG!8Pm@%`Jm=`Fq2x<>k8W=r`0=Q}6hr;fy%e zgjqZZI4s&X;IsTNk2u+7S=Gq8s_!;qg?&#t;CReZ{^J|Le{U7+tc9oGD0+nf8qlZ@VOYmmE#nz`+V zrH6vJq1yF&%MX2ry1niGh<_NPDliDcdfLd2b(Ux4g{k8~PK2+<6I_XUgN%U*fYp#X z=t~5LyiW)g*W_<>e_wv)r(560MtD?TACV;NuwzEw=6Ag*l67Ohjp3&ivvxg3{Krn# za~uij@OFJ&s%Xz?RUc4gF$@hsK3_lP=)*Rer>~*31$-LDy5Xj+6`^l&p@N)_%z5qM z$YlYWAjSRpYOS${&ScJ2Pr=Wa=m}^O6xA=7qBXVOPOnT;bwlhMCnffJgML=e`H)>U z$P@usp{N}qB_hKsY=a+8M)zMCv`N|YrFh`j?k`6qvgDL2E_J`KOA-gyYlXA%GL99 z;Uz&dK?GW!#`0l31X=gDoh%;gOYS@jG6fNDUTPIwCPYvf)^YV4vcgAp^gE?Ebf~kW z%mvnGhRg5l_hI7LzG=ltMS8gYn(nSxU+o=+ZCD7SfMBK2`;9HXR>_o9p8Lr(syuzQ zp2%8VLVB)3Yw6YM=jHg?V#MjjVPP}Dt$tFs&%v6rP^P-ugvZkF)z#liGTox^$F`YG z{=gG#V_ew%5hPQXhGlM>cDEZtKlWp>&a31*Jnw?;*E0p*ley)5`l8pWq?9*v!6YaW@GkPqwMdv-fkMem2@8*LVAmyAYP*whcNb}6fp z?Us#p;bW_gaL&TgsSqB?LEkPDA0q`yAuc)88%w~Ul4$cSa!vi|DHF?irb93OjoE?U zlx~t^f8D)oea~G>1=N@B3roD6h`-Ef(*rvG$k{m zraoxy+*&KL|Exg$NOM1)8p_M?g@@6KR6Mk|@xmlm^RB|V@}*&3$LN$Wg_oW#AZ>Hf%b&eQT(LV+hN~uDVkQI^BulM>J=+OxI_t{d&Rmr6H5D>Jt zpJsf>W{7@yg_4||mtFIMUcU2}^gPTN9f#YgfT3_jLZB18RStM&yE=83c6_RClblu4 z^(f@K7+Rm4?7|C@;Ks#24K%1^H>rn;D1QZBFs-^Z4UFu#LThL{G1KSQY?ux&pHD;Z z^25&4{qSy+A(H{b+y=)RfZ$zi-0h~gt$!UuNcs{EO>ddViL$SgCyTf8K?ip1l>7YjK9c%HuPHREB8D=sf6w8sSjUx=UEhEsY(uEl{zx|QRqLH| zNLV)Lz`z=b!Q}_diw>^JCv&-@vWID+j}GXn;5os@E=xNOh`q#$K%m~n+|QMYC8>YS zGaIN~FUQbVN*}_I415yx*Wq*RW7b+w?iArn-BKHdq{Q9hp(R}eaIR4e65g<}KLvu` z+rm=o64*Uy)*UQZ;E*^v?xDsP1gm|PpsMw<4}F;&jIpDY%p&9D3V(_?d^9Y`6I?&E z^aO$A>780XX>jm)2<5 zOB;6v{$Mrat6gDV<02Y6%Rk-nyrGG=;!>e)PWpYPe}?a%u>ie^f2nfsulRQI zA@v5T_IvrIKMwlROaD&uQO0w!p#{WNh{hm|AenH~Nu;4Q`x#DLi@CNJaJ`Tz$giq< zKXt!{ZFPGCVew*Yuoxw6S;V7B!Rj{ks_GLYB=%Pbo+6fJx$n$w5&a#NuNLB)P`Pk@ z3`HDD$C1~nW~SUtm!c9w=P;bF&VoG%DOCoPpgN@!D`yYdtXoMR&2XX0<`z2FESW6ALXvP?tD|vD8^epHuH05~=Z9KIi!vKYZ>I#53(+ zPXmv{8VOG$9M10;i}kMaxR--<#o1Mk>6JB&v;cL-?dZ?)n0Nkp)^)~i#Uy3cWLGrt($gF|X8mQKebV%<4^Yv_PxveWY>cdGgKMCtE+xujru3>Z> z-NHw%8dYKeYdVu+xj4&fl(1GGSmm9N(1h#UO?F2`VD({YGRB_luPxyDmtMf5nglG9 zsR*G=5IMrdCjLow`fQ-t4DYTV=M&6pn7Lz50^%dt7V>+$e1M*p{_9l-J(Ko2t`Z)TU3^5B zf9z1x5ebUv8s?XHekOU3{_e%@K2wOq4A~k{!wU$~-S;GtgAL_^aCw0rE1}^&y^hg> z!?9u}U9r3m@=_8H+h2pRa59$Ih?+ewEfNP z^>~TP?H7a?+uC!8KL@3KA9iw4VkMl}=b%%kZ=sviVh=GYMHuKvWAmI&F!q|0lq@K}YStkLqb5pdR;js}*WDHbrwd zt1XQ+uT^iD@2dV+pCF6HV);w~kM^o#U3iO64U^gC(DUB^Nm8LC0!+6#6*T?}f|H|5 zLt4a$e0DOH4eUaBd0YwSQuMyWTl9GFP6u&l?z-VK-G8EQxX2zx+*i`O8DuTSC4TSSeF<2|MYGNNK7JLVw@EimaCn{fEgmquKX3YxTy*ypTGYj zAnp}e2ZsOG?>e<>!HWdYA8cUwHM`7Scv55i+bIHQN*+jdRCfw$RGZZEm&yzVQmxVL zQ6G!{+nHcw2;v8v@~>noM$%)ycR3jaEqCtJ(skM@7Q~D*>N-$04`ojMrR$#E6cOk% zCJ2O>7qP@2*KZdIne=Mxt^!LU)sIH5eCV5LLR2Ps>k>b8LoVT@{bR8_?_WH<8;|8UP}Kv)DPfL-`I#x|F;qbC?<-5(KF=v z?n(J?I61)wU%AMC$NqQv;e%g+<6$9E6-@Z|0Ri|xkr3nZAF~f^1zPGQ>JJi`|LxJ6 zXz;=J=g-5jek)^)J8UpT~$y1HpunSX#U8wM*B=1+f*otKFcq5PFg)2c6I> zYCj{nfwvW=Kl(H*2{cM1;Kkp|`CbaU?E!FK$G-Zvamq}SW zbFqoJ$iAr73ffPL6CuYEJ-t0Yt<&3XaZb%^92pAt!@(F~#CMg3{WT;=5pr#HT(=?% zCZDv|ZCWm>r<2ZaB1$yN41OA(CJ}mSD{Xfsf#2}^W^EjiKIt#ZD8jU>JX;*fddPT%|QSg^j+%N?+REVk8AZ?3`i+E*S67I?u2wL zH`{)VVF^Z`+@|}o`T2CLF$P>@?xQt3irrmtuBe}AqVj9ax|UvRf(1L0!Pe(cOGxCN zN7V5R*-+hSFJl^<>sEKTm~OG5iZ3c01BN4Q2gWO?lD@yb9Vt9|ox|SY*8nxbd=G0g zEi=LrAq+{8K#ERSomhHEut7a^p0n*6k&;}Vx=_<^ikat0SSw(EI=#Fvo&W9+JA`XH z$)8KH?4n!cfS1bePxC?tcRZfQ-537y#q)nb*M!Wd!_W+3Dp?nINGlt*rvk%TN>Q}? zw@2XzZ=d`ft-$Mcs`HdDV@y<=m*oqXnu9|jA!KpUfDV))JD;OTW%Qg<_w>A*$e|HK zm8ZEql-C`clYQ?Z-#On2(uh|eFVDXlW)=g5|HPNpyyx>occ&DoGWq9w9-YVYNm+wq za`|Hir$_wKy{YmwWCxXEv1Uc8arWNc9!SYOgBY}Htr2YTbn31^em@InggYw$_XoD5 zn=2g;G#dc@8(AU{aJL7Oj8C6F9jZ(I2QdMW^;Efi2u7ryNW3~c>OTP9Czr<7^NQVs z`OxHHpVH1$R+oLXtsu9T4#6qYUL9p$NqY2{Z!^fbusQ`1Tv&U{Ap^# zW1@6)uE(c5c1PlB0(ho?Ko}%kp{oWk=LPcJH%zLxU|hd}*anGbd_qD($?H?a<#g?O z)`K1ZSd=0iuyi;$2g-aK(BN9Ut|ir)LBblqW0>f20qPJOKpPN-NqleClNq(&&x}C5 zPZ5US?c2D|C7BF4C@U12)9VR|8jH&$(Hda!Dn*CI1+)Y`b~p`vVh z#s}fS+;}WX!Q@^;F+i$jr*2MK&1k;BFK=c@! zXkONv753SnvAh416+Lxdb%D17&!Hb$h-Z|Xg>%I96IAonf)%tN%ds*H^Bd6E(fmo) z8ekaEj29p_|-8%p-{0KvQFn8Yo8f~0bORdYs00i~iej3bS=?88LN^c6Iwj}*5 zBPMFaH}RsmjpCJ4$yGu?!N)m2aD5j-ZVvNrHkyNu`n9*K|0apr~Vu@W;F0dbTpAjnVs=yQJsoLjeHKj53PISE7L7OMyV zK z%Mp2KT#uG+0Yl=`7feHdwiBULIFow!8AXeyoeFHfp zeZ?4zg(hX)P=$2qDUh#tS}pIF`@qTVv-m@WFMc_sjM26Y zMJG_nGU+xtgETiV_kMsU%P&l@>Vib%vni;vaV7P-{70t{M)qA4dsivf_n{AvRW+=E zkQPhz6*WQ|qikmz1=*ELH^beTJC!ECAm6KsCG} zF2Hl_o(o>+H`;tYX!d7(@-Nmv5IrQ6au3s z>FsYV(%Q!HZ$j~+WKF`Y{a@BrRXmf4!EhU|@=D#ho^3dJK9L+4ug6hqI^JFUx`73S z_r)R&=A+p{m9UvGz!&CE+)AL0u7Ne8h*BiW2pm|UlN=66qBg{}IN+Uy3`>fjr9ZR^ z+(RU%v*#U0w?+6y9j{nrHZrK*JxBPBZ%8KDEsTnAmJb~l+W4$obCUsGCF=$ukWv%< z)E=1P-*EIk*bU`I^lk^eA@2mX(4#*WV(1(m+;tS~!SFcS&AfRw29>eyq?0T~hxsv{dh7@y+UH_HfiRC(>EnZ!DEuxn3c=SnIDnSeKWpEHw6SA5>F?t&RjpDk&2M>>3)e@)} z3sA(7X|ZzoHs3^pdcz7m0gu(1h4m|;Tt%^ZdFa`+3XMLtk$RveDJ!WuQ$~~2Slayv zgi$!!1|I_4*OwTW2i_i_vNf)!V-&Ea^+u2iHCU1hS4UDfDg zW>j0m$C#Kh4_mYMZ+js~U3>2qz75f+nPriIH@H;8gadeFDJ=w6$Sb?CVGo|$Q~UC) zPD%BANi$}0-kaYF(=ZMs`Nup@2-K!;&9(!Nx7{z(E}22+iuxTSoz`P{42+X2JI^i; zzW@f$ZhAQDu>VXHO_g{ahb_=1k0-v^13!O=T zRtVE-!K?t`^@;h50Ghm)sAyB>Xmu=+Fy60ND#X)&QI5~y%KB--enbAy`<)7tBf2Ok z^flB9c#<`Ex$b++=gSH(7ZfOlbOVy~yr32M=6wPrh;FX-nnP<_P5)} zYNOpo`%hz8Re?qmbyZ2vT9*-Otd+*0`mD&V9!Pe;Ok+eC~ zC6W~lB^iwV9O#?LVPyH-T;0zn4BkjmHe^D>PN!;FRotnmRXFIch5|Axti#s*--Ufa z;X{UilvaWb#|(S)s+W*~l+`MAoJHa29wmDtMO?h@KVNPLH5ghVf?Ais4CK?BeBhYe zNVLD>DRB}TC6?AY9r=14%CGH|hLzc7A21q(_1QTxW=tVqIO-y&ZL}Y8OoqNW5D==~8n|>AF*6La%lWe5*|i(@rEu?^eGuNm%ajey5i$U7_5y zX!uUY<5FK7mV7{0X&1Fy%?bmDaM!fo-0bWtMRqjr+3j5F22PIg=G3+I$G2lUTV8!x z-MywY-xW;I#}nR~L{(+|4Zby#p{tOww)QsYVOQe}3=hv$(faK2WzR^es(O#qR$El% znebr6t-{QQ=5^P5ILch^TEX*dT!^ZIk33T&TC@*=hvujgDe zZPRM!QQpzl!X^offOq(J=P$nhU9bV36B0}S9p8DBULoFBCltx|yMG5l1bhvKlHc>x zb?pM{_1yO8TxHC?Bh(BdgR!vUtO-pSI?yWUDe`>((qm8H#rtTmkN98lRmioccbg@f zw!EQQGZ9<)0xi{#77rHA08^=gAQ9^c$B3V8FEvL3IIWFtodx0+{y+Po1zC|-M7?t3 z`DIqU{F7NkYwdmzM|5UL2qKTq(XvtE4s zx;J8%_joRQ_U&5b=kVC04}FD0M#8Apw+u?$o0Wbe5-^*Nhl7*XeV$DROo_j^Y*&z+ z45)UAROV)Qw_3qve4QV)1*KFdm9v3mbVk#gSlmsxyII7sU1II2Flb4Thi;=DNFfd< z`QOSaaa8^ZYnf+E`t+ogKI(n%_#t4Tv#wq#{#z%T>;XaAKKSY7KEnS3hilc~O5r&a z`|@w8Y>}JiOXrDo7VCfOGPGOLkaajLgo*rHCOqH-e1P$2Tuk#{%=ILq9VFdWeRnfK z@{8H(aK7mpl=U9W4;KK_g1JcCfYl~)q(@ZPozmvlXCJ@fe1jo%~$0t;kqf zWtP%61CVNiI2MX67Mlb;^}{{y`u`?^#gPNTNPJUi{g&n`X0b>GJ)Hs3A&E|1PFlL0 zO$zYn0{+||_7rPVJDjX_6!gZn0YvHCoMxCdY6_USdfZG%`GE#2$YLqo^v6@+={rwk zx-BVHTPTGkG)}9g(EC9}Y8>91bj*g(U+3rXBW`UaMr|b~X5K3&mn;kK7uYydOfXvE zwN<;^=9}XUC6)Gne?GBbx425QV|@=Qs;jH(>o=Cs$whm!SS#fzPtZN+Cd6Qq>*sj1BX$Sd3X&N2WJ#?gpfXaB7|w7bdEg1y1y@MRGf z@!2HP$E|{GubV=(h7-o+qS?ZPJyVJQ;fC$W#`ERV0k8qsf1EZ8(@S>%Wr{)i%+93Z z(Yyitc_~nmBmRBo-~pB`0EKY{_nkCQ+fDzSM5lJQ%2;<}NQe33btr{F&amTv6Z_e;de5%8y=jD;$hYJg@nS7T(1CV8SfAI%RsQd?(-$%0#OSuSE zVo-LCmQMjtIa1Mg7QImby13-HUm{sktlj2&VpG@C+YOAAh^A1Ks^6iGZvrV^3DK;_0p*HE%5r-Zfv;B z8S$!a`D&?Ztg_ru;&=s5&--*MMb9WKvVqfd5Szd#B;L?o`c>UR-sX>`@ZirB~c z`_iV-A9{ji!BMY6yVhg-c4eC}uA8fkem-JnTQ!#Xb6UTvFA+`Kpy~RtjQ2l2e846& zo$7bR97&W6B8`jR5-<9ou2;vR-x2c*@qNJl^oJP<57R6FlFX^A?Foc0z4`4{t^vN0 z&Tgq1!NXxmQB`&KU1qT}kSK-{ndFmzMD{+7I)GrUD`BJzbbn2MPXh_+_|trq){<6@ zCuf^hBx}z&qBP=WHd)w>`Vi_bBZ){~UUSsRu#oh!)<@5~YRe^42rB(nZ-pp)<0SFS za&lv)L)>D>uNlvR{T{mA>DqJ~WD%EKSb4;DgcxCEG?$dFs_C4* zNv1im_6t1k2IOK%17Dz82~trAW@_s;In%0^f06hOmXud-G#N-xC#XnB&KkuGP1=kz zSUha7S;(0BF$1I9L=U>s-6Z?&EChjteH$Z z+W(a8c47!zwiVC&L%aQH!zn~2h>u@kPvC|#xntKN3bMQ>RRzF2e!hPY5&jV^C4a}~ zT6fi|l(jDWlrpMo??p<8JT)f7r2(bH<%b!rr)$#peWo6tYj=T|VzYt7TyAm>mN{AR z8WY@62Z__wG_DfYOg@IPIiz&wTJvBY4c->s0)dlXhi|j2GKtH1V=*rursoQ9#!Q|6 zBBjLJ-+i&oGS*?q2~pP8Hr)d>{2FVkN+!^7ukAjcl0#aYunO34+?ugansf6F0e2);4pfI{EU6<}QE_nSMlS<1gG>jSDfta-%B z{TX7|uudb9lZvj}ZrtbfO=jkl&!d7>N1pFmcl#V3BVCwcH9p-i+{^SfT$5FTbp_)H zp|1p{yKQT``>BSKnQC^SSw@7^GO&VeDm8jK7)oKtWe{>->owPRG2T^X;o6!v57n}% z7~oOtGN+@lGx=@TEjbPWC08dIxkfH#u)!QY6jvzwe7oAq`17D~rSKJ@AhLI4>sIBP*NCzr zPM2xK`ig`ZPH+gFu~g(0ZXkQ@3{upi9&W zS;MW&o}-3cH)yM#`;52@hd2|Y?wq~E{48)*4`s3v_vRbj5vU~>dlOxvH9Xkkd4K&W zk+^5tzHqw-T=BW~yZ|9zo$tWVVse>M1&f{4Vl(@%pyS8;ySmJ*B272TNZdtE=Zi}v z|H98cE0lc1_YZ)a07%3TG{c%M3dVu*7Vt=J#IH5W$pm+Uyn|6$F z-%njPV)Fz0Yp_6$CrG>EF}^pE@oE)`J02|_u$wJT+l3@Knlw*YRjSn8KQ&PKpG62D z-n(}G+@trZB?<-XB&}c78!&I%bgKWfG(0I?XEf5(d3qTS4&kOHA;fXP@)GTY651M! z#1;}iL7dkOn7;wvVhm*j@N<5(^spkP%? zb?}*yhFE7+oUVc5`D#4soe=~-;Dnp84o#CoXQH^Lb|&#zjFTDlxBSW)3>OJT*KGMU zZZ2#m>*i_c8Z6LCG8F)HYgCcu#-(ybtFVNWY@?9Pdp$+VnfxFMz1#iv_2Q&>?j7rk z%2KuAbX;z`6#=VR25PSl7;F*!WF#9S+^Z&=JU;?yUBOqLTy!_L99ZKi(?B`^1jdnx zc;a|(z=}Wxxa&$luqm2(jd0~qp}g5a7O$wG{sQ;f`R5=2-F!TKJbUa-ry=l2-%)LRx@ivzm zO%^`}gYp21HYh!q_>e*>Cb#b5wxW;33k)$>$Z7^$F`x5@X4NMUiy=TO=wr=l$1H<3Y9rDz5UJ{xrURcnKsTZ@;d znW~w!9EUKwRNcpDL6UQ?k-gQ|q*%lfkJIb&#SgE>Oe1>cUfN2;Hsz7HMbAs=KP_&3 zVt@GkS^e>xv@8d@LQoao-2n$P|KY-pTS~$l|JBo3El%-6neTGPThf^U%hmGSo=^RI z#Se3Pb9;M@YLS|^gtf#STdemJ+p;^{y|*Ksr29Yn4y5+m`H*BOX|71#dR%qYOzqmX zmdb9A%D>h2bBrIROvu&+xrd3>%0;*i2c@D)gwu+#5l!>yP~k%fi3Tf&m1Ym`Bq_b} zz4nY~TLYOuYS3GvXsvY0&+?$yz)}zh=v-S40@ps}n+>4yndaxd^o7|mASbCjOyUp9 z*bW=5UkgMUX6xgmK^EffrAODh2Pcs>Ha9hc2QRIuhgK z(+H9VkZpVpm=CLV%O1G*b>5uwz9OkC-FfnO2sWO)*3q59Ub`;7rOAoHAX0yv9($^p zgh!?SvvtAXU?y}(P+i*@b>w9lLUp(!;KBBkUy!_TUZRz|D~43^z?^MugYZT6=nsCn zWVkm^Wr*72T_2wIo83Ia=;8-{{hM=lU+0TW?%9enQZK6{48E-;mu)Rv^U=PcK`H4T z$<^_i%A~PQs#{5E-G#=CBw@FKcMLBfe&#<84fN6wm9%(xgRBoUcUH#2QWQn(#x?OE-BYVFxWEERwP!G15zL`!FLHT=! zcZ!icNRMffi2!5d4fN?NtPl^P9WQl}@ZTZ|ij$S?T^!2Igoe+q(R$sfN}rFWcR`Ch74v zZSb@M+PLngmf333MeA8Se;DyGy4Ys8Zl%Xo%9Sp7C9Y&ZH`e-${W{y0opXR=K?C5czd zV72{p(^rahm7_h)WV`)zc`TY?mH+kc6j2!qJIUJe)|x}kuK{1mQNdq zcU5og5+<#uFV?1XcR>%^kGD6E(=JXYL$VK8V>HkTpygeh@+<859NDxs3%+YAzXfQ7 zZj&Ud!lIEJ9PG9SUXu>Fh~i}Z^tJ2>+n|5LQsEqE4ugLRd_cl`>yM)E97Naz2NvSn z94K1J19|I*EJ?SzmVP4;Itvz|yfvH4H+{UV6*@Yz=}99j-so%N|Ge+NO`7ddRlM+o zo_bOotIIrpeyAe*$5}$Y;Xb-p^riYg zx#rVZZO$VDsVrWP+>vfsEKbVy2IhAaJSz2eAa{B2U3VAg0-r< z8FtB6pyP-t+`3PK9}Kr&-}C+dRCnI-ScdQ4FA-9RP`YJglfCy$A(TC{_a-T1mKn(& z*~!W#WpA=2dymXyRAxNKMSXw2XZ-X0^SoY9ul~C4+cnPXysqm!j^llNK3RHrx1{2) z+WhQ3*OhlDKIbW#xK>de%F844bLF#E6wXxdFZsu?F{eaJ4dvh z*tU#*lq;!8_SpRs?Vn%pwOqX2k%nM{%T&AXN}G!`s#S!EwzHS-eAWYK;=?AS<+2%# zWc~S@cGsm_R0CQzJ}%&hlgB!((!V(8Rj};d$IFV@;Ls4`TGBt$ox`$Ver|pYQZG8>U?qJa#iQ=?pcg$3CrJ&^QhdBuU|qXrI(_CqgV0 zK0>MaIyNp%m)j+LVsi?@FQ4mMOg96xGd4qG4Kt&8Yv&A&c6mB~wujgzOSLEe*5}L= zHg(3_WOp$4%{vTH-ip&9|CmZlLq@gLR{LJ2%;>kG!(04n2i3)(*0tn#a-!#GBBr7d z%L7l*)8yj^nN8Qm&PwFTe)MS(`4Xaf1LrwTQ@p~~!tm!0qUqIDmF{aAkG|UyxYcMM ztdDky*LW~1EcXP~qMo`1O*=(+u54?CxqhDVnh34jdWR*RaHj0|TB2bqaUp1M%x~T8 z)>{~BY2L4W(VCKc5cWLN#DR~0O>@uc1IknGp#7b2_`cg5C9Xo=!&^mD&!bk=nVwQ< zA764hxnTC;J`U{+40?l2b~wiSQ`FY-M{24W4j`1edUKI(dbm=3%>0=4;&D*iM zbbbu@1$8@*8u<4Fy3^`F3|H2Rdf(R~iY*k>(27VUgqomSW~=$l7K;2?5}6Kh8pp*I zoNYKSd(i=sp_^KZiwcxzR@A>(T;e-H#dm(qibf3{lw4hoFCN8XRa(&Ai*JfEZL*C0 zaCO?sVfdm?(Cl1yO3WV0JLJpr$8xiC2u$J1f~J!tm&KrWDXTd0oH3P?<`TQ@MRelS z3Za@lV-;_&z|_rg`fc9I^mIcqxhNJF4w1S~G6rr!-cddCHesTLi(@f(dG53wMfnU@YdJTu{*(*74< zQgB>O6BgiMkv7N~rZbi2&WetuDdYgv$oF_^J@ipiKSc*!d~bZ~Au-w~H{&!WL4SvJ zWsLU4*S&6u8W}UwvGMwKW8hy`YZdTRJxB%zj-hj?4C>Mk8WiaR$CoU=FW25 zKz3o3<06(Z=ga5ygx^|j0@SC!C}M}v3TaG7zuVtGORHJ)-Po6@6RjRCUd{029#iN~ zbGl~5UpG#LdL7V=&=emdJaVjWn`kqW`beMstyK6mVp_?EvX>B6rLA$|6liwTAW!H& z9AI$G%)3R(s<J}b5ZwVxq{6;_zOQ+Cm9U7lF`;N6RyG}`ak z0zU~khebR9Cg~o<^FKPG?$<$^YxQd`$vUxsBy~_@F~-bI>#nj8H-!r87{t$1y6IE$rnOX6v0^~ZJgRHp}L z^&^h(YI9y(7AP#%@^17B?(Y2D(^=~Fv{z`N=a#4Z9TOX`;?EJ&_!P=Vk%ygGqft0> z-%@0w4}~{VdrUxnoxnaWE}(&MM6=nvp^d?7V zulxif5gaae%JqQ|Rj{FGTSZs8$|v3{Ip~XjZ0mP<&m@R^r~kh7#9-s0pkj9&5TVm@o*7AvZ#&)%!I;5Wp{|5TnD#N$HH9^fhvy5R)vn$`GS(*Gn z%|BnH_QBXb%^UFTU?9tfvfbgekrwWt8NZ)L&fCW>w8uZ3pg~^!O}qv`J@F727PqXm)cXX{K(H*RWGc`J}=;}eeKft zVhaD@rxXE7WJW+Q7GI&fWbW3_Y>uLFHNFpuMB0NaNr=Pfd9n*(Zzc&dnez94QX+gU9-_P{$903m!zM zXXRIj7978LPYotA5jZa=W}|}7h^Mb`TFgHQ%#Xx+lmbkg1nQjJ!OIYTvr49y7V=a`L@* zoggFnEADdE6AMsr$*zHHWtwnaiM@wY!SRq)WWA6RaFRap!t&z+yccz;C&gBEWGU(< z;X0GiwS)B^tD%3tpT7p1=O<-UAVP7cC}gMc3#*TPBphxk?zl<%2IoIU-V%wx|0rMv zMEv55<136mXEj{fz1CqtqWbVJB&@)TaMB@S3&j|83Ni^>Ht41*#?mL7pfJW-nlA9Vgt18sbiHVS#qwRwp#p(lm(V6l z>;G0a?KHCgn#v~Kg!11sr6jwMr(0ul?(Z(W!bg3dt4C_=p6_IU{?20b%F@)CFuzWu zWD27|07s{D?b5(GQOvN6Te>Ab!paVKt>s3G1p_-G2QH#0tFFF1EdWlF6@sp_`c%Yg zrZBp61d~PJ-kWE!aml^+9-wIY@(mcCxo2k-|NRR81wsnH@Xe7qp=RMkm5^hzyqR_c zJ4XJCT_u2OW~2Dmo2Lg8Aof2Mp^-|^MWiD752!{y7=Y{QHyV&7`d@niw)g)Q{T8s` z8n`X>=foOCiSCtytKG_{=N8waGk)mA)R;M$Zq;WEq~G7f?%NA)iq5*K{YgtFigxp> zR?8K}8!L)wM;PI7)$t8-PsC{2I?y>dIhBu()|U!69}FE4M8(bQ(lgwRW4LR9=|UkD zdbDq#;w zJf6fGgvy^R>scPp=RV2*K%~kdj||3g-AWNsqNfl;=Xi~aO5$exRbcn0B&NvePwEH% zrlDn>tOH+m41zzLX<7ziV&drrYynTvk(t(Z3(aCojofucw)X1_DC+BDTB(H+gd^~D z|81R~6L@-(;EwL`m^Z^8PEgP)_i1%RCaZ9Ce^()bK$lDAVxCA-CF0*1tD2n_luUmR z3aqx#MC47lGmL8TZ+gMNpkFM$abkzzPW{TkeyHB!gUnm%J&m5=S%$kBEj1+4s?>SN zW&CQtVsLUQ6zI5Jt`yt7>t3;rJU%9Cf{RRaRmjQi?5->$zo;`qlkq&}vYDVlpzX5< zrL%IEqPn)>*|>FxzjF3uBVOnnUmk?I3$uHjpNLB%8g+cEzBhx6@nMUKA~iC`M}&NU z#C)rNb2PN`iS~VO^iZ=ZTMty!+qNaMF!8+$DeKxt+$A;~8x+W9~2&ZU%H?=1KEtz_9o2J`;0@nKKT=*OcKvE$X;Oe`sCZ^P!GX4JvPY>d#=TqM@L1gc`Q8)ry~U{PR2ijtS9a*-v%lU_`N z7B22pu)Dq3BV)-Ha||h5fO1z5ITYZn+0)(56hfs5lH_)yrR|b&sL9W5ZCPsXN5Rvu zums>L#FPO9KLCP7oD0F06Un&hxqUB#_p4jI4+euh$n1a#;G{z<**M4d2l@b|(%L*D zp;xMVc6T4t4`iJ9jFX}}@;($l`O`jB;dVq^ofu4>=<;qSm?Qi65T%_HRC0L%-b2`- zbs^aqxAplx%Ni5vceA*!IW0t~>pAyH)5u1Gii$Mo<_jqquu}m_F6r$x-oP(j%hvn@ zU~qnR_D#?vo-8rL6GjQ17*QbBn4{ zI9{LdV#E5@8@W-Zex4(P+D_Ux;nC&Gif(a!Eit#77sF(C45W&+tRF>91oY3y)-@+v zRESuz2*+rO@$Zh_bF`i(Fo=68kAT^`JimWT+1)q><$T+z8ez`Ids_>bmq?wLdMURw zN0){QrhxSXJA*+O*PlOs{$;Zj@}Noz<^P*t*D(16JO~ksQK-|Z<){Si4bN8r4G)le zt0Rc?g9wsY!77VKJqC%r73jQx1dTBWoEB97CS_s;gzzaS^Gre&u1D{hS&0zF*LGfA zq@g=Uy+AKVB^zk%%lyrjI5{|Ez9q(uFD_*YEC@bcm#1yEt(ZBlBOW~xNJy9TXi#(a zKA4Pt$yTNdGKj834;KQnK`78kp8J}w>$WnGtwzKYzW%2}KRxY1w1><5w!@%eKb~^B z;heIX`q5qA*?)Xb!2b9+OXOQdN>dmj+Ij&`YPWaVf z{iEg&F0* zw}A4LCQ&?>1;HvSbQG!$e5RCWmeme~S$*9TJH~k#(IkQUY%~7Vx4utcs`4HfYfg}h zN20~lTR)>;gQiq9h?d|Jnil{vAIcRUa)>9gJME2mBbMKZc4-5zk7-~SOnMt`Id{UH z)`e6n5DAdCpRbuE_LW(w+iE6<{5h)Sp*iMPmuX#)JKB8I5ziZ#Si1DmBMO@g4Hli8 z#9NlTlJ_1-Q3#?n-5!SweV%3_2owc?&W>wCCu9+0!2cB}7TG%5ZF*(eP;}ZYkeG=9 zl_w6f8wbW_A{R*7fcqE+W2P#!%ni^y+U*ZJKGWI`aE9VpQ$sVs_V#vjG!dyd#OEQh zDO>+qs*uNR8)&r10x}QxYf;#Tmi=iH2l{FIcBhx*qDhzyyiOC3hGv{o`Bm;il>zBm z0h(eiA@u@T#aeMk&=m&5r=hf*-FQ?FK#Au$2_`E}54Y=vewtzs@vZpCNG?#Y_L1Jm zJo7!?Dt~#Tgs%H)>!5ORQ=DkBp9H)M-{xt)TAw@6=lo;am#ml5y-ZDk*SefhP!6Tk zHFSH6NbtS{i~-;iy)sMH<{+XjT~p;uc^~#Jn%s+67&RlD6Qj9i38tf_Ps>T>m_)We zwb$?TRyY`yC>gR!lA1||-4MRR7OW1%n&!q*8&)Skaa6OEyfG-|+m`y$zk_y0o0{=( zM+vD$B$#{av7-_7Zo%~jZ} z%9st)1)RQ(*6TPK;il0zGh1wJQTAKs8~e^mKmVVWKuij{OK3BQF^g( z{(uy7mHD?^F8|@B&eg%Ul0LncqWLu{#py1agD|?mn}*b?MLA;gJhY$w_JmE*?L|8_ z0OwX{pT|Y<>DQfU;LckjjBk)#5a%U$6vh;|KN`+i$*7kmW)i*ieVOJsY~f z77f#84|=0wxq@-;prc=KV&nIFIvunNwkvJaPY0UR<6nQ=Ot|-P&4%)-k8W{`h{Kx- z;^D!L*Z%F|ct!h0fb|@%6EF$#c>_Q|cSsEVJ7ynnGtGUb=tC4m|3qFT8GOMPevvgG zT#1jz9_RA-=g|wzZN^WUUo)sF8p^4b^-t2KrEe#@dF+;{I z0UY6kXboED5;!!JDQ3MHqG_;|`$tr#6X(`8QdpXGzBvWkE0ouzyp$)*+<=!zy}0pO zz|89)YfF>j51vZr)Sg77TqXCHUyYWmS>_3+qCel6W`}h^;ex&_xpe-b#T(sXEF5&q z-VLH_U7G{Sie*+qp&kNK`Sw0o9M22!Fy|biuJg?syIp&jYh<0x8L?RF9n@Z4=yX<8 z%b6!FQAnI(^pNsfV9oiGh()}E_Q~;~xv^nZ;dl3}F>UdBnh_eLP8|(0s;o|oW-7yP zv2SAyhykA*BK|wv@%M|e_-QMqCs{&cUV)AJx`86;ol2tg*aKH{8iX)3G)x=5H2&6# z@KuMtIBt5*-#L7u445x}c(O1F4IU`YOd8E~TbKS=mU9>Q(NX*mngm!BNy~m*f5#@5 z-=UBtpPNr`mb$mlVeX8UlZ7lhilu0t{!5d~e48I5z_t}sVjG#cYs@k}Z+YnJGCEpK z+SxjctwMfD-S*ogd)<6R&VFs|1K#ucXS%spQ-o0I-Q(oiHPMO%%KSf%grglE5|%DJ zu-UbgS=dI0rI8T3{7MEA9~mopaSn~7Nvz>?2(0ZG3|(Y({|H@ZU3(TIL!xR_smlv8 zA|4GL4gAcvwfRd^R-OcSt*SN({XDaha~i`+d)aWTEr~nfuZXYRDv00yC0vSq?~@D( zgUz+hYV`NLYU?903lNmy{Z|t!Kb4sIErSyG!;*&0d5oUg?;A3Bd+HMhTBQ=&lQHV; zRSIG^LaRi4R%(%5pvQ_yq|43bkcoP6*JUckHj2DYtmyZ==>tK4)Wwn;CqT42l~Tpx z(ozGBN6xH=0khH6!4~7S8?bb5Fhc#hf`oCd-Q^r5)5A^$5L6Q(c(Oul*Ut?dbz+>34e zCRIq^Qr=Ks@3GIDChr16&ZVBz^ODG6-MQ#1aN-}CdY2;qa3t_J;l{((=7eqc6*gi5 zI}g@;oqNfa+4g*wd&`IIN$&{jr8a(sR!h_dE(!a!}U;QngJKv}JniK+1y`TrIMP9G*!S+9Kh zMCKRcQDLd}2aFKb&f&1g0?guuT#@En9+rMMoEiZEQw1Zf{ zGklnU$Vg5-IJcj=Myn%MqPg*UKvFjy44KHx1B27#0)3>E#Gm}bfah4QiVzG=mOQw7 z@&%H65QPwH7hB;g5$uL5>>Mwlt;UlQf=Mg+9{Bv1eCen$c^H`x0BlZ~XLcU7A$ zIJNuA^hf89?6i*lxn53VGxDa%MAq_l&2B6e#vEfLv(j4~Z%|a=$-fV_G52zPPA5Lr zJOf(%ila#dalzDq=Da5267w+b#{(st?8T7IEq{hoH`nO2Q|GE#BsueN-{7^tVF!v1$G+azH= zqw#1k$H*sDA4On{9hU6wv`9+Q9X+vFb%Z>;$w)IaPoD@C!;DY83t=hST(QxQKFoJV zWwxu~sCdbOJPl9%0WSfQAiDY9$Q*>?M{*=f_`ST#XF{4=zRSE&IJ~)N+35U#Z0vUw zz}@9pe`3*`|A&E}+c-B2X#0`qcPCF0*wDNITsVGGp;;b{yV!Z7Y-A0z(M8GWN7*Ox z%kTrg^YH9Jy*zh6&0FiP!#ZYk(T~LcNY}PGA!$f*4wt(9YP#kQwIW3(Jz}+gXOE=` z+djg(^nW7akU2w+e65s@YZmy_^HWT+4Jx-~4^_I*E%B`=tg`ZK4{z7z7+!~(F4K%P zH3LICzw%!{R!Cp?H1>!mR_o^`b9)rDFf6k$fi0Qnw_!Q~0fd@7cmCookW9MK7w>#a zdIN{&jq$xKK{2(-QSp_0Gms!u%{(oKH0&mim50K9d@uR(2y<3@p# zAtwji@4v$7L3;fat=i@H)s&+^&8W*o(i`-soC+~h2qC#l&QNG~-g|F-NA1NuTT+sa`gLrm(||yBp%S{i21#}(4k&oKLe7jx~?AIfNCoY#Ya=E8TW~5}$)d-Qm#|r(;tnEV6|o$k?}%K^$+msg z+R~!+`0jMZGB8!mYjJv+mnGL_pH?j72W_49DxfLAwIa`eUgrbL<_oQ1l^<>2FiNZC zi3U8((Ahjp-yh1pU-W8+n11uLJ);Ga!8}bQ5(clf4uRl~AQsNe zFQwq?x8w_f+affPKRXSILlZwioi$t>S||-6uh7fRCkI#2>+*abI1FhP=m`%R!qxf( za+_-tZvER_4zo=q-2%C%y~@jwKwj*A!!GxJqVn;Sed8s-t1^i7qM^N^(Zn;7;Uo!) zFNTyyMA>+)w<*hu9A2gcKA(LUUwzd0<3q1TNlCDV}4*(;AM)4<;o4(w2cTcY;9S4$HdX1_%&}d3Gl9Z$kj8TV#k)Eg`Mz z*iQ5FQn)v6;}v1|ndc;hRi<5}^YN0N&i^@i2w%@Rb=Z=l%gmr@=B(H1wr9S*G*+C3 zlF!_+skCx9+})Hf3JeT%MY{o2JBUoFIM@y#U&N~W>F3)Ry&MqL45yN2saz`-_dQ>P zHoK<=QC~+ClYckg_HgS*H*=rbFpqCN$;XhE0&3+?#f1$q4H``|gWIftj35ghSG9S+7bQ8sihh>^NTPY_Q2CG+ww%c2H%RjzVT;bK7a%S~1NWeB$ zILv|8GZ%DHySSHHe*GMPXH){UNND1n{PZZ-Uwc<#{88QfoOK#5;R_#ParRzb zl+blvTQ1dMDNb->L9@_Y^%lYrZo{#q6m0WOU}&);PA%nbNlW!ZUNrMi2*CBM+y5C9 z0VSp$&C+VQ;NmLhNv`r|t1}PPj4`yH9y<(Ct>QEXnLJO~N??fo=+yR#lJC4dC)@kc z?}VT0X!dT{j&xMY&)MxlOE5I|Mj!zy`0>fVl7hYo%?`Fz!S&B>-DXiujCK9kZW@HlT?uX|1 z52FtxPHQ8)$fHq``=PtMW6+q*Wn5x-m*bWd8UL!;^ITWB+hML%qS4y&*6w58C=U5S zp=T5^S?8y!`Bf1@#`~n5gKfC9&&r?0zGkLjGvKsA+89yTc?r`5g|v@iF7cZcD}cMH z0){hQGGtZ~b&Hu-@e`JHh7(Z!xO_UKIObS~sJyUV8^<+4=Z%_>tL#2eSE9X?uKPu% zY0)cxu+dWtc71{D% z|HkEA$sbu?{6EbSW-xA>{7+>68*z&%*P{C4@Z)pe7j~S zflVq5L~Xz;MCe$Vfy^j-0h~4UJ;`q}> zYzkg{z(b&-P+@9Db*` z3iG|fP4v6o+!7Bhz(M$#c9|uSk8jE)iWGhgEkmbE7cSyq=CTFgmH(i6QT*NO!rv?7 zCsw*Q8be5Ept*BsAUcw~y1Hqz7SrQd>N2P}nN&CN?#s1vEcwOm6W-)U!_vLx!CK8@ z1FU;pvt&l^-WQGiOkAJL9G|}NRXE1sNsKDd?A?*ZS$FCe{@T`O#BDTWo>r8i1mY^V zut=l@Vp$vl_YJmj^~jm{d|SnX@eO?h*qix6(4{4S@0D2893X^+h@^gxNqAHgmdhJ@=!{c(JSs4*@d!=CF zKW@Z^e7hBSt24ywepP8au3U-NqDR?c4sYKri8aK=oyS-eak26C_YITd_>P7Z(=n|o%Ib4#UzMN|Vf8uHkSq)qC)&N8ps z%VO3f;=$7mkYlqsdB2FhIb`)(w@j6C71y(kuwf+4#Ua@;O`&{EVX|f?tH9D%O>2;4 zoyC0Morsi*L3z9VK4ZMEQW!MDm3TkL3Jai0@h3t`qpzqa@cfe-`#|suqr*c`uCXUN zEv-}2;F)^Za1eT@qX=el08I+!iD^qOCGuONzMpG`WsI0}->;YUXJig4AEIbgPbH|Z zE}tw@o1kxRAL-nvw`g8n&r10lGVDqs3mD5x1z6c9QmuG;uv!`>t5wlwQ6V8J5~cRT zly~G3g4O(cwHp0U`HF%NleNm)0>QsOcx46;qj~cz*JkVjVF)D*r0R621_8oM}mQ9PuHvwZhLT zBU*!>oL!2OKb@-qV&)L_!)saO6}@rp|Ld>UWOW5bx7y+M1War*`|*VD2Wqa0 z7v5z!*)q@tVpK43{O9Olm~N`SK>JnKQ-9M!ZfNbm==;&7vDa{EXE|uN&&go1-p*Dk z7K?JkaK&V{Gx-7{UM3g+ig-~(A|o_wo^qn#rN~lF`Q_i(kzmoAbFqfJ-aly@hEJa$ zh4mZcVvqg}%N800C{=8-E9rl)*gPUo^2Ghj*HZyBNaW$b720Z`&kp;y)mDgb=Qq!) z?3^xAr6^dDOaV@MhREOkS+N@s@`kr!Doy;eWvPOowgbpv{`bw{C( z{tcf_Be`iN@6Lhr8##RAFGCeKlr%m_M2I*RA^Y58m3!wAU#k4&;^p4d3})IqRV;DuNn%l)bi4=lZZ;&X@7TONdG- zWsZWC^7Ip86r6M`|4?pxz$%sYQe>)ed9%uC{9Z?gwrR%G@F?7d=(7^Xm?0y+4~&Nb zZV+!ij@{?P(yYkSfg3`va?o{EZdpCA%9e%vVzzs*opPt;u7)g9hZjr1HeQ{7<#w~T z&DT=VXYR^)64}+HA4!IHNKS{fhHzu8Zo_?OXHezl$=}z1uSfo#A;bA3v+_}_&No7G z{iV({nMwo!DzswaBm4M*;NVc%$^OM~u_~O5Dmr?^m2*f{;A}!GbOre5C+(XutdIb# zjSP+D4a(7O9(OH8D{9)_du$|bCUGt;zW6jrfhJyud_WlBVtlfDooN?)$F}MjpYW3( zPz+)5@xkWWxckMqnd@grKTNzeP^@HmuX7sRc@Y#=a;+_U@lY9wLrojLUx1Ts97uh)lFZR{e7vtAIw)16`|0>r|ta#TmG5$_j zT9L+C@pM5lghl;lSIfKnk7HNWMa(Fe!%7ah{{rOzc{HsDft?OR%KxH!C77V-L?1~1 ziR85*0&a10`S1QY%A_EO1fwnY=}e$N3rA819Id*Fr=7qQXvj%iRvEWEkx+w!q=J-< zjB#jX(tlihWZ^HeD!%?RnvtS~`=|}|SorjEKo;+RKS}~rIRE-n%aaiU@jOQOiAsk{>T=Rlo`4q$({2 zRz6O61pMP}swHcts0c<6e1-*s1mS~0{k;Tu34sXy{VWBd1%vpXa^QQyEWsfEbBz*k z{`=<+y#Cht=M0et`p?xsSswU*uLhsYgZTGz(%)*IU;I6Q6P$z0XD2W)bmzY>(7G83 z@HHY}vJ#@7+(D<=Fy5ckpWb9I+PGC^!9ij)x9dOY$bXZTpJ+R}=()U}G?!b8>ghfF zvaSe^Vb=4!AVL>IpZ2kldO&mkh^9~krif{O?HpTmC~PQ~Gnkd@)zDtVimf+FCQ z{~UQv;FyGb(xdSIsqGI*%j1snpSoahhgo1yVdH2u;QzJ=kGu}?pSmL8d^93m-<^6( z|84wl)Bm&!y#HU*|BU(n4LIfhO|yU2*Z;@jaw7kq83RE&IX|zVtFNQ0p{DU!Q~$H( zM?C|b1+9(6Xg6_jc0LQ^z=nvTqKKH}kg~dvvY3MGn1YhTn3kIClA5xT#ImOJH$VUH zW0Izvhmxj>;)=E=>bByFdM4r~PV&||^70JpwzfWuj0#MnV~k9fTyB*$Uwc>9m#5a@ zi5#8kB}tGBIhLS;C`G!A;(Lab68r-&Xe)~4#~EdZ=w*i(hXxr&m`X=k%I&P|rW#jJ z$=A=3LF-B&{qX=_W;9V^cYaBcm5}cFQC_(7)905OXe;{1( zY9?MACtlYe(0_W~wlGK12?-+dJ=a-T(O%Nl86E{o*{_5oWq+IBiqo^U))6;R^AUIQ z5yu#X!Xi7WhQokK@-C?%};5X&cXHuB<6Dh3S{8g=oc{3;O! zn~1vN9bo>M9W|mfOshJ}A%eequz#?3dbV|Vb{?+GZO%W4a0gW^ys|ipC`V;F=h2tk z1ck*5wYLPdcbK}Z{$V$o81sXb!$y@jI4~-h%2#QS&T{^N;=kNK^T36Ni0Fx9ls^2C zRR7~%n(_%J>C+G)R58J2CT{LyMCl`=O~aJC$nwgzZAb((3J(9`nV{aOfbQ9=01+z; z=tQhV(=rA2$m!B%_&9KB(O#lbvqJ>Mj|Assd!h7_Ssw~5Me|ca zng(ia7EbOrgHPH_y5UC=2|?i43g^O1)C!f^zp=ybNqBRcA7*0`Q>Tpr;tg=I52u7@ zTMY8d<8w>GN`j6kk8JlymSQ-LFM7zJT`zUl+=J%}XojQNy9H9hB z0%kFi!(9O!S`2JGq-d#NK@}c-CUV+IZpLZkI@0%nU9&Ft!+vIF=9VSA7c?S4T0rC8 z@5SZi)m8YmAD$7$@V*Q%PkcScsCcKWq_gbggEPx=7+&J~ANQUFH5&*UsYiJ_A*%ht z9}W-m4rTmsAuz2^_e>Vy#s^HZ+AGGB{L8sw!oHZ$_Uc6B-BE>$587suOp5IPDvi<>kHH_RejC3%l} z{f{o>eR%#>TgIv{;%!}ED8DBR33xgaB<@1XM!dWTi)m-?fFbZt2qB)M5}$};fZSs#xCJiZK;I&PVSLK>e# zM@X~$Y)=7HDe z$a6mBRdcH*khp94YWLdlh6d%34|SgsbO-Rh*_*A;=%_d#cdk>OuRbFIjY*}d-%Zm< z@OWt*dOJnjDek|dhn_#dsSU(LcgtUW#wj;7x(ic5^A_4yjI^<{e70OL{n?3f`<-eh z@O8~)0r4ya(Jwa6mj~Wl=R=2y)NSK;G6(SFKkYK_P&CP$I^&%^n0j4uDSkpi5FLn>o{M&5SRLVVf_H4|lEOm*8IV6Bk+{AS|s0^jFlL zPAku6FS{K>&r5Ay2?!Kl%%+7KL4Z@fdU?*7dl}w{xaG9kUq5ac;rAT9B6MuHVp~CA zXpLY;cN5B8aOW*pF;5ii%?~wNrt`zrJmy{h(|D*X*Sec42gFN9p9*JFr2EiKF!*yTN19CY&>~i zM26%;OFkB5anwS}93!=`*e?2@5e4mc;$w@SkUh^t0T0g;jjLpu1SC*db~di1`}Wmw&qNlhK@ z4uX;W>_1+JeOd+O1RJO@BBr=71g^BhP44=tqFX^$ff*v=YSxn`Zu5|Kn*CR+3uBHCS1oSnJl zf}uaweLcrZuh6vV5<_swK=8;Egw7^MY&N)yZV)Y+y0W7&Z3%H_?3iB2MghMU!{r0u z+=E9XY;3&A1-N!YjO%kq#BB|8k;xpO0;RhmKqJyOQS?#6#mT|pEj6~zKQH28a|2$z zeT7gP&Qt`f2ChiX!{Kh7PCVo#RKX<{3)@o3c!=A)0%bCK&79>77ZMunxpMo-^Xo3w z5x%cl`kIk~)PYG^tdK@-1YY??S8L>1nL0K>B(y_ztnXM)&el~dBV0?Eye5|r*O zx9#vv6n!n)vXq)Sax#%FvTp%~?4A;N#f4j!O-U37s>%jqN%ndm0%%O=`gK^8YebZL z=W3j1A@!z^>TLeY_LM9bjPNX2aDiytMVuNGi040Y%O5|jQxMA}fFZgt7<^utoZa5H z;V13ISeNm% zes~~R-XL+L`xK;YRpY6b60#ZB9f}j)N4Y_TMewr^5iaKgIR{&>PHJ+E4Z1~cC%?g& zuotJ^9ijJ+t>9VVUUt52bD5tk6!|6O#_+Hz4wqcyG19LgDJ=+K?=5B>(xpX zE%41SvLR-dNsC9CLbKGYxa2dBfVKV*U08Kw?rA&|3R}Fb_nWAM$1jw9XcKKZ*b4(c$@4jXvEo zI4!<@4QJ%8bQqoym70@y;eH_=Fg<4vWjS4QJC7kr`3K+7C?KunguTx6b>NYMNL&(J zF5eD1`nY^^J6tQg$1vYCjrTr!y2{FFuy+42iNZ5t;Ne)EUj~1kRKmvtpFmkWkeJ8f z`ql7vT)7=wGS~E(x zV9?xVI6@^y%HM%#-4XP%7F_1=$txgYd^ftgk-#Gy7h2PT41%zjIu5?gXV^dOP~?@* zx`Zo@t_=_z@)uNU$j9J132t96;(nQp{Dd}B*jL8mF?HrK$KZe&W{}O(giX?zHH65X zNu2>m3Mvf_OK^t{AOBPNQjq24VKN%3CKV>(Ha<$dR0P-$&yGKP-)pKq%Y>OMZ!h&! z281_>+9VXrs`*lZAgICi0+u>^%KmP&I-ju-59%GD1rCe#@;6mXyD>ka ziljwWaOd_A!tV#2*_Ne@;&GYi`pF@Ej7B051x!Q%_0J)4HzTHg!5b-_$(>R6&|E=IXK*e1I=clZ z##S+Dw7H$5XX?>Rg)mBS5*Owu&KI;4Lll%8S>K}|!OLLj(kq%2MSRqKiY}$fAwWLK zM(r$4xv0+)P2=As5N14_qcLOi*PH&r8Jw9!=&M#mHl-fv2mR^#iP%)X6^c99Jku@6f5wQr3MSSuUF zyyd1U6AKH>l0FYAC4j-z%7e9U8Q2Omy?+6}XY5@aei?#T9_yEo#rTlye6r*oM0Pn+ z1^FB4rOd;s53?942v5T`7_wOg3}KS^Gaqr(6l(cSF3B0cBVAh*4qIk0un=V|DiQ08 z@S05DpWKC;8@BIpA?dgmeXC7?v9W?%<@8!?9fCm9c>MF=x`(4#G&YhrO#wht8!LM& z_704qj|qFL#8pH8rRM-K&_UFJ+i!8#3ZCC1CFx{D# z4Ci|ru{PUy{PR%z-wFZ#=|x974@$jKOam;1xlxIIFgqiLK*w-LRpja@4Ayj0zAj`L zA)Zmqk$q{A6)AyiT_r4xix5c=K5H$V3;djx^H)~$0E=#YdQ1xJttICt7_nrn?qKl- zzCIodR)K^dV!{Mxrs{z)02dLkD?xa2vaY*>e?HanQ}ZnjPwRdoGRy~5J7iG+kmZTCfYf)zrB!#^cKicVOuCZgssqzEZCex zaMkdP5^)uUiUn`YmJR+Z0b;_z>WDYg)zeX5YfS?NnNraEo4vQ99>tTPxi!_FoJt5_ zh_$Kyx~$iLw^OT4k1#_6^v`G7d`$zJZ2@U?79HxZaySV0X>RraTZ8o0L83BDAOS`d z5c|mP(2`uA+XM+G1G>>eF_Z3js_!WC^uTGD3+wCaV#2SbgNe^lMyGFO{N*8TVK-z- z?5wQlD#|N<7gv;)<6!?XOdSNg9g4m#yF@U!mmCojwVV1N&4haQ{mqTsEpAJI#K+%1 zMzr2(iRWhMWhCh*<>;j7XwiA$sHY^26q;cfbP%@G-_~zM(g{$5&_8H{pZGOtebQcI zne_2gNShM-Fc_=mfV*3HT%%^WRDiSX#N2OA^K-}<`rb&@Dki-ME-}oX4woe0#t}~kMYqo&!cTy2Y&1IY4cY|;m=?1R$0h9QoJhcI zA>vE*WacUu8J*7UQ-QP%WA(S%XvhQX26`8jf91CS$O3*S}W^O#>a zw1p$=mw-yzi3`ioP+Pv{;k%H)n?7- z85g3$cPsI(V&6&;DEOVd5-#yc`#>4bdGnL;SF@=j2FukU@v~&8dv?^A#4lj7 z>3ewhU(z-w5_H0D9D_rJZAF`2-0n`_WlhZI^7^RXRx}^QEfRg~&r>n{41hMWGEsXkFAjp)<2crRD=~$8_uZ98rIk+J}1C zk0bkWwXJw?s0OT(2w2q~7p4+BxV)3^Yvu>Myjt=Xw(-9XaGHEmIRCe*iZEI=F6!96vYfVPg(v zq~!SNiO28hn%qEnz;3R4)R>}^&Z#OU{BT)KMfJ5)o9pj*|TjdE{x#$8-2X(Nmam*6i9f-`+H{^f=s%Tg*dxadLGc1W?Kv z)f96U41AG2?$6fCsZo?=Gr)YC2|MDiyS;P_UM+BDq38SGw_?-Wat&t7mqnBl-sWo> zVE#0j?I*u)U7XZhk5H}oaODVfw!+M!$;dG2{^`dKKK|-d?`8bwXTWP?Tq~dMwg5N1 z*^A%0=iX(2prWE8Ha2!~%xZ`EK;O-;>?}Rv&wrwiKmQ~Ys%0y9SvHrP{-1tFsswH=nh6 zdIk7A?N;t)yM-)A%ULfJi=?<2HisV=7B}I8$i#JsaM; zG1^L~Iap`)ovv+eUMAAv{+&Xq?D41WeUYE%e7XJ4jbiJSH+3c(#XT3#1*YqIZaJ}iZH@XPQIv}Mpop9J?xw$S)RE^+i5Xmihpi(h7!7H z*14y{6>yk59~oIWXu>h*EAnf9bpBNz?<#NjgB8Oc<>mhJ5apY z)h*3O zR-@DwT&-|KR|v`}q}8S|K|@nLHj`&;div{d^h&(1#rwr753_+l6k<>qqT9n|k^vRr z=^s-9LbgJsjNJvv8aPgN3ybDoL<)3 zTZ1q+7gw>FAw1k~GE$o>_ZP9|3;_WuC4io86XN*P7q@?ho9iLd&5bc!Tc)1mrlsUy z{83yDE`{K+B#nF?Fl2N+`&s4+1r{-mP$fPWhr~@XXX{Wg?qe4pxpJ?lndk9QqO@RJ zD~(bPnX+_Vtmsq^J;U(B=`y{t&BLa0+#3}+8~vVC_b-z66+39^Zvbr~7i-<*%Schv z){(ATMx#t9RC5S-HoRSAgk+IEtGi=c>PjU87Rb(i>9Arx)KhY1q6@{<)8^q;H#*i& zg-lkQT$qP5bWgocT3}aOduRNlR+aJO@2idH{Dd1-?&-jv02)kG>M$bl$=rA`DTIL5 zhWi0U>B8%2k6U75IYUaP3A&1MXa8{blIXqD@5)+jAEg{D0)Tb_rs8b{1CKnjY+{(9 ztmFU%_7x=zTZeSCcrf1)7ADcYJPpe#-P2lQFNFZ+MK+<_YTd%pa;bI8E9?69n%C96 zV|!&vwmyAhX=Z?ZS~ZxB|0&pD@D)WUcJo)7mZh!j87;w#tVptdOx>yUN1q=1#Gqo2 zG;%R;L|f)=(J80I*45LVr)Dbil&t0~E>3E(i87M&F}*z8`c= z>ffckrSX{d-{&s$u$!z0_We>O{FuQUAPl3CZ78;T8L$?W!YJ%}n^#vimR6ORltCK& zA=huxQRX%5BD8yRzmu(FO=|b{cnLRjg z&T@I*tC~uyvF!+jh;?f>=$IT$RUQsRbeT-8Jrg=@F(~|2J?O~F4o?(mNLtK|S>{KJ zo#nxvzl%7K;)nhE#SI?BtV@aT{rh7Eml`z>^7(s#frMYFXUJ>Ma=#QSM5`Q`bRO1Q z-SPYB*~*`&xILOMfYu2dn$p<)KDJmvn070WpTevpx2?v%hoo*e zyEujMEj8KZGdJ5TnsPPZWkiIF-LSnnC&tkoe_LokyTC(Q17?81yQm$ST{5PA3c)?Z5yJ12A+Y^*-6c5wSO z0myqZvav&e${h?aS56igcB9n_bnBs$RoLd zbs^uy5v0&~#S_yKbAF#OoklHAXU|`ntPt}FSjif{4wBA!eP4qvkcD5a{GC+-DZ_h_UALyf3a(vs@k8Bzuwg)W!IqOEs9BR znJF@Y2(7d5Y@@wxdyeLSDO33Cp+DGYfZ1O1nE>I#@j!>b`2fSD5D`bK3-x2$LZzINZBp%6}PF6;s%4~9&4-Wn}_{(LsBjrr#Z zxDLc+$@?5+QY=AXHL{T}TA%;?{V^zLbku_KgiBUm1iYC#Uh|XVzTDH)%}}KWtP9{m zjHTmp^6?Fhe)4=bXN|dD9_XMf#EOnMf1Z+eOUuYO#3vnDfC8XVPla=lEi*&Mcb(+n zPbhoe9@_&4j`Rv$eovK$iGLhpJEZ|Y(2XhLbJV_Ge%elO;tn2zucX^Ko5`n%ISxy< zFt)amJ_}fOKZ$B{lx-q=D=*Pxa;&X6r=^*ZR07D!E(B%&J|`C^FeN{Lob`uA}(f6T-aIXs8skq0Cf zV5z&<`?PcO*3fpY9F;7bUpp7%#|2+#!z06?o?IeZ%uK6h}d+98$80MPVjm@;NeSjqAc1D?H)hnB;IiY-QTLyjG? z{&}qaW2=XM6E44wJU;;gKY_ewz;ARDc(}t@FpW`SfyCfVzHm#B{O&j29&9Co=tjEc zl8-^(baYng2^*_@7eW9}ErKFYQ;?HD*o=cVEH(T;O!HfetPF$q>kNeB5R`?WLS2+O z3K176DOC-w_2LJ=tQ0*}-9qNP#JXgtFJa#BQd(Slrxwpo2K(~pFa(O=s-!A8u zm$^cS)yd)ULTtjN0CgXY37D2s$T5oq&}Ek|UM;bD3ew`{u_qliT{1e>@<{l4IvZMQ z2*RImJ#}=@h^KlXg{?=&#ta#!@;LOxz$qu0z+uDRE?6GAvi!q|-rc>GDm%Oym=`q6 zUS1X*X|X?!9OGv&GL4=a@VtEQ%Wo9StiO!>NeGXefEe7H5s)hp_h#+nEk~B}ThQe_ zsSC{){RAvi9-Q)$0klZ^-tx2=Vx69*?(tgmN2tyEz<+zmgVJsz;-tHK?TFP#xgu@z zpuk*bq{8O0f(uZuED{S7lICV-uO}HYnQ3;rVXvlloHk*sD2dFuWjj^iI(uRHVO&3S zmJY8>tRqhp>mSl_Wo-B`5`%_=A5V6|pagv%(m>z!+f+D9CJ}&GttkVPB2xbmVoj)hNYGPYk4H~$tq*OVrfEmXJx z;T9c^ct5LG!1x&vpvt`;;8m@}b-%t{A1oLbFw8=C+sG6h*)RZkW!m6Cdcs6|8{U1W zx-!cl&d9%k2K0?eG47(xVWsGCg z$SCQ;rk#ys0f;>_PJ`(50fFLTK?U!H#=Iw2QI;P9#&h{(-ph;-00pjA5$wIrjWAZS z(vZ=3VN?*|oOBZVa>Ac#XE{coln-s$!o-%B|Ac| zG{!93XRg7@5hj4rZ3!fRAcReR3<7T)RgdlCL80Y|c3R~;<@CMXlruoHZ_hItaL0p- z@2r6Q@$^T`VRevJHCs)zw4-`>Inekss_-d9YNA0(wn2{OrvR|s4t=I)oRwzeh+CrN z4IFZDcJ>HkO93w2zhX0cQri?7hT2jnf^En9&NKm54Kg}uz&bgp3}i3PK*n5g##8aJ z=V(ES#w>7P6Qa~Z%2G9UsNJK$p&z2JxoLn>9PYa zhK9Z3lU$6M&R^L`oOEykX{k!+z9fc5y~4?{wrd0AXHVk|{iiAPsbza+IWi7i{gc8+ z>dqF4bl8p(GJhYW$`O2TT*=#%O%h~&b&-hXrP2ZCT&ZmqlNQY33#AQ1-VZZF9 zepe;~m9q#5%x&@wARi_A7YQ+#uc1?3F0PqWM!#(yQI?ja8s02@0R}?}RyQ*Bb%7ZF zXhl{ihdRIxJ#X`n`a}K%@#fjf;5S^uPCI41Cg=SRPXvKrh*4k~wd999Pr(j5p>yo_ zQvV5uf3xlaViRfXWZ)~Z9dB1Gbm@}ctc3{_07O9x5FDs5*|K)edk&|42i(kTNDe?L z|BlC<-#*;iyE~W6P7@2;Z`|b9+Oad(L?9ItluZK?CsR?;Z31E!xBErU{RDEkizsLS zdqJHtl=)4EjcxY+y7JO;AkhQ%y!9YmS;dKcDF6G_h8|dY=mAfmg>D_|aT6=l643QB1#nfe_-upwam{BZ1O~wG5%${~7csyos?9n}A_VYj2r2zHfj6s= z`Q7}D^u#Z?vRj8b5`K;^y`Ak_qWXp0JvfogcQ%A@xOf3=H06HJH%I-2DT9V_4+dJW zV@6-V7T5HtfMlpLGZ$| zB7TsDi;rJ>hOCF!5-G*fgx@zY`xzHDEO6z=FbVtFrrS0q=I85yOc>;Bc|mV3s+K&l zbuelElX$QPLqG1;S0CNhHKHo(pcflAlu83v7h4GILt{w;-;Y%Fqy6hk52FMD^vyb$ zH;MlE;ERHF)y+a2oonOsa*AA6x%3sKdha8B5WmoMR+e?MZQkDoXMqH$-VK}jNwB|x zkWNy$JcObpDnPoK*zsX%0rc*wzRN2Ir}~F`2WO{xU>UkNR`;2Gte;P*=Stz4$DU8w zFRV_DNH3zRh0@sCURzylHhPdeHH&}&n}vR}qsI>42}_O5W#v+(O8_Pf4dl9k(;*P` zgu#i+7Bmu39-i8%quS%_AZ)8Y(DDXiJa5WOIjn~fUIWt|I&l=nHtJ3{TqXpLueaR2 z8%P%gHTfTXl#KfBlDbcdLL!bN0g;$DB)QLY&fTrVG@kBjI>-_{X8Y(EY;Jq+{BY-7 z=0>W)kj?2ABtCv7ORp)pj&rcVuXM>Y(0)2m*iLM&vYlmek(0!k*Vm=T%Jyp8!$0H! z`oLnEvi|*fiV0lHIjq6^7qk}RS9p3-ejxp>s=L0jwz;*syty8&FsgW2Di{Xv&28;0 zt!-`l0&zJ@#ms=|>L$o9Efgi^>dlm;_djQ)F!ck8*vRF#Bx^z(^AuRpeY* zxe;a%i590>T%7x6EEMk2QEsb3OU0HNXTrD`ZYmq%9|%K zG=99;B=ZXF|gX2d4Y4{at-opco9RYal}`6e-x zd4C1K1n9T|>CN4O+lF>N#?i{oZJ&ixBk?DvRQaQrdnFA_WD2 zLBU)=4qoyIvOnNg==d_`-0 z*Z%6O`&Cq3F$kT^#ywP0wbC2b9?+MAvm7fMTr2CU`@!uQmhkO4+1W1R%FC>K>#4hG zN^u$!TaVL%@0WlENs zsg&n;#cj$+gIMWrC`q}$bJVcm7VF-{{IovE*q-n)D@#3aZtb(jUfrEyq{p&gKR$y* za#vY+f*6@rK!{5*_kz)oF8^G|hmX?>E4+gfSSitl!l{FX6R3WgPjV$;{Wbq~uvQ$* zZ#d3CVWaYaUI>bvhjEluJa7OB0T1;!sN-(ANa{<$OXKV6#B)X7$HmHr_K$8YQ0p@$7Xk?8@~+_ zQCwVHbRq96SEh1`5M(=xVBUPJ?_aMXjv zhwG&}xDZUJeRuw9XH=lloL(d=5&jS_(?RwM0q&!R)PEX4m2lzXgxWDxg|qP9R=GG9 z^6ck&=PK43b5WnY=0*;}A;ms8Q63M(kkVu^69UM|IDqrcQsDhn zRED9A6{^9BG8PSib=})TW;qJbyvi3#|jyDBin>M;=!Dqr-+!FcbcZd*)# zc;h!lh1T~?fr*5)`-$V*ac1K!Cxi|JQCq9O^4-6F90inCQcxKXLZ5_}!X~!`ht>9^ zVttS^CSJdy3vo|jxQDrq10&IdWN$m_I`A*kx$N(+Z@WjpJ)>hTV`ePtmSPW~Qm_2d z=?|(SYnX&B>+_5}gv}*OXm>|}y{oPLu;Ima)Mg*ol>mkJ6z0j2!|7bf@j$Fbh|EN6 z@?<%aGXgsn!6tf9w6}w;6mwi>G-oWWg$XAU2yk1<(1@5*L2%fx_~5!&JgqA&@=`C% z?FhO$uyfz@^83XCY)7H2Q(HoNA}tf%=;VT?+RuUX_U<5oOLa~H4JiPO zww{S_7)neXDNw1L&UXU<8xiAygn-Q~`o-{J_HkF>LqMLckl!K+Hu6AyPcc|J;IHN} z0W5!+eCR7;3Rnt1wRsA_eNE(bj7)UA>r2F(gTXxeM%KC}X3#XSy~)d|x<7QDqBKl0 z&xbpxp7=IhuiZz9)u1I>St&dMp)2C@{<R*FL6BU1GYD1KcA-HM5;995;sY(E2-I1ZyRq;Ve*qVyF<7!W z_@I7!(JFhRnre=kP_o`(UF@Lg;nn_OAR}tJZwNY(vpn{(w#mb0XNw%6CodTc(PAPt ze_`RGJ<>s4jDlRewI2mVG8i4#649N5mG;1d9XYoxKu|i^4*IEiRglJWD+yF$Wpc90sy^cEr40S7X5Y_PQK6y6TO(-p<2^;Td4pF9qfh;v$RrPA78IRATG8 z!iBzN=z+7~dB_`%h9f_8VV}99oF2ruQ(mhH0P^D`3&6c!ug%XWNmaqMs=b(+HpRS^ zY*gRwX2pWRK3dVPGWiH*wF(mIW!vawfAOkr**^Pna%!=1!`U#&H^+$-{!Hh!vHF7u z23F*onpQwMX+cV75f}X^KmDweN+Sxnn~Tp?tST>H_$c$#fEmr#H_|QJDFSNoD6ku@ende;gIZ4-qlRN6G%DPl7v(n3?tOM%IZg0u{TVVSa z!J#EnME~1#UJ6i0TR=ee-vXq+;FLGW_Rr2L;Qjw~Gyjy;iUJIj0P{2Sf7<=49AOe# zU0qWCTfhaFK#L&qk$-mT0q-jEKpiIH9AM|sKV_59zzy1}e8B@$n12o{0Hc2Q^(6jV z@PC8yH*4?z2Ic<;GlkmL*4B#s?*j67g{@68d|;LlH#doZzN)_A}^2`H;Kphev3)Y zx-W{R2ri#M0C`A?h5@l`bgqc^OrRA&?|92jJ=I7 zC@_|~e1;pL1|x#Od)j1OVmx^Mcv)|34*Z!K~PRAergW>L6b z^r9F5wF>Zap_I}}12O%20bb$*$(8Qts1yJ|u*Sl#P`ZG#v3z{Ay_5t$L+fk{;Q!gi zu0R12rv?(h2lGeTkD|cle@@DOGPtBtvDYa%Mc#^njE)9iEdhzArNj$7yrB!LvUz~< z4BsJaQz*feWYH7-kQxLZYX@%PihdX^VzSykUVSM5cPom?qe=?O2i!QLPd#Jf_s{|R zw+L+?kxt@yK)qSX?kJ1i=!e8W&GRc`J9I#DAWwD62*Z={e}KCHnE+JA$cAG4?KsQd zCKt0^CXXGwRhf^X_a+p`HIaE8Q*qX{slcf z;I^hrKaI-#3&?c9I4BNX@%Wu9HcG z6%_wP@k2IXG??>^rT*JFkm6saDHpr&Kl!?U`{NAQRO!@@tQ7z4oPQzEG6&Vb$-frn ze`(NvibT}F_cQbd|6Xw`+bO`&Pi~GkJgs1PV?%YgH}qKU&Yb@rejD8 zbRN-^atVck!Vpbh+H4yFsmcqo%V;0pko&>@j16GfB};b~DW^PHl3bZb42q+S3Zu)EpEt@kKe${uHNIo8Yrb!=JxdJ6 znw;CEze$YMFJ!2Vzqm$91CK#U1ei*&(CK;{65vddMV0!s>Z!D@4>nM9xUiC+$oGxxKbF(*eSYypXL&9IL z%5k%zAs2IZyyz(PuHz1H9QsQU4XW?j@M`!h7b*&+{FhZbJsV;ki%K4~W+x>) z>VDpJk{wmpqCIC9-euc6EzcZt2!Ct~1&z)zrsh@D+P3`Z55H!OGs>ol+oF0Qx3Sy^(}d7#z!e2tz_@$3xPR?%LU?#!M}g3b_UqYisk3u%x50+ z%G#k9GMZp|lGW`*k19FToCp-IdRLJq(8*8~DC)f4RvcX0UeFKB-5TanOtc4F_to~_ zf&e(yroSG`YRz=2(DZFq$Wi2}3{TswJnc}VGcRuUQIKK1Ap&!XO_#0|Fjwo}%ZOnK z42u7u?dv4^bx&G;_m2la%_jf;l7*o8Ai9i*J*0vSzpgO3ePTp5d#obS>K+}BMfA!H zs?fOApg_yY`;zK6qvOLR)eNYcP-EhlxJ;+=y1M!_t>wjyKb~W;+{uKBNs%sESKlQE zf7jR7_y5H3!MA?aTKarXV9kB;ZlwKd>&48&Y!E68izI!Sr(Oe-V~?iWua9q^*lFX< zto>EzYsE;-R;N`j(WA|q3q4FfLD=&f4Cjn$P8cuIVlaU65hVrzr>i%BBn1} z{4RTX8`_VK60@A&(O4XRiW*Cj#%H!u*A+pi`{;If)7+DLXK5|2#BOeoWY75$s}1F7 zxP53jWly*(-_sORJ*}W%dmw;NH-*~LVm49|*aUT68yoljWq;e6^W{FYh9Fq(s_0X@ zK=$ACX>DLb*>|jH#$d=^Q4xnz5gi2ug)`l)LqkE=bkp500{$n;73y}z;z&O%7RP*u zkH#zybiS6;nLpm~pOPRyyc{gpH@r#e#$3CZ(NPU|%#*zRpxX*RJM9ot)(Va5X_;6R z8VjLA!l~!TTA4gpsAJMFIq##YdlpVALGre3tVK#>EJP+QR1%8Bhw7Geq_clrx?}5N zbyqq&f7r#~*66{`NXy`)%C%w|6Z^PNMlsgbZMYI&f<)O}Q9$<=zm(=R3IWXkk6dt_ zkofmkSD60V6>&&|Kl*_N|2yyz-OQPBI_~jq{HRYM5~KW^M+oM~djcK4 zsnYw8oZpq@BTggA_o3oGmZ}B>{gPb7Z8cJ4eL&>Qy+Pb}+|&c*BI+_cs@G~@XTTt- zF&5V`!U&ZWmitBq=IeLi2aJvtnX^^}+N1=Tadu+|rbfX1$lWrqKwHxE_|tc^?+X!( zxm8mqRiCvuD@mphep2T^=ITDG*f}Z;<-{U<-=D zrzl%G84ZPA%Ghm9LT>$KGkzZ`^31MS@Xsck-e~Bi<%Jz7jP72B^f0{1<$Vh&(>8q) zbJtiC*J+S4d4G2Vc*4e~Ci>sPrtv*5GJC_Fg>Hc`FnIieyDPi#HuW;oli<%ZsO2=El`wH_+9_~OmhO|4;|zO+vqij4x|#asN+~~I2iR& z61sX4C+5NEq90Ef8$%Vxhaz<^v0vG;fzUJrct`*A)TZj+91&7Ua0eQ_*5TP@kSOCZ zvNz>z9^F>uW|yJYic=x{6+OpkZc{;#mrBb5yc1zr-%5E zVT9Q*6SM+;UczJNPCT;2A>_IYdfbX;QBzaSoEVtIXMprHNi3ft0VLu0?-gSE>x|BJphH=b^bIUETEE>=hw4&Km|s zb>*{P+1j6!RsyZDt=j{|>x#(#hqtecit7Esg`vBY?nb&nkZzEW29c7GMx<*%x{(x+ zlx`5D8M;eCxyB2GfYj6(d?03JZv0_>7QVklSW9#(lpXLTb=)4|v@W5(wAAIdPzYg=oT0Lcjb(q6jn(di zmUgJ7pw6rCTIXj9-*Xz0m4OG~gw+$^k?BE`7t4UxD^`47ob+mKZZ;nGIX7|-UmQ6X zC$DXUXu;MN<;c{VWeYWdWX z8na^C!)Y%>Byy5i<&@SJJ`6VW+mj~-4?zMaMMWZE_Djz-&C{uLAfT_*>Ll0l&PbxM z1anj3Qe0GU^8$LiFC1Bv%6rRkF;lqNG`+mAOuo_#zcfisxs^5^LrpxI$hfH#+?_J7 z-x<(;5n~8203I46f6+H727Sc2C%@f z-2#;fw3KR~Q6e|j+~aA5*Da}f+9$3;Sl^ZGycB=3uOR@jVwMWR^nBmpJrnTnrynao zoGI|@Q2*Z>v(Rut7R3_yUveOZ0mMpP2RER>e>HN0bbxU6Oa|A|GlvfRi7|r6M_BsZ%kGY@EKwOsLTF)gA72{*_GZm z|NbtZJ^`Omg$vIA-y1(9flNk-R2TJs`2;cW8LQ=^Xa9S{1*$#;(9&cgB&89NsnC{Ydgq;=;Ea6%cF1qOW5yzBvgWv%8dV>mYp zs7}%$gHS7D8c?DG0AObTyQRSMP#SUHhlrkS^-`u-+F(X2ATc#rk*IWU;nue12IO=0<#CqD#Erwh5(?iLq_#*%F^Rd9G+M zVUXmAEqJLrUe-}`xop%)QRfxPRw!VULqEet7gnBN)ukjupP3I`Bf_Uj#>U3^Gs)tE z@JISn=KUQ}(f7U1%qHaY20t-!qCH_;LAE3fGD9a_P$m9SMi!fhgwKY9m)D@x$6He~ z;ikbD;&#%@+TNY=(*1Hpg!l`gU?j;0yHK@m9n((E z143_)P^-Z&1jOjDPM^0!dxdaGNIW+OzZMh}bcGX)qzO7*9xRC7pN)55xz@$3bYO|z z-7Y=0*ex_{3?z-D@~f;jo1QjEz&H}v&=T!F!(M7n2KM<`gC*1p*LC7w+1s?D=a@g${0ICyGpx5bJL%z|%#jp>zD^U?l=h=I7r|9RCr0tY1hmx`Tx2>afqgVpj3m zuleosaBWc+4uTp6A}Ul|BSSOjKR43{Y;e^4h~Kc?{fkI-=j99C7)Z? zvw-^ghRTYXn)|)#5p2#qz~XP~9I~v`l>Wm!PCV7i7(Ay&x-q_KK9_^}4;B`|&ZU@` zm_@ch?r=oQnqec#W}Oj4+{?%yXMa^A5fPE1T+aU@fRrM55#}W+v70?4*tG8p-F^{< zMuZ#*mM|sSr-j1Zf>DJ!M>h|TgXv1RTgZ0B0!zw2=lB71TT0GJ`Lbe7p_Qn#@l(ZI zm-qEQwp+q7j2ik}(=jl}UZ?fDYHR-n7M`LH-KDHO2<6FI+4Ml58VW`lPCaZoRc`$K zxPs-2jDgYhR{s6_^*YD3*&!O*o7-D7&wB6EA%6Devo9%W?S+kpEw{lGKH%7#@wCDJ zBHSu8I9=;N=*MDpO{Oc1Ek@F%$99HDBo>l2armP5!7j$OZ=lylwF! z>Z$uc$)%^SZ*65oOiUc_1{~vldT>VEg7Wg7)AqqZ^w8gB2A`L)rLGs7Jrxxc=#`Se zud1J&lI&M<2Jx{oGdF(R2rDnQcXPXH@xE0~6X5i@yV@Sl@9F6=wT~|-U`%UYfEzNl zwq~A}l=1YfSc6u^(QV6Ezp%*Kz^A07WC{YOU|CsMGWmdrArnQqy|;HaCQI@B`Ez60 zQZN|&%JV`;S2vQ7vpt!WLgxJn7+g?R76ePf$$5OV(gExlY|^o@u?h=Flb?_qWGKmj z*;Gr~=8|U)sKEiQLMZ`dPAC{1m@955JwON>=)AP`}HjYg{`_pMO#-xE2}G>qnr#&ChSx z@QEp1=t@sd@8^c5H;!Qq7X$Ji1Rj$Fbe5}sBZjE^agjz=;x08h!4DY~qG10X6q0z#=yWjolH zkR&q@E5#=fTRvM51PF;L%s-NwF3qKtVnMRlyAh`uX`?%}z~Cby?FT4P~;B z0vk85iIB$AFXWX3c@>@+5q$e@e z;-Xt5pwdHJ_GbgTMk^HB1T}0jXP_Ax^anWRu&T7G@$utHBnf{2c6`uf>I^n~@UrFS znsU?bh~tY37YBzeOR29w7V;NPvVjDuIvk(1-QK()GAs;Lswlt|Y^guD5Jcp^JYDZ( zp{O|EkAP-Alrp*Sz%BZ3mxKg^vEy+aNwvz~MTSfRp^}?$h{`=*O{%EXDYzlVuhej&Ci!OQkgWW&MN1$`%`!3%05%m$?il<+J~OU$IBcqAVt8E z%VdUM?(=KrUryF}_l_+D`6tpPGU`#61SM=&qAqlVlv17kjX_#|%BAJ4S1vcj>R~Y=#q$f?-{mqa4J%x_%7As51_m%FF=Gnv5b7s<4w@lQ?tBif183_VGt9pKc&n**Fi0 z&;+CwC@_j0;(?9fTHur4`7LvBbMM|Go>j<%N)rdh=2TVv;xH*YcUX55M3D=Jp@~$m zZkpC}#D%EXZQGSne`R{!sVg~w(fhIp!|{RN2%0PcKc8O1SkchXm=2}zqM)EOlqv3R zD4Hv5OjnwI`0$~^!ALD;im5{EpI67g`!zKQ-+^SkqI!GftkiS1U)Zlz7dadl79J=4ueaM)Q1Zu;+1#BCRzYhUUMgfQ$nx}`+qX%hteW8MF zT+sNIis=3N{(hv`=9ehJ;P*@(l6*R}S+l!v?4%Bp%fqW*%sj{$hykPRo&d0xYoobVXKSp*(uiG~z$A zjS9i)+%I|Tma@0ry*Xsv_JHfOTVZ5n1!4{md1@*uwmiy{+xSw$`FWF_{=pQf&U~e>lVRW61D&qbJ(c#U_BgH!wb4?TQ#(^N%=y zHIT(@jj~XM1;1CV1y6em0PO5~#v+5NpkCturuM%-=ivv*RZLn0hF1f7^jyL~uTWyo zKc}Do*>Npv`NuDP{Qt7(AaR%=3^#i@OS6*ce2s&q)8V3`7bvW^oDsLl%}?u&E$Fwr zylj!-t+gJhVUs?MfV5h;k~?ie9tV!aJ~}x$xx8d&W9zn?P%yYSKX-O@1wg9kO~Z5x z+uOPd-^T}?nW(RuWj`?V?M>m7L`6k`$h9teXU_7b(Pdu`SOIM|?ZLIJEde747$72) zs(vOO1ksIiCv5lwHnf@2py_rD(Ow*Gi5IPXfJKh-QGIfJZ^kn!u4Kd4I?p`qcwwdr8`mTusvMNXFR76W)MUNu4T<7n z%$u8?Ez_w4HPSQDuexj*4tDWy*ep5?0{yybqK#_}rdH8*|!R{NYS`8SJHsH%^ zI#>g2x!13|;@kjOWMX1UmfS8tRnkW%d&$GWfvt{`{IajV|E2d0Px{i;OPgs9H|gc} zt*tG9K_w>QPh(Yx;?OfqunR@$bG z>B=J}ac#)GJns@(hB-vGd9y*pL9?}8t_<9Sez z)F34gZnn-5W<(FVWf6moAQi;LQcm-Kq!&3}?&NlxuXBvS{MZIdFfnJ>h~aO3e{(KD zmE7-l3Qr%({ApMw4)8~(F22{BddOmc1i&RGsw}&~|+V9+RU5j>&SxpE? z-)8^nfZg0c6f*)6OJ?n|09d%yoCPGo^iEZh7@Smo`)-Ck48=qizZ%nt0yPGebg$d} zp9}y8&$vzHvu(Hk)Qe*Y5;ipE2ES>8#a>Z+vGv>%q{ANLAIv#*DXBs!$`(8e{Av#| zad7#C@POJjz+#S`2f@N}MZiyAAh+Gj@^(YyD!i^g7GMbP8GEadB>{SX(zln-{o&qh z-(8=o(tgB3e;?#&^K+JkouU?B6C{9!;{x1-q^(#ysel7aGuX!emE;%}fz?`n0<-7E zp16-&90Uuo8Sza$iqtzaEIBcD`0u!;8eke1i$PcWmNTxHl6ZJ2377+9H|lK8(?28H z24x7R9m$-g4laOdqDmqFu7SalCPgL&O@Z3Baj|Tgj-F?@rAhMlMpEmDhuyjLVZnQL zpYQ&T4asL|Dm1zS%OYT^&OY4VX89P!0I|PwXxGl$X1)%GSlW4~r>}3j<@Vq+u7432 zR`MA4n)8?M)e2Gwx*T4zQ)Xql#}3n=D>8lDL9OmP7EBEkN*oYot3_rc&{NN&ZeT!` zl3(zVgZun+L{w6G1>w7cC4w)HN~Hq;tK=wDu%Xk(cpW_3y z@S57QLEM5@{QTNJf|#SUUN7vN;gc}k(ik^!qKtpI0lL7LaNXyOxkawm z@vb7tMSVyQ2$H`Bb$jep_5=)ZG%lLE`&nTIB>uFvjx}`N93;Bt#0*$$!_H3bHN_pJ zfxU8A&h0_`RBTnLQaBo%qu5@P^=t(qa#Z zUT&jRm=g(XQvcpMw_|E00=c$0!q&Cph@Lw%9wh&Wl^3MF<d+- z>fm<`5>VCd!-z=bD4L9<+J0a*nXOoZ4r72k#kqN?sH-RsnN|C-N3T%!?l>nbmg$C0 zi~`g4Bp)l7??V*}6CU`K#^CGrq4O$pO43^PA>(XBuYO=qn4MvTvxBwaaj0+Y;&;g9@E#Pr|VdPAk zDF_<^qg1k7&*lr0!=mJ31OmPLs?$|;B^9tO@t~=r=|_ax)qsbGr$)Ic6!Y2+sPw=+ zkj4<`_)zzPLaSs@r~z#XYlvvrCsq zR~A)6o2rL+K8t+&!xE<*{6bG^R8ROS|8;6mGLa<}$eEIm;G=|I+nIkCjl{Kqef1kp z4V27{iX=!HT)sw0-Sy-CHzc=blQ-S+5*{?ou5y&L0gJKJ0bua6xdiGEGAY$^-^0n` zcZcV*X#P5?;whA2lp#Fg*xxU4k-sy1C-^15_82tjykH~Y;%e?{emN9}WNx8+|LyA@ z|DUEmw-wKkWui^?Ww!B^O0j)__B@=Jq#(&1Zqj7N?&yi`WFY^8!&a4}PC=u|%@eruDW?7&7UaFq%@l>SHuwk=7g#1oaAdhaXt{gc z^qY0fJ2bjIfIK3OAzpwXSV%uA9q>Tba2G>i&za-dUdPr&+G;&3w)r9ha$wHpFoVFW zGfgkUt;tlfYL#vjSCbZI^)f`S-eFoGlAlj0Y#69ol34-glw)X`DX$DqN&xxsao zz)i6nsjlg(YuaZ?1@xf=ib%T46vOGj#h5@a!JpvpgS6b|k_pH8rt`x45Oo+TxZxjN z?3G~_+SXAU;J7N*JFns_!CCe+@91e@X>en1zJ#41bcICd@S^kv!n_-;G{{Yudci=V zCqLd#S7N!Gp8$Vj*nauS+~g?7SB+TFQW=I>HMxB(IhjFTY!&_)2$OIN*FHbn{SCiB z!AeY*ZKuqW!b6x2ZsH*Y-ep|oxFZ`Re(IllFD@nn!aRy^XcNZ>X0h|&d(spkNAT+# z!IC?ONW7#$t)F$Dn&7}J$f_Mw>l|twRJ5-XpNd~b67U5p*dI9xSFpd(4?Lyf98{nQ z2V}uy;6*;p?5Wb0j16lg5J0K~ynOGgdP)_QLST4FB{1oMmtXI7pE4zSDKIf66;d4V z0^sFSzJo_i$&P_!T9`aq+EW$-)Z=;h7O$?|9!~a&ytC)$4Qvj`aDbU{bj{{f(!f=+ z@nSrF=vWFcu3_J^86nV8f?$)0J(cl=ucktC^?!N4oPNc_MoUw^)5fp7_sW1#!j|O= z{9r5$4=E~9Fw0B!bE2q|laCJT?O`l-^ngL0!DEB>e{)M4+KxEw`#FU(5Zx{L0Eh6s-(U1;&DvrZlM!ph;}VS4$zjnGYX?x>3cW&6xHa zm(8rc2p`qp*zk^_A-#`4d20Ktm}!G_ozKaq%hKS}^xO6M7`yc9Zumw4J(8B#l2~}9 z&rmx>(cC}T6Pyf>na=+1LA@a`x2q&z*=Ot^@ORmW`{P;lrSs0XuH@cc*pA0EU84%V zQZyF1=;-hMUlN0Pl{SDi*YIL)(2)>GyIW`-sx=f~i?Hv~We zj+gWoAyTbB{JQ+|bS`c(F>eh97Ht4}l=IJuEAQ;pZ_Y`@R>bc-GM)4roR@9JdQ#sA zAqt4Rq#7LQC}Y)44uY41fx6NOUuKY`TnbA#d;pCDb>XM$TJ(~LK|(TNo?*!kR+&K* znCox*3&5XpB5N?h&bP+9_U8<%GTa^~uKav_8(*mwUR#=?D9L~}<)Mz$^X;D_Vf#b2 z*R7K$84C-(;ZO*dH0Ey@ZV>!=)BjF4y>6>efNb+cSie=0owAVg#w^X6r0m%lZgwT~ zV1w8T;I@E{;|elbN^cMceWI=62zz~$E(Rg|P(nI(SWCm|>Zv-7a|Pe1Hx>cOdUMRX zmaWG1$XloMG}1+;QTZF4X$f2oe5n7^s)#=MdL}b0A?&o@$C?Ur53kYQ#l@l57|-77 zFA4aL5e>S}a|^5f_V5`&QX!viP~lY<32j^aUMrE3v0e6AbrT=Tx6r@)PzN#804llbCA^a2t7mYIFk)(j`^ zXb|A@v!e}~dR78<(jmX)#pFPRf(gvE7HKNXJukY+;Jj9{?hG2nFQBjPO^R;hO!6Oi5kIDrFJfXnOt zx?bfOj0DJ6B%gbKPw}?=V8PMttmPZEFWCmx!AQftoZUw$7jV>GzpQ`W%7X)zGwFdUDEeH|d~qZi8Y&hT3RHD_~Hp%KoAK|jl*rKEzS zX=8m{2TqJuXNnFF&^0dx|6PQkPv->)gD0E{76U%B^KJdB)84Kxjll>kb&WZ-53gG1 zQX}1C168`M81>fG)x?L<{y5)WOSLf%;BwZVjMk}M9bwli z@jLD;8Qc?+=()J;nwp_l5ui?p{}P}qrm z+L>m`@CyCbzYm5NeQ51J8D^M`Tt1_HAev&Cdi>J-UOX+n6a&2~Jm>tbQ7DRH{imDc z$tGOA6GLE6Kx6Xwa&`Hp1oUFEDNh)7N(sL7OePj38wQ?%1XFSWVU|5Cl2wIG7(?Yx zGbjH}g#@Ky98mN@tb$;^@>yZiLLq1KJ4 zt?in#!&kxv2)90^g|=?n1D)H)Z6{TH9OxY$ZWtkshPO@^G>2(vUa61G9dL9auT0bQ zgKPTZ{)QuxCzItVW&$$^!pTHQdx?nugoarAA8L7@7l#8QE=CsTRm0XM`63ZVM)arTsgK#?*xG&&!=|Lnp+p2H%rUt`x39ZHlUBt=M+EdQpIrM#ODi%rNa)C{;Ke>@k!v(ds|3o^=(N)z`?p%jj^*WqCbF z2=3uqDtP8Y^MUy*%hvNShSzc9^Phjr7e%+IwBegbecNBG{Jbe8tO$BT2i@5;l7Dx0 zVj9ZC6mR>4&QFF${eXc+mCm56FiR^&f#ynjlt%g2)3ajylHO#CKEjA>?aLy(T%*Th zD8?<+Ax7(7OO^Xypa>n)@$Xu~z_s`v+&Bm@B^!fYju4XB5Ejy8myx!p-W{araEG>{ z_D-vzU+-Uuw>Z2ru`s0@NewKehuwx^UxR5!Vyu{f_u7=CJ8~=e^S!&);2a>P69x6H zbeag9URjE#ebph!v>IRhxKofh=G_d0*VOBqP+5im%)=Ek!r79*{{jZj`|m-LaL>}Y z;6MO`&qb}9rckvn9s30=EBhgG@q+o7TRk3Dxyy&6qA(r#;C>M|xQW!*j9oIhOeIdg zoErnL^YR4d%VlZ;%=1T>>_GU0gC$BtpP5Q#)=Kw9jynghzc=Z!Y?D)kc>cG&-(z4-Bw*G|UdB;!@daAX<^76_w7%)~{KLXz9~qo>W(@ zPU*tMTJX|CDM=iumWzTpJTZy=o``P6M^E~ey^LFZ2GcI)wj^dyYx9{{{NPdO)LYrc zi|E(LjXA9&Um^?jeFna9GnKf;r&`uj8sUzn06S2R#+nWwU8Rr}Iy_1kb<@Lb3Ag4? zPE|o#9U*0uP==HLv|gcv5$w%Kfj`nujHgce9dXKlt>B10M_) zJf)q%?AP@aX++~oNGmO{cDL`tH6(If<*Ez*cT1prAUg1EVRf zAaegbmlGw_;d7LpHjf$#Bz5W}gNt$&tYvBx5v(?MVzDvsGdH8<&BgE<=e++hLwqe+ zo7S9j)AA|n2OTT-tteGOYTJPx4O&V<0JY#HL;ay(LqEWU3#-&>ss-oxn_Lc=h;*0j zoBS1=MR+Ym-{aNx!4JMqb-Wx=IUb%^QRm?C_~6Bt?uQ}ZzMt2r(e_$oA)MjMe$5`kAXtVdMO`JU|}<8@SVke-kEE6;?3`*PzNq? zYsnZ-R1&jCZlRm2++STw`8F?OPCGj*DDB5Ou2Fw|#HY6Yo4t8GWp6|Qkox#4v$
EBUG8*lB|auzgaE6weS0`-;RSW@a0@1>@RH+tJC0WY>o)-GDs=p2)ui%6C5w z@VH~Zuqbbbiy)Zs%rgn&tDhgZ8x=j772&kXoHYT~iPoyM-C zp9>7A@ATc7_~tiakF(OtYG(;LNNGo@0T0oW%IQFOq9;LAF>)Kl4%V6ri5SBo~qX#+{P19E&AtZG0E@rQ|t zb9zH#K*wzM+-5Dt_8nEW!Ep_hU=*3dra4WKFa z3__xeM_kl3o2WNbe!fbO_2+{vq4&h<%Lbntn`qY74Uy_~7SbO^n;kRaJHEk@n2{Kk zp}=KWW5+gxc}W{oP07Vk-VXwxhmu8?Y$ru*uA<(F?PZ>=o zXC%iz;$tx1Ium!l)yM#tKz3QzJv4weWI`!L3IH&;*MCt=s~8@&yltX))~O1ndfpWa z3lia4+?VTv^N_dP?$zgiFhQ%}U7#_mt?F@K4IH9*GeAy8@v;PIA-5oNC5s;L1k3E~ zT|vM{>3Y2Muo(dWzWGz~t>*+_?*pLq6Pc5n2AiB>Y1-97>+PjrnrL_wsax@W zzt~w;JF67x;80_4ovQBQM}er#smPurKE`u$bl$t%kvw7iNC~ziUG2|&Rtz|p6=tbG3VbRVX9rvF3Ir!pvXEoD2H8j;33|~ z3o>Swd>Ht74Ar1qo=|Lo7W^%H_wv2HV6sqC@b7yXxYsP{Q(q#PbP*;WzmW~aY|%Tl z(x7tU_o6CVXCxCYG8cXBI}0Zp%K%*ThWoA>-b&!%eH%?PiiXDT@<+PcU^qd^HDOWj zyx{G9(E#*~(ZDa!1f65EqqpXO(CcrqNqFw7;MDO zuIROy9`%E7-94kWaB^y&^^gRIaA}T&T+6)KaW%`4>gVNIRYirRx;Z_U^k3XBf?8~R zu)nBfvBJ@J_@`&}tyKN%a4gibDt=8E>@bnrkNonV917A^>(x9&kJf#;#n}a2ilJzycw?LT)+ln(Z3&q0AV6!l|HOFMG6zS$w7Enc zM}9~3#Oc0tw99-@$*gTT?)hBrKsd`gab4QeATe0(O>{Eg$eBYraGl(hRYTRAl~;gGr@qf{L&4hrp2 zhq#+7&-{!AW{`&t9+|$2q7X=y9hm+e+#0-q=Ng3Mky>IYFT_ay4Qi_3Bq)5Pyw!ao zz~zfyiB=A;mV&c|5K`18P|ofXHV6(0mnE$`)(@-~gy1=Q{`emH?Ju3;e!a4Pf z*I)i5?|=2p%l24(;Y!+MJvPSbe7f>vu=yJ{&s9gNnngw$sa?8Cm`0Cmg$p1U6DmA| z0vM0kJN#9P1AzIOc;;y%rG7ckoL`0aavy&R>!%ms|w;U)u=Rx7QiWM!d8^BYjGz&0a?$>wQ@wVD$wgQQ2?+kp7 z>sy_(YqHoCs{2H<^9fAmP2qlb*k?3(>Oc%SKsK{ZyCtFMqEI?P3#AkB#=87=^V6<* zmR+^zvO>jQO(m9l6@$KEm-J0XpPtEDWZ_DaVzi-}iJMDO{;b=KdtInq#SCP%swKfQ zXQ^Zfs6g=l&V_3eObiIlNW;&4YgjwFXHNjkqioeyGzy{+y<;O%U;V*1=&*&bT~*$= zz+Bys*7UaF>Nfs0(#K6Dbbh1}H~-8y8!9Mv@j!Q?x`-JSF8^QZtBcZhpS}G)`@=fl zW8&vgj_`~y(+Jh;`CeRGrug4L3^S;F1yogHBn4*_?}ya0N$Eyepqe{?T>;;jf~znY z@Yx@k;Ic7nT*wGJbeEQT_TE|%u~cCFan7ls3U1WdvHel?BUxbDUP?tp*cz+J$7?D% zrt;p4g_X!zYX|OkllO!Jk45$^5fC^m7=ETXe5v!&?>?UmLc*0m>}hc7$o~j~R&J1S z`mk+rxZCMWM~6p_EKSLq|8XoRK5XZvKCZn{I=P%wpD~>!|2gPQhJ0~Bfo1M_(|clg zW!i-HiGq@{j96?heSWMI;-Zc)LQZz}MuBZUUpQN9R*o#*~6d%&~;julDHj1mYQimHl?NTENRlAe=87efB7m?f-_sL%}ni?|1Z4& zeUh<`@VubzHa~^4kLF#$D$e6>2|(3F3{=4Zr1Q}SYo{}bKXmQW+&)Q6j|!;34p^xD z6<*~2VyZf^nZdy2b6^$#v%S2OxP}~a2dICtJ!Sh?oW|2rvXws4MZWAgP*1qG=%PcG zUgj3Ob->YS}WMVBI zUcDwJRE6@6*{hxjIXx0qu2qCFWJ)^-gNo~thrnUI$}q=~htWjcJW+EUcAw;pTwe>sPBzkq9{>kbG4*ZLYc zQEucbsuX$pVdF9yy~z~Jz9wDc2;tjnY`B*r56GUUAC)mtGA9HbJ>DMYX~?}KPsQ#| z5b5CHuhat!RSBCQ<@)QiXqopKV7uNlpa(%#)HYSxF&04{&}{(Dq!VW;h9G)keGN{! zucxcat=-`y!=h;5MndZXxm@c{nN}nKPCp|5#ndY^v(1i)USY@jvqj)EDB|_Zj01Bk z{^)6#^(LF}Y5Q640ol+?#xnfgqfXYr*sk3V;C z-+sAUx{tlV@4N#>LV%!f=fm?DPBDHf-8e)}0(>v0X+er^Gz*H{eWPEc#&<7$V-%yw z;X#1?uAsSZgg29Zu-ba5x9i(CJXrqjiuP65jzY|JggA_GH15p})LuIs`WuD&7zhqC>2zdtf zx)%dprfI6)A9ri8l$wyR!eJ2G7y%Itm-p}EWwQh*7*;b|kM#LF!g;mcSg;cy-B3)R zS=%{cltdC(NC6BioQ9huRV*{<-Wp4mLY_spi3*_yNK!jmyY1q)f2#miH~p&xoHG~K zmADLz=r%@eMDHJlzh*2`=HWeqn=Jz-#dkCXT6AL`eG`~gS*l9Tfd4KIjK(~^HFRoO zOh_0V@tiH73~Tt#$@0ZAaKfU!a3!YQ_RX7jjV`WyO=@&!r@9wjDheF|#LoiKgPSs@ zf>ecdqn;s)b@-W0#Wpv!Os70Rb{WVUXlPra`6tNVSf*~*_yI=hiHBOs%5bVCtijo{ zs+PQ;WO9zg$7kN4K;k#K37X*4{_w18!`3~6>GtOu1PNhQPmuiA=iz*`{Cu^kLV`_- zA=P`gG|iaM>QFLNd3srpzUn{_U&CgIW$*YH=otV7H}zC2UukiOGr+Q zBifrL77I`^ME^`7J%0E80Zy;Y7+vlVy1JiJN(kJ z9MgdfnVno|JN-k>xu(KnG1%hW*GW41LFsTCB?V9wovL@U@lcsk69g!wU}Jh(S`4_* zo?8jY}UHeE1E`kJl8Tn@OLoxG2x3qlL7Si41!U(^yba zyf#8%iTUwe`qrKi#^K>#zo%3IIS79?x=bgtNlzvuUtOadQI^Y{ghpK4zY$km*KK97 zPV~=Q^9-Q+vZgGtLgMuQ@EYT8k(wuk?0_6iUWd^q1Yl%xATOS0O=?C4rx0X3XWsL_cJ`kfAEm#dBr}=Cqb~ z!vizc%$1ju)B`hYl_N2o-QT}ubnULWH_r^p*)OsC_Jue~pW8}5tl>uH>d-%k^2PLZ zq->+i)%b)Zi9oYDRlp^Q^_Pag#?jf)R5~;cT~J4ZC+5~pt)1(I>0x@xr_?1tf3PiK zeO>#r-8q67b491tS{5Vtfd^-HIlsfb*wx$_-NB2Js!lyK?!l}opcYT3h6Y+8yWH&L zuyLKs;>?}F6{Fn&>K^Zu*nNS}YwMV9KF~%hq>K?PkGXsJ&C0T_@}5yCa?pq(*mqy2pp^F3Wy^~*jjSz)u@pl-3X6nJ5Tv7W{X1efKd#((mqlYA+r?qyXM%WkP|kA! zJ;UrEN$dCg+&nys)9x%3hf@#fF5Gzjm0U&of`hqOeuH;K*Wn{A7pk8uQao-P-oLA+ z1&f;KV{Nc4CBi24aQ6V!d=BB7pj&{aV5oi)k;VwF-TJ2i15DTzY3|QqbOcI%VHT@| z@vjcsT}8upURP17z>30{F`3Ii`hS_+iM6i0YBF*f^ty+ica9+03Xd}nTESn)4O+to z|7cLckezb`sQxccpbE*)u=^E-%8{(Ttz`cQUKu58tF=Yx%(2@0R!!`{5NfGTAUh(tyyHNB`0qGM-vA~y%U;aa8h^fZ0fy43} zxhoYA{zRgM(!5DcuS)M4R=8+VrAVOLA#bvt?;H`crj}v|32Cqn_%Z?BlXrG_wRuuP zOJoz9Ka?z|;IHDhh3^pE`bDmm;dtyH?yg_*|B4~XZTSwsMR()MQJ@KOA)o;pVpK<- zptqs&4Yv)ChJ-*TAD%Hl@|AppvJ)u@)FolXcMxTzr2`9c=o;J0fx1ua3zRn1U^2M2u@ax!Y|`B~iE_~E&n$2Z?{~7*dVl1;sbs)C zo|3lCVTEhsq0Qum6)}66!~MQH5RD-FW#E^NnDZU2qzMenoU4^(mTWuzIOC6P_?-%2 z#ycjgv_|Q`BlVfhZ~Se`30~nPO_PqlibG6bbSA;2py5+F`1^Z!X!iFVy##uNn9mH# zy3=vg%55o%7?)04q$d{W#K_KokUM@_gjzoNg6qf6s*uCA$TdS{d@TceRb~Wn6S(F* zN5hpbdTK>Xil__^m$~ZfW*fQrY;mg0h*nk8aDR9oI&6X`Boq^KHU9L zN`-xcuI3VMvNPnhy~40oL{++fU@bR)Fr=@=yP&+|%C9APvZBi7vO8tK;o-PdGbxc} zD~kJS0NEl0^~#Om_RoZz4hc{o53I=|jkWjf6G_)7x+@UqWhzn=>WHQ_k^;%N_hTnN z+@EWYS~D}Fv1`u(YEE;`{JS(9-aq%_AL=!|`gs z^y|n_p3K%@KTd|Hm4Gm+=)Si7ypvP8VRX<0Owd{4vjek(3Xhn^-Ryyc04F?(0prQ0 zAO&Xoky~W~s{Xrz#l;bo$N*zMx1lhWpIz>dSqSkcNpW2Kdz_iA((*^H-155bgSkq5 zaIa8|BtX^AKAXOh@FpGp9-sB&^{vy5i_7j@*Z$1y%X_EoK=N;I56L&N_y@~Nn*w~# zOQL|L7GV^d2UY?^q|Il~7yhVE-2sh2If8f#BZO}{jN^5sGC$n!yB`O|Cvzkz`zbrT zC~^>4*|y?-EQ{(zE*5P(8Y#SLxFIPzL}~zzWbk3DTF%(mvLt+V?T05&`7eV6BnQx1~iO(!f+0<7z0rIlZ$05AX7x;T)!r|GIancUuZev zuoY-IYoR0VHZJj$igoaueX4o&sfCdJ{ZQ)WOdDbY>7*gQ#qMUG8_@M+WTd1X!dN2l zLhXo2JzJGjtb>Y%2=5sbsMXOU_GVg{Ec@q|OcuhGlt7-CHCxfiNFk@h3S zF6I)(#AK_&&KlTxM23dWh4lkS!ns#$8rBH;XOrNq3!GmDcSW18hYC9x3)0&hrNE{d zF>$NwXIGi7Q@pR;3hp6Ff_YUR5VU8p$dSG!C-FbfV;6`aynD}YC@0m z<`5|+Nz?;Zzc+*q%k<^s@(!oUD?$~)U{e($9*UuF2jqfer zO*mkKXBml4Oi7l~0VTD-QWFq0fqd4g@%{58Et|)IK`&i1vQiB3ppU0*Z)@BaHoJzu z5|VG(`m*Jsb5oe!-ikPD!~5Wk4@^Fo@Qw6x1MP~Gsv26iWqI=AngU+^8XuN*fQHN; zT04lrR8SxI-X>DJvG1-VnlZO3TzULlq@ogQ70}_G2-3T2pH0fN+Ya}WeJ!$Zv*7?q zHhR*Zowixe>{@@x6bVA}TT~-M?D8=BzWIOJI}5KUyQpsu9a00*T`Hh72n;DoBTAP@ zC?Jg}skC$oN+~rkNJ)o)z>p%{Ekg_-B{_i9d(h{3zVCl{-?e7VTC>(2Gxwam&)Iwb z_H_iLx<7W|GZN}QX#vxO7^|tBM5@T(S(K!$gwrvGgnUvX6IE- z26rrOby2?T?EN4G-FB^b2MgEA0LC+oX^(OD|;9-88fQtEJuTrdlufEd;P7i$NkuV^|`8N6&Y*&Kp&FoQ(~YA zxbA{B*uZKTUW0-g2fW+MZ2%Op(OIrppe~{PS>LyjTQi>WVdML=#2t{l1^K9>Rajo4 zg}RAAsKHB4h)4Igu=b+&<%cmZ))|(u1E#Y{*G|m)xsr-!Kfb*9mPx;Zy#BV2mpFj@ z_G!Vp5Mx`HPeSv`6&zq|ZA0zBt5ouf3}ja{MruZ=cs|_D39%XxAt0GS z1N9ag_4Yf$g?aDv zd$LBf2`bA@Cfb>kBKtfD^2PNgtXjzvN;i{Ko@K|x-~Ii~dR4<;E2VE$SLE-g%#T#k zG--A1u34dn2MMZVINjH)5O>+_6;qwSWu%>tC}ocL>5Y5s-V5?7tPbU(cGOw@u~+(E z)ZNLL0k$qtXXu!%x_P3FZ8t+@=Ni74Lge@=?MArO7h$&MBx|0~t)2>^NcJ2AqS zQTYFp>dJ#3pD&Pq>7ei2X0N}4Z3zX7b2oGhNn1-*rLE1g@QZ1q*;Cq1&5OmHH|;=P zHgNr!15zt=4}`Y&r1-ksk7&couoU9gW33|RWu!w7w}+C?R4j?4H^p;Lzq+H5ti7eB zVWb{EY32)rPTp-qBo^x3F4O_M#wdifiJ|xzBkI}8uV*DfuqRF9yz6Oor^=S1@Soe( z9cj2z7K$m+RU<)`b{ouE-{T=bJu7L4CnfI-$*g^Thef^JLXqRqOqG z-qxKC%Ib1q*rdOjUv3)P-+ik2T77aaq9jB8mh;bog;!y*iuJW)3EKs#e=3>te=C`h zxck=xL2=mom0Z4 zX}VsW2*juLX$hJ-pVP#|-|d|!z&6gD?0TXZXIsQd@-j7W8JI_>*R9JD_=|a2W%)?W zH=<|b`_A%L)_J~dtvz90u!`Lv_2bgtHyFgjBe{^j6Qi{>|Tc-_f|)|@%iX}ZaX5M|CAgaM&Ob_jm5M5+Gv9&I5SaWMQu zL=sl%Q9gdNIB5LUsraOnV6@Ye(h+T^pP{klnD(a<#bK_{A9An0?<-B{f`z$QRO&B> zs=G?3Dx{&%`84-Y7Jl(rSlz-qS`OrH!SA9#ySA45z4>=aI8T}9UUMvWDtf73Y;Sp+ zd()Kh~fg`>y)`?-ITeB!c)yi*p-o??z6>_hXE8EnY2wG zcu$W#WgBW+s#mE;ExtRRkMoKtyG{62*Ou31sY%@RAlYtbtv7hj%_5N}dHN$*p%F}W z96w|bdb?_N6s)z*Nr=o_TC>zUYX(V6vbYXSbW25effd1|M(9nr%VOYT z_`0}hiU&)Ri3rG{CwoOj*mii6@oRAdM{1EzjBw_B1W3BeX=S&k=M|+2B zL65eT)gEGFXi=m@=|UN%o=O&OHz?-@=dOP{IXuG_6hOuEOiZ(c-~j|F-BR9!wB)LF zsf>e+t&@wWb9y$q%Yg5hqiATW$Pjzx1!qVj$A>#MZW<2fJmK1#Q^>jJlXIlrUxva*n%{l06k zNW(YB$)(8ji!clZI#DOh%u=oRR3a+Q5nnBSq(^?Y%edHR$QhtV2z`#(EaM8;TGUE* z5?dH-w71nsj03^4g(E7nGTZ4)z`(*~e|4$A&c*yAx>qcTx{3|!YG!~L2FnaHu@X2% zU2%2Xo-xr+#^jk+az<;D&C8v=QkZ-GlV1MKWou)e_em=9F4({2ENv;TiJ)R}?ZXV) zbSo)-Z(YVhBrjUb#@gge7q1+ISwukJ_fk={uFO&IY)|JU+QS1|p$+mrJ||z?R*21t zJn__KQT})aIyyMcOyz}J*kOZ@#aochE){Q@flm>CvN zLcvC=&JpIi>dk7UYs#LKI%kBA`D>lxEUjW;mRh}avqnHF?%X=1&UnRIn3Cd+|9LE3 zDti6LK0(vtN|^7cu@U*>eZNz}-7p^FpvCdS#xJ`&!>&3Z_#2W&N6Mty7Z(fdk#eWo zihy<0cq8}6SlVVn9WskzZftZ^ftJ%X^LH91#LwrwgtkzsM^!04ekaP1yiIjH>oj8R znh2hd`p$~#t@_mW6-9VSEOuXvk3Gj9_!%;~#P4>bas^8|a&rsBgV|#BI4p}ZB5y;E zkH3ZVlX27Y2)jg^eZRKEd-D)Ri?Q<$(O-S~XNI9LeO&=n4Ba#jSUIRvzp*0)UnV{^ z^$$1)AOHSGDZS#K+9#iyo;jmxZ1S;0HGE3xNZMfyu|P#o(z@F=n$55=9Ab65;gJQb zFx}CK`d&+^N_W7!}LbaWELM{5OLg00Ebq%L93Mr)1pJ?oZp2gaG z`Zx*QE2K?y?vHJ7)80HpKc&^HAhw?>eDAQ^d70W#A`#;G;Vq5t9#r1s!W-6m_E6!z zL{PHf(co$tt~EMkNx0{p#dvrDYs)wJ>%}<>5jU1(OfU}{5|dQ^{=9E zk%l7QbJJLnuJKYW>gnyed(DwaIO6rPyM6il4ZJs>nA@L&%udF69HKgY3Fz-5m)qIv z)HIU!!gI8H-1fI-*m=JlgE+x4cFSF|kmp+Wrp#B0={-}s6wAXR-qY2%YyIXmhjx_Z z`RSpYapU@H>r+gA^?Kb)LZEaGT-%0*+T?k~Jx@0i(6$Ehhb`p7MSczB@`PfGex1`3 zBjATJbW3LFHy+oRdVWXh6`QfACSAkmgp@iy_B#_3FOWW*aeF>V&v!si<`P^L5Y1a& zy0|a8Ns7VDoK6ZBiX>-yZhX}VrHX{oI+{myg0d}i64ykfwA*PXDOExt5Ed;G z{N^z$P~%-It;=!|@s=#y?IPF8GcDerL%rzVZqA1X3VwB6Q_C0r%-HcT#gK@m-o~{k zF(x~Xyh*)dL})=fX7d+Z10nsu6aUI~W#}yY_cR<1;m3mp=o>*npT7&Xx2&ZtdC^*x zoQ*{}J1Ey7q)H2!w9sRUUm_61yI~4)F++*5Ig~9catPW)GXvj|WBH9dlA(?;usM5~ zxcm?{XMxCr)+f@yd54fPT3T8nG*US1qT%V1nSRHf4?CtS3KPV}ltmk5YHG?SwljQ> z3Z{KUwRSM4EtM*sWgmWLz>jmQK4LTPV4{e=@=a1R%%$s5@tMG6WC{D1KQNN_R{>$R0RDke3wqH#{oXW?Bq5ul0m()v z#FIO6(23Zbji^}x5i@GjYq3N!x!?I56Ll-e z)2BmVh_l2Aq}`N|(;_#+mxmARddwF&Q>Iiu%0YDUa|)n3}Qd;hC9ia&k=o5E_yL z*LvigiV=S8gD=#xzS!SAfHAD0Dm zr=#=0yGk@>%IKF=gcHV~ih$=(@P+zK7BXA7nADBY12Z0nOM*$XaI!i*+6mc6WqaAx zit-nurKUzNE$KckiGZiL;Xvkc!KaCEVKajh$g zYk(4~Rqm;BEKBdVZvb8v*MQ3exj{~9B!;9Z!txJdgNU{HUGHCt;sHaSB>_}Rm z*SgsNP=-<-TQk}W&(f1RNkRi3IXP_sv>qG|x3aRzRULLPd0HBNw}QJT<`O#PAJ`1= zjrY@~!*B7H<8WLL;sl&lA)&I$%0&Fot6L(iT3l*b;|@5NWGA{vhssX_HOtsv8k(h2wW>emcngy*k+mgA4b$9RO0#4x3OXq0unkw?|s`zF&5JIb@pz0 z2*P&Qt0NafMnIs_)6*+R^8A;Sh0ugJ&u&iFkdu+Ue|8%!+L|Tb0JuSq>fH}k2N(Nb zzY=*~h^PGnQmW*DlnlGnMNj+>U8{iMgJ?FQ)#^~LIy)+^qzdb3H*H=X4wa@6Cs-08Oj4FJ-+diC@%&GJb3iqPVYP#ixA$*A z=p-O#nR&lIq`|2kgmVMH3CBtv|3ZN+Hr90M@mAg~Yc}iu?Wa~rX$G{AEV?%p0=D$I zGks&z*TxYzQkYH}YHB@Q-O3+|X8%5y6w2lwJt8)J6H`-U^ul+?#_*52yU0V=HnDA1 z0L`+gz8-c>@+#lW0)tCP{2zkY^Xo1LYomZu*xW}*NVvTn_u5qB3xEC%XLwFd4gl$C zqzLB%;>Gub{{UT7Z2s@A?q@sCHC`K_y*zYKQ8|b{W@+gOnx5rff>aSv4g%o|NGo9m z#5%2_MWiI5rb)Vq9z&lV!T|#oILA_DdXtbRv@%+g(0|W@5So)OBQ(=8bx4Sb*TzdS zx&-6T-bOsA=fH1SNI;%|!K9y_Ds*M)> zYT@V@9bl16O)q0`xqbEJV0;T{{Kf{A@!nqrY*rx?XKyM@`MArC5Ml)Wm_Cc&DL@Sl z0MmVaIP3B5-MjA(m$3ev2O(1V0L~;PCPqEyguzS}G)IfQ5EVJu8y9P%g#wQoX9^8U zb{0GNw08gH&gG~=(z`{3g_WY{uz?B7LKPU(<5H&h>nbjX*|PByY2#} za1>u5ap*rx*S8%0$49^wY=LnK(?OxSb&E*_ZzJi+&>w@pUb>y&$WpJpWg{aap8mam z?-r#FF?krnD#t=cxBBasA3zzs0%)7enb+afF(Y^H!Wm#hI-JtdOk*5H(SRx&{1}N( zGt6>7n(3dd+vM$VQG=JLPC*GaD6^os|48a}B_EARlsw@Hy@<7_xH$FL^HjC@&Ybbz56ot9F>AghB_4O>QT!K68)zW53OD zxG3JMWZ6v2%uVON?Kc#WMfl>PfVMQ$*GJY7%5K6DUsrU=Dh(HH7wq-75lp5k+Yd|v0JN6f7#-@y&tk7A{w=Bp;bCZ|1 z4j^S@?uPKF zf6YC1731Y4-deYaUf^`lGR&-vure&U^>oGSuN{e8hwNdy%}2}3mFPJYGC%zLZ>z{l;c5&Fe|mu`=l8U1TOaS+l=VE7+@1KzW#GLh_3miqsG=8_KzIs_K__vOEeYwHpglT7{Jb?7SKi@GA F{2y*!#mWEx literal 0 HcmV?d00001 diff --git a/source/get-started/index.rst b/source/get-started/index.rst index 02f4a15f..bab843b5 100644 --- a/source/get-started/index.rst +++ b/source/get-started/index.rst @@ -35,6 +35,7 @@ Install bare-metal-install-desktop bare-metal-install-server install-configfile + ipxe-install .. _virtual-machine-install: diff --git a/source/get-started/ipxe-install.rst b/source/get-started/ipxe-install.rst new file mode 100644 index 00000000..73e6105b --- /dev/null +++ b/source/get-started/ipxe-install.rst @@ -0,0 +1,580 @@ +.. _ipxe-install: + +Install |CL| Over the Network with iPXE +####################################### + +PXE :abbr:`PXE (Pre-boot Execution Environment)` is an industry standard +that describes client-server interaction with network-boot software and +uses the DHCP and TFTP protocols. iPXE, a fork of gPXE, is an open-source +version of PXE. It enables computers without built-in PXE capability to +network-boot using protocols such as HTTP, :abbr:`iSCSI (Internet Small +Computer Systems Interface)`, :abbr:`AoE (ATA over Ethernet\*)`, and +:abbr:`FCoE (Fiber Channel over Ethernet\*)`. + +This guide demonstrates how to setup an iPXE server to install |CL-ATTR| +over the network. + +Figure 1 depicts the flow of information between an iPXE server and a +PXE client. + +.. figure:: ../_figures/ipxe/ipxe-install-1.png + :alt: PXE information flow + + Figure 1: PXE information flow + +.. caution:: + + The |CL| PXE image that boots through the iPXE process automatically + erases all data and partitions on the PXE client system and performs + a fresh installation according to a clr-installer YAML configuration + file. + +Prerequisites +************* + +Your iPXE server must have: + +* Ethernet/LAN boot option +* At least two network adapters +* Connection to a public (WAN) network +* Secure Boot option disabled in BIOS + +Your clients must have: + +* Ethernet/LAN boot option +* One network adapter +* Secure Boot option disabled in BIOS +* The minimum requirements to run |CL|. Review the :ref:`compatibility-check`. + +Connect the iPXE server and clients to a network switch on a private +(LAN) network, as shown in Figure 2. + +.. figure:: ../_figures/ipxe/ipxe-install-2.png + :alt: Network topology + + Figure 2: Network topology + +Install |CL| on server +********************** + +#. Install |CL| on the system that will serve as the iPXE server. + We recommend using the `server` version. + +#. Open a terminal window. + +#. Add the :command:`pxe-server` bundle to your |CL| system. + The bundle contains all the necessary apps (web server, iPXE firmwares, + dnsmasq which provides TFTP, DNS, DHCP functionalities) to run an + iPXE server. + + .. code-block:: bash + + sudo swupd bundle-add pxe-server + +#. Define the following variables used for setting up the iPXE server. + Be sure to substitute the value for the WAN_INTERFACE and + LAN_INTERFACE variables with your LAN and WAN interfaces names. + Use :command:`ip a` to list your network devices and get their + names. + + .. code-block:: bash + + IPXE_APP_NAME=ipxe + IPXE_PORT=50000 + WEB_ROOT_DIR=/var/www + IPXE_ROOT_DIR=${WEB_ROOT_DIR}/${IPXE_APP_NAME} + TFTP_ROOT_DIR=/srv/tftp + CLR_INSTALLER_CONF_DIR=clr-installer-configs + WAN_INTERFACE=eno1 + LAN_INTERFACE=eno2 + IPXE_SUBNET=192.168.100 + IPXE_LAN_IP=${IPXE_SUBNET}.1 + IPXE_SUBNET_MASK_IP=255.255.255.0 + IPXE_SUBNET_BITMASK=16 + +Setup nginx web server to host iPXE +*********************************** + +#. Set up an nginx web server to serve the |CL| PXE image to clients + using these steps: + + .. code-block:: bash + + sudo mkdir -p /etc/nginx/conf.d + sudo cp /usr/share/nginx/conf/nginx.conf.example /etc/nginx/nginx.conf + sudo tee -a /etc/nginx/conf.d/${IPXE_APP_NAME}.conf << EOF + server { + listen ${IPXE_PORT}; + server_name localhost; + # directory to store ipxe + location /${IPXE_APP_NAME}/ { + root ${WEB_ROOT_DIR}/${IPXE_APP_NAME}; + rewrite ^/${IPXE_APP_NAME}(/.*)$ \$1 break; + } + # directory to store clr-installer configs + location /${CLR_INSTALLER_CONF_DIR}/ { + root ${WEB_ROOT_DIR}/${CLR_INSTALLER_CONF_DIR}; + rewrite ^/${CLR_INSTALLER_CONF_DIR}(/.*)$ \$1 break; + } + } + EOF + +#. Set nginx to start automatically on boot and then start it. + + .. code-block:: bash + + sudo systemctl enable nginx + sudo systemctl start nginx + +Configure iPXE +************** + +#. Download the latest |CL| PXE image and extract the files into the iPXE root. + + .. code-block:: bash + + sudo curl -o /tmp/clear-pxe.tar.xz \ + https://cdn.download.clearlinux.org/current/clear-$(curl \ + https://cdn.download.clearlinux.org/latest)-pxe.tar.xz + sudo mkdir -p ${IPXE_ROOT_DIR} + sudo tar -xJf /tmp/clear-pxe.tar.xz -C ${IPXE_ROOT_DIR} + sudo ln -sf $(ls ${IPXE_ROOT_DIR} | grep 'org.clearlinux.*') ${IPXE_ROOT_DIR}/linux + + .. note:: + + Ensure that the initial ramdisk file is named :file:`initrd` and + the kernel file is named :file:`linux`, which is a symbolic link to the + actual kernel file. + +#. Create an iPXE boot script. The script presents a menu of bootable images to + download, boot, and install |CL|, according to a designated clr-installer + YAML configuration file. + + .. code-block:: bash + + sudo tee -a ${IPXE_ROOT_DIR}/ipxe_boot_script.ipxe << EOF + #!ipxe + + set menu-timeout 5000 + set submenu-timeout \${menu-timeout} + isset \${menu-default} || set menu-default clr-server + + :menu + menu Select a version of Clear Linux OS to install + item clr-desktop Clear Linux OS (Desktop) + item clr-server Clear Linux OS (Server) + item ipxe-shell iPXE Shell + item reboot Reboot + + choose --timeout \${menu-timeout} --default \${menu-default} selected || goto cancel + set menu-timeout 0 + goto \${selected} + + :clr-desktop + echo Booting and installing Clear Linux OS (Desktop)... + kernel linux quiet init=/usr/lib/systemd/systemd-bootchart initcall_debug \\ + tsc=reliable no_timer_check noreplace-smp rw initrd=initrd \\ + clri.descriptor=http://${IPXE_LAN_IP}:${IPXE_PORT}/${CLR_INSTALLER_CONF_DIR}/clr-desktop.yaml + initrd initrd + boot || goto failed + + :clr-server + echo Booting and installing Clear Linux OS (Server)... + kernel linux quiet init=/usr/lib/systemd/systemd-bootchart initcall_debug \\ + tsc=reliable no_timer_check noreplace-smp rw initrd=initrd \\ + clri.descriptor=http://${IPXE_LAN_IP}:${IPXE_PORT}/${CLR_INSTALLER_CONF_DIR}/clr-server.yaml + initrd initrd + boot || goto failed + + :cancel + echo Menu canceled, going to iPXE shell + + :ipxe-shell + echo Type 'exit' to return to the menu + shell + set menu-timeout 0 + set submenu-timeout 0 + goto menu + + echo Booting + :failed + echo Booting failed, going to iPXE shell + goto shell + + :reboot + echo Rebooting... + sleep 1 + reboot + EOF + + .. note:: + + The `clri.discriptor` option tells clr-installer where to download a YAML + configuration file to use. Without this option, the |CL| PXE image will + simply boot and not perform any installation. + +Add clr-installer YAML configuration files +****************************************** + +After the |CL| PXE image boot, clr-installer downloads the YAML configuration file +specified in the kernel command-line and installs accordingly. + +See `Installer YAML Syntax`_ for more information on clr-installer configuration +YAML syntax. + +#. Create the directory to store the configuration files. + + .. code-block:: bash + + sudo mkdir -p ${WEB_ROOT_DIR}/${CLR_INSTALLER_CONF_DIR} + +#. Create this sample `Desktop` configuration called :file:`clr-desktop.yaml`. + + .. code-block:: bash + + sudo tee -a ${WEB_ROOT_DIR}/${CLR_INSTALLER_CONF_DIR}/clr-desktop.yaml << EOF + #clear-linux-config + + # switch between aliases if you want to install to an actuall block device + # i.e /dev/sda + block-devices: [ + {name: "bdevice", file: "/dev/sda"} + ] + + targetMedia: + - name: \${bdevice} + type: disk + children: + - name: \${bdevice}1 + fstype: vfat + mountpoint: /boot + size: "150M" + type: part + - name: \${bdevice}2 + fstype: swap + size: "250M" + type: part + - name: \${bdevice}3 + fstype: ext4 + mountpoint: / + size: "0" # Use remaining disk space + type: part + + bundles: [ bootloader, os-core, os-core-update, desktop-autostart, libreoffice, + vlc, c-basic, git, openssh-server, vim ] + + autoUpdate: true + postArchive: false + postReboot: true + telemetry: false + hostname: clrlinux-desktop + keyboard: us + language: en_US.UTF-8 + kernel: kernel-native + + users: + - login: clrlinux + username: Clear Linux + # Password is "clear123" + password: \$6\$SJJMfnInWQg.CvMA\$m2F8dJGj71zvi9mSNMktHMsPH3qhBm8pgXDNdaBe2yFfgi479JXvEqWkvQ6OxIUgGNQ5YXFIF0tCn.hEXB90G/ + admin: true + - login: root + username: Root Root + # Password is "clear123" + password: \$6\$SJJMfnInWQg.CvMA\$m2F8dJGj71zvi9mSNMktHMsPH3qhBm8pgXDNdaBe2yFfgi479JXvEqWkvQ6OxIUgGNQ5YXFIF0tCn.hEXB90G/ + admin: true + + pre-install: [ + {cmd: "curl -o /tmp/add-issue.sh http://${IPXE_LAN_IP}:${IPXE_PORT}/${CLR_INSTALLER_CONF_DIR}/add-issue.sh"}, + {cmd: "chmod +x /tmp/add-issue.sh"} + ] + + post-install: [ + {cmd: "echo PermitRootLogin yes > \${chrootDir}/etc/ssh/sshd_config"}, + {cmd: "/tmp/add-issue.sh \${chrootDir}"} + ] + EOF + + +#. Create this sample `Server` configuration called :file:`clr-server.yaml`. + + .. code-block:: bash + + sudo tee -a ${WEB_ROOT_DIR}/${CLR_INSTALLER_CONF_DIR}/clr-server.yaml << EOF + #clear-linux-config + + # switch between aliases if you want to install to an actuall block device + # i.e /dev/sda + block-devices: [ + {name: "bdevice", file: "/dev/sda"} + ] + + targetMedia: + - name: \${bdevice} + type: disk + children: + - name: \${bdevice}1 + fstype: vfat + mountpoint: /boot + size: "150M" + type: part + - name: \${bdevice}2 + fstype: swap + size: "250M" + type: part + - name: \${bdevice}3 + fstype: ext4 + mountpoint: / + size: "0" # Use remaining disk space + type: part + + bundles: [ bootloader, os-core, os-core-update, vim ] + + autoUpdate: true + postArchive: false + postReboot: true + telemetry: false + hostname: clrlinux-server + keyboard: us + language: en_US.UTF-8 + kernel: kernel-native + + users: + - login: clrlinux + username: Clear Linux + # Password is "clear123" + password: \$6\$SJJMfnInWQg.CvMA\$m2F8dJGj71zvi9mSNMktHMsPH3qhBm8pgXDNdaBe2yFfgi479JXvEqWkvQ6OxIUgGNQ5YXFIF0tCn.hEXB90G/ + admin: true + - login: root + username: Root Root + # Password is "clear123" + password: \$6\$SJJMfnInWQg.CvMA\$m2F8dJGj71zvi9mSNMktHMsPH3qhBm8pgXDNdaBe2yFfgi479JXvEqWkvQ6OxIUgGNQ5YXFIF0tCn.hEXB90G/ + admin: true + + pre-install: [ + {cmd: "curl -o /tmp/add-issue.sh http://${IPXE_LAN_IP}:${IPXE_PORT}/${CLR_INSTALLER_CONF_DIR}/add-issue.sh"}, + {cmd: "chmod +x /tmp/add-issue.sh"} + ] + + post-install: [ + {cmd: "echo PermitRootLogin yes > \${chrootDir}/etc/ssh/sshd_config"}, + {cmd: "/tmp/add-issue.sh \${chrootDir}"} + ] + EOF + +#. Add following content to the :file:`add-issue.sh` script, which will be + used by the above two YAML configuration files: + + .. code-block:: bash + + sudo tee -a ${WEB_ROOT_DIR}/${CLR_INSTALLER_CONF_DIR}/add-issue.sh << EOF + #!/bin/bash + echo "Creating custom issue file for \$1" + + echo "Welcome to the Clear Linux* OS + + * Documentation: https://clearlinux.org/documentation + * Community Support: https://community.clearlinux.org + + " >> \$1/etc/issue + + exit 0 + EOF + +Configure network +***************** + +#. The DNS server, included with the `pxe-server` bundle, + conflicts with the DNS stub listener provided in `systemd-resolved`. + Disable the DNS stub listener and temporarily stop `systemd-resolved`. + + .. code-block:: bash + + sudo mkdir -p /etc/systemd + sudo tee -a /etc/systemd/resolved.conf << EOF + [Resolve] + DNSStubListener=no + EOF + + sudo systemctl stop systemd-resolved + +#. Disable NetworkManager. The base installation of |CL| comes with two + network managers, systemd-networkd and NetworkManager, with the latter + being the default. systemd-networkd is recommended for a server use case, + so we will disable NetworkManager. + + .. code-block:: bash + + sudo systemctl mask --now NetworkManager + +#. Assign a static IP address to the LAN side network adapter + and restart `systemd-networkd`. + + .. code-block:: bash + + sudo mkdir -p /etc/systemd/network + sudo tee -a /etc/systemd/network/70-internal-static.network << EOF + [Match] + Name=${LAN_INTERFACE} + [Network] + DHCP=no + Address=${IPXE_LAN_IP}/${IPXE_SUBNET_BITMASK} + EOF + + sudo systemctl enable systemd-networkd + sudo systemctl restart systemd-networkd + +Setup NAT +********* + +#. Configure :abbr:`NAT (Network Address Translation)` to route traffic from + the LAN to the WAN network so clients can download upstream bundles for + installation. And to make these changes persistent during reboots, save the + changes to the firewall. + + .. code-block:: bash + + sudo iptables -t nat -F POSTROUTING + sudo iptables -t nat -A POSTROUTING -o ${WAN_INTERFACE} -j MASQUERADE + sudo systemctl enable iptables-save.service + sudo systemctl restart iptables-save.service + sudo systemctl enable iptables-restore.service + sudo systemctl restart iptables-restore.service + +#. Configure the kernel to forward network packets to different interfaces. + Otherwise, NAT will not work. + + .. code-block:: bash + + sudo mkdir -p /etc/sysctl.d + sudo tee -a /etc/sysctl.d/80-nat-forwarding.conf << EOF + net.ipv4.ip_forward=1 + EOF + + sudo tee -a /proc/sys/net/ipv4/ip_forward << EOF + 1 + EOF + +Setup dnsmaq for DHCP, DNS, and TFTP functionalities +**************************************************** + +#. Create a configuration file for `dnsmasq` to listen on a dedicated IP address + for TFTP, DNS, and DHCP functions. PXE clients on the LAN network will talk to + this IP address. + + .. code-block:: bash + + sudo tee -a /etc/dnsmasq.conf << EOF + listen-address=${IPXE_LAN_IP} + EOF + +#. Add the options to serve iPXE firmware images to clients over TFTP to + the :file:`dnsmasq` configuration file. + + .. code-block:: bash + + sudo tee -a /etc/dnsmasq.conf << EOF + enable-tftp + tftp-root=${TFTP_ROOT_DIR} + EOF + +#. Add the options to host a DHCP server for clients to the :file:`dnsmasq` + configuration file. + + .. code-block:: bash + + sudo tee -a /etc/dnsmasq.conf << EOF + dhcp-leasefile=/var/db/dnsmasq.leases + + dhcp-authoritative + dhcp-option=option:router,${IPXE_LAN_IP} + dhcp-option=option:dns-server,${IPXE_LAN_IP} + + dhcp-match=set:ipxeclient,60,IPXEClient* + dhcp-range=tag:ipxeclient,${IPXE_SUBNET}.2,${IPXE_SUBNET}.253,${IPXE_SUBNET_MASK_IP},15m + dhcp-range=tag:!ipxeclient,${IPXE_SUBNET}.2,${IPXE_SUBNET}.253,${IPXE_SUBNET_MASK_IP},6h + + dhcp-match=set:ipxeboot,175 + dhcp-boot=tag:ipxeboot,http://${IPXE_LAN_IP}:${IPXE_PORT}/${IPXE_APP_NAME}/ipxe_boot_script.ipxe + dhcp-boot=tag:!ipxeboot,undionly.kpxe,${IPXE_LAN_IP} + EOF + + The configuration provides the following important functions: + + * Directs clients without an iPXE implementation to the TFTP server + to acquire architecture-specific iPXE firmware images that allow them + to perform an iPXE boot. + * Activates only on the network adapter that has an IP address on the + defined subnet. + * Directs clients to the DNS server. + * Directs clients to the iPXE server for routing via NAT. + * Divides the private network into two pools of IP addresses. One pool + is for network boot and one pool is used after boot. Each pool has + their own lease times. + +#. Create a file for `dnsmasq` to record the IP addresses it provides + to clients. + + .. code-block:: bash + + sudo mkdir -p /var/db + sudo touch /var/db/dnsmasq.leases + +#. Create a TFTP hosting directory and populate it with the iPXE firmware. + + .. code-block:: bash + + sudo mkdir -p ${TFTP_ROOT_DIR} + sudo ln -sf /usr/share/ipxe/undionly.kpxe ${TFTP_ROOT_DIR}/undionly.kpxe + +#. Start `dnsmasq` and enable startup on boot. + + .. code-block:: bash + + sudo systemctl daemon-reload + sudo systemctl enable dnsmasq + sudo systemctl restart dnsmasq + +#. Start `systemd-resolved`. + + .. code-block:: bash + + sudo systemctl start systemd-resolved + + .. note:: + + `systemd-resolved` dynamically updates the list of DNS servers for the + LAN network if you use the `dnsmasq` DNS server. The setup creates a + pass-through DNS server that relies on the DNS servers listed in + :file:`/etc/resolv.conf`. + +Verify setup +************ + +Verify you can access these URLs before deploying: + +* http://{$IPXE_LAN_IP}:{$IPXE_PORT}/${IPXE_APP_NAME}/ipxe_boot_script.ipxe +* http://{$IPXE_LAN_IP}:{$IPXE_PORT}/${CLR_INSTALLER_CONF_DIR}/clr-desktop.yaml +* http://{$IPXE_LAN_IP}:{$IPXE_PORT}/${CLR_INSTALLER_CONF_DIR}/clr-server.yaml +* http://{$IPXE_LAN_IP}:{$IPXE_PORT}/${CLR_INSTALLER_CONF_DIR}/add-issue.sh + +Deploy +****** + +#. Connect your client system to the LAN network. + +#. Power on the client. + +#. Set your client to network boot. It should get an IP address and download + the iPXE script. + +#. When presented with the iPXE menu, select one of the options. The client + will then download and boot the |CL| image. Once booted, clr-installer will + download the assigned YAML configuration file and begin to install |CL|. + After installation, the client will reboot to |CL|. + +.. _iPXE: + http://ipxe.org/ + +.. _Installer YAML Syntax: + https://github.com/clearlinux/clr-installer/blob/master/scripts/InstallerYAMLSyntax.md diff --git a/source/guides/clear/ister.rst b/source/guides/clear/ister.rst index b71aa8cc..21e2b6af 100644 --- a/source/guides/clear/ister.rst +++ b/source/guides/clear/ister.rst @@ -86,7 +86,6 @@ Related topics ************** * :ref:`mixer` -* :ref:`bulk-provision` .. _ister.py: https://github.com/bryteise/ister .. _Current release: https://cdn.download.clearlinux.org/current/ diff --git a/source/guides/maintenance/bulk-provision.rst b/source/guides/maintenance/bulk-provision.rst deleted file mode 100644 index a609fa6a..00000000 --- a/source/guides/maintenance/bulk-provision.rst +++ /dev/null @@ -1,172 +0,0 @@ -.. _bulk-provision: - -Bulk provision -############## - -This guide explains how to perform a bulk provision of |CL-ATTR| using a -combination of the |CL| installer, Ister, and -:abbr:`ICIS (Ister Cloud Init Service)`. - -.. contents:: - :local: - :depth: 1 - -Overview -******** - -To configure a bulk provision: - -* Define Ister configuration files to customize the installation process -* Define cloud-init\* files to customize the installation instance -* Host the configuration files in ICIS to allow Ister to use them during - the installation - -Figure 1 depicts the flow of information between a PXE server and a PXE -client that needs to be set up to perform a bulk provision. - -.. figure:: ./figures/bulk-provision-flow.png - :alt: Bulk provision information flow - - Figure 1: Bulk provision information flow - -Prerequisites -************* - -Before performing a bulk provision, verify you have a PXE server capable -of performing network boots of |CL|. Please refer to our -:ref:`guide on how to perform an iPXE boot` using -:abbr:`NAT (network address translation)` for details. - -Because a bulk provision relies on a reboot, ensure the following -preparations have been made: - -* No existing disks are bootable. -* The network boot option must come immediately after the disk boot option - on any computer performing the installation. - -Configuration -************* - -#. Install ICIS by following the getting started guide on the - `ICIS`_ GitHub\* repository. - -#. Create an Ister installation file and save it to the - :file:`static/ister` directory within the web hosting directory for - ICIS. The installation file is a JSON block and provides Ister - with the steps it needs to perform an installation. The file outlines - what partitions, file systems, and mount points Ister should set - up. Lastly, the file outlines which bundles to install. See our - :ref:`bundles` document for the list of available bundles. The - following example shows the contents of an Ister installation file: - - .. code-block:: json - - { - "DestinationType":"physical", - "PartitionLayout":[ - {"disk":"sda", "partition":1, "size":"512M", "type":"EFI"}, - {"disk":"sda", "partition":2, "size":"512M", "type":"swap"}, - {"disk":"sda", "partition":3, "size":"rest", "type":"linux"} - ], - "FilesystemTypes":[ - {"disk":"sda", "partition":1, "type":"vfat"}, - {"disk":"sda", "partition":2, "type":"swap"}, - {"disk":"sda", "partition":3, "type":"ext4"} - ], - "PartitionMountPoints":[ - {"disk":"sda", "partition":1, "mount":"/boot"}, - {"disk":"sda", "partition":3, "mount":"/"} - ], - "Version":"latest", - "Bundles":[ - "kernel-native", - "os-core", - "os-core-update", - "os-cloudguest" - ], - "IsterCloudInitSvc":"http://192.168.1.1:60000/icis/" - } - - .. important:: - - Every Ister installation file hosted on ICIS must contain the - the `IsterCloudInitSvc` parameter as well as the :command:`os-cloudguest` - bundle. These entries allow Ister to customize an instance of of an - install. - -#. Create an Ister configuration file to define the location of the - Ister installation file. Save it to the :file:`static/ister` directory - within the web hosting directory of ICIS. The following example shows - an Ister configuration file: - - .. code-block:: none - - template=http://192.168.1.1:60000/icis/static/ister/ister.json - -#. Modify the iPXE boot script by adding a kernel parameter to the command line - for booting the network image. Add the kernel parameter `isterconf` with - the location of the Ister configuration file hosted on ICIS as the - kernel parameter value. The following example shows an iPXE boot script - with the `isterconf` parameter: - - .. code-block:: none - - #!ipxe - kernel linux quiet init=/usr/lib/systemd/systemd-bootchart initcall_debug tsc=reliable no_timer_check noreplace-smp rw initrd=initrd isterconf=http://192.168.1.1:60000/icis/static/ister/ister.conf - initrd initrd - boot - - .. note:: - - After the network image of |CL| boots, Ister inspects the - parameters used during boot in :file:`/proc/cmdline` to find the - location of the Ister configuration file. - -#. Write a cloud-init document to customize the instance of the installation - according to your requirements. The `cloud-init`_ documentation provides a - guide on how to write a cloud-init document. The guide covers the - customization options provided by cloud-init after an installation. - -#. Save the cloud-init document to the :file:`static/roles` directory within - the web hosting directory for ICIS with the name of a role you would - like to create. For example, a role may be "database", "web", or "ciao". - -#. After creating the roles, also known as cloud-init files, assign roles to - MAC addresses of PXE clients. To do so, modify the :file:`config.txt` file - in the :file:`static` directory within the web hosting directory of ICIS. - The following example shows an example assignment: - - .. code-block:: none - - # MAC address,role - 00:01:02:03:04:05,ciao - - If MAC addresses of PXE clients are not listed within the - :file:`config.txt` file, a default role for those MAC address may be - defined as follows: - - .. code-block:: none - - # MAC address,role - default,ciao - -#. Verify the following URLs are accessible on your local network: - - * \http://192.168.1.1:60000/icis/static/ister/ister.conf - * \http://192.168.1.1:60000/icis/static/ister/ister.json - * \http://192.168.1.1:60000/icis/get_config/ - * \http://192.168.1.1:60000/icis/get_role/ - * \http://192.168.1.1:60000/ipxe/ipxe_boot_script.txt - -#. Power on the PXE client and watch it boot and install |CL|. - -#. Power-cycle the PXE client and watch it customize the |CL| installation. - -**Congratulations!** You have successfully performed a bulk provision of |CL|. - - -.. _ICIS: - https://github.com/clearlinux/ister-cloud-init-svc - -.. _cloud-init: - https://cloudinit.readthedocs.io diff --git a/source/guides/maintenance/deploy-at-scale.rst b/source/guides/maintenance/deploy-at-scale.rst index 3c5270c8..617b265e 100644 --- a/source/guides/maintenance/deploy-at-scale.rst +++ b/source/guides/maintenance/deploy-at-scale.rst @@ -221,7 +221,7 @@ through the *os-cloudguest* bundles which allow you to configure many Day 1 tasks such as setting hostname, creating users, or placing SSH keys in an automated way at boot. For more information on automating configuration during deployment of |CL| endpoints see the -:ref:`bulk-provision` guide. +:ref:`ipxe-install` guide. A configuration management tool is useful for maintaining consistent system and application-level configuration. Ansible\* is offered through the @@ -252,4 +252,4 @@ challenges your monitoring systems, and business continuity plans. server for this purpose, however implementation details are not in the scope of this document. In general, they should be close to your endpoints, highly available, and easy to scale with a load balancer when - necessary. \ No newline at end of file + necessary. diff --git a/source/guides/maintenance/figures/bulk-provision-flow.png b/source/guides/maintenance/figures/bulk-provision-flow.png deleted file mode 100644 index 036982f7c8cd784d37730c9ea8e080b56dd7d2b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36437 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 $ipxe_root/ipxe_boot_script.ipxe << EOF - #!ipxe - kernel linux quiet init=/usr/lib/systemd/systemd-bootchart \ - initcall_debug tsc=reliable no_timer_check noreplace-smp rw \ - initrd=initrd - initrd initrd - boot - EOF - -#. The :command:`pxe-server` bundle contains a lightweight web-server known as - nginx. Create a configuration file for nginx to serve |CL| to PXE - clients with the following contents: - - .. code-block:: console - - sudo mkdir -p /etc/nginx/conf.d - sudo cat > /etc/nginx/conf.d/$ipxe_app_name.conf << EOF - server { - listen $ipxe_port; - server_name localhost; - location /$ipxe_app_name/ { - root $web_root; - autoindex on; - } - } - EOF - - sudo cp /usr/share/nginx/conf/nginx.conf.example /etc/nginx/nginx.conf - - .. note:: - - Create a separate nginx configuration file to serve network-bootable - images on a non-standard port number. This action saves existing nginx - configurations. - -#. Start nginx and enable the startup on boot option. - - .. code-block:: bash - - sudo systemctl start nginx - sudo systemctl enable nginx - -#. The :command:`pxe-server` bundle contains a lightweight DNS server which - conflicts with the DNS stub listener provided in `systemd-resolved`. - Disable the DNS stub listener and temporarily stop `systemd-resolved`. - - .. code-block:: console - - sudo mkdir -p /etc/systemd - sudo cat > /etc/systemd/resolved.conf << EOF - [Resolve] - DNSStubListener=no - EOF - - sudo systemctl stop systemd-resolved - -#. Assign a static IP address to the network adapter for the private network - and restart `systemd-networkd` with the following commands: - - .. code-block:: console - - sudo mkdir -p /etc/systemd/network - sudo cat > /etc/systemd/network/70-internal-static.network << EOF - [Match] - Name=$internal_iface - [Network] - DHCP=no - Address=$pxe_internal_ip/$pxe_subnet_bitmask - EOF - - sudo systemctl restart systemd-networkd - -#. Configure :abbr:`NAT (Network Address Translation)` to route traffic from - the private network to the public network. This action makes the PXE - server act as a router. To make these changes persistent during reboots, save the - changes to the firewall with the following commands: - - .. code-block:: bash - - sudo iptables -t nat -F POSTROUTING - sudo iptables -t nat -A POSTROUTING -o $external_iface -j MASQUERADE - sudo systemctl enable iptables-save.service - sudo systemctl restart iptables-save.service - sudo systemctl enable iptables-restore.service - sudo systemctl restart iptables-restore.service - - .. note:: - - The firewall masks packets to make them appear as coming from the PXE - server and hides PXE clients from the public network. - -#. Configure the kernel to forward network packets to different - interfaces. Otherwise, NAT will not work. - - .. code-block:: bash - - sudo mkdir -p /etc/sysctl.d - sudo echo net.ipv4.ip_forward=1 > /etc/sysctl.d/80-nat-forwarding.conf - sudo echo 1 > /proc/sys/net/ipv4/ip_forward - -#. The :command:`pxe-server` bundle contains iPXE firmware images that allow computers - without an iPXE implementation to perform an iPXE boot. Create a TFTP - hosting directory and populate the directory with the iPXE firmware images - with the following commands: - - .. code-block:: bash - - sudo mkdir -p $tftp_root - sudo ln -sf /usr/share/ipxe/undionly.kpxe $tftp_root/undionly.kpxe - -#. The :command:`pxe-server` bundle contains a lightweight TFTP, DNS, and DHCP - server known as `dnsmasq`. Create a configuration file for `dnsmasq` - to listen on a dedicated IP address for those functions. PXE clients on - the private network will use this IP address. - - .. code-block:: console - - sudo cat > /etc/dnsmasq.conf << EOF - listen-address=$pxe_internal_ip - EOF - -#. Add the options to serve iPXE firmware images to PXE clients over TFTP to - the `dnsmasq` configuration file. - - .. code-block:: console - - sudo cat >> /etc/dnsmasq.conf << EOF - enable-tftp - tftp-root=$tftp_root - EOF - -#. Add the options to host a DHCP server for PXE clients to the :file:`dnsmasq` - configuration file. - - .. code-block:: console - - sudo cat >> /etc/dnsmasq.conf << EOF - dhcp-leasefile=/var/db/dnsmasq.leases - - dhcp-authoritative - dhcp-option=option:router,$pxe_internal_ip - dhcp-option=option:dns-server,$pxe_internal_ip - - dhcp-match=set:pxeclient,60,PXEClient* - dhcp-range=tag:pxeclient,$pxe_subnet.2,$pxe_subnet.253,$pxe_subnet_mask_ip,15m - dhcp-range=tag:!pxeclient,$pxe_subnet.2,$pxe_subnet.253,$pxe_subnet_mask_ip,6h - - dhcp-match=set:ipxeboot,175 - dhcp-boot=tag:ipxeboot,http://$pxe_internal_ip:$ipxe_port/$ipxe_app_name/ipxe_boot_script.ipxe - dhcp-boot=tag:!ipxeboot,undionly.kpxe,$pxe_internal_ip - EOF - - - The configuration provides the following important functions: - - * Directs PXE clients without an iPXE implementation to the TFTP server - to acquire architecture-specific iPXE firmware images that allow them - to perform an iPXE boot. - * Activates only on the network adapter that has an IP address on the - defined subnet. - * Directs PXE clients to the DNS server. - * Directs PXE clients to the PXE server for routing via NAT. - * Divides the private network into two pools of IP addresses. One pool - is for network boot and one pool is used after boot. Each pool has - their own lease times. - -#. Create a file for `dnsmasq` to record the IP addresses it provides - to PXE clients. - - .. code-block:: bash - - sudo mkdir -p /var/db - sudo touch /var/db/dnsmasq.leases - -#. Start `dnsmasq` and enable startup on boot. - - .. code-block:: bash - - sudo systemctl enable dnsmasq - sudo systemctl restart dnsmasq - -#. Start `systemd-resolved`. - - .. code-block:: bash - - sudo systemctl start systemd-resolved - - .. note:: - - `systemd-resolved` dynamically updates the list of DNS servers for the - private network if you use the `dnsmasq` DNS server. The setup creates a - pass-through DNS server that relies on the DNS servers listed in - :file:`/etc/resolv.conf`. - -#. Power on the PXE client and watch the client boot and install |CL|. - - After booting, |CL| automatically partitions the hard drive, - installs itself, updates to the latest version, and reboots. - - -**Congratulations!** You have successfully installed and configured a PXE -server that enables PXE clients to boot and install |CL| over the network. - - -.. _iPXE: - http://ipxe.org/ - -.. _ister-cloud-init-svc: - https://github.com/clearlinux/ister-cloud-init-svc