From 857db67afa1c7152e24c5d4381b30ec884211291 Mon Sep 17 00:00:00 2001 From: Kate Patticha Date: Fri, 20 Sep 2024 15:12:20 +0300 Subject: [PATCH] [Inventory] Enable elastic entity model from inventory --- .../assets/entities_intentory_light.png | Bin 0 -> 69327 bytes .../enable_entity_model_button.tsx | 71 +++++++++++ .../entity_enablement/unauthorized_modal.tsx | 118 ++++++++++++++++++ .../entity_enablement/welcome_modal.tsx | 115 +++++++++++++++++ .../inventory_page_template/index.tsx | 25 ++++ .../no_data_config.tsx | 67 ++++++++++ .../public/hooks/use_entity_manager.ts | 39 ++++++ .../inventory/public/types.ts | 6 + 8 files changed, 441 insertions(+) create mode 100644 x-pack/plugins/observability_solution/inventory/public/assets/entities_intentory_light.png create mode 100644 x-pack/plugins/observability_solution/inventory/public/components/entity_enablement/enable_entity_model_button.tsx create mode 100644 x-pack/plugins/observability_solution/inventory/public/components/entity_enablement/unauthorized_modal.tsx create mode 100644 x-pack/plugins/observability_solution/inventory/public/components/entity_enablement/welcome_modal.tsx create mode 100644 x-pack/plugins/observability_solution/inventory/public/components/inventory_page_template/no_data_config.tsx create mode 100644 x-pack/plugins/observability_solution/inventory/public/hooks/use_entity_manager.ts diff --git a/x-pack/plugins/observability_solution/inventory/public/assets/entities_intentory_light.png b/x-pack/plugins/observability_solution/inventory/public/assets/entities_intentory_light.png new file mode 100644 index 0000000000000000000000000000000000000000..eaa3e66dc97845d2ac2a7d4b6563f93340a49b7b GIT binary patch literal 69327 zcmeFZg;$j87X}K50wOIST~bog-Q5h`AV`;VGjxa2NOuWHmw=t<-l9qruV(&d%JJh|Ut* z3OeWNCYsWw^71h6pwEafupt&O@X#k%=m#JAfq{7z8w`U0{lKcyvi6iO!fBT#L9w~i`iD9 zfKm4hAPka4;e*P~H106t(;Qypp zISd>*xZF3LM)YshK;KXv?iWv5`}7Wb7iuuv``i3^q8B!0R z|Ca_8Bu63ow>bYM>B7Q`P3pn&0)qdhA;MxfJG}ZM^*_Z{UXm)6vKdRs$>sH3?5V|J za4w4BMC7v#=a)YbJy3`ngC?OUAj{K!o^3NcCI$@!5s8+%KFx}QoZNrfZZ<1Y;BqII zTp~R};~Ua{La6x)6^rR%A754J`exmp$0@3Unva@f#THEf@e=>eUZ9W~m69m{mk3K% z-Rgzb5Ds{u5i7`1m7bC^XrIEpPxAEaf)WS>)<$#6?NU)vmmZ9y^UT3(NJzY3&}r4( z1c6xUs*h%@Stk0vP^j|$Xm6{TR0X;0N2iwv8pmUJcX#!?Ya4Gh?nQm>C1#xanCud4 zM>OyH5h#y(&sjGvFrW4r`^l_vrTEI)E~T7N*4|8Y1l8@%jJ92i$hR%IfDT?`VGa8; zhI(A?OJ{nWRu1bp{?(r9j^VNk$OCnBn(rjXKV<}A|f?}PkLrbL9 z>*dGRQZcMR@<6Qp_UYv2qqozlcriVA(JgoQN>M9qB;_pI)>KDiO!zsc&3wFE231GH7|w1|Lg^%?-5%3| zlK;gjZcntc^na`Gi%x?Er-0@B$#(ZwevQXP#rXy2@@(M9{POg>HoK4Qc@s^}Uo4#$ zo1A$f4ja}{YX!Cg&?ZlNRy&a}TFf%tgVh~s&^nMh7}?k+r(e*8Zh5x@M9)k2$OP&4 zUFpq#<%O|bH{Hx>}=8K%c+OTf}d$ z&tB~0$TD8-&y|8_kt+@tn~S{=CB)7mceiwG0rzjt&<{lYkBaOfg_c}&9$tT|Z2gA( z-w_k}Irm!-nYCGdNG!NDF5wU zto8QB2C{;p;waoyON+NPNZqQyhKNpJY3X@g<#<>H?xer-bAxTONTC;3XpE``EKj!8 ziZz@`>uoI?>cs&lsRDQ_CZ96mwl1%udblb{0x+dFtsY(&WNMSUTJo&0Y39@TH8Fvl ztSB#EX>)sXqZ~YC3393NM7>olo;`m~={aM<|8oovOe z`Uh66#c)UNUl|D65&;EjW-UqQtbc*4|iw22h_6f zz43{03QkuEyxvLwnt8R>gF@sNUpy20IgaP=wqr$9Eh-A=oY8Br5PsC{hqm@IQq&;R z#W!gBQ)?rf2&&P076+mO$az+A!y` zbp)xvNf%br9A(lmhRXLhNg3~mnaLlcmt{E;U;gb8orc2iC9bpU$!P4GxO;XpbjhQZ ztBeCPx#Ku$beYf<2F>FHh7z+H`(o$WyWVuy`4Y0P!GSb{hm%v|?VTZLrLEcyfvB#N z_`t5&>4s$N`)Y=QOrU%Fx+SmTxaP20pQI&LxlwafL0!{py~enpE#uO?_!{8cfgp5|LOU&fL7*4$$x|SR~n&B=wLM5_w&u3 zh|LuxRAx+Fm1ZjU>d9I`hl2{6be8t6&}vuhN%tZ@wctNOrnKI6M?V$d3seA^KqkGX z0%-jfAR=!T6<11SuggJ<5)x@}R$#&k8-Xa+I9 zUu-W3M}z_oIsjc0cwJrHzRtx2@MO83`NjxeJuZuFUy&W-E%&mag1W45R>OU!BZQDL zlS^F79hlT%)LvriY^fwi%fQTBij?POrwaGZ>hOAaE<|g#jfErevm#;Qi;a#z6%_SV zHD=-dhv5gj3HJvVrCbSlD=|{P>?J$rRlPnktNF5F3*U0ShW38F9H<*iX#oeP#-d!$2YD}lw@js7Eszjx zwlQ9CfM7ASw}*5yB4yWdA?UF=m1KUp(K~6iFzXrLH#k7=RvqMRAT8ZrW4L++PDo9) zGSFSKsaZUgtm%Z5s^3cp-Zcz;&@%Z*%28KW5+dM)3 zol2}Ian zFo{XS;mAq#T>KWP1l`?a3jf?dRb#z+q2Yzj~{qnwA5Y`_~Ri1Aboy@bR2#;8Xy7a}9 z9i=HHwhO_CV*D5Duy=LLmdK5bjlWV@&CJ)g%03Q%FR{5o_F3<=zZqbEO}H>Ev;H=X~1unlk-xJ@kI925UJ1+M{gw6_W-=MW_ zd?Mgi;AcFqwqGZSkBcky3aIeBdbA+Gt^0t0)Y>7*|H9L==d>&Db$51ykF)22!Cg5& zU(dQ_=1;-%h^o8|Rqe_(4e%thl6?)yvsqusyYd!31rsWZLBQShe=jeDb2){)nJQEYA}Mq4)`j#f|Iozwhi zy;jI(ld)?BYwczgdzKX^j6aLx z7ayl;y6gcJOWg)6G~k894$tF?HidCX5^pI^R1yWr7(%k@xvodS5L(s=nPOU6r}JYB z$lf{aNWIcRG?A0xqrmCO1p{WGRZGYAM?JjW%gY_2$ucYI3t*Tr%(mcwqvD zG)i7!@l3<=z`0V&c1azd7I$d_dN)cAYQf+RgOL%j8TME(9Iz9l^ z$KbPDOZ7%)W(8R6-r?1R@$vKZO-!gvwcpV4@ud<7OyqM0>unax$wRLe zSc7YYUmYwqC(YL%31u7}!ViDn2F~Mj<+_NviQfnG_>VzYZM7rJeW$3>n~u(qy)t1~4LrNwf26ecU9*TSR zapq`s-!Xt69?8%IIE_5H?^s1vamhb}+=dK;nP7KhNv^(@EoGX=oKJO#-_YGfpOm+) zP(WCtk&L@5Lzq{9r2bb#U>b;WY_HwhIH5Yp&2jpuh=N_rZd+fe&})n(I-HIN@S*T8-zZkH?Om=Z%|w z=~t#3_k0LR?;~2P_1fcWq}$iMWp8sbTAC&zm|A7f9e%?IP?h<`KE%S!)h@Ldp}Z~e z7=KLQ5jnGLg++b3Oh>UyTfbDhJTxMEG^d01c9Ir6+mWiR=gAOJb^rXE2v_6D(TE7V zhdX;st@eAjoGqC*BD!$S+zNmkmmXO`n>9JceieG*=GjQJ2`>^Cg7 z%{K7P>pKHYeNi&ztIu3;femEJ2!4KO31#%Qv9S|0+}w|u^lux`Hcyd?WR)ZzK3}SR z5lHU3@SL@sJvL&)Y9rei=)fS!)8ayHUghB#z`%Sv`|As)HRo1c@AXI5w6?I7 zXEin;^#RkQECp1-?_(NQw!-Emm|dhkXqY5RC^rFk#Wty41VzZe&*zwXwzzklJij;| zOi^B33ki<+h=i^LTy{hcR&*VGk2zU*?}Sdt%H;Z>)Q!Laf#pp1N=62MC{|oJ##*lX ztgE-E>Yh41Q$jhPyR_7Dn?Q2Y8&M|_j`4pGKX;-Td1?CqXpAzQ+Eui|77= z`v<-A`Lfg(ZN5dQt#5rp9+sgfD4Ag9o%i{BQ0=m03EHKk@-E_nfCrnTuliYt633|1 zwQ^j+@NP8kV>^INQJ_#_oa{mQhbt#AyJNR09tqBq2`ID%Br<^c^6Aw|GI-z?e;ZdY zLvMWhRZE5J+%UEVQ6>cx8}i3=2%Q%m`_Rl+fi^n8D@*s#w=8J_3vS0?O0RqSP&`t| ze_zo*YGmTSx4*AqYg^}?I8W@e{=Vs~oR@ZW6kfa0fpWX?`|NG^CHHKpqTNfp_r9YT zQABk|1PdCqqr(gfg|>$D$f$>s1k-j|&*+cQ=QcL(4(qGh)tMUY;9D z9F$ZUc{Nz>mSHxEvivV?9RcvW9Qj)Mz(qrd$0{db`7r&M_2GizE+l&fyN}ftMj(fl zD`n+v+~7Eu*r5pIti6ND-~s0GOPlbL&z?M3^w%s7uN?3gER|WgFwP?YZ=cgS7?sN$ z{p{}>r4lveaC`8h1P85x4NbMpve7$bcWI-gdCN!;kJu8)*ihPWhw zJbo=`Gk!L5XS_1=Kw~^e;B1F|ikGku8B3JcTS7CbYd*=Y=i_2;iN16*hZ?{3f8$+m z<5*Tz`0j+DVBX1p_;8VD+~%$=@R8OlIp7O%X?X~xz_~r4u+UzhPpq3II?}{q^d$xt zL1C@4juwtQjEL=Ht2dk5v7s7t&)l=^j)&~dtCyMYj1h35;j*M@B$>Uo>9$9Dz@<|3 zAbp%&A()Nq{buXu*aMzwi(>-X$2)!T#c@ftaHz{7SQ<`k)k$)zWYyQHWRHUIk}1!W zU`wuRzCMss+}xe_I5*6MbuzvkDPa=Zg*QvsB3t;QIHxuv4AF+v*ZmaqM;b!U#E`L;LtgHjA4zNC@-E+z;-1{ zFAp%WpP6J|Yu2SOMlA(f-0|^vdoRX4BIc z0i1!{2`?ABN$AD(R6_Ow(c9ados(PlmfO&r4<|ER&1=F(oVTnh=TAcD1~6)yFXv$> z$v+)n3B0l=T8fECI#V^G%ZRq@nu(lLhQmMzm)ijemE z1aGaxhh^XEu_iX7KVomWefImKTxxs=in*=fY)yUCOSw#3g`L99KNqeUip&X+S=AUf=Ug?GQnVnSEJI0E) zXqf;K5$5oUFn9{F^kFXs;>+%bXGk(##$J_`CnbbAtm!dYcXp&6kt8o94MN8{aMIuc zw)oW7D;qqo1X5!l4L!3GOKkBxu7_C}7gQFwj&-f#uRbK*|ChJ=!mYCMra$9#YGwoj1MmwZON#A?mh z$Y^IZgd}I$X1>VEcBWi!kd>_+jL)g)Gr|Yy6n&|E=IkbQ4HxbhMPl%5{=4uqwNcIJ zy>(P#0lC|&qeA^57Z}O4Np?rwnbGA;9PhSJ@Qj@hXH-KNg?;*zOZC>UDu2tt-d?Bw zA(eAF;mCLcE&LaLy(M3p4?K-RZ3E5zcKMA38_15G%sDWAZ4=rx9m4= z#KXGwzNn6Qhx0hZPCBDFlVQ1T;*?2eW<^?Y5ntYT{cKD;ZLAP{s1X}>G!V?&3DpDK zYe)#>_@HRL{UGzbiBfKyXp>fwTR6#QbT#;8t|5oEP#3C-=DQQE!4$6#1T(B3WF`O| z(t8N4#25e_L@u$n)!d4b2ZXi7k$jQQXbnE92O}ha%!m~~Xk7;*q|12NDoRUJRrkv^ zOrs*rjMpB0eiT;#HBDC0kNPAy_T=v*ep~Q)EX?4O-^Bwae6vTgbk_pMy52`{c75Ew z6W3}K2R$C99_@^+it;%_3L(;Qrt+!9#bcOG`6WXhb~pwv-p|vjBvBqz=j^#RO>GVm zf)k5C@94lX8!g$ftYYcyY2RMLLSfQ!DY#1#FeSG0h%W#KupRl({bIS#j2cX*GubcD z$maJevgTqXu{8r-5TxP6V-2A zxhMyI63y<6XyE@0L{eqca?z|2en8+wS+v6bG+Cx^Q{tBy_}NJd{umkV0-Sh9HHEoM z18aAB`jFGv%d)e-Y!c(U`EmQWf*tp@Q4;Ig{9PP@JpR`k1ZCu9ywjOoRQH}}T=TwD25JJpy4 z@at&obbilh78b`{IqdX<<^|>?*JhqttJt~D1Rz!E`-vO~V?q(#KGy262 zwhdgUc;Nm8;-S&aU?^m7v?BH8Db$G!U8gA%#jwn$>-7H@{FhIG?591|4LDKx57$pf-I_i-%IV-rJLHIJM0e6AO#h z&j1e(kMc5~?E-LhwcPn~PGUI%_tARL;D?*EpN)>+2l3m|>PVZFwo1Z#{CdDl0}8>1 zwvbZ3TQ3^}rsdR|R(-WW>P(M|O;0Nq%mtAnDdL?lY`Xaw-|g-v$f?>FNFb{dtNHPzZ9&CmATFc;G+0 zsIN>Ou8F$Ua{0iAj1%~4Jx1{@y=3$o1%p$EdE`;R288A--!1^;X886z)vh1Zo9gB5 z6)zu&Cmpjo4LZ!r^tp=$B_~`@frxnEOFZ6WvUipwx6kYxFmvFP`2YAD%}RQUjsc7p zfg`}xLfaJOVWX`gd@ey|YJlNinI{cuuVOopv0QG=P$74wilb)Gs)~GpiU_!L-48YX z5}%!8Qt^W)eTe=eX=q1BM}lUGz&b;%s{87mD#1qf5<>O%yX;^&WA`LRVYb_VloCcU zwEb4jvuF5%hXNkA2b}St)tYiO_Ulwlo4S(X9-o_LiB4AHHy9Quw!cUMP!`0NEtP_i=)KRIBEKMJYeU5!76YLSDSQkOC4%;P?k%IWO z<_f9DHVs*9Fg!>$@lFmJz{%0jPgQVTc1F0j0;_E7?h04@h!@n0@K{=6P=y~G0*K#k z9PO3n7@-GKG#n+*YMRioQznqE5c_;2uSI(W)#8Fp2pC8w*b5bkuquLg*I4&e9<`X& z&tJMddoV1~q+Y-Dg}vWxKEef9YU9`1kx1>id(3R?N+UoC334akx~kXzUDAy5KWWyS z@`jQ%;-AZnf@!sHO{C{L8Ns`C(RC5vX8Ie(ZSI6_Ut47R5X6LBRb4H>g}uC%kwa{g zgrY&}c2RjQ-+72?ykPXaY7id<^}2`JvAoy66fY$r#Q2SQcJH#(+>0{NF)yi=BMqCsAUq7@;t` zcp9sugcJISv^2hOU6Op=qhI-~>=p~(zjc1T6vN=ViZNAzsl!(GtlKPY>b0N<2 zj|%o%L)vkyt58G+FO}VqcxrD+>HX$Z0q>Q*-d(S=d0wW8cV8{E45br4d!x{J0&r#u_Tucc5I5LOi=4_H&Dm zr+Y^W(?R~X7X>a}a-)zH;|^Th{}G&4l7Hs)#}VPqZYG9s+*q7A9Cimax$JfsbPa&?o^h|xaZaUce3z#S98Vw{{HjnR6FH@ zDQNVhn9aM#>EW|y9I@v)MwKQ#^x%&IOx3AOOiU*3Zq6nV47Dxa@t==%*7$hmSq3Pu zR9E+HtQOBJwtnwaDsMV_$_bi-w40pp#82Gc?5;`@7q~9D zOO^>5p^5mYSgN{&2Ic#vAW_H{R>@pg@ry zAaE_Txqc91Q%R@_7JKj!cukBa{>;skl9MxO&GkTS+g?YUx+0!i83Bk&EJt0mTG6U4 zMN3ONS!id_8558eM(aIaa^6_2XvY2pc zK`;t1|kQ8BF zR}(~UC~TH9HWpN4edB=brrZ?poM>d~Y_oJ@ld(#?o|Ze{(8rZ$av@;Y>lV>}Qpg5(1CUzL*~$lyZ!9I@=0egd1rLf*R`;*P783=(p)>7Uke!#GA!h;_hRa4D z06bMq&7k?+x1u}MI$|=N+cS~J87u~Tyyv_)TFz8R<7#(~QR1}qv>8nFve6|d(JDx$Ixzq5)144Aos-NNN=`EU1YzY>b3|jRK4=30q&q^&`LwF+cvsRqm6ZT`m zDNujPcy#^5^7HY9zN0{zXhkdJU3XP7@5PJ(c;lpxB4#YBJ-~c(AYo(uK$MK^-o~e) zxq1BISy;T!@n@ds7$U*`iJH>gf>lnXbe>w93+U1QbICJe{v1L)?=SwL!bgOk$LP9? zyI|mL{}5Fxy)F@DalQj87LUO33eya4dO?yD(A{&Ww7rRhMKv}?5L|NRaCNu{MGv!| zJB2idG|Sfu2Y#x3XKJami~;!*#8*-PzLf_C?DnBA@+&%6UCPQ zJ2C!e-XGWaU)O~Ew})+C5vusqbEEWwx~Tw}W@Wu6)kU)4kfid;;XcS}JT1!vRk{Na z-)5h7{~WVO&Cgp}Lu94o?PpIgn-**7603G9XXEvos#1sEzN|kARpSk`Z;e^hgjH33 zICLj9c_E_FzJdv}5#{uGhnGbjl96uzIKF&vn*#S9E1yO--POfP=81fHcf$)UBxUk8@3A;?~w&6AGFp{|Kb|#;>cZOZg%QB3|3y*GKxpiDg=} z)tOw z7h7|3tICk5cf~F()TRK9Ehuw1aB5L7VuW3~F~s~kmA%BdP^~*wqE>2cD>B4?yAW}{ z_qF!UdILCj8bych-4l3leZBZ@5Rg(?{txNsUF^?ejC!Tt#AoNL7Sv|;a0=C*m*;qP z0L^QjDqIn$cPCfT_VA+R@qtjyZfgiF{s8K~NzC~~4R&-;SQ|0;b+69aU*YcHI=?{O zQB3D?Aq5&3c*NN3z*m}`V+$A)z@Z~OWTAScss*AIRsVJ+Gx#;8I^Fi~C-1pEcjFtA z#_cMok9rO_Cil~2EC zc#WS?1O~EHQZL>gzOY;xOW?WIQoRY*lT@3_DTK`R5J7z=xEBo*fpe+-`}&d>c-G!+Ayhv!=A2Q=u@s0Hdb_WB3bXyHCsH`BWlAqG;$=Ds58bsA`wW zZ3sLJJ2bH?Z;kYe2Ac0Lzp$+jKPp4j*`&*8#-jPmVasH*hAU182uey2OXal77Y#xE z6}ihqXTP($+Kv`yD}M#0gq5Lb{UH*nzJ`q}q=wS*AzOPDh~!o;kU2=~?7$=oF^OfG z{d)|EtSELZ-0Ac<$dqr7&D>0(%>2S4o7~K22*G1T0M3aats^>s*``OX#G*);bid{8 z%_E;EwU$^=^>)JQIPaxOMRy(haId3-q=f6WTS8ap0Kx z`S}ezgeSDo+=d}Zvw;)83@|aA7s#c^LH+c&l+nfSBt%4m>+EN>lPMo-wbd5mCsjpS z`Yr%6Zy>j~Ac)hJObUgwl?!pUzybb*Cw&%a`R7A|6-B#f6mrD(c^Ze-in+J9ztB=u z68g?e07+i-Nnp=OfYE#2qi^A@?v+`$M#_revIAL+uowMZIR`zq`sdqU2q|CT+9;@8 z9=}*MGx`wPwDVY9i}V9|gbu^?fe!#V(bW+fot9D$6k;beQm)@}-)ygyza z9oWNR_*!b7rcrHrK1z#a(Q)mW;0uEEa#)hgDoklLb3_)j9J39l+zUF#24?Mz=Mtp5 z7Qc9giwnH~8px4^hRDdk30*me2D;u}-ZaeIK<|P0UW@Cf&K*S@M=8A~_;F}pBqdz ztlydh#R%d;tX6$Lz!^kv<}~A$%_l0%u-T8|2J`C_U4{`pkCd&#>>~Sh9{{%#VQ@8( zw_3JKeVGevmO!;B891eaf0qLDkR3HMP9*4))|Nsw`(qxxHf+lqZveolm=I!~*1yqi zpdH%AUROI6a1Cm9B|*V|Z8T^#QGg940>F7(uzO+I3hV0+&qX8D9-mfCefjeah>$pj zZ?eZ`?e53A1b$iev`lT!s84IfF~Df~At6!M>sALy`gDm7=FMJr(6z zOH`kRh_U42L$_1zGLSEOeiANs=Br&nM_qAV>)4m11&H+ln5|V)$S)&h4+PN|d z0c7(M(QnEJj<<%lb>2N)7aXZ0OYqgxJ7yw@T78~#jSTpILR%1FO z7evirln%J;hpzV-ey>u=$QhwkjQ=@|jznJ*>|~xpZi#Mrq1E7w{2hIO#f=9?+Ah~t z1ILZpQDMR*y5{-uWErE?+@xM@J0?JA(rU%t{-yH(?)W*pVr9n*%z1Fr4ha$lzm1AX zUn)A37mN_2iM)6pzN@b5>Sy=KZ4R+};x~kb`^wWnLJ3qWQj-=T82PN>-022OvKY>r@|ycl7gY%p4qZT^ zeWNIhoyrWfL{ek-bao)4mkm7F+ zXTn{zJpMux(5&y&O4s#b`&PQMJ?8-Rkz#TgN}Z=x#)<>d3N8}g!k)gZy!C;^w z{u56-%M$(b?o3G~Nf+`Hw>mxy>XWmq#`Qe0Op5T~WxV9|rao!>K!=-(5jrfMxHH`T z@owAgjB4xMb{yCL@U0|8A+g2H>bS(;?-`KplzjE=z@k*hs{!{$TN~B8p6LhIx8s zb3~sC@~z10_OglrzJwe$lq<9mO3WQIj^UTksk6>j zD^;J#IW1|H*O|38y&M;Rz;YAw>R*|`pe2e5)vBr0HTUZ z_Ktbd=gGw8)c1}h83ZY7UN^yYAlhsX8)RAkwn_#jb7SPyL46wD-tR-U&Ui8yO7{fs zkG3aymXxUZ`20mg{ELB7z!7e{(g=r8{%Z)-pi*0$(FX?LFx{j;Np?avaM{7FHN(tT z(bZA%$b9jm8T?6OIPTw{3l6e!n?Rh;L3{npmAp4>4ir|0cmo?6;Bi8a^B(mdK3@yG zaV1k-NpdR+FY}AfavIACQWh;$%z(&2!PF&?Ou2n&*S2QAubfW#s6IGqtsiCpYIQrs zJ{&J1I10wY%Piu3_+kzbFZ1(^-9HX<%WEx+ZpV4dgZsnLi%Q_tEA)qrY;uNMn2meJ z(zqS1K~!f-yY$+#t_wr$>ThuzNFCR?mI4dkD=fnjp&;OiavTA8+J#gzJdcv*qdUfTzV~P}p50_MImbZZ^NYG~XP= ziczcy6H+TCTpA!O)~P;2ys(%_ULqh71JHN;Yii_#Uf&)3zu6k}>3st7`t&=kh97W} z;)V6#z;XR8sEf115f6N^xq+)W!#Dn@YX{jMW=dL>V@xN8kc3Oh2 zxJ)UIPfRQ)cNV-$7GxO95qHFnI>UyG zujoKiUV^4JMm>KTW?HSAC_d}k>Q6&WqS6@gZ4@qYQbW(->KN}L%l&?JNvRdg$F>Z9~DD~zC)v;aisYT-%IyXyaUQ{Q;k<5MNna zl_H$fyB-PPv(a=V&J@VgLGI3;pM$OJFcet+AFKx~p&CmZ#W0t{$uMQ^m(#_@o}2z{ znP@i%*TsC3VKHrP{nKmRvXk-V`y=U-z7)nZGe|0_p#@s3-vVh?f>8i|s4! zjilJG1>~R5?a)1>yl>ByF}R3QMET`ra!{wey?&_aS?5N#5G}$U`gBuRfF~L6f@EgC z{6P(WrofZB7+v$!`aMG^GEZz>LIE&{9g&_pr5xfq-)WwIkim97pQMM!g(t$C?{vXb zbT=Z}Ruy~v?4dCXgQA2&K zMX3?ZyyS?y9B4Xx4So3yPUO{iGvp9AD7o^-w>@;Pvl|{h-8fEXvAwFVaZt#40f`IK zxk*KAH_}L9JLyVUOwSz)=N78z;)7wjVgRah^+A0d$OeIw*z!MjbINzh^TZH!)8V5D z2gx~SPH$oz8^u_!>(73qZX2N5H*(~q{{vE}GC<9OlIaI@yK*JCIc}g@@t4M?>FlrU zx+U?7YmxsHivJC#SDnO7KULkB@B>~~Rtax{xX7Ny0@9%1xp(Iuv!RqQ>6O6~yJ3Xd z*Wm5(rwSdaPL_LZDz9IfPcqd4eC68IqwY!dpN0nHpqPCEQYPDz*Y1R-NR`&Cz$L-W zYeDEmKJX5T>06S08)^;f!>O;maEyX@Ns0ckafE_?zmb;RkY8Q;1qNPE9GRYvdF?!< z`t;5B(i7h}W~j;XX$tcbV#58?R-l&2GM}ahupprlf;Zro00AzyAxMx=Ga=s{HlX{Km$VAjh3( zP)zS`y9wV)yDY^LOSZ+9KFRqH-s()AMRKO53?&$i_Vx?{Shhf*x@8H^4Lq!jb{@yA zTQ<9gq#($c_nynnV5{IQpWe)DNDGMsL666XZp95IwHdx{gFuSHcl3sWuv^Mu5mLGI z`gGgfIgzREI;-@r&*!-Z=#<)RbBi9LTnfAiB!%z1=9h1{YxUeM=&M<`Cx@jot!tyO zgU65VkL+@cxeJSn^NHQ3D$Mqdra8%Xhi=YZ*Ise4uUBy}X`+aHo1?&X6^;gE)_P@b9QEl;DJr9M~+ zTzzeBBUB+#M})1oMD6;u!*VPadgB&OUlnLhIY2ElwHByl1%(Vqp&(I>`xP^It`4L7 z>{4gle`oh*ykvy`*`0+{NJPilqKRk!SI^*~g_t@1N4(Ve)`9gql;&v66O}JLf!7oB z2fJ*xS%PKTeAPNc;S1jJ$}wAG)L5R%_s9nr=^i!!Lif}4_#THvsHZ(QdR7usOreeY zMw04k7_ukQ!lstk?|%@Msy*k`S}fW6sg`{M``qv2X44KX$W7QS=)u6i;RDdXNWp47 zS_!x{cJUQ5kU=ugiG_6E%FPiv5BZ8DfZ|D;_JTPn%<(a63uUpdu#$kkZ|H-gz9#t< zAOvb?j^3vi@DF(tI?4%VNIvScYB1}cs|s$SE&0sG%S32S3g1b5PlnHA{9*T9k!om3 zZdOqOwJx~IK^kt^=axawbVEfqLh_usw1Rpv0B@2IOqswTnVq~h$ z-k)ozM)%*V1$u@On*jV@uHJ$t{a~L2-v~j=Hdoi<xN|qfc_P1Zw!WDY4*1Ky`RteM<>ipQ*hg?gDoT~EvWfKj zwE>`GkbueMdTvB2ys)qU zAn<6V@K+>1>qSI)<-^(X+wCgppRO)0ana6*<}+Ul;G2b@DF8Er?^mH$euwSu{R$c` z0qC5uhwo#eD^asLS`*<9R!VVXQ_eXAIrgD#gIYDPy+NXV0U`KghCn}}j!COL4@tQ+ zWtNr#oaK4#>X-b(NYEIV7w{~B$r28i0_q{GoXYB(NX1+f!#k?qY{z%IDtIQ!5uVxJ z@Lb2iGv=yZ+0SMSJVkw<_%n0wJJKJR#SfaRKMJv)C`Yl9+67!Lw`J^2ss1(_&08sf zkw4SaP|)PqWJ@j5JQErk;#(WJjB%+nU#gZaok@uHD&f zJ@|zS6MbGH5}AxXycfR*S68B%b{V_&qww#K*gT3ji)4_n`UqL1pC(W}1VvE%un^`- zeu}>e<+7_A!SzIXx-rLJ9tm%-PkTj75I}d|Id5ujWQ8QYFkADnm*e9N{c2G0OggAQ z*l$dduw?3YU)lu|`v|U=0RbA|6TIqfV)RUNV^zPaKpIR_Mo8zd^(%tM{u-}3{N+y1 zCxS?zb%p6(4Xa#Qn!A|HA!J!_Ic0>>e5tVhz7V(3qR|{SXO6EbV# z0<0d%(XYe)iE52=6Ve$#ziZd!5Jt$1^w6=L|Fr?*k-`7`?)Ane{GJ%>7uB?cE2KMR z1Y2qw{v$}wjrs7A^KFN4umBd@@6RXwFJ7YJi^D4Y_f^T-;w6Mw0m**l;LDMz=Fq|A z%%YEI-v}Is;f=|C$U|#Q$5fw^Wq}I9U@GeZEjBzfDknc5^QYG9UDRzF9Yd00jL}WU zSBQgwIcvq#WQB(AHz$b<>mR)FkM9*m0R1gM*L@PsM?_dM2~Pn}GmhXbSE7nH!BS5Ya0?QJumk3F zCJwJ<4K1y*y=#yX9u-RhUD@HjZe3uAun-?~np~4087F6ArSXZtlUMuKa(b4xcL|5e}?sCe$EeNNe2=9>s1h>F}cE~))u2@ zLZbaw%Qne>M?S#&3PGQS!w{c1BK}OG6fV@07M4Evx9Av#4yc1~n+<#D{;dwaI8i6Z zn1NbQHK`^G?*E`xh&Od_U1VmQWR>xR<1N8 zIP9~kn^_X$9(ecGtmXRWVuL4NLwJq4Hi5X)n@V$x&I>*Mhg0Fj9@N?fd6%bm=wIAc z+M_K0Xr6#A<1x8%^8Ra9i}@OTY}VFSjDvZbrN-K|K6_0)S4XamyUL{oaSP>!p9M!b zWR~VF8u&|}ga@V^9WoyqMxAGCcBIqO^^yF(*UOCv6=tTB2sd6@DuUNE=9+Y~(QPnQ z)l}N6AEO_}??ZIN_pbu0S@TPAHhgcK+rLG5q`6MA$u1+#w_im{aM?fclrMXQkQ1=& z?eb5W;dR(OaY<)Ya0(!Z+tZwVLaDdV&kf$OEKHyBR-Rtnnr?IyHa6WZ)n{)JBN6Lp z%QUZU+YjH|AN6W)$Sp^}W3}()yLXkwcWs(cdzydkYCK7$g~%lA+Ck+_AwR}7%_czn zY_zR9Gk0b$(4?wE#dC4hi=+2OU0prV5ttQTY_uWa*J#dLlmi6M@yd=OVD7mXL(bt6 z1?W7fy=SOaMHB`(Y;2%Sr;IgX*9Kl6tw`fh-F>Uk z#sPdnl;^u;aOL;L$ZS@#A`44x7Vk5Lwz3?yf-f~_u~mQF;plEMWvFa*xmoMd2a1>F z0mcu27lS`NJya%S+4DWjv%}sJSJTJABJEXLCiJH%7wVDfwi2|&%agyasc`{R)VJZ; z;x?AOhec+K&bBY;e(z?km&(PEde|JB(kt`7im1M#c$Rc-U$d-^{_i3xF9(MYpy!cL zSOP7WJI3T*B6LfU6TYt=A|1pP^#jp?nQTn{FI^m63=^9ixcR=J@_lWFB(AGdrR)1T z3mIkcy25quO10rAN(zT{eRS^WKgr9}S19uN?Ug$DBwR6A%4=V7tpz;i<}v-jj&%#yfCm6wC_4v+u9I)@!y~5Qj{4u_t5yV1CsAoA~Kt+g}%Do zEM*}SWYYDJQNYRDT`0vg0n~)bRAC_@DrDnpbJ1jEb5osycUf&fV_Ih>?dpl}^+)fl zWS&^SPpqoz;1Gc?3_Sgf*ylZV0Ri`HGfOoi{-_bLQZ|KIQ}h?voOsEDhu*aLxAw$4 zi-*(<@q|yVHXb0+YIxyh8z25QpfV!cylB+Z_ho7BV0f(JR1M|P!*(3(w<~EEC!#Q^ zxfq=cJ(}9?^*cetHnEk&n-0uVq{J3@?=*~~3k2KWd`+0n^tCOJcW8Lc`)RTENykHpS*dv*~OxH1f$yGGT;o##{ z_D@1pK(fohy#AdiSQt`-F$?S zLSH9L#0Zq5u~zuElGsrUo>;*^f5h?GP@4pX`=sUI4xd#S$bydC@gJ>H{LOQBSaPIP<$D!~ePa(sn`2q{RjAr{mp zBodys{2oLN#5rs%00>2TxYF_-F}t58B`{O2mM=LkK;6XT$(WjpL|SABbcXM~hHKdH zK|BT9ZqNDp=$n)b{;`op`PYgpKsEiXn=Uxj_i?L!Zmnt|SVEX!o`CHDTh(eIEODB@ ziA0?6!b&jU!;dDWkw7psscx*C9rSqG*aUSJ(-vLx&o5{XKU+_eRg9_H5;dnC4bNaE zAiH2<{ptc>#(xv)pBrvK=|jcVA4EGGY-aIWh3q8)t?3P1;Y?H}pP zi5|3vlWUUVG}l9iB(J2%<#0Nb>%rt2L+&5apm~S&gRk);X-J6nTBlfDd@r~MyRR;} zAEo6~l8Vu1!2PqrtH^dntjOk+Z+E%!b1d|vB4`lWt(+^f@^8Y8LL?+-vN{2$=BJJB zK#$23S-?m`%L)!@}Zd5S%7<~UA;DI#Fw=-uW@Bf4Y)Od53#3$H1r4GauvD4l|3 zJ98cq=L(hKPM)C=nc+q9c(wh5c@px7+LMK=1OvzflXD4UTh%%3LK0F_3lA=j-6wGB zXezf8sHE0SfUH+WM}#hzoFFqXkp_jJ!-bej_5&wlUpT?~3>d{%h;MXY(Sq1Dgm80o zp`tyi;R&={!&o;!mYI}@;R6$GZHd{0g!B0Vyzq=6^oCmVfqDb}R(a8jR5&OS%vCk(b+pCNQ9r85z?AW)txqxoNhnr@bAPJ{=NmlTD9;deUGUX$dJe(4W0R|$ zt3JanFp&M-UyEl6g1|O-pGJ<&b8xOhaQbBy!cSux=FG9{-i>Vq0ver6FZn~pb+`Rn z0!UQlW{Ij`t|rO~=_GJ{W{&~t;3xSdMVN=6r##IBpi>sd-!ZO6b^NYk%-=ieD5nD3 zf+E)AVdEAsL{WIN-;S{~P)?Kg z*9?r*d$ez3ioW;vCKzjRefo(aIuq;h7b%-+fM~Xsn(Ly7!Z7r|yz5vl%x2M~Vw5zQ z^pEn*3|QL|TcPsZ|AnC({sJk#yc~lt4E}op0kE5ATLL6%L0A}FV|R;__;0to06a(H zE3fL#?`_s8mP3~oDW{VE_L8e0LjqDa+qJ*TzeRH97uWg!(7y#jD@#i8Pr`77vhUFb zcpX#A9$IW?NHh5CzofD;DeJhRi#pEhZ05b3e)cQi4AxQPn>*=8~fw z#jWb;+NQ0JlBl0AB%<74%NvaK#2bc#UuEup&3bg>*Gv2p7Kgv4L?y|DgPm@>PUs*n`+>5=*;PlSSy(TU) z(Z1e^TfxNkPMDP6#yZ!WTS-hU8TtrKW^-}?Wqzll^7^rrB9dp>eCc{PqPJzRF_xQ` z1Yer;IE`bQ7(YekxK$Q2>x*P?Sy8cddFs#(xPqZ%8~XGQ=N1)Zd8Gn=Msc8{U){#{ zbZdApS4jdSLzS3gP(6i55%P+ydEP()@lL)!OyaF|KYb%LXL*^Mitmd=On7X*e-H3) zg+OK=GJHP(v#Vk@zbf%do9jvD`WO?&Ndk${x&fa64Pwhm+tEV$RavddpHs3NVtTW_f zEo;FsHp-&h=5^KLPHnLxaji*)x1LLWF~Hb+1Bh$xX%nVOC*IMfJ9D^hn$whzbZ&hl z_u?MNv?5UCvFTu=56R3VDL+_d>C6gpXriWF)oDlqOpgOU9+OutvZ_mtOL<1ust&2q z_}R>4Lio#9GUc{l@2A{GSz2at23Evru0El70=CDQj&b6Nk~!?&SSo&NGukRhq{1O)%_?47<#%ag@2>`MDjI@X{rF5qO%|1h&!MmrcIY}QrQTeuK*bs@`Hd*2VMsHMl!Riw`lI0fEewml)4Zp|UMV|B`d zOX0K}MU>v=I~cF~wfU`MsxJ6jv|-eK|HYp7@Xg!4@XUjvhpr{mG$k{%aITOwcp{SciST=Hplen^jb0K+&-MvI!V{vBOV5UaLs9r1gse)?whU<0&5pmMP?x>4 z=#*|&e{g=41EgzU)E3&aex2a_^fH^6x4D{eSt^rKUiIlas`N_^)YHYXa(YMP%N`a&f2qj*{9ZRpZq^T(Cg^X4-XG}ThTkz zvGwbv3d|Rr)IiJ|9nxbEm%}G{0(OxSJ1dheKLtR-Oj@m@gF`{uuwNfxwV(Yh<)O*K z;`$q#q6XZT`8>wr5SIj$SzkvY@N7yh%GrImUMvs#>^{Fyqc!?>2WWL<1_x0C_f8rjkf%17Q^}c8m|>o%|spA=#4e z8`QS^2BdgX%RLrSj8v6li{VIOh)p}hu1|9ruN9-;vD~m)$^TH`^JXfcDqoktL(jEu zj<$xtrdZ9yT@5oSpD*fBCkv+n+-c1~^-h_vvO1L(xXW}O`WtHNp4c&AkJo`mJrc^b zDim4{G&L5DqO#=T&zrv&5dS>3n$#(-sdJp=fysI(GoMfvf9?xvc!lo!3c=494SH!> z?YTztt}fdkya`Mu8u+yUD@Ifl8cjuj02?C7pt~JDfPz%W>bet7!f9RD;%S%jJJFg< zoYW6!bk5zIv~Nq_cGG_&wYu&s-());%b^$s{9 zz4`IB%Gqa7O;O)Au?Jqn`m#9IU^jE^sW6=g)DF3t(V4Uq0x!-f1joO#h@hm_bLMz7 zJ}SDp&RtXN!-?dy=ur}!ew}8Na-M{l->i^j6kg$j+wxdnA|+171jZKg!&xNb>M6Mb_N3GxV%lTYA;OXeY+f;C9< z+(|Fb^CcPkNs2s%n$Mecsw9>=kDM^@o3^a zdA{H2xiH@x)}^wIbc>rBJQE2h2kip z0W>sv5qK_6&TsT_JMf5k5oNTb0=VCY;Tw!`XgxCASoT>0P`6r~j4wFU-2hj&~Nu)k&!HbI7F2^ggEpn6jl zdnTL4M=Gw-)bpywymmHW)8>#5fX`LJSa3)uGw<+AL9H2W96|U z!*_waJ+BDB^i?bKl{xc~AJIc_^>GZvP_HAhNg%z|NUHRqQ|N@N-cHr_S8(jm5)=A%)u5mt z_>IGbEo@T1oSZJ^F&=7P+i55li&yu3CLybV$Q$J ze+>Yqu|0mn6Dr%>Ovhs^_51;a;6JLefKEZGmeLCII`m*!GKBCb2St+av%=74%7|n{ zCZ~MclE~wgswxFa6MghxJYlmVUk`oy2U0ciLR70;(Q8yLO5!{!ts0qYF6Ssa>tQ>~ z6E3ki`>I5g9=}cP%wjvS=n5l%iHozmHQ{ z+bltKbyk6t&fx9H$TY%$bemHma@(cd6 z_45o`=b*4x``ipQ%8FMxng^HW%iR#-&xObIZT9uC?wE}n6U_VX7a>Hm#o(z+O8@7+ zoyKd*>hHT}s4;!-gFC+=;@o}Qy|^Mf4F|Gq-?KMPI3iz7DlqUdA}jql1|p=}&jz0y zRncsA(5oDaE|HSOGa_GEI=GsX2$UTy)x>Y?9@Ptj zFZ5S>4+yqStV-J*`7X?{J2L_7HWVx6HasIv% zCm0X?^Uhu1eUbQt>$xBwzwWG;S++)KT#egU3HP@lXHZBd4W`skuk`AywOLuJVfj}F zyUu=_ZJs!D*tb=>>B=Nz4xUh_(g4AL{5m`xj%tczwe30!EGY12o256H->IeXv%*y4 zqZ?kCl|RQIAG)Ys=xSt`tCFYJb6W2|BlLN3`*&|}G8{{0G-k+deb_HAPmkf?gqQ=$|ao;FN9VpIeD=*Z$SC%~W*HHGH@#D`5{`pvO zeY=E%6z$Fh?~hk*)WU)j2?ZgJ@mTb7d-BVFN}%HRT8&ps#lUCoV@Yn|Uvft@+cfzpsQQu4VsMDWPpgrijM9ZI zHP^fxrQwZr!VuU62Yl8v`*;H$9qi_5C`tt+R^|F^ukvx-60V>;2`0kH^8(8BQD&EO zLs0{3);I~G5TCjt^yWeYx?XebIpg#oorhd)vh?8F%Owq&sydvI8K!N1z>&x;W4S`I zO2t03K1j6`7ZFi-etO(LTByC8QP)$9r<8?;Q$Cshme#zw9O&h|2CrUtlDKdoO2zOC z8kvMIU{&*)`0nnvVxzT=*{@a4ZIX3{EfSBaC@HD1{r$oCCU5?qJDJ(Jx#(O^V_TO8 z>6&%--`P~ORb(KZo|sLKo1^yzsh%X*wL01EH1~3`fP2F=TIW@tb?ubHfA(^{N`-`c!CWjjSlLs`xz(r0CsO>-y*myKHKd>FT+0p z)V}kNwj5h)G*-fm58b@LF_ScajU<^)B{qSCTc~4*#*U80_6up4fbpGA(gm}BL^OEl zVCD)_Vnz&z&_7wJM!|#Ar!itSxk4pypOg#tj)@teDGKm;+Hj)Mho%XLBwg|A=`)Ff zs}{l$fy?i`9s9@(#SHrlR zsB0^>tGtK!NaGQf*|+XBvqvXqhT+*JL|I}o?QW8;gD0h$=k!QwQIGhL0@@+U))mUn zxy`Yuf-$qkoLg7~@uMoD>7J!}U221JaJZI|{4md9v%uc?^~Ke|4P5oJvg`2JSkm(; z*hvin0kKJBQs%juA$lqgqfZh8C%e6|Z}K}TZ)ZN8e25Oe^;S0mr|o&ZHmIP>#!zfc z*cqu!hd%Wm1b_S1Nw>%AdHr#kzNTDp=I;X`n*0?roZ#%ccuB=q@mb?l3PS^Svs5xJ z$*`#S63+(AaQn-gVc7I8iDD5=!L^&LFJc zDb}eK-K`w~+6J}w-a3>KI;4`Cio(D`t5XFnkw^bkWFqbtTFYFx>sI z{%*QN7>?8f95(>J!}!fVV=)dtp3BHlKm?l!O`s2!`EE6;ZZE!aZ+FBKA%%q7G$cka zd>0Axsk5=QE6Lh=DuQst17U&MXyOY~^>-(dd~VY#0dRx86WnB2tS_~ct?biE7iRV2t zlRt_>H6KDmIIJO+wkN2LWdh0};>kfG-e{lb9QX~j7D==e_4gQlR-ZRwCG3e?7V=TME z6L;oMvk~PV2G*^+Htl)){qHpRCG@Y&OuwMxDfL7#kyGquWWAp?H|T9v`!!@+j;P6d z%kN54`)Nn_(0Hpavc!1!%Q^Bn5Ipe?PCWW#1s<Ni$jnS#V{4xRw zB?+%v1mE3}eOPC69MjDiKckBqFh7wp0j`|FJ(ZIxX) zp#v_*qfV`?4LeULNp8TK$%f((M^u;8{)j@fZ6)8rDhk#86%C0sd z$P9vi1q84$x0_8-q4OJb&Q@xYEFxIUzK;FQehjR2Vsv!6fjNqFjn4fKtq(|I#+L#x z8WMpVf&%YL6T1QtTl2cc5iS{N1%DwO|2JF0kt#F>l>|h5;AMP4U1F`7uq!vtqneH( z9Nzo+K)NkM5}O$VYlwJ!P|PSH4zq?%GDlamssMY0_dIg|%+o~*Sbqs8|Epdw!5&Ha z2upJx?1Nu+E-T+UjwYJ~Wzu|9Ijxf=UI$}t{9XzhE&(hmlHV(Q{#=j!k;UL2BvtIV zc~-NCyrteoYgMx0O*y8F@2#A{NIkB;V}bUd~$WPdM8+5@IM?$za(H zv<;!A2s6+-3DeO zx4x~Kz4QK7d)-;8{g?VE4`jdLh%ln7DYR;w(#jy_TzYmY3>|n?-2$dJOgxvj*uok& z1W?T1f?)?1eHAo+eQzObF|k&?S(|Aa*HHc^H(*?<5f8{lSspK zDomLra+5q$dkag;hlN}DZ&2@gDlYvvPOMp>4Fh(M=X81&DROmj9_W{vJ&rLqwoa?{K?6SCHmk^@9R0bi%YM zD#MK0e-#bDq2$OuFWgMe4DPW}i)IspKc94q^3C6QWQ5m=+G}NmOF}9A-TU?oC?tNL z&F{;IuGauHK&b`v!J!{|^X*9Eba9R@B>kbV3dNuEJb-|#Z+{FkY~i8fu*dATb^T!e zy%1RC$DN-DTCGe&5D}X;d#gWMT|-4*KQ?{tgZ?_dLw-K-BWfO3{>!`QoDqDro4Ki~ zQ(`U$o7Ha)&2?gR<9cF6$Q^WHlmt8kuJyPKXXl0Qgs-!q()#G74hbWK$4wp5c}HCf zbqS39&1f?jk%YEaiUnbmqv?1hzUK~S-I>kQ&#q9Zvj^3RsUHs%ax*Njauqr>GFdzV zX6oipcjtoRpG&oSw3S=CBUd5$QV^4)B!REIP~fA#5@!9H_`2RZ5B7W<~R#q-V)Rv zbPu?$qPJH}j1>#|e|Xm24byxF)Ht7yNk98Y0s%XS`<73dQhY8Uxw%{j6W^Zhe^rJi z=F}MNGknKfPA57;!Em%3-pU*SB9bf?IL_Ci{Z4IogMYDT8 z;H`W%w69KbVvVFv-_3HkAgftAR>-3nli6bXIqasu@BBnaVYMJ-Wo<4?C7+pJAiWmL zvCH7HQV-kHZhXid7I{p^ZoV}_?#^(=U{e%h(vG<}9sGLCQ&{w2h*L)j6~(;wDxB5P z`1L;oE{T!!rnVxQ&}D5FD)va%*XGy5hN@{h zQDSzoq0=Pw?6{v%NWI(C+uxzjC?FzQNsKBa$~$RXmI0iVyWxtjju&d98QxNT+KJ$w zP>#={;OFQ6HogondlG8-pPKzM1&ErKIzMI{6c&Cgj1nAg1f-xT19tI|^gABjt7*)G ziAQWoBPV>`A=gMDr_vZbQc_YZAwsqTT~f7Rlp=UR0*=o{saz7t@QDB+6Zt@Q9s$82AaLr7)e=pG4QsZ0Pd&JLZ-wtDk~#p( z{1q^38w24JFL&*3cpuso+kTML_7QH43AfWxJ^--oCZbY7Wx(ev<3n6XOX()I)5@h6 zqOPbIyKk2`kU+Y{X4k`8!Kd7nOlo(^ZL=yw8n4C;6Bw9F46F$dRTbuap}%#9^K?{$ z8W+S__1@!_F{Q=pyVy%T#S$f_1zS$?TJzqGdb)mlGI23u+i_+)wf4v(N62)IUFicu75B}3p`<85kJ5GV(oLS z%zyx>{2F+l_l!}lCFxesIZz0JKFJ1zDXqI4_V7T+8CFInZ%1_RBOkZo<#?L7Tteq} z(0=R6Vuz>wV6ks8472SazCKk1DGMx<)t-~SU((o84jjijoGzo`i2Bwp^_^@HY>->z zV>^{ulXFGHjdWWpN68RHU)hu5dv*|%hd|jiBThVFq6ViW6robQMA-u{1UF=&> z*R`T8&2w%|*q;Oa*Dm5{oeb!=ce?82Y0Zxx$Zs8L{=MB13If0@f-HZroPQrH5}-cy z|GBU4aC=dObwH^iHRKhluRRXE66rJja^e^45nJq>e~#N(@8=WOZ1FRG)=`%YT41k& zwW~W64X5KyEgGW5Jgb@O51g$Jkt-Z7RdR&avqPJ9ZvK?4?t8s-V&&}3&+5fleJssT zY)3SsN$#NjYcMexEs3pRI8@lNf(P=QT3I#>BKG*n%Ba0gIT|K5wj@SDiB^C8pGzg+ zDg3J6bK}S1Fjk)4453BG1Y5&I-|*WLtMu={x^<-wsnQ4t7Uf@+oEv}fkw_Jy7O1Y_ z3TI7JAEepJCm|PByL3}a1Ul!zV#)9}T!N9qQRwGv0IV9OvCaF+boonqtVpN7y^!8x zv`iI{NyT`zxKYI_&7XiC;o#0x2vAJf$!0V&Co;<=P3q0%Pgp6^?VV_H@1@l+FS@M1 z;Y|HKNgjSZpxP3AH%=qDcFTZ)W0Cd);@4 z0KS1PaXRV~f>7FYw85GA`E(A_4)0$hqV6(`!8n}vJcrR^3S84`bI89__Z-;DVYQfj z=fM6<`wyj!7~<@;-Kc-Fd}4ljk4cF6#sbKwVawogjYFR;%Zuh)l+bFh&fD8d+b>9Z zmI9dP?U@v){&XkycT(G37@WFP~)N4wiac@KII#3C=Y-@>UlTM#ABWKtAfh1E!LFHHO zEV&b3OEV||Fz5ERo#@fig0i>XLJmWBNxG4FLu!OJJ4sA*A|1K^js#<3+*+{CTnqbW z?Mi=8ozsG7Yak(pCG0)>n;x{$?J~wZANHd3+_h_zA}=EA?COgf&{-=*C?2L`d_0fe zrEvzQIC~VgpDiO3*2QAcLo*R?2Up<3okn4-EsB(pRws3OHCMVSwJo_;V}z}M$JB{A z)syT;f}5Wc?0pc)uPW(Eip(yacv78gsJI5Ib5MWcm=)0kSQ*HI(=||MbChmCE`Xo8 zM6bh()pk?lEj@i9ko$24V~CB6%Lv@xZJ*MHhPef~Z~dHDkELIqqGqd`j1>XeY`a2w zb_&ar2*VE-O>B0LThNCNYjQmqz(@e`c(`i7M)s$K!u1ts(fJH-3dsgw1Z2sF>(SS5 zH&;Sv*k7jSIKE-qNT zfQ6vMqxm+d+f6Nqt;yps7}?YuC%2- znZ}T?kb#!kOc)IC5*v@6fXQiaAB&VMboAhGI8!|k0EFMWkGBbTmu^g$snqM zwOhe*3NfS8D)#lW7A^8m10#Ype4yswlvjpCV1p0@JaPCcw&Y8jwRHE^Px~Zp=m(wd zu1b{1yY(O2G%&Wmsg_)_VrVBeM+%smzcn^By=WYNcaX#ebATwD~5$9#O5Cq!?44R0O{JcgzzpanVw%ms1zTjz4NYGh?k5z zZ^Cq;a}myik@Sowzu9BHi1y34;!9mU6P#80u09wIF2q=EqI=>{vx8%>W;d-df&yD_4Jp zm4UOPu>mTAeiKuJz$Q}aSV=^yoqjroF#R|ff{l^3UT0<-DF18&-qVc1c3GK$d412} zSL8W;L+2*dhy>?8hJ3P=2Awl)6J?Ud_(|9}#t82B&{`gc4bO)ZfxT>p&}8 z2_G7|N@1cqM1cg>Q7`y8oHW(ydI4l+e!+r-a{cZ2kTKnnb)iMh>@cwGyS!it5%+`& zf0~E6s_TQBtKJpkWPiAm{hus=Kee6$97v$Se6;kUM7cjI;k#y46j6F89Gs067g=`! zD%Wj|#T!z6WD2iLk>Du8oW69t?@efyMPzAe8Vb~!oxm7z7=2%Ciu*wc4bYrR`n?=u z43!d~XTL^JV|h4h^YNH@v0LkFO3DHz&eBqH68e(>w5@!4QWDP9K9(@AyVLIPU$Y6} zFhhZ&z0Abj+bB;t7}(fkHwRV=HIccwLu+Kpqp@%V#GHzdBG7LT7RY0;Kq&&0;seS0 zNDH(fX2Ok#7_Afd z%?x_loWT6JjbSrcn(=2gv-%l^n*qo_*et}B@G<(popAP5COyN?VsHFI*fbnPQr19J z%*n6}37tp=mN_V80z4yb$n?0%-|pelIaD<^_SJdb#3m@zPK@=H_NNLK(7|mz!tBfCK(y9e(gB?uxEKSe9P+9s0kp6~a zvR4d7Il}dgd_$={aL(!SZZ=hig*}(cIZlJA(Wg;AwxBkwT62bD^F2EwD&LBg#_>$u z37V2AGUPV&0(V>1a9G%Er7`qda>q_6R2i`09AJEzYjeo#mXypWic#SPP7Y85Ufos4 zy>-q4Yr1SmS4qvlyQEL69!rU1`dVQ8@fiSGW5c(GSZZLd57BI+btb#Pv&8eS?)TE# zk85r|PKRcC106UdFKoq~vC%P{-o0Cv z6Rqd=NR=+&1BJgwUk?Lk=bwaimdRBZ|A&py|FAJa%a`Yk{YBvSuBQrT&o=7W&hF2E zZrOkisA-8B<=%VSRIbHht)*m(MK$idQmF`?8(YJrHj?A7M~_9Ei3=0$&5^H0y>+TS zLL9Fi^YqW)(~WuuX0tlJ)H5$vs#qRA*|7a90n3gmC7uU%DVj6D+k4-Zy70DvOp z0Y+I$muGR$i0U}i5T*57hF^;O#J1^>fLH#@A2J5R2mdc*T>bUF{DOZuURoPC zN$!)5U-A0#dxyDjEt(@S?|WDKHM@pi4;SqBg=G=!#2kYukMrKzrfVHBs#yTDLXwUJ(u?qxRo#YHs=Qy3%s4mR zehHb{w!u-pk|yoNhfF~{2UhRvsIG)G!Hsr3!Z^RN5z)D|)JeSe|3~HQN~s*<`%Mch zek?r)%z*6Oo^4IPWFwfG?v95!t1G_5^z!Su#Qp!V*kSR1!(yM#xPsx^;X`5|`U9lH z;q6O^7WJA7EHJ0{{OE}Ox_0+R!PVjWNd~Wpj`XLah04i5#NGW$?=;~y_kO_Q{E#v^ zHAQngY$(&tY<73<+^b$BN7O_4;C;T&PtD%YI4@}$cRg5?rC1b2M8m_Au2%UJGpqmz zm&{MYw`=2#ty2*0A@A?T^*`J$5;$Cp=mZd+EY^$9+Mj#NE2<=1ELvPaoPWv86uj7F zaOgc-v+D^yt1tzqO*eY$JhqSz84kJtIt}!|)wi?mfKDmsEKi|x` z9z)M*O)P*Docnw7f+l9^j<6EvFo4-4=J(Dq+JnzTVM+DmP103Ab=a9^(^*rQ_rZ_~ z{`=Mg{v&3|wF4MPAV!1l>ToWaQZ8Mhx3{;>eCBN`o5eqzYer@<@WQ!HCxv-tdP+Xt zuiBX1`LM7O#|Pv8s-uW3y4Yh`9FwYi5vI>kVIEP=LZG4eCf@HlaR&Ru^;_XlRM0dv^2bHla>- z%ZFqDhw@4N;S{ykG~6sF<5_?1Q<>eKatDC?sCT3bqaU@5MpCaZfdO$Mqna-@q=9|W z-ZAJ+za|h+(H>T>4qZZ_u4Q;MH5WE9o|u_gNNhZcy@2 z0k6#K}8%8>V=KthJN4ETtM2-8&gORWE$_{B!T~qa(|q zv9Zdk?6^4ep^=fTIY~UIoV5ENThq;s@7g&C6Z!c0z1u;s%D@<3;<&1S0yiMJW>

eE>*URDQ~w1~_Db^(Dg9+s3SLP^^|o)=ZsS5zio83vCH^nFmC z_k{0F529A7Xkf1pILpoab#L$W2175_F-Lbdb#i5nYA9*K>5DFFK(KuVe5g~?H1Wpx zPReC`AOd(IsUAfQ4QkuYXBA!Y0a6KFE6GSn9d$}QFde`EG%;*4K09_nH0hzJA;=Q5 zg$(D#wco#4g&e8kMvrXKsslV5M`N$|k!x*=eR~JISjR8lKotlOt+o89n{QM3S{jvd z%peqk^zhqlE6J7^a-;cl&1PnyFDTGVt=}4ZQo8by*iCFHkro(?M#7d)LbWmzXf(Mv zlG_(0Ddj(#fEF5ryskEr{Zrt{$mdvUXo&Qg;cEifC{7pkahUKRV8O0{A2<6}T5Dqb z|0C`#gX(J6t<7KoLU4Br1P$))1P#GGxI=J)yK8U{4#C|uxVt+9cXxU&^6t~w)%!c$ z)qT3YU#SX3)?zU;=Xmb>8e`CMZohLA9Z~ZRB!NgMdq48q2sc_kQatu9qHV6y=v&Aa zj-h0>2(=n>RUH8$tJd(==)3EXSO)!_$a;wS$~o}-A?e~<+#VEqwFlQyDW*1HH# z$OAceaQDzU@0hQ@*A*x?P?|(l>lncM~LF$A*AAz1Y z_=~rGH-85`G+7|>1ha6k&^QUr& z^(9=wzbhbW^{kaZJXP8e$7ZZCcSs&&;7o|%gaOi1N02Bke9ExfAy8CRIb7*%felSS z?72m?QH5!Dcwz)r(bbsMrJO2W>=45hH)yG@>I0@KaD|XqFpq?kljBNAP{VC)l^jg+ zX$CnzbduPRo8Bu_6Cgu0ugAZc(n{=c`(@9|0o?t(@T<+95d75v3q^2UzZsA50@I`F z>0|59j>Ta4`-+h6F#kwdhn7u+-;JIgxOCZmykwf_yz`|mn_XFCKp^sU$tun$Y$E}l zJ&lj2SC+!?PjD+9ivNJDCFsC(SCcxus^kSM{i9;t$6+RKc4yL=IUCsjR=0bw;PH>f zcr_8hl5~^N1||uAtIH2VRzF`&^m(1Y^iTc`=Vu;m?x1&KX#eH#*N2 zZks`ZAvI7-mwnCb?6PW^((5RR^3ZDlamAk?Jw1B>0n2M*pWSfBr{BnV^|fR#Hl|EA*Zp$WntDA zpHy*I<-XXS2_VaWF+H%|+bp{qfJO7wS^p04VX7ZS)WEF-Hdf*1nN>B@5w@IUp^uBPB#|)b6U?@j*KLWNOsfNn$#M#!iAzxLGwZZW1 z8=`NZi3_c++u%LvMyTz#urF^p1N%$|LbFC@h0J&JQa4f06-@nK4ZEf?n|x0(P*GA6 z1p;|Vk+@0c<~S~xFY zvbYh^t+GOUQ#II+N7FFM5Aw>n;*Tm088LuX$85e@bCBqx`2mQ`s`rO)MQTkX3Krc> z6wr8Dm{skbw2OQI0QRT?YF!=}!&a0NCYPRvO6zIg)p-D`abJ0#fPQzU8wpERJHNCP{xq!j(ayAYy3OIvItRN-A{!cr-1$_W-s5NMR}Ci}oWtATcZ?lLXvE@+WHg@Wb3H6E>3-;+k#6`f5^sETQn~ z( zWA5aJQBhI49>2OHy4*#b$$_V%!aAd{Rflf?#p(IG3Mj}x8Jja=tB_@_-gG<1OSZ)0GRK4L(v0vpR}uDoL@!fCiEIAv~?N* z_$xU&<#%H6pageiF4G}>B-T&@TTzFF58mwH=wO~*^{y&0 z8~w5-*2d10^ds^f1z7q3`m4enB=R()o#O*UENDP4kGq`h+g2c4w39=!dr8R#MZ~Z! z^RpB8N_jV}SAwhhV}+6?W*=@J8qW&&msmA!W$Ly1W>K8uZt3t4EmN@w5wWnu0=0US zd@G3zHEPt9lo^YQ-0rC{mPic+Biu5@>b2iP2ss}g9)9c20`13Sc1kCJlY;`>{tZ|p z2TX-lqEs+=!h^5B-)GUdN?x6gU(8OU{CAkq9OB!C0c~a1AhhxFqA$El@ zit@`6ev*h1*<^`@#e~lDv_6I*2}i?2u2HWps0AnXiU_m!BXi!oO7!)NK}SckVJ%Ii zmV{ohcGDyC|ChsT0McD@&8%UE{?vDQzjO#V?{dPdK|~3Q(g*b6+nGw5O6@f;>dg0H zmx`q4Np8V-$+Xmx(%x-S_pw8H`~Z=&mSJ|<3jRa*4&F0Zf&2F{P}1~F~}SFQd$zj@_IN_6$e2JNR# z=yp#2cjeQ`c&zPUyvV4KEplQHkx1mNfrz$5fv6Vxs|^}z@qPJQDZKCXHP9}HvS3np zT;k&Bw1;ls|c2BJa z`pZLj53rQUPo$>{ur`JXvU6ch)kjA*$l!CGOdHijQbbk>1w?$>;NM>P`0uQ$Dkh`b z|2?bf&7?0Do;}(ug%y9sN+rH9O6+6s)`~cV#g|7PNnkKib^jN(NGHMyux{0Noye7a z=icdAtX;`lg*sh?P7+`-?-PL7H@o(WG6nm9%)vBz^4q2`tiD5;G+T5nbvb^ZMT_h5 zIului9g(0?`=iEAz?Zici?vf-$P{FE{LX_|fj`E|Et_?D?*!Z}!_2jY=?;ir&%Uzu zI_!3b@3Mr9=I?}Q#A0$TGlG0Xx~aVLgeUDa$M#lCOk**uBw)fM>!$wIbHi$#7{K|K zK!vWtxI1skUlp;NTAeVEVA_iQHNtCLGxIWt4!5}4iF79})tWpxwsa_oSVGZ%c!za@ zhR#mmk5d~9TeIbQ1;B1h_bsC6>VmGZao|2NEK)s)Fy?6xgDZe&_qjN*hBLai$wqJ^ zb-F_r8)i1WVVcMRu?`gA%1~gD#7I?j>_%~Lhu#n1eZ4wxsM(aAdDTKQ zIDKG=2@_4oPG|&Gd`{KD|N3i*};1D$J z6>Xbm6v`|tfYyZbMNAmR&M9yB8 zDUZy+fD_p%Cw*BH4g$<)g+0ESq|e=Ui7zkn%1dp(IhwO&$PpIbi1x8S5>eNFQrprWDdGG<}R6nrWd1WdDmg)`$TDZjD!3+#tP; z-f?jSEUTS`Gs}OD7=NE`$tn~ZXVs#3nyFBb>F_eN|B8-;#jTG;_MR|%W!cRtXSsM2 z=8f@4!Yv9Jxdp9QFnwHPS)7*B+6c4bk?UA8&%I*#<81bO2C0#A72R(V&n+X?(7#_hKqo%^j?vo|~$AB7?@V9+v+3o(Tfbw(}L&vBik-=kPw6he%12Wr9UlJz+ zlKBNHAOb-J%wFPvw3I&lb;#JVv15X*&O_NB#+_p0dZiuCiyOUQQB zX0=)kW!E_jnRJ-B>`s3Wh)GiA2VtUsM+^1&F*{?)+jy#mrr#(%0^a1XBE$)fgM1dU zPY`cy$gKdx6fnu%SsZ`en^}8JY}t7pM~@xSP!KfeSf(|dXsf?bM~VfFB;2VmXqJAq z?*Q_+oo(wSi*|ERL|K4keeK@+s+7?gX1>JO4R$KsSg6VIz1CWrz(Nnt6ZT~OyK@rj z@ko}*wL_*49`4;I_b7)X!CCTY$c~^(1rZF*km-I!f&X6i4tvOd`}W?rXL!l(4_2@m zGVDr4MU@f#UUqa4+anXxu!*J|5ipBQmoA963(y*`dOj%|@a!po{*QV+`~IbSef5X* zJ1}ri1e;yDM(^Np>j|W8!0-R%_~JbG&LjaYvbdTlhyU%eS9t0#*(=R6&zc43&@mZu z!bs$D1ZQjg7$l^sJSMrIV|-DKi)02CM097PP%K1R5UoBuR-^@2vEnvRW%2Sq< z*nmhXmm{~h~+Wccq0?3 zsn1C~YBbxN%V0BKe}v{}LPK4Lyu}4nbLWjMxrYkw$<0zRGBYq*R3(I2`X%LAj)26_ zsm~bRHvMHB;1aJ^MI@g`qd!3}4@BP(VwFPecO?;x6iejfC9eLQw1E69FAv0iB%ht1 zQ$wnK{w!Eu|LuX3Qjf?^KK)w?5UNIo$!B+WdppoordSv!u|q|aj}P2aKPe-{)NpY6er=wo+;Cjy7rBta^=_)C>xTLXKQEs|HiJ@`#X z0hKN!2^%oT?aN;}Us!<=V4mX#(i2*Wa}t6ygnhH{GJFstKf;Ks$_Wq~ozK@-*qz|d zuqo-PR9slRfrE=`kXo%pYsn2kK$YETewud$cyv&N!bg2b+k{1de*zSu=_28fJ|GeF z;w*QkG@jP!XYtRLE!F?cz7A6j>3yGkUx9rK*sku1t#+lV_?=m;mEP!!2kO|BMY18K z6{nPY6A3}<2AON?kq5mH2df9z;jCh!@cPK$XXqnWUuu8Dx7d;PRPvFgo8u*?2BEL} z{}3jptx6=UZKCl1h+*!_c8#&p*98C8JNUBAk^G*Ofmko#l2%VQfU`zE1EPq3F|^8v zB)C|6$MXwGZcvJ~k1IeN>|`M@CMG4)m1n_|nEkJa16yZzf@<@*3c)Y`%V}-Lju@rb zgg)Mi&7a9w{(s}G63pZuN5JP541-A3hd#`)Y88V1wlHCdh=gJ^?RPi{1*aWPlTK_p zx>9Xc8=2FSoJ+!ib|(h!If}F?vabM>71v zs!&Cm@VCSyce+g(<7`W$HdjqzKtdZ7fUS7l-0dz?K_Pkr|Cj(lhz0Snfu*8;k^vJu z{fJdMv~K3@CiI3<`5luPX62NvYb7li3hr{)9`lK-c`!J<$+ z02~xJyDs1XL)&W8DGBc`ALN@FEF7G5XK`?0%ZZ+Jxrn1N!9D&HA|98;j=2`R0-+Tc zU}_u16o#Yp(4lWv^)m5Wl^}Y>2CWs?&13xix--buI)=>sZaAbRJH zR4lFBHjhp3l>k4$ewSSaalX546QC@B17=Pwifyf7nByJa3ca?A3q}4> znGJy;@ZhGvSc;DWQbOYSIJl%QIlad6L|aRFGLKXKpQ&d9XzJN;Q|S2T+y2aKxxHV= z193D{;lBhTpo~TTA`eK7{w>4+_$tZ2$O8n0EHQvQ0E_$iZ{&e8h&*Vx>oeB)mk-`aba=qcSnc@=MiY)4==}c436|B;S!(@9N)?l=o*pWvD663s3_tAcXjw{4 zm8;?}4P0s`5)6mfV-{M4Hr5v3P2Y}I?g@@mE%huO;v|c%R2An;#aC%UYFNjc zC8XYxnkD4Y-hMG?t$u|3`egDtJ;%9T7m%fThinbqtn*H)UCm)YN7;ybthOyBu}-m~ z;@;8K(za0FMMl*guHFt4r;;1f(QZXMGlndVW(!ZqFr)Pi027!dLdo?GwDQC8JqF*^ zn7OOk_OzBq_=`Y?eAsefGyRm|uIf)Cp_CkVBvHtOI!;kkK*w@r_O3HO_o>*djMLS8 zS73&7tku|-ljn5WJ^1h|saxIq`02xeEPI#pe8i2b$>3jhnXBNB_R=^@=%}KV(}Y=7 zO}Zv4i$7s`DvSx;?0-)BF^FT)BU)`y|6U(y$poO?uA?-Mw45ofimnpX?w)Ozk;3<=K zqdn#a-n$Io3?{#SB7WnJF&uLC8{SIK0X#bez%K6F0eJKE6IJ|>cK5Ttw~x2Jg~fbT zE+FDQcO=~;kz+4Uz}<07L!SmX~AYpa(;D2Swb_-T4c&$KG`Co zqNo?&aRKa2CTraro5vH8&eay8t&J=l)sT^49kwec&<7%Vcm5OSh4K__dC09eZ%pQ_ zFPPC!Zvd2GtUVNbton2oAO|#ArJ!2oedj2u3K0F6`sT~%l(!J}aD)RG;rg}~A_4nO z*3)6@`w(D&eRjb}rOSBJdsu9|*g;3pAT7^O|DVzrtoNyolWXI_XQ3Z@7|PY+Vu?AEIGf=KUr7-3&5neJg4zHc*QMERZ`Br@Bf=qta z{r>u~GSmg;es{A>UP8$WX(%;x0|1OKDE6W6STg~-bnJ6DqHWn0hO{e1%;WIfSB(=y z!-ob@$Tv!(03cQ7xwwNY+{b(}{-NP#z8b*8A^USo=M?ge`%*z$3g~w@f?9iqjtvS7HZP+lusR0;EpY(Z#mmC*NNJ5!}q- zD5%l-o_#p3=r-iE@7{Gv<@xjlP;k?PA`oy2J0yo`JCqOt@b7S|JP@+LtkWSRb1y~Z z(shA!|9sxYE+ISeqm7@7_;n{-kokgAHxMwAUBxucWN`31{#gnd;hiK+1UGj$fk#I@ ztK3h&S{$oZcZW^1rRf}~A;SuYGw{Urxy*ZyvCn%%rVLW~Z*CBuO^2!05P2(j{tTVT zgGaQp0d$+${gat<0xX_Bs!`hiXfT5r{S#Bdpl4`1AIxM@b3OCFf*H7s&XK6MGJU05 z3-P=D02_huRXV>`Pl5TgE@FdHtCti}vG-fTuQJ;}uI(!`GV+1j98AshAVos^$}P&% zC`N_OhF?z2Lbug7=XSfc^A;2>0v*U)=Flvs4#k+kD%8E}ag!5_BMl#rl&c0=F%{<6H2=mh zq|kQ$`O;6T!)yKKZV!{FDFIeXWK?*4bE4?uL-7#S$LK9SCnn-^z3sPAsg*LPDPA3L zHnz!zo2#^~gYw%PA=5EH{(?{q+<0oGGZE5U-bfVbbiA51#^{biSeY$(U*8QIy_feh z`o~1UiibH_=;7JK`rZn#)#byaF_)B7!S4Q>>+`3?*^BihN^_o)?L$d@NMa(AvZ(%d z$a5{Yi3#m|cICxyzk_ph-u1c*AihI9k3<&E9Y)f)ftI@)*vtA}z&O{@>gp7;ylJ6; zG@G}+Fa{tYoqy685XIk3NB?41c?>?6wDQoYKz9m~A{Bb`IZz6JD=s$5l{}D^wlGr9 zf?|$as>`{|Fj5N?#_-!!_c0J69jsGdy!d)BHpS6>nW*CC0GYbNsnGFvuX9<+lzOGU z=6gB=jIM+hIbh)qI=9rXsA`DfvJ2D2=Y5Zr{xY9vNuKqS3f3)MldDirsfsO@(SeN1}7 zHGw6@EAr1Go2$jrV#4gdzZ$;fEGU>2v6T?)!0G#e&uQZe*pK_!VbCEL3VL(VG0;8> z`}$ZMy@NJdCh8poIai%eJi7bcEPE@wq&lFFtRaYn;w*+2ZvnHBpt_SJI_4bEwbbi+ z?(cL0g?-)m?b|oGbS;LMsMx;im11NPV_h$IVvo6Q_J_9T_DvsM-0M99Mq;~K3s)x~ zZ72wZ=)Ig&iD8LM6ey9QLO560p$Cbf@>Qe{gp@xp%O1YY{u9Xn{~sb5ApRA}fJ!?^ z`{lEqQN={!hT!YM5YkT%3H1~L4nQb_H!mb8l)-D$k11mx81vjg8=Z%iP@LjEfR~Iz?#;;5XlhmFMcDuc2~(WQuZ@UMm?;2wL+lD1K1i-@ef?h#aG(Ex z?3M%U50P*&4i`j>HQQ zdSsvQxg@AH@C=_Xf7s`}x-=kl;lJ4DY}y5O3>iEI;wr)KNb8 zdX+z|JFU$52?6-|$BO(q^5+2DYwL&^ie-NYj{E{oESlfum@u)IyiEh;W?M@3&zcqs zuXb-2#CkTD>lmz&(F3zj5eJK|XA__9l)SM>)c0D*4q6Zv^RQNy5_9Yc?+a@8aX}TP#P)(s8qEWoo z#{wEwJTw3Jd#w2#Ht(9oaQnfZW`|!hp(_b!y?vBo@A2(jY*<4pI zBhYQH_9IeD&tKLGCurcClbd)?0g=b-@IvB z{(U^mXO(3I492(1OLs*HT&$&W$a2$in<}@dJI(DPw$S>pfPppb!v!^^^3h;!wTo@v zNM6RiZDL}is16W8)*mc1nWuR!VXa+G8#3Dr()*Da!c{1r4vDAD&!tocPhcLe6DpNQfEDDKq ziA*-BR@&&LyWSxJkq|W++6M4QJs?*ggY&f$b#j*5%T=iH0o*6xZPw}!qNJ<5ZA#v! zc=TK^JW!m(jCfTZFIVc*~j&rKSSwM>If8hhWmJsSKZgt6oE2 zw}aYP3kD|q&@!@_$$}O!F1azUm+^$5$S`5uA|5MfX&0SR9ulQ4Ocz4k9nE~HAAs#h zwmVJZr+&a`7@~Fml`BUd?|##JOG*-}C7< z7%kT@CqapDtmhf`*tWA8-xJz-amFTN3l5G+-1_Pwbn(txcx8e8d%~9{AlRbQrxwv+ zd(@QNo~TtlK??joQ7}X#B;I$|$Fd-&QfbRwa1yf#iLF$<-nQkQvn}S`k{hW;Vgq0; z#7u2!LS+W*gw95DE}PrOVnE=5fo@&I1H^;DgAd}g+{cd$JUrh}u8;E;7f}@y6a;&o zzolrUGKDC4)cFU81XH%HXm1s1UL*6|b`n05nmn{a6?nf0h-WY`4XXoIuIB3_F2M@J zVb>r*A;EmdQY^Jr9nu*eO0r9e=8N^W#9xVoMMOkmVq-PKN83e!ok7d%WdQ*3M?X{S zbq3B!sNbO&SphzqGJOCrv!Woot~r}QayIKa!!U##P9%S?F*nfeGE{L5cQ<6LZ8m=P z(hm*|MZ3pkb*Fh^9A`2C+>IzRz@etM2^N(gvvVZ67Xyiiv#&3}shPDUz9F!5%`Y<< za4(K7)VSp#2?hLGJKOD(2&>iR+c2L2#l(SpgKe9zjCx%<4bPagIRtIll;joI==5N! zK(fe3kzoA@{>fY*=0c4L+ZR5oXHgtdPe8g!1X_=X7053U@xWhFg$bLQeu531LMJW?xC<9T0 zf^)&X1iGHwgVyke7{Wn#S*pro^&xgdS^T>0X0FT@t5VpIa~vC4X1cW#SHin^f zb>t1h<4CFfIMDqQ;mNCLi5ElNZ<=J-Q`OG4p44|SVJvGBWB&yDIlCkP$(91i6{?BL z3$YdqEY8Lo;SnjC0?EJ+N@)*kQp;lECupgYf3FH=^KKD#tlxKvycmd43P)o{F9vX1BKqv{4g=M{)_H7>xORV0e|&FNRp_ zvn^U)CO9e&UeR+_>P{R;#namm2{dAPXu{sD_TdhPSadj}qv@|T2ZyB*pJj*du-%s0 zRVgpD8#*O+Y(5&CPL1i3E9Z&E468@^aQI-2fFnX-e+Z;T3&akrGm3jx$hj``n#$X6 zhY`b}*Zfe2!IuHaT7+hrsQXI*)+b%nvf|qh5i=?^_OGLY-(vZa>2|XZ`gn(?q(NL4 zH2>1IG|?r8vaW%j>*=|Jq~I0OlKG@}RqiC13*W(df5B0G1(l*IG*a3J@0^Dj<-OPYN-!d)8nl%CbGlLDn6c@$i+xD_1)CbD>i4jv1$^f0NG2=!9f`<&Efrh|ejA+j1M%(dZwQTxiDO(H)$( zeMqy%9VTt_0aUS&&jOAlPuI#BBGnYO_iL^`a`X$?o;TO)sIC!h%@v~YD?)a0X`X&} z+02%UtO!an4nL^KMigsKe)GH*z@FBBW|HyxK9$RnvYh#My@>=7$$;VMx!zhrjxSn; z2L%`nBqD)S4l)fu_b5>dFGRNcC=j~ee4R#miWKmr7c!*vW(p3(x9#cfE_k}Rfv0ls zJUQ6hw%8ZqVYRGAv6=0c<|xy?#AlC`h(d0TNuNivM*!N>LCMiBVgD!JGa;tGOXM30 zb?usg59OAhXB+nus6)gbdp(wQPXt*VX1$NTF@|tD!B%Ea|7{JCp$*y>&XvvHBKzTW z8H{k~NeHh6v`51ae5iBmZBIna$hmRwLPjpVL1!Lkn(&>{(1Gx%^ z&bp>p#kG%^>%FqU7!V!3S6~uQaR2+B_d><>=f&lvoOh|%b%_Mb-JNrx^<4XjbpyX)=z2QpeAn@C_shBmnwYhktLP6TuIAq9^Q3`H)YiUgOPV(IRmp(1aaw1-(+% zX;1%V+6M%k^{7dhMl#d#2Tf`OEkilR$Wicc!b9zz9_6E4ftY11J`%&{R z50$wWs#xC;X!^yIhA=4I)RZoaT$?>k1;LNlRbLnOWHkTe1uB)welckxN4xLxa!kvD zJ82b8sW}a`?;EvhRYG9Dd|qFXz_{59cFNqL^_!z%`~Mjb>neTX(~M&R#31X+nU0sXMkgn zLY2|lgP-dn$i15}x3JqI8E?GQf~s$_D=161EYu?tH>!o9bMg$4zQSkAbh*DNqFs@o zR!^E7_ulZ6ygX_{^kJd=$>Quttd4v2Z{rI8qk@WpIIVgW#Z0ZvMk~<1-e_YHt4M^G%v^uQ;(YH! zjZ10)x&*xTP}(ZhSF|6%KtU-eY*rbTn!jRuO~*I;?Z=j9IX?H3Gf)kyIzo0&K2D~BR#%v=&j9cTk$)`r1Cddukmp@w{FD42% zI*=9I2nu>nVQt_cSplg-XsDH=7(Fh>v^8Da`n}D+r#E_og=)03R^~-{X((KixuP!@ zBNTc|@i4?A5Y30SbC~rEsL1enrPHPM1ft{KRTeXa{1inqXP9_{Az0?&;aZ3CIc+E< z-=|ge(#pu%yG1eDWq!KJ)aXO;Qgq=wwEwrz6~)4TWdW2QGgrjLd_LMmNy1r5d#Wdk z&YZ8!4mv)}ZK0_fXN21s8Y5sp`Up=+>)kq)v9%#siT8 z_(GV>M8Pc91AtrBLi!OxLuz;TJLJDHCR*5aWk3i-~p1R0yG}gw9rBKac>i?y~E3W$KPU+raa!Dwe|&*2zMKOCX)c=IP3tTge z6rpqk5xk7!aRn|$GNEeXTFcfrtmgD?O$YKe_O>}6G&@wVj)>VD*`}U>nov1wYvg8n z3&z^xoW;cr1r-%3v1hlKt&vpe!j{mi%nlM8M_YM4C67xMp65kvcRA*19&eN=;MQ{) z#Bb=F`-Y8*(VGSXuB*Ew7ih=%>>z{CeA`Wf!>h}D*_ua~sG<;t&GUI~Yjg861TRxE z)p7%)^92l9+jNP#Y~TH7W1#N==t=*cmioXg?XmW)MRZxrc57H3oJQLK`Zm5WqqD0x zqc>11rbCz3-hxUx;e@@*W`PMc{T)mT^ihP8bz6G)dm!_ADCidOhTi(vMFnG8GWh44 zBj|5`kG_^yP=IW{oZgrClu64HRxP1Je7Q4*FJxLg>2!}imwR-mHp-E*pSh5 zBgyS89Sf{^D~_j1Ppg;>fq`$gL>Y7^6CM0%D(>u+z zyPEM_oOJ|SXn*gEBf;6Z_8Z7Q>0I&kvQP-^UDdHzJvCl=g|j#(S&Zm?M2XP`NINWD z!ER(IbCzg#d^H=|Y&7+&AyDT-&irfBMn%-(7@d=cVEGWYWsQHa6BHWcb@Wbi!iTDA!mJ5-_D4 zZOHlqg2H%6dB1mIK~gjF%YElYgd%k^v^wR>&B=`TRXbn+{VE~8SR_0=ZL!cdGZOFW z<{ERdH(gCFopOT)bgqM2``0|uJP`$l0=`oH?p*0qU2~=FonOv-obUQB@@BY(tv|F{Y-w;uh{%wYH4eAhEnOdQrBl1-5m6Mkg4GiGfpt7 zgM1rZCZ=Im`wYXX6X!S~4fGh=NSH_(NZb_GjkYGs4OvvUQ0@MQ!#Brg6qBE86ip4w zw|Z1_plH66fU8Fq%6IwdaKh0Bra28u2)w1#>0O9HvO?lkXV>%dev9u*#^^jN(}hej zszO79mvIv%=c6L*brWppak8-IfZ5=)F_#=AOCCNn*zv|XYc)_R$qG)ngylyXO~vZ3 z)|}`huEbg|;!ouSgQQx_ zSsz<>VbmZ+n9be5C2YnENTeh6xx&As1LafD&En2%AbHqBvlxL&lCt#4~^ z+!yTq(N+5Fzcs9_;=r)((bl^vP&Nn0`Eyxck_q0W!S{Yl@zYwMRFRh=GEeez<=>Ri1UCYfupise?0B;N;ABO3oI z{_)qn9U1yxU(>&1PGGfK%I$XCLCUW%JpP~|-0X6xp!>DW^NEJM_7j2;RCU6ewff?w z;^e5Vjc;%miH$l!(A4Q*G;Ih3Qi@Mf@q8LW=7I^tqyg1m?lC(Uk{6Pl6Z+T#DuUFD z&ErdNVt}2zlO(%OgZ;jmC68%^+Ra+zdkOwP{&&PKkmcaS8|~{b*i0A1$$pvpWrv;M zbm>fL_w2TQw318E4Biavf<^5m1!lJv!c}^2xA+Mm4OZIX_VD!N=<}Lo@kx)WeQpF= z%dxg6%*N06?Xh}x*w-NRE|cWgx_x=kPTH}GuuoZ6wI_Rtbm2vD4F>r@2`WjL;a~hS z-PZ7mh`2AESuig?)}KNiv`XWk%Gbo2hQ7s22I!x;8r@T}0P|({HXiG`bcD;vs$Y}M z>UGu$D6TCnyb>puJIji&0@~VEEHWN);E(J*c`~kQlkQ)`S?}*J0i!HihQf=8oZ;sW zVbyQ=^ocD|8Vv_0vqswG@?aRdM4W83%4L?nYVD~i=JEa;wOxz_jm(7;Oo6xS@|vDD z`^-W!7Mwt!w*w5T<_T0#Q4!voH+%dT9(*iH*VvCH#QBfLxcJHCOYC9>)(Whm_qLN` z#F@ibZ#w~=$%ZdJDmZ1OA962Q9M}ac_dnO@9}2D-61^(V>e4dU_bTgvn`5MGm1n0<^WB*#6|xT?ISTac$?^+pek1sd z3SKSv$^+O1#Q4MGM#@KbUlJ<>$^DVO2SAr(B?O7$pYM3lzLR3$EKgTvZW>jcG@yUx zk0AC+4&(1?CHvgJJ#eK>=&7Tx||`WiTx z;zH`*S6enAqWJxn!X|<=6$aj6*h$})zh536eCj1mkXjDL>rQNS(eJZ+Ihw(90WMhVbQ`RN*F z^6rW{&3>=fdpl#DOax}q@g*_Pam6h@oPbA7hf>Kb!&%GBFI?MLT$<|wu6djc^pn?> zL!RW*aWA$sh%6|xbkCMpR9j7+GGg3wrj2kK4ZFGzWzEh`iOSns9BmdvOQPkp4#HZ5H*bO*+{+d6f$!}<&&%=S5XqxKGS@EJ?KMR zbw>5{OyZ*R{~j&BgOBlfiV}GE?_@?^c2T*b`n5I)W9j^a4f?&C(tTOPQ#l_ifeywbZ!^{ON&o8M**Uv+bab@Wq`AK@~n|UP-^k??>^oSwm#cV!q9&d|L z-d{)0>95Bpjv#(gNEbJF$)gjxWQ1bA6Tz47+Y$FH=3)RG=|{*iJn3e8^3L9B#(P-@49eP%k#StmD)bF8 z41G*Ip|R{(^W#oPHXhm8gUX~qDz6wp2~a#i!|MT*)HbP%y0H_dd}e~9U~cnSRIP%4 zd!9)s6Gx#_M@6Z8`wJ0<&k@7Ftn1-UX#@mJg0OWwD~CB(UWb$YtQHchaO-Hn zswb>ETo~R!O)q`JAF0vT!zAc^0conI;n!eMj3lrUrsc$^5k zbzhiB*c}?^=+m48n9l@@qd_a;?rHC$&+-I*UkyW;y} z%2&O61%nn+CC{hv$vlP^1!+~e;(c^6NtlIZi{AEP&RmP)?m@Wz${v9fFlub%X9 zkF&UJx88c3N!E%~yY+lfI~#j5+)!V@s=u+gq;M)Y0n90 z$0-mMAt0rzOZK^&P;T@WGRe-Y@fK=xN8J=FHbaO>rqi${8p2wp>-yMc4Hk8CtDH3$QS7B?T z_!?myUJx+{nBY-C3y?$( zpKo}p^Yg`HhsLiPi3|M>@O{&cCd%8o(?zsjX;bTD)fy7l5$$}UCum{%Hh{WamrHUV zklC}2$9j?l=lZTFYK{zqrjN&3z`7}aYrssJfX4=L;?q~yi8ACZnB7xkmejz8cmPk= z68~475poK15q`ZLaD=`&3etd@DA_B>7K2$#f|N=7Kw^|fJ-5}spW*rJkQQMycZg(9 zOb{gSM|ki(lS0T~$*225)|rX6z5)i8hxFGowi1azZ8aG1DyE5^femV} zX^#GyqkZK8ym|z|>dvH5};O{Q1HUOQd{I3>&FN zkRZ$?-^(12RDXCTq)pPJN!+oDdCVeg6R3P!ric9u`YFB;5h+_jyyZX#uNHXaJsj=# z*^RRG0y6Zj;&l)(>;&E!HOkkUD>L_xbGBNAaOb9n9z(}dHw)2PCuT=@^V+KBPOKla zuH5poG%+U+EkfNy)%CcBsc{S4cC!fdJcOSS-%E;D-m$pcpMGw20C%!{ne8FaYXyUz zFF!sYjYixy%&X9sRCpU1?du*dv>1~x5|wsqBX7KM*`c*FKfvsUI4 zhga^Q=kp7=7WnqdCuASOZC>*Y)EbPbVt_l=*xf4DBEdw*9b{#!E%#&C=XJvmgcTMQ zr+8`R{JafwH*}4YAbxP2x4Px1PQ5WcsI=W4-SfS^o}GTvlW-mNt#QZhBju8%rJxpp zwE6kt(`E6+Mvi3FMlW`Q&;4>BmlUi?9>wv&?HdNO1tAWr3s-7Y#>kfkbI~cOsj+i6ryjY{c`_6IvD%-25lyeY&CD-q zyxL>&%#KV!)45EM`WATHXOTmQg;=w~BJj1@?7rC2v4tM>IV=-Ya6mXJ#Dl`wjAu&T zNqn4>#T?cqlJv~!_!O8L6>=I(ZfQW5lRe#A|u^xFi14j3LT(gC|pGQ*=g40D#z?w4SaE`Ak%WpsYJ8npj z7BG9sa)U50A5lsCIUJ#{KE-fXY|&rh)0zl8zI*fh;6OvaHH&03#GrrmOBjDb~N;OA|}qfn~pYRcb$5@=edxks^`k8%F)%oHHw=uF}9v?Du6 zG9e*YpUI z-(BvDfoKE0o^UxJZ(|b6ZLviU)98Od2!{dzx>EsJ?5o<54{#PcZazR8^j8P-#ERt>H)wc|6WOZuiILu! zo`CECN2S5KIH>nbLxvzSPi= zhKL<3$x%7KjQrL^UVXCP%0cMDO!}tR9)2S4Beg|6BCBM6O)w&lh$6vV6!s2)$DHAl`ppF^0TIY={YOVpEfj3pYCP)*gG_9VZ%z$K{>Vb>*f=3}1ey&r%8&`Ik%Vkwo`Owe5aXMp^V6(p zC^=2u!mPn7L@YcO9W6UD5&(lS_U=s3L%Ikj@b=aRY^z4T z7nMQ$|AGu;G&`kgh(&menPYcj>+UUAx0CsdFrO88x841+V7xupw6%Av-k@EW94>l> znU90n3jN(gzTCJhgzUPaR?C7;3C?L}avS>vj^aT|VKkke-_Lzzrq!IA+N>^}Tya$O z9MrX=+Z078pMu8EK# zjDZ>q0!zo+R_cwTk)OlbK4xGQvk?z5V85?N)xF6;qX<+%`}lMxGuk2NU+N^lV8HWxwRS7 z&LV6~r>BG7&fPcy*`{n75ktMp=(*7|hJ-uX1z^E%=)(Z!<)M!iLwweO$s{snMA#J+ zg%AJc>4EZ_K^RP6yFZ-dyLYxAzJs?RcH};?P;;d#*tF}qis4yZpydj<; zv0|e%*;YVzrZC?*^FlM zoudH8w7qWxctd%9zV{29Sammz&8%jV4n79tCWpkc#FxOw%=Vm<3!o1PxP3x^CI9$) ztlq&hoHrR6b=8F@Dn?_o^qY_D?;I(NB0TI=qq_V+-+;=Gx|J9q6ZS;kK%0j^6@HHR z^72@^5LALWW#KjOK!3j?De`=Bb~Z^d(R>vJWc2MQP|stK!c%TT35>sjiI(2(tE7pr zAs)DlS^iuC=-MQ_b+v89MkuRv8YTz8^!n8YsRAZAOXiaO!y|(jE(9=$pFgGvL$jIN zlUr=;V%O+&*YPVPWfq3Cn=xv9x(jF`!}n)_are`ES+IL}HY7qMgDP+c6|$|jzAt5i zWR%K~S$BDgks}^S+>9QMSd*KDcIGmoEd>8Sw#z5KN;G{ZmVx%L#;is-#g)B%iIIAvJh&Qbn3-mY%OOxxH)Q_XC$( z^{zVCkxx^QrXy)nGA6b}%8~98OVNbUc4wm6g{ql)5CzZ|fCa>MeeB1nbJmeF@4(yy zeM*A|+wVz9RiHS>*Yx~=JiQtyl9NXL!BtNa`R-<0L0*|>dU zd%4-(8Kn90g#3EDAhRf0v#MeywRwmV3cU-dVKH3U$f?#t1=)~SMnfjUzE>DNakBdU zjX#8j>2V((56t6Z;( zSuMQ1k6ea(=rVc#NK=YIQ=5-$Cg!L-TwdtK(DrDo&bQbJESI0DQ?m0;Of8iYhMgB* z*F^JoppLqT$z10F`vwk_uNsv>OTHJnbG6p$p)jS>!c*^Z`O6JnKY#rEdkG5)?36UD zcJK!ik-Sqk?Vhy*28Ea-3zkp5HyZ^c ziTP53GqljbYM~;i#Qbyq*qFm_r+snlbx$s`GL@;YbAY6*IqAdM=|W56_ymALg;@4s z6=l`+hxXB8HZG3*{4(`>r~9Zx%LK>bkb6S+qyvovN;Ow&`_L<$h=?EbfvzuzNf|G!=Nk3o~0|6ciHY-m)u z;MmSyGDJk}mEIC({BK4C&w?lS^l7bvz>t8xw!KgvAK|?@^7@`JtoMxX4;!@X*wx;}k9J!dKaBE3;~;so&*CARx0-31EKe=41cvV0m+oEM$M#v-Dc*we!5ev;^b^4lbb`E(ALt{m#In6S5^G&L#cKT zKKimWT8;Y2Zrk*Je{SgztW2A=^BnbD4M(gVE`|&>KHi+e?ZF}Sv0gGS5mUnBuduxO_LJ=bssUn*2_Je-nv2kkJCn|I&K5eaLhbmwsQGM9Vy z0t}u29>?3Ynhz2z=FNFvcAHrPt&=J4z=w0;7@m28yvP4#~`%ydvF)HKf$EVDsvpAufqRX`K+9TdPwVzM(Tkh7r z3f8w#C+w%mYOR6^4iIK93lDwyRCLwY7jDZMtZwh`8?xXT)1CVLhyD{M<7EUJq)c=x zs%`YJ&&I-O=>AxU5Je`^;IP`jUSJ%ya4=`6t&Iuq&oyu3atq>7H9` zXL_TLw0nCRQ9NINtS}jPlUXnhqIJldw1u<0&E)-0)`*Ud%wyI__BHXASrcdIT#e=M z%P^7R;i;);AK#`T*IhNzEgJL$MBqlU^Ar}j>;u_50D+m2J3;K`?mQ$%zZ((&fb}l$Nl(J zhyCgH*}$%bv@OK+#NUWL6xQ4}zc;x`sIor|dOn|iwERo4FwdrBa>!^nwpt3L@mdTX zLabg8fzs&$);ZA;d5VC;jVx_)T9F<>CYn{Lp}{G9M3#$K z84h>!V)%ZgZfc+21*x~1gDg`9KQ%e@#hQ3KMl$O%xJ<`dkWbU3Jzv^4ODM{fS7zl)X^foU0LBtA=j?V4sqBA)+CT zm1`;IT%GT7Ql!_tc1-3pX8MBgkzEjsN*>G-K;pC8zfn3rd5KB@r#ij27#azf12UwZ zp}rc+?EVQJSpAv>RtBJSVx22Xl?ShVJE=2=&6dG0mH?LbNND*q{uF>(2(i*~)y?E* z#V6odRx(>v-&_=y9OX=v`fX~!?J7c^nv*KLE`;UMEv4+&bT0l(2U-}fBAhThDNtt; z{sI{X4Gh$oWTX9{#nuh8r36C*M&^2<0V6y7;TTcv7)Hcwa1mv?fC_o5KJDw&CDV4^t94nXTM7!I$4eIsjv zUWu3+&AdSrj)fyL43c0J8Ey_7f<8$*u|Kr=YZxvqR=+O4W z5DenfP19)jFu`T+`1tzT=zk1|i`0L3?)n>CCQ1NLC>494%QgQwcf_z91aRp$mp|vr zQ^N59`1$Pve2s-jJ_x}z{)Z?qwOGy9sE;0`twyN8$@QY(g|jbYeyZ{pun&!?itc_- zh(@9cTLy_*QJh-W1B8AGW=uh^w@ot0~&oatcIesDfuM_bc!u9$Wt~8uS}CU9J^p}@g$D2&#;HW-OqdQXZ&i#(VKUU zfb#DE>IAmQe_KqxjG@xR4> z#HoKSvJeA`+B+zN|H0rZa6Bqu8!*a5N#J*gfM`3ZE1{9iU9pus0lhCgS}9u)aVN{d zm-b2U)X?i=M2~w@2m3DVY2X|&jL>Gka8XM_aYlfm{@Q2G$J5r)z=qkku6gFMQLD4u zTiKN0O-x-j;m+@j=qD3oytLMja?V|Dv8&;T2}>UbyEWJ?oBvk7nLKZ>XQH(NJ4XZ5GPC6|1UGOO`W=6>!;E;Jl{QokGX{R?@& zR2pAr@9bhdHUP!g%mD2yhRts;1twnVm*p2t+)K4mj6eXId$LBvt8o9D^Nij6 z6+`-@DChl0{q09)JD@GAU4)v8E0oa3LNre>Y7H5&aMWvG7LbSup9@m~v=Gq2%RQX> zGIwudD7oB6fal8d*Ny6d^xFj+EbDDrREcQ6FAGf-?<4kP34*!ffQQbKAyI?i9u5$7 zS11CLLrgeJ45?S`f=PuA8Gr_00Cl%AR(W)DD;H3kA~mJGb-zlXx^O{xzO^TY(47|o zF@G3~0avX!INOOf&(&s0+#t@bh0RuE+WuZ0yITlw*36t*p{_ z2Pjl!sc{enrn`LO5$h_i#we3YN;BU>RjmHbFSQye)uRbs0sIV0sfm-ND6n5G)DQdQ zg*>c*lI`;Tsiq9Sue~*H>md&SC3Mcp=aNf&baD{!-JJ(`edTI9&(p(1Z1_+6$v|%L zJfneExqwvFl=huM1^6qhgusFKP=#N3nV>(*U+UQGu6TKnc?YgP(Lt%lx1-z)aWTyV zhV@thx3lc8gG}v|@Hm(0rU(4I@)g}OMVbgwKlcq{N+>SAn9nYC<}o!h(TKihi)v5d z0|;w|Q67M3>|Rd23PtdsQmYVZ^c5OHkJSKV(qEZ2Ro;7*KOIeEo>!S~AjX{H23W9L z=?~{+cKu%eQl+L)qh5al*1%797v2;4ntY*Cz8Fb+Wg7q4Jq?if$Ph8yB&lm4M*Y$}<+J*$>`CL~Y5wPpv!D5o^#M=Gy4C)Ug-z)=WY`M5K8DXm0g;Ab!Jg zc8r9Ep6--F&gUa$i|p(8#>Og1xuwxvwxj0BP@m^@H1m6D_(6-)wmb=pH5#-KE&|WT z*l6xYlA6|ySWm&Mlv6PFt}Kx|OkuY_s5rp?s9b75we|4B{?#M<%%tejlJM!Z36xmg zq6Rxq9eE#b1*5D=5$BZIk`SMNc}Ycd7@D)`Z!UwJX9lKXdRK`irllePADP&lqN=MzXt6kQ7tia}by;V8YGaz3n+q!n_ejqH zxvJt#o7L}>a=yx0exNFsd!{eeCjo=naoYFt(an7cM3RB~3<5O51m zrg#kgh-PI~WpS{-;3)}6&4MncI0WO-nWiFcdl~GnG$WG!JY)qLE`7MlPTZy>H)e<$ zE{Ppp)dBYgh~Jy9a!LBX@ugwnwBv)_50$m^dU8-T36MW@)56D93MI4WkkKtUL><^{ z3-{e7afyUH(_%HxIs~-<=ytN+7F1Q^Kw^>`C#K!gfjaL?wa8h51X~$h%|lhn1wz&~ zIqQHM5QX!}Hn>+A=@BxiKjP)1kJYW_kv|jpd1|*D#BaLn1$d@hucMED#P6@-oofvV zh8x_=)Au?ffmmkSz}8ARzm9MF{PHT3x^7<;On0mkA1E*ignVDCeNg+s5GB@Aad|6t zjbxwR^G9uxigp+j%Nb)1h;E05HLof&)!B~GY~m>jHcM!jzj!bV(Uy@2GU%@PXWeEH zLpn9pMkaMJg1v@ki^XszyS0bw->tWMd?m_Zyiw8ogo&fn6~nI^G5WcAS)(N8#jaK@ zOD}}p;1KuDEGw^YIVgQi>6f4lI2qH$u zv*cRj5h_x*Ap$(Sg6s8lj>1cfClJ50YlYZo?a~l@h@~>>p1Lm*>K7-oiqFT&sW~Gg z@(BT)D29$_xc0E5#z5SKP*!Z;f#6#lP?hVA#t=is5TgjjTkVwIUW2=At*L;I4G&;O&8{%-#%RpwnRV=LfyE zxe-=bByi!mi>&sXQ@d$vLNDap;bLT{vZ6}%>2k9%tu!9=*yuAbEttvjwIJLIftfs^ zS|1dMvhBMKtTl^j&|}z(Iw8AxXRFoqoM%{PX8-QhZqghl;Sli_v2ZQHhH|nnWNKH~ z7uJ5=k1>1j*Oq;0@Lipxqd>ZE``_-i1&Pn;@g-Fjv$$e>Z2OD=bl0<^;#a-CzNTuQ z$@Nwzhxheup5pXnAiQ>rk?*aTc@)%^s^54F%2K_60?Ia3%>UWk*7&YM80FVj0voeJ zIz^=pAjTRSSrqxTjqe&hxu<>vH}0Jwe>j(}f$y{&1 zTix!@q=XR@{+Sv6GO<}n0R%bkvqys5iaRsv@tyvDT?N_7#`lni{9RkOQg!vj{h5+= z^67uV{&=W7SFVK)6Nr?BzV+h^%VGdI&%ci>_LbL7kJ1amggXmps|V%X8f>1-@F|Uc z%HQQLkon8a#{qpUUay{6ix{%tn67=GYkpRe6ri|?#_RV#(*Bv5O#7&&5v&EKzh1Y+ z@F34K>CspT4^_3Xvh~T$!u17>UJYH2Yawk_v76f8GcEh`isb{#4ADhHu{Be+{}J%I z?a!%_D3sJH)UFnezIpX$s0TEMZO-y6mpH}h+Qqm}{5`gfYD#SAjRktzpu@mUauw&? zOJEY<-Wyj_eKtpAbNId6qii1kk7zf1=pUlp;+EpM==D}vzM>2wZ-B;@sUq8XJ{r)->ulD?l}Z^4EOI8)de+}h zecHO-qwej-``h(49_!6)FW@Fh-m_n7dgb~&oyEN6_zqBvCem#@I!N$vSIj53BnGYm zWmQb<0e^QOt)Jg1>dhDeDOx2zAR(R#A={Zl?0CkG@?P7*?gdku*>a1CR)s-!)srVT zoM%437-eFQn9~htOs?47DR%3LisJOS3Z%Ax)&5meg4tJ@yf2*v+wqco8n4N#ORK$B zd;!G#29pKQ)30};tPNBrW4Ru3l-%!!$rb(an?)mamII4^PxFz9yXIS}lT%Nq%?xAo zq&>tTbM19`I16dDoKOq(Z_|9>S`*JYbAO3L~k-ol?9az&UAv@CUW!hM4R=&Aq7IsxG$H1inmd3r_SrxB&b5JXm#8ZD(-RKOjz7jK#Jx4Chg%eea~?g zeJ>VSEx*48;;C~+1s>AOMl)pZZY~PUhEs~VfBhmT*ynK@&+c4~Z%pOUS1>B9s7R7a znvV-bAQUu&J z1^e^vg?`TsfXM&JQfqbHT7ujhQj5P?<4H{rsGdK8nYmiU_Zl>+%pX}O3U;F^Z$76u z+jajnha5OnV(uOheG@_IdEYgxeL1IPa*~;tC~K^j)^mnf^Ep)0z#!`wO(>!gXFHkI zW(%D;b(m%%ED(#5UlL`R;$#1!?vK}$zbUKxyDpTB3%ZMKs-2w@pcouEXVj?Dps-Uq zn#Hw`Rj8(kg(AeQ0$BtH$1op4U_VJ zsAU(TDn@CbCVdPB&B+{=mGP^LjL@qxDH<#nbf7lyR&6-Zxj1Qq7eB}5!U^%28=yok zy9V(4cZ(QPrWpoZtE>z;}g`Fi^)B`0F?A=Mgt!urnn^t5d< zKkzSDXk~sIz=AN4+RdHpM3a45UXui87?DJJ@ao`VOo!&wn^cU+0^Nc0PMkmeJn?PX zsG4k@=h+XdY4P>1IYaZs>soo`QIeC@`9WsX97usRHLL?8Bl)+tw@*RPw)Dp;76o5) z7Z$xVVIcgH!sNGtj_x8L@JWScR|m;qd>{huzmtHGUjSVzIXOARMhicZT0kF&ImqeP zGWcbkga)|(K6Wefkh`G^FdJetdsWTSsF3!5qqqdRSjMze@)(2S@L0SOj#+No1rkr5 zw5zw()nZr1fsiW_uw0UmoO1*dUO4#>1kcTP;cdk1U=@kZeas^Q@P90~`jblu8vTjH z=OFo6p)N!u1nPDq5+F<(HIip`Qmv@65M+FWFb>y_@F57Z7tVsvJn2^R5(s89`CIuM zyO&6GLAOGyE@}Wuq*f+)N3`uDKff}fhuz8%d+?Js1@qnN(qu5g>yY`BMb80TO`-4# z0Fv%><$&D!DiTe%>5FIy;Bx??_=P!QB=cq4IdzqOU&;$7@URA88Kxn!@b*+qPU0O& z7BZRtdb`uj2v6L$F%p{%X!po1gt^^Rew4%kS`3s! zbzx+7F0Oj^5AW#4fgQhTEPsM5gYZ zQZ-@JHP&BkepBu%f;8rc-qfjo1ue8Z3wVYNp$AmRlNH0^L*VPD^yZ)c$f$)B_Kk(G z+u$TG3`?+$9YPp`bd_hAE0I^cJtA4};C()QOcpb7;UFT1QpmLCNU(_Grud-NaFFex zZIoi~WB`jrAFh!fb~8Icm>$~NRQD3YTziM#S4i(Tr@%pFwZ1@7w(NzWjH$J7V?u-M z%B7@rC_n)cHiU%0y9x>7`t8kDra4-df`b^uS0-`*0n5HLCb|<0`Be5{JO=Nq# z`3=yPGRd{)+74{g`*5z#ODIU8847mTu;JOFEl9HV+D0Xq2tU4l)=$n0QB_gVL>ziW z)*}?sZuV{tlde&MKE6&+QCK)QF)mmjE%)_rX+;TtaMY{FoV&t-U)&J)yIY?rKG*P0 zjT(V)hNypsC=41gu(FEk?qZ}iM?+ly_HaF|a_^Iw5)V|+8n{?B9K^bSNMgXbrVE

ck^0Fn2uhmB%0Jgy#!S=GFwx4eEJ>uufR`! z{RvZ$t34qpxRp`2Lb$Cv^5Gq{bN}|8#{3U5b6|n8#4N3iRS<5GtZzSCXV}1$1wE68 z{;=Kv-$fP6AfOQ`9i|K=Yx4JCaN|--W>|y;_z!VQsD_Wd>ivq>Y`d z7RIJS9sRX^lkSH{Kkbj_;{cjeDaXbWDz<{S14fQ)Nogeud2!f!9u5kISPCnh@=XpU zlQ9AnhXaZ0*3k)zqaI@y`EYZtRtO3W*N=ETK|r3X&Xo_8qO3*SLpG4f^V4(e(K2#O zZ*3Ob*B@jT=OJ17Wzla~K0|ij!uX>i>#K5n(yTTcM-#Xe3_~Tz;qyL^>o*}KA|f({ zB1fqAT<$h&3&0q-w;Q5oC`Tkr9%_w5HSGFug->e$Sfekjn`qn$%%-=aIEHA9(Qs@6O-Rg=arRqT3!P%Fi&eGMTJyKEbp$P zi_5j^98y@!`S*<)u_)!nY-R0oJx`3N90$Qq4_=ANrm&Lma=2{_&1}23?wX&R060~- zT#t`Bp}g{Fmm}_n&Dv+pGX~9usFv#;YbiO&?0I{8≫UAWtUqd5Am4?cJeBLn$gA z!REW@<=JVN<@fKkksW8$9Q%4Nft@h*?kN|b{}W24l%|Rwb(Txd-M&Cl!T@CeAwboy ztV9_E#xe}N83(1BXCd+3GSZmLeUDVLqVQADnf-wbiMyAAjuO3Y!(@Qom2#Htoj}C{ zmp)M*;w}6aVgW3nC|f=ssrRMXx=mZ@{`rb+`}C(6w+*aHEkxT`Z8@}>SAsJBH^=Be z)`jHgaaw~7mrKMu2@RLTkKg4cDC51yW|Ll5)wpB}8D?NF4u|CcAq@aw{8MA1FuGjw z$3y)3-V}su-@N^z{K>;A1QC+dBYHJaLVKwIINq|+T4W0*zryYG2kpW*3-&Wm=e0Wc zgkO|j)G>Un*KXY8yy2D&=JBSUAEsRZq8BWzT)f#1Ve5@i!z6Ug>gz~H-^^hn_mc(<^) zF!lTNy}UrtTs#oNrpM=9NSorjb${;%IOu$#dzr$ltN{ATc9uQ7GeDSt%jU%SI{;fj zSeSJFxvI0FpDr$%tB|M@r*472j}+_X$3g^$((3V?vhE@pqwm8Ue}OCPl}! z!M?Uqe3A#WNpPNe$XO0xgVx_`rMK-28%v!X=r|l-Vds;|=v%YvTKR?dZ+Q#tZ$3eT zu~N50dAlAGe6$kY=No_v!pSyOP(V`ZL4u+(=*j3lon&|0p<9C7+B#COcl=Wq{^Q zQkp<5g0%RO75N(QEH&7Qk#5;+LH%Wc+@iz)pUaI{tDa+h@~KqHSd|q{mr@7ann0l~Hd3XSsH~s#8%F!Bm zw|HO4SP_XNF~w3<7`a30rAcO-;~T)#_`b?!WJ!qC6Ua61<#ayh1SNUy#wZnb2Lrx> z62rcY?V!Ecw_u9CVxcy{J+UzFk|?5E6DmV7sUe{d&8yH-abzLmb~ow-US>=Gl_Qa> zJP`0#WY%(b`08Hm5lknF*OScv)I$!0FLow3Gbw_}f1ckfoX66>XR&x#NH6J{av7-* z>g#djQ;)v-aGtkWvWK_PcBU^xk7?c(}g-K+E|Daq;stdH?dU%U&X7U7)Z&BvQ{&5yQXO zH5bU4kf^Wk-9AyRJQvCP6BNb*AD4b|aiN~fxS$0G`=VRB7)yf{$T6G~jb&N^e5g{q z&^UrZmZvx<+Ev|P^3;Dy=f#jO zQ&_bUvZYgXN=8oG=(;PlH9FE?*=?i~o6;31VC5rE5Hd+UB3QbRAv@tI%@`^s4h#B9 z<|!tX#9Cj9K`=n~WnNa+0=TQwTpdwfyJ)kARwPCKw3#>OEh96} zqP5=qB^SwlFX+p&B$v)vk_YNBys0HKU!SYoj~iJ!72h+AI9Qe5zq)UDFeKWP_Rj|& z$WAu93f#+JFHWUGh`4eOxbR->NxFO1E5e!oj`HjDn~wq?^ErxeHcs!BnOVtJ`p7R* zft?OhdoHHQPxxF%pIM0*x~CMOf!cU9qL%P>`j1jAsm;I3Ve4d39$b~qX^G3|UM)3k zmGRfSXGwVF%>e4mAAyNHK#TrS*aG%PiHPvnS2UdqRC7J*(Kl;ZKY zecjLC4w?VvNOpWi*Vv2t65{7BG2U^(|MNz$L0O{!eXin2-{txgC*poxq2WXhw7;0D zbkM?GUvPlfy3GtFA|e6`HVJC{IuW&oFN&gl_Y7MyzrI=Sg?wPvR9U?(Vbh;z`H77S zMAo%~5iWX4Z*5*AbApgoFE+IO>lQyl{5r+CJ&&=;kIyY1?k^72b~Rh%ZQtB&2MQDq z>57X}EH~C^zwaH-6)$vL%Fx5^z~RJ}4hY3$x6gmjyDT4oz#}1y2L#@!68WuU)R9TV zRB1@7pAZT7b!^xJonJfrd<&T`373-R>d?Lb)F6%jtFW)c8}0bvce!~)Cu~b!x(Iq! z?ghKPf9jo7bG$U}s5rZj05iv2i<{fh>D)dI1Y`}Dl5adAO;uu9o2A3{tr^r*YWgE> z9QJvSfOv-n)}*EPIe@$bL@CvaVnjYI$E z36!BmNhyV%e;OrGfooDnT7pOU%k}wq{Qp;{3_OOHlJ=)vcEFnaI^ChA+x>vF&so>J TA| void }) { + const { + dependencies: { + start: { entityManager }, + }, + core: { notifications }, + } = useKibana(); + + const [isLoading, setIsLoading] = useState(false); + const [showModal, setModalVisible] = useState(false); + + const handleEnablement = async () => { + setIsLoading(true); + try { + const response = await entityManager.entityClient.enableManagedEntityDiscovery(); + + if (response.success) { + setIsLoading(false); + onSuccess(); + } else { + throw new Error(response.message); + } + } catch (error) { + setIsLoading(false); + + if (error instanceof EntityManagerUnauthorizedError) { + setModalVisible(true); + return; + } + + const err = error as Error | IHttpFetchError; + notifications.toasts.addDanger({ + title: i18n.translate('xpack.inventory.eemEnablement.errorTitle', { + defaultMessage: 'Error while enabling the new entity model', + }), + text: 'response' in err ? err.body?.message ?? err.response?.statusText : err.message, + }); + } + }; + + return ( + <> + + {i18n.translate('xpack.inventory.noData.card.button', { + defaultMessage: 'Enable', + })} + + setModalVisible(false)} /> + + ); +} diff --git a/x-pack/plugins/observability_solution/inventory/public/components/entity_enablement/unauthorized_modal.tsx b/x-pack/plugins/observability_solution/inventory/public/components/entity_enablement/unauthorized_modal.tsx new file mode 100644 index 00000000000000..e569014dce3e32 --- /dev/null +++ b/x-pack/plugins/observability_solution/inventory/public/components/entity_enablement/unauthorized_modal.tsx @@ -0,0 +1,118 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +/* +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { i18n } from '@kbn/i18n'; +import { + EuiButton, + EuiConfirmModal, + EuiFlexGroup, + EuiFlexItem, + EuiIcon, + EuiImage, + EuiLink, + EuiPanel, + EuiSpacer, + EuiText, + EuiTitle, +} from '@elastic/eui'; +import inventoryLight from '../../assets/entities_intentory_light.png'; + +export function Unauthorized({ + showModal = false, + onClose, +}: { + showModal?: boolean; + onClose: () => void; +}) { + return ( + <> + {showModal && ( + + {i18n.translate('xpack.inventory.unauthorised.button.openSurvey', { + defaultMessage: 'OK', + })} + + } + cancelButtonText={ + + {i18n.translate('xpack.inventory.unauthorized.linkLinkLabel', { + defaultMessage: 'Learn more', + })} + + } + defaultFocusedButton="confirm" + > + + + + + + + +

+ {i18n.translate('xpack.inventory.unauthorised.title', { + defaultMessage: 'Insufficient permissions', + })} +

+ + + + + + + +

+ {i18n.translate('xpack.inventory.unauthorised.body', { + defaultMessage: + "You don't have permissions to turn on the Elastic Entity Model. Please ask your administrator to enable this for you so you can see everything you have in one place.", + })} +

+
+
+ + + + + + )} + + ); +} diff --git a/x-pack/plugins/observability_solution/inventory/public/components/entity_enablement/welcome_modal.tsx b/x-pack/plugins/observability_solution/inventory/public/components/entity_enablement/welcome_modal.tsx new file mode 100644 index 00000000000000..6bded437e5ab64 --- /dev/null +++ b/x-pack/plugins/observability_solution/inventory/public/components/entity_enablement/welcome_modal.tsx @@ -0,0 +1,115 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +/* +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { i18n } from '@kbn/i18n'; +import { + EuiButton, + EuiConfirmModal, + EuiFlexGroup, + EuiFlexItem, + EuiIcon, + EuiImage, + EuiLink, + EuiPanel, + EuiSpacer, + EuiText, + EuiTitle, +} from '@elastic/eui'; +import inventoryLight from '../../assets/entities_intentory_light.png'; + +export function Welcome({ + showModal = false, + onClose, + onConfirm, +}: { + showModal: boolean; + onClose: () => void; + onConfirm: () => void; +}) { + if (!showModal) { + return null; + } + + return ( + + {i18n.translate('xpack.inventory.welcome.button.openSurvey', { + defaultMessage: 'OK', + })} + + } + cancelButtonText={ + + {i18n.translate('xpack.inventory.welcome.linkLabel', { + defaultMessage: 'Learn more', + })} + + } + defaultFocusedButton="confirm" + > + + + + + + + +

+ {i18n.translate('xpack.inventory.welcome.title', { + defaultMessage: 'See everything you have in one place!', + })} +

+
+
+
+
+ + + +

+ {i18n.translate('xpack.inventory.welcome.body', { + defaultMessage: + 'The inventory will show all of your observed entities in one place so you can detect and resolve problems with them faster.', + })} +

+
+
+ + + + +
+ ); +} diff --git a/x-pack/plugins/observability_solution/inventory/public/components/inventory_page_template/index.tsx b/x-pack/plugins/observability_solution/inventory/public/components/inventory_page_template/index.tsx index 4dd8eaf3899ee0..5adf16614dcc9e 100644 --- a/x-pack/plugins/observability_solution/inventory/public/components/inventory_page_template/index.tsx +++ b/x-pack/plugins/observability_solution/inventory/public/components/inventory_page_template/index.tsx @@ -7,6 +7,9 @@ import { i18n } from '@kbn/i18n'; import React from 'react'; import { useKibana } from '../../hooks/use_kibana'; +import { getEntityManagerEnablement } from './no_data_config'; +import { useEntityManager } from '../../hooks/use_entity_manager'; +import { Welcome } from '../entity_enablement/welcome_modal'; export function InventoryPageTemplate({ children }: { children: React.ReactNode }) { const { @@ -16,9 +19,26 @@ export function InventoryPageTemplate({ children }: { children: React.ReactNode } = useKibana(); const { PageTemplate: ObservabilityPageTemplate } = observabilityShared.navigation; + const { + isEntityManagerEnabled, + isEnablementPending, + refresh, + showWelcomedModal, + toggleWelcomedModal, + } = useEntityManager(); + + const handleSuccess = () => { + refresh(); + toggleWelcomedModal(); + }; return ( {children} + ); } diff --git a/x-pack/plugins/observability_solution/inventory/public/components/inventory_page_template/no_data_config.tsx b/x-pack/plugins/observability_solution/inventory/public/components/inventory_page_template/no_data_config.tsx new file mode 100644 index 00000000000000..3b12e11d2ba7cf --- /dev/null +++ b/x-pack/plugins/observability_solution/inventory/public/components/inventory_page_template/no_data_config.tsx @@ -0,0 +1,67 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { EuiLink } from '@elastic/eui'; +import { EnableEntityModelButton } from '../entity_enablement/enable_entity_model_button'; + +export function getEntityManagerEnablement({ + enabled, + loading, + onSuccess, +}: { + enabled: boolean; + loading: boolean; + onSuccess: () => void; +}) { + if (enabled || loading) { + return; + } + + return { + solution: i18n.translate('xpack.inventory.noData.solutionName', { + defaultMessage: 'Observability', + }), + action: { + elasticAgent: { + description: ( + + {i18n.translate('xpack.inventory.noData.card.description.link', { + defaultMessage: 'Elastic Entity Model', + })} + + ), + }} + /> + ), + button: , + onClick: (event: React.MouseEvent) => { + event.preventDefault(); + }, + }, + }, + pageTitle: i18n.translate('xpack.inventory.noData.page.title', { + defaultMessage: 'See everything you have in one place!', + }), + pageDescription: i18n.translate('xpack.inventory.noData.page.description', { + defaultMessage: + 'The inventory will show all of your observed entities in one place so you can detect and resolve problems with them faster!', + }), + }; +} diff --git a/x-pack/plugins/observability_solution/inventory/public/hooks/use_entity_manager.ts b/x-pack/plugins/observability_solution/inventory/public/hooks/use_entity_manager.ts new file mode 100644 index 00000000000000..e57847f33dff2b --- /dev/null +++ b/x-pack/plugins/observability_solution/inventory/public/hooks/use_entity_manager.ts @@ -0,0 +1,39 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useAbortableAsync } from '@kbn/observability-utils/hooks/use_abortable_async'; +import { useState } from 'react'; +import { useKibana } from './use_kibana'; + +export const useEntityManager = () => { + const { + dependencies: { + start: { entityManager }, + }, + } = useKibana(); + + const [showWelcomedModal, setWelcomedModal] = useState(false); + + const { + value = { enabled: false }, + loading, + refresh, + } = useAbortableAsync( + ({ signal }) => { + return entityManager.entityClient.isManagedEntityDiscoveryEnabled(); + }, + [entityManager] + ); + + return { + isEntityManagerEnabled: value.enabled, + isEnablementPending: loading, + refresh, + showWelcomedModal, + toggleWelcomedModal: () => setWelcomedModal(!showWelcomedModal), + }; +}; diff --git a/x-pack/plugins/observability_solution/inventory/public/types.ts b/x-pack/plugins/observability_solution/inventory/public/types.ts index 66c0789650a085..f5d303752403ac 100644 --- a/x-pack/plugins/observability_solution/inventory/public/types.ts +++ b/x-pack/plugins/observability_solution/inventory/public/types.ts @@ -8,6 +8,10 @@ import type { ObservabilitySharedPluginStart, ObservabilitySharedPluginSetup, } from '@kbn/observability-shared-plugin/public'; +import { + EntityManagerPublicPluginSetup, + EntityManagerPublicPluginStart, +} from '@kbn/entityManager-plugin/public'; import type { InferencePublicStart, InferencePublicSetup } from '@kbn/inference-plugin/public'; /* eslint-disable @typescript-eslint/no-empty-interface*/ @@ -17,11 +21,13 @@ export interface ConfigSchema {} export interface InventorySetupDependencies { observabilityShared: ObservabilitySharedPluginSetup; inference: InferencePublicSetup; + entityManager: EntityManagerPublicPluginSetup; } export interface InventoryStartDependencies { observabilityShared: ObservabilitySharedPluginStart; inference: InferencePublicStart; + entityManager: EntityManagerPublicPluginStart; } export interface InventoryPublicSetup {}