From a6ab8a8da42955a0bdd9d0d3a56c0752f8b82601 Mon Sep 17 00:00:00 2001 From: pablodanswer Date: Fri, 13 Dec 2024 12:05:10 -0800 Subject: [PATCH 1/4] organize fe tests --- .github/workflows/pr-chromatic-tests.yml | 1 + .../docker_compose/docker-compose.dev.yml | 2 + web/playwright.config.ts | 2 +- web/screenshots/assistants_mine_page.png | Bin 0 -> 59182 bytes web/screenshots/chat_page.png | Bin 0 -> 50589 bytes web/screenshots/chat_page_after_create.png | Bin 0 -> 28555 bytes web/screenshots/create_assistant_page.png | Bin 0 -> 52528 bytes .../app/admin/assistants/AssistantEditor.tsx | 6 +- web/src/components/admin/connectors/Field.tsx | 1 + web/tests/e2e/admin_add_connector.spec.ts | 14 --- web/tests/e2e/admin_api_key.spec.ts | 19 --- web/tests/e2e/admin_assistants.spec.ts | 19 --- web/tests/e2e/admin_bots.spec.ts | 16 --- web/tests/e2e/admin_chat.spec.ts | 33 +++++ ..._configuration_document_processing.spec.ts | 18 --- web/tests/e2e/admin_configuration_llm.spec.ts | 16 --- .../e2e/admin_configuration_search.spec.ts | 16 --- .../e2e/admin_documents_explorer.spec.ts | 16 --- .../e2e/admin_documents_feedback.spec.ts | 19 --- web/tests/e2e/admin_documents_sets.spec.ts | 16 --- web/tests/e2e/admin_groups.spec.ts | 16 --- web/tests/e2e/admin_indexing_status.spec.ts | 16 --- web/tests/e2e/admin_pages.spec.ts | 52 ++++++++ ...admin_performance_custom_analytics.spec.ts | 16 --- .../admin_performance_query_history.spec.ts | 22 ---- web/tests/e2e/admin_performance_usage.spec.ts | 20 --- web/tests/e2e/admin_settings.spec.ts | 19 --- web/tests/e2e/admin_standard_answer.spec.ts | 16 --- web/tests/e2e/admin_token_rate_limits.spec.ts | 22 ---- web/tests/e2e/admin_tools.spec.ts | 16 --- web/tests/e2e/admin_users.spec.ts | 13 -- web/tests/e2e/admin_whitelabeling.spec.ts | 18 --- web/tests/e2e/chat.spec.ts | 27 ---- web/tests/e2e/chromaticSnpashots.json | 116 ++++++++++++++++++ web/tests/e2e/constants.js | 1 - 35 files changed, 209 insertions(+), 395 deletions(-) create mode 100644 web/screenshots/assistants_mine_page.png create mode 100644 web/screenshots/chat_page.png create mode 100644 web/screenshots/chat_page_after_create.png create mode 100644 web/screenshots/create_assistant_page.png delete mode 100644 web/tests/e2e/admin_add_connector.spec.ts delete mode 100644 web/tests/e2e/admin_api_key.spec.ts delete mode 100644 web/tests/e2e/admin_assistants.spec.ts delete mode 100644 web/tests/e2e/admin_bots.spec.ts create mode 100644 web/tests/e2e/admin_chat.spec.ts delete mode 100644 web/tests/e2e/admin_configuration_document_processing.spec.ts delete mode 100644 web/tests/e2e/admin_configuration_llm.spec.ts delete mode 100644 web/tests/e2e/admin_configuration_search.spec.ts delete mode 100644 web/tests/e2e/admin_documents_explorer.spec.ts delete mode 100644 web/tests/e2e/admin_documents_feedback.spec.ts delete mode 100644 web/tests/e2e/admin_documents_sets.spec.ts delete mode 100644 web/tests/e2e/admin_groups.spec.ts delete mode 100644 web/tests/e2e/admin_indexing_status.spec.ts create mode 100644 web/tests/e2e/admin_pages.spec.ts delete mode 100644 web/tests/e2e/admin_performance_custom_analytics.spec.ts delete mode 100644 web/tests/e2e/admin_performance_query_history.spec.ts delete mode 100644 web/tests/e2e/admin_performance_usage.spec.ts delete mode 100644 web/tests/e2e/admin_settings.spec.ts delete mode 100644 web/tests/e2e/admin_standard_answer.spec.ts delete mode 100644 web/tests/e2e/admin_token_rate_limits.spec.ts delete mode 100644 web/tests/e2e/admin_tools.spec.ts delete mode 100644 web/tests/e2e/admin_users.spec.ts delete mode 100644 web/tests/e2e/admin_whitelabeling.spec.ts delete mode 100644 web/tests/e2e/chat.spec.ts create mode 100644 web/tests/e2e/chromaticSnpashots.json diff --git a/.github/workflows/pr-chromatic-tests.yml b/.github/workflows/pr-chromatic-tests.yml index f7a2e81eb93..334d14a4865 100644 --- a/.github/workflows/pr-chromatic-tests.yml +++ b/.github/workflows/pr-chromatic-tests.yml @@ -111,6 +111,7 @@ jobs: cd deployment/docker_compose ENABLE_PAID_ENTERPRISE_EDITION_FEATURES=true \ AUTH_TYPE=basic \ + GEN_AI_API_KEY=${{ secrets.OPENAI_API_KEY }} \ REQUIRE_EMAIL_VERIFICATION=false \ DISABLE_TELEMETRY=true \ IMAGE_TAG=test \ diff --git a/deployment/docker_compose/docker-compose.dev.yml b/deployment/docker_compose/docker-compose.dev.yml index 3cf9f062b7b..da383eb2bdc 100644 --- a/deployment/docker_compose/docker-compose.dev.yml +++ b/deployment/docker_compose/docker-compose.dev.yml @@ -47,6 +47,7 @@ services: - LITELLM_EXTRA_HEADERS=${LITELLM_EXTRA_HEADERS:-} - BING_API_KEY=${BING_API_KEY:-} - DISABLE_LLM_DOC_RELEVANCE=${DISABLE_LLM_DOC_RELEVANCE:-} + - GEN_AI_API_KEY=${GEN_AI_API_KEY:-} # if set, allows for the use of the token budget system - TOKEN_BUDGET_GLOBALLY_ENABLED=${TOKEN_BUDGET_GLOBALLY_ENABLED:-} # Enables the use of bedrock models @@ -141,6 +142,7 @@ services: - GENERATIVE_MODEL_ACCESS_CHECK_FREQ=${GENERATIVE_MODEL_ACCESS_CHECK_FREQ:-} - DISABLE_LITELLM_STREAMING=${DISABLE_LITELLM_STREAMING:-} - LITELLM_EXTRA_HEADERS=${LITELLM_EXTRA_HEADERS:-} + - GEN_AI_API_KEY=${GEN_AI_API_KEY:-} - BING_API_KEY=${BING_API_KEY:-} # Query Options - DOC_TIME_DECAY=${DOC_TIME_DECAY:-} # Recency Bias for search results, decay at 1 / (1 + DOC_TIME_DECAY * x years) diff --git a/web/playwright.config.ts b/web/playwright.config.ts index ddfb1d476a1..b55b8396d8a 100644 --- a/web/playwright.config.ts +++ b/web/playwright.config.ts @@ -16,7 +16,7 @@ export default defineConfig({ { // dependency for admin workflows name: "admin_setup", - testMatch: /.*\admin_auth.setup\.ts/, + testMatch: /.*\admin_auth\.setup\.ts/, }, { // tests admin workflows diff --git a/web/screenshots/assistants_mine_page.png b/web/screenshots/assistants_mine_page.png new file mode 100644 index 0000000000000000000000000000000000000000..be5d58365619157b1ca32a02b12c8fe6c6c92820 GIT binary patch literal 59182 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

3uQj1mR8o=RJ^&s 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 I%9-5!Pl_47n*aa+ literal 0 HcmV?d00001 diff --git a/web/screenshots/chat_page.png b/web/screenshots/chat_page.png new file mode 100644 index 0000000000000000000000000000000000000000..bd554d45acdc1524fd07766e399365eff9cf8d1c GIT binary patch literal 50589 zcmdSBWmJ{>*Dkye1r!jJ5)}{>L0Y;&6cLb4X{Eb6RZt`aNl8IUQo2EJt2V zp$F#z{1By*!hjzb_KFf>sJyP*%P7e)DM) zMPVVo9bCM?hWxCjBlJOT6eau`g@^q7d-j_FVhV4<7W2L7Dv!P-*sl6_X3C>rjfByPqKKPArf2V)E71DSC zS36*V`JfNTFn`@9pIEEQJbYT8Mu{1(^wq;z!54e!0$xC;Q5G2u@wM9rTX7ZkQ#D*} z_J94q6vjps^{o!&N^6qKc%Mq>Fk^Q3z`+Lwep+v2vkVn8p6Rl zt9O}Hvo-tj34dxC*gm9$5%JQ9I;(Mg-w1z&N4zWMzycBur6gBKs>! z#)4TR!i>$vz`&r)YT^nmZYYI7RD66+-uY~(2n?sxVOi0$RW|$SQd;gX^lh>%oy)VC#r%sROlHOa{@$2`k@X1KCx9p?B&2R;r)7Tzo^=5tk()d=$ z@)oy$y3BbZS*5{3SHf7Hwm?OETwIk==Vtg-HoU~6k@hFntVh{f*euys%Jqlrq#L3ii1-!Drv3>Wt>2?Ue#rr=6mUbTcNW`p1M z$L&M4Oxa`i)+ZRFVPOTF*K@3r!otF0VqE_Gyd)x0r)gD@W;@&Dq&?moLLn_F8P+c3 zzSq&&DP%KUAIo9P@3=CM^P=c_?N=6)U%CD6hJvbO#dOb*Qz0r|pq?-CXM1dW;og}? zCRzxc=>4aWeIwT*`jMgqw>XXh<1@9+c=zg_j zeEITawmFn1_IZ-W)(5Ta`Dop57`&{k)~(^R*{ZpP?gQG+6T744`Gfhox|4z)2Y&~$ zl;*dZf^VtiYV7U~>t^4&72MPCUI1Q;Cql*zxO5lAVS5!#Ds%~$1pZ2rynjwe?H;NF9MOE&`{?i{>+Dy!2zqiCDL^( ze0|T~AmN;V=2T4TU^$s^rdBo~S9Mhmn;^ zL=r>ZMstlXLrJ@0m{*3%E>*P6(7t550ZWlK`CMB1lkLvI=B%BJg~eJsYuyQ~E|=NB zv%J=}w$Vbvz}dW^JZ(nb^3%Ps;HRmT?2L@&Q?;IUd=DQgU|CQvbs3(mpvF6BCn>_o6E>F!rQqpKzn#a%>Hd_6WOCwn>g>%K6!T-Rbc@Ph98a%a`qBV7d(2CW=izX%Uf=S9qPe@vZOwc~3QhS5h z-Y2$&;(<}uu3eM)%qe6`v%E5x4U_QTSDq9Pmb$n3W83!J6gT{9*Hh>NxM;=8Jge+x zeAiE0J)KI^GVA4Y1G;W7b0Yk+YAuqiW~`=gHQN4vVo;%ePqg!UxlsXfHgh$HRHr@GT4i zMlh6{*RO9ubT=#GvzhiGoPkuf@;On+y)Cw8AY=9S_tX^nm61`n>g0F*_v0BO7Nv0s z<|_kPR&sSA26FlRJJ}P-DcQ(yd0*kN`4Wnp6sY0!R!FN+KN&u*O5hDEw%%CxI>nB9 zsg`!R-mS*}g9@?u((X^A{`ti~HJyhRClyke9v4T;;TyTlTHJY{Dt7(tZf0g?At7xcIn7C0UtZf8-^zvT{Mw_H z?EH9DE?Qb~0j}sZCzjSJbxNmxExvSJ7+d|@XLW>PYvYGCKlIA0EH$YcgwUhRrzV^G z0#3>vC{nQ-c^GFB}@u?~+@u8JnJlJty>1QG8%*@Vhr_u`sDZ7j(p2mbjj!?0*rgS%pH zI>$<5%Pa{_n?KR8D`v3HH)vdS+L+8ui23G(9u@P4^!9DJOsB?8$Zf}DAQO&WFs19< zH9pR=4t}S#a{cCz$M3Jg$&*74q7##?o!yqeMs<h6})spf%v`s*D&`_8D$ z?s%Fs85b&hqNwvTSKx;aVeQBJ8*-A83OrG`__w%~_ibQH?k)8`u5q1jBZ=!wPn^}h z{F&SGb40|~y`yhDCBJ+qs1!{Hk>p=|12agd%9$MR9oH&%%b7Tzz;^20cj&RI#qST# z>CsuuhF9wO6S|Cux`p)nS5LSt3CBv8tDH(AO|P=JdZvz#kN^Dn^Xu2IsS+?@Zpt;; z0GA5w`z*M#AMw!8h}GQx*w45c)mHx+b8xfCuGR$h$Ct<0Tqtun>Ghs3zfKOf4WC8r zF88LsudDM01ZfcdTvk?<$7-xJSL^TozV+a@$TjjaI0*a>OLrDOcXf49@>pppDk=gX zY>#3lV^W{q*wF0~$+%aXP)W=8C-xumm!m#CD*r_1-QC){+_Ndn1$lJG?bI`Ye`ECU z)Eb})>>)|R%k=>%OLb>YJx)Hf)S6N7KN+q~=&N*$J@(S>z}=m6-|+MEYvqd{><=Zl z&CB-kr*C;VvYAMnms7)Uu^Y6kjTFsq!N?%~QCz=X=zZ?xh)J%RrfFSM0<$n`+X6Wu zNo%PuEs$G%(s5WDBJN7(2O>J*!?{m(hkj%_>g6^sA-0Fy=A%(^P*qh;;CE!8JH1LN zs4nZFA~w4I3OO#BIBqqQ3u_u;?)z(`Vh+o0brVO&ki1H^k742X@#~Lf-p@xFR_Dp$ zq`BcYT9g>1lifb~p;!`->x5=sYxVs9E|<*7RF zXU~w?9z6Vhlgn%eum-bwf#@Dy_5@&K7}3*%h5(Yllc&tayG@@nU=PXH($QHvR!O!EIBzj3@lTprqX@if<2Z+t2}vl zb#)*s^}b?RdsmmNoE(|hK%RD0{KW7)wZQAaoNU_df}q;?bA-$$U!RM+G7o0oD!Q*`^qRdTqTnE$G@lj+PDTkB`*DA z?B$Qj&&33guR^&{|A(lvHrhy+lVRL|Kk|uwg~jw=zoVv!aO#owp_2Z??5ERiVB+o5 z{3CLI6@xI|xnKK#Cipr559@7M|NF~t=>4xRJQ37}TapU!LghE|1)zLxU4Y9@58~AD zT->#!xr}MUnjqUOa-sYh#to}<`T#*$1&A$C6~!YKqg(*s0G0r~=+Cb^a|66rTwFXp zu2oCm8YP>7i;tiCqG*A+Y`m}9b$bsz=Dgh3Xu@eWC9oUENJ~p==qe>g_18wJH@4GA zZWx1y#OoMap3+Izp%lOp{L>l7vwf-Mc-f)yH72(3R?A(_qn+=X8x>L*<$r8X-v1k^ z&X0A*uA|-6DL9pPB|=>Cp3+bw4R++-TBYlQ@%l65_8ll}l)`jv|9w_n zYUMMM<8p9SRg}gP=OHDC0qQiG9Lt1XUZFo8g=dz#AJObesTX zL92$p#)$CM$zNQh9rtg)^P|&&KY{0YG$ga-&NR1j`Qhhr+`&8UM4FWjrY0s!5Lyj~ zug~pkSetx;NTj3L7MSgN#P%)@8u>1SoAoecS?T&3-b*)8@_*K98(QL!)WdGzzsPVY zbfnl+DM{G#_Oa8_3IFW zSBHdldL9=(G7!n0V0e{ zO0wp>X_(!kgCE0)sidgLAC)L<@+Vyk`J@EB^^J#OuzL7uvnt*s;tIru`|A^1>1E`+ zHq)R2(E1+ijal!b#}=D})Bx%yC*R@W84f&0!YHhuYk53{NFXUbd3&B!)0vLO}YNHm`P&R>o za921(CT(!2NXajDrkI3$8@eAjQjO8o@ryq;e2_`=qFdw;qNY^-JA7W~fZ7G>{2 zL2GPo9?J!xWFbvD+Lw?*!0Dvh`)s!I>f}PjVqzRzOy_)mkp2c9Uj3zTwsC(-y>g=W zbSMp{=8L;zp5h82R3bWG;?t*D zwEn9 zmy`YPyYf?f{Mv`q0mtftnLsgr!1g30B$ugmT<1x4^M3vm%O0$>n{NYj*B;FZ1QKEQ zIK8Eon%RRZuaaQq+FM&I=A$&>{gI1_?s>2ijfxIIBa7ZQGBRS(C|&{?Xni<8i4e)9 z$9rf5SpcT0f$W>Dmftr2_3OQ=3E`8!znmu=hkv}qE@1=;VGCkbTxV25f{=bw(Dk#y z{F=SbDfA%|UF@gpBOnwc3ek?Mw9?Yi354uyyD+AG{kror{EVcWOsL+5ZWm`B|L#*b zazdK?6sL^R;tDW-LY@tFDKH&k{y>z!05@lswO0YR0S@H#&`1xOL1ISH#E=6}7G>GkW^Aab=<*e|N)X^kKnAv-_6 z8^9}Zad9foo!-X;LOV^jtm6e;?I1)CPmJBNuBLu#70seuoKRzzHlBR1gduWg$DxsY zMC``p=aQ0H%!W6x#^1n3`XrmNebDXupJVqPXBRh^tn1Ps3>ppzb%O|CHrCn$v8#oV z6V=}!6Jg=sd;)RVv>zcRgknI^S|s=et6lA>8?ux#<~oCdf^z=7Kw)g>l8NJ zU2&*{69EdL#6&uzBGSP5h7Uw?BBu^gQf-d=BOszuKYr)2-N^&_jzI9Q4@81W;Pj2Pi-kzY^x6Z&;V> z+=c-dOS?XoA8yIK>wV{w#D|`qo>f^Yl~#nPlMSrDpl4|twQNtwZS`DmpKS;)yZIZb*f zVDlaPeOaSJMM>$k_WOJIhHBjF`OjBm>Oew;qD0pPX6ce_2}^M;qL}b-#V8VoJ8!I! zyB%OHr=(&;0;^D(lSPKcQ*m)u71a7vUES?@O=V?=tvSivwRxx?lv<{%CH%A+rzkmstN!#g?JQNqcd4aSFkRVQrlHK6h`>PbNpDRE>2E7J? zyd!X{&CN}aI0$fX=vz^G%v_ji4o8vrq6wEYN(srG4VP2qp|WtK0bvE>#`?XwDi@Ck zBzHAS9~RX(y%_sqTr@H>GgECwW8xYK6%hy|px*ltLLB)>Csw!B#^{u4nf4Z&psk{? zudmMx0^_(=4}kX^mFyvD)|wsQ>$uc~g@u5-?slg-oleLKkVOo^Ee!@f1I-7-LO6$X zcJEz%WXAoQZ&MCIl9v&uo1E6_`AwEUp6B{GwU59W z;SjqW2I0YsLSbTHb(bAA<~bEv+>Sz(Ujq1+Fh};p`r!LV00X$vC7SB_!$_f_Un1xH z8X;kF|8g;8k!!bZW%n-!Jx$H2lg&^*zns4SdqhL~( z=V_-|0HnulYEq!kwxZgqXVHUZr%)sTb!EB2?594Qk8LE$_tuR{7R=Rz;G#TY`S}E= zNiRb5TN~Sax7rBs+pR!Z?)4B$yHcv*1I&UHdbm^FtUQ&#IMF~-W&qm8Y&QTU{?L=p z$IOwv&XUSHi~-A{EGW~1~HAcLgPGX%v~(yI{B$;Pw2e3L<-ovAD*w5x3U)_wj> z!wo$tDXAA1*8dHy<|-RXH~q9Ng~i-Hf9)bvWK^>qTRu`(IdAM~87gE|I-x5~`|rQ~ zG3|23ks*p{Bb6vQx2!R}@Cb^JRK-8H^L~~>>rS!oRML5+-eGdBR8o&-x7AWJD#t|W%HFBRlWS{`?B%$bf-gI zW_P7sm82&d|BX+Ms?vsNhS&t$$>TN_TFTfLZgJhNr|C|bOF2J-hv287rE5TqrQNA~LAGC;tgawElG$+zTC3HeeO1Vy`1V`lV{ zup6+r$aj(jDAf8QP1ElQ+A41q;3+3(#~V=C(yG|?J9bG!c4sjXn_4LkJY(Ks=QiPxC*3p$O);QWH(hVUZUfITn%g!R|hls9;7^gzlom>Enw z%-P!$c&c0FrPpkTLXG=@w3JEc6gDVMSD=-O#vW26rUg+BAOf(3Gtl$_oy0{(Mn*?V z+}mSHkTvGKdH3$!)xqrHuach-!4b5hr>VW`@lI8>y6AFUvWYqIbdvnZ!>M~zr;r>%xROUr3tjj2Q@;O?Y z;AGmyn6oP=`B z;rc1}G1cy8)Rcs@mfkauUnfNQToFgUn5n8|WhZ@=c#hXGDzHbI(y3}@l7g)N1t0pX zW__f~_a)Rb?;>9qr=47Ki(rlB5}$1HyhGfTJmL7zX-5j5{IUJ^Ti7s%$mILk^I!jM zMY9wxp<5+Q-#f1v8z7xayNvJjoeH6GpcTlIYsKTB9RzK%oD9n_!hUP#xtmqa76x|d z42#&5=MSM!#DU1hxF`G8+_d|RQzc`w`-Fxq@1IJ>-;K216jKzFtSHg6e~TQdZ{sLf zR^j{bw>`ae~q|2O`S|GQuDciRD^MS2Qxg)3J&7igpv!qVJIaHty^cbMMl z{kH0O&%+h2>_JjWqnsD1-;#dFe|x{U z5L;-!l{Y_^H36HiJ{k$RldD>08hWClCEs42c^Og_>6d8WW4$Gu*&4hpBJ$Y9#9wn2 z2RuDDkZ&D+NcQ5w$*C_Pz_4HrjWn%i-K`udA8>+00vv{gF;MmRzQ{(R5f_gdkd94% z^Yb14$^rSfNbL6D+IZmdiyx0(e=jkQ*z+|5)iPC|6jEOq8wqi`R!h&Vo!!-eZ~h>J zWM02^^Tv`lt-$*oT$B$%3O1;L%!(`q>XxN38iS`N3=a}2_le=yP0u68fHj3)Dor~- zGr7k@n5)JsLF4Q!p5PJ~il&XNVM4PyvUiWj@!Z}D? zBPE7I*V7Zc67#2@uUuhGH&)qFf~rd>Vn-5O*04H*J73CtR#UrmVQNE>0Ra zsBzeR72*%MK1^X^#EF`jo{zT$I&*8yU~nmccHC~~o7KE4gkGD+`lAFWpJtGTX?{Nb zCH7cQ`xC0~AMQKVm>QLC)Nr3z(<5s$-FB zx8>Bp2&H`IpQP8cTtsH}M0GQKJL&ZFlfq{Qv&@>ME%QK+bD-|W z&bk2~`xozBe6o@YdbH+LzO&JExCqmAE6d-wO{|`HN*}=PzPC0opzPQQS#Z7fc)f3Z z5fCyq0VT26K(40qQqPz9tm`P$M`XGQS~@un$??84>B*_ho#S$04F~3`Kpo7N*J0@+ zH&k%|-z&dEA!RvGJuXv2Q3z3r>zV)a;dWLWD3=dU#_Nn{&J90R^t%|%gIFjIW^k*x zpklua`r-V>#$iP*ER^lP$T{Gj^NMZUm*}AeQxw$RwOClS%Grd4b#THyeJTRk0JI^q zGG*d<@K1f*mfc?);ka{W`aP8w+>kt!5Hw579AN|?9JMl^Zzr8wjF&6m^a8F}S~8J4 z0dLj#y??jHR+)c19Ne*xGFL>lGW_89LyySG-^Xrlm0FZ+di9_VT_+;)BU~NMFT<@T z4K!@`(>JhzvZml%$H zSXzhsZ^R{F(widg;NSpi;9Muz$`%$DNcS`85?#cCJ3;oJK_Ye}^S0gIA?{?%{*GG$ z9AD)jl$N~woo*FUv6iK=Y&F*1NvQsi?bi$?b z^2%G|^p^-+qTr z+f~~z@oZ(Z#C+wj8$DX0RJ0DFWSSLXSpwMDwfVhl%FBHukr;)FxPm1A5t{6$>ba_N z!$0|y9=#l4{|lCtRF(}eA%N%@G6w2hlPN0dlQl%wfTjmMD4#ac=?%4okfDGmJLYpLPew;Lxc|#^_M43=DT|C*;(4zVoX@rmxQ^)FbT@u$twFr z+1;QeAe%CvVp2pxK1h3t;2v(JM}Kq|SqJl#+Q*Jw<8~U2JklP;wi+oE*9M1BKG2oC z8a0K8F{>&xs48OqgV}1)Y^c>;@1(TdW-4#`fRyba(_e7;*EUx;VL~rm!os1xf*S}C z!(BC7CRZmbN4rXu#n;adoMNr(Itj8ouNrVFJiu7->pelVK@$E=&X2fYSAt3zIfqdP z5OHZu$Oy^*P#JfEEZJ@17-NRN4&rNmH{U|~Q5&rt0-AGvvM6Hb3SL7D4B4%1&{75r z9Sco{E1fqeNlEWVdxNbGwkRd9O|mixghr=-p$ntwV{-OLMPAv1Ly}O2nLo4{6sH0< z)1nz;#jv+u{(1+@B7C9|4q$(iMMhZF)8Lx|PHQfpjuH_O&3~TqKA%8GVx#Iamj1DP zIPH9pRFw6&-(9TuogR)^P|>3JuD31{#AhC`UVwJS&p+Dlh=H1JS_nR0#z651)#z;S zpQ_ddk({FBU{%%U{93!OyOI0!Usn)Du@wWHlVkK~f~+A~|gKW+b^Mf zG|*}N2McIVFQBI5pm2iv`xFD?%x@v3-*iM_X@*)|-K+)bxllTF)HgpOkJ$ysE*lms_r$=CdC|zXC%y~w zWLh1q*Tn{cvrO?WUl)t#b5>X|h#MR#c$7oqy#84Ou`gbP6#6~BY7_z*CV?O!71f4Y5vbh|J?(^}|A}6eE}JQVZJ^>) ze4>-{+H54l$9jC2)MY+WlL(Ot6xn0%V>FL5`W(VM_^pwu1BtlpurQ;thK7cyXnl%! zprFcYIpM>5kjf!e@~m=1RR^m$%w9y5BcawE#L)1mxZzw)wJz-v(AUAK5yNYnvf2rf z&LE%|I;gr7!`ZdI;QSbyiqeTP-J=Vu7 zwimmHmmStejs3zOO}w?O**6<~HMAlDMnc(u~fq^NUgINzTvcW%7!Qz5!XJGaKd zTZ~UrpL{fCZs)b37uopP9!7oVd)Sr-R7ORvgWpuZT?OJuGT|!-yQA)~zPw;&01snJ zOUrvoHz>PE)|i7K319;O9-hTe&d7L$Ju_(_Aq@uy2Mf!3znnSq+VitMckrkO8vxqRXagJr3;-*`Wrozb@pu zH3vv_5OxD#Co%uEwKecI-(_K8ffWF?9qPOvCp<&)7Xj>zKz$}$c^c}HO6kwTjuGL~ zV*+wJYqLn5^Ts3qEtRPmTIr~un_LW>oW(HEDkt>OcDD!sY;tf6gFx)b3KIb)Vxn8O zZo%x-dLF}SWIKag4%HSl?k|95A=BQ0)zCdZimv7n5z!qIggb$Wf%7(0`g^%QgU5V` z3H}I9j%KNaZBDMTygZv>TLdgLybcar&?8$c3=1ipfG+ukg@s`#ut4CY9_4T^DlF7- z`E%(|O7=7716J1ja*fN>P*!*_wF5Kj4fO`IvRsSzU{*VC7CBP@=Mx+##NpkDZrJ6h z%>33bm-f|5l;-Z;=HOcywXZ^Qd%p)mqk?>G989_@woQ*g;XSi%%>!ajcNfuVxm zD(DsuLU=Z+x4XbGIIm{*sWsyBXMU5OJ2g7zP~?6pAu(1Xh3seO>5xklJcL~dMZ6p+ zu_IQmfe$6uuU~hA@+vsajT2qdAvPh^Sa>tkJOYo}v5{gB6nn_TI$|E)WneIa0|#>z z=?vafCx}JJn*qAL!y`|jZ_^JI;)X4U)N^68TlIZygvIivZlMH}dG9*0}7F0c(LZ{FmG z>aV}QKTPu;a4kYHtqQv|C@=%*-2^XKuv(V*_oX|#PeRFK9OBKk+?8u0Ez1b7(N2~>vid7L{aBxU0EG|OHEY^CE-vX=|5FNKzibhU;>xZ_o>2b#;L3_r?*xd~cSiLo_ zNFIpLP%=;&Pa1;Om-2GnT_f1_P!}|)SIS2G>}{2osiBskKA!jL-wVoubDdDlxEU9Mm_I~-7KzyB z>0pD!p^jqJwSu`m{{wM_i7Mvv=bI!XkU|+evMP5uGH>(Im-N{y9wKUe&1Euts&IKTK*_}G;B1}xraW-Lx3FLyY zX97B5=58J;gjYqPZGdQP<%ygfJRTD())Gk#{8o9OJnAWmRN(K+d_IBRGl;6Dw*o^$ zqj?})LxmO=U`~cCxW7?Cu~vSo0lR2KOI`g2@F)_JG|%4Kp&}@h#10Cx{@fWR6G*oR z93b{XK`?FH2DYal|&^lnqlTi6+ zW3pym4C*U>gzUnRZ7>aT@x0flsB}}G;#Vv{5epX=SNhpA`LZy&*8*(-I%Q-$XFkvk z#1=O-{F}j?Vt!XKmQTzDo2ep2pBljNS3ZS+hDy1j*=8Y zu~Jt{6+c2)TWc_3j8gt*Yzg`Rl>Vsc=%B3J*tkb~ z_zc`uT)e#MIA8jgAwPsCCbD$zu(WPsqwYMsOo}@325-!##eHaJdUmy)SgZq<7g9IZ z4Ls1SK=1Mf{GQ~xKu+$cV*ihXK#HT%PyX7q5^>;idmD}^T;7K z`*>%08x#+LP6mjj+YlV%Vq)m6+iIC|dwS&2+N#+l#ok%Zud#oY;!ntf)6f3#88tPv zEEQw3TvKCXmO0=H^jPsl=JzSv91bHS##JjedoQNoOl2(_K zE8zh4h)Qcf+K3k4ZM!B(r_TY?gWC#_ZfKzU7*xp1$B%kZn*FDP;rSMRL60^Yp@QB##-cSjjB|wQH z;`f<|>qIJS*4XFJZL6%VPCrb=Ya`0yu+)QuE=UzikbqsFuL@k_?VKi@H{poKhJ|fH z*B)#*BM=%P^%l;a0qC@c;0|VTa0ht8arHdjbL_|qNI~)~BoIxA2X=Oatp;`vy$U<# z%IvFHvXJE)0!emVf8N=_(mDIKY}Uj!N4KE;o_8zJ7wwO&#(>V92qGTSqLI=t*jQYk z+YF9s91zUN$oUuo>1;>{Sy@^4KS^rOIvi!QgC08wCyL5_?K>DUz=&pcjGpIwHkzR% z=c=;(67FDv@ouxxaJJe89KS^b48pnt45ovr?ps#i!ASIsHRt$@SjD#_-6V?jo z1cc7tDv}{iR*?41%*+%N!unwyNP1+OY2DicaXT7qH-qxBHO4dgma)Go7kfvX#5V12 zJeWUx7WMZ4g!X^o6OaJ-2@yC!P5tutJWNOd_J6cCCtyl`_dN^P;!PnGj2W@8LqdZH z8C7!t0WD3|90PRGC^n&9tnM8J9|?dNFb0m6S_&YBVg2Ux^z=kXbxymPryr4E%EyPa zV(>edK*-y1tMLf9-e-g&OG!-yr4@SevKMLq9A{)?fWu_3GBna2vA!#x2GrU75kn`Y zrlbIqg{n2Qw89I#LLkTven<|yD@Q2|iucYrY^OQk5{nMPntZo+ATX^1gi%%=0GL;t zAHKKCR8h5FDUGuUR?N1z#qK1vj18wi(Brg2lz@jhy10}(ePcK*>yG7+IQtHGLf}J~ zAbJmY+zR71l+Ynwwdk<{+%tro1@z{dcGVta7=y19Fx z!2oy+5KC3pWlsBr4j@nU3J>Rw7C#x z4J)+*sZdr{R;Sj(RarSAUM2(Vz2Ln};4)W*Y>61kV7~$HFR>WuGvTxXF=P&-8~`hL z+Rh>KXp~ubHd8p4Pr6K2yFx6#4X!fq?kOrMEq2C{k&&s5tIG(0d21EY8t`<)Qn|PG zqUvSr29#dFK*|qo-`DOwJvcnhn zasYILf+wog5~#JEMF#h4f!ajc!@xPh5r9bTW#xc`L3qWvdX;61i4J-{{^JE0j2+CI z0H3p+SQZ#N&mmR-;ZWHK0J6qszX0$T3LZmHHSqPlh*t4{EjA2F2Lu>M@Kr!_Aos`f zSWm*Gk9Su={zDvHG0)SX1xqDgM?1Y4G7ev^sGFM`*sdVIw}Lzb`J$p+T(5dK^{~nhR$d z5FQevk)%?W1`OEL)O1UyYFO!5l#B%0zI5T}L)e2Rzl5l$y*9>t-}mp^CEXJGYNed2 z9Np}}-qS6(-2n*r9O8Cs@iy??EKS%KAQ@GTm06!7stBkr5VE+M-}(7j0{;U_yCwF> z&h0Dgqs!E9-oAw`CJ0FzGI|@caYqbw2EKDnJ%rZ^_kAl@+C*3@M6$4p$qWoAL0}g5 z6fiiDMUdKza0%fn*g=KND!Cd6k^rLSjV>9UvmZJAu7OL&f`@~n4yg!I=xtI`ZqUj0 zr@VE&SZ?cTR!oMi8apVckR?g&Vy1Xqk7m|P?~eoCXkCHqW`2 zS9&*WAn(EY!QJ<7%-=6zq8wydt#MHFAu05LDcEn|h1hq188IU*t+A=;==hjy|1a39 zp=1Z@R`xbq79{mSGnHZ8a+^mP{d_ua_bUsFir&6?6EFLAZlE!c>@E#WK-^Z_1F&32 zMWqj+0iZ%7tEPv?380PK38uSuA1g$#KX3X34C&gnKfK4$6oHL)FmO1pW{Z-FAi2`o zLSBRO{H=~S2+|uIG-!&39w)a4=WkvC9fHY#o+eG%#q75B_9AsAXoA~XfGq}qp$Jw2 zl*4BePj&FP`T6WA z-Gze-1tlb~ZT#!rFazBK`|9nb!R+YD1=zyOhbEdE4j@9d7j*)A)31QW_osDW-JU$*#wyLYEk>+yO z76x<{2Rl2WFF>5EbX*0>@Mg7qG8vS@{{H^?M(C8DeD~j_1ucMt@cRF+h30=g=mn9} z$A1%xZ#t0t6#>6!M)vd-{H8G%*SB9fU8q^DIXG`v&(7mx{e5&%FL{6%I#tqoKe3%5VOeAD zI3aE9>33h~0~%j-@{oKEWP<9@*_qdw7go)q{6*c*WCafbI?Wgh)dK^Vpi+hMuKPGG zDkAb0yUwOZuR4~D`^IQc^!88g$8R@{bbjlh2z_2F%7eYIE;+e?9-8my>3#CaCOgvU zFI`&jPdWnAZ=viHe9MLo3;K9DiP9G^H+=40qo1m5gF)dxU z0p8^+csu(J+VW0NX@d*L3o6li@TC11zsQjLqsPeV=4}IchDg_s7<%tfc*N3OtTP*n z&G~CQui*~8Me3?g-UJ+%K6+abt1JeKJ8r<+lB~?Icn7l{n)+x{oO&Po1sZdoIx3OkDT5t;ZJ)ZNik6iReuh+$@UVfzglZSQkL z>?r`_l9ra<-tyMJbm^p{HL0`Jx7DdlTx} z0I#4U3Nl`lw;FWq15+x8{wXj;Pbies0c^7Z&jQ3(sCmgrz#%p$-e)p4CSwxAdv>H7m1|6TJCbk*S7e0FCihcH@bQQF&Q6&L9SxC8~ueG*31 z-?^+~lX=+|Xapp~r{L)smk9{S#K1SP2TD4KQr07dX_{tS@O5)@=gpG|&0MzV^H~w< zi$CwT(cGaAEF{)?@s*)5)JLVkd_oi&tbCSARC8-`b;KF-98-xK{jQK+%Tmqu5Ab(< zoO|aPF8u|DJM_o3_k2H2Q7zgo#_9UtTzE6Ld-7J|nGs*C>taXsVm!yT){7S-4GmwF zNL!Y6d`zu704qV?%qf_xFtP9mz0XC?4*}21JbU(x47~&d9S}8?xC#Qzf^>4m7|9tR z^YZgoCMWxxnOj<-mzT4?eCgfXa(MFe=~I3E)U-6iebQ8kHllKUJNH#|7lyWQB=r$|5$+QrZZfbYIsVl@D#5Z1QI$;9qOa8*}w zv<*`4Z%n~^cel6Qliqvqkp`|$$!Zx@U3m9d(6z9lf^T~R?))+}Y@pn%tmPcebo=Ng zm$C!b)1#84q$%K@#+H^cII#lGd2nmS2^Y6rs)1)#m6yA?xjD66Xmk{>FJ?4~Pe{nu zt)skks|twiLMJ?@03bNDibOQNa_kK;+KIn8`?wb!8T9NPzt;&OD?s-<)P!=fvXDk? zsOAEX13aLnq*O$NJEQ|Oq`|>KkgO)u-zBC8GLWN8@UQFngj~VFA;h@|Dz2)EO4Q1AV5H6dc8lR8@MV31%mB4 zJq=<$Akv)dY$XK+5WPc+ind`BdU$v&&7VN+10ZbU@89J)IZQM(Gf)_~@LKP8!Al(- zo#L0l3MwkdW0VB=_#V=A!b1yyZ=V8IeHuzhK}ngHn=1qYxmXJbBEaI5l$F2ckhNdRK-bj1^z4{Izr}fGSA;7zl zkrByiSkB#)6q?VbOuDrmGYub9R8(MJ(D?>Yi6okO&u+RPM;|VwuRjazN`0dYF==oW zpgFB$V@RDAn!n&1pm(7Q>T62|&|=ANH}}lSiY2}5DhKN zz!u^DU|G^@qGJzCYt7r*+JMJEgT=)QuVLV2Wn~o=u22fGv00tEGhO0_CqcyiIZcTG?LsDNjZEGYKEZ<6-< z9}2Qy>0neE8lOe)+<*tR0qQm>ErLQBm=_EnPB}QigTJ=6>~wW?#h{VL2%eGvTjulU z&q%KYXb4%^*@0xD9-&Eqf7#g;Px|5cTD?Fa6;r?`=LuvEKFh~fahd2o6JTu_odgyT z$l=LY@He0|rEmNm8Sw;9m9FRRAR<`9lbPZ|8bOtUP(shlOaU#uK+-@ai8DkcJo zxvXqRZS5H_<3Xei>goP%(G!PtM-xaIkUA7KZMER8dx}oQD z_0OgY%qgI0!$Ms%cxV{NwJ`k-II8fFkEc(YVjk-6?C#=Txq=uC!@~Y7E&ZB1z;w?Z$3urE_7od6YSbww8Fv1WB{!%GsO|-N zk=8L}loP_p>+b$)eVT1rYg>xP3jAu(~NXm<(f3?e})!qbxpd=TUgwx^XJc}HU!;7XyMuB_Q)$E#$?Z)FJHfMIE(<;;`ef%JmCWDl!HS<-*`(c z6O~FyNs-$fHdjGjzCdFZfPn0@X_ou;O_@4X5g#`JKP~pS$KMX|=rh0-g6~pvw87f7 zuiw89Jb%8OZs2J$GAmS7$1Xm6L1&w;ZW){*-&Zl}`&Wlq`>U6a_3}G&M&N$(;qBuy_pb-t z)zq@MD5^E}>jsWq@87@oYL`58=+IcN%ON34x-~?f6PJ=+w5XH#&V!AKi9snbd-iOK zrltq|Cr25}!^>}Jp2xD#3|4M<_in}SUzB=upoU+)x&ZhM3f=tG?b9c^|1uXuikz$< zu7t3_c@~kW>z~}$sGe1#t3O*?!$4mjO-sa(W%_!ThKPhT<#Sd_5wl#pYab3kfk6q~ z5_|LJ0VFu5PW6#8B1JoJ-~dHnNNymIMY?s>lhH4`%E2@nJqv9MFSXbo7F5dhcDQrf@@{^|%2uy4sLKs4ykfgxE{Cp%dB!Igj zF=`p_B1n|EXAd7vpdoj>k3~$TO5vti)ipH)d6S2U?(R8cGNVV0%9uP0b>zHx?2EZ_ za^YJW!E8t-$+kkGonY7@;`f=Eab8Ue%6#~+1|G)r_l(9+Y!lk5GyArm&)lB)QqORl z7*HcoRB(tWDw-=J^SHFMjg!Mmaxqaca`H`fs33*bE535|>dL@YC_*q(Z^R9-f)IJ3 zYj2Z6u$0ABzyqdK#$397{X<=yTHr4*yO9zSA6~!CcYORb=4xzg(ydzxd{L!lV9qkW zp!@Kd(`98LP&FhaFM>}M&d9Is+O3FU_nuT1vJ$9jecl+9hr0K6TinfNs;Y|LWwj70y#-WI_)n zX8c?&{kFE21K08&W5Wq9js$GMiX!jg;&h|O;)+LDOB~`RM@Nkwt+!>%m8huE5)!Y< zgmvpjKDAvxIW_e%?UUNtMSFfnXNHuGjt~(kl6Hq>I#BNN>(E zPKZ{C%kVRWNCT;uJrH%%Wiqn>M|mfp+EFjjThtb#L~~M|*YB z&CR&ky69;PU8K6V_l2rUlkahX_C?nQxg* zQl`f^gUy?LJv{p79yU2F_y@3v&x=G|y?SU%=}f6`RA4v~tyEWk-E6Br!|$6@XZr7- zi%&j&X?80(*pQ8mAPySHbocI(JArB44;}i&Io|vD0}i*24oBUjjhi>${knN2Nr^rA z4=`WDS@Y{>RnZHPC=gCbCH(wIGB)Yy{fyD;p_{oqj`g%50^Syff`SsxB`gfA=ILzN zl0W?H57XK{&!KmB?ASqIi)Jssdp&W#zv&MBw8Rljx}!vvjQ+C{IG+>(e|>qU(crT` zS-<^gUR~erN6A)+KPw%NlE=-R8&43%IpOBbISm?ELrA%(PY=CuW9{}i++hy6%2b=Y zq9Pw_!ysgB8FDZeR{Qs#^zc}tp|K;rlr-)F{$#DG4G9t609g)S8;7R#GJ#1PCaWu5 zFfulCW<*%ngiaDQPum^xxf%8z1gW{nUEDMG>>m;SLu}Q~ojc3se&&ZRV&>-NwG#{s zDw0$~eiY7^7yzDA;k9YwMi4R03-jN6`lO||At1EG>haSL3Gy%@+sWPYtuBaK#b9nAJ!z7!pI_0qzwCdi@yzajwsKl&B^_xZoB3fl*V%qn zsiD`*=7;*_HI31k#wCR!B4whzXDxAsh3?kv7@7Dg<+O1M3g4(c5a@~fU1@lnboz7w z|Cw1;Qd~T&&v9~MHY%pQ0m;e9F)@2hzdIHe7EYZqM1yZ*V?)xn=wdo}|1HNc%|i=Ha(5(p3>i9< zllDi~hGkY&c1IRwfWJFJ=s+m7zAw?5GNf?E``m!QKvc%cc3*%j-oQO^kato%nLL}& z>Aowt&*+gO?NBm<8jzCqmze*VxIq`Wx8WHQNy-{xyq$x?T#H+A>%V;ep7-R*dE!=L z;#XuJ_32GjBR&tK&YI*B9uZM6yDxfV$wiK~sNUfEu3nWHBeql&Wa6(fGm~BiWpd6Q z_`GM){?RqpJTh%vr}PljeZt>BC3GL`I~7iQdpkBR;G<%sRKt z)HDbE-S+Jq8Aa8WC#g%JhN0QG{deF!6av?L3Knv>b?fdMZGO7uWTmcp?SO?OzJh%P z=Lo(UOGH<$UVZlNNIsua$$wYMg$ozRXzXKpRvRB1oAzmTuExX}5(yfHhQdi|JR(*v z>Dhw^)#NQtFF!p@6_sk^1#GW1!DLzMsiD)%%*{!@aOjyhY1?-HrKuC$lbZ5N#@M}0 z3=REj`}XmcFKWr$pT^ccjJR@z>a?CjmIr#H^uw@=w+svn#ta=QSQ72r2}v`ab#Y|L z64&$J-})IxoeSU6S79wvw$u(X7M z6{vW`PXx=di;{{#JT%vb3#f^0O{b<+`JX#CG(H{ofWJE@K+f7`fWoh~D!e(T8H)U~v{JUtIXkg)yjlq-qtEFxXgpXVt&=z$}@XsE3%&d(Q< zka$|t%nmTNXngr{%izI2q}|B0o0I$X?~mGOtzt~u;>8R3g$wara@L%g z<~_tcQ_-o@(ZuAcpPwI<2Z>q0{YUHPFId3!Q=R5iR0IV_?Vm3(c`|~5!vQ<~`YSXd zVuhp<$+6I$Z)0SF2N7b<58Pp%1r#X7SLVf~XM%zbeSW=^mHgw!4={`N5z;dC4Ifw! z9AqfL8p6D$l=(X~mC3Wq5G&Un0zyYd3+h9T2@E$!My7!W2)=N@eYjPbFC*_sp?&-Pfgk4}@ zU{$J(1xYbkXX~LS&!5Z9p508LMKyq|_v!I-#mm*y7TbMUuBG*fyC9cH1h%oZ-n%2h zX#4grEPR$6Nwz)|)U|7U3_?-m2i+BhR-g3%!4wI1`gO^Vyqyw}7L0 z{OFU)N(!Dmi)r(@QkkOK9?PGemDzwfjmoF&o!hpJJN#xB_-^YP+;$x}L@{NK$S9Ov zWo%}q45)SG%9M7aN#{!oy>9ErxVmxxbeuka-kwix9ywfA_j!K)KImE;BKFO{0Pc}L zbY-b%VR}eVPz6Bmv*3jqy%bn0G>{~vy*?2KD+*4;(f@QphBT=&=B$n2%-rIzuzA$w z>JDWN_V&Yu49S1r7ugMv-@vp5rL>4ZuEDJu8w<8w93ZkM`uzI&qj`sY1zD@h;U~M| zgMxyD_3XRK1X-8>2>e{3tzAMkoqW4zP|nk*AJ|>#pxVIME-IlnZ+<}{la`idqP5G; zt_?_ycAATJo~Pa2`=<2@&Y0=hsqy{p*<*egf3L3=#M`XGJhYPn$%^v0_>@$P?7BW8 z`PS1`xp{V9twwst?+c`qIr6mnMnl6HGiO#QD*)(SxS-!++J(R81#tQ4M`q-$jY5vdd(;fo)+)A~Ix=+a zmJJ&wblT26snzf)#z5OmSJ_s6^2C@urly>r0lE>gne`b{nvN)@o$2yVNDnAG=OOng zZuQIr_bPks_Alqoo~>-}9(il+#*JqCBPix&E9Yq2ON|7(`jnp@r?H``GJNp7A&~30 zd(1nQxgFU_x`9T`zWLzt#?2Ez-ilR@QYPEZ3-a{Ny&QgH%k|>Bwx%UrEA3}THI=QG zd0czAVFp$pi66AvEw-K-HqbD4<;iKysfLMhBZ5Xmh>WYTf3rzWM5I3C*7qV|CdCiu zkRA}Y()4Q9!%&!icsh`uehvk<7ZEwLWxDTj$rb#-*-*qFgbqDkOD2t@kMYkdz`6S$ z@>fK}sH^z4e}3lOTiyA;`9)`I$`;oB6^ihWN0+4X_y>Fx)Jc#!R)!}-0yk-EQ{;ZX zF`nn4qa!0GT50|bsAb}$N!He(_VJ#-UpmZ}I4Ke`!CRzT_LZ`-vVWlSw1ZE85y9W{ zOGudd_348v-};i_Vv40?^elT*Q`7QA8iaiksukl0NriKy(7c60$UsNcHgg;*X(z%P#bJpFjjt*2& zO1yi+29RpL{Li+wK`NZ3ZH}D;*(&YXp-L5CjkI&{<=*a_Pl_w(h)8QwQrG5haC24j zi!tV)WStqL4g2BzTD`l-m?PasgoOQP_;PZFoSmIrpn^F`8@@tifH=U09P2P8PaWl) zIy(@EQl^k*(n%L_`7*){DOp*MoOg=YkEN#4SzTu40J#r+KmkhCL2(FzC$7SlTE2Wa zfHu$=^a-L80Ep$H6j+>vKLtfskfMM;$Hx9feLHf*2spIvy?PB+0qPBlj3k0B7ft44 z!F_Xba(J5H8aMD48s?q|+)Q?-k}b5&DJ!GT9sBQ`f;zznSir}}r?(U(9jYxufaQqm zNrBeuyo#zLef=L*Ri)p#gGqEX<%iWzVk`R65DLRJYs@K@_@nScV>p%_V3LRkvd z<|`>BjnJ;{Ti4P?;2{;^F_sh*$V{8&?&fCO@goj6T)_;(d~GU37z{~e+a=l{<=H~B z@tZeqgfSE+Pxdyros{$)O$SLXdHy_VOtSid<8Wi-fJJ~(5(5OF$IHV*UZ|G7*n5q> zouotKgpbb#?jvh0SwAK%?H5oS1&hfAAcg-9yN~`gwYOATTN|H9ydCJ5Bj`-x9aENp z8Ln|Eaq&j+M0%4Oq@>-k+i>evG6D{{Ib+5I)xMEhSIZ*+qFUtCsjsIOIK#DI`<;T| zLP7EE?oOUcfKMkWi-?#g^_FkXO^_>p)6zy=3FQfriFh5Sq2C-64eycxh!DibUAxxE zVdEn7jR?AGgLFJwEaiI z!gThi<0@|e|A!&AU$;)^Ovv@0{gCr1TIxHbCxtsT7d(TYu&4h+d~0-gxXS|Zf`=YS zNj7WOie1c;BoStEN4KtBAzS!mpbJII+SQ7FXHU(WGv^B`Y%(|s9Klu*OS2SgwC!!p zoA&h+k(^<5q-VW%WaOl+TdQc80;pLNtekxP`qPqp2f{&YvK~W-mMBMT9$b0>O{~uB)V0k zi;o{uOv}ulZ_ECGgaH45hong=GEk8!08$6cGBKvEXWriK`|A1gR!9j} zmSg6rp^&@(Isc(9yr(8f5!0pGU^Vg!IBgPnK4hKi^4i3Ki*TbHRE>puU@`fM=7;oL(Tj58olf`YirL9Tj&J#NovQ_(ACo;5dCE1 zJXI6E=L~(@AD=^`qobFMb31h^Wq*yT_DA2~XH zefRv253TzKj~Fo@7J*`q-UIWOH>Bpxvw`m903aNNF0&2ac&DJCfC$1m957%2#{)~S zuUD3-nOXSOTZs>6i#Xo?!z4H^s^YjLePwOCc+=l%%ms4$L;4RFhxXzqV{i57dLNXY z`9NbNBU0vF|rLB3G=N5Q+MQ*xep&6%X#VnYQe0|H(bfHI;Q(t2AXehC=GJDePs+_$I1-j+WWi>m5K_JG)$aw8I zX1Q%_o}F=9SeH=pTs|B{39yuo zGLX#uN6v&TL@`Gwb0lcWep>{27~Z7*k3vs<&6+W@wk^R;1soIek7ecW;UR1}Kw?V0 zZ?2d!M9{y}72x7co>`S_xf_6t9oJgKMN!udR-teyEQ|fZZ-L!V-y|j_O?IK*E+%u@ zOmXSMwGfV=4)$$dB3eJA&g~wUTbX2W(bspFlo4BA0Mf&Xt8fNJI~5;t$iVI zQpUz&Tg^6aE~Yr6mN0QW%2hJmXr*J7aq8y{5LgyHL; z3#+OQ?cblvJ7gM1U7F=3IaBAt!W5S{Q^buO*RU?s4F?Wd0&>*f=IqI)AX0#`jvc)45eVwdAZiU5EJ z1Zi{?sw_U<(#EE4-+W?}ix|CQiib9A7`$+UQSnbG%c9|OlS5?>iUX=A+kf42TKz2j zE=(Un;*t1Gb_B^v&4J|B1b^%K;WGBA#nXN$svaz}R8*r=a|OCDae7gOof=D;3 z=j1u0EM*5=*EfIDVyW3nyyH<=dEd>eYcUCnS)QYcS}Y)-lw6a117!d&*M1{!QcXZ{ zv>Sodesj~>x_WCiFi4&Dq@W7R=4!#fzI00s^80IBIpbAp+SDJU?+~+MFv* zfx75GI<_i4(d_6UCCxcEYnFHL8~Ln^p*5f>atpUrhBi+aWRVbf2?@faw2+6p;u|^- zp;odjymaM?o5S#feVWUTb$&z=Ex+sOh?LU-Uf~^6*;NSl2=%MKTd!QvYn{Sno-LJj5N)h%9FM)}1;_%m0*oDbw4r$+4@V zvZ0FU(3!crGM%x2=c^Zj*9zvxL4y`>+9$l9J7uI^uP+EimJ{ zcasJ*ocyWZ)bBXpZUKk`8pKjHO zTpjQQ{)*dW#4%tO?j=I^ z4Uh`h`|8wrJ^^QaedkmebgYt07!)67;#m@72V@{H4{?8cezurBs^PCFFckxXpt~Ck z4Z*fJnj>7O^DdCJ(7H_QtXDU%pBZJ-9`jp^``!N<92(I|abnR))%G_dL>B4SckQ1q zHFGQCzv~QjEH2)xq2b=pvv_>j(({6MQef`h=J5L&8R6HiJ%M(kV>>$=23=;}JZ(e6 zyHrvjInc9Dp6sEK>f^_c2+V*rTdg;^{$ ze#fN2yZ7wTg#pn2!2liN;yuBo+eqnQTh^|(`6>=r45q;oWv6(RT13 z^$5g30f8z~>!OfFo>ZCBf=70N6Y8?k%C{1H6M?J98Cfy9Y_d8!{h z##6~~tVq4;kN(}PL>D$*RI+)Nn=1>YxJd7cJlGbXaY9m(7dSBw!rb;PWhd$e>^3yX zqbMF;zuq?1Yd2i)^XEfAq6ZI-N3BRrGiJ=1ycNJTM~>WQ&x1&L{QWndXjAj3KMY5+ zuTQOUSUxRxfU9O^W~kPJArxNU??$=9(&nI=T~WvEM_T)=ett7Q`L_7+V;Ni>@YuF; zE8$r$knlwPuVk)1a{SH>Nq%gVz+6wt;Mub&`nAhY=k%pg!Roj=H z>O62bw0~A|B0f5={2^UIUnyL{m}dT3pP(?A_X5TJ-n>YEDP` z7X-e*=HrFsMN^hNi9PVZr8mh8&3$!fg1dLUPZAT5Or1@@v;0)KP{=6`{X%h8+xNoU z-I`SUKpZ5J#>4Gp-pmH>W$9COB&Vccw6VTp@6+|wO(55dp+gwSX~fZHwD~^EcZ`DB z7IHY4`N+s!te&yzMTXpPNCP^PQlS(`4+!%PezWMx7ZAgjaSva-NDK*iP2-NFobg(B zzeOCy{rdHzdVP_f9}*U33H#1IQ#@+0Dx0Yh@aJjlMKnw#YEy<-uX3tk$qaLs=YsKN zr?M>r1R=-z>!b6;cl%y7e-T+SPo*z`b;Rh=RL}CTk+j;1_UUtA|Nhf+nju#uasQ*b z;@b!=5ZE>wDN3HIx@ycyMg2b zPMA3}eP_>d|9=@+)N4MGEFJ?|aAu>MEX$ezH9dhcRks zl<3HD4!^$Fh2xk!rTLKbU8CmGAm&drHNkEPv=ks4e{PxliYH3y%xXisSuj_Vpvcic zIoX65*HJ2W__L03FcKCM1rp#}lgf`6HEM5J!qv=IT2Erv zZ`~>ki3BK9WI)`$eK&l32DdnFvoEUPJ{hK3%i_<3d`5qUcJ=PV++3_mzO;2vp%nE{ z7&!1mSXd1)J9x3v$GSR({7h^PZeyA8hU>Jo7XvyW>G2N;5Y$0))7HxjbN@<99*m4f zRt>=n#cdJ6+p+7(Dz~R+)^|hqR9RY@eB;Jv@L86|>BBPN zWU46q?z4VsC6*_4_V#;BOzI#zUc>Bx-HSlI%E4tM8s|Rcz|$2ov7%m zm5+3~cU=ky4;b^~*J7athe$k(r4x86VIS<%ykXfU&V^m^6TkHOuZX+j*~qn1rpw5X z0qk*zQvZY3%f_D~`8}<^ThH-}Wm(*XQEJyjK%0CnQ)=B@kg`TGqx4Tvylg zsZz#Mc01w}AY#J%dQn)7II%Ir94TSJeaFHQPov)#JW_8j!;=Zcw<3tGe{1 zp*!5=*PAwPHZaJoYtfS!tCD5U*;#OYv$Qx9l#k}TJGFTCZP)tV=l&i7$=&rxNMg6m zqe(~r1rpzF-op=4QqEUy)m1T-%BpK20ZL3vR7yIXo_WeItA-Uh$AY|m7MPE;^m63_ z^X7f8PX3EU=rJl}FwD~}<*la;FAPf`6lGQ2G`CvAxLNL~;a-bRzjT3KGra1fWdl4* zO`F07PWjrjAl$6+8(S&pi}Oyb{DYDx<6UV!)(Dc`EeJXYN3 zGK|x7)yai2ehYL{AB>-<9IkB>of&xkysoK<>du|-*pcAZ2x~Il>;rv5Zhl|cvu_zi zbIh?)i`1#J2e=lMWkespfDBw)dEVX3?HI2>K^>rp66QjkM8w^F^sH^p%lF;-b-9e}nj^2t`+6~E(#_u@s`ojXXk?t*umt=D!CN>tVG;8oV85Z-#jTv<<;OdH%f0wRU``B?y{mV-%Mqt;y z$>v>BmUO$LW!$Bwt>l*JoApjKb!iyU!BaL_`9t;WNn; z5V-)D-AT>)^KXeTBqG^DV>6;VUe-2Cg*Qu)fSPgs9)0Id2gw8#Em9?jW{&Ejf&wWQ z(e6iy;)pxqV`4N{tk_BTK@RHT4O)Yoz{27avt$-s6bz`y29d##+LH8frX8$(8sOp$ z_dw+0Wcd%O`Dy5W`}Xb)7&%C^I{*iO3f#4eH)0HWyBEx#pPiF4ScSwEbOe<|1g#ql z4R(ZlSY{vu{ckY?j=y{%+9jshx7X*(7lJ!TA4g{z@Fkd3YMQCk@9_4L`T*Q6}MXM=6Kr@{T zWdOzDBoij{&~}d0(0^+7|Ik1%ApR0JUua1JvNA9@#KS-X82ZWY+&N75ln-}o87GEV z|7lK66xJ3M3Gd*{w)Mj&(qW>QD8tq!Dugm*v{9{4h2*kA?!FVqUUj3Hf@oXL0P-ix)30MzM|14+IYM=8Vn* z%+oe*+z9066A+LLw8i@tz5D$oXC@*<=&xJ15H(zFdH>h7f71f+myAdq5_@#&v}s_d zo$2VWCYn>TPNTF4RGXOVP31d=iL>3$T=4nzV^_j8*gL?IbWO5wkwuio`-9hi{a zEd4+xOcVPc6`@DL*Y}a*)FFMa*x0pwyNYNVZZ&XFm7jdOIa`wp{s4-re}C`Z5_CQ! zGSI%H)JTQ#1@b|=iU<}t7iAmjS7{ghJGSd6By}Dj!xhL%m25hD?qbG;XBq|gM+j1O ziv*-B@+MI!cE2I0E1e)<-wpcof{?uqgqX`+Bw z5Lcnu1|um@hvk8O_<#UTVFkidN;Qe^vgDI1-0)F4dJdpPOk7>)G8tyG6F<>`*5#8V{O~?nj zIfk5EPVW*aM<;hwREms4d?#Zufv+M^&Kj{Vt9#G#%lY#kWNCCpbUoty@QqbzWLIaK z?~f;6%pXp13)exmT0GT73_yTMRj1XBjE&Vrg)R;13N?>WnbJ?63m{Yb15!od!DJxpR;TGq^G~ zE;mR&F0w=wp{$5)EGmF{x2jrHo;XKl#_Q~_zB*}4Z25S^QMHM|!DFSQsmlLhL%DV# zwHRqfw@KFEnR>uEnUh0g70yDpHtAH96^ev76!iTo;hB^R+9Y1?T5IVti;4O8?%hF{ zE+;1^6*rPo(#H00O&XKMV*9tYw$`uhn8t|V4f0|+V(;=Rpw!bBnouM zP@0no%7bl5bhANfk9q^TA}Hk2CBo;iyE9~EH*MZL$;H^zbnfH1zpn6k58upcvv#NI zRbIG|WS0YV$l$@2lq2@t7XLT+&)Fo#a?=^S0_g@8jrX2Xl(V>W;xA|Hi#76O@adB}V#~eOzCZ9H+ zf$)RMD=RP0g16bZvmk3+LHtt)Nz|n8>gr%kljeVd^M}>TJeo>b%3uP2EMQyFBTFa;rBk<~@y=tkNS{)}mUlYdI+wcU+K{Ohq4LZ8IkFv7* z9#>JE`jUap|Hzu5Ca7jb2OE$qEru2|n@SDzy0sKL>2__Ff_yfXxGt$N4;tn~ya$gU5{dMP^1iD;Sv3_ht6( z=aVN5y2E?)n;IZA+y>OjUV)=Rg$>^_`PUmr!&sg86JpyMy9wt4tS9>g4H|`c)9~6XkWv`WS zakURS!eih_oC0J$<5fv(rBYb>lZqWYthWpBjFw@`?_yOb32WXM=*$0Cr)8UY3{RJ!DFt zeKk#EoY)Zl|DHX!6m+$u#nbFsc5&vkBES5EEmb|uGUwhY-L$qB*3nmc&51>h3kdaq zHRAHlf9goe>N-&UAP`LsOHTG_Q>Fm8o~qLIk`fcW78Mn+^nv;Pf2+Gn%^u5ta~itJcRt-d-=e{U%q@e(X-35H4Ya~^gMD$IdyRPtf~dube|s3nZDV*?tGK% znT-AyWCplClunXuM*|MhE;L!u1GH=R?u&{CPl>5q%#(>%T)1uR<5v5Hm(Q5oy)ewQ zr$S&wS#-k!2~AUZao2|?+TS!RRuisCg?W`FCK!fIV;y>T1vT%xW%@8R!2T06YQ>b#R9>#fql z&fGV@QW+Q%Wh4?JFMz^A|23Lkr@1>Pns`||57aPNc=4MYtW%Kft%7A;Ri(u_Q9)yB zEBcm4kk!!_M$?Iv(aq`aFF7|XnB6TX#%ALjTd(tNIvN9V^~Da0G)%WF}wdux{-VIwwY>Tcm47KdTtS4Uaio zjM6_X)z+RPl0V*Re-~r=GN@R;d@=L9qi-%7o9f;zDD0MR)@eT&j-fLZD zFnpFR<}XJ{-xHDD5x0dSRDXr$u_bHs9;zQ1Xt*#obm_R)QxBxnD+G%A z8%9QT>p8pVXULf&)^-EW^%F@DS|4)iul5Yg-Ms$o^Wx?oj!SL)L@UQ!M0HvtBXfXG zFTdcx@!RZOzl-sKhCTVfoS#>@ohvYp&!1|4>;9W;%N3Uz%i1TM79BXfP3%R>s6Fp( z^;g&pP`j&Ys zw}f)r_L$oB?|S6Sr8`Hv)-8OsV{n(2r4GNl9P@9>59NC|_;SakU(Z$-v5*o!S>H0* zMMWw-bY1?-@ay4jskgrETQh!;SIJuKyt?chnW@>RzU+gW$7;%p&62#dx8I12r@j8% zwC{Y8acG6_l^4W&Ad(4P`|{-!GcnQ8$Jg|cuDPVrz>=b_JeiiS3A{<`zJ;>X zsVWHJ2aKP+rd4j4^aDH9y!-8vwbl0D4Y#ZP^BZDw7jD&ZANj987NO+5)7O6Q{R>8~ zH-^=P>>m2GVa31&kC)tQ-Li1*Hhx(r?{9wD>&4t|J(oNp;i?zAu)9@mVMlA%E=5JH zpPiRJZC$cZd6(F%g=+>593e8&C2L$4E71XF`7=aE7|+b;m(aIsPmv{x$sh64|MR-{ z^Z!`%_|I?tpHN5s?_U(|!2eV{`hWB7$+ofSB4U3M2iuP`1jM9O7kx~HL3ig$X8`*A zik<&_o=E)xqUJyUe@>U)c+?56?Cvb@Kd*6v1)xQEIj{aBlNJ8&|Nh1QMQ_jB)Kua5 z28~0jM{d-b=<8dITb`f?tvKH9M6<+MdWm-J`X;!|l#3&kgxjk7^rXr!#?X)b)D73KF@O;CE`{7RuJJIy(I%B8e(|>n5 zm|k3D`*|D%Bu4yz{_E##Y3SOuEA2EWh|0>klfRSJ9;$oS($;|jjRx({6}x(&3Lhsx zmd=$A$*A~C6m`O!?%qN#?nD;^d3(!mLVdcEiQLJCI$T1Zcqah7t}7j}f!SQ;6daeD9ufz?N62M^#08 z_v<&`{cmX>iMLi}q2Qevj#476h_cvoaL5m2J)L*}S3q&v>Zp?OMybTID6 zVoexvf^4QRLvUUPTB3~^v0VJAQ%`6fG4A!68VVOss00(zbOe1sG)|vicaaJw4ZCv1 zm`)F7f}>&h4H$8^t#-7E8!5a&14R!AH$Lr^zPk; z`Tz@#ataD8lv4$GwdgWf=i8PxTxrP9!QUW>jf!Us>4OrHE`C@n9Mc6p6PyDP=l#OM z1Bf_Xy#IQ5f^Ph+(&E^n{{S~d&&}FJBc48a&H0R)W>G0%7-23GT4FjMv)}B46?6cc zBG+e0dbSON+?VxjTKI7ZL374^LGbu-4!g?gIS-f_ab7Gw5HY|P>`6%M85)7!2=5WW zI3GE_i#L@@YI1Uq?%i!29B31#%wL2}F-s331;@$rv{Qj<(DDXkQ&U|Hu|vfU>kbbG z37iHr%+&=iu-wIh1vkvk_ZB-N$YLmTrCeyARhapbt%s>&GebFk{Y09O=hRvA>CT)tyLYAK z6#o+T=*=zHSx6&Bj_i+mAVx6!VKw4nLEX)A1-A?D7EY(6&>D=`l`c3mag@jPe?${Cs%QnliJA0p zZ;lTKvHQuIj4${L^tOZPA_fjkiHHQ+L0qQ)Gz$vIttIwxM8(q4HhXr#f~S3@FlL#l zV;7&;MI`?P!^=(9emcVS605 zhD_H1fo5j5FhdFS3L}A^7k{@&dZdm*~m#d5cv@ViS|)sqbXpl$&P;R!`IHZjnwyibhL@~ zToDn2zKm4cmzdlT8TgSoDDYIs`mtsq7>5I8Cs)p?Zlr5SixJDwzAngyVqehxd&*?U@-(yYoBDzjLvUyZ)IVtUn?G?8 zLstXV?)T~oO7sD|dqv7YPIMytyipzyP%)}ur=#TP74; zQw~sTRGH`k9O4rb-^}eIa&Lk#!%_Q~>fDW65iN5skXRa_3@5NUF`KBfW^w1TkGgT& zGf|(qhygb#jPhXHoZeuEBxbtn6alzH-zNNMngV9rSqqjt+51Lyw_tY+jKz&02D`Pj_-g(8*fQ^B0*rM8JUX0J~i}Ngk zuRnS7XtaeRcR3iBf4izMAQF70)kFv3v4)@ZUGyz%7xE!t@spY?z>e+M{aFxzC~vCP z*~R;5M!lFp!((z?uweJK7>kr$rlwv4nYw1PeJDd-#i1H_zz9P}t=O4bVW_J+N?e@X zUsNw7A>dqV>Ut-I)7r3YmT_WP&eZE9Adq>$XwOD7+=D-T`0$|~PGmVBi=zY6)6-k5 zeI6Ul3BW7n-BL_zd1L*6m=E*KcJ7P_^WSCKO(f*KFg}&n*?Uv-h5r?qC_E2dtH%B7 zAC@pkjMtPS|2V6z{nu!=knYSU;DhWib2?>rRF4?CHOpBs&r&pioH^okggt>{M#^UPbsycGCzOYoPY$~ z=#F6%)7K@Z#zgr(?KWrhmgvolSFEWCD=>a#P%<%JQ*mTd_n7)iP2HW>b3c^b9vfYY zjr|Ue-rW2~V^19)%wpy9OG>n3OHxxW3@gxl!~ zmX7>r6u0GX)iBM=EiEmUHnO=PLAIi0z4hO`;RB8eAD{xGCN_TDxO)}HU;l1-s+BP} zYJI@&!{dW>&OQ0DT*P*OYWFVt7KasN+f2}!uy{aQ0e^q8*QKC)L&v_<6q&+6>wCF) zD`#$hQ+}-%9)LJ+jGeRA&AK|yc=EpEYKenIrta9@PsHYCc@z9RFH`hu*e z!MT2~V&;$-u_^5x98zt@XeTB36x+@03@vS{)mF2%m;I=wWK!XonOh|`#-j^`=_Jd_*y+txHFTKs${nFgL-)5-! zCIf?}kK&5n=nu=)WDUnOy=_$GDJh2riL90AGQzpsKX(`Ne-D1jGfC8~vaRtz4S;o> z^u&q3nk<~S=}iu&NCXh`?E`IZa(J0j{pY#o?n?4_@u9IP{NR@fow(YYDU=I6hcgVy zJ{V?o`@YG(cY@D=IX4zqr&eV8K`=B`rllS;z0+^6#bl9tv!q1!0`ev3nlo=B!Y=)p ze!##x^g@CnKP7#nm4cE-h{|w{3-J51p8n!%Z1R{@Q7?GD7N2TkH>p`_D<#i)W_ipY zVBqw{+fyq(+P-c#)LN#Ltj`bi&JXP1Fk>JO{d?FoHFLI-iVsz}y~x!XcV_{)pSx?d z(z#ayUX^Q#yx#M3nT+#{j6I3g4W;(fQQ|7fOn8CHMSK82Uq{=6j7_vod@TWQ^{Q36 zH;q=p_K00VfN}M5Fj_=jx)`Z^5V32#dbzWysEif6e^}A`l?w3e)BN{Ok|oKb=z0h7#E9D+Ui4wI`8dNJrJgR5*} zO2|RAgVCWuR_Av)J-*Z47)8Zm$ShcxeV%U`#rNgN$R~9;i9P%{qs``{`DBrOLp!5~ zEYU7_k$$7ny4-w{PXhy2+8NC-RcSYUM}wFvz{R+pI6;N4ed5o2gjlCv@9Cdn1awHr zd%>=hbqW8VRm4?=M& zeY_p!QzdghvPfc~y&Rb+tj;F|b!BP5l_#YlJ0 z|C6~0f*6+(l=0Z~GZ^BqjbDcn$H#XLpS7OTS{(GwkN&Va>ILK?vx2`;$&r?9p}Q4| zh2vf8;sQ%mQK7XYYc9;YkdxS;l;Cv$bpG@}fnz;-)J2S}L`(&JKwl|xxk(OY!0#?% zlvmareoAh(qIGR)vK51W^ucDnuN0yHjPnCOo;%jH=KzT-nuVz;2Bn9bqc@xK?Z+ar zp$wAMzr9v;HiZIdpYAR|;JJL~q|?7d48BJR-CUHLofNYJN6cal;a-*n0u0?~oZI9u zHpM{0&+bK5mfB^eYUMeNB^^T)J7UnF{iKTX3?8c1mg9?)h$@!2N}ymEpMPMb&W?}2 z{5gD*^}%8)AmeCbDk>}-)kJ6(?c0~kx&)vBX09o+tKM>@28rCxGXN5_oa^%*BpxXU zF!(dZ=q>*Ca>vIRw?>|FTrHwJEZte;_8M(TQJPGJ76!Jg3E8God(lM~F}mx9s;p+v zAsv1EkOGDvNrvL-7)Zb$=KhWx$n={rx^fjaZ9}`Am`328hn-)XzERF#Ta_F8OG=eW z5pxLAr$K|_$a+h2>deUEWAC*!DtI(3=tzCH4!!r7#PC7F>3jH55gWDy69>7KOm0;>P^$%OFu4ht@Wa)8C((cfIRA`2yS57rnbodB9wk z)sfE5&YFuXG%TGB0!F_&`(jTtJxTENVg7p(b!l{Y+hK@hF|Ye}8u8GBv_dL3P7+c| z`?N}fiOEqx2{92rf8COke0k2HtIfd#AK&>^pOPkO&yu{|Fmq(`tvl)IPGMT1*ayy< z_4$BT)zUu!6N~-5HBC+CiMpxnS5`!C9xX0jnBcQH>V-o4_D0N19y696wf2`Qu_qJ) zbN3{s#DzzN1?hh^o*Wb_yse92k=A|7!r1ci-q^WwE*r+~*4Z(z1o3#u`wG2oO&Ki( zny>q48BZ1&qQ>*n#5;?DI6(mp2A-MQ8N0W}LcRR4@#L|dBs%}30JS3B_RaNqjETv% zStDKWIC#0>n<1B)h2B!JLwuCq(qgZL~fif$MF4bZ@0Iwu%N?d=FAgUthh0_8!-wH zL(YYE;p3Y!(nye2Xq!wH*|>~r*7;!VKp1*#RLG-@-pt$D*)_jQtiiI5xq^Sv&KG-L zy#LCrSz}@P!GwGJw~+P~koL)t_KjUt`HZ9ciN!`CF`d}r{In;+ME?KH0!_tULQdJp zh4%Tk9D7zD20??i{(mS5|6ibv`2WKtu**bj`^0DJR&BfKA3ZGUMMWYDEumY`=BSq9 z_V)U;gSs{)U2VJnQyV$|eDQo_?k@LO!^=e`@}oRbb0{8-dyy}1k1GzGURkNQ%=sce zeB~w5&+SR0;!KZ6c_rl)$9YRD(H&`}yOMhK>Tx?&>|U;aw|*~pua)V5*NwGx@0%hD zo&7x6KR>;`x!93{_Ef&H+^dg+PEGiKu*$uC z0854aHob+NsxJ(P=k?!~(Z-CUrs1coVpE8FT&Wq(p_ps#w~=aUAOk{SdeBCga-W-@ zoGKEMlarVCn=y$-?IhXA#cwl`i(Y~9@6%`A`K*HAj;`d+ZwsfB0$wg^AhoGD@Qs8| zXl#UhV3g8YHHqI??;mhn? zNuUIZOA_Fc_g}%miyN#2S_Xekj$B}svX6BXg-wT7|E z9Spihy|_l{u)tIKY{g!S@6QTVhl1t+EH$0cvfS@S+s-@EO7l4ZXo4s}28oG{Q)>Vf zNAUax$dZQkyEm>M1g~7lRTo z+e(GBz}3_}Q?Nb37Mz~4zET*HoIibfHu(xK5Jmcx0{5mg2ql0-9n=uG%|B+>G$NQ@ z6-lkQOZGs%TKxPuEkj6&_|mx;gcKB!PSfwbfayzr#+<4EDfkx-A4+jdeQRM6RyW0wQoi<{{UArRhjKf5lDshg@ zNRLM-$H4SoGNCI8gP2CQebkYH`L)KXRq%6>nn7gN#Q=E>Ow_;mx2iy=FsGGILz{z8 z3?236U|~u+nIsrq6{Qh;$=1#7lfJa%dD)+5$|g| zrfQ#GKCR?QsX&~~2^j16`95jx0tJAHs(lapb5}ddt2%vygFC@~fG42w8)PI;Xw0%WiAcpt67;JGskaP5(puqJKdMZGSWjenE|YC zK?Kj1#@@PRO>Ysq17YR7SNk49XbG2|Tzy(V-&Rv}M#aX063+@)E$~y|u5XvJINH(R z(LR7vqZ|Xf@lpn;$Q>q(Fb9U!yj(PK@?@d5U`7X<(4t+AL}E?=PK%|mL}$;EI|)W3 zDE`t6ov108?}!AO;zmhwgQ!qsfR*FzduH#X4wni}R`6|$MRA8@5>A|qKZ zH*osEiHV>>J^e#X@{n{(8_4mQpdi7J5{F=M@h?;}pGxDi+RP1sRaswH@iDL0V8x0| zFyNUwsuQR_ggNu{IATwJTuiu3qSf0N@-`SwoHgc*AHN;a?pZ8eqgtz0o$=zE71eSJNm zOswSr*-_~}h%0HUmiwv0-GjePt}GIEdq91co@GYx4gz(^Vnwj|BC5o>OE=WyNTT0W z!fD{cy!cD@gqs7+fwcwSA9jGm!W3?=Zuw~}x$wL#}x9{l1hwrq+5X_bFXkVnM zu0Eehc94Z1QWo!f?JTBpcy)|vLyG*1RX)ZIy7C8b-H}?pXV0}#GqnF61;!Hcd(KXH zq&MA{E>8j)Ej5uPZ&N?rWj}G={oMIL7|E!Ot%pg`q&oSO3o|t*K)fOwoL6C0w9|m3 zz*%$Iz*+f|pqANJLC8>io|NLt^026G$Z z6v@Rr>!S5&L0iBmk4M}#AsBW(dUMG)MsGv3+)3Y-tBs|J?_W;Tez|8edIyj? zaJaW#(KE}Q*VnGj_1ti7kUgv0P%U_qVzI{r8=w zTjjKN)2JhrI{OooDLFxNl4J2%W7yM8<*Y3qBQ1&+Y`SHrT6FZ`g9j3NZ)XQ}Gt`K3 zl-GzYQTh!_NGDkc5XhPf^P7oX2ks=iSM$+L*}LXq!*(CziARLN?A9}dl)z4LFVk5h z@`&;jwH}7XN##*dQLy?K=E1rm8^)6Q$y|k$`5qFB59?npN_?K&pKR8ev21G&Gj@;9 zfj!N!;y35P6?1m8!Vv2GXm8(>Sf&PJ-8RvWk>!<_RIPnhJqsuesM!0vKFo_=HcsAA zbcaev2-BW@RUf6OM_w1k(^~gc%HCF6Q!|$ia?}>XhYlU1Z2Osfiqh6|J(Q)<`t`zW zOnMBNm$;Z=D$HYy0r4dT0?htND;XRjtDOHf(AJ*pgQV1RLw5S`+v~YsSU*UN+|s$= z-U9I?{A&u4j|kU+vvrW>a7oFk!nr%2`CX{%mUN&(zo0#F&+^!k9Kk@!Tp@6W@|_*$ zQ?9QW@W?u{z?h!}jSd#8#<2_qy~l~5q_?!(5QJvjm0^oM%MvpVS+nTJ>tlrDdv?dC zF0j^)yonLO2oKfNim?*H%WT#Nfzc+*EcRkr!u6sC&ds;=VK}s#d<$UH6Un5c{^E#X zv5xXk^;~M+H+k4ba-7ePBmQZ>kY0WJ(A?5O)8{>?-rciC&?#h8vXwkYH4L|e zU^$aB`VX&i#}g7Ziq7UdMDlU${x-Q$J9kHZct|hGLRMhdPkWN}8NP2;f7_>+ce*m& zDSb!kH0F)H*YdX9iJv+xCxVda!^K%fy{=w(Kh4YTZT6t7O5d13cir^O9>NUJE7LD8 zfl+vzelA-BlQdf2>0Ny1Kd$Mzpj+Cx({q0MWXwZ(P*t_H^6)OmWd4*BVH8UMdoRMBO?#^eWQ}Ut`86J- zZ^R}N(~*o1E}Dda2pw9mKlZN9)!_%{y(X)&YK!cf$ z#?})jPDEpJzcSW2l)tn$7HNQ@!=!0yXs97_vfbLr!mC{ioe#q-${4&>9w=*|V!QU;?5=*a>*p*HMa!pX=CF>yfL* zQRh&9CqYAND~VQ#<17JZU>A_y2?CRvRJ=ix&<)qHpY7l#KtdI z6ReX22{(?rz{`rf00Yc6MupkzgH6|1SfN<*P>n-U>Hg+G041_qs@$$!vxn*E2w~>R z4J9$^xa8ys`ubHByMu_-6}2|^*AMx0=jGGWZPI^F`1m2fmTNmKA3&@{dPZa>eT#;{ zG7=NVU2dBcN_r$!>@~-xb?YjXx_Wx0cSHO~fa=g_G$%?5D#=i(zv78Z45az4yqSU} zAw+^g>2sNNCMa>R3{_oljJg$w2URqM2@W;D6d~unc4$?-$@jI+P^Zzug+&ot+Ov6b-3nryMYws_24ei$sc&6bO3PO#$KrhBne4in z2JkstuM4=XcV&SLe)2@(ey=j;o^Ud+&0Zc2wFCxf<_6{BO=IGHF*FLfVMA%-2y<)Rj zd~qf1(BXVifCUQ|_UHOq>kw4;{HnFT=26ZtBbStdf>4O?Dz8S8U?4;utYdoCRB+Kp zl@nt8LWAkotT|aNu82y2X1l};aZX@tx!2JUul8@?F-|%_MJI|n&lq`QrO!M=HoI00 z6^(7)`!kEk=HMEGHYdO7cJqj=Zr6t2x=13Rd@(l~uO}&}(3hv$P&=x>A&zlXzW8U@ zYwYy@5ceQTZM>$Q#oa)YidBM>YfAL0;i(VRqlPX+n+$t}&V12G?JTKrPlRbo+9iW^ zF>OY=`%j)cNmiqGAvL#m(~&A)(?I{S7h~k9l*ph})&|T6 zK`|IX|KA1ks(500dcFf64li>ufkYT5tQW{;5EL{?;gR~BZ8AE+Zo0BwC;h-QC|& zjJY%BX>cFjN}2tReb69mB;^%W$|Io353|9|s_(ql{fJGNuaiznQ=<`o*Kq(}x&8`a@>f0rkSQz4vCXn$XRwnx2 zy_#pweuR~Wmn~MAKKv~3M|AbKy_)D(+9Rd^{~{LHkSD(bL~adcj=TndmnW{3(1(a$ zZCD z-&_iudGU+8mWSuTqv3p}I&giDcqmUgd(-w@&Rp*KmDKhtm6r0nmHlTkzSPOvOInQ4 zx7EB76NlizB7YXpT>>IIOUoA(QCGo|VPP|>9Zuc5yzRjS(3f7oj71kyFe;r>4Ux!$ zrL&C|_RHn*)au;W#!S|}_x}5eKl6xaD3O`F8B&tCQe8#%MT7h*4R~O85F2X*C=J{L zBm>zkEnH<|n!_5<|6@&^XOCYyjalN$@g`VVakfIgL}g%a zd6kF80u6Pdtlt8r+V5byWztif_QO_W&D@_=RBP152{GgQXCy!Vw~24TKl$Ag3(r@} z-d-B`tf}#XiQ6a#QbyPwZq0q~fz27-iS*7k9{9DGtVRq=SH?&uW42btYe;HG!=-OK z`wJ-{gTt@Cxwyyzrl{dN)R_uE9K$DZ$VmW&z3@X#SatpboP zf-mDy^&Naa$zSyg(7BXamNNaY^_)7HRprhzk~}PfY#6{vgv;Hbz@u^HFCGOm*xuF0S)!Hs3S)_0T)uwz5)mn1NVINdlHG+WMKAGezwp5o`?h%+ChsI zpBD1#(7GKWu()+~qn@{wG3?~AX!mi0t*u+;*A)Vd=RgBq`1|VByE_WoC@?)zxmN<~ z146Tlu;|9(+3Zoh08H)Er#?lE;Ty7RWLDsN;0O-s8~4eEJvl37iY~h;Rgw6lykOn3 zkEx(brBbG=H#-tg;#b|D^x;WeGAQ=&LB*m8KW+fG4rAPc)6Y&wbb(Is!O>;tK~w7(f4XBZ}#1*ja>~)Vu&JYZK1^V`~L!L&?$axM*bt8L9do#xqkb+L}zu! zbV3Pi?9u)-pjDNAXrS2ghjC&JR;^gOJZq`f Gmwy4A@})We literal 0 HcmV?d00001 diff --git a/web/screenshots/chat_page_after_create.png b/web/screenshots/chat_page_after_create.png new file mode 100644 index 0000000000000000000000000000000000000000..e5584f77a87eb6dccb07e658abd22d4038df988d GIT binary patch literal 28555 zcmeFZc{r7C8#cN$C>0t=O8hj6P-GrcD9Mm9V}mG!%rg}dNhPU_k$Ehc$C5cILoyGU z=XqxB^XYxRz4x)dJ$(Dv$MNmyUH_z7Yk8jgzV7Qf&+|I3=dqH4EcLei+ejo5^~DS4 zuaHQa@#BUcTQ}ejNftQ@{6S%LMOKQG@||gjMEZwx@%&j;`;gIgJLiDDb@CKP6tC`& z4V=l6Z?@50m8H{;Fr{TX=jF||p-P>JsoPy`D#BjL%ZI1e`%uNp6YK{lnz!xsc|hNN z%JkCxy3k`eZf-hZD?#SMw=dOsbfgZjgqMek*p2H%v(|_-W!o60U&Zeyk(8Q;+S~vB zL}K4Sv5)vEf@;$>;!pQuJKc$kB)yd+Q4)XN{;%G!&wOE%dSYb#khSo;dZAcp;$5WV zkDAGb>7_R^noTq7m{OZY{3r{uvVPt^)i!-CwAqx)t)5PLb@Jhuj91~!{K>ha8#fZ4 zs^UB@(5Z9nMCZ+df+y>);zwCj!bnMMZqmBa%GMgG{R$zyELT;Q29A{0D#mg*z8>~F zAYj&!zx0U3b*I#8`IuLn+S^zkJb3V>q$DaTO2l?_A03_QFZI7SFs{=qw6yt^WsH7h z_3blDK`-xDGr4a!{SwJ0?%3R%I7la*K6)s ziS@Gwb!+ar!-*tBI=jQEuRTI_6_!T#A;c4SHYtuZ|@nuP!`JaWv)4wnKA&%T*p1bmW zxsf4!bZr~!x6QA1_iqdmB5iRRSyxvZT~ax{mY?4m7sjb4YTCL%%)fE!|;Q0bcWr+)#Nmb9S`(AKPewkZ66Row9;Pslh z-IPPar_7J6#gJ=l`0e#n@kZK;v81FV?!v{M5?YCu0&a`lk7|MiB&I74&zHx>#Ds}C z&10o2Dk~p*d*5z|Q+`NEJxZHx*;h67r@U|eA+0#}(|UDr>izp8>CJ8V4l`JNCnqNc zv$8-AjTZp{Zsaw);2QN>3>%^%q|rOs^HUvTx{IpU-O2b4peS6`t<@ zaI^f_<+n$&G?KOEnvKF;*5;aqKOYMis^%_A(#}fB9T;v*G|!(ZOVQ0^QfQ5m^~Z&) z#b1%$dfL20G{Y|UPJN8Bva*zSettf_Dj`~0t-hN7HZqY}1`*{iYODb^KG# zEvuDZNZ+~_JKg3zyM5@#=Z#X{wqqi=kcV4nUapAVqA3e58vio(`i2M#2Pua>j8y*yC<^kBLh7vBQ2n4@a@QrAOTtiWn$GG40%P;G;lMwZ9dD z{aa>oCl#xgsE}$qSNO*r_cNPK^X!HTSJVv*2G2=J34hfXI}o!NOjjDCQ*_LAO>ML} z^`y4(qGP&EUr?lRW9!fsGo%%S(UGiM=64MYdKahu-~caF2XWU13n=QbW$WhIh6>xf zcobhQvN)WWx}V?lb#U;?e5-k4l&{ z=5hM;>0<#WL_}KGSrH~5+#*@rRzDyK7^W}%cz4cHajYfdR+VmnV@BJa{rhuolx`E6 zu-RVP_+DH$ECAj?~J{_)BR({=f3jFc`WyN-#@+T$yyo4jdJa8f`fx!y!hy{ zVr%0soY36yjP;xW_lNNC&WN)Q8%WOm-xzbQlT-Pv`oAS=q-Nq2o3-b%I8WYRbJ#(7 z4*M-|x8;b4p?O<&_rwGlclDbk-Hq(Z`W0c4Fh2AvIasIpl1pxOwxG0f!_OA{(w1DC zMA6u0Q(MhYle+g86%>m+E5kYt)u*meq?i!^Kxvc5YqNb+(L z;5GdAto3foCq^EF3wgF<4Zf$4i1jG1v3{)#IDU)a)3;9yTsneo>&|j=a>m99!V20Q zM?C~xmOteh{i{NAe~f3~*88OY_L8kgP`^?BL7HkEdW9m~oBM(1uB;xv3tfUgU&~It ze1P@q8m;Il@*juROfwr7(q5^3J9ygIeGaXzm8Ku|JRun(bkk|z;H5ml5(&Lsln-yD zKmMpg8Gm73MXk@hyP=^0*|2h{INGQ)R?8q@xFLRKs+>hJRJf5E;v z5lxJKG7eK6NcaE_RX;}38mye1^Y^5m!0(}!%z8aYb)YnGoLyxXVs@RD998wUr6 zgoMP26GLAg?;%!fB0)LIYc%9caENy`zHzw&L=!%HCdsxi0>@Efv(<+^KsxwJO58fmO@P%BnJA zczJkao-(~b@!7w>CFyGV)pSEt=k|VomHqRfxzUW1@&xdA&wJ*|H{PW0R{8DQ6F-yK z7=2a`y;Sq2!jh+BtqP%{&7YoZKOT6T#NiW3UOq5YdE@!L65)uVl(CI+iRyjhE1cJL zxF|yMk*nW+zR>~JER!Y$v#;glty`*#*2c_{Zij15-z*cI`NnIx(ify3#%rX2#O}`` z!KGsD=(wzF*RFPYC<~uQJYM-Y!S$EIX#5zN%ZyAp`pKzDf%Uv|xdP3Kh|T!Nn=6^R zB3TTK?sKJz)tt4?x}iJeH2F$RGjuN3h)fnl%Xudo)>wwbZo;W;&38!GIWIR{AM2l6 zfT~g}LDq@U52&;jQEbSwo4^vs3HTorF${M_Ha`2PdImtFbltEu^X@_ZBQ~q)v%tax ztQf8Vyc_Q<(jTig`<>PuryONA5X%s6B80H%hon7NnX?k3g=r)(hX}~h?N*uWw}L^cv}Qi9=RF&bFqnb zd|)8Upz;Mhhx$p~T-DG*4#kclH}d_BTZEk*b}}$5lrreYm8+)e>6)R?sEXwDMUHNCa$;OtbN0#05~a}msFU+Tcp)mnb>jvtzJj&V@W0Ga>s4rg z{tpd58ME=7)$XYN zhla?dF1tSxVCz0I$EQeFG`h!jK2e<8@44OdiXsw6gP zZN08Sr~A$`hS+}6q-0h`LqOOd!7NGH=LE@8BE(N5`+qi^BL1W;wZ0_C@Rzx}Kf1B` zZ9DArg_zCY8QXcvxdtGQhl( zrInT4=x=6Txv|O}EN1^Jg4sx4o)Nmfmu^O_@Ep%BCUtjz~ zE3ukZ;<~`Mt@z;MqRkduSgGQ>Oya+iG(X&!A8iJ=vD5eMG64T{>-J<|b{ajs68aVQ zl9#saOo-yaVVUSF@ug~y?nGX^c+p>UxMkekn)L2Ue8cX9_v1^w0g8@u!*i|XML8?fJ5pYRgydUvfARMAMurf~ zXFifubSz#qpxp<^$U(3*|?GIsb1>9pQ9n()&G31#PK

fwmYiU|YdGwLN(>VDZJbZ6w|T*wdUw;~5)Kc!=qruBy*Vq%+XJ^y>{IBcvXYKd zO^8*Sb4(i!135W8eKozqWubj=a1cyOBwyi(qJ8O=c-7i?cdOHz_J9AnU`5(ywYVvY zttwt67TC4)_yJBt0w5@0QdzQmvuraX-HEWzC%@?b=WRm zl|7K1qw74vls8^iEbP=x+>WDGAn$#nnzw!93+(njsA<&uPDvI@HF)aLOMhrKohB*T zx8wR3{=M=RRF7!6ru$)_J%>AvO}G58DYas@F;k%2 z+_Qv22?ImJ6#b%(c5~IqlaPyQD=SaGk)Linv_*=cBj!rHR?4_*lvK173HLIg^sjr# zP25{JoEpjI6FJ(JqtY?E6V=Aq-rl}@4H3B9#7H zxia00<3`6$1ot5fBurL90|?=J?(iCb2^JV9P8mw>$Hu@k5Cps4*MWC_om_`Txd z;?u9e6EDBvxrNXIP8$C4?qLaIKM?)(FPk2P;$$y^Wqaihk+GMe%`!eZ!>EDo@z|*GHx7(EVp^{ zX8z!@{+i&AMFJ;I!~-Zxc>}>gVb~pZ4_oo(%^Tp5l>rIz5+cBMysg=kpY{O1e1{YM zImc>1Axty}yCmg(Jlxr`HcTuX(wCT%?b)-Rp_%sDUb*t3#4>CLE{yLa!FTQZ++F-bk)b0xd=YD_0Mz*vjg>^6g}!$LwilSvX;MUKc@k5rd6 zx^!l-X$^L4imy*gMPK14+$*%Ap)ReA;@iH)rN&PAkoENG4=B?>DbS$9q#s>of190X1wfWY^j~@#O2@T)ezHOV2NV31b;)M$pSc1ksSiBKvuZtDX zShusvE!Fn@`IBxx)w7*}>*Upsz4x~;KNC58=n%hohmMlcB=!?0amG)eV-b6*k)q>J zonA0ic7SKF4A{|bzAALuz3x+jJgzY?vOsP?uzM4;;K0&U*3sGDlhAq$ozehwsUN-okDJMkhFjNiC22j{g1-E!2wl|M~OBbLV`$f8*@PGoR3-92}Rv@7B2& zuli`4;C8WMi(^YvW$nqNE`FZD7W2f$^^{hZS2t2N>a?A{RX}3_7}$H@txg8VsZ&Z@ zm4W+kP0$X!JUwxE`=W#Ngq`L`6H^NvkwLD6%|ny%iTwKYYeldGc{N=j*4N*^Xe1@C z;U>!3tq+7(w+#HH(eY0iHS2lby`0c!e#fgE$D+S}{Tlz{|F1_RI+tm2iiCM%J(AXvL1ip5D%iO%%9O zhX{Qy%i{9MVWuCsqkd%W?Afyj&S;5b7s^*oI&T3GH=wlYtTtb#x;@ue%7+Nz)L3;E4`*`1o3x6$jyhCqn2sM@pk;_T&U*X%cOp#Mb8Yk; z`si6$!n?Y!b1i-2E|{&04R>|y|Mn*OQqc0!lGt2>%3j}F zSn58r;VmrA7Q+oEa@v8V5pwGK7m$nmf`UuD6u-mX-q#Iv z_1xK*sG*^8{}uPXrK;!evMMy_0_7SNHi!6TYJ{^(v0kCoB?rTc3x8txuNFhC_#V6+ScC z^x&i2bnnHvo-6#poc#Q@xYKD5s0!iuF76>`Z63od>Ay80kZc(L#jSe5dFQqp9#=13I2dA0NLc}em-N!9Yoz5X!&^S zQnhCECnqgf&zqW#g3(@bE&K7~M_ZfDN?(-j5njaES-i9$*ci z{;`c|T1QvzqV?sc7SSy~U6OL#`RWD0wf70_UmObxk$1*jgV?oHRbMK^s?u5&w>cTq#xs-QXNi>V=K)!hEMTPkpkC9U4_y(WU;b3>i&DU(SJa!bL z!K3^V*Bvyf&9mWIRCIgqzFIXXt~j1FIZir==GGX03EB#U-u|thtU>w z72Lr@FXB3)IO@*Oj{uKVLhu-#2*8ME_{6JE`Wz)-xf#SU<+jMvAv;Z%IinJ`5yh zbxbcTkO!mu+gdDCL!igVhYG75(|e?#OCqt8#EKCaY)tNrvnDJL?~;QWjdgRahX5%r zoDB?Chz-X3p=$Sjtey86S&81VkJM#-^1)`3#nUTg^o%y6GqrmZML*na&7?Uftg3oR z`6raqH2f9)n@EdsPUlls8Ax5iv!JRWF|$z-jg`e8_h|k?_m5LE?Vl4TDw8EPg~X$I za#;51DAbzKMYTM)?TTx+KnEi>5WQ^$l`7>Q#-vP^U7R=5Y7ASEd^Pl4=Ekx*dDxb} zN7oPKLf^?U?}VOK_0>dT`s%^WN`lJ?SA$49NEVw3R(Xf%kjcH!Vu*mQ*PMJJ4UCK? z&_TiB6LndhMRu&OuTM`;fBZEJ@cWH?3=%?1hDj%OkyAVKiLWp38+n?W?b{dD65eHb zjO*hYvkabjkVyaX0u(>C}=sD);KaZU!RXO zlArbRa5xp-%h1hpf#mM<54V$w;5X#K;F@C_U%U-%NEELcG$HS-OO5?N9*aBM#5$hv zIoo16LxO4uOK404EN?vic~;o;_m%^1?$b;E9GRo>S6iXaxt4U?>h4BxhJV9!G_pOVzn$qW5oMs%BFdwRUYHj=sy5m#d(^u*1! zqS&)pR==53M^HK7zS!C41sSEK?T7N5eefY;5%q!pCnm&nD{Lz9y@fTn9D*VJ&q>HrR%ma zlSm;?5p{7}r46sGbpN1fJ<=^w%E|r2x_a=^@@A6iJ|d_e&tZB5*}J6*r8`RL{Y9_d`8Ce9 zaP!}vDyBALd>GyHfUCJOAaMH2cltW?J=bZ8mAYGX?~eYmtC*aS<;kB2A{pYYM1)Q{ zt1bVzSKe*6g=8T@yzlT!KB_-YB?mW??CFTVr@u6$IVH;Y4j=hItX6F)(=}SzUzfx?To%v{RFaSHz+JLleq>-astWe}h}+|L+SWV<&)hx^cqiMUXi^gXXqv zC$FnL^xUa&rJmZcKreM+nuqf3>a1g7B@8yv(#UZ3arw?OIomaQGk;!tMj^;uYpOyQ z+-UegYvPWQc1Q3l*TcoV0|O&}e$B(vr5MW_Tr+M4iBxKSL9e#rTP?SD+%EQowu*}B zsj2Cy`ClV8G+SCtecJADrG=0u!uKXNmbY>o5sZ+th)@`?C)8ZXxLqew^s2LM|HL#J zZ{K#NF;2bo_NkXc-B+7)7~eDt@TNDKUB?@@5T{Kx+u}rNd260=pd|OrrPu+@WObks zk8In+^|#M#+Po-|;fG$@cNrpA2jmp@jNPJ>`fbX8Jmt2{l%=tut=R<&$@6ncMxlG4 z!4DCKae<93O=o$=*i6s$VXhq`^>_VmOENOQ0voI)^uy!cHdYBo>?e^_<&vOST0Csa zU-b>DpQUsO&HJMJ9HfHvGljUgUK20RMYL2UBZ-1e$-o_Z^=@XxT#ZD6>zb>hC$9>FFAB!Aq@y6bo){FL4S|gsw9K4avgaCtoY|=d~XPW`oxAwXWB0 zC6PpT;$uqpQr^dei#v4~s<1CQ_{p5B+5axbVF{bau^3N5avvbFGjWJ}Xb`sL$hi)EpL%uR~>r_xOaTjP^(wO~?LZ_h%|^pVZHEGPR) zd_{M|@WyCzA2>!z!A#FWN%ER|QQiS;^d|!Gy8CoZ3>;AB`(55z-A=s=+hgQPPK{KZ z6*a(@+Y;N8xwvS5H92#H@y)myu0HPej{De%wuu35jqTJ^&!%eiWNs=&49Uo-H$IE_ zC_Y~m$N{8svgWyC!8%xY-N;fTBlLYKV*AvwBZWB;hfhktt_wzT1akHMt6i_Bc3?FckrPx^TqiqE^X zu!xAFW4kpH)oZ%B)D#rHLmwn8AFv(4f&yB1Qdl^*;xM;P_A}@yFJJcd_1P@6+o8F1 z=FlOjjyYf|CUIx`@wS}le#rb#m5zFN`}(T*qyKXBZ_TW>P8`?IIu*SAMXi2{RZ#U7 zsZ@0TK%?KhAshW10@%!l`G=L2bvW$FlP6Srj-Axb{MOwK2AG;Z?GqH#gs(+U%+Rd~ zuoGT@?0bh1Z|+wTj_6lzBq<$}iBjHrohvPS_9{?3@3msmBgnyvz`lTuh96eRMiak3 z+$3b}*AVMoo>0+gxqx7KNMOZxiA_A~PC||C$!rhwQhE39*qpMX81!|hH7m8vtg~>< zhn~ZBq9Zw`Iox&m4&b}xN^fNVR0qoyLY8ru?gdc^cbUJMLv-3<62vmhK(4rX<3_`b zIRpf3415vy+Wm3vj+X4aO>*B3QBY&yf1E%bRHTI2MQxxKUE?KeAwCXc!Y4 zyPXvV%|=;jW>I^nD^UDoqV6rv4&5w!^4QOBZe}LJ_X4oTz~9{ADy`Qx$j{lp_X-2Fe({!*BDVwY_LuL-DMrsJIlwMa7zF+6*tr-e&VQaCP)5`AvR( zvl-h&l2jRlu^?ONc3{`!uv&Y&Ph?+zU*34HfO*Hs{CTzOaEVEI7Z(?U-=Z_#(i!;r zHEccKu);8SW~YQA6>KBO48!z1&o*w_HEpXYORd0X#c2tjQv`ED3OPh<9)YA-bQK?> z&0FYj>XX5_fH1p+?hlrE488>L^-Gu6Os3Kpc@5FV#w#z9_+Fn!u51*f;%HNTIA$Gl zctXH8T$iT%q`aXsSPwT;uBRj=oy(PcOvH}s$Poj`bMSp-Y9&K<57YpwAMGp( zN0=3l-Q0SHRP1RvGp!gdHc|JvtS`WvpWJwMjAwYWPlv-mXvrhm#1*1n3rP%ShbQ|^ zAA*dy^|WR01qq2Fcp7M#MK!tP@1EM%l4YJMe&pmyd9%Sex3z9@tNtgEY$+z9BvRmR zB6&*{ig!qPudZ&e6ZrbP(O4yT;1F_;Is8{`PyPH{mWN^oU@5iit$>uKy7eAT%;>0T zGc6Nz724Je6OAmhc6iweAQ-0OE{5ZoT^FzCC})}J<~)DKLa6fp#=xui1sNHc z@2^jvGo#&i>e}ZAo3TN=rADF1LVKPca6r=#Qcs_45SQ+TjT`%>wIo)dKS``wASYpk z8lokTvjZuKd(}GT)`?;QM{@5`-zvL%QQKmkUQ`ztZA`ifJ4q<4XJ|6{gs*xYumn8}xmh^CSnyNL}=$=H}+-&!3~S!q!~@iBBin z;&W$b5$vEcH$V7&tE!T_cyVfB0m7BV4w4BkKhj9;UT^51Nq+sL_ZZK(m1kx?P^=}aH zs?B#!Pxa5r3p;_ielBx+cnIgM)+I#=iu98)dTN12)P&NWg@jDV-IcG?VC; zp6vCVvy{sXPgRVlEIJgX?MN)l=J!_Oqr_`8@+T*vhE zbfTx))YQCX)ti}`&380XjSL68Hf?zZlb5@X5Y}5@W`4d(fML~j-BPY)Zi8>%yyELO zfdS^3=VerV*0$A+839ZjSCxA$eQs;DjoWbs0BrYfH zOAMQ1sDfGe+FE2$QEFvvQ+auHQ@Qp+(Hae$334qNAt9o^jl+M&)Ho8neikQafQ;S# zhBRuwjc={RH1k=P`)Ei$$D1K3Z>{Hi^6Q0C-c}4L6(OeSE&Ch%c1!J}UVgCQ5+J5~ zWi7tET>^!A@;0H?hz3QnIV>6SHS1lx%pkRI7T}wO$zYminvVw$VdD zCm$L$>-j%re${s0;nd{2+hUCttHRwABvK2(HHxXAXfGfURFBoiDjq*}4F23|9#X3c zUG(I4?GE6okiT22>H)nQBME=d_Wk+uC!mX*jEt9K6NA3<&&<2p=prDoe|vqp|1 z$B)a(%0f~%gRKJZC2X+Ttu#OggnU!nhl;m2q^AsvSy+ zC@X$UB(35M7=?-If#x6lb_f4Q@8lk-Bgc+yW4&?nrsqx+!}ax*2`fuW*dqR^ho#6u zc<<*8_^|8RoCfPx$n8L621R5@*h5jt{>`WrF|bfe3)lF^buw0Urnn-e@-?w3zJsl zYSq8D-A5Eh)^lF7Fna+-VHI0G-HBBUA8*M>+}Q(EL0B{4a;<*FxiHZg{`&PI;h>bY z8LGS0{lybKIWz3vOn*)L+BvL7If0M642FAZ699_(dwWrujVhk8N_hh~p=XA!*ZHld zaYt=!ZSd4o9$uLnS-^@`k71ib5fnfi{$lgL2g2R-x+S)tE>Z`b-2hGLeRMSX#P)uP zAt52a>~V2y+}zxc^3X^|=iSBGnLX_df)$lrVALs?I zADjNm+5gWQi1ql-Lj7Nlhp4;*B-Pyj_~T|kl5wBVJ?tMpM*5#}7S=hNiNKe5{clgY z{dX!Y|G9?$9Ub$pen&bk=)5=yH(0N&rlzL6yu6aqv%CXylQ zg1avjSrSZ{dCm%)(&!!ZC?&>x(6cr2akOti8o)g1=SMMCV81e!<(t=Jm|p26hFaL? z>Vq)}N03Pj6tIoEqk>}$4V9v{Ps9z{1%NwTGuq>OH;}rPkgMFQ4#Tt!i*!32?w|yn z_J8~^f|GJ1%nt2;B-Rt-9UHgM=;T_T5Ega>0Xcf)_Y0TF&s)GgjFH*zZ2^S84wBL* z?uKEd2b;GOEw92y8%Y+jfAuVXxEIdL%9fXw7R-DXk@5z;-NuTlf?1trL^S$J9R*J4 zL~Dt;_EiNEl@>lJVrB~icT(*|D73&F4o*&4cj^sMGb{(t8jOsL#OgG|QGk!5F6b4x z>TbP<4;}mal985<-_oj`V+mIjrl)pG!BrsF?gj+&{IINytn4E%ulb?+0r-_H$>{8Z ze~pZdwS$_&IB~+~kcU0g8|_cG?~S$av3}(S4yrip@8RWzPb$7X#md29g4IQnY?st5 zkjKsPr&8X)0;o6A($ct4xJ9QxbEkU=|0V2V7;~+)sdZs_2*)OoKjzx=TzP603x&i!DTVE(=NlPj-r4fg>s)j2Pf+#{%wv zxLJ}W(VPP=F-~vRa~k9GEvz$M)IlV3o>8;!EGFu9lkatW_ISg<8_7Q=s02(SXI5ayetya60OKitCM zGmT#X(aZwPbHuUWy`J-+)*ureJ8^G>UWW}u)3v9sj}M9lHd{UZ3gPv+;CeF8VHBi zDQ4#lY&j0yBBseOMbM0$hpYzkOhiNkhAZBkdqji>{8;ADYa}I$ai`GwV8l6e_%Msh z>`yEO;Va}d`VNDR+C)bI+Ur2Xo;xw2Lnj3*oZQxX=*oYgURfSVU6~!i8~-+#Lj>>P zOmCrO2G5V)8L1p412$Y)S&0)3SR56}#;Ns56Q(sNPy;o=3*UHaq0wVU3V;HEnWvk% z;b&J;Qi6dJ3MpZ3kF6j3{UHkM8D}*>aTWuOb1-u%zl0hK0n8e6f(p;j9-oHY5dM!2 zz)7fdg!yIHu3gyAOF+kA&eN5O;!C}NsbJ-=VYw+HuTAu{#5Bzm2tk7{V~1p1b+fnP z`S3j6gRfafmw6j2T#_6C#_OgtQl5@64*{LqX$F^0mr^9CCDJS197MNgYTL~ zfK^X=?896%(gkdk2=o1W_Zqr=dCO-~R#ujxl`#y5(QtG601n%BJCPCVTtuxAq(!)H z6crRY3SII>&%Ii}@s&M)ek&^h){BcJo3+OyDl!At89-8vdi)tl5z`kG6vSaoM(BC& z?C$QC+A1`j1;-fH3NL_77U&iD&puakbMr^M6>C!7-eg7rvo>O^ZQ~P}s1g|};K$yi zE@ZT<+dpq02Bf^vO4mNQm-Q>m6h#nmv$M0I7>nXaz(z_ZrHYWA?yJU0Mko-88>53* z%0Ct@P&WSx)0ydgILgyZo(C zZd8m_d=gNI|ZdT$64b9nWFE3_FmuU zicI=(V@gCT(Q;7bNB-7N)hmFvmM~pFu7~qw30B(KxjDbbkFVz2PeCpJm7==>-3&68 zBd!CXY5)QWw)F|8v!dd{n^*94ZGgsBtuu$Z=VoI0qlZcBYZs19zkKV_|~tR$8P4~Hro*SM2%HN79_WFC{iVwmwo z6?y(A3-%`ivJPQghM%t?^KL8lM=#rg6(hkoEtaC`JA3LCCHVI3und`p_4ZFs52nU( zb!JQcd+F%tu!l(9xG-y^qKeG+vI!_u{=}0HR4HkARbwv)XTpe!wZk~iE!0@tO$g5| zpZpPcK^-v8@-f?x)+&L#jlOhlS2B1#0L){Lsfg>3nd&)ZaYC72EA1qJLoP z!E*$Nz6Y)y*I5-x7?yEWNU0_)2ZIsZI1X@?V;a^RzYI+L0FQxpND!vb)uGfPxgI-u zv?g3aUwj2M$RJS_H30z?eCE!J{BdR2tdaVTdtjoX1CK74tb`F5W8pX)P(NKU@_>S{ zd*4368(+P#W9RQWJSSUIKJ12@XBnnqAs>erELb5$VD0H^dG5qx81+CXa8=U zeGEs+j`}|SdHaUq-d5&4B72VCEUQ;|6)^kl6K`gWVr)%az%O~8(|3D*KK^`i$GGt6 zvvdz{bFfw2ki1HFYu9$;wY8}wm&B2@m(hFM>S|}EWLdIpMpPzp=N{K2idU}{kynbC zO=ilsY$mzC{SE!+pUrvgu3)q{@LbBxeU^<)O|sI`aMExo#wRBFK7Be~sE{pCQv)yG z)!2Gnjq8^$U)Ds{`+q+!EG^o3M#<5UJqV;J{y6iei7Fvx1<-0Q2CN{eC0yjRRW z6gO;I+f=x965lUHeE++G0$t^oFllFO|4imSCGosCNzU;8(&J5rYCM1TQ0x?Zy=#-C z%U)m4BEJoOi-KQe_xv+>oWdKwanm&kihnq<#er9o)$`iF>nBpMojKEBmbIngJnQns z;>hq~28u>SQpFR`)1-!8%N${0VJRu82ClEiN8Ab%%l}B|OC)!i3?0X%!hDZBGd%t$ zK~Cao7`Z7pdv*M5E1!S0e7|c?==G%qG3Kl_vl~TCk%gq88>ec)siPd*mR>WlR%uH>lNK;Yt()q+j z>|gNZjGV$OM~QoaOz5ZCs;mEkLG|Ouk7!)DASyb81koJQ($a#W=N4SRH5(v)RJ;de zwQR^bCOUd;xv6M;N_l~HSj~|-VPOyH+S{F^#@}PMc#?xHebZ;FWOMV8`*|zX`s;N+ zenhZUA*qw6SjZpBvvkzdGQdkv8PH=}Ow}ubztlFb{o1KTixhHvqoSks!boM%Trr;J zKtN1pWOm?75TErae>Wx!=0Y-D)l8`Fo4#oxAphOf@}_7L<;q89P3Ny%LDg#yC;Tb* z+pJKL+QRf-Zpc0=$V9`aJ_4Y3PWdGgJs%$*Jp+U9L!#dbLI=Q$d&ZMi;OCc;Rwl+s zaAAqM=Cn|!OS+Xt8qMci;fIZ6tCCo&m#6`nK!GM6tARZI^&BQWKZ7H^4Gf$ESk3zM ziOr|(_wQ`fKs@sVFVIz=`zUa))>a23^grB?*3xPL6lZ5=f5oLsdNvUrpGJG~2qyq9Pz1kD!9pGr6NApy7v{YkGC%qKp zwiE==0^+hA^kNBPEaK!m z9eK5u3<^)|CQx;zd1nWC;-za{IF!v--1@MSPr}V^?PiSuY=psUKsbzG#LC!o#I-7t zBvU5jC^peCu3zKi;xaQfb{vk6MW@+%Ak@xvrbYn#0uOSbgEYKQ#PC=HARhw?o(y`g z1yAoZe=3!h!w4c))M$)vv~yc&?PT|P5sK#+%neUYPGT?!b_7QZ;~)BFiuODvWyS!M zxiBVkX1`*H;0Hhfps1YIW{BCCBm%eDzkfeG33Egb5sQVg{q*TmGcz-Fx?4cyZsY|w zeLcN(h_uA$kn=!Y_~7xieoT4eDKGEdy(3QEf=dyosxMeMI>ZDmiQZ7aO4_JI%y#Ba z>5PozQ2s7=BKxp*5+o9h%)Y)ppGY7Vf)@Au1UXqaTRBOq|7&4BlmB-B?6p`ffGJ`c z2$2W&103o^u&%pzlOx$c7A?Y?fBcvXDq6h-vVg+bHM32MAa(VWSv@$SC zG+Pz?*dVb&Q)0f6Y#98vC3D-orP>)b;^dTfe3E)6`85O*z-4PURrzffE?o*3I6y&~ zJV@r*pj2~Lg63L!^HkaU8d3C4}97YN9-f5^}-2+zk2BhY^sXMn$_7RlX~YTo`0RTz@9{;T%x)*w`3c z>Z{>o98kbgjEE}2Dp6f+Vs1WRX(%s`?l&>K#>uG`uW7!OU*Is*BXm`8@xPHfQeEd@ zPmu9vPG+luwtnf-C6I6}b@h3i2T*9G{F-OacILIO$4aclm;ZvAKriip5VZq3N5BE+ z`CiW4K(Y3|lMv>C_b@648k754u4@QWOyu?n*H|`8O62c$7id39!~~f{q2!m%=!MBF z)(_-#r!VP|Y{b-SBpbXy$@`kE{3obc#8*F*GgsHvf{D5T$QN8$pyWlSCtBY`!XhF9 zTncN8C*P1uxm~+E7?y$Wbw1rzHZmH31qlo>6F__dGd!T&jg5`tdolUqE^!CGdX=J` zg*pAa+zd0#&0X_RRK=;36c@e#z9s+qTegQ1vTTZ)oW9Qu4-WpoXt2H0xA}QnfCKgG z#&ZE3zep<|`LjhHmHe!$+s(+>d^ARw=_%gup-^KGs>A5$tY}@-uV23~O5;AvX*s`V z!ZELts6j3{$0w5&+Fdu0o?rp}K3}sCWSah_l^=r;Bdtc^R|zxG&~MKZTYijT79XEs z@e7GCfE(yyvcG0FkxdR$my&aPm#LiJIii&bpumR*Nn|EcTcB2tukgovy6#>aJU%J? z&+H!33p8Am0xAtYHk)QmRTXH5wwu9(({6sIr514GDFHVw0B#8V!rR_78jp>R5|4Ob zc)bZO8wX35s!%4`35J>$R*N2}XuEq$b6 zq*pmBlRWh(DjJ?RT^O|_!_%yPhj3|}w~uS_B(dM5K4sAK%Zzmmj+j<$i)UvOe}2l) zZs6La#7MF4N_z7_{@_rIVvx+7KA)uwt}#nbZ=!lHL-J}67EV4ZllcH$=_^}#hDC(0 zlDEe1a%bhst9fUnavoybmI6JatkWBI{Oey!K8Im2L~{3jKd)9XDa-#m0%MXkxaL<& zOM)$ZcBx?K_kiPynHd@Jy5151nwBt|8Ec@k`D0^2%VttmKKcR>FXi6r7wCnfBE!21 z%1JJ)Dq0^Yf}li*Y3q0QLV#}=nS)xJkiQJU3#^D}xfQMC6^;1L<6(%J`ozopgC>Et z%MaSY&S;Y1veGyJ_r^h*ay}UCrp=of{mLRE z4@oNnC8I&Hlb*hBL4z(y-Q?W45`gKII2XiAFx)L>RcKPtNjprHGHltg54;oDHxEK6 zkWN-+rq`oKE5E&~`=C-Zt^A-4zmwI93o|e3Ft{!-ub0m-k?IQ}15k&1%sYm-zAcyX zRQEA4iJ}Ez64w9coEa1+^i{$djcdMt4?A^T>h|rp*U>=ug+SWS1C78OV3E#wWB0SQ zG(IUwm9Fo*$V7g38TMkChFBG9YRnvT@Q!e4rgcGu9*?jAH3GSP6%^DuHV@|q+Fpl0 zeE8rKiGIf+JgO2Zwx_2j&@sl5(Sw7GywWxX&jo66LsJu)ao^EH%G#jArGYo#rL7&T zo_P7ThfMWtkn0u(KOOIP~-LgH!i7@hW#&2QkvW zas`BaCy+B{yz!ZwdWGxPyNT8naM$kLmLN^FFjtDI>gt9D1s&(QaN|Y~IEnQ5N6nLH zz6d+c#x)w#n_EE?9^a~Q<%%VSV{>zJ(P@Mm5-j{ME9-UmoSRNY`QlLs5L3^bIRg>_ zLkVWlrSs40>FFU*W{2uwhwbR-SO+CF9}hA!HPy*73vDz`PEKB10ILGv12>j{B!E8M zj_un;oEI&ut!EK}(4fy?;u}3bUn3!=rvU#PhYt1R41|riddAAX>0w@NLwAp$fX+*n zc+6U>&5ZLaZrv}{8Ph}u2yj$?wTA(ZMzml#vu}r8yG;{VLMPmu=mBtRXC{^Z;{u`% ziuE!mNF?+-`d+vY506b#NxlYVgK`hh=1Bfc|iEanaDyDqg-^U_W&O z&-sAXg>TBMNlQx$U!RS=d-pEhG%+}cc8@w;^k3(XIeL&Va-%tm{{r5{m_1U-YJK>6 zuZ1Aw70Mm^l(e*nDRwk5b97RO2bv-$V1;TbDu7GzDd1Wt6C>07eEVxKCvWsY6Maeh zV7;or8=!#*th$l8p`jrhzv$>_Tmzoby8GRS%*@QBBvZ6=;h0C)bG+fW*J;Q_veL@L zb8?WoU~|GwVKjCeT|2x3FDxJkor$R_=HnmOt3z?QcW(-P7c_Z0*0#Y1ZI5Q%I4}BV zB6sSJJpBCQZ-7kbMy_N`t6qf>zcvi9g$I2h-P+&;AxVKr+1S{ChvLc?FhmO$0q+-@ zZF!zeg7vBx~GSSx8m2Cp4r!yL{keb_@|7#Wsk^?m^m37{N(9n zy%x#zY|G)|;>(O^+`&WW`}c*Neu_s7qA8n}c53Q2ylHR-aJwyCI_+hP9YrhhI6~Xj ze~<=l?orn>7#~1Riv9G-8XY5_NC-{CbIXvQe9ktYBMUx1uPKSAu^AfnLoWFGgE+W1 z?ZlqGM4BYBebmnoD0e8-*=g8=+iSLpg6MHS##5_HlR<>m7o=MqY~Erdg{ zD+oVyDSRUFBqXBAg0zp-+G~z^rrgec$XS@QKOf&wJ?X5141jS3KVM%b^fS(9>!R%h z0({Ew+rEV#eaJ+-yu5ijeu!2q8v{Lk>DRAlKDE!hgHKY~nIVEr&e72k0ebUh)V^E^ z=S48*o}1IU=1s{W+`5rjCXJwjqO+QXsD+whdOsEwu2QlZmoBXl4l za_S_KQ^`c^qEUn#5<{yTH&lwq6gn_YNpcv+wqZ1joEi!hks`;*$Y8$vZFjHh`~Ul{ z@A~Git_(Bp`}_T#=YF31e(ra__|k(Od#$Cp+0byglOHa%$3`u2qxz%V%uMs;>lGAs zx7v}(%FU(*2BB$+j{e?AD(EO#XCY{2t{IE!1r@au`hB!6p@O7=q(ZYewE7Ivo@vrH zIF=kB9Ed2atnp-W@copP;c5i6yjXAVNe*~jC>@jpw0W4xV|KY5bQE1nj`!00uabwcD6q=@pxKvTJfr~qJ`=e9B=+!D{J>0Oz z-mI;y4Wqof41fq2+4v)dUB7;vNTZ7v!;`IYrcXuZwom=#OH5_TGu6zuH*e|?F0i?y>xe;l{6-{;>9H- zdd_NfO}qndd9gdB!6sPKT>aOXgKg?`s!5)-U>3B zcd;(VOT3t1NFF?h{c-DtpMTz;-V~vkp<&Ru>OpC#R*&GMtE-~2vgAlU`kTnT2nUFK zW;$QuF{+i3@qzE8_Vy#<*O?LnPoL_Kkt2%@u@t5cCNP3`RwZt7+b^uR zu&{+Z?Fj_7sHiAd2-~|G_#iN4wLPD4A(4Jyp<(5ItH~8#T-SG~9msbpP)CZXANB-} zWH|EP>qZ>#oU}AYv_L_euT*uYf}9E4nvh2SPVx0aoPpSRkT8CSS*V4@HI{1E&H8?H z>maRKziu5Y|9g5I{mRNtV9U7e10br}9W`6N? zx37OQr4ZRRHz$XTL8txu32S?uf&kc@`yJ1yIg40}r@eaKZ;-vqIwk=$*krI%l zq&K=gix5WzB+Yh%mz1>95yJK?dV%7TNl9L$qydE{=0daCe}B zBn}{2$I!ano*i-_jv`|T$DEa=P-X15uxNoR98_r~ zV4S*X7+EOBMukZ|FxKSD)@x?FN~p8buU@^vZvm$uofiuQBlq*ajN}~fue7G2l|KuC zR)2s0X4}UD5V7fEiLrMf=Le)b1n7(-mEN=i3YvUi|wS3=JhF14WFC3i|uk@ z=!~JYJGEVO?MR0u?D1~i$z4l(~D`SckzNWE#c`((OR$vP(RfDGOj%gHa95= zzFUm!w~~y_C2LzQEs-Xy8^N1mNOJnHv2>4@k)ffT_jMmXxV|{3`gd$1hR|^1sqe4s zsfk%NSiX_bmD}VRFvAL9xL1sh*@}Qg=_vBB$7w-Admr?g-VJ2Y*5~!Lm}?XGjGzIV zTUzAK59Q1HYm)RTPr8?DsV1pxQcy7tnI{ky6XT6%)cx}5sz^|3lk2mvBb@iVflb`W zPsZu_waWL;YLR1W3vExw3Oyh!rVk#hM|PkkCi@RY}HBlA|Jc4EPB zxF;qiP_2XH+@3ssHSPT0UlXIGpxt#q58+I}*cg)`nC}DaVQXde>oyrw?&sZ zJ%u>*iV7;uJV4fPP65i3Vj+vl`0q)=hQE^x&;r_fnUt-CCsAOFZ`k|Bvv$>S>vsCR z+}zxf5>4bbzI?E5@jJJ^Zvq074J}JeL>G}dorS9i>i#eeEs2!*Lx_T=@wdr{|7Cld z(1hT%4$O7?ix+1A@t!v1f1o%5dDBL-Uv~Xv`ww_8YJyYo<+ci%OT60m} z?oCD5Lt7>%r=G3pT%f6@=85bTWNF|%*mj{wXgb4Few65>5h9v_MF^*O*2ZZHWqfP~ z#-iAu5fQ=y8+c!K9>GL0a&RgZ8~u=J8dcKhB!%*d;pc&R&;I3itcdMZc!QpOW=;;V z+)K5a`n)24LakFQ_G$h)CbSf2c>RQpg8Iw-{v~{;{(fhH)dCh_pn|^~iOg4Omz#XD zy3Y%$@z!9;d5^x`cha2A(WB?;eJW95;!?XC@wxQuY_8kMkg{)DpAdnSrKP{Ff)4S5 zatrVKsL`>UBuDtmkVv|yCb`r~`zut2pfeqLr>4d@m?O-JAm91x$F8oU;~9I)Xdfa- zfkW+TDoX*?rWq!BTA-xnY^0%1rE8O_zq1R)biMS$fge#;%sUhp>a>Ilf(8d!gJc zW8vGi^Htx_(8B9v(bxc-IoV zD^AD7OP8R1VBEXchY=_|7^B$P0!v{8u`<6Jq~Pk7ytg_+ymtAJLCmzxIN@V(ObB)x zrjvXJFXAdLLOj|9hKT+i?;)T=F+QeEj6*@#MsW8SZiU7HXNEeMQv?e7dR*KK z7Y{U!xsmu30DyBx2R3ba$oujK$sHrQqoEjF0vc%Kp2uSmjLe_qq1?e_+;dbZz~XtD z(%_}|5aWIHI)g$$=JNf<=LpDD=WQ~K*p7h63U?h*(ddPv$g8M$Aal~3 zDhan@Og#9#xyh2s7=5W}l3 zI0IF(3*H-|8EFk5OeT{dyx_GwDkvEI^vV5{{Q%I@W{Y%5BQ(V7VLOG1z{e<*QRh&h zj7Qs352S~7kCN^UN z-3M+8JMpZ9U|Ft{TgYSKDm@30B}>>W))~R8*Uk20f=qNa03C-zaWzDzd;acIr?O%0 z%qfrl)7cyUwojVBZVxV(&@LKInV6bN@yR8%RGp#%iEFo+b;mn>IOGF2luG)eZIz^q z%%KDCT9yVAwkx-81-6W!e4E;X9`L?>kvwl??|$|RcSpxG!KeA?%;S%u*M&WfX}1xb zV0caH?%LJOpK*Bu4ds6Gc>XX$1=Eh^%M;i>*aD5@V#M}R0Dz-_0env5M%ZA z;kcCh{8gp%&e^$AB8A1q4iM&#|9*s}EK;)Q^vRJomFPd?lkjjLWl+2-d3|;6MZ`QN z0*l7i@3tcJu0?wf&BV}BJEj+LkprKLF>9)CSDEBYpgu>-ouKtU;9^SEJuMb-Z(Ln>@9H~nx%tBput zcXXkHEGJ}ZAxXpy=)P0%`fv6`Zpb&hTMrk9|F?~+b1fv|eaP}`^*wQQ8UMV0ciz?& z+#90F;GYnuln;d06XrF*1h7|QHLR2wI$Of3LSRsL{`gRnyqRFKz*M!sw5QOG)C#sL zzhlTa6w1qwj|0`9J$7Ft3fA23$Z65g-DcC@30GCwcMQeEm}YhLKiqjl5~<965eB$D zUVL}+_df#{{xdqc*yIa-8Tt7CSba)F51h~czJPX0KuWk`DIsCei)cb3?K3hp%++`J F?O&r=4~GB% literal 0 HcmV?d00001 diff --git a/web/screenshots/create_assistant_page.png b/web/screenshots/create_assistant_page.png new file mode 100644 index 0000000000000000000000000000000000000000..7d205d4355b4de3608c99071f82b12d00d937cf2 GIT binary patch literal 52528 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 @v>1QZkWTQLiEnhJ~u4z0w){4P}I z=iKaUERwMB1M%!*0AaVwbg9L2EJ}ZgXKxJ~gE_;nT+ZCx70Pu0Lk(ZPbOlU=h5o(z zz($gr)d4u^A$;v~ehzC3;m*(rU1alnVJiatbpeL7kw z3A^j#$AoGQ&(sM~7CO4trY2id+HkeSsV#O~3faaC(=69aEH`GH;V?GK2XLpPtX%Yg z7|@rc4Pg^TCB3mMgxB~N(pe{Mhem)!;8a0j3neC`l=}P(dXaGno06YV?oIv-QmXW` z3m%I+ek3knE7s?a#13**lzB%HktLF)z35tTJ81b!iPOouUeD6g)!F+7%#P91&?Mg8 zyyrDd8{_0|AtCi|dYFXJGKMu@A{zD6=;Or2q-(-eGXyXwD0t1<8nRzEfA1$_{CY*1 z+~n7JYjQ2qKZ5LbeWI1dZeu(xkKR;~51xwB_1LOQf0hiy&Z^`vmEWdMN zprhpaIp;x}mVQOv;8|4Ed~2$AuR}<~5CEswY&6nN@56Og+G~WvrZ$gBm5;O)Z)d|s z@&e<8XZh~oD_QTI955D8gL_Ek=li`F3B+o`xKwo14G%R=bF3soed-=X2dCbK?(t`o zF4B@W(}OAOHVLokdAwptqxu&_@K`egjRyMbufH#cg3&{4+eoKgviWN(F}?@#hPE?I z(I~*c;%ZO@LPpmhOM~sm0S!eaD(Et|b1BW3%cmi=+YE&t*ngY~Ql2=dTGDVviC?Ow zG9`Pax%JkY`-r3gnh4VTW%Ml_4GjY85`I>&Iwyhvso%G03vKsTZ>6SgL{<97JC?_f zKpV*T0un3`N6kXLshE#(p1$%h&d%?TzSR5IOUOr_ z!2>KBX5D3GWE6X?V$Rwct`_-r)(#oJqs|l2Na(qDk4?-<_t>%5*o6=a-j!9k;ElSF zbmK;7I+1&)pM|k`FgjvTAzdTe*h1r>_L}1SWpra0u!9NnBkvYFgo%X?F4?l}saSVh zRFU1Vf!4^<>ptZePY(|w;TQE5E+o=3&?v{&KY7ON)PC78>){?w&cw>A$452q85F6G zZ0txq`Yq7LIET`%A2(eBGWYAHcVrD8k-9uT(e4uaoZ%3%pz0GZj_i2RfDx6?H8W7I z2uM&@{Un;qWY>@HTv7L?^juSX9-Ha#zuG(Vu$=RLkKdMPtWheY24N_np==3}HnO&t z+*C@`Ol3+Wd&HP_S<0m3nNlfDTJ92JDoVCW3o?XOTO`$a{hH@o=Q__>uIG>Q$GOgR z?!PQE`rY^a{eG7B=lyxVWrsT%eT^$!+7+V$*|*D1*{eAwGizIYlb4y4cInRsFKxyI z{Th&v{X-G+c8NW?~Q$1-pT3!qbN9Q zyn~~=x6x1)6-_}{Oj=qIOc+{1Xk{K%1hprQcGTl^hQfzWx%ha{@x-L06{e;N#mj|o zy2_*Oc}a~W@LQ0B51E{*NOs@Yf`ED2nTlaTe+yZG0nH_=;8!n)*NizcwV$uK#?NVi zU;0T&9X|J_+Z3IZnD`_e?OW3Wjacwi^8sR$T(|r7t%uFwCpWUhI@T|>G;FSXYxW5L z(Dj!$ufm9VN%VVs&>VqGK90)^yV8@Ue9x@Qzms-9cP{m(SW5kqsik(;jXt7QUx?c0eLFT%3ejbZ6Smow;(RLsL}lx~j3@knH3NuG_ZtX_?Ploz7~;{o73 z+#fqn&f~Rfi)T!N1HayIy{+voA}A~TNAaZRh2#mov`tl?Seh{^0Xw7JVk$@zOiL?v zaGnu2hpyID3-##*GiQ48g@f_L#%^NxAl|jA-o)k=_u1+qJM?nLUu^Dv?hRN#tYlqD z?tKXN0<+zRF2Yl1L|Zh}&Cb5iLVD&kbj)125hEV5rwoEZ);y+v-*3!wtz|ct8q%ym zw{_BtoM>`FMo9@En;t?ne49&%=Iq%PajV&5fpFJfN=hK+xJFj70m0^uY)A#^pPIXB zzE822X8F1XekfBxdMpD2gHx-{)1SbpWN!nh8z6NKSBY+RO>$6PUS6QqNO}3~boCe; ziYZ-*%xQV$SGGmhQ22w=3ewwvq;d`4@T**=U7Y4!{O64oS+k#)*gV6R1PM|oLRI&YqRD59E=jwSGNhcE;w%6J@t#g0h zINRI_!%s>FE+^$qQ{adHZW+IwvrKZHLn+6{UghC=9 zK-%F<7;H%}2naSDDQMkPI+=5Rxa9UESJ>pXx`<^f2xDof>BvE>AHqZB#(=i7p|j4~ zdYW&DV7b)oPx?mI#5k&~ zB`NNkRQ&EQmOekRN$Inf#lRQVG3U-f20PJEwII?iSz%*)XqVmFSTl$8D6RHvj~g~h zP6{6f4;iARILIaa3&q&PkiVTjKXKf+n9kGIjX82@ zi!Yj?K+95w4ecF?o3yc}?xyl&4`0U8xOs6zv?EQZ0l;QXYP&^s5KXpH+LHVsewlP+ z22%SW+{o_>!BdKgXz;{Wa-U}DPYEk(Z_U~qLWMY5bCbcwjnDb)Z##N8mCp96SztRe zc1V2wPoGE7M}$mVo@#Y5-ZZ-8k3Tj$J4ep(IB(JWx3rB7bw}rU?8+F412rKPSVQo% z1@8TF&GL%-Gg>(^fghzSY$^I{rZbrqLyY>a;)sjoll0FGEAX)MT;8saZ1JaQGUaz> z&7WWW4-B>#`=s{@>2LvceBQ-c472*MA|vlo#-z5ao-ovrNXaxWac_syvKvXXJUpQW zyHi7kfaUxUu_Cf#qcvGXE$o!>>$A5CQz3Y{G>p2oxPMJ)3w(6~y>nX9;cJd*=`8~# zYM0ig0>*ZP9l4RJL0swlpvxqXOXKe^Du3cl4CcyrwO`jdMXa7|{IWWCmo;R`w6o@; z`G+za8t*FC_aI$w|Hd8|C~0|~f0fe6a=KZxVoBUBk1uvg!ZWWArLw3_x7P^HykNCv zO$a8fuKnEj#r0>eQs&zJ78Iy8x%kJ9`2Jphcy%<^N>%9-tksK~oXWFj|E^JT<$Hyn zMjyIfMk(=Z%sIWfAs#JZO)H&*Pwvy-L zZ!fd4&3Lb6vo`*^Y3r@ucL#TNOuhVIo*hyJee z{!j3=*k6+zQ7@)9;T5GJElNJi&Y?@XQQSMvMf||(#Y5d&#ug)fH0g_!`xErNacZ^< z*Rhr1FEeCd8tu;&&EI=!C{!W~;kRG=Nj)7_y_3hdzW1M?+*C9u9=q9NP8f0G1iMB$ zwo3fNqARA-{t{z0K~SqobqKuU7@~?!$%41h^KEAefB)IfS;tmXtvjv=0Tr3ft3(_O zq3x%${CUZ|F)M+gBd{v@j1HduJ{t&F>zQ4}NNR!IG4zWsZ^*XZ*z>b=rBx?Dzn?uBKVt`wWD5oMcAP|h56 zjBcKVJg$1M>ekBC2^tzJ3}sbR+@>owkLrUPx;^#GxEs`tY_%bk#;p%geGQ2Ka)8$g zVMH(KXwF926D@Lp_2p*y`S}oa$M_lZLzpFlSQ0`Afi?5sS;6DKb)Q4OS}2pUs}mP@_^i1}Kl!&QuLf)%J7IzY4j-yoUB>?D@bLC2|ML*`I)78!KxBg zA$9&TrdT*m)HZ+*pAk{!mU8>)Xe{x3Y9V{j5iZ=6)o{`RG@@;<)Ig@`TATimF${(p zfLp@z`ua)NoSi_)SW88V=KGdWYcoE9rXnm%Ry~)X(pUKC6<{0ah7`tnb`OBTFTR{+ z(N~QGF?H&4lW(>M9lzs9P_@e4naM|>#UMKez6O(zF@A#YeQ9a3aa_8EdUDRYBF5Z{0h*EkEM)+x=zcYYwO|CnM0g2ZYwZp- z$P!&&+ij;*jdsf!CL@!=$KiWHMR-V0|8-}5^Kje-bUhrPJ$bU>pgm@7J#M@*Dk{;x z{Bkz7ae6det3mKuYiqSy*y!DL3VAZgAhI0-5u|+0d6QKO-X-AD0f@gn?*bJwJb*8C zfzucVWUn(9e#$F3(B5e2%>{EU`0B=0FE=rfGuF$FHifU_?%qoNxKRah0DKHNQck$C za*}ElF#=rmXBAyLbbDTUg!Q!yXD%wItc)e{G0Kv|57XM3YkYZQNo#wo6z1v=O);N7 z>X`Uuvc=%y%;IvNpx@fk4pf1gb+JEWe$i^guwi4V>S9^51A>_BjLjlXpgn-diO3%7 z7w~H)7!Fr6ZUIBR>fftGLOUT6-PP%P)oyIh9j$Qvodtk1D*!eoDNCy>`>S$lc>TV< zw6c<$M{Sgiohg<}lW}(fF=8Y981p=MD4!N1yH?+SJbSdLp}mFS%1h_K*t>T5OjF8A z;G>Zwe56yn7Y7@Rf0X~DMCOBkuRd(^KEI{1`>Vi>1KfmxmA2vf!9V}pgeGh351lLB zxSD3!58rstp3T4K9~C$J_@08!NyVvx*x?rGfny$wA4&Opr6R$zZAyNM#XzgdhY#Dc z%bw@~fyG zF0QE6eZ!Cxg;g;&h>L1Q-q>Uxr_w`F+@XDNq3`Wo%Do4Ro~Q_?_URD*;NLR9e-l-G zho+xQ`{rt&EA70ELsEHGJBIr0>)k57Z2|FOLw<62tzO(}=#qYidtY&*#xzTKu?Q03 z(+$6V^z3yvgbhJ`tUPB5d4Sh^_g7PUuHk<&rG6>;G$mCX>sVepvc47N>=np&57qa= z5>l4`Kq5$0uWH&JvtIOxF>yl8wg`vH`%>gE_kq3KTNb?T2ism}+)O%7(gXMzZIJh*06C;l2e)*~~_S2KKw}6lb|S;D~g5cs>4ib2Bqc zdGvGG_n^_CTCUql|4Jcx3QS<9{4~4j$_znDA4m)+c!wl6dzL`E@b5l1TxZXf?oF1M zg{6B9-tg_sB^PO2Kwm~6Rhvf8{xF4omJu2rzJlRk za4hporZTmXKI~fXtn+R8E|q(~2+P>}MT$%tX7u89s`uoB3qSdZ?@ zby9jq!6y4*Lj#lS6)+{>K|T|TST13|9@E$Z2M;FMWZnZDa|SY=DsSxL(@ycj-YZIs zYKE(OG}kc`2E08%RqS13`9aO_o?3FwJ&(WK5}_0&bK(*6IE{Z@#!ij)fKXLx$wN17OYO8zA@R8@ao z;L;SHgeZR_)Lx;T;6&j-=M7xy@El4J6g-v`f?0S zFf_vHr|#e~^oUaezi`L<*#e8=}`e*tPe$vIb(FFA-ID2*n5_L{@spn*Y;@sj89da^(1N^Oz@b#u2%c zFeJ3mIy)|RvAK;YENkKTd3%3m_(=AdWLEkZ79@k}rMFT&)~ZKIn1%o8 z*Co8&93`ErcKMrU9vPV@o~2%|vA%xkZ;wmmw{0Z1K@DD??y_#llKmBY2jU+3VO;DC z#X&qw&3Cct#Y~K$YhfZ7rfQg|E@4_pwl;~>oWNigBin5m&>G9k)eTo8!mOPu#76(0 zgu+Lhm3+t1*u><)Yfqwk-JYv;y$lv}nt646Jbh+sP1Z+F1mo5zKo}S>Pb$*$FOUshGKyvU7_mb8AjRoV8HxEJtAYQXF4*M`E)AqwgB2?tz4kO3 zRi3b#c0B#@MYHmW(KOJzkv^Ol@*1y?CpkXv;SzlAc+y>ahT5GvY31QtSL?b$94eo= zKX^22|A8TIf(F3|uxVU3*Eh`GB2nsMI#p~8?5dq;#OLtcbx1r$X z&8+r^!f{mI`M;wK)^4m0+Tjs!LF=S30~W-wX!{bsoLOX9%>yI?DQ5x*b4Bhjt$a+y{@0p{H3GKFJj-1|EU)>q6>7xQNsB94O zr_<>x5o@Ld99n9gGLTTt>}4ma^eipo*8%@}v7R0*H)pL=VKdpY2aQChgE&f;DJWa2 zPKFbLxrBQ72sN|Yr?gFTn$^F+O;;XYDp<(3H$fL4TAx9Ijm-KR;jf(kLI#)Q2{B-r z9yx@ROu1B_WXl8#%8iOjvPnO}34tSNi&z4$9(HyG?H!nts^O7<0Jb%bM@L6X$De`q zBDg>@4$j%KvZfYZXH;--D$!M|3W)O&jTWFZ!7%UZi)m+e?W6%Gy5n!B;O1c2^>p9R zCGi=pf)5{@)L7|a2>!WW-X!ow294Hggq2wuemh>&+-Wi~ zgwicggp{p zqF+?Q!s(=9?~C7QX!z9~o^;#sy|tTU7G{#LNj_pRxaQEDM4QajOUmlDV#I)#ERH>K zswq|%p$myi2+duBKQ6@PR>9R1(NatqyKQ3;>15l`b_$>k#7d<=d!O+$I?NOOp~kEB zGvIy{+`5IfMai|N=m;1F18RR;D{zG&HPw9tFTj4jpy98s6lxXwwFt-LLb?5ST`3|w z^-X;LKz+=t_56*3Om(w=R{D7HF;`Mu$4 z5x~jLILQYmE%Sc-&UdKll z+`HRcFN@8olG09i{%^N~1aKcI@<_9;2Ctb)PocXt%r0y-%6~Sx^;(K z^VzH|e3`XCZvR$(4C^yVRrRuEduFHWGp(1U(RtKogtNo(gAaTCdeN)_Hf88cZZ}MZ z(FZ~uG8u&h$3E$5%K)2IHN-Pl5m*-#5&2W*AJCKo%vnz0b{#$1I9&};p6->o0gOi< z7S#CyEYA12agFEaU*Ug=5%nR|xPZ^e8Wi=#W`A(8T`O0I8og+)m0waxtT zh4C~AvlTBsb+Kj;!j%kyJ_L4U>81Bry3^-!@=lAwk z{Q=NFQ+ISfSLwb2^-c#8c|{5~Y?e5DIos$yK#wHh;kNWFt#*^>1)caSBd09&l_iv8OJ~*M5yN2*#7%pA0Bx$kz-hTnHE*|Ru literal 0 HcmV?d00001 diff --git a/web/src/app/admin/assistants/AssistantEditor.tsx b/web/src/app/admin/assistants/AssistantEditor.tsx index bee83a19a0a..8bc1a724bc7 100644 --- a/web/src/app/admin/assistants/AssistantEditor.tsx +++ b/web/src/app/admin/assistants/AssistantEditor.tsx @@ -595,6 +595,7 @@ export function AssistantEditor({ tooltip="Used to identify the Assistant in the UI." label="Name" placeholder="e.g. 'Email Assistant'" + aria-label="assistant-name-input" /> { - setFieldValue("system_prompt", e.target.value); - }} + data-testid="assistant-instructions-input" />

diff --git a/web/src/components/admin/connectors/Field.tsx b/web/src/components/admin/connectors/Field.tsx index 459c8101cd5..c45b27b4aca 100644 --- a/web/src/components/admin/connectors/Field.tsx +++ b/web/src/components/admin/connectors/Field.tsx @@ -241,6 +241,7 @@ export function TextFormField({ as={isTextArea ? "textarea" : "input"} type={type} defaultValue={value} + data-testid={name} name={name} id={name} className={` diff --git a/web/tests/e2e/admin_add_connector.spec.ts b/web/tests/e2e/admin_add_connector.spec.ts deleted file mode 100644 index 2385aed327e..00000000000 --- a/web/tests/e2e/admin_add_connector.spec.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { test, expect } from "@chromatic-com/playwright"; - -test( - "Admin - Connectors - Add Connector", - { - tag: "@admin", - }, - async ({ page }, testInfo) => { - // Test simple loading - await page.goto("http://localhost:3000/admin/add-connector"); - await expect(page.locator("h1.text-3xl")).toHaveText("Add Connector"); - await expect(page.locator("h1.text-lg").nth(0)).toHaveText(/^Storage/); - } -); diff --git a/web/tests/e2e/admin_api_key.spec.ts b/web/tests/e2e/admin_api_key.spec.ts deleted file mode 100644 index 6feb6be20cf..00000000000 --- a/web/tests/e2e/admin_api_key.spec.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { test, expect } from "@chromatic-com/playwright"; - -test( - "Admin - User Management - API Keys", - { - tag: "@admin", - }, - async ({ page }, testInfo) => { - // Test simple loading - await page.goto("http://localhost:3000/admin/api-key"); - await expect(page.locator("h1.text-3xl")).toHaveText("API Keys"); - await expect(page.locator("p.text-sm")).toHaveText( - /^API Keys allow you to access Onyx APIs programmatically/ - ); - await expect( - page.getByRole("button", { name: "Create API Key" }) - ).toHaveCount(1); - } -); diff --git a/web/tests/e2e/admin_assistants.spec.ts b/web/tests/e2e/admin_assistants.spec.ts deleted file mode 100644 index a5ccf92c71f..00000000000 --- a/web/tests/e2e/admin_assistants.spec.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { test, expect } from "@chromatic-com/playwright"; - -test( - "Admin - Custom Assistants - Assistants", - { - tag: "@admin", - }, - async ({ page }, testInfo) => { - // Test simple loading - await page.goto("http://localhost:3000/admin/assistants"); - await expect(page.locator("h1.text-3xl")).toHaveText("Assistants"); - await expect(page.locator("p.text-sm").nth(0)).toHaveText( - /^Assistants are a way to build/ - ); - - const generalTextLocator = page.locator("tr.border-b td").nth(1); - await expect(generalTextLocator.locator("p.text")).toHaveText("General"); - } -); diff --git a/web/tests/e2e/admin_bots.spec.ts b/web/tests/e2e/admin_bots.spec.ts deleted file mode 100644 index 309b0e90d89..00000000000 --- a/web/tests/e2e/admin_bots.spec.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { test, expect } from "@chromatic-com/playwright"; - -test( - "Admin - Custom Assistants - Slack Bots", - { - tag: "@admin", - }, - async ({ page }, testInfo) => { - // Test simple loading - await page.goto("http://localhost:3000/admin/bots"); - await expect(page.locator("h1.text-3xl")).toHaveText("Slack Bots"); - await expect(page.locator("p.text-sm").nth(0)).toHaveText( - /^Setup Slack bots that connect to Onyx./ - ); - } -); diff --git a/web/tests/e2e/admin_chat.spec.ts b/web/tests/e2e/admin_chat.spec.ts new file mode 100644 index 00000000000..a36aa761969 --- /dev/null +++ b/web/tests/e2e/admin_chat.spec.ts @@ -0,0 +1,33 @@ +import { test, expect } from "@playwright/test"; +test( + `test - admin chat`, + { + tag: "@admin", + }, + async ({ page }) => { + await page.goto("http://localhost:3000/assistants/new"); + await expect(page).toHaveURL("http://localhost:3000/assistants/new"); + await page.screenshot({ + path: `screenshots/create_assistant_page.png`, + }); + await page.getByTestId("name").click(); + await page.getByTestId("name").fill("Test"); + await page.getByTestId("description").click(); + await page.getByTestId("description").fill("Test"); + await page.getByTestId("system_prompt").click(); + await page.getByTestId("system_prompt").fill("Test"); + await page + .getByRole("button", { name: "Logo GPT 4o", exact: true }) + .click(); + await page.getByRole("button", { name: "Create!" }).click(); + // Wait for the page URL to change to the chat page + await page.waitForURL(/^http:\/\/localhost:3000\/chat(\?.*)?$/); + await expect(page.url()).toContain("http://localhost:3000/chat"); + await page.screenshot({ + path: `screenshots/chat_page_after_create.png`, + }); + await page.getByPlaceholder("Send a message or try using").fill("Hello"); + await page.keyboard.press("Enter"); + await page.waitForSelector("#danswer-ai-message", { state: "visible" }); + } +); diff --git a/web/tests/e2e/admin_configuration_document_processing.spec.ts b/web/tests/e2e/admin_configuration_document_processing.spec.ts deleted file mode 100644 index 3d9f6ce7a9b..00000000000 --- a/web/tests/e2e/admin_configuration_document_processing.spec.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { test, expect } from "@chromatic-com/playwright"; - -test( - "Admin - Configuration - Document Processing", - { - tag: "@admin", - }, - async ({ page }, testInfo) => { - // Test simple loading - await page.goto( - "http://localhost:3000/admin/configuration/document-processing" - ); - await expect(page.locator("h1.text-3xl")).toHaveText("Document Processing"); - await expect(page.locator("h3.text-2xl")).toHaveText( - "Process with Unstructured API" - ); - } -); diff --git a/web/tests/e2e/admin_configuration_llm.spec.ts b/web/tests/e2e/admin_configuration_llm.spec.ts deleted file mode 100644 index aa5b3957179..00000000000 --- a/web/tests/e2e/admin_configuration_llm.spec.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { test, expect } from "@chromatic-com/playwright"; - -test( - "Admin - Configuration - LLM", - { - tag: "@admin", - }, - async ({ page }, testInfo) => { - // Test simple loading - await page.goto("http://localhost:3000/admin/configuration/llm"); - await expect(page.locator("h1.text-3xl")).toHaveText("LLM Setup"); - await expect(page.locator("h1.text-lg").nth(0)).toHaveText( - "Enabled LLM Providers" - ); - } -); diff --git a/web/tests/e2e/admin_configuration_search.spec.ts b/web/tests/e2e/admin_configuration_search.spec.ts deleted file mode 100644 index 57309a71414..00000000000 --- a/web/tests/e2e/admin_configuration_search.spec.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { test, expect } from "@chromatic-com/playwright"; - -test( - "Admin - Configuration - Search Settings", - { - tag: "@admin", - }, - async ({ page }, testInfo) => { - // Test simple loading - await page.goto("http://localhost:3000/admin/configuration/search"); - await expect(page.locator("h1.text-3xl")).toHaveText("Search Settings"); - await expect(page.locator("h1.text-lg").nth(0)).toHaveText( - "Embedding Model" - ); - } -); diff --git a/web/tests/e2e/admin_documents_explorer.spec.ts b/web/tests/e2e/admin_documents_explorer.spec.ts deleted file mode 100644 index 0b4d5ae93ae..00000000000 --- a/web/tests/e2e/admin_documents_explorer.spec.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { test, expect } from "@chromatic-com/playwright"; - -test( - "Admin - Document Management - Feedback", - { - tag: "@admin", - }, - async ({ page }, testInfo) => { - // Test simple loading - await page.goto("http://localhost:3000/admin/documents/explorer"); - await expect(page.locator("h1.text-3xl")).toHaveText("Document Explorer"); - await expect(page.locator("div.flex.text-emphasis.mt-3")).toHaveText( - "Search for a document above to modify its boost or hide it from searches." - ); - } -); diff --git a/web/tests/e2e/admin_documents_feedback.spec.ts b/web/tests/e2e/admin_documents_feedback.spec.ts deleted file mode 100644 index 4f19cea998e..00000000000 --- a/web/tests/e2e/admin_documents_feedback.spec.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { test, expect } from "@chromatic-com/playwright"; - -test( - "Admin - Document Management - Feedback", - { - tag: "@admin", - }, - async ({ page }, testInfo) => { - // Test simple loading - await page.goto("http://localhost:3000/admin/documents/feedback"); - await expect(page.locator("h1.text-3xl")).toHaveText("Document Feedback"); - await expect(page.locator("h1.text-lg").nth(0)).toHaveText( - "Most Liked Documents" - ); - await expect(page.locator("h1.text-lg").nth(1)).toHaveText( - "Most Disliked Documents" - ); - } -); diff --git a/web/tests/e2e/admin_documents_sets.spec.ts b/web/tests/e2e/admin_documents_sets.spec.ts deleted file mode 100644 index ac7d718fb70..00000000000 --- a/web/tests/e2e/admin_documents_sets.spec.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { test, expect } from "@chromatic-com/playwright"; - -test( - "Admin - Document Management - Document Sets", - { - tag: "@admin", - }, - async ({ page }, testInfo) => { - // Test simple loading - await page.goto("http://localhost:3000/admin/documents/sets"); - await expect(page.locator("h1.text-3xl")).toHaveText("Document Sets"); - await expect(page.locator("p.text-sm")).toHaveText( - /^Document Sets allow you to group logically connected documents into a single bundle./ - ); - } -); diff --git a/web/tests/e2e/admin_groups.spec.ts b/web/tests/e2e/admin_groups.spec.ts deleted file mode 100644 index 8e192bb8b43..00000000000 --- a/web/tests/e2e/admin_groups.spec.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { test, expect } from "@chromatic-com/playwright"; - -test( - "Admin - User Management - Groups", - { - tag: "@admin", - }, - async ({ page }, testInfo) => { - // Test simple loading - await page.goto("http://localhost:3000/admin/groups"); - await expect(page.locator("h1.text-3xl")).toHaveText("Manage User Groups"); - await expect( - page.getByRole("button", { name: "Create New User Group" }) - ).toHaveCount(1); - } -); diff --git a/web/tests/e2e/admin_indexing_status.spec.ts b/web/tests/e2e/admin_indexing_status.spec.ts deleted file mode 100644 index c5b6bacc2bd..00000000000 --- a/web/tests/e2e/admin_indexing_status.spec.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { test, expect } from "@chromatic-com/playwright"; - -test( - "Admin - Connectors - Existing Connectors", - { - tag: "@admin", - }, - async ({ page }, testInfo) => { - // Test simple loading - await page.goto("http://localhost:3000/admin/indexing/status"); - await expect(page.locator("h1.text-3xl")).toHaveText("Existing Connectors"); - await expect(page.locator("p.text-sm")).toHaveText( - /^It looks like you don't have any connectors setup yet./ - ); - } -); diff --git a/web/tests/e2e/admin_pages.spec.ts b/web/tests/e2e/admin_pages.spec.ts new file mode 100644 index 00000000000..c5c80984b5a --- /dev/null +++ b/web/tests/e2e/admin_pages.spec.ts @@ -0,0 +1,52 @@ +import { test, expect } from "@playwright/test"; +import chromaticSnpashots from "./chromaticSnpashots.json"; +import type { Page } from "@playwright/test"; + +async function verifyAdminPageNavigation( + page: Page, + path: string, + pageTitle: string, + options?: { + paragraphText?: string | RegExp; + buttonName?: string; + subHeaderText?: string; + } +) { + await page.goto(`http://localhost:3000/admin/${path}`); + await expect(page.locator("h1.text-3xl")).toHaveText(pageTitle); + + if (options?.paragraphText) { + await expect(page.locator("p.text-sm").nth(0)).toHaveText( + options.paragraphText + ); + } + + if (options?.buttonName) { + await expect( + page.getByRole("button", { name: options.buttonName }) + ).toHaveCount(1); + } + + if (options?.subHeaderText) { + await expect(page.locator("h1.text-lg").nth(0)).toHaveText( + options.subHeaderText + ); + } +} + +for (const chromaticSnapshot of chromaticSnpashots) { + test( + `Admin - ${chromaticSnapshot.name}`, + { + tag: "@admin", + }, + async ({ page }) => { + await verifyAdminPageNavigation( + page, + chromaticSnapshot.path, + chromaticSnapshot.pageTitle, + chromaticSnapshot.options + ); + } + ); +} diff --git a/web/tests/e2e/admin_performance_custom_analytics.spec.ts b/web/tests/e2e/admin_performance_custom_analytics.spec.ts deleted file mode 100644 index 8f66ca6ac6d..00000000000 --- a/web/tests/e2e/admin_performance_custom_analytics.spec.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { test, expect } from "@chromatic-com/playwright"; - -test( - "Admin - Performance - Custom Analytics", - { - tag: "@admin", - }, - async ({ page }, testInfo) => { - // Test simple loading - await page.goto("http://localhost:3000/admin/performance/custom-analytics"); - await expect(page.locator("h1.text-3xl")).toHaveText("Custom Analytics"); - await expect(page.locator("div.font-medium").nth(0)).toHaveText( - "Custom Analytics is not enabled." - ); - } -); diff --git a/web/tests/e2e/admin_performance_query_history.spec.ts b/web/tests/e2e/admin_performance_query_history.spec.ts deleted file mode 100644 index d15dba7c635..00000000000 --- a/web/tests/e2e/admin_performance_query_history.spec.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { test, expect } from "@chromatic-com/playwright"; - -test.describe("Admin Performance Query History", () => { - // Ignores the diff for elements targeted by the specified list of selectors - // exclude button since they change based on the date - test.use({ ignoreSelectors: ["button"] }); - - test( - "Admin - Performance - Query History", - { - tag: "@admin", - }, - async ({ page }, testInfo) => { - // Test simple loading - await page.goto("http://localhost:3000/admin/performance/query-history"); - await expect(page.locator("h1.text-3xl")).toHaveText("Query History"); - await expect(page.locator("p.text-sm").nth(0)).toHaveText( - "Feedback Type" - ); - } - ); -}); diff --git a/web/tests/e2e/admin_performance_usage.spec.ts b/web/tests/e2e/admin_performance_usage.spec.ts deleted file mode 100644 index 0a5fff426d3..00000000000 --- a/web/tests/e2e/admin_performance_usage.spec.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { test, expect } from "@chromatic-com/playwright"; - -test.describe("Admin Performance Usage", () => { - // Ignores the diff for elements targeted by the specified list of selectors - // exclude button and svg since they change based on the date - test.use({ ignoreSelectors: ["button", "svg"] }); - - test( - "Admin - Performance - Usage Statistics", - { - tag: "@admin", - }, - async ({ page }, testInfo) => { - await page.goto("http://localhost:3000/admin/performance/usage"); - await expect(page.locator("h1.text-3xl")).toHaveText("Usage Statistics"); - await expect(page.locator("h1.text-lg").nth(0)).toHaveText("Usage"); - await expect(page.locator("h1.text-lg").nth(1)).toHaveText("Feedback"); - } - ); -}); diff --git a/web/tests/e2e/admin_settings.spec.ts b/web/tests/e2e/admin_settings.spec.ts deleted file mode 100644 index d48fe13a736..00000000000 --- a/web/tests/e2e/admin_settings.spec.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { test, expect } from "@chromatic-com/playwright"; - -test( - "Admin - Settings - Workspace Settings", - { - tag: "@admin", - }, - async ({ page }, testInfo) => { - // Test simple loading - await page.goto("http://localhost:3000/admin/settings"); - await expect(page.locator("h1.text-3xl")).toHaveText("Workspace Settings"); - await expect(page.locator("p.text-sm").nth(0)).toHaveText( - /^Manage general Onyx settings applicable to all users in the workspace./ - ); - await expect( - page.getByRole("button", { name: "Set Retention Limit" }) - ).toHaveCount(1); - } -); diff --git a/web/tests/e2e/admin_standard_answer.spec.ts b/web/tests/e2e/admin_standard_answer.spec.ts deleted file mode 100644 index 3a265f1b72a..00000000000 --- a/web/tests/e2e/admin_standard_answer.spec.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { test, expect } from "@chromatic-com/playwright"; - -test( - "Admin - Custom Assistants - Standard Answers", - { - tag: "@admin", - }, - async ({ page }, testInfo) => { - // Test simple loading - await page.goto("http://localhost:3000/admin/standard-answer"); - await expect(page.locator("h1.text-3xl")).toHaveText("Standard Answers"); - await expect(page.locator("p.text-sm").nth(0)).toHaveText( - /^Manage the standard answers for pre-defined questions./ - ); - } -); diff --git a/web/tests/e2e/admin_token_rate_limits.spec.ts b/web/tests/e2e/admin_token_rate_limits.spec.ts deleted file mode 100644 index 359673c4e47..00000000000 --- a/web/tests/e2e/admin_token_rate_limits.spec.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { test, expect } from "@chromatic-com/playwright"; - -test( - "Admin - User Management - Token Rate Limits", - { - tag: "@admin", - }, - async ({ page }, testInfo) => { - // Test simple loading - await page.goto("http://localhost:3000/admin/token-rate-limits"); - await expect(page.locator("h1.text-3xl")).toHaveText("Token Rate Limits"); - await expect(page.locator("p.text-sm").nth(0)).toHaveText( - /^Token rate limits enable you control how many tokens can be spent in a given time period./ - ); - await expect( - page.getByRole("button", { name: "Create a Token Rate Limit" }) - ).toHaveCount(1); - await expect(page.locator("h1.text-lg")).toHaveText( - "Global Token Rate Limits" - ); - } -); diff --git a/web/tests/e2e/admin_tools.spec.ts b/web/tests/e2e/admin_tools.spec.ts deleted file mode 100644 index 87152b9836b..00000000000 --- a/web/tests/e2e/admin_tools.spec.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { test, expect } from "@chromatic-com/playwright"; - -test( - "Admin - Custom Assistants - Tools", - { - tag: "@admin", - }, - async ({ page }, testInfo) => { - // Test simple loading - await page.goto("http://localhost:3000/admin/tools"); - await expect(page.locator("h1.text-3xl")).toHaveText("Tools"); - await expect(page.locator("p.text-sm")).toHaveText( - "Tools allow assistants to retrieve information or take actions." - ); - } -); diff --git a/web/tests/e2e/admin_users.spec.ts b/web/tests/e2e/admin_users.spec.ts deleted file mode 100644 index 2fc31888431..00000000000 --- a/web/tests/e2e/admin_users.spec.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { test, expect } from "@chromatic-com/playwright"; - -test( - "Admin - User Management - Groups", - { - tag: "@admin", - }, - async ({ page }, testInfo) => { - // Test simple loading - await page.goto("http://localhost:3000/admin/users"); - await expect(page.locator("h1.text-3xl")).toHaveText("Manage Users"); - } -); diff --git a/web/tests/e2e/admin_whitelabeling.spec.ts b/web/tests/e2e/admin_whitelabeling.spec.ts deleted file mode 100644 index 2e49e52d145..00000000000 --- a/web/tests/e2e/admin_whitelabeling.spec.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { test, expect } from "@chromatic-com/playwright"; - -test( - "Admin - Performance - Whitelabeling", - { - tag: "@admin", - }, - async ({ page }, testInfo) => { - // Test simple loading - await page.goto("http://localhost:3000/admin/whitelabeling"); - await expect(page.locator("h1.text-3xl")).toHaveText("Whitelabeling"); - await expect(page.locator("div.block").nth(0)).toHaveText( - "Application Name" - ); - await expect(page.locator("div.block").nth(1)).toHaveText("Custom Logo"); - await expect(page.getByRole("button", { name: "Update" })).toHaveCount(1); - } -); diff --git a/web/tests/e2e/chat.spec.ts b/web/tests/e2e/chat.spec.ts deleted file mode 100644 index e5d096ab0f6..00000000000 --- a/web/tests/e2e/chat.spec.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { test, expect } from "@chromatic-com/playwright"; - -test( - "Chat", - { - tag: "@admin", - }, - async ({ page }, testInfo) => { - // Test simple loading - await page.goto("http://localhost:3000/chat"); - - // Check for the "General" text in the new UI element - await expect( - page.locator("div.flex.items-center span.font-bold") - ).toHaveText("General"); - - // Check for the presence of the new UI element - await expect( - page.locator("div.flex.justify-center div.bg-black.rounded-full") - ).toBeVisible(); - - // Check for the SVG icon - await expect( - page.locator("div.flex.justify-center svg.w-5.h-5") - ).toBeVisible(); - } -); diff --git a/web/tests/e2e/chromaticSnpashots.json b/web/tests/e2e/chromaticSnpashots.json new file mode 100644 index 00000000000..429739e8097 --- /dev/null +++ b/web/tests/e2e/chromaticSnpashots.json @@ -0,0 +1,116 @@ +[ + { + "name": "Document Management - Explorer", + "path": "documents/explorer", + "pageTitle": "Document Explorer" + }, + { + "name": "Connectors - Add Connector", + "path": "add-connector", + "pageTitle": "Add Connector", + "options": { + "subHeaderText": "Storage" + } + }, + { + "name": "Custom Assistants - Assistants", + "path": "assistants", + "pageTitle": "Assistants", + "options": { + "paragraphText": "Assistants are a way to build custom search/question-answering experiences for different use cases." + } + }, + { + "name": "Configuration - Document Processing", + "path": "configuration/document-processing", + "pageTitle": "Document Processing" + }, + { + "name": "Document Management - Document Sets", + "path": "documents/sets", + "pageTitle": "Document Sets", + "options": { + "paragraphText": "Document Sets allow you to group logically connected documents into a single bundle. These can then be used as a filter when performing searches to control the scope of information Danswer searches over." + } + }, + { + "name": "Custom Assistants - Slack Bots", + "path": "bots", + "pageTitle": "Slack Bots", + "options": { + "paragraphText": "Setup Slack bots that connect to Danswer. Once setup, you will be able to ask questions to Danswer directly from Slack. Additionally, you can:" + } + }, + { + "name": "Custom Assistants - Standard Answers", + "path": "standard-answer", + "pageTitle": "Standard Answers" + }, + { + "name": "Performance - Usage Statistics", + "path": "performance/usage", + "pageTitle": "Usage Statistics" + }, + { + "name": "Document Management - Feedback", + "path": "documents/feedback", + "pageTitle": "Document Feedback", + "options": { + "subHeaderText": "Most Liked Documents" + } + }, + { + "name": "Configuration - LLM", + "path": "configuration/llm", + "pageTitle": "LLM Setup" + }, + { + "name": "Connectors - Existing Connectors", + "path": "indexing/status", + "pageTitle": "Existing Connectors" + }, + { + "name": "Custom Assistants - Prompt Library", + "path": "prompt-library", + "pageTitle": "Prompt Library", + "options": { + "paragraphText": "Create prompts that can be accessed with the `/` shortcut in Danswer Chat. Prompts created here will be accessible to all users." + } + }, + { + "name": "User Management - Groups", + "path": "groups", + "pageTitle": "Manage User Groups" + }, + { + "name": "Performance - Whitelabeling", + "path": "whitelabeling", + "pageTitle": "Whitelabeling" + }, + { + "name": "Configuration - Search Settings", + "path": "configuration/search", + "pageTitle": "Search Settings", + "options": { + "subHeaderText": "Embedding Model" + } + }, + { + "name": "Custom Assistants - Tools", + "path": "tools", + "pageTitle": "Tools", + "options": { + "paragraphText": "Tools allow assistants to retrieve information or take actions." + } + }, + { + "name": "User Management - Token Rate Limits", + "path": "token-rate-limits", + "pageTitle": "Token Rate Limits", + "options": { + "paragraphText": "Token rate limits enable you control how many tokens can be spent in a given time period. With token rate limits, you can:", + "buttonName": "Create a Token Rate Limit", + "subHeaderText": "Global Token Rate Limits" + } + } +] diff --git a/web/tests/e2e/constants.js b/web/tests/e2e/constants.js index d6f5f457c3b..b33de05897e 100644 --- a/web/tests/e2e/constants.js +++ b/web/tests/e2e/constants.js @@ -1,4 +1,3 @@ -// constants.js export const TEST_CREDENTIALS = { email: "admin_user@test.com", password: "test", From 824844bf845d48f6fb7836fed146bb7a08b6b3b9 Mon Sep 17 00:00:00 2001 From: pablodanswer Date: Fri, 13 Dec 2024 12:08:03 -0800 Subject: [PATCH 2/4] post rebase fix --- web/tests/e2e/admin_chat.spec.ts | 2 +- web/tests/e2e/chromaticSnpashots.json | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/web/tests/e2e/admin_chat.spec.ts b/web/tests/e2e/admin_chat.spec.ts index a36aa761969..62f55fcf995 100644 --- a/web/tests/e2e/admin_chat.spec.ts +++ b/web/tests/e2e/admin_chat.spec.ts @@ -28,6 +28,6 @@ test( }); await page.getByPlaceholder("Send a message or try using").fill("Hello"); await page.keyboard.press("Enter"); - await page.waitForSelector("#danswer-ai-message", { state: "visible" }); + await page.waitForSelector("#onyx-ai-message", { state: "visible" }); } ); diff --git a/web/tests/e2e/chromaticSnpashots.json b/web/tests/e2e/chromaticSnpashots.json index 429739e8097..342e28fda0b 100644 --- a/web/tests/e2e/chromaticSnpashots.json +++ b/web/tests/e2e/chromaticSnpashots.json @@ -30,7 +30,7 @@ "path": "documents/sets", "pageTitle": "Document Sets", "options": { - "paragraphText": "Document Sets allow you to group logically connected documents into a single bundle. These can then be used as a filter when performing searches to control the scope of information Danswer searches over." + "paragraphText": "Document Sets allow you to group logically connected documents into a single bundle. These can then be used as a filter when performing searches to control the scope of information Onyx searches over." } }, { @@ -38,7 +38,7 @@ "path": "bots", "pageTitle": "Slack Bots", "options": { - "paragraphText": "Setup Slack bots that connect to Danswer. Once setup, you will be able to ask questions to Danswer directly from Slack. Additionally, you can:" + "paragraphText": "Setup Slack bots that connect to Onyx. Once setup, you will be able to ask questions to Onyx directly from Slack. Additionally, you can:" } }, { @@ -74,7 +74,7 @@ "path": "prompt-library", "pageTitle": "Prompt Library", "options": { - "paragraphText": "Create prompts that can be accessed with the `/` shortcut in Danswer Chat. Prompts created here will be accessible to all users." + "paragraphText": "Create prompts that can be accessed with the `/` shortcut in Onyx Chat. Prompts created here will be accessible to all users." } }, { From c85157f7341822b356e819522b20da413fb2b9e8 Mon Sep 17 00:00:00 2001 From: pablodanswer Date: Fri, 13 Dec 2024 12:48:50 -0800 Subject: [PATCH 3/4] k --- .../google_utils/shared_constants.py | 4 +-- .../tests/daily/connectors/gmail/conftest.py | 4 +-- deployment/cloud_kubernetes/workers/beat.yaml | 2 +- .../workers/heavy_worker.yaml | 2 +- .../workers/indexing_worker.yaml | 2 +- .../workers/light_worker.yaml | 2 +- .../cloud_kubernetes/workers/primary.yaml | 2 +- web/tests/e2e/admin_chat.spec.ts | 33 ------------------- 8 files changed, 9 insertions(+), 42 deletions(-) delete mode 100644 web/tests/e2e/admin_chat.spec.ts diff --git a/backend/onyx/connectors/google_utils/shared_constants.py b/backend/onyx/connectors/google_utils/shared_constants.py index 9e1a7553692..2f3c3e4f7b8 100644 --- a/backend/onyx/connectors/google_utils/shared_constants.py +++ b/backend/onyx/connectors/google_utils/shared_constants.py @@ -44,9 +44,9 @@ class GoogleOAuthAuthenticationMethod(str, PyEnum): MISSING_SCOPES_ERROR_STR = "client not authorized for any of the scopes requested" # Documentation and error messages -SCOPE_DOC_URL = "https://docs.danswer.dev/connectors/google_drive/overview" +SCOPE_DOC_URL = "https://docs.onyx.app/connectors/google_drive/overview" ONYX_SCOPE_INSTRUCTIONS = ( - "You have upgraded Danswer without updating the Google Auth scopes. " + "You have upgraded Onyx without updating the Google Auth scopes. " f"Please refer to the documentation to learn how to update the scopes: {SCOPE_DOC_URL}" ) diff --git a/backend/tests/daily/connectors/gmail/conftest.py b/backend/tests/daily/connectors/gmail/conftest.py index 3855f62a076..8d13a50c262 100644 --- a/backend/tests/daily/connectors/gmail/conftest.py +++ b/backend/tests/daily/connectors/gmail/conftest.py @@ -54,7 +54,7 @@ def parse_credentials(env_str: str) -> dict: @pytest.fixture def google_gmail_oauth_connector_factory() -> Callable[..., GmailConnector]: def _connector_factory( - primary_admin_email: str = "admin@danswer-test.com", + primary_admin_email: str = "admin@onyx-test.com", ) -> GmailConnector: print("Creating GmailConnector with OAuth credentials") connector = GmailConnector() @@ -76,7 +76,7 @@ def _connector_factory( @pytest.fixture def google_gmail_service_acct_connector_factory() -> Callable[..., GmailConnector]: def _connector_factory( - primary_admin_email: str = "admin@danswer-test.com", + primary_admin_email: str = "admin@onyx-test.com", ) -> GmailConnector: print("Creating GmailConnector with service account credentials") connector = GmailConnector() diff --git a/deployment/cloud_kubernetes/workers/beat.yaml b/deployment/cloud_kubernetes/workers/beat.yaml index 607b41b27ea..226ecbd167a 100644 --- a/deployment/cloud_kubernetes/workers/beat.yaml +++ b/deployment/cloud_kubernetes/workers/beat.yaml @@ -14,7 +14,7 @@ spec: spec: containers: - name: celery-beat - image: onyxdotapp/onyx-backend-cloud:v0.14.0-cloud.beta.4 + image: onyxdotapp/onyx-backend-cloud:v0.14.0-cloud.beta.20 imagePullPolicy: IfNotPresent command: [ diff --git a/deployment/cloud_kubernetes/workers/heavy_worker.yaml b/deployment/cloud_kubernetes/workers/heavy_worker.yaml index 409623fb300..c829f897d57 100644 --- a/deployment/cloud_kubernetes/workers/heavy_worker.yaml +++ b/deployment/cloud_kubernetes/workers/heavy_worker.yaml @@ -14,7 +14,7 @@ spec: spec: containers: - name: celery-worker-heavy - image: onyxdotapp/onyx-backend-cloud:v0.14.0-cloud.beta.4 + image: onyxdotapp/onyx-backend-cloud:v0.14.0-cloud.beta.20 imagePullPolicy: IfNotPresent command: [ diff --git a/deployment/cloud_kubernetes/workers/indexing_worker.yaml b/deployment/cloud_kubernetes/workers/indexing_worker.yaml index b41f6bd8d19..2eaedf77a1e 100644 --- a/deployment/cloud_kubernetes/workers/indexing_worker.yaml +++ b/deployment/cloud_kubernetes/workers/indexing_worker.yaml @@ -14,7 +14,7 @@ spec: spec: containers: - name: celery-worker-indexing - image: onyxdotapp/onyx-backend-cloud:v0.14.0-cloud.beta.4 + image: onyxdotapp/onyx-backend-cloud:v0.14.0-cloud.beta.20 imagePullPolicy: IfNotPresent command: [ diff --git a/deployment/cloud_kubernetes/workers/light_worker.yaml b/deployment/cloud_kubernetes/workers/light_worker.yaml index 3e1c2fc8d80..332676a2959 100644 --- a/deployment/cloud_kubernetes/workers/light_worker.yaml +++ b/deployment/cloud_kubernetes/workers/light_worker.yaml @@ -14,7 +14,7 @@ spec: spec: containers: - name: celery-worker-light - image: onyxdotapp/onyx-backend-cloud:v0.14.0-cloud.beta.4 + image: onyxdotapp/onyx-backend-cloud:v0.14.0-cloud.beta.20 imagePullPolicy: IfNotPresent command: [ diff --git a/deployment/cloud_kubernetes/workers/primary.yaml b/deployment/cloud_kubernetes/workers/primary.yaml index ee360748fef..eddfe24739f 100644 --- a/deployment/cloud_kubernetes/workers/primary.yaml +++ b/deployment/cloud_kubernetes/workers/primary.yaml @@ -14,7 +14,7 @@ spec: spec: containers: - name: celery-worker-primary - image: onyxdotapp/onyx-backend-cloud:v0.14.0-cloud.beta.4 + image: onyxdotapp/onyx-backend-cloud:v0.14.0-cloud.beta.20 imagePullPolicy: IfNotPresent command: [ diff --git a/web/tests/e2e/admin_chat.spec.ts b/web/tests/e2e/admin_chat.spec.ts deleted file mode 100644 index 62f55fcf995..00000000000 --- a/web/tests/e2e/admin_chat.spec.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { test, expect } from "@playwright/test"; -test( - `test - admin chat`, - { - tag: "@admin", - }, - async ({ page }) => { - await page.goto("http://localhost:3000/assistants/new"); - await expect(page).toHaveURL("http://localhost:3000/assistants/new"); - await page.screenshot({ - path: `screenshots/create_assistant_page.png`, - }); - await page.getByTestId("name").click(); - await page.getByTestId("name").fill("Test"); - await page.getByTestId("description").click(); - await page.getByTestId("description").fill("Test"); - await page.getByTestId("system_prompt").click(); - await page.getByTestId("system_prompt").fill("Test"); - await page - .getByRole("button", { name: "Logo GPT 4o", exact: true }) - .click(); - await page.getByRole("button", { name: "Create!" }).click(); - // Wait for the page URL to change to the chat page - await page.waitForURL(/^http:\/\/localhost:3000\/chat(\?.*)?$/); - await expect(page.url()).toContain("http://localhost:3000/chat"); - await page.screenshot({ - path: `screenshots/chat_page_after_create.png`, - }); - await page.getByPlaceholder("Send a message or try using").fill("Hello"); - await page.keyboard.press("Enter"); - await page.waitForSelector("#onyx-ai-message", { state: "visible" }); - } -); From 699a02902a28870c0c3b2fbff5f4df2ed4dfbcd7 Mon Sep 17 00:00:00 2001 From: pablodanswer Date: Fri, 13 Dec 2024 12:50:02 -0800 Subject: [PATCH 4/4] nit --- backend/tests/integration/connector_job_tests/slack/conftest.py | 2 +- .../connector_job_tests/slack/test_permission_sync.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/tests/integration/connector_job_tests/slack/conftest.py b/backend/tests/integration/connector_job_tests/slack/conftest.py index 1e4ee4b0132..38b851de809 100644 --- a/backend/tests/integration/connector_job_tests/slack/conftest.py +++ b/backend/tests/integration/connector_job_tests/slack/conftest.py @@ -15,7 +15,7 @@ def slack_test_setup() -> Generator[tuple[dict[str, Any], dict[str, Any]], None, None]: slack_client = SlackManager.get_slack_client(os.environ["SLACK_BOT_TOKEN"]) admin_user_id = SlackManager.build_slack_user_email_id_map(slack_client)[ - "admin@danswer-test.com" + "admin@onyx-test.com" ] ( diff --git a/backend/tests/integration/connector_job_tests/slack/test_permission_sync.py b/backend/tests/integration/connector_job_tests/slack/test_permission_sync.py index eed67d6a381..a0574e34ac4 100644 --- a/backend/tests/integration/connector_job_tests/slack/test_permission_sync.py +++ b/backend/tests/integration/connector_job_tests/slack/test_permission_sync.py @@ -231,7 +231,7 @@ def test_slack_group_permission_sync( # Creating an admin user (first user created is automatically an admin) admin_user: DATestUser = UserManager.create( - email="admin@danswer-test.com", + email="admin@onyx-test.com", ) # Creating a non-admin user