From e3c386a8a75e86fa9fa8af1ddb4c6bbd95057d87 Mon Sep 17 00:00:00 2001 From: Pavlo Tkach <3469726+ptkach@users.noreply.github.com> Date: Wed, 22 Jan 2025 10:54:59 -0500 Subject: [PATCH] Add console bulk delete (#2641) * Add bulk actions to console * Add console bulk delete * Add console bulk delete --- console-webapp/src/app/app.module.ts | 8 +- .../src/app/domains/domainList.component.html | 56 +++++- .../src/app/domains/domainList.component.scss | 32 ++++ .../src/app/domains/domainList.component.ts | 181 +++++++++++++++++- .../src/app/domains/domainList.service.ts | 10 +- .../registrarSelector.component.html | 1 + .../userLevelVisiblity.directive.ts | 2 + .../app/shared/services/backend.service.ts | 17 ++ console-webapp/src/theme.scss | 14 +- .../registry/module/RequestComponent.java | 3 + .../frontend/FrontendRequestComponent.java | 3 + .../console/ConsoleBulkDomainAction.java | 7 + .../console/ConsoleBulkDomainActionTest.java | 40 ++-- .../webdriver/ConsoleScreenshotTest.java | 29 +-- .../module/frontend/frontend_routing.txt | 1 + .../google/registry/module/routing.txt | 1 + ...shotTest_billingInfo_registrarSelected.png | Bin 50082 -> 50018 bytes ...est_dums_mainPage_actionsButtonClicked.png | Bin 134765 -> 130004 bytes ...otTest_dums_mainPage_registrarSelected.png | Bin 135918 -> 131692 bytes ...istrarSelectDropdown_selectedRegistrar.png | Bin 42302 -> 42239 bytes ...ettingsPage_registrarSelected_contacts.png | Bin 52631 -> 52558 bytes ...ettingsPage_registrarSelected_security.png | Bin 70381 -> 70437 bytes 22 files changed, 359 insertions(+), 46 deletions(-) diff --git a/console-webapp/src/app/app.module.ts b/console-webapp/src/app/app.module.ts index 8f2fd2755..b0776a2d1 100644 --- a/console-webapp/src/app/app.module.ts +++ b/console-webapp/src/app/app.module.ts @@ -26,7 +26,11 @@ import { BackendService } from './shared/services/backend.service'; import { provideHttpClient } from '@angular/common/http'; import { MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field'; import { BillingInfoComponent } from './billingInfo/billingInfo.component'; -import { DomainListComponent } from './domains/domainList.component'; +import { + DomainListComponent, + ReasonDialogComponent, + ResponseDialogComponent, +} from './domains/domainList.component'; import { RegistryLockComponent } from './domains/registryLock.component'; import { HeaderComponent } from './header/header.component'; import { HomeComponent } from './home/home.component'; @@ -92,6 +96,8 @@ export class SelectedRegistrarModule {} TldsComponent, WhoisComponent, WhoisEditComponent, + ReasonDialogComponent, + ResponseDialogComponent, ], bootstrap: [AppComponent], imports: [ diff --git a/console-webapp/src/app/domains/domainList.component.html b/console-webapp/src/app/domains/domainList.component.html index 7d84b4f62..b6dc416d5 100644 --- a/console-webapp/src/app/domains/domainList.component.html +++ b/console-webapp/src/app/domains/domainList.component.html @@ -65,16 +65,66 @@ /> +
e9QH z%E=Hqk7{JQ4NH2J#%xB+X)dB?ST@44o44+KI{Dq_31A9c?}nuN;r; zdJnjI^Ob~|+*vxRu5>9n_T;|e_5ayirw?eku{>?Y;=l85bD;>edG9LcO%#UusN)Mqwe%R`t_l6|+m?~>WOVApA-;lDf SpRl2wa1dZiy{|+X39M#F*@sATp m8dc;Vh zF5$%yQ&e?5VcJHS?R#m)UxkIY*Z57EpNWxl(7Ua_ZXTgEeu8!MwM@hNYgsl|tV<%% zNW@;In{-xX={edF_vURK>MXe2{9Fs~8IPA9cMPfu4s-Y!K!>0>gLG}4g#_bF7JZsz zqh+DcD>jDXVJUYWUJX|*%>K5nI)qQHA77?q{Wf$l%@K` DeuRUv zd#8LS(+lQTr9I)%|GfW`|K9(HB|8OaJ`$3uK0vi5;$9W2mQHL}S;7}j;3A6!oettF zO`7Yc%%_^Zc0^yYJXPE*9Kxa?>>KpLe2z}m1k)z5Ce_vA_4v-FpY9X1Wk{Y8%Sa)l zDM)PuZyD6rYa3>TeHwk>%W?vIt;a)|bXUdg=on2_Lay}NI}0aw3+MrnQjTHPy~C?G zdOi}`s1#g3m;7S^?k^>CdzlO_)D1^N(H9Fw#Aaqmq%1tGOe~UbiC3uEH19kff7Unt z!41DkVGfv)LHKS07_z_d*RZyKAFAt@_Daim+6QQ6k8MdNqH5;nQ^s@z`?MRg6cYQR z*q{88Ta8>Wuk&lU%Ky`?VwBqfe#8krE#?64C4JMY8sLkEx(D;klJD6ce<>3-%U3Lt zLc*P@_ P9<>vqFyA0 Z>ZvUhZUPJnI?r|WQ0Cq)(djolq`)S>H>OF! zDrJR~)L~xBQPI$0ela3`fl=cZZqsgyejh1e#C5VH|L>^iKwMe z$%5rrrAY?pvGRIA@YM+8;^QmOKu=P2hAy*Ir%{OT6{jtwNA0iP+Brx~uxDd_mF0}o z@g`VhpHHT~cmyGZJT8xO8=64T#pQ uZx%)@H{3 z$Na4#1~xGo8%x!XN|g!580tUtpjo!uI{%brXqI9x(QA#G8|dmf2OP!uy+B0Mm>$Qw zn}eexgxv*HnkDPGIqKuR^k{AR^FvMrRq{Uq!(}duNfV_@g2gpqay5MRt1sPJ6% h3r4fw@}b+|sC5oz^mp zfUsGO0>m>imxeF)p6%#vPVL9sY*kKFj&izDHt*{mycW700&>{o_UVnwzrHOU3 A`T7noKkY?lv*Q`q4LN7eK47c`3VOSc;_lId%7&CSH8KHHD{|Yz%T|6GL z*w=s!>0wdv0IzZu1LSQ51xI;em2vE08F(ERsw#<2WIs6>3|->63%I}yK5FKafg6s$ z*e4X!U=T3P x=aUaVSf4a$|D51+cd6E_yOb?%v;T&7w{WTT z9uNqg0O&}<8ZZ&c(A+$(`xB3>ms<9l-OoIBihTf;HJ$^}cembj1l^t-w8p?DmzfOl zr^$8A=^y>cUEMp~oiQ2zHU+4zo!$q;AznN{b88heDRDuo&(@iTYngz@IqG)Cgn-wT zv( k(u^d(KA3`#mRBhlI zzLvHmPl20utjmA#-dR&Kc>tQwM~b&8;^S??1!NAk#AzeY;r?BgVw}y)G2V5 idWjOAc||J7>DP){y-kY=MZ-$8=YH6*P-$s|&b zgNx68WiYLA*V*36Ex*=srkDC>P-X8GU+}8%Tis@tgS-8GVg9Sln9R)g`wC%V!jPph zeI--V=_)gp?v1epufu4vC7L)X>kQ}6n>}7?S_ld s19U8I zeuk<~5&I0fD1Q5x_2?WcD5#mgo)f~sjDrglLt==vYWw=f$({Doqam2W0%wz>Q9#&! zw7N}~DN8 zU%Z&fAM#D-yN(=ta~=9x;0qr|_DJ{sb8Kum-Dbd3 xg;eIipcH(}z2`DKU^^;Z2tg N~aM*ilbDlI+dzPkd>vs`t0@!MZ3zh2N=Dcw;QJ0{(SwCEl*^2R2Yd^D5;J9 zTJOX`%k{^?v&OUT4igvGT`B|wBvT#+yR+?T6g+m6myF#DUeD@ B??qWdK1$?MlgMwoW>@vau45=e0ToAB#J3RR2s#Uo=_C~)+TSE*Lv+( KcSpjeB` hwWm6w14 zPOQ}}9^gsXE#9%<#aO?yZ1-v5BV8uo0|_m{UOL5i>H2u_&b+mrN)`1mW>kC;ac$5X z`MFLiEZ!>Pa>#{0q{R357O9oN+0rv37YU---!E_v+GEGTQeTvb%J(v1*&H>EOAg;2 zDXLo@EM+`Kq#u%?5Rs^i)|KMO_f6+IX*TLpt QQLgiHoGdqS?$Y6r8`6mImjOhB(tI)M;` z*|obR=a?Q=n?=tG6I)w}I49A=&o3Cz@Hu0(A}z|*CrfnXojHB(T (elof2bJV~WRNU!y!*8u6h~pv$euwjRQDI}KwVFePlt|?oH2$_})%lSQb!inX zuK=K >W$H$kgR}j{*S7br?=&^JT@M+LHRrLHpP?=Wjg6h;6gt_la&UfX+Ru?x z>Mo4zQ&CY8Y@GER?@3?HmaZWsC9Tk!E&rofUdB}&CjY)pf;juzq*(?+h>%D?-4TtU zcwQxyMO;A1ojk@#Fm{M$aru%^!k3(=a!Ck<5WIN%?47_rjo)GBhf{ROE@sKdET3Li zNGvy`n69xLpvrV(;aGGvyy;_zFtB0JZHnEE%((AfKl*MlWj#&kALMnGE1fW7tzBuX zGnDRS@8Hm9S>|Cqd#V)Yr0r)hfT$5JmQ7S@e}DJHIw)H_Vs2lsKmFEhs)P> U8u2^`xA5D_V z>z3RsO@DDR iV z?TGWC)H1Uc>CGz=#ti?RNlDGb^o1a_FHFr^4tjvV|LpGi_1O+bWV0+PkNYWJO@yij z&ez$$Coq;jG;Iy`CActC*yNYo@^sY}g*^`g!w^KHhTVFemRIG^g`Ipwnw9@dZA@I; z0AFv*5-gHAyjNLtbhM6@m~Gk0n>^W+a+@V+d&))H6?Y9 ElxW%f3N;z0v`LW z=p5Z{qS+i$HL!wZhVBo{QSwNQiLp&pg#+An*RYPFuns9ri072~KKDXO`GemccKJH; zNp#q%l73_PEft2ee_DanjqumlHLTUETGeYAb(y%l_M|q#dV~>=`c=K_CD7OWu-Nu` zo$lstwT5Ft;XpG~@lIMZNv7(p!XS_(sKnINZpLh=k^v9{ag%8cLRe^aQQzfXa2zVL zBNJ2x>*Vr^e3HMvfb30GNQh{r#h`;4Vhuvv&5ii3PP`Q~pFw-K*;ryl#Kz@D;~Ya~ zy_!k$#UC0lHxtZDihMocCLQl7pWdOhZyur(0>(Le<_1e#o584uikD4Lvs9a^8g2Zv z_0-N8a6-w Zt7-T9j7z=H7u(~9J|$3l1J=GC*I1852ikn=^WD^6@qNvyn*#Z|E|+~Niz*G zl8N9w7JVi>*{zcRtK%54jR~$FhTY%S^t9$o$WL(Yf1e%FbEJrV{z{po-QhTlLK`sH zLvx5!Q~PX|fm4yTn2`P-%Z3g>g`ZeCG`_;^p!2+<&iwN6Ns#?sSq$PP0tWe1Elk5a z I1$-TU3I z_9!(tZk6l*%4>AFuX8#0n7`38#BaE+z*^z!J*s5D*6M40gSfelGYt5;URTI3SvLc2 zuhF8Xnw@qaEne{5;^WmLu#PKgf-XP6wEfoyWNSKUHa?&DOOeyu2KCN8nc&8q$YtF# zp0&=d-wRuvEhEzL^og~H9wolyTy|GYx&UkafO0$v=ciy!mw5@$MpR8zRr0XU-u-Hv z#veB9SSJ5nDp<~PUpd;Gbjmi8H{D86 VS58tH46%s43{l_xeE p6X^!;oL^}Os?DT94-BFll)*X**%g2wQpUK3{vzgwH{OTB?2rfr zZy&75-mottjWIX-4qY`ZR&zWK^|o8)!uJs{g%BhJi#9F9v=}wYCdV3t2+1lIq<>Hg z{vZ`>m6`}-av_M_YUW6UNS;U@lMqE{*89RoJ#6?L^Z>+5dt^Nah8tu7yNni-*V<@6 zg5mg2NGXUbU_)4lh>n1@Mc{EL z5trF=f!f@JoaF=IP8ZFknwj}5p4*Vp|dPE9KoI%%1eH`gk}8~;SH`% zPg}ee9&*FEz^UuM=C_M8+ {bychP3bvZh5w6In`Ikyt J5ZuDGa_UGdTvj>eQCnpp^doz_o07+=HU)w%f zp@fqi&SjegB6$A1{>) zz#NjP$Q$Zf>jid@OaczTs>7POlHkV1MhrnWg%zkMK{i&5?#Ve|e6o?@BUu9`hF@Ls zMlN(8bWG%F? pOxtLE?_VP$UFLk?$55LW_N=i0F$hDXiNHkN~%AxE8mp!h5< z)PO#m-Ak%D(cvaL{24CT#k(6M)0A=KyZ+aY;U0|jVGgI%?vuW-uFc5fLlT;O`(PK~ zm}<60bGtw?Utu;jRI}8*(F8MVP!6K|)!9@RAmXPqwS&sw%v~6`MmIxBPL#OBcHrmo z z&Bko7i&XaoP9YtF{9*-u9BuFhzzZ zApwEX`OE5VhpFN@L3&uOAST03ch}VJ!9hE(XqblYFY?=0B4HYO-H%tlMyZif$kUV5 zC$6s6i-Xz+L2u9-S{BS)R<=rU)V6@I|LoZ_0A8gQ%0lZH5fn1JpYE(Cm+G~aOC2s3 zRg}Evv->mtkN|J|1ZB 8gr;;5b+oB#1Y~*Mkbd8*x_ms4J>4$q z%>03y_KCb*JTCJa{vo_w;rvoq$o`7=vfRshKG#j@IaJ*@9NqHvDf7?d;*s%r4fYt| z{ktsRcANFz>u1~YFyxoOH8Hz;*6uf}TF;YtVwx!}-|O>{x!xCg$f1ta67qYFJCi_F z`A)Yh>&t6uB?gKW?8psR>tJiji-tb0=|>T@J1 Bx zKO}De(a0?grok9MH>6>bWiEV@ImfeGhmY_7TNzMufnd>3?A|c6Ys}>l{6sSrflJ5z zKXcG#q_sCO90!M+;AUOUWvvp~yY!x-9l#lpPN@ls8x@)~-CzDxsto{30TH2<_1MY2 zW~v#ZiTE|bYtdO{a51fPU0p?5y`OM^JYw$a6yAD&(vIfRTSF*Y>g=dvl#25+zjA~E zvEV-f#aJ4&%5BK{Bic4n)^}6;1C=d>Hk&Ld8MXV$-<2Z>Zu^BHQ>IReNfnDu!&^!9 zkk%0 67F_?l5dXE;Nxs8%+-xDKYB* zyqcIeL#9cSfXUAa+11YGNEz_EiwgakEAB|9=R&_+2 ywn!i59JKY!8<3k?8AjCB*KD;kWhr<*l;Ig*_ zP{(TJRBh=s&q05K!v?(%1(a>eX_2 ySIZie)N1~mZ?_RZWl6<8<}kV zYN*H3CiFY(Ha-33lTshj27l0gG6s!3Z4^56zF%Me1mMI-zc;OFs6dfrd(3N0ySTwr z<$bs9y8Ao%T5mN%5efl)=mmg2BiIbSk>_=xaU8dZ$& #h+BrPxJC^axAXeie38O!j`l9=o{)hcG{RiG;>P+Xm)qTe=} z6avxTNVyiL)8W=r=XTIIz5QPHnKIdW(nkOcYe#E5wF3Q5Sk@^aid 6I_mCm@-5 z0#ky53IlBoVd6jjC{zjE(>XQlK7M5{+uIhCD#8~iTh9}a8aoHHE}F|6*B|U3r&Qae z`#Ey+;+sO ;F(!6hH@DVL-3*jfJ4Q~ ox}# zL3YvAbOb7iy-L1rj*v-k{aEJcBxnNfgJ7YCIi*xY->X-Z5v@hXsQvJf!+T$@{_V#- zM$J%CLdH_{rH=kezeNUvc7qhxrUjN+Ws c{5}y6?CC2Z=-WY$j5%u|O{N me@3;r$A)NU{SnBw$~5RaM%)aQ)|o85`lHooks*otT0lWp;imu~z|mrd ziP6N+1ngw~%0~B}ijnrTZx|6G`{#6~Kf+wGHm25tEN_ln&-?i=zSFJwj&SPC01{4J z{L9W>ltx!^F-@AsAEu(DJ}Ym0m%yBKF=U1(vvpD*FfV--&aN_;EA21f&Drg7 zRjApN1gG{gd#bBh;J86Kls$12@vo;HKDmr&s+MB&2A}mq`{;z$pJT@!RO-y0p;GLk z?KzuwrHfDa?+iw4u7{dgkI&rYS0s^4qqXjOluSHj!si=@P7Oq+GAw5Q^$doHU$jb-^uN5y$B>jQZfY*vH4lXIF$a?)JR6(p=4rfSVJnUX(F z!=hxwJg`;r?_C2LqJ3x|_sy0Sq)u}X!i6d$af}MDC57dY^sm5`BFM(sxg?a%F*$X1 zwJk(KaPD4XLkW^3$~bx|Hk9G5MJL4!`N*XRSs>Y$I?q+Dv*=IJ_TP}v5V~GQpZ5s_ z`wg?wB^0g#kVZ>5Azt$46N$fCT!?bX@7MpvdhiDxN*eV^P||=r<2EwiHNXTR0)n|# zTyPMP#(36$mN^Gqpmm<+v@>x(eF^`+UgBLW6*Ie}dZ;}WCH)$>t&AxH3JS|RKB)o+ zc6wah>+=T*)!Y<=jb-Yz-|g8-{pc~I{n`w{?@LQ2CHlPiUkkTHM=GEQK71yx)24`} zN2kvA{&$)6f=8IQ*RgKIPMcSxGw$QMUxs!Lcf0B{^@@^49c7Hcy~A|c*}pwdE5gDa zI9nf9kk79fqAiwVP-6sI*6_vXUyL9OHjCK?ci=N<4}U*K0QHMRq6^_34GAjq1+rN7 zEm?zoZZOET#Kul z__QjZkMts^UXt!X+elWQ@#T}Z+5R1r3G5eiZp2ZpYqPR#U+Wh^IOgJ^n8MZLr3ACM zD%9253WF2F=wFDb*)?2M>T`_N4 mhSi^{MBHurUSE>n8 4G|Wj{;M{%QafqR zGX~m(Ro4H6p5*>^&{ELdkctnU_&Tqf(Pq{j%u*DkxFxlI=r~JpIfZ+2-!u53T-}lT z39v)QVZ|h7av~L1{rdj|qD-Ox?wNvxra==GRF#0c-_O?N7x<)BWxo7w>z~T(){V|v ze#ONl$K&2w_PuAMj>FQ1AHW DH~Zbm5#{%lG*-i2x3KzYCn9`DY^YU zBV14yVu%7gb3in>5qV=<5CU%U-L#pTCMOep1*UthFhf?2WZblm@zmo6W&!G&a*D)? z{vu>c=SVh`1sbqzew 3F3@Ek!D7Gx*5BG#>97) SVG8U$?-F4_FTwA5Fr2D*G>ka!LTPHr?!|@+N8D z C?TF7@Xn0Qf1_O$=<>^ Gid1&reD7AH56QP`tUdtU9tl-BVYPOe%A!3H$keRUlvI zqO;PE-e=vOscq3G_HjY8C=b2)Zy!QTa~oQ=>m^|w-^Cw+M dDTB(Zt>Tjfc2Ag-m~Zui zG4hkxivdRX{Uqe_OxLJ3?vH1YT_C%dN(m}*2sUI;yTbki#Bdz{088<{(%RIE4B5Zy z_pMpEKk{IGDwG^aasF#9m}$;@$CyNC!ln2_ZEfIu3s&j<6f@KLJH_&?W)i7dwrKs7 z+@(|nEcFdcAD5OJ7J01Nq0bpP2l&diE?qa|a|eC+!5ea4y+^IxhE)FGuuF5yD_Vq2 zgn0WjmE4UhIq| GDm@LgXK0Iz{VzswEyFZ%-vQlz9JXx 8E&fRGL7QaMOzaZOB0aQDU$3Y zUL-3Gp|^nw%HCjg;nqHZYjA<|i5t;9^2)bj=8F6tZI6M{&h5rx%)+y3ikdauwP}L> zq{szl{vy(ZWL}pWxl3?t*s{VWTPPsfaXuIrG5d(6^KoLz Z37gP1trv7E|PNQlY zYD;(2u#W2I#**h2$o*agv$UxPLfW6lqxPif cD^K};9QH*2n;w*Pc?zm?6*a10T9+QS^R?`Oc5d=Q&!_a`s_-cF2q+^$}oM2Wt z@+>7mt*|$hrug9U0H6IadjM?JpeYf>WqD9E{<3bx^0hS95CcvZ&he62Gc0TQAM=i? z+x~0f4Kezu-(iaO(>l7Z>`~|0)OP3=)Pil=x9Uxz)aF-yRb7Is?_-q`+Jscf`os;} zEoD{5wh@{&ti#|-u=K-KgAvYV)ASfKOjm4sTa*2tB%$MTVCn5I-0aC6CVZWuz1VhQ zaqe~b?bMu>%(VoExUyy)wFVYTD%i`KCne}bwx#-#;*)e-Jc&iFlk&}{jSJLXDVfa6 zji2kOEyy~AI%3V#-Kp+nDN4zf^c5nly)G>TrwYh%?#B5FAvD{x4Kj3WQDLhZ^VnfO z+eB^XK4OF n*p4BG$8RV|hq+RZgn-SOtA#AS zSo?&uR()O!8V=_drn+}=8cuS$vAee1MK$Av4g>PvTex+ahk2CRo3eRv(-aN1>!oN5 zi<-$Bo7q;A9bBN3A1Hd$JPt=l;m^O!EmO# 6_KdA>>L2CH1;L z&+=0fVS;&?#1&1-I$O`FRJDu0RbUVACY9Oe%6v>wW>N8rGoZ^ mNJ6 zHV?G?J{G%0Wn7zb &rxmO5U1qa8IGP47zozMa(2e~@MrGxu$!}#_AQqw$h xD0iwOCg#6&;$d^N{}gWNaDhVSPQ(UweJBys}l z9C )B?r9F*GNJimOAXL>a^ z*Xr~PX(k-|Uv@Su1loQ;97J+DV2I*vm4Np5GM!F~Mwo_cDW-#+r}eYrGy}svX{5Xf z2Jk}N)P+Izkr@$B(~53ky8(z%Saf@kkbhxOII~9w egor~^`jfJw?a5goEtiAu9DB^?es;hmOdg?m+yza2-%Y$$t>M3Qw~ z5?6L>pZjyvDByxcequCaVq(uf?O2{Sb~n+GaQWG~^3F43XHf_6iMt)U{x3RV#kZgM z+ep-v;WfzXDs*{^?i7!w+e|qqe|E;b>(fFplUPh zX$^ebf@*M&R-w5Fv{x6mxJN{U@pq>VN0kAsYrYC+vrCtaJ~h2UrQ|29NfN|ZkinWB z8p?Hn4Jr=fD;EOZo!X2)da;4({VMU0nx~IlB5u^jCC15fkNHQ(#!uB`)fkydQJpNf zj6rBhI<|cx#=~w@*mrFA(0^}%C@o*|@pdabd0xjm_fGZnZB96E!>K{Xp2%&KVDU8^ zf*UuFT1^xzs}QOj;nh{>wzmJiOr7;0g37&9bT!AgCA2JU-8(rs*REf^jgo=D0Rz8Y zJ71VytiSOT^Htvul<0Dv)da)Ssg={1^KK9zF|da y?BKRqB&KwYG) zzBLfU))G88nTVuuW6?dpElP9yT>ox0b%uaYOK>L?8-!k63sS tt^NP>($srNL5j7)jDVwPij+5t(oo~4fU!;{!r(W` nholRZ`>QuPg~LR zo4-iokhV#Q`=}E4MdgYZX<;$G=WlyR@Y?rp6wG5DRq>i)<}2D0)5U$ICNaQW `gE1 z_{A=bc4Y>+Hea0WV*rXe0d9Af$9FrVx06!Fuhoo$x49&1eAnL&o?xIEsasoV+)RT` zf+j~JJx)x*O3gdRiOK7@Up~>%F{xEr`*DGn#lIQJljUT3Fu|33A-UaO>o$vkG=myx zw?Yx>< REN zsGQLW&anyZ*$D*F ?(I#a+y2cQho1l_)dK%LjIVlVLw!;_%Cd$&T7Y-?1rHBv=qK{Qw%Svy%6glOOn~! z5a9S^U*lym56>cQrN@8q^KNlQt#Ru{M^;Ej_9veVQL{{zmu%J(8GXO+Jev|i@C0gO zLKHG9F2e<9j>C?V_6`s!hrx*TrVLuLF4~GlmAC@zhQU_Y#{{*C^si|No`|d}tT=aL zC2zxyfKX1O^ x?hTQX@t+tSy0$e !g&spTj;ht zm+MW!7Kg^igia=fc#N>&$Arc-EKbYy)I+K7{vpCYE&&Fzv4OSE=jeGdnRZ6bNGWrH z`P5DG3DmG97=+^G7J3MzRCF=_J^1oGB|FCDPQ^a2a($mgti}&wQ|IS=N{fo_)gQFx z;!$XQ&XoNq0PQ>ZyB)@TX?Z23X7?LMBN{%Dz!R7eA(A~ZD5&sv )Zp0wF#eIhPp^f8;IaPc%ZoL3+(Ao>mIu55GiOyDod$=mk@;y zs{+(M&QBu}q8(&N(k65M;uM=GaCa;j>}_9bn%9?X!sX^wbp% ^4!1WpRl^Fvxl a;_Vho~Xgxu5>ECyL{#$frPY+kj)|V9uR|t z2_!{?l*jej^V6|1?h04?9il6TBnNMUR_B*;Hj3*HU1ly@V=^Wi?}_;CQ%`U7ayNkZ z>TS$vC{j!%J#)0fL{zFX72i7Xv7>@^7r>Mr{!9tvXfu5(v;iW(Gu`K&96s*l%9F~U|kJr%ctu;|CXof;n&4dTXmy{~Pb !N6?*#43C-(K-67%`4GqqQV}N6Wd(ec3LqIW)B9snr z@^H{*6;bCtK~IP^X6Ea-Kf~qI*M#qBT}qFw+pC{_fp2-;zgQN&QkLg1B4mNeM8$78 z5OqbfHJhQ`y|6-W*~^>wS*}iEkdY>HZ6gViB;uSKgiG=Wz-O`nzRcqMXPD$1ZQb(o z=O<19*uBKOpAA{Av*mI6^-_})rO+{O8|^R6LBCk^QnZcl#cB@>)Nf8!*&uO>XTVOF zD^AiEZAd%~W!>R>LaT)&8+F`RGG|`k*U)5!Opn&*xtBCsDT(2{-qTi`<8+}f)W8^^ z4dK^lzR_^+G=3W71Xp!Rt0W^$Z}9XH9jXdfrOd<&o-xHHY%fo`9m&U=wEDBJN!fRC z6jNihKs1jbln(G{)LiAbYq*(|r?P)=@QI>&GDcC|=S!1Oqm#7kV<3)eVZVQyn;OHh zvcNU`JR1zd{Yk_%5c>ODI 3fqJ+ff;+ax&~)Dt_wv^O zq7Hk4GjwnLqFxAZGi}Z#;w4iBXy(U|%hr3Xpf(EEHyLb28}0A=0iNys@7ozO$*o=I ziu=1}cs(~GM?lBy48`?mTfuDPW1{bws7`tN_5Hy%4a%yuvMX!7*Ya)$AbH~RdCo6* zbzdKNiPTW$_8JKk;d9!W0`7$IpeqCWcXvVwVG6@6+G_~D>sGEB5CD@&y;#3(M4R4| z*nx-ok=1YP;I3M7YePc%<+GftRFDu-$SfooSIZv53dwZmS@<^7aCJ t&frYCeZo1?R&DMFd)R()j0r_YC#i2O? z8oKM fJk*Vzl8+I z+(7w6eq!Z8@}UK6+|k)F5(*-Vc^Dv{aanDL{`QTG^&gMxQv<^%t&9;#@T0>$kqJ9v zCO>|8=tkHh4yN-@ };vg+I znoi&J0)K)_o##oi>`!kC^L^}D 4iB68-*!5(}rM@yin$z2`3kRBCXP&{nkNK}jq1x3-#KnX!u 2p_rrh&FR~n2uAwv(N7@U8;Ml z>t@92MoGjTwaX5MG{{1H>TDqf0bf5Yw2DV8)=<#W#YB^|cacsrWCkJQ4)Pg|1!nNy z{5G5$Gc?@zpj>fWn=j+w^7>|C-VJD=tTkBXoIQd1{S<_0E dH4Vp7Jg5+dM*OLSU(TKl*T6@q~m02}uO_tr^BYSs1{0GVY9<{0Q;iD`%Jny&%g8)xbUB 7NwnI<(V28MNFe(!fhg5`?iJdx)nK5D)><;qge_yM}baJeNNyhtmbX_kE zSVYuxv}CnC^5B?=K4#6Q>z+4btVDN*X-(NUj4@IYu)Y70iKk}6#`;NED{G*ymn5jS zr(3_aOSFqaSx~RpF%7?1dyuxkxYBKfLBnjuSuPO2YpO3|?rtVuuSmTmxG|*47<{}! zj5h8vNCZLJL?4Xi%939de9L+W&L|vD8r+eqoHi@>o}nJc5Nv9@mKmR(c$4okn$lNC zR8(f6F 39S#3nXo;viqkJhLRes9-Hm& zce%=D8z1B{c!5S=LK7tyu7J&bmasTJk9{i7o6%&Do4l%=NsZB?EJ_J@7#Q#C2NSI~ z!c}~2Unk|rttLG8vUD6IYxjfif=(JDP)!4_t7Z 4bvX})1T-(Mc2;h^U;yh@!3J8E zm_Ew$e6J0NexGfz{PsIHagZ*? S*gLT6-gN|!{uu0 z)OZQTv%#pcVM+!(9j*D!fInTbliKMQ*t}517`<0#j9-GgnfRiUZ^yos@@0g-N(SEr zOEHDV8lD)-;M10hsK+F5rsC>V9+F}58Wi;=WXb&76Um&YdI!Cbm? *D;uTJYQ6JH{|w;9N+{nOdF zt+|7h @|j_jt#{tuCg Tegu+@i`(m+PhnY)F+oVZ1dXS|#HacT+BR=V zR-}5{!N{{uY>klm_%X9x;ktRwkt*%kzV4l{CBMK|J{*J4Ubej!8&?nb%C(T}*%j}= zx$^OVcPpJ1R~jDQ&u?ah@sf>>rM@;rQ`uN_M@3xW)+~(J)P2`;it0(0zS6VaLUY3_ z5mV%+inXCW3-eP|pVENVSwc45d1-2~(tl_9X8vk(H2G{~qVH=l(pNVUPID8%3`1k# z1h+Z~2L1o8Au70rq&(*Y*nq?quuIDe^NAPq_H6k>IusQ&a9?7R6s7Eh>Dhj;caI;L z#_qCv7NV)kt~+KDvYEt2X5XxDA`G9G(pK^9U})>l>!iWJmkH@(dvzAidRW(_H!+|C zU7XF>b*7d+vquXL%obi=L_%oL_8MreNLm8>UUXg~#QMC#ij=#|Rpc-XrGQCXzX~y& zJ%^Z4Sg*Bej}hbl{8{4Xyp3!MlCBX+V{CD7D9_<%O4^@2wzW*jKvwQh`FfAb)e_Ws z5d(|DUEPC!+1nUUzVV7+u0MdI#*Z8z=G3L{YO8aH+rGvpe6}2e2q3rZwKY}Co_HjV zSe9#tGtLeUB<^IPNU&h_Y-yD%o0o5m{R-C@xyeZ?C*v5=6vWxD9i0D0(5O)PCRqbT zr*iaCVqg_z=MbeN&^XyNV$djE28_C+Xo-a+GA^;IZ~qMSrmqQKq2%lA{}Y*38UDNO ze{N0~29oL1EkPhMK?T~; +9ErOb~0`Q)b>=-qs_9CZkW8BNa zXU4ZGIv@M-V}V9AvrMI&+j{s(SpL4{=W-E!)IrAP%9Q(d>}Rzwnw(E&$@`&9$>Eb2 z4KvYZR&58AH J5KG4%PTKPPdfbOpP^p5ty5GoUm2iP3iaIo`$!Py>wjbF zn$KB6gmrN732And_efcpOUml{=h=aZhC*N8t;n`!l|o(f;!~q{@Xg36C0p%lrz8b# z=eOL_`4pNIPW~n-B_iw)UsM@GW5KCGcWm~)`Sy)uJAC3fJN!u@{C?VSfK^HlGU`c7 z5Vr DCrjDzlVQWmJw7TObnXDX{yh$At;Dy{S-?x$jCxF7_X)nR! zm0;ZKJdo0AMt+-@bc4s@u(C&x?BZ;(xKMbxTjo4R(5!7muaq3JcDmrYZh^pegVKgD zxZ-0J{>C+{w?_+0$p>R#Uib8Fu&Ley!f_pmgl1VSfbuauebyRZi4zFU$4OUAe_zs$=nU_&D3-4Q(Xt jh@Go$Do{;eu3` qe zpZNTn>iRpy`=E0&nOQPU3giN`jIV(d%4b 2F)kkoHn?WwxDF j>lb&y(W&^_}o_XX%LjOJA$ #K4P@qfGh zlL)auTWA|=aHDW^h_Db4_ U`T%DDS=}}ncrRfpt^(! zeO6@)hY1~rNhxz4Efw!E+9LAiSHJ$_jajVW8jOscyu`iiok8D{yZ_VPmB&N5_WkK7 zdRpjI62f^-r`5hSmKc(pnxaxkWJ!#|Sh9~XN(iBpFxITezRNHZiY&vF-C*o9mYKl} zgW2Aj&N )$}CQF-P+HZ&hlwXn*wry z{P(}`4R`6d?)ga64;%C(ye?ks(@&}q*0Mc N6D`P>-&Cl&S2+S{DZK_5mWtR1$+4X-^1f~;J7 zowIVU&%E_Fx=Q}d2 qd7Cn+eP|FL;JGD|(c zwk=t#v0rh#r(S(0o4lo4pT?0NYf(^ldow0-meCq}}n*gAT2M2GKdB}vHP>H$&JD0Ss*r$~F`sV3&0JZc@cUfcRp=XVD zHKU1@34Dbx4zIVAHqpnA!@q$vF0q-h-gj Mo(jcMMc5w8R$XJ2=Cn#6%%{^z)e+{r-KV55fp`iC0*#y0#49G&M3iJDB7*9jpUa zx>QUxYQza;vO02tC-`PRd;G=%{{8?-xg*fTyAp?`yE`P%VridC2p?(&vU+-6E))zK zt%rQwWq9Iic1B}tnNi3I&GnF3bHDIB@z dou@#Jth7$mo^?unGm5GD7gKlHmZ|o;nk;aq`b1 zg>{c>ExlZ5OuN;eT3E-HsSV>Rt!erm5sKq{Ql<$Yr_?G*P9b5uv&XRGJ%G%Zsvpuk zpP>GI>PGLizw3ej7>(ux{LCIN`v+G-OE@ljf30egKTs6pAY@%4>el)ib|r?N*TLwT zQ0;0{|`z-sI zZaa-)nvPO3YL-b6Q2s0H0Av4ElaP+*QD{-ZunFyI!mjUl^bUEg%hC^WAo0iSu^z9o zrjDBGnTbr47>{2cU3m2V>{{Aick+=9{vt~f&_H(a;O1E%*Xz$qcEP{?y&Z!J21WP7 zJFYd^SlA?e{g&-4)=}}f>xD7T+;h%+=}|21g)#TC=dyUw-Xg2;4!KK3s(XSte^?Y8 zPj#|zh3_;PZ (&;}6){uIf06djrDNdR1_e73}aO9d*y9U7q+WQ~qMd ziAM;rrXBsD2;&;1{Mb#mAESi#7>UpK5%j!_@88##_|+B&%m3xKf f52_3cJ1(d?{Zl2M_PSBjjCm!-K(jaq%zf!2pt}VGJrZF z!$o|5O^%4+WK$MZ4ZV^aiIrWI^TjT06crPPYifQK08@d*q#iWBoLmH~iAKw l+^|ryLNAjgsy?$;#fC3bC zr{!X1VUHsKK~#Cq^nH)|VjmS^J5{Gsyc;#oxnQTvDF zuP3rYE;d(Ap&fzPaBML_gk`oHpiM4t%vmAC!AJ?9EN}pRsTI BgyNcY$*PGGmf5qc|T_C{l5(i|f?a6Or62CLA%$a&0HbaXd&E9#>%m`yM{G ztH0{FM#5|tIZ?jDnG&hf0VvPRpLK_SSlli7-I?^S2NVC4lNY_b2ioSbyyu{)3ebU# zOdh-_6l!=X*FN$O6_2VG?!Lxn1A~KQ$Xx0k3Xl~ScS-ql zeh*FjeV3G{WfNdxU4*W| vVzkX8_{-UFZgoS$B$PZrB<5BF1$!VOA%3dG;|>Y{1~^7fW8nb&_RLC ze{-0D #c5mNhfW``iAsw z$qKEUP=^OD8M3m4>YgV|4J?u I#0N$e73GyMw( lb*rnx5E}jkz9;FjQVN3(}%@(Y(WyTVeZbU?6h-u-E4jy zWFE2bW}c=E$4iAVJ2;gzrz9U`MNF36l)-KbMRX-C6h0z85->0pyQ+W80OoEvnw*+s z *gbwuU~> Dsv3`xKCGygs^7q zr_a{HyWW>4Nh-cGrr-6oWmqjVC 1 v!znv&(ZDSq(;t3A *2})_vax&zEJ|J!0o8 zJc1LV6x}!L7fM!Jd-gIPtg6Rixmw~T)@eq3@&xo$G{8b*QUp^WAxcOgF)a-K49;8M z&<+k>8B-J<**`LrE+hhnS5MZ>*cY-SWgLb3@WHxT67rvF>;{=LpnA@7pSVP!fZ7lY z47O4;@rKI}1(QBaevO^g#y)&J=}NzQzS3@~Vum@qmO3Miv}fF*yr<7{zvD)#dQn9H zoVL47(7Ut0*jU!*?eMor|K1$Ml{{B)pW7%e8@Lt^E!KU|YR^`{J}my)9f)lGicm-$ zs>}2HB2F-Xc`k5vM@OR7g($1D9fcOTLMASwOa6-up-o-$j=(Sr^2^soFf|dlbl-A& zQZ7smJ*4bOV~pwQE+B@$cjz2M(JTcEkGTy-+HhlV6<#*@Zzy}f@p1i^K*g *QzJF!aTNgJsjlrbV2TYq_D<>L?eMXU2$keoZ{*22|*R_-oG49aflMJDl zr*NGpC15-4qsM%?3p0K0$5QaB;Cn*u9gfl8T$h3UC3PdYt_8dXqdpz)$0QD;y1>7$ zz6; )a&!_tS~+0=dG|d)3IXlxMfO)Y;*t;DIIu}SrT@HcT<2ljZr7hh!>J~ z23C88HuubkOSHq(a;F+B5=g_K5ihP)KAeA@ZjeS?9OhH4J&EtspHvrE*SU1pzTP@X zFzR8atA|sfPoFW(O F*KWA1`p=11)Cr+!qg*U9hqWEEHq_Lh4X zl4B9Z)*37IO=)*)D2+3Rb_=E59ncb}^)qG?E)(3ZH!p@7uR6*MEBiidF~qBGaa&Ah zVQujv>EU5jhE6?;M?)JKTQC+M)yE|Fu_^Hg8NRDi8izg)ODnhKRYVnc4)?5op6O*A z+icgVONpX_kbHrdDN3@=;+Wk!=10+C(B#L!AljTc*0Uk@6iklCOH-^{_#7feD`lvr z6N8rtX-!o#4Tub4rE4UdbZ7({=?61{E!<7>u|T#zoevCX``jp5?IM13J!TIGR00)m z+OdIU%SdBYOcJ$_G=?JFvbyxf U&srGSlPR4b@H!)b6i4l2fVUW$a6GpBCv zrE9s2_qNCZ@bjfw0vki9s<}>)Le$*6KqP&jY<1ctsV|xnwi5&z*cH_a(m{ MxA`h7pM$f6tL?L{BDosYmE?)Z2WKZX-zG4G0j`xQPtm@S)zzVlMJ_v4dIL;hX| zQvKL>#*vXH%^4QFhpj6ua+tYvdoyY^vkj?LJd79=m7&y4fa9${nUO{5^t!Ua<$QEu zjeoIdKPNJ-KhS2{3sGEW`=Gz$@_n#$&l9%0lk{5oiU}%{A14d;fz-P&nqTw(1jGx2 zRTfVNN-^Tf3S9`^*JgHc9dl@kk$diOog+tswJsKhn&Ct$iqFFi3OgT72 f9L|O+{zR{ atL3W zL4#ngD#SxZ+o^M`^BBLCy%zn7Ls}(|*?0I$!14o6yle&Oz*g(V+dVQ@Yqi!nc~lum zKs*5^aR1Vhnx+cD6_%(P^NWpSkP9pQ!;8#ACM4e`e9JM$dz= NO_pBY^R>$S-B*Ggd((#B%R1Y%s~gDA3}z#YXi4hMq-)e?n4HfScu+ zUk;hfSwn=YrCp^4v|Lv?w`I*-z hYFZPxezPl6{UQ~aCO{1?XW `sIP${6jr z*aG2&V`w!PZsH9Ebu@dpt_ww*G7#3}5Da28R^IYCL+yKq=xOd7{n+K{ZpdmWDMiWl z!DMlQ*JL4kp&T{oHQB{wK^(vEWvMD#2?E=zf|T-;CaoiWAIPaG#I=r$T~Msws?Xo6 z1mly{-6wXON?{^M^}ZVu{YOM_YHc9oVnbMpTVo5Yc9J&O)uG8Qc(OVO;|tM{ZcJ!# zeO