From cf5a0be70c835cb63aea581575dd2ab16547ba8c Mon Sep 17 00:00:00 2001 From: MarcSkovMadsen Date: Mon, 16 Oct 2023 04:59:35 +0000 Subject: [PATCH 01/12] describe chat_message and chat_input --- .gitignore | 2 + doc/_static/images/panel_chat_entry.png | Bin 0 -> 41827 bytes doc/_static/images/panel_chat_input.png | Bin 0 -> 11278 bytes doc/_static/images/streamlit_chat_input.png | Bin 0 -> 8986 bytes doc/_static/images/streamlit_chat_message.png | Bin 0 -> 35015 bytes doc/how_to/streamlit_migration/chat.md | 145 ++++++++++++++++++ doc/how_to/streamlit_migration/index.md | 7 + 7 files changed, 154 insertions(+) create mode 100644 doc/_static/images/panel_chat_entry.png create mode 100644 doc/_static/images/panel_chat_input.png create mode 100644 doc/_static/images/streamlit_chat_input.png create mode 100644 doc/_static/images/streamlit_chat_message.png create mode 100644 doc/how_to/streamlit_migration/chat.md diff --git a/.gitignore b/.gitignore index 62a911e739..d090971534 100644 --- a/.gitignore +++ b/.gitignore @@ -153,3 +153,5 @@ doc/reference/* .config/code-server/* .conda/* .jupyter/* +app_panel.py +app_streamlit.py diff --git a/doc/_static/images/panel_chat_entry.png b/doc/_static/images/panel_chat_entry.png new file mode 100644 index 0000000000000000000000000000000000000000..27f4c1e2377fddaff238f089ec61cbbed3b84019 GIT binary patch literal 41827 zcmaI71yEZ}+%Mb~D^?19&{8N~ytrG@K!XPfUfit|4U|%>xVsb$f#AWlP_(!^E$$A* z@8Nmgd+&Vn&D_i|A<4JP~bdz^avlMAfx{15gOvrqsMAbF@bkr zHL82S(_>e4`FD>>2PwCJ7wDE!V5vusDxz?2OfZ1g*iH(%u8$r)>v;Hk-0cWAd-N#h zFGxm8)5CCY0b5^l?F#EKs}irW;WKO9XQdoQjzFa%U57PwU9D6@_C~0d)?HPawau)> zl*6a0U5lB4%43_g(VWB-b4BJ49Cfe1W#?o+eJcF=$}g*foZRViiU}s>UzkKzuIpf% z(|XB)>*57$kz!*gt2H()Ev%_Y)WgfmFvDgX{+RZ^hkT>U8jg#LOR2JhgTvwBq2xd+ zA4;cMPEoOs*xlWIywpJNp7_5*bBW$(}lbu(~U;lcE3miO?s5H>AHW@!q4^-9+J4U|rDoUOLf>OAsr) z7}v9Yc{m@!@K*GM?$3nx%PzC!qQWE^u6t5{`!wfxH*w!^<&bud2xP;!wKTbAsUqFY)e$ zF=3DYJ&W4f!%4`7VY6Pp9IDBA?5hSB=1GI7~Wm;{riLD zu=xAi$Ueo9Ryv?Q>fq1iPph!R_nj_j){HIp`QRve0kgR)(Uam?%ytME*+|3CsiWiZ zlY-)r4C#e--bB&-dlCc@8C(m!_Ni#gA-{~u{@3Bj7!NDiXV6b$OVV%US}#eq%bG=6 zLmgW&1aEt|MLAFf_*g5=`5n$zXLHpBt@gp}Un;a6zm_ZgHyC6p6W5mb0K{U#t z|KmV@=ue@vW%-E*=CiC`t^Si}S7yJo=Lt-X1OnqHN0M__Et?}b&m3%tL$svC;X8Ye zFH$cz@{6Ng-;8-+7Y=PK*Z!^gdwEFS33q*SG%stW-}F^fJS*3Qv6jO~#U1_1E5`uM zXr2;EdaH*;TUSGBGv(6k3aoZGJrVrdlu?E^pE&E_7eCIJ-?OyH%B;3no*NVnX7F7ro80>Iu;}ppdn`dMMP0qD0iONTqkxVbI<{dwzu=IN z9u(-X{qsP_~6BVtVo$Om}+hY4===W5j zJEOhmJ)O>mbb|jsHFJ{}9nu1rE8lyJ|B}z2x%VaM_tr4v{YFI`O}p^oTUNT9x`*iN zu}7s^O%0Pqom&Ns7<@swegm3LNV$S5x-Q11o+_Rg7r_i_PE9|CHK`fdysFjxcGobk zfGirZl2KNUT;PKB#FE+EYB#N<-Y&mt-6wiuH2 zXYjR9N5~u$3-RUCWsObrYY3F)X79vc+F4ZEHbqiXS6`iJ1lw)DL?rr~E2#^r;0)89 zagB+Vc53b5pzM|tg&*6(P-P= zhUsYU2?chy&IX%qaBM1tuw?bKK;v7+uT?C6GeU;XFIcitC+3^_|8lR>GnP*0o`Dz; zCC8d=4Rp+}tY?y{jZum6Yc|9{d7cPEFC@x?;%I?8#uZ$byn~mJoG5TTCZYg3e$3d8 zsCG(ZY%g8!4k+^YvjY=!;ny>Ir&<3qQ#=Z2Imf$d_UYmAaFTHFKf6hCS*jbuhUtxM ziBB~zLAZgNE9B6zGd<{J0F$j&Xh=_>E{@hffaVEaTMbJRFwtbN)n6@;PLQZKvc#S0 zxg`{|VQKpN{_P%7P%s6vK-goy&o*0tPpu5Qiv~XXMW}S#BO_&97+)}|P0)a6?uBEp zISB;VMc#Us5D~_(@?aDf?6$ZXdLn;GA)Kyqq1fvAMUJwVMT`X&-NeZf+X&oxPY-Jt zWu#^KXD}q{Xw=+?EFnbV#n>4`q&vR|>A`JgHpWjGNW`gLf~!K1Hc*~i+zRp(V?}!j zfirqd8fjyz4}e}6b8>RRN^g2e?)lGo@9tU`1bZbD5alL&FPDoeGStSfkz_41Fq~Y8 zrJt*&n&!QpCl?Mh$pWhlIQ<1+85vErbZ9PgWB?XMw?n_9rB>;}VKUG%CYaFM$*GA# zibQ`|iYnN0jXWDnM8_=B%m;np?zMn@MPdRgm%;@afhbBrHs9TxsFWDBQZXr~ODZbj zaP#n>)>>Lxp5oxVTj`1zsdY3u-5inDb08>!AVbiVLSwDg_m-SR7w-0?HFXt`+X5>M zo34=+*Jg~g>-PwTOd7NG)nrMkPw2VjIFu1mE?7I;~7pVL?m&4QgoG>-(|X9)Nnym#54wDw56DwKV@^FAY80zjbQjHAG?W zJH+T{anyvG|boR12uO}m8F$~Ys|vEo++xK`VpeobADGo zcj0L1y?wHOgr055OvpPd5{oC((B{~5|Ms_Wa45a&6Fxq1UvMM+v^(wpGIgpwuC_*| zkmfsHW6a_a_e*CWLO(if$`?<;qm4V7ICN3QvuX zFzLrNCU7;J&+s+#9T7-WQI+LT*CbL8RnS5(PxhoXwZ{EN%s+P>A_7u{(T~`dVZQ@O zPu)xCcGz|d4Y^Z_;t?<06fM^TODBE=DtSWL+11=)P1u&O9?%`}z;}NHQfj+5j;X@w z_q)Fo^IYl}Mdo}twr_2wj@z)PeLjEviViDsvopA;jJD7RE);)N_)uz?q2Mat=1uSg zJ}oW6f`wPrpvErcTm)@S;ByojCXaweoryxX9CUAUG+*f~f0B6!zyrG*UvC^Az~kx% zN)ouDla=ks%t7lt)jpqXwo;Yw718VLPx$)o8Ee@S3-}(Zgc5k<`nUsWdUq*10ch2$ zO16_FBS|{lnP*J2h(0sH_*ujK&G~84INFyci)|zxO?sx)&q^><1R@jO0gVi<3`Znp^YVbUf)gQTrqpW`WSD3=o zM6#XASvsadTJNruu9u)|V(;;Rx|cS|gzg?VCCwi7qxPHEB9+H_0b^Y**kC&5KJsC= z*Cf`;6*ld{Lzd~TVD7`Ww1ziI?CY>18H_ro($onjN6`o*c7weS&g7O_3^ykiJ{uGF zWC~|ctNLDC>(Uocpk^Tg%?#yH)T#pIL6c_oSEpN-xX4Zb)8+UCK&O5V?`&Hy@UX=& zwiDOvpHeUW?VpV;F$Di2HW!>=3`9*&U*G7RqpE;}BytP$@89vZ z0ReI+{uQFpp^d3zD#1_Rr;msT7z~H+hFUzxL4^@d@m=L3D71%b?0vr%fmHAAYtA(o zXc7B)Bq*>kJFL{hH`BpNZ%HqU?qOe`1e!1>=l-#@gzvtzho&M8M)sD1K(MS|OT|Sk zfvrYhq>-(0_HD12;4TIs;c(j&nwzbzfSFErkoXnr1MuxGil&&L@ZwF4OQR+Oa7bJB z&7&$Q1C`S)%11_y0(i~!RNulN`7=)T67DiJC(=4`&_j)Ohu~+Ip!lz9_jc|Vl~F^A zGMX8@#e0FN>niw4uO%LM*{anuTupF$As+>=)gwnoN4sz0!3h$Dw3qKA@18BMYoSTB zdW&%joVP`=JSEm1oa$V2y&OyUbpvrA-43Y6U#QsYcuFRU+akAJukUlB#L}|lMFP}& znUnQ_Gj~PHe)re32t?}C5zBZ(K0WwmM*e|iQkK25(G(LC<8oXSO&9jYz7VA@#wcd! zRXUO!$of}{xGzH zz|g9DTZgsY?m6mITg99U)6BqcjVLcHLr=i zzHg#kk_R3%oha}5=>dc!XM0cuBlE0D$)R3dGfX(&^63M!+^GAwMKn4#hALul)-hXO zx43@cCLtklx;yhC&D~OK#A3X^Q@ z><&tDjc7Rs5pj@lu6z%s8cmuG;zP)2E=-(#3T}JO7P3ymX`D93(wxnx>$`D`vaUmnsucL zj4MPqaLYKsGGhhcqvZgCZ6&1T!PN^w2*c>EK%4PgxgiaUV8Z)$>9XRm34);98q#14 zV70OIuJtFy0I~@#DaZ27<%yv8Ioqeb*+2k+kg13sp?h8IM>M$YP z*&G1>I6@`8R(lBZ^73A@vMODdAbP&Xq==a&DmuMUd0MJpgE8X za@Rwpd!-;TT307%x7b8(f#t;jH?sX;qcZIMei3{_bs;gJzkrrLy?a3$ z65^hk26vG~15YCGm$VNZLHHhbmm6m)6$ZMKDQv~MXipDa-~(aPkL!VuqMKJHRhlu>2Qu)!Bx@-QZqaA(;OBavS}!$?tunCG#0 z+O|`r6P4Pxe^;WWK0Ys1%MF^;_gL+TsoTi(?i;t$_MPhQSIT0g<}2_iY(;qG8O^#$ zp@uauas@E2zr)a|c{MPMI3bVtW6(Ipl7l-eIX}1`d)k42btZnrqa1qs<4B$k!YgFd z{n0)=>fiv*$(*(nnf`N++D^MW`gV$}A#wbR_;~(f#`)o={^I6-9v8pQ&E79XKQc9( zcz>w6Xh<fQ%V6xq#cg z{lJl*0EP&?0eR{+EYxu@bNT_4I<5j51E4V{Y!Hz@i78L(8Rw{kQP&uTfD^ zcMdZ>!j+CTGa##(>Kf9-r6m##2b-J;I0?S8(x1XFlcivvisi_+KA!h((8oz3eM9ib zGiU8aueZ}qi;0Xq-5MAOyIB=rX`MSm;~DufO6M;$CXsBYiuj>rtrriVLxlj|J5j{2V4bL~?5r$&9tuGB#7U(&`;; z@-f0Rc(=n$u@rn2dcSk7x)BW`Q>KYoT&l3}u*Vnd>i>+?hB7S#1H-{Yr3Q9^HDLj_dz-NXKg#iRQ z9GuEK@)-JlZ~O3b}Z^nfQX+mK+^PU z^LAgGhh&O*fB5kgn@srQn{GoU+D0x_ltG}3lgp978Md<=xX`DdXbC&(3lX92r{))x zx2d@27hmFwm@Jm?)teqtbx-Ux_Pp;fk; zvT2f>w+ZI#+a4y+tmh?OZz*lNt2<&F^>US77zGn}%C5dCRLPqBGTu$)jVB$1*B*rb z5>Wp_dSdiB5OI=Yyy4-zO9|D-+`WITxKq~G#57{*F$-m6YIcT)wf!KKr(x#=bfYyb zYtXq=J{x1n9pP!gJFlB1aQg#w6yQDTSl-$GQylYqbLN-PJ&1OSuAZMhW!$m#Hb^P} z(`0wLA|xuxJ%wu}Gz9TP&I9PRDm#HdHC)fdzOWa|FHhVa6J7zVCdcLtecOwDty8Rl zfyOUq&engK#SM%;q}51GVWzp+)SLc@h*(}TyjdbRK5F}0if=M`63}A~qMmH_zWB3M znAMdBihKU*m4QRYAs`Px9;zaOX6vO*#JC-Kw;;igFLhKM59w+CByRDJ8(4C_sDe|N zk3}p-BdXxe%5bj1?7d8>WLLuN)lM0g#V<0uxf-w$VD6k70~U`aJ}BD;Y;Nvi@r+~L zP)@ypa7Bx%bLx6J8UX?A2YJ}89gqUx6gID{4DN?CHe8*5kD9Z;S@0Hq`JzSW zD`8gmpP$q(oTMeP{e#Ipadw z<%%%wtrmOCueOY|zu!NxyTh>6)?C(qk^f5OLfe@{j@du~anlP=vlzQ~E4uK`d0aD- znRYy@s_t3(Zd#w~QjBe^MQ!YG4@EDFDoWFprC+^Lv5XkgA^3n#)~v!;^Xr;0YqavUiYK=<63D~{K2XAn)J7?0s;iXm?Q50 zY?)39l+=iCi0TS?{ylHgrF`Gq_NZS<{GL^I$6d#eUX^?d#U8lV54p{?eve*Cw-CmAl}~wZw2vyZ5EJF7&rDtGYXH! zYlEHB8Z6lSvhD9)@_T$3F!8C`sTS83YvwKIvpBUa8cJyW|CAuJVv+qiG{8xa%@AhD z;*rth1G#?&Xbp85zx`;E;Nst-l_Q{DZMr5H(TD39jVK8|+zrmta4n zhyYsC{E<5`nY)ddQE{X=yN&HkKqw1O5$Rt5WFGC5wQegtcr8sQaSOiU>5)I@;!Jpz zs{gzpCp|gb+!ovwbv875Cu7dg(b?oCpR5I}#gci^JTtv#a-7BQF06^+P}jTu=R5>U z!>USu%n1Af(kAs&;FTht$MoV?n{;`Fg*y)o2;yn>I;e-h1h&z|Lxm!m`Xgg4&4W&Ror z@6pbCALUGOcXn(|B)QTAp_f3Jy?X>(3@b=kd9q83fi@@hs8q$A@$q&J{Dp_{rSGmt z2H-L*1l752UjKIRK?zJ0!Hhx?xjoM%(66TXfAtR?ZOtC4{;a5xn;_iwYRt8dt`(Pu zBxGe#H+N^Mr$oPA{bk%~VV3WYA&L7E2KU%($B`V_ zzZ(+wMYlHqJsL*p3815+Z)R;n^Ryr>xM}x9gbCrgeyji#xYDDv*79(?mc+ByBLJh} z!4Gy!xUj!bew-2Vgi_buGLs%&mX7IAClxTL<{$!rFJpGRPMdv$ikaNg*1 zSvkq{@&4|1y3w68CpVYy<;&s-OO_ddljCoW?5b22zmolDsw{1%6lf7w$!AlaO4JyF z6&szf?=N}C2{wEDR|U1=2$ zL17JYD=@ea`2~o)+wsyR%`Y0s`*Yv@`i8_ysxbQhPByY&>1YC^{kL>Lu&X&KlE!X=ZztV+X zxb0}Y&nX2U9~}#eA|T4;toz z4<8bW;`JZw?QIXlC9P(h9~C(NmBOO{0<~|A6{6NdVwZb)dz;vjE;KYWViFSzCT=V& zEp4;tvg9x4&Hzn&mcQQPD5nNiSy@>Ps;RQ$Nm)g)#qDuQSn^V^HqCgNN2jF~+mGdR z+m5VgMveeXfR>I<`r7kS?A)eAcv>FyL~~6XAtPH6W%IMK+0DR5u!$It8LZcL#KiX;{8-BqdW@Xnjz@? zM59poC*Yb?OXf749xPEC!On<%eEKGb^uD-jz-fbt(<-@9p6e5D)-c6xP}HgtV$^^m*&!o)Qu6qQ}!;3 ziLhDB^?E;5|KpL0m4DnyDR32HGp;F1Y!w25yFU<>LnyKtdezOkf#IE8qyU=p*)TSw%iKdRjR z!&h-j5o?1AJ8hh++L8!4-+TcT!^3Orrlu`24oH<2Ii6;Qij8F^>|B?f&e3zi!vIiJ z{vP*pIxo1@i0#HaI%)Gq3keJBh@q2zPEB3L5Xp^^LzLbp9tV1&CLh-(`DL=LO_E(Q z`mRM_$%n_GVXFYgR?(i58B^&s{hVq|KDr`zZwD^6IvCYk@LAI^?a63mbX)J#l=fU= z?00BQ?)Y(VaB!|^cVyjB*Gtxgn(74fjL{nyP&%fYy=!X*@Y@x`%CC|fK+5Gzj zmfwt~9y2I1Qo=nK5}L{uQ<0o?#ZRTOG)@L!-mxSSM^hhRxqC-H)Xv64qIZfa;7{bQ6hqUTRKx`Ddu8}WYi6*LeeJ#yUGY5jI^T|`2$GPhwWabP z*w{+hLTLH&vwV)R#cxkFD8;-qi$~noJ7{J~U3~haA6x%?YduO2$gvuJwKs27QLnB6 z9|mHgo;%Au+;AlC&R{t+pQn|&l9-=`;Jp@${q(q%$!t?eagqbBRRm5B-DThl0E8;m z+DA&M>x%Yz6 zBBtOM?CNyHrd<5yP#Rep0^K%uzt>c-1!lNsa zXyox5!~VYKle-MTeg8Ez$$e`o*NaI_a|C|!!m9!dVQPb06En}eS}DAb^(?yAXA*7QtzPq`E4y5q(^2fDa0%EcJOJ6I1 z`jClwyv2M*3Fq6od!Th~J>%51+%pxX!CJU)=G42EZUJqX72L)`pgCEh8^Dz5@#KM_ z%{jIrF_6TdL0})h#wU=tc?+a#0xuT5hyI|^Aw2%2Ddn%J3DCXt1oD*LyCmNA@q4Sx zQN#DOr5rvfQ{BD)C6h^vdZ#Wu|6OW^Xy|!@%vB8tsp1)(O4(}+<=u>K2_4n1sEqq8 z`K1If9YDAg`I!B>C~crQBuTm=@xdygReBUqJ@NRxh7=s9>j~+ z5Qv>dlPCz&wZ%e(x31sZ7KKf!YBP+o={|A7*2(uoomRP_mK7s609DhL{Y74HW%X01 zH5hGoIC_b?shIn|K9VF^AMJrHvXp4h?buMSjB(hkz-Ogn-x^e}xaUt-p2$eCmoi(i zgFRrA@K{$6zt$G14pm++B408WoW_4ujF5gpR_+a8!2&dz+@>HCHcM&zjn7Hg}&ty1?) zRr=lvVsGHss38r4Yot)8+A@Q5q3(SFyb{&%O@&QYy@>+WSFA9S?r`#z@!i6Sz;Vo$ z^I2Qy5`;Vvo}&;^w5#p;l;-v;t6sE?17P<|1O3;PHg-6s=G ztZnV%H&WB~6_-|C-;Y!YGAs6Zp1^?gKtL_0OX>PR+D=(|ah)W@Mzi>x#KfQ7Srjf{ zu;e9TC-%uzk|+h4Z{_M$lY4psv7IjJ#MhA6e;|R&4nvt@9=jFY)ogQ`&K`wKF3*{j zALM3+QtW4MvprvNR;y}M&0_MNo_z(>RK8-T?*aNzl#NcKOFAc$Z)G3(&|3!ap_d*Ak z;A2S?={5gP?+)mnlk3tBf!rSzULQqD$jBoZI`m8z+f+qoa=E-}pGw+u?tH<@skDL& zH856=3Y;mV-kN^5@!w9tolQne_5nJ>(zoyoFL5S<4Gw4$VfA;;U^vYNATar)CM!Lj zR?lYfcL6HJX+6Rg5bmLqkRsx|N%0mI2w$G*Dw02y&M-MOUkvV)tulYmYb{exFl zfrq7n5}SJa?q@BxQxzJQNLAKu6|i_#*!$dDX*q>gaI?DzA!}F`J!mmL7Eu;B^(YeC>O8Rl=cP_gt^mVIoN| z_>?b^OU-gHJ(S0Ca8s$6vG)zTG~2^I#F5cl$MPXt(F}`OT|u&8yWL5YV&n8N$vW>~Bk-0TyErP)>iWb$vl@1LHaaFRc~HtY;?6TAY*H3A5q!{Os#^ z{Tg8I><#=!fiJJiV$pg>=x_6oF&|5J{Si7<_iR*`SI_U>_pwz3X?>YpYbR#fk|o^fC5G zY55A!dcP9)(eYc;|A~RX43H{TJ3E9^bvK-jEz~*F0ZE$goZl;@)xieKZm8#_$K5-0)Og)M~uw=PC1e0to|FP%-rS>)RfIl6@wGB*r z$Fu4X97*G!&NtAPU%yv$BGeP}W<-kq@Rp4cBdYY9^b&#l3fI~FDZae(J!wVVLD;R1 z_cB{J2@z*+Lwcj}!hlhw?F*r?!3>cz?Lh`m8XE?JR#1>^adGiVe}W0ylfHu`;8Az< zZmYV|9^7L0`0Z~1Kb4(>tIgkJv+LDtx<07rp(W!LF$4wk==M`o1?Ek{>sSv?9kjv=2s&iG)lBz(@OYAxRnCpfy z?uD8cntve_5q^}CoD9$#?PjmD#K{iAxbbE6i6m-xqHk!DX<3^=9rw8&CYW6_(1Xs-qEk>Md7It>d;epqCu3Bs;L{bL)*j zJdkwT#gbnXfGT%fSK0VV-wwId7jvzN+(Is+>sH%CuE<7f4DX&)rbOXTHVT|gZKTU9 zcjbMgdsbjLY$y`I+a5o}$;rL@Be^u<=;-#<8H4%BTufEnZNOenb>%v;fnu)yvEkMd zr6Ef;YwumWUHJXg^Ye_BnjtG$vWW`uJ2!dwxf7DUa`A#KY$BChB$bzyYOLrnCgKsK z^5e^Sn?LhEl|mHzI$LWfr))y|=akU&Oyyb=ukNo~2i7_DN&!Q^d%vc*3V$W%HhcPD z7Y-%t14ORw{_eWMdW;bkx)MPxVOYF}WC2p)pIrzvCz>74kpqW-H*!UU7{p|o36O|N zT58+I)9lac^w4m?={jkaK4thh=X)axFa-(a4EKn_RrjE&j=6vi#XTeMzq_*G(3Yj| z1P1i)Hz{_5{T8Uc@k^mfdpp_P`;DRsRvw?ZbFL;jjtO8Q)}&K;@0RXwsTaL=kS@&V zSeTeLfqei@(=c*D0z&)mU}|3=!bBIE3@8*q!^5h)_OqI4^a@3KwWa(ZDI-APvEoZs zS7N-CHrI&@z#^b!WRxprkG){&10aC&$$-F)YrbhVRJ5KzNs`aw&=?kK|Lm3U*Pfmp zm!TducKp@vG3nF~o+e;{2LPjQyCk1VTUb!=0YC!KlXUcos95`+5AvW2dh6=ew+fk!YP3V1O>lOFVjEhu_(A+W0ey8aBY64 zcsp0+D;(tKD7Ig%MUePb)lD2*-CXiso*JfE3}GigLQy{e$pQ5`TaZXl37jZI-XQm6 z5V+aHs@(zLG$@dG8Ne2x#x^)|dkokfIXOAy76TMWV|LwW9-jV##iKsfGOLbao&Fhr z#Q47AGUwd<(vp#g+)G}oZ16GkJU|rB$<=i%)mG^>!wzkGJf1Br>JPVBIPXs}=RY#_ z0^bu(v?KZSK=|9u7mKzU117pX(j+s3F6>6OkD3yvhJW(XRj%I1FD>%x1E!v!}~L_g3Fp3gJ;HZ_0j24q+c1 z|F}P256y``rfmm5q?v^JOB?rv_x!WarO`0)9@O?DAT(kt6^u^spy~(pCyRP=JG9<@ zVmD^Djb`!j@fikkwKqFP_oH`%#bqtulrw~_chsrqA4jvA-zR+kvgmUHwwo@OD*k;3 z2xf;}FCDE2h=2q~uKo2(hq}iZBJOf?HTENbk%r`VT5j`C7Ie<3iCVodYXz`3c&=;> zbfsxwX13`%8As89vYpy?9c1Y3F!NUYQ2_Xt)^j7NuOU4{py4;t#|q`Mt$u#DuQt9# zMsn2R{hlEF7xs6JAqys?U%djmA}w5I>OHkE5Sc7>yeba#^XYaA-T-y8YPx;tjeH6|B`)~d30N6;O9z1K2VFgXFlwz1UbiI&nlMM5md zC1YR(pnOZzZBLf&??_$Of3*WD4a%Z|hK5FqbhZE8UF2zQLU{Ua8y#Ks@nPIacyMhvO^o5G3KLDz12Hx9)-mWST!9hIli-?={YUa|Z9`y`Uukp#K zdd9)tfUEN@^iym5YS;;Yh+`P|aRTr6guA{$M!q6-S5}zStC%(DmwABCTB9n5#INlt zbWyLQY;J2E77%9#jNPUW&KX8ea?a=}3dpf+!(XE^6Tp5^1>|SirR@a;twA>jZ*G;k zKiL>VoH$^rdXubgo=#}Bjwue1g3~oqF4Ya5L^)QwJ?);jf zCQ!LcKYJ};t^}h)h>T@rWHy!3rLQ^~)FTi)3Lmn8XxT_Xo|?IdlB>;DE*rQd1Lp8G zFz`3v&5mDbi=T2Nbqg*8PpMa z#ivX?$HrpqYc`q;s_eI+t>}oBpc}nudlNS&C9BWp4ZMI|Yt2_Y+I>1XJX==_%f`{S zKNw=-tAI@$^anh4fvJblgF&r-|KK8*S->3BzJE=SpUQJ8I~Dzet*`XRL8>%he+Jv~ zDg}FY2#}i^XKcB<+A+6Lw_`6l1H6ztac%CcVs>y~#!R1NWR_*7r`*om4x4%v3m9qM zLuVNiK2uRqv9?H?EBvol8H#dT4mcxlYts-*d&or86{ScxI8bF{xa5O+2ixm$OB2L| z`uhr6)zMgbEszSd>r|r0jj3uQz8}%4>g0cm)(U%GV(#xmDa+cZ(oo%YCM5x zE5cXVVn2c^kA>65W4nI-+;U}z^PN-I*nGdx=-%BELzgkjtF4eV1>`D#I|7)s9>!Q%VJnzRli#Zu`L-S+GdX|e^mZ#@m%U@71wY{{uih< zBm1o`LmNtfDfVU&_KL-#X$YYh^v%tz1;-B-(0O@_tM?D z0NzXfl4%g;eNsUqH|V!vkgezCT2h782rYZuHn4=9&UbZ_27WMOoI0;`&16iBC-k&9 zSs=^lHCYahUaBY4X1xL7hI6g*yVzB8qgW?7ilH2HNscZ2+xpqs)OOyxC zzcN(GqGMS&n=&ek2!;~(kd?>3m7%j*l0R56_F^D`m4XjozXhh z@ooHpbW2ZarOq53jjuR47q`8eYa;iGW0^)G}@ zRJq+-TTy$lkao4>I!MQ43b_4P8k~a2gJpmKp#TUyI&blQs_XAx-|l(J|7$oSvW#=- zx%2u+FN_M!D^T)5Tmp<)iT1mP^t$5xDNZ}P9e&Q5PY-@fc=dmybHubA?QxH+f{q2FD)qGtAAZ#DB zT$d(h_vzlEGf1CUX2I6Sp(^CH9|4_G@Y8N`OXpEuea-1!qVIg7!gJQ{Lf$O*L?EVX z4g1xfHvVQPg$Jvw>G+$*)ly$HIQA=|&f<0y3joIlQPy3xE$=uk6onZP{WYXp%@7)g z=eKGFs0_2Je7?TESFt~U_)#R-uNa$Ip*NZUNGm934YiNE$!j`ky0k`C&ie4ax}VEH zL@{io_hPUP_dFxYR+NBv*MI0TimMLu)H+jhBPLRHx7$SHWDV~5zAaBRJ&-BZs2|rI zFK3hVkeU8bHNMwxUq%%bWB+2B}huzPNh9{mWd>ONMMdmYZ}b^`>c_p8Hm8AlbAQyml~Isre4 zeN(5!r+$)GyOQ~0djfaLz&(S%I{Y*=J{xY*5o9%4lEM#qq35YWblu}6U^D&{z;2V3 z>=NhGrpW@1nUnu$SMo5?)4yh5_*vA^-9v_$DEghXOE7ajNKZhch@*M2H@7hk2#qfJ zWmd8=t$TZW$RVLjK47o*vb)lI%#yRkDI~W5-Sq7rj_X*mOQ09y-B_OhGjxfB$;e$I@`;U2e7qU^#CN)37IhlpCgb zTua{>lYQ|c5OoG0gN=31D>e=k8)` zA-lN`|EOSx2*m_8v3Lk`tGY#Qcn2@fq$wTLLdGxCMStCGk=-?(#49nX6LGKh|7I4@ zL=;r3E8YGGLT6jd4DVMKj3S3?DaY!s#i@voe0fq&A{=`fcn!!UD9L@mikmH`t9)-m zQ~V9k!2qXdY&HPjl6c5mkOs7A&U}sJy$0ZHBPvgMkalHX(bZW#i(oQ#kA<&q5W$xy z1Li)B1Qw{hwx{A_8IE^d9zM4H&f)sLk3zS83S==y%m;`sxlvsBwor>iW|hTCu?VST zK+o~}D?i=qvPC#AyoTuaG>4Z^cK<``tE8YEw-RUZ&)O$c7E9cu8o<%~F4ssuZVtD9 z4|D-N;jy3PwSN-_;NX>$A&DvO2*tP##6Njj+Jlstay?w?`q7Dik1Q7N!f5^YHR^Cw zrkR%Ua&FLWmW{7w6$pHU?!K120m~1XY>qa2Sk7Uyb4AcYS&*BYC=L+0+>O&){0kUi z7|8aSZHjNG9b~TSNP5U@!=`&X&X$0VY3PjlTe|Q;vacgivP1)ma`Bd^&-oXvT)Y0- zB-itKj2)bN!U!K@C)K1!h$i~sI-r;y0=rnp(h^rkDv13%Z&`wG&S=yrP=Y3c2%Iha z(^!HiB?e3E<0UKVR^+;n3C5ATOzq-A&ko=+=Fv`rAt@3J%ij~Qj^-QabpCOB^77B1 z$xxBqUh@jen+OqCLcJF}M{7pR$tNdVqAkMDqDsZTQWIp2Nd)$Mnw*5MBeGAE=(ape zI@FpfnMd+%)dv`|IIoAFjw<|Sa?9-Xe6xb3@|RIr1WUyNN{yb?+wwJQ1u3GfH-7fc zp7WZAOJj|x*D2F`U&y{E@xcU8>VM$yqp3uSV>_~8Bs1|bNi5Xle>zj>71&F4E5-|i zi?=?yweM}{03+R}PG<0?I#YV*k6_!sk(bc! zm1toC8A84`Zf%ki6##@13i*ec{<*@y;6&;L6$HbKnVwq2ay*sGg6u>vh*>Bc<-e^= zoDPzMTK|Biq^s}fYc;Bv8@LXF#*D0wjQ1u5Q>;53ySYoKr0eB1FcA}>^g%JZwGSDo z2dfT+?)xZ<$gMbqQg9bpf(btr>{QKezK)Qy z>F`U(RW6m7*FP#^XYnNP%3-}*LGO}<*te?eBAz`mkw7LX1P;XJbkTf+Mz7x~+W)Cn zoc(n(l=uEN0k+zBAY@+8X>>D#D`+oU$+(iwx^2m6!_H7cZ>9sm{a@6*Wn5Hm`0i_? zq=HC;q|)6b64FR__s|W(fPi#^w1_ke-CZKx-HpUh5R`@Zh)bv^SHdW;h%HH@RUs!aDH$=+<`5#S=%fVIPZ`y!w14IK3U)vMG=??d{u z<>fK04*P@Whwo4CD^<4GvQL4cw1byFWa4Q&loYR&D;+30ZU$LG2%2LCY(3mbMOBhf-NYoD>-7Mbrd1nM04NS~U*Ww}?Cs^S z&l(UCjPzAtFN+iz8$2e#nH&wcVKX@%$lcn0w((iKzCOD2pJrG zOXRMk5*p=;xO?rTOd^mjT;T1hXl#YU8Bg6L#(ymZ%}95{2hOZm^F%#d&u5yi)l1Es9o1@fbWUJ>5_G@X8 z`YI_1)Fjrg+Vc4H^jo{Z2x=%0|Nk8w`2w7ckQ0&};Xuck1L(8PDaZ?xodgG{cY;6vWw@pz`(V8PZ2WU4Yw3U7C_pKzxu7^tz_sS17^=hKN_bAdw=wyKX-jwwU8$0u^Gt}kZ ziU?51+D)-%di)=~P|J=gd4go?ef;1V^Q8ZtmB+T|8Njc8-i8uqbm5+*FuDEb#{uM9 z_6mEhm9dwX&nKwV?6vC#gYBIGKU=?sHa@XI814*m&3yMys65W3#8}5qu0* zb_N($0stp^{qE4`u5lbmFB4m4*K+wxx6ySn@pW)$=E70dtbX3$4jWT10OHUb?%wR`eR&s*=F7+_o_XK4cy2&@7cw9G)pxD zezkzk)fm2s4O@=%(&_XM0VTnrN25_H{{$T-$xrpJ@funhaTf79e|29qzAU&UyYAI% zYDUy41B20xRxyE(s^3;wL-mTeff6>|&nLdvEZ@zewE!L_aBl$sbw#=PFe&5n?r@4-Ryxn4Lv>m%UW7)y}=RD4_#t8w5|klSp9>BZ$%Iv^#(0D!lf zE+3y}Qk9_PT#^v$fSq-xfH@4yJK;TNrUSHeNu zazMQ#C-u2@fDV;wWWn93C-Z;uIDGW{KrYJ4E2E)-51yX;v{N-^BB{o5Tq2!5oD&eq zzqB60M1N@kt6hoRw!azzVoAV~qmY)U?aep|YGo?(&6RClO3a`2Ux8mHCQX|YIW}6Y z!}!@oYyPX9>aXcPtrsTT`UmpuICL6}j06heAzwH?^4ChU|7~<<2ocH|j-kA7Jiw5` zskq)+r|ZI6jHrp73f<|7vm0lT zX#EybL<>hI8Mw@%Xt`0=5f2BCZp#vYH;o>>zJwJ0%UhWZ*$kKFk)G0x@S?|BQzE~j zthnaCGbOt;6=~OU&|}|4+Zf54kxz%B;6Hrkrh}*AsILZFqS}e8+(o5oivu352}~Rc zMN2B}no2TkDMxloxer6DbRo0E0WlAGzj65Q&Q6e7b$=^dsUm0yxUk|>``J0c*P~?V zH=7xW_pGMG|88lVP)5~Wd%3U0P3#PIxL)wole$2+p9D+d`_H0$iVN6D*LY|UpVD=; z%e5k%?m+KJ&k${Mu4qXJH+N}@+3OuM@@Ld`Q%cB#cd_MF2=zoZ238dpGLt+0K%@K0|5FcX|57OxX!=&1i{A%kZ5~=M}E^G|a)1p{c*Mb?HL}c%AkX$#2k$r9OzMsDOd!=e$TKvN9<$RRVbM zr4ETg2_pdk0l52je~90sk#iw~kB!huMPD~Blv!xdi*cMyCcfkin|B>bz$~yER$Vp#kTFRN~^-0D3}Re37DtG>YDTvQykI}5`H{C zJsA>?bJKY;oIB0ydYZwxVKUG6w9H>k^`DEPPdDMzDGED7VxFWOQ z8o0cXun@onZ^oYXCxh%P7TX1$CLs0yJ2@FoRMVxUrM;M6zRg99y1cQJBA-7AdG`}w z9Jc5x^dIU`U@!)uLOXVWsp1$AHj|yuRv&?f+Vkp5vLUPk9qG_?KPbFW7*X<*IfYfT4%p`dp)PG8MYPz5CJk;|rxiJNmWXa2XRH-gd9q9vs zmva3ISmxv0!O$5&tvU^Ar+>g1$bZ8}N6`AW38*bKE!oFLjnR;gsEx7W(~8O-PYXWY z@P_TS^|llUoTnA?CD@8V)OH^Jph5@EEK}8E3iA;3GtqbaNQn8Cp2U#pnW9TVB_5Mu zcgRUkv(B+7hsTKPT&Qsb43CVA3{X3ggM$DaLhw?|FM_-Ezf*?#&R|N(54WX0H!^5L z)I>ELFG^t9v!$h_CyjoR%gguKBI$(-pzl$vb`t0aeogO(f;(+x{P>E9j>f8x1F^ph z!+f;AoyYjX$C0U=+OKk>;DL*>7hmjP%Ba4YqUER=qQY9;u}0|A_u<)qNzm;4&%i#| z`W;$h z@4i7$<==|%2ch7f|Vi; zAi*jWrdS3Uh>o$barOD092fPL?~@j`seG>ljxF6vGmIsVEfPlBnc~_d81+!BP$l*@ zL4?E&_lfwYPxDYFsjq~uU#l?PsK~h=Nv}TquX+pdphDh`I0D(QOSAh|WjjaOeC27@mOQd-Bv-|<1HbMZoopqmA0=#%i>{D5v zu!?swWh0kr29UcNC9#NUF;dsl-RWV=U1P?bW!mZ(;9IbmDa&vr?stnZ1?|CPU~Nn~ zD?WP9;NT=g(#g@WswGEBhA!?&-I$&7?eM_BgcgY;jb8Ew)Jjs>V&^gB(Bl+*;Si|9 zU-rIKlZUqBxe=}mV7yFdXlOXc_5F}yD}~-D0<0aGE)WEFljOpkdmxv_-J(7IfLZon z6d!c%e8AYRl$GM@%jxk~Dg{aNgMIDaY#1h%QURplUMofM7@~QKh#=x#OE&*G>WA|p zdb(IU5AlM5{xbaZ)EOEH%Uo*qwCaY4#~I6|JhfYH(e-pE?@i3^ashgZmVq#2;{Afp z-OXG>BtGj$PXH}hFuuQ^HG;K-ehp-ZKLF;*N3h2W{W#VHOj$XfBrf&?G9LR6>6K|u z0&zL52S9W55*IfIp$`<)#A=#BkfibMzBRacr*j|o1FPZc%GoKEp8B)=^^Hr@DQ|bI zi4=F>1;6vmFJjzp?4PL}Z2;Z&@xzC&LR&gx?(z`AoT#*kHB4fj&qNgO1O#-f-n{3` z1cotz&4Fb9d(L7Ua0#qXq;qjJ^WZb;_J|1>7O8+nVMe?b!DTog2u1GbRdA&+GKtYj zrusx8Enn#6Se6Kc_kzG7EpJJ=f@|hDhB&hp$32;S*mV;nVeG+tt%8qfV{~-1eGD7J*Uy}XMtV~Fo>ER|d~Vo1&I-xg zV9$qJO~P>RN15)Pp1U$IZeF`R>cQ_hy~Xq(hiXK>o)l!as@PDQ;yX|cHr&cKYx4+w zjyJSx2;gbaJPKIopAO%W5-Sl;xmg15r`0CC(YJvgpCSKaQMk4u`orW>iYD)2&TuLH zecbDY--b}-&4mZF!~`T~wD&KTCk}urX^w>>vWA-6U(P3l&KHo7R)cmSI%yo5@g}OV zKMEUUq@+f%S!b;Pw8nJuRXWAB5kf)T{-HWWvbV3(cLEJFwa-fDgJrx2+$*xvWyNIK zc{SFlo1)MfK&umvrp7?@BWsJ5Xt7y!dAhMJ%Xt;nm_F}Nxs$}eRlNT-j_NZ;t*Q}- z`VYZex)@4yLJmnQQYL6zA^Xl9opJG;3^F$g@NVga8nFw#fOblE5+wea`{?`mKaP)q za`}hrbwsO!uri@WJ9Zv^!_|;*;(^Oc{Ifj!HpfrA&YO=aocftHTqaj7WgCJnRx4jk zXSf!R1r@}E0-N+Sx;Wz{@jE+Y@ zZnFBm56)2Z@@i`NCd(rbu|CTuAg9Q78b&puRc0Vky`QxJY;ZQhQc7%|B>b-Ez$~Ig zvmQz%wRm4fMI6GxI9=^)=yMekIk2`iesXOu_thu&FNN{>CJU2P@~vXjld5B>XiuH| z_BpT)2$rb9XiGC3=m0(6#g{{Z>xAgYbpqZx>yE!w>P|jhg0Qp>(z71k3hQahrVC@g z8e5fWme0ivCUs$#CtFq>)}IZ5cvo8F3*&Kte@}Sv;)1Dk?JA^AO|#L zf1@ce+my{jUOcv?8{{lSa$y$J8v(a%*aXGkHLXZtno}3Gbctsp81KQErO=gn3zRCE zfNwxCz4GV8x1~2~L})>QmYi8fchk5;T`q0>qQC9$5F%Ri&uXzVM~M7yR9}}4&ydTf zd1BojKKQBc^ZFi-%aA!=oh6H8k)(#1WJe{1JJ1c%{pE})v>N&KaC0cF(6qQDvbzY~ z!)fi$3&xqMMC;o7u&M2tQC6&@eQMEhcMo3k3&Bq-xG{S)kLO#@WHQy_011>REjQVr zPr^{!QliU1>^9}0o%?_Fw!Q3pr^W$fbEqk12;Ff&GRGxlI_TVn9}|P#-n?(ic%sx-!-|A z`a`@Bj1ALLv&v@v&AkTz0-C?Q+LaZ9!~;r@lD9|m^y*MW{mQ|M@?<1OVRg{^m7C;uacFw_AAJANdyoq;7%nW zzI5>+_aT~YD-5Nz`t+z~+MOm_M zHO*I+FvT&WcO1R#i3^I%N%8K!o9zGy$=}LTTX|W?ZA)AXo^E48=x)Cus@UXyS+O1CJpnsO~^LgZno%n`93$B zBW~)C;l%M{p18pyvH~wDABA3)eRQ{~0`>fmQqMs`tq0n*2{&>!z%JfVA10s>3?q~h zdS}ca{YKvM&HHxxn8LURi2L9KU`qN*WY<)##ql(OQ1#Oj*vFw0@P99XEJZh+;R68q z$ing=IaW#A3RY}SqiJOhfx+cimfy8M#@tv6rXyV zy`Hwx0MIXTvc=aeW3#md?lRrw{rL!{n_X~h&YB16by%oL9pTO$w?W&3$a3lUKq_@D z5Sy3))kF%ZnVJv(oU9<@51p`Vb#2XnKBY3-`4O9b*X3Gp8gM_YPW*1D$=2bX>4~SKEL@hu_wI+e=+VEhx z-Y(`(W958j;R#-r{pIMyvV(SznG)^ol&TRPW`sMMWC0+g6v`>Vv6(&4RXhHOykMp}Id^|9&Rmj8>cG zd{Nizh*QVjL<(f9(uhU~ZG9{!=pHpdS39*QTqyXQA`?!@!SNcr!qWt1{SwpXHlRk2 zhoiiQo@ST+c)}g~83ND~cc7tF&6%j%rAT(h%}s#%3X6!__RsxrZ{IL%Z>#U(pU6-x zz`!jBkM%wGIYFM-Y{Bf8oV)G&VHIHWEU*e2+zt;$+BD95bw26nM$m`eru0cg&@S(k z2E&Bv@gsNU@X3}BlSGPr{wL~Tk+wP%;N$Dd{v9l3E+jU=1fTkpM@{ECWuBkb9Q5W> zy>Ij*oZ~6=p)xa4zUD3NJ)A`=k}HnF6E*KvbL2Buw>QZyrb_gPy*EPuCv$ z%DdPft%-v}Lm3?%)oAr@o|0vu?BIp&rHT0AS+2d86U$j)zLR;&)Nj(-{~90P!YOXl zZ5bFUmfy{H6PS<)1Is?}S;_(7-0}LJ-T9>V(@E=x6h_*_l+^g~G0hF%9Z0#|Pm0fN zN5LYUSay(8YMccUR&k(mO(GRf+=@IKBH^8-nHLZ{?nCM3T^*PDy)+|VdGLTqJGqSp zgL>D8>PIY}bKu!*Phpw9r6{=w%TPsl>k}&MF{gX19azz?Q^Lv9_d50S zDyrtjL2`0W?|M!HU*YzLNehm(do2f5dWb6EKAEp|AvQ$COv!z)w|A5+O1e1g2^mNi z6W2XMVwNLe~5E>17FMpeN5#=>@D~_BvNrSAndL^5tx= zVA7~h6sJHgezO)=7l&b)H^Ex-lV zzOY^wk)`d4o=<2mO)s+lIA_%?EUyF($z9uv;^?1Rz@rWz$IecBgI0$-42&-b{FT`X zwm-zvq0o+Xc6S?3m*~zpue3d+qM?Csu3_W%JVv42md;SSO*H7?z@>hwq1>*c*Kb0q z0n)PF6F)YcN_~IS%(45OkYCxRKo)!DRlHbazwqsasFgf@`!2{F1n~hOdwbS4v2C)E z>YmAws=V?!2`abTB$e1nz{8{HnMA>vJGAWvx2`CrDjx^kM)eLj2a+II0$9Mcle5nz zy<*>9gDEQP-%29~kb@pPR)xvaS^a`Uv}9Bt9cCC>Z0yz%s@1=3E$4l4;w?8;VS)4F z8O(&4_Pcak|HOn!@szZmT0ubkUCuw|xa;sIg`40f3Ewy+aXMED6`4B?a+S3((q11> zTz{+GULhjKgp#pxN_=CCL*OJbS#yaZqiMkzq7Pu zy6bP6_}=HK^cuOc-Kfu56pS?LUA#QyCK@lNm!R-Fr3Ue8Vv|Jo18BDBKRaM(F}YB99S*3CAa`Wi8?wH>os4iIczavsq zYEVQIk~tZTRIc04TEstH7EEe7W4W#6#|3#mJ&glz?=wt$i2pkR@UgqPNAs#$auakE z9V`ZV8NA8_H9?FDcu?QBI4Tm@!M5STL6@y0-LreYH9d1mPKVc%ld4%CzGLr8aJ~=s z&2PAejW-@7cL{hkt-rRtGr=;u`TiB;)vPu8TP6W1p{qn7nDG;P)rQpl3#;(me=tl6 zxvyBcdTsOC3I+qAkKOGry_@h{uzQnv(UtCB)%xCKOBWAD#@nUfpTYSsBQPcsSkM^B zg>Rq=K==-n*7f4HuvCSAHrc&=rO4R29xH& zFcwQbAG>Y|xX=B@8j75tEqpYAIQz42vunjEDyEv8_(@J+yfHv%i)Wt*nPFG>0UDVP zhwRz4{o0-J`wHHG47|aIiUdqcbux_WneSn+8ebc~kt`1qFp&FMSHOGSlq8Z0W3uFA zQCXzdnlOC?VrXIB_imm7$>wU+x5%2JJkDKEkioCMtnDl@{+M!H*&N}k^XHUP3E(VT zk5EiYZJS=HTfL7`r9%Vn_NTv@#_Y_lvjwI?O)zmJ*rKhx@KQ+|@R=?UkCoA%gClIw z)p9C`y6Ga{qZsn-(cip`*x-+KNWe*+pzA@AIcWX44pWL}FM>W6n98Dsc<`KKJ1K`X zBrTOvLkfSz=fk4kB4R+S{6b+pR})wpiY|XXRQpMtEOQ6dn3hSab_q^%|7i^j$ddYc zqKzg=CS*x?x%AI9e|OLzo=#ZdJSAzSnO3j983TkmZX|-UR7$A+`i4{WS32g;_Bv)a za@xh`2iUN1FjO~Kz#ylSv_U&`WHRWdtpuU>q}uf;-5!{V)YO_4WV@s2mCvdI$*yv+ z!PnFMVKRVNw)eNp?s^$36K*d7tgM*%oueuCuR!j99Ua`yjEhpP(Q)HK)R|0usB+h< z(=pd;DJ?f?tYT5#upNBY9T>Z4Qh9!;`qG;eXVgb7Au zpN1j%fh2)Vi=+DDZtVrSC(jr1?js62l?MIzZ*Ae(iI8DkamwaQIH z(B^qc`zpprrY++Q3AiVLSSde~D3iZBALjyOg832x$*_KkI4kk34eNc#rTezEp*!Uh zn}03oQ~y?9K}UTVPcU`5-KO~Qt2f)lrpxgg%q3z&87I6RJjH$!#V;%`c18&H_+oss z;KZ>XxS|pT>CBH`c2AG%64exd<#fLf2e|q(9lqi{YFf}eAO=SOv$!uY?;kxmEW6BL z>43-o$E|e!U+=l||Mw?;|L;0|6^~*}qogz*bslCKeDEC{= zOiK5-+Y^x5;zW*2AvqkV*TRvh8x3qmppRP$G7gLl=QUY1{US7<{;9tZl3b~oYU_b z@Pj6#tzO)yAB4mHvEhjZhIeGeb!FW3)N8mcAX?*Dy&rEzg^A6V!0hMjSdhzOXs_sc zh}f*CGvny*^fHWicIRZ{Xtg&pY6I8|0m>)ZrO-L>RHp2Ui~yT^Zzi3eFI~(y z!K+%sS9-Gs^|=F|NwjeOni?H;#cMQJCv!3C*AsYZ%4kaw#9&uG>_~t z36#qaSJgZ=Us4jvu$Qf69CjWo;J3bE?-mXS&@K`Dbk3CO>q*1VM)Ryt^=0XxNeLSn zR>4f82V(-0*JFhUqVV9+ld=PYS?w+Ss85Cn#~ZCyYihMaNyi;4UR6P`uzn1>6OR&c zy>6%rLQnZR{f4@=lggX}IcrThGMzeK68Ut}#o++A-u zkv(s?9oAv?l){a90t@pa2K3EyaY<3;I%|UAq;D={108p<(iVBxSFC!MRL^!IAzG3p zzSCxG>hY05Nl{1JRJcVn-}i-59o!#pDomFmD$Q2X(jz;1cHhQR0)Ok^%Wnr+TLx!E zI{~?tI7o6yfZO^|bqVWVn41l!_|x8eT+KVv5+RS)(Q`#z!`v+uU$GzX_GXhf4gJt~ zW;4nb9JOD7>VPJ8?%>2?b!vc)&w; zHWJHkkqw!zz;M_>qN`#wamCg5ISX(Qh10SR^aUxu%SWJ3El*Gv{RtzpX7XG@%|zYc zk{Q)k_Q>CfKpL)Y&t!;Z6zCcd-fGkkd_s_k7J9PS%<-V_L2jK^EpYa*vJbmz_4Cu4 zi|(w$TJRTziG{Y-9NwDo*NAtoZzRj=z*JFOpbH4Hih(5Js8&~-?sT7m<=z3`)F9zU z(wAu;!;>Y$qdtx8sAOlGQBV#Oxmf)rU*90#TO2sf%|xf zxMNAUX1$a$ndJiccD+t(`XcSZ;qM{OkHWi5AD#xVnM04tZu)x8*(=m3%_|1VCdgHX z!P)tSU1vdSPBZha&F9_XgJchLS7XE$Tq669`1eFP%UfcX;>7@uWVl`TTIv3L`C%Qh zWXWa4iI<@D)(-cUO*Qs1(D(w{{8Gu8pLR|tOzp}#Z_Ye#JlarY`O{gD<)YlxuKS}~ zjl0L03cLL$@LzK0T+e%YC7w;NIt{Ysof%(~+BCa%(X5zA(^M>YeQssY#4DaDt!Q0~ zOs%OT)`#O4>0aPhU9fX1+jHEyw>wZ@p+M%ly4Mt31c-TxZ-3@t!C~w5(e$%C$X)3o zWdC>XOiaFI7c5)Mnty_(+6U^pt(4DvI;kmlV^fi+@QbsNW$wHds~?xhI?oPzZUPin z3B&n=^}3D4&o=$P=bM1|c||2ck_T@jn>l0jUa->IB76>6#$~iBfEJ`jb)6Dld~<1w z(B)rkkbscBzJlyQA z=6i>;K2YM23`s@e)qAJd)n-}tC?(2}xfHX%=8ZTWGd}9T6UNi=OzA^pa4slMx=5#K z`*aoTI$^j#nUI%U<;OblR!*6G-twDvc>5ZP=K)RZQaok+cXa}VXFgx=s+ZSO)@SEV z3VCvOV>zeIPF&QkelN~r5Okld4BN~*oQCsz`AxKN>g$iUT#D|ecJ%Vl6VyWrj4QSg z<5ifsH$`M9j!}GNp0#tNFLyQHcQC!l)#3d1HH7K1M3RaWVjP~{qj zkn>;HyHXz*E1A<`LhGJXAIdFLD?k%7uYLzQEvD=y4ks@kUDh_n=2!hH15a zE8KOv{!A=y`lEa2Cbitr>3UMjthS3}g!&H&!PW$8W(jZCH;jwxAb<5`yNPun^xcgp z^m?Ydf|7oCioKd{qM~-%95RCaT&GSc&a>PHo#3gB#KcNhF(m+Y~-x+sy?1U@oC#o|P zp{1O5yslz5<- zq(zxKQjdZejxAe(Dp_WCibvxuU&z+ycXzXyCbSb7+XmFtDVThueEF0*1aYIVMr(6S ztf0FO!@n$_iep$zv%mJNeNAPsjW~^CX}aU$%6AlTK<`-ky=jR!>Ya(vus}|>tzK*w z@@|iRPETy*)W0e2%x%RDKaxo>)EaKPMjsK~Tyq=OT(HBOYUL$nEUx3p`@_)DKRnb4 ze**PodQb64kCpXlyIow&#a`jgc8Q&Fb;iVDNhb=(nmBqhUc<1mZ1qSl9r^NE)tPd4 z&>UHZ+*L=#kh0oZ)(c2uU-+r1?%k^;j}vGSeT7~{1b@`eNJ|`)tV%|O8k?C?TJ1M0 z84icWrMFzySF4lE`rS~&ODT@ZW1wGq+ zuFUor9X|x2r$+k7krYhn>%Z;Zpr?||ZP`?H-3WHA*lZS`GUJtnj_JiJX@19dvtd~2F84N6B zwpvQ*^WJ`;w7iuRC~8r@HQY%${C;txf}Y%T1`#Q~+J5nT_EIR}a1<};$yrAgx0yi| zpKuYcG@C0!n;=$`kITIC&k9+Rs8|1ngFDxHJB~tku3SCd6yimQUOj-eXuunbRd$h0 z1urrlKGxIquMI@mDvjdn%EF826hu44Y1wiv(&xcuY(6oMD2M-Osa*MisdNP?t|^@e zx31NnaP?HRskIu4GC)r%s+q6ze$EO_Xb=+Sw0<^~Tq3e$Gs??DI*JlToJ6gY9%i~* zPZ#p!9c;gz(MN46XBd$@Q&lWUqbmA@rkNKj>U_L5QR&p3Y3KTja+B zqy4#SqvvV`>;K?xVT@b3~||uMx1b zn2J%!rmm;BSj=NRMxQSm8iQUVJd&K#`0mW)JJ;}`N26<|(2PPf*LQvLsC*WtvYw?AKnEX#`D6+D$QLmAKw ztCh(2tQnZ`xFI~g=qtQgVAO3DYUM;-pZJpGojbx;z}ESjHdaLNPEhXZ#l_xY$o5j% z%3+d*n*c-G=JddjC{gP;r%#p?72lRP`J6MeCD)sDZ(dwMIQ&Fhk}b!x3+jbvu^u@@ zkc+oQHrO)$aL3xTo8}JZ^X?iT4HslzmZ)lZf}u)aT(3zWDm9xwR37ql3qJ+M9hGbf zVUUhjUedkAp4;~>8F85%X~E;mv+bJ7Y=!kXj^FY=UT=I&tKKlu{8cAzarkp@Kz66b zb0u+s1Yu#6em6YtVRtWfy<`sTyRz5#bX`gD7u^@U8iZCm>@p4`AEW71R(A_tDHt6^ zQtZZ-Jv@0AUWLzMrDDM1GbT2mgA*0Tc1RXTx;gmV*cjDxV_@bSrA7}UbVBY+|Ek}2 zgr?NYRidV0Q*nbL$0(W^T%rjHTtcQhflMl2o7~|hO~=soxX$0dfJ6dn~Fx@m*avgcB~WbHll;4wK6t9x{dbas3WOrORs7FnN;=>u~sIBCx>! zMEr!}oo#*1OGa$_BxkDXK96U%WgK|3WUt{ZLt>1NOp_=4}bmj;B zu{_)SHoA}u0}3VXm3Z^5g5erlqATv5Z$oBJYqoK%%B5^dC&?JvP}Kb$A0yFsA`)_* z75x4h{qMQ+)K=ADC4b9^%X=hurB!FmpxHDFr97G1GzV0kKHr7Wou}r!p8%gz(S|#0 z>l5}AV^Vnc((DhPCap}rPAfl^4E=PxgEB8-osK{!&W5^dONegC3#9nmCV#De%(gO#tdQC*mSvSVV!SJ@eHgKHoF zxwv&8a%h+UGEG7!EA!UUGPlYYr-itMzq#!{>6jD}FQ0Mv_4Z*3tH(ReGVEZP90*1lKQ>wmr>Or1vB7XXMgxdlfG(f6X3c9@tbU464^EC*4*RY9wHptdpXN zz&@MStDAYNxTjjoAM+;G<3)q)ZLPnZEB?6isJ4;t&1%SPW#_`bf&53v0T24J?igrA zxT5=C7gc-Kr?GPw;)`C4x(29HzmE&Xk5=UoVeml0scLQS{ZyJ~o|wDbDrk7~bvE-a z^X>$V;f8xG^kjj~@NX|K-xfdMK~Z3=d~KMjyvu6!P%YVevBjJM3)O_w$c71&OmW|`vLo=o5_ z`*+pRxj-{GQ>l;PyL~%i63&9AgPqt?Z0lFhGt>O+u*uH#fyepp?;-x9eWAI(0{%2b zsVC&GPlWm@_9dMEi{d2;wYEd6VQf=In_5dcpaD3cdh9St&f z%Lq$|eSQ~?kE1zqC@k{S1}nTn`LOWUNB!4qMwq#a1gKUhc`W%WwVynp5>l5|Ta$jx zM;G#d47#hPQNSg1ODQqrm7HtFl2A4craL{~ewn>r`rU?Xm8^2=O+$-jh1-!%Q{`;r z5$Pntnv*!ns=&-SDmE1!&1b9=R~r4UO!oaaXUHCOUsXp+qggznlr z$KcSm(m118;K2~qcWc4v;^r<5Ozuf$qPQ~4(aMW%I=~M%$PeF6tDs|4Uu&ytdI<3B z^7DqX;^d(T<{t%R$kU(hfb>y3sQ|JybKX~7$~6q_*VSg+ zeS!Y0paU+_tj4wyN)D0|9ApyGRx?5zjD?De|1Irj)^?@ff(WV&5Qe|JA(0!9zAn?Y zrI4Vq)%$iyG*BV{(KTb%3`i=EW?_m`%V+}U*_O9-cx)Ge20%ahUw+d^h_l?Sa} z#sUo8htH~rII!bXJ_~vt5Qp!3k}XBe23;_Qp*|JTa{Bwe`g%p^Ps^xqE3G20^lZym zQLdzz!L?s}@LY>Bi7@@q(#3PA$1A0a*`|zNnnh#KK5Vgly(olmA@uCBa@%lfhnkY^ zSx7a?dhtHIv8$-l`s6A*15fYDFs}wfO|o(s-DO?Jt_5q(=sFV-d;?|lo_!U->4Zi$ zuI;whv7=%A@D#YVboLMxv3aPb}E@4WG6`Zg(6 zxalm;E$!COvwW+ln$}4dyYte3NJ`Bb7j4_v_@TvF(H~e^jzD{bb4g2W z$%T_@+FfT_A>*f^_R#dnhCgD4H*4mj-A%Ju4(w_-#8&k$wYyIGU-A(j&O&W4JHN)@ zu!zT!02i~amkRuku#K)W1+xB9tCzg6x*8rbSI@jW8V zTWxx^x4GoSQ$M6!m#2QQ`qlNEQ)itZYLN1Y@a$T(-R381y{m8x{tQpCcHZbZcCNeC zP}ZkcnKihYTko%1*zZK5S#8M9k{Z_DlXHu0oUhlc>*zPL0FYFn7^iNCUjye zbJ@`mXqdSU5z&_Y;>jc-_I)9Hv0*)f%#V%1CvVc#`<>-2ztOdcY$_*7so>J`S!@<;;!$^b#9S;BdtBO&JaXuhenU|*|`E6#8l` zHP>BbP$W@^p)NuQLKkf@TaCw;8b23qNsyD>lX!zPj=AAmPr3P`|G6Crxl*NHAR2Lu zrV}{jyz=*)GP=a9#0pCar%gb5@6JV#=8^R0+VGto5hNL@bp%e}@9}6kx;SX-Eu zRr}tpc(|YRlGE8A`M2w*Y17rE2u@ySd}Q#xFir1V8SsfleJ=DP$TDu?O9XLbh9JB> z>pOHd%m1wK(t07Wv;K^~8MJex*3)hfZd*2q^P%M~kqn5>lJG*2gycF z1a$Tbd4A}|bB24fdCV$Wt`Q$(RNV)I)kRW07_EoRS*lHD@hQH`KGt~Y z&27f^YXZ$}{$2-52hX176M5W?NyX)YkOs`C&*u&&Qy78XNo=MJ&#JK0u5{Aq{U@$A zvF^r{qVq}O5)Lfc|6SiKO1I=qeoptunk|3Xh~qHFN)VOK=!`MbVEPVw62V4E{^qJg z==BS+bEZ|TuXZ~~Rd{_%Z{M!^@QPJ~_8%x4Zq(2+gBz_bi^M>BP`4*NKBo1S>X-DhvZW<^;ZBTx6gy|hY=daY=$dp2Iu-ywm)Ol+TC1Ie z6AUL4)&n4D>uV~jePiM^Jhqom*AhoGvBs8K+%FV~?i??=RB+1_5-xFa54AL zF(w0CqBWyaNx}q`_~BVhM!Ew(pBECrmrPWHRRSvOtol=emntwq%yT?qXXB>i=?r30 zP;u)>mg<%DlZK<~(F$8QY~tcIkkDI?$-(gn9P!*^h)AJduJ=$*_~3e0KN3wUKd=kI9hMQZx~c@%cVxd~P)L%%h2 z@VwCNeW09I#mHdESGpp3HSUimPDSs}DTvDC@f)yMT6bv3nRuJO9sWYaDrYrQIKbFm zqJM-y!zH~QDM_UJw(VqOSM=8pDrtcaPc4n*yc%or{K|M$q4B0=d=So$JEubJl}9m6 z?w^PhKRFqkZ?zXuc(kijstZZuVs6XA8fbH@d@xF7Iw`=g5WTFzxLz8?V%cMlPLP}1 zuCNv-N6p^7L!a zcd1PCKnqyjKAmsTRkLR(Re36RlBYno5+PImGT)=%<1Y`G0#I^@%%rII|%%nUo3RxP;n#hcjn zXelV?aG+yg2jVIFGdwvAHMYefl%55s8zZ$!=Po`cXig+9`sZ9%FA&~e>5}k99^80Feqk(HkWaF!(rd!l|o*OCjN}Zv#&KtyXqOt z8iBis)Jk3T(oeOAhdWMcgK(E}P1j})zpc2^^U+Y4)>_a@7tvRZtDF*~AefUBbI(Al}NuO1tUCN6hstG6e9h?AAB8BCvm1tu;!a zRPzno*f-s>odX_dW%eO-ETvjuE<{_dnzzDBaqlqC4f?W!t-2U633wH8hZxm(6Wee^d;>^P@>LngM-+YC zB|b zDeu@$4g;BNCK_}q7bm{hUE-Gxq-fhS41akngZ7uCN30=0jSS9>xI@FAK-7=K6rjc` ztt(P|`dMg(4*ROPO>X6i8LqbPNi@v-DUK!)?OmpN>8ktoWqnfXKjZy}|KNw*2FiQY z^9u!gEqMi^C34xCuIDOZh3gJ^sFI9&Xce`F>t|4Si`KzGHxIlo)u7*$rdZAqt^gbARhx4$cjyr;eK4O~;i>_UGpiO&CP)Lf$#UH0Bq(HWza zDS99F2FbB+C~Z2IpfU=0mUqWg{ZpQ~6WKGbUu)O3={i+@PA?Fu{nwDcTIXq7MVgoW>Cn>Al^k7{szQiN7Tn9JPyKe3aE&d|q>70TlR@l=9Y)K5x zAEQM@Ka%wSS9RAJ4fopZ6G9S3lwf8Ef)Eme(R-93dWqg!2qStKZAK7Xh!9btmnhMD z9YK(z$LK90QAW?G!*J)E_q=P}kN4}{pa1JwYyWq7o?U)>Z^%*!(pO~hD5wn4$%qF= z{ssg&*ufUWy#=x99ArE}vmMryIrrz1&7x|4*I_b1ajf>KsO8He@1;(@1ROfq6$5Ru zB3pB8P=@qFy76qp472ANlGR@D>Y&vBcQTc#_}8?{FA=1VG}^<*&dBS`I$0hQH;6eZ zk-tfc8g*nijL^1d1LOp|GrFq4?psuOLd)d49V6grntU(K#g+1i)3|=CU%K3pGp0=1 zO1gYD<8#GZwOV}3o^EP5GdhZq{=qUa|IvI5Cg~X~NG6s`&FgNk1v>}s+jPB>WLv4A zE$$ylH#v!r3K0X|gJiWu6m(9F*5;2M`SWERksGmiJf~m*wxLA-E~*yWAM@2Y@7`-~ z@&`}3&qj`Bv&H)=?Z?P<7CTOWEnb?x(;$NW-+&5B zb@PlgT%mUANtBjJn+-`>gTdoM#V_dL_y;<}9Tx=J=T=fuNOG{U#?v`{aojRMk8kWD>cJf`oyK#`U`4!rh^2x{?t-mBd7W0b-5WU z^=>ew(02-;J=JAICJkfp6uR>4{5ul|A;WjvOfAhg`-Z7gx=jr6f(n)(jjF!Limg4D zp8YE=tOvR_`IZ(0g$ae;EEp|pNn0F!X(?=1&ENOZ-k0YVN8EbU+k_;?VR$kPvY{4A z({z|1-{yujbHIbZjzfHTYU^%r%U@{-oWXpBhihKQa*Y`Yqeg#?*f5f=DGjfd+MSkV z%F`v}58Uk3ODXd94Fr!Edc$)H)2L;OMrh*}Y51ylF1$X*%RW9x2=H6ve)P(u`oyMA$l+CIlvs51Wfi7;V>i7V0OiW-CksY4d&j(bMEbvjRmrK0b&>QE}K9=1d=ItK9T$V1+nb&HYCf zJab`|5<>Zbd2nbjm{}u-Kdyn@aeMJ0dB|%KsJlkpUFl z!rmJJR&7;W+ctLAW_iNLYi;EZ$Vi-zS()67Cb-gV?USCBgxwFBiFT^Xny#&2K(@TT zd*V>Thx|kgtSMN69Zt2y2ETmG*U~i5Eje(HqZMB2^2gnfb!^qBrF|R*4RJox^J!*V zS=Q26TU)Na>jsUZqAwtG#xP%=8Zyd%w2$Wae_BY?;g$tq9o(zP&W+(KaIx7C2IDb zDkM4as^$OXwO9Y)YmnJP0L1IFN#`+`#tR9{`z3B%daco0DFlO-qeJppa$;&03R+Mh z{JZ$yz21umb7< zSGC{ap>SUgwP=oEcbl>MoMvO0%{xb2VfhthlY?*qQ`GKln5AV~|z@AUoH zvMaD zjdT2DtJwFO(zEImhr>fvQBacxZYNT@qUxe?Bs~oizh;U@F%~zVxD(Gd*2aRPbKc zUSXsxPLM#~D<0@cC@f3~BfO(ctYD^mVTx$|S&1YwZB=hRE>&uD7WZ*09!=X^YD*T| zj%ODnK?Yg2>0h*|a14DeEiKwIE?p1QIUhZGTfE`~o}x_D%+f8fsNS5EG%@3eDI~<6 zYZtFaC0uH2)6yqgZ(=B`89TGJS&qI~U|G|o-t$puL2OkG=C>zOm$m=xzp&&}0Rs|; z&=AEA`|B!HtT9pCT762?02Nr&rT+% zX*rj=xa-b2IU;RrqU2pI=SqFSaHEzN3#a6}o3pnGPvc=%16CkW^neMH`jB5lr65Gu z(EstDA0T4D!f7DzLro|-d#xcVe`oUgp;j12l)WYpsZz2h=-tcG{Nm?x87a31fe5{= z!y%!HYwv6Q_*Jy5W0V??uRn^x+(8IZ&#l(@UkqHJpP(c-&b2xn1q04Yuc7CEboT(i z3iK2ZTJuf>8?HF<_Lz^|w;L+|=#ibT;azMO;zML?r2Hc9do7S$xLK`!$O`qDuzX6k zdfj*EM48@EJEMfK`y{ou%j6-zRykoXNF}kS087wAz#FdQ545+3m2VIw!lUvk0SYz zaL|TbI(xHtU%arpC{1FK4wb^ZRgY)lNAvJcb^&3RsXw1M-P`S0+8(i{dwg6J5SFKS zPM2L)4YvY_*&X4|&i{;?p3PTFFrp`ZeMvaeZhYsWd&M3>(GUdGfmN+wn=?Om#!1ON zm2JN^jt?^C`rJ=FPf20G^=#emluCJCm${zA7nl!6NPRO+Vw(RMij+5#nMzC2{n<>w#@1O6@m^@iSJRw z$^GRTWpDE-e|o69kj;MF`)CPz{IR^$L>4I#xF~&x`icLX7j4n*MMtsZl>O2`f$G4WEj%WQ#d(9stM$X2Q` z0z=KE$krcvC)>BKH`urP?V6qDg~_htqqnM%CHCdHZUus_ib-;7RUxk{7~SEGyt~p7 z(r40=De=8y=Tk1`nPkWPkZEh?E=H}$^yWiT84(4Rr=uk<@tfD1STyHrbKRPP6R69A ziDn@jITa3V+ql06u9>N~B^BF=7JvNlacDU7&@m|El8Ls-LAWtv^79&HZ?q>OH_Pge z;OpZa$|?pFzLemmIV2jfxU27I6O6zO7X4(4vq1Njip7XtWi7d^8C5cezmU{?&(69{k7-L@7Q%- z>jaAF|C9g;29)e%gUp{_0e`c^UN4}ezI-DxQIlLKAc(jZQ_L=eK>)Ter5-EX?CR%> z8}tRO&b~cq<7*L=4JtKyCZCp;;iW>7lDBz_WFIuWK(`jzZ9S!=;F`G&hF<41SXo3L z(a6{>Rq_Rqu7y-z?~fgxPI_IDDbCrtF?MH(Ah;=q9C-C^AiQW?cz^B(M?~K*6Btmo zNik}b%Qv|xu*BFL&xx4iQ&1>Xf^ zRp(&jFc|?y0d*kZ4@B0%%upq+MWfCO9EN%5ZEe7#2Lcobw z%yZ{e2et@%5SyL z*2cthSs~@%!s~5rWzT`C4pQX<8aauo@wj-vs^fW?mT+uwu1U>?kz`tG7-*2n7nicG zSTXMR`DC?W<#eu++kd2t7n}2}Y^pC#M>s#xQ7-+C&RtAJ=GV)j%ZjMgqpDP!V?hlq zJD*{^?O*v#(2ADMP}}R$*h%-Zy{5mm76?w}wOv$hJ66R)VoJ zo6_K`3~2M%-Klbel@c8wF6!E&nWf~yn`rX-dlGuC)^Thft(*OSQMDVDluc`z8wv`c zV~SO5`^UeNl9`{l^c{~1hLoB*n==HmF)uzwOQtNC?4?JKI}U$y_&AIZ=bn2@+6w7I zpYcUD@bCHyDB{&e@E~_Btno$7xHpMhV2D&?q}f?|22rU@D}wefo&;uQ1&MjgA!@@> z3mruyRdf@tM2R+zipab@n$vo%d{v`LPf%p@_3m24n%kNsh<=lNd|qZh4));=S?IQ* zFNfgej_9eAy1?MMCMVM6!w>63`nx3!#JI&y%z0hS{YQkt+Vr}e#HNKPuy9weis6Js zy>O)J?CJ&K?Ds99%I(i&Aa|>9XO$rTGW67TeD{jMi|Nv`$=ZWC?(`-{35rJSobeeAVX0O-v!a(+ z!j<~p?8BKtZ4p!o2>oP>xOml=H{GN2es+7dh9w8LVX9l&8xzKh_ci{iOs5O?&2(sE zz{wU}eeXLuoA0)C>mopNU2ktCeVSUe0py?TC@rk4stz5)bn66tHVfT)S%%Ktz)8*a zq>Zd&nVv1@1rE=j__#aTS{5y@<9T|&jX^R(?U}iY zM`gN;q5z3~%ErF+5b^L3Q0qw?9|pn2i4r!dn2l$-4c@1qP+Gsmu;3RbAN~C48>!FJ zAP~(MHyvqf8bcW7Sj*r%U@O%%TJCLZ9JVe908X&AJY3aUy7Gn?x$E|8GttmYFTy)ElQg-9rS*%+#1xwwf!29h)3x2M6y$*!_9 zNUU7y6F$y8tO&f*zoC$)dZiDarWkqShxOli$=i}hwX8PfJ#kzZwntytssDNw@y^?J zRh!V7hPEa*%K~WcOv`2-^a$u-@yTI66>G}K^+;Q%X;C_4VA&44s6X>$K(MH6%RM$M zlOgtu8=@(8-^|sz;38oTNE*9Mi6azcxno<6pVe~D?vA%nm)o0a@k;Ky7dDzlX>ZVv zGqSHuqXEcFr)k!P;mW-?yP>=@ZI+dzH4-T=Tl)YCIa6GgIgsij3#!=upE1PdKj$Hp zJ(T|z?gg!%5%NPC65hsUJRR={2fi+E9pH`9?;UV?v%(N7{vu{s&#>nvu5z*Rqe&nm^+#X`OpUq1zg|7Q_~od2Bd#eZLyIraKy?u-A(YL zmG$)YXW19I|J_oI<2Ou%Af1s?+k8ldU_0bda@USb3;A^?m?AG(Q{&VR^)f`~u;hrD?I7cNZq|I>%h zR%7$g#a<~04yGr{Uso(DGdywfJ7aFm4f>qT-!j(|ZRYo&5~)|*?bs&e(aat_ouE3< z`iU)}Rkj(la8rqM%Oy_zg86TG!C?HcqGb#mxAj8$R_qE`n_YTuElgI>^0UrGmcRl8 zsM=73yPrBZ1wBr00oVdbNraDW=0`+!#36&-ovt+!A3lx3)$#uxRT&owSC)AH+Q8nm zzMUP!3ZE+YM&)EG4lMolY0`r651gz(>zr{PLAubMk?%k%@VqDogE|_hdR%jHZu#gV zB@ySU7|6&UcvdhnDb|ctraD@72w;gHK?de(xdu@E z%6`)ms^3xqq$?X1r`n58m~MixxN1wHsppShu%GrZ|ELo9o^mSwul#|;edW30;~h*& zW?pb+BLVA#s*reV{;nj+eTGnb0P=hR-{1BABm&`6uXhkOdD~UpU?jLyP}Ca zjurGPTB^sv$EcK^s&_Y<9oiCm;O85X2hoRwwwof3ov12`u$){ z@R`@PWPu#7?cLO>rN{}cORE1U@buT}A`XoEYxy3@UPAf}uq5}1KY;Fghc4O~HN5fl z@WH*Apc`Pi=WAuJ4*j_oup+P8GZAaI?%W%FR)t-SWakvLgMGntvi_L-OsxXgiNqIO z{Cl$TS5Je-(PDj@IZr)CO7iu@sWC3Ilt`(m3A63BBDStQ^v;)Wd@%-;i3N{LL#||& z=?LV$e5xgd^CuHty=RQzrwwUng@4rRSJ}S~gf>ZoxV7T{yXpO3{Roic;)!)lia}P4 Rw!k$asVQs2Div+Q{s)gjKlA_q literal 0 HcmV?d00001 diff --git a/doc/_static/images/panel_chat_input.png b/doc/_static/images/panel_chat_input.png new file mode 100644 index 0000000000000000000000000000000000000000..661ae63bd5d32aec44e7085e24aef66f9b8a6225 GIT binary patch literal 11278 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 Z54C*o6k&2MAm^lyp|08eD(weP{tG-4C?Ws= literal 0 HcmV?d00001 diff --git a/doc/_static/images/streamlit_chat_input.png b/doc/_static/images/streamlit_chat_input.png new file mode 100644 index 0000000000000000000000000000000000000000..cce35d23f065d71c9240d59710468612b649a36e GIT binary patch literal 8986 zcmeHN_g_=VyN(4B6wn1^rS6JKhehcSP!W(`Lg+=s(2JCSlz^@Z3Q}C@y@isHL?8hP z5Ef8CI)nu2Hd;cA5R%XWH{N@HzW>1Y{&3FB`@VC|dCz=i-g(|<=B1sDnE<~yKL7v_ zFu!x#0RT85!mSUVKE=ILPA%JTi(`=vX14(7QOR|#aMJIl^-TbvG4ss9Jsz&i_wbHu zBmf}T`|CQ^A6EAO0JwxPzkSp3kr!>@j0+g@mA+Y4nYFHUqWKR2b^G6*URHBVc6Cwk ztSb%<#wvl*{fa+={E8cWjyAvV>JzPO41Myz7qe+iKM&oLHjhKl;al_JaLN<)K2Z|*8tW-~rIjKD(bo#?>e zv0#f{pPlog=5WrfG`kjk&wzI7tVQp7E>bsy`F2YSu7sH?Jqaj(?l1bJ^5ICrh$rZQ zZLGo_&5{X6(b+ev;9-w*$Jq*0lTC}>XmtosR%=c!ytZYpnd~thS zei3UIDdvatqHZ$v;mYo5R%;^$Rlelnva$q~A`O!v*6bSq0DBH~$xg)YN>HNHOW-nG z$DOeXANi8XocZ_ zG#g69V5Cc#uOku!s&qyo9tnLI@c0=C%J>Hl9ZtNe_NktKZ1Oi$X+gC&fd$__l+jGQ z|4-kT6)NeuTu_B{@s61a2)}YTtE^4E>^C!{Y@M^@&_aydkhR+N>Cay-+d=dPUvb~p ziFFwAJ)Ga@&F=Pc$ae!JIn8*H@G@uL=;BOUzl@USPc180!e%y%Trc8E9<)xbTn(7r zqI_$a{jkFWO-jdv%B7PqsD#=J))>R2Mjr%qoUt`)BQVAyi-4yCMp(nUhiF!U`)Y9N zg=M!8Kg7%ms<3k=6vQK;xj&O)00rLPh#JwNO}ksW%O6yC?`~m@gWO3WQ8>P6-0-f< z(R~Deq|szUKOMaB*z*T$9VWJhYrYt8^kL!(T8S$CW3?o;{yp8U33|(Iigt~plD8zhN0-RVq>+1WEc_MQlBmA* zE@}=G2OACUG}LW5d{}yny@p%;O|;^P#hy^}d_!cH?x;9nu&Z+Asspn3aNsgZa37Z& zyyFqh;hK?dgCUH@ z2%}u@-@iI@l{)QkpK{rpddW(vVb@V&sj$4xAt^nPB@_n>uI|hbYwm=M*-l@I>F{-% zi>IkWj~=C#x_W459gerIyRoN@6lcQzUW_~P1WGT5>HU-m*m_FL(caNjG2gYb^gZkF zrxwiaF32Bs zpNV66w)Pox-B8LKBUOhg#C+;Bkf#aKVBg!OFNz6k%) z5sJ>BHwzT79#***v~TFmy+%Q_O#|;7-SNa}x$Bk|n9TZ&(z29{fgr^(axk$^44+t| zy>w)!%3q@*5f6_03pIZ1iTN z__xJsND=J=H`e|UB5x;2CUjh4zC1m>OqMS^^Heh-xLCDSZzE^M?Jp&7^XrN5FP+1; zx>QqtXXi_gdBev#^u%=`z1s)bkDfD6XH##*`=0nS)1Y=e=DAXxyV&yuXjh*CSU+$t zv6DWrt-zN`A(@~|NzDhU%|C=#k$cN`X5G6a zpHCN!F1}I6&rAA@zrAh!yGQjaPZGQQ7)gU>qgM*QTB%T59LvjRz z|0h3?Fj(f3*R}KQ!3cf7OCz$_HB?LD+;2#8TT{hYW(!5M<78B10W3eM-EIFbrFLS@ zL2bG?qvx#fT`P_|Q=6sR`Im2+Z)b_u5&sPz@tMA1_4U18eX`PcEe{7h>83fg<3p^Ec({F+(bc{75BaO3z}H@YC4x4 zzk$(Qc*YH8r!KFpSDzn@+rQp!>`qI|y4|_+0+*qX*X14%Ha3CZxfnNr2pU`cF)@6R zZ||#ZTJ{R57NhTkRBd47pkBOG3z&R+7i3gnQJgOi-*7DLB&6^)gKCSi{BYl-zgQF- z+|>3{nWQYFx0XG=*EKmiC8P;;dCK~JWp}gafoB^segSz=V&i$PZwuYjb@gbBFxExa zdNBLY@!jO`SkaZReNz)5tyL8J#zOEcw1$LU*d3gaM4pcC0DakV&QACOirZYLP7xK8 zFfKq&QrSO2-AZv|`xXPNYXW6ju2u28g^X`iHi8XP9Xz3&uWS z^+_wh2&oNWBzpIHevcKQY^;Mc4)ZW;XF?oH7cQp0qbXeRwIQK0JIcRL9qjd94%C%T z5znrA$__7Jr?WS0+`lcyP?d;(w$F#?J;(KHd7o*xrxTxM!x3A7?G7quf*qf+yZ5Mw zW9kup%Sc_$$C}nnoS(!^`(BaPg(yseO{=K%o*5;#?xtRGz-WrO$cH&?1;61xm|+Mh z4R9Cw#&Zvs4X9A6d&=NGsh+@xmM%NUj{xVFl7mz0{_I)eH#{b=mE*<>pw zIX4U$5+=RaA6SL~(1kQp);GLDIq*YjO<7+QV*lRN;eE&TqE2s14NhEq1-y;cuD){M zmm{Q)(h`Y=yuxZOokaX5tRWQSUk!yQI&v^`kXw}sbiyS_@@>W8$ctmB4$qm%&rkTN zcdh5**dQ!lU_5^ZX7sG%(IRbwZMd=TMir^;K2hkx3wV5?5`2<>8vbRn^#fCe?(djg zbo4K#t1?>W=D&~m;(|un_ZZfblqF#Kr%i@6FH!lSj8>U|!?SfAK`BQD-d?z-v-^vqw%$6-R(Xh&6!K^pPBwi^G3c+z(hFsSf76DyQdWQQ^oCd0rHyg9}#Fw+n??D zbnTkqJ=m0$sOT!y{5Sw>!Udwww#DTk%gDFg-rJ}@`T6+}ORmf_j#Hkt0i(QO{uVcy zR$y+Icv2KCOeW##;@27um4?L=qnsqkdtF_K$L7}&DHsh&3&&neTF=+MfR!Rk4Y|as z#G^#n%%yGnj5kIWy2X^rEJF97{;Y|;Kt{*_sk`<^dHi55=Kh!z0V*gxkcSpzs-Id& z@ePsnF#Zb1O3e&@a%}iw|D*<{5!$NC z=l{FGC`|Y7xDR*SBXU+F2Xf9o&}*=89z_%Pl>%?~_=uNoA$)7&q%zloMYUJYV@sQM zgMI{^2^w;0jIZ~y{!!O2{UT)18KBXW?tEc~IuYI**gBE)@b8EgWfH==G4ZeZ#_#MFb=CYj_kjNYpx6Q9f0iN?d78}mM zA-{cH3ENmbA}ho&>B#4p;aJkQ5P9z8R-5#*1YM@f>AE^MS%9$0I2U_O?KO!~Ey6v5 zm#a@o+u(1gc-b~Dj>b?VRdF z!As-1_ahK{R`KSx-aat{*8Q^O+t)eQz6dU8tDCbIa;rr-ersZ~s4nq6CB=Z2!zq0e z+gBansy?}ZseyP+8ck{>F>bhihHW@(Ir*Z|cR%LPbjZU;<73>}YQKD}E+CAes^tM7D#F8XEA+~Rj)tAuOBwV;2%6V=#S2?u<3CjK@B1LyYX>FoI_vnDEl$&DG|~ z+s^Ae9-RC`EjdSI;ysGaV#n930kN5@8gdGgyAM%rs-lV8*!!q&7g?YY#ZLF6eOLmG z_^+x=feVI{0G*7Q9~%Uf+AI)yPt9LC`p`8okJ2P=dJ)O1-dnK4pgB9^Lw>4E)o{aa z3-@Ooq?G(06zzuN2lem9&F*j%_Zha<5?#FqhH*E#)WoY=z3PxMOX671u7^M^zvN17 z4*9SoI>lFHzAiiljNzuNmXklK?{$TVDh>(`c?RH*q4#WM5D>lZ5b_^eXW9o=>ty3& ztICW(BcBpY>J^@L=@M#^yNjt28mo-u6tL6!QLo%h&8Mpd1*3&;#^U;V^0X5(Pbqm!A*AM#X6PXRpu_9704i=BF;xeIB{P zO7-*?6!pRSy24IUS}pfvXsZp0)L3B}5m6hrAMzJ%Q?~fXmm{hD8HtK(iBuhx0Ra5W zk!M71SYFUrGZpYY{QK&drTuJ86l1o|!+JS1TiJLJW!sI{N!U?=bl=+wPm z<7ib0LuerNVB~3$QYB$Iq*dpeOI*`9-Ua4?!~`*8-76V}b}noym)_#j!d#0# z%AlfWI~GL~27S|0_diXD(b`d5Ld?KOnu$ijCx98)w56_Foa-ew5 zVPjmxynMRkcvD|_iBe96YG0JY`_mvZ&a9~v*NtLyd3h+Sy-%|vaAG#}YpAR?Bu|k^ zx6GM=Jv%hJB@^#;0vsv|fuTu74Cv1n>#&%I3c-&$eq>xr|9%6%n25Ra#Yb3U`+hu3 zR&Ci6?)ZM~^|M6E-7$vFRyw)CrFMg32ECQYe^v@H(Q3B#PX@WiLNwT`UNgW%Q8zR? zGW>0Fh9tZK$T5(?Wk7q|WvBxGM7`~xMe92NZc`vud8cGAsjeLr6lv1Ts?KH}Y zOw1hS&;00qMcTW|(bkLVnMJ#n`scPc&|uZCerr`k9EhB|%ld}5_$K|reqvG^=Pe`g(I=5wiyb0B!``ea=H2G!Fk*G0PsYj}(qM`e_$$!@yyS znmC8OZ6jd-X~o0S;Pr?kNABsi(wOf-&|E)M08D63tz z651Q&mp_qH$ap!a#Y1>ghDS|MuLp}a6&nlAm=$_8{V$$?H5(m-xFuoB61SR9roR#- zZ=U!N!Q{(Dmh4W=Uf~A+P-Ytx`=dksRyU*_OKGO*#eD!ghc+5|qCErVvfGh2u5=qm zvDc18(8fr)A#H=R;dW1q!<>4uZb%IbI{1Dx5ue5AeUbENy&V=7fC-`#Krxvw?ATwe zRF-x+(UKzQx8r}|mbyH7JWs7xymv8Sp0U>!Ru)_dCQa`P$~=4K}<**zwB2`W?lY+@Q=3n|sAO{zj9)|57Y1ryLo%5$}rVV%ZC z5ooS!7m-CH=qc%ufV-6LTlE4xw9xO`p8L(pXKjt^7hiHPek0H zqk~)h5%iH(CA3+=HF5~Zgn7z9 zZ#$FtRQ4A1BV<8!gRkz0jL$?-xc zt_P0@Cj{whLnNNq%W9|xR7y)pq5k!W$F6iq%xA+otYR;gQNNj3GAR<&Z09R5Z;ypG z!54zgn5y=iM&kAQzop{A7sc^rCb2s7prVLfRE*rYG=crv<`;zpZEg z8d#2rpNb+JF*^l6MJgxKIvfx)DP?+f#-4(8n4jf>j=R)-DVA`90R}V7%0PVAk1y%N zGE^VW`04M52vcO-Is9w$GugD;Ie|$Uit{xGhZK*&h?952=xB7dAjcvV0f!3D|gEfW}5`_ zfj4F5^YklDt#wYwDN;NubW}=dr{wGW)R=_I6_We3S5nFSxEbofo#T}$^0P+HGOFev zQ`2N8)e$>$%|Zy4WBxlpmTwugC}wgF94?iZrk zLEc`HJ%}o=^APjYcQa>iH-~L;cY6Ij3$HiSuLM35z0}~0DMeA$P$9B*2TGpwjzjdK zR}sdzAL&=JV`x^d3*ldz0pXI~$2hOqd5IG)&OvCt@-GSO_Bi1rZ|s{m@&A`t{DYUzsi>mLw<3aQ(tXcbs8JyH+hk zUhQ+Bz_!|WOo{Ae=o z{#g(t!_~}Lo`op6p9N6PUOk5F&-k3?sdJoF-5 zcWer;zwo2oLYRIQ4A;$|6co4}c%lCeh24%Za~$JBM1O$>iAEJNiMMu1DID)M%eKR| z6*cKcwMZAu-bulCGBql%>dk?9u`5HDpg2NgcPXi^Fl3isI2S-YkM`5Ga?x`#5+~d5 zj=I!GMCU5Ljge{2EHs-coQ8(jiTv?as*;!W~k! zVvskwDKeC=SHFSkK9yl!absT80O~OsIMsRtro_AYcvo_#@?+x7a-E^X;{QHNfIT~J z%+&$PNq_v$5rYQk$y7$%_yw+R{HzLgEPjzUmBl3y6I_1*I5&ObDsvm=p3jB59-qgq z=lyD?g?&$;$I8g-MQ?mI50tye=HkxBPJ;z@sM+mD)A&TW5BNh3 z?)7X#QHEibQHx1J&s&>h`yIg$vHrc3cqOj=q2U%~$j$kxTVVcMEaJvJ-Nb`u8Ev*x zJZHGZ&jt^8_^72Xb9IJ4x^vS}t_qN7fch5y-?`#}`?>$foH1+r=va(OW5jnv{;wGX OFgLNejlOmF@Baevt<5_C literal 0 HcmV?d00001 diff --git a/doc/_static/images/streamlit_chat_message.png b/doc/_static/images/streamlit_chat_message.png new file mode 100644 index 0000000000000000000000000000000000000000..8e4596bcc80f3d430154882c436fa9432099f50e GIT binary patch literal 35015 zcmdSB2T;?|+b$RjDk_RbL_ov_C-8cMP!e&7Gzy)!$rJ9}q#W_6q&A?J7MTb}oM-(!fTx)Q@_*3%FOgyGp! zd2I;f7zzS8DtPJy_)SO92m(BgxM(ZMK?*vq&VdidtsbjAhCqtK&m6p@1E1-go*KG9 zAm9CDX+JO`1J!BI0K_S<67Z*=QTzz)S#SgS zuYvKC+2gd&;Dw{g$jftLfu0}!O&3bUVHz@v@8=VY*EdQ^M|C>7@&km33 z``~(gE18c@DMXEpsRo&&d{FXOOTt~5g=PDz5092yFt4trV!M&DWA9UzKE%LD+T?yl zh4R{{e7Fr(cDb$7@b%sU1^>e+OvSC5XFBYQ1Ahqr8ZnCBqAiGy7ui(%P@mK9ppGyS zr8R@hAP%+CT0p2^Jx~krkB@rlS#p2c#F8xiXh#+>{-)FLlV_7tF_p-EJU(;MJc0=8Y%)W40}<4HwW~nsu8O6sE=5Fq94|lIMa~Qr8F1xI; zF~IJA^)B>ZpU?AqSn7<;vVl7bu!-IsVr5 zza%y29+H(yH{Mc9m3e5<#9nRSfrZ#HyRq9eLvx)mu;aHp&_}v+sGW0>LPBZEO)K7Jgaee=mnh%UKD!f4AVa?0rNe zj9B@_kpCIP(37-trbE>{%=^}pb$4%}(5{_5GbrLGu!aE#=G#O6W?gp{rTD)p__X7r zsC?zf)i!Me7lV+6*qk;v!+^Kfk&0Y$R>#k{{j;j|EdLhs|I(oTZ(HR5A9Wzl?lvHF zv+YgqJ77gV$j^CiTjRrJczj8IQMty3mbU#r!Xc3AyG#b%(TvYdp)Py^-s?-3y(Z#ya_u7e8_bm zk&NcBEVX`8p24uu<>2!R%~?tML!a5*fOGg74*HfowM1PKwU57FM|dsnGyBEQYfOQ? z|0Uv+ZU$*U6Mxzpe6SaMjiW6uBy_^k*I{<=K2BR1uU{|dHrD)$2sNBajQUK?7P^`= z*_vxEti}SHTYrRx0hq6jY{gJwCGdpP9mhMO4)mDTq{+X4U;1zsY)^oHcMp^B7JJnE$g`sJ(#aQjaS`3!i|>BV?+kL>-3phn zz{lJXFS1?)YiQB2_Ac=kqA5R*A(Pk;J#0 zI+^ny*PxMDY7$|peAi=(y8FaRv?wV6fD+?pFuB_)8BoaIn2R|3B2M00PqbjzJIkMI zLw$WdC?6aY`zG%S?Ku0hY~<#>>Dl$(;<5LfVTbY7cAsbOE)#~&_Z5iFM#Pvs;&Nim z+26j~PCg2`#19VZrvOVzP@)`(kNU~E`&BM1{HJ4?dW@O~_ zG7xXeL@zycbj~?P>@^97UR;b$UFk$i8F`t+eCgn4TRNVrNR7+AC@AQr(iJ^cz2kOp z@Gz=ZZui3P*_l{4{_OznbPXhx6<>-Mh|6YZ)hv@{n6%%>@TF z6>W3%Hy4@Kr&POlmU=ogWJ*g@m%pdD;Y0qHqQ04P-0|{DcxZCcomt(Wp8+qmVyK*vJyZ$DWXi058Fi97 z#Fol(aw9bOBC3 zV>?bY#i~PsQhw#GFzwIY!bYFxRKBw`x*ye*{guc#2-ci)2=gm0t=GwTa(OO-wn+j!wOgS6%Otl1TBb^0setalMK)}@kQYNW8?o5TkId$KGxE!_0&E`EzvV5}&mv+@PNr829TO8%1{&I&H=fhCbQz*R&xiUN0)R6(tkWvJ z(R`s*#Yq@CB}G(^>ne8GwOpA=gL%Zs&6*_b>!NlNc19qJ=$F7#YL7sS@!C_593E`- z$L}9lFR7_xVP^_PLYTJvb-3+wwn&F|G>%*-D8Y(<&YV)NkA;M!z9kWOkVZV9-bmwl%X=r2MJ|0`tRfNd4^k8hP|$Pb1c+!H*TC#7-ODU z3zgm#7?%3O+ceY%Zo4-zv#IIfdZCG*GN%$_}Zm4PbJQ*H%x>hR`4>z3}Z|EWux71 zGZmXEbQ^Yk7*5zk~fvR2p zd}%q&FpmWS!~MJLlkohowzWJbH!r;9RU@&>po@wU2(qsDwi$T|Q@bP0E{*){5OOw0 z!p*w1HwQaii$jq_X9h2LExo_CxAsxMb@s*V^tJNj<}mbMddMjmVC`ioQT&)E24!VY zogsTmqES~jevB`(XJ16yd`*(kwvMWxDCtqJy_8rfsg@^WC6Y z4~uHbo_!wCsQe<2Zs$@@=AFvh%&D@@va_F5Kg}J7Tzc-cF|F-WjbZw+iBynyEVw=T zhKJn!F?6Vg*UZGiz3@O?LfYg7;_J$HXsZ9!^;n^G!3vGa4U(NvkzAoWPJu&`B0q3k zed1TV2u;(b|69{easLlZyK>jWXl_P?PzUq&Y@s~WQ0prr7VNYc!FqL<2x@%}<)ei4 z?dJDMTg$h?ZTkuKEq4N^4Ax)om$>WJc0a?ONX|~n5Ekm{2C@xeH#S`6bx*6V5mcnQ4cxYBYRJU!Fa6OUFNUdzfdjYN%1iR>o)AG?a(c+BFuFlaQH!^nshs0y{49#UUN}7-*LHky_7oXvp%SB?rp^vL9V0!>yd_H@ zEnzvQO621rCPM@>r-b!IEG%?$KfK3_&8&!Ly!wO*Dzmkss&Ja$oTxYo`AkFZZwrw& z8D@Kqun-?X^*edXfj{7D&K@B!` z^ut2>)JHzz5F4ht4_LXP`T@p*-hnV&YXR}=#xUa zI75FuD}DXPI?9<+;G|n@0|n?+{vr(HzKS1~>3T-U5 ze-j)dpr2>T(V?DiJOJ?izuyRMjp`qRYLt|w3OwX#fex^WA9>K-Fk|C9*4K`0=&TFn zsk1x-k-zzQ6av{1yRrD!zHC@|?L}&49No4gw@Z+Z)N`x1itqrN2@uH(E@kmF-FyraI`7)GS1MpHZvGt6AsQ=P0OXEY#5(e@Fds{4Mc-DEfn~(Qz1_bu%(<=;F-he1K-e=`aFtC!CUl$ zl4UxH0atCcI8%F*r7)8a#yOg}efgbjMvDFt74q6DnrDt>!=~PufM z0_Vp%@j{4ZFHQPWv?@!w3#~19e|NMwAnLOWCpH2ZgC+b?^T+X;Za*--e*cbCh$i{3 z&bcjdHOdpt7No!lyOO*e^hp^OdRTc6RHjPIhxL3Z*3iE!IzQ5R`Y{OFT4_OIpn8sW zix?&ob6s=_^>gqyJsOU}m*0=K%a&6uxhQu(VX5!Q3Ep_NOAyW5G&xI|2+Z1S_V^F5O(h^uG$>6Qk(HC&(OxihkoX>q0L8$HXnV}Pv=ZVhx8dwK}FhGli+bo!Z{i* z3)T$((APC9Rk^S@|DkS`a6)9YWNFQf6)oVLeAzk{7QN}neB1JY@z|K2iMJ$HPoKUB zy$lB_AikIAXz1X#WujaBxg@8zm>W1%l^GjO3rV6w-g}Qn&<0f}T^tY_I;F#C>h`BY zI>;q<+8eV`cT(O-c@LgGom&F!{$?H?h=*FFKJj`jbE7hl=Xgnl*&O< zXAaCLL{pb0i$U|6WefK7DKF~bjk6bRmjm%bMVwNt1;-=eerB5o5bg3rt&^W~MI8;e z2{=Z`9bFKIXzew|46w>I2Da-cE9O0$dkz*#Ub?&xW?0);;zAnX53lm$?ha z6@;gI0`YH^Kk<)|TT~_%#3ky4n}7f+TmS@u=B~Mg>vsc3*yEQxOiWYsNpS2i^bDi4 zn$@7Na-$dFY`YpJGYr`1|61eA8)-#Q>BQBL)fa@Ve8+~YyE9h5GD7l8$IX2xW$=(l zo~`*Iuyxrt!PeE+kF7V)IW>l2-#fiLnnjNeQ*Nev@JN%ZSTVbBxw2n+BT!i^{1_zk zAx%9c#okQQOycQ!HMx*GBCc;|1~bg1Oq`B6+uC&uI;%wSFWu8&`RLXq-F$*dU^|JNVoayOlBGp0@lvS0PXT`{>okpyms_s9rB7jt^{P2 zR6AKzz-q9dB1*k5?N@{b7Ip-pzz#N%QU6>L@|%#lm156R^GYJ&j^}M3eRs;1h{zZE zoJ`nq4ufF~6C@N$TV}Pq!klLFXYAXj+LiK=woOeQ@JbPck5|=iu_9wbk(%g!=KpTF z`08N64u6s7gDU*(4PocbAWLOWcul+b>*8(Som^e>RKTHy9;5Yn5P2u1w@bjQa_Hvk zxQ}Oh=51;}yO{RaN>whDyWpkPuS1dtK8P=Vx0H`PmU9vuW@u(Mj-uVRV8L{_)$exZ zrgof=_&`xaccHD7C-~h1vGQmrA{3e&z5UC@9Q1 z4ZapP&Wk=b>htlOL4h3yAYy5R9^h4Pfyh|DZH@;pHQqY9=6$vboGZG$O<|!!)z3H| zI!2#+t$OcXaJYnNu!giDOBO1#LBv+lELPH|qgeA02v^iJ^NN8gq^tg;0I>m32Ge@QLSuYDxd~>(=A-@^x_^IfWeK zN9^kPeqm7f&U$AKu-S-?Dka`BUbg3-3ueXrDoTt z6YnZL8lIHATuP!Z%48DhBafCmxZ8d=!T&tFZsZ`E>^l2pBWgJvdse}-rNf|72mkv! z?%pZop^tnsq=qi_PGQW4F3!((qGsxcPC4C5*aRo*Yac&Gn4<*1_iO61_jDA4Q38z; z)ach(?#QhY)m+u;jq+kt^fSoIPyZuSfn2CR4pWMxPv-i*m-edd>kFIMzfZ3mhsaq4 zf?%Fz7C;sRDrfb|{2$H#|3wP%|3`%N|6LkYt@mXx->v$qPo=C?z(#)M6%oH5!DigxAl^|wUMiTA8X9s)5|SU z&(YUAKjI(Wk!^CaG=s6x(3?Iri8 zU4mVq;o$}qKP+9xpK<4EPetg~7>VfRd%Qh72S{~TnZvtlULN254ql>&-*oKk^2Lo^ zO83r}H|U%=^&i6M)Mb|}@(zjG*%X$rx%7j{Xs^A@sMNL;WP2Cgk8=qMYBAvLlQY#= z^OomabunHdoVO#3!hxagbLYkNk49dCZD8cg>G~c?{UIE+>Ue~bASL4{d#w(COv)Vk zbNs0im!MFKvgC3akMvK`QWJ&m;W5i;#?ry+Y7zB2ZXeRn>w08%9uRUA*?dWCG zfxmA29WHZ_edO4RL4Seh9FA)8*S#$Bh2VsIzvJ#Ryrh&IyM%F;O%JKvo!Jzac_E8O z8x~V7E2Sab(9q=l^Dckdm3DVcdrlVS3SLwCwija^;6!yc&VamRijCg&w9=^ zpH(f`2A{O_<1?4rz?*mCdy#s*Ah9ogixeLxjYd z)c-Wi^wj8zLfw6Dds<9-$6WPHR@_%Y*iROAllo#sqd(s`rQ8$Mqy{Lv7QtS~l?)l` zS+xZ_MX&eUD>7eZ3~cB9_RS!W)2Wm=E03eEuD5B!h?TBIrGLd@qo=n#k`8%A!V(T- zA72oEbMx1Th~H{TozeFfDa3F7)5pzl6qd@IeFj#+aT~RShlV{_xHNYw^}e<^s&j3o z*SrpwMsJUXRLX+mtafrxeX&sS{HTWo{(J1|DF~yFhU8jou3nxkqT*v{Xm`LH_qh=l zd=U&H&sy29c)zm$W|ce1*DPFWI}k%xpcpo9JGib5Bvx~49$oNbs%1#&zzW`CQapXq zcdJhnU62RE9>6*1jfq~aBFkGbdYP&$Rh+xi_mo z^T@DKfB#%@_vP6Zr*n{$2JS0&ZlbR~91%tfYvN_7`I)sFnMNktD?W4$Bk~e5E1?f# z5c9ods8zB@tsmu#z^AUV)@Tq-CuiG?9{AJ%n}BAE0;2YHx_!S>IDH}|c-erCJMicS zpFs8GQyw!Y8(?>$Fyt)fiH*dFeLE9m7ae*{$U#Vkx=!E|@!s~fMLImG>hmxBDHx0GtP6B!KX5j(p=(iAr1~t>2vPSR>Df_I0L&^Kgj|IWX`Q_lCxm zu7(1816zk5-5MyGSnu<_0xW+JK;-h@H#d<|d$XF{k%J7LVw7EZ1`g?avlgNo6JM3C z0a?i!Fd8Kk4kte#D1!{-2eCl)>u-Uv5?>mv8791DW@gSSvM|&2@u?qH6%_wfMcV}a;R|^ItTPX z!%Na~+>CY6d}c3IJQ1W?6kpK!p7x!=u?EQr$-^RGt?a3X=K

$leBY%Z0@R$J)}2 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%0D`UVX^Z{5* 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 Date: Mon, 16 Oct 2023 08:10:06 +0000 Subject: [PATCH 02/12] Chat Status --- doc/how_to/streamlit_migration/chat.md | 206 ++++++++++++++++++++++++- 1 file changed, 201 insertions(+), 5 deletions(-) diff --git a/doc/how_to/streamlit_migration/chat.md b/doc/how_to/streamlit_migration/chat.md index cbff78e3eb..bc1e0e76df 100644 --- a/doc/how_to/streamlit_migration/chat.md +++ b/doc/how_to/streamlit_migration/chat.md @@ -4,14 +4,14 @@ Both Streamlit and Panel provides special components to help you build conversat | Streamlit | Panel | Description | | -------------------- | ------------------- | -------------------------------------- | -| `st.chat_message` | [`pn.chat.ChatEntry`](../../../examples/reference/chat/ChatEntry.ipynb) | Output a single chat message | -| `st_chat_input` | | Input a chat message | +| [`st.chat_message`](https://docs.streamlit.io/library/api-reference/chat/st.chat_message) | [`pn.chat.ChatEntry`](../../../examples/reference/chat/ChatEntry.ipynb) | Display a single chat message | +| [`st_chat_input`](https://docs.streamlit.io/library/api-reference/chat/st.chat_input) | | Input a chat message | | `st.status` | | Display output of long-running tasks in a container | -| | [`pn.chat.ChatFeed`](../../../examples/reference/chat/ChatFeed.ipynb) | Output multiple of chat messages | +| | [`pn.chat.ChatFeed`](../../../examples/reference/chat/ChatFeed.ipynb) | Display multiple chat messages | | | [`pn.chat.ChatInterface`](../../../examples/reference/chat/ChatInterface.ipynb) | High-level, easy to use chat interface | -| `langchain.callbacks.StreamlitCallbackHandler` | [`pn.chat.PanelCallbackHandler`](../../../examples/reference/chat/ChatInterface.ipynb) | Display the thoughts and actions of a LangChain agent | +| `langchain.callbacks.StreamlitCallbackHandler` | [`pn.chat.PanelCallbackHandler`](../../../examples/reference/chat/ChatInterface.ipynb) | Display the thoughts and actions of a [LangChain](https://python.langchain.com/docs/get_started/introduction) agent | -The starting point for most Panel users would be the *high-level*, easy to use `ChatInterface` and `PanelCallbackHandler` components. Not the lower level `ChatEntry` and `ChatFeed` components. +The starting point for most Panel users is the *high-level* `ChatInterface`. Not the *low-level* `ChatEntry` and `ChatFeed` components. You can find specialized chat components and examples at [panel-chat-examples/](https://holoviz-topics.github.io/panel-chat-examples/). @@ -143,3 +143,199 @@ pn.Column(message, chat_input, margin=50).servable() ``` ![Panel ChatInput](../../_static/images/panel_chat_input.png) + +## Chat Status + +### Streamlit Chat Status + +```python +import time +import streamlit as st + +with st.status("Downloading data...", expanded=True): + st.write("Searching for data...") + time.sleep(1.5) + st.write("Downloading data...") + time.sleep(1.5) + st.write("Validating data...") + time.sleep(1.5) + +st.button("Run") +``` + +![Streamlit status](https://user-images.githubusercontent.com/42288570/275434382-992f352f-676a-4167-aad0-1fcc2745c130.gif) + +### Panel Chat Status + +Panel does not provide a dedicated *status* component because it is built into Panels high-level `ChatInterface`. Furthermore Panel provides a lot of other built in *indicators*. Check out the [Indicators Gallery](https://panel.holoviz.org/reference/index.html#indicators). + +Below we will show you how to build a custom `Status` indicator. + +```python +import time + +from contextlib import contextmanager + +import param + +import panel as pn + +from panel.widgets.indicators import LoadingSpinner + +pn.extension(design="material") + +COLORS = { + "running": "green", + "complete": "black", + "error": "red", + "next": "lightgray", +} + + +class Status(pn.viewable.Viewer): + value = param.Selector(default="complete", objects=["running", "complete", "error"]) + title = param.String() + + bgcolor = param.ObjectSelector( + default=LoadingSpinner.param.bgcolor.default, + objects=LoadingSpinner.param.bgcolor.objects, + ) + color = param.ObjectSelector( + default="success", objects=LoadingSpinner.param.color.objects + ) + collapsed = param.Boolean(default=True) + + steps = param.List(constant=True) + step = param.Parameter(constant=True) + + def __init__(self, title: str, **params): + params["title"] = title + params["steps"] = params.get("steps", []) + layout_params = { + key: value + for key, value in params.items() + if not key + in ["value", "title", "collapsed", "bgcolor", "color", "steps", "step"] + } + params = { + key: value for key, value in params.items() if key not in layout_params + } + super().__init__(**params) + + self._indicators = { + "running": pn.indicators.LoadingSpinner( + value=True, + color=self.param.color, + bgcolor=self.param.bgcolor, + size=25, + margin=(15, 0, 0, 5), + ), + "complete": "✔️", + "error": "❌", + } + + self._title_pane = pn.pane.Markdown(self.param.title, align="center") + self._header_row = pn.Row( + self._indicator, + self._title_pane, + sizing_mode="stretch_width", + margin=(0, 5), + ) + self._details_pane = pn.pane.HTML( + self._details, margin=(10, 5, 10, 55), sizing_mode="stretch_width" + ) + self._layout = pn.Card( + self._details_pane, + header=self._header_row, + collapsed=self.param.collapsed, + **layout_params, + ) + + def __panel__(self): + return self._layout + + @param.depends("value") + def _indicator(self): + return self._indicators[self.value] + + @property + def _step_color(self): + return COLORS[self.value] + + def _step_index(self): + if self.step not in self.steps: + return 0 + return self.steps.index(self.step) + + @param.depends("step", "value") + def _details(self): + steps = self.steps + + if not steps: + return "" + + index = self._step_index() + + html = "" + for step in steps[:index]: + html += f"

" + step = steps[index] + html += f"
{step}
" + for step in steps[index + 1 :]: + html += f"
{step}
" + + return html + + def inc(self, step: str): + with param.edit_constant(self): + self.value = "running" + if not step in self.steps: + self.steps = self.steps + [step] + self.step = step + + def reset(self): + with param.edit_constant(self): + self.steps = [] + self.value = self.param.value.default + + def start(self): + with param.edit_constant(self): + self.step = None + self.value = "running" + + def complete(self): + self.value = "complete" + + @contextmanager + def report(self): + self.start() + try: + yield self + except Exception as ex: + self.value = "error" + else: + self.complete() + + +status = Status("Downloading data...", collapsed=False, sizing_mode="stretch_width") + + +def run(_): + with status.report() as progress: + progress.inc("Searching for data...") + time.sleep(1.5) + progress.inc("Downloading data...") + time.sleep(1.5) + progress.inc("Validating data...") + time.sleep(1.5) + + +run_button = pn.widgets.Button(name="Run", on_click=run) + +pn.Column( + status, + run_button, +).servable() +``` + +![Panel Status](https://user-images.githubusercontent.com/42288570/275434435-dc737d33-4458-474f-9bc3-17e7bf807896.gif) From 89e1e1c478984772e7bc1f6b733e9274b12d221f Mon Sep 17 00:00:00 2001 From: MarcSkovMadsen Date: Mon, 16 Oct 2023 08:29:51 +0000 Subject: [PATCH 03/12] fix title issue --- doc/how_to/streamlit_migration/chat.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/how_to/streamlit_migration/chat.md b/doc/how_to/streamlit_migration/chat.md index bc1e0e76df..753d86d091 100644 --- a/doc/how_to/streamlit_migration/chat.md +++ b/doc/how_to/streamlit_migration/chat.md @@ -338,4 +338,4 @@ pn.Column( ).servable() ``` -![Panel Status](https://user-images.githubusercontent.com/42288570/275434435-dc737d33-4458-474f-9bc3-17e7bf807896.gif) +![Panel Status](https://user-images.githubusercontent.com/42288570/275440464-5a610fd8-b1c9-4c1e-8f5e-c9a9f407bc36.gif) From fcd55a4451110e8a401dfbb7920c4993b8e5c927 Mon Sep 17 00:00:00 2001 From: MarcSkovMadsen Date: Mon, 16 Oct 2023 08:33:04 +0000 Subject: [PATCH 04/12] update code --- doc/how_to/streamlit_migration/chat.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/doc/how_to/streamlit_migration/chat.md b/doc/how_to/streamlit_migration/chat.md index 753d86d091..fc3060a491 100644 --- a/doc/how_to/streamlit_migration/chat.md +++ b/doc/how_to/streamlit_migration/chat.md @@ -228,7 +228,7 @@ class Status(pn.viewable.Viewer): color=self.param.color, bgcolor=self.param.bgcolor, size=25, - margin=(15, 0, 0, 5), + # margin=(15, 0, 0, 0), ), "complete": "✔️", "error": "❌", @@ -236,7 +236,7 @@ class Status(pn.viewable.Viewer): self._title_pane = pn.pane.Markdown(self.param.title, align="center") self._header_row = pn.Row( - self._indicator, + pn.panel(self._indicator, sizing_mode="fixed", width=40, align="center"), self._title_pane, sizing_mode="stretch_width", margin=(0, 5), @@ -286,7 +286,7 @@ class Status(pn.viewable.Viewer): return html - def inc(self, step: str): + def progress(self, step: str): with param.edit_constant(self): self.value = "running" if not step in self.steps: @@ -310,7 +310,7 @@ class Status(pn.viewable.Viewer): def report(self): self.start() try: - yield self + yield self.progress except Exception as ex: self.value = "error" else: @@ -322,11 +322,11 @@ status = Status("Downloading data...", collapsed=False, sizing_mode="stretch_wid def run(_): with status.report() as progress: - progress.inc("Searching for data...") + progress("Searching for data...") time.sleep(1.5) - progress.inc("Downloading data...") + progress("Downloading data...") time.sleep(1.5) - progress.inc("Validating data...") + progress("Validating data...") time.sleep(1.5) From 23c2f7ec54e0e4e5f4ea07aa23d5e0bb74c0d162 Mon Sep 17 00:00:00 2001 From: MarcSkovMadsen Date: Mon, 16 Oct 2023 09:41:33 +0000 Subject: [PATCH 05/12] review chat migration guide --- doc/how_to/streamlit_migration/chat.md | 35 +++++++++++++++++--------- 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/doc/how_to/streamlit_migration/chat.md b/doc/how_to/streamlit_migration/chat.md index fc3060a491..059fcd1038 100644 --- a/doc/how_to/streamlit_migration/chat.md +++ b/doc/how_to/streamlit_migration/chat.md @@ -4,20 +4,21 @@ Both Streamlit and Panel provides special components to help you build conversat | Streamlit | Panel | Description | | -------------------- | ------------------- | -------------------------------------- | -| [`st.chat_message`](https://docs.streamlit.io/library/api-reference/chat/st.chat_message) | [`pn.chat.ChatEntry`](../../../examples/reference/chat/ChatEntry.ipynb) | Display a single chat message | -| [`st_chat_input`](https://docs.streamlit.io/library/api-reference/chat/st.chat_input) | | Input a chat message | -| `st.status` | | Display output of long-running tasks in a container | -| | [`pn.chat.ChatFeed`](../../../examples/reference/chat/ChatFeed.ipynb) | Display multiple chat messages | -| | [`pn.chat.ChatInterface`](../../../examples/reference/chat/ChatInterface.ipynb) | High-level, easy to use chat interface | -| `langchain.callbacks.StreamlitCallbackHandler` | [`pn.chat.PanelCallbackHandler`](../../../examples/reference/chat/ChatInterface.ipynb) | Display the thoughts and actions of a [LangChain](https://python.langchain.com/docs/get_started/introduction) agent | +| [`chat_message`](https://docs.streamlit.io/library/api-reference/chat/st.chat_message) | [`ChatEntry`](../../../examples/reference/chat/ChatEntry.ipynb) | Display a chat message | +| [`chat_input`](https://docs.streamlit.io/library/api-reference/chat/st.chat_input) | | Input a chat message | +| [`status`](https://docs.streamlit.io/library/api-reference/status/st.status) | | Display the output of long-running tasks in a container | +| | [`ChatFeed`](../../../examples/reference/chat/ChatFeed.ipynb) | Display multiple chat messages | +| | [`ChatInterface`](../../../examples/reference/chat/ChatInterface.ipynb) | High-level, easy to use chat interface | +| [`StreamlitCallbackHandler`](https://python.langchain.com/docs/integrations/callbacks/streamlit) | [`PanelCallbackHandler`](../../../examples/reference/chat/ChatInterface.ipynb) | Display the thoughts and actions of a [LangChain](https://python.langchain.com/docs/get_started/introduction) agent | +| [`StreamlitChatMessageHistory`](https://python.langchain.com/docs/integrations/memory/streamlit_chat_message_history) | | Persists the memory of a [LangChain](https://python.langchain.com/docs/get_started/introduction) agent | -The starting point for most Panel users is the *high-level* `ChatInterface`. Not the *low-level* `ChatEntry` and `ChatFeed` components. +The starting point for most Panel users is the *high-level* [`ChatInterface`](../../../examples/reference/chat/ChatInterface.ipyn), not the *low-level* [`ChatEntry`](../../../examples/reference/chat/ChatEntry.ipynb) and [`ChatFeed`](../../../examples/reference/chat/ChatFeed.ipynb) components. -You can find specialized chat components and examples at [panel-chat-examples/](https://holoviz-topics.github.io/panel-chat-examples/). +For inspiration check out the many chat components and examples at [panel-chat-examples](https://holoviz-topics.github.io/panel-chat-examples/). ## Chat Message -Lets see how-to migrate an app using `st.chat_message` +Lets see how-to migrate an app that is using `st.chat_message`. ### Streamlit Chat Message Example @@ -49,6 +50,8 @@ pn.chat.ChatEntry(value=message, user="user").servable() ## Chat Input +Lets see how-to migrate an app that is using `st.chat_message` + ### Streamlit Chat Input ```python @@ -65,7 +68,7 @@ if prompt: Panel does not provide a dedicated *chat input* component because it is built into Panels high-level `ChatInterface`. -Below we will show you how to build a custom `ChatInput` widget. +Below we will show you how to build and use a custom `ChatInput` widget. ```python import param @@ -127,8 +130,11 @@ class ChatInput(pn.viewable.Viewer): def _update_value(self, value, event): self.value = value or self.value self._text_input.value = "" +``` +Let us use the custom `ChatInput` widget. +```Python chat_input = ChatInput(placeholder="Say something") @@ -146,6 +152,8 @@ pn.Column(message, chat_input, margin=50).servable() ## Chat Status +Lets see how-to migrate an app that is using `st.status`. + ### Streamlit Chat Status ```python @@ -167,9 +175,9 @@ st.button("Run") ### Panel Chat Status -Panel does not provide a dedicated *status* component because it is built into Panels high-level `ChatInterface`. Furthermore Panel provides a lot of other built in *indicators*. Check out the [Indicators Gallery](https://panel.holoviz.org/reference/index.html#indicators). +Panel does not provide a dedicated *status* component. Instead it is built into Panels high-level `ChatInterface` as well as provided by a long list of alternative Panel [*indicator components*](https://panel.holoviz.org/reference/index.html#indicators). -Below we will show you how to build a custom `Status` indicator. +Below we will show you how to build and use a custom `Status` indicator. ```python import time @@ -315,8 +323,11 @@ class Status(pn.viewable.Viewer): self.value = "error" else: self.complete() +``` +Let us use the custom `Status` indicator. +```python status = Status("Downloading data...", collapsed=False, sizing_mode="stretch_width") From 378506c5ba4e601eb008194e05ab560adb4e1151 Mon Sep 17 00:00:00 2001 From: MarcSkovMadsen Date: Mon, 16 Oct 2023 09:50:25 +0000 Subject: [PATCH 06/12] fix spell errors --- doc/how_to/streamlit_migration/chat.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/how_to/streamlit_migration/chat.md b/doc/how_to/streamlit_migration/chat.md index 059fcd1038..fa042f8867 100644 --- a/doc/how_to/streamlit_migration/chat.md +++ b/doc/how_to/streamlit_migration/chat.md @@ -10,7 +10,7 @@ Both Streamlit and Panel provides special components to help you build conversat | | [`ChatFeed`](../../../examples/reference/chat/ChatFeed.ipynb) | Display multiple chat messages | | | [`ChatInterface`](../../../examples/reference/chat/ChatInterface.ipynb) | High-level, easy to use chat interface | | [`StreamlitCallbackHandler`](https://python.langchain.com/docs/integrations/callbacks/streamlit) | [`PanelCallbackHandler`](../../../examples/reference/chat/ChatInterface.ipynb) | Display the thoughts and actions of a [LangChain](https://python.langchain.com/docs/get_started/introduction) agent | -| [`StreamlitChatMessageHistory`](https://python.langchain.com/docs/integrations/memory/streamlit_chat_message_history) | | Persists the memory of a [LangChain](https://python.langchain.com/docs/get_started/introduction) agent | +| [`StreamlitChatMessageHistory`](https://python.langchain.com/docs/integrations/memory/streamlit_chat_message_history) | | Persist the memory of a [LangChain](https://python.langchain.com/docs/get_started/introduction) agent | The starting point for most Panel users is the *high-level* [`ChatInterface`](../../../examples/reference/chat/ChatInterface.ipyn), not the *low-level* [`ChatEntry`](../../../examples/reference/chat/ChatEntry.ipynb) and [`ChatFeed`](../../../examples/reference/chat/ChatFeed.ipynb) components. @@ -50,7 +50,7 @@ pn.chat.ChatEntry(value=message, user="user").servable() ## Chat Input -Lets see how-to migrate an app that is using `st.chat_message` +Lets see how-to migrate an app that is using `st.chat_input`. ### Streamlit Chat Input @@ -175,7 +175,7 @@ st.button("Run") ### Panel Chat Status -Panel does not provide a dedicated *status* component. Instead it is built into Panels high-level `ChatInterface` as well as provided by a long list of alternative Panel [*indicator components*](https://panel.holoviz.org/reference/index.html#indicators). +Panel does not provide a dedicated *status* component. Instead it is built into Panels high-level `ChatInterface` as well as provided by a long list of alternative Panel [*indicators*](https://panel.holoviz.org/reference/index.html#indicators). Below we will show you how to build and use a custom `Status` indicator. From 8ea7c9a57f60d8bec44d4baf434cf5b99963a295 Mon Sep 17 00:00:00 2001 From: Philipp Rudiger Date: Wed, 18 Oct 2023 12:56:02 +0200 Subject: [PATCH 07/12] Minor tweaks --- doc/how_to/streamlit_migration/chat.md | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/doc/how_to/streamlit_migration/chat.md b/doc/how_to/streamlit_migration/chat.md index fa042f8867..6bd07b8384 100644 --- a/doc/how_to/streamlit_migration/chat.md +++ b/doc/how_to/streamlit_migration/chat.md @@ -4,7 +4,7 @@ Both Streamlit and Panel provides special components to help you build conversat | Streamlit | Panel | Description | | -------------------- | ------------------- | -------------------------------------- | -| [`chat_message`](https://docs.streamlit.io/library/api-reference/chat/st.chat_message) | [`ChatEntry`](../../../examples/reference/chat/ChatEntry.ipynb) | Display a chat message | +| [`chat_message`](https://docs.streamlit.io/library/api-reference/chat/st.chat_message) | [`ChatMessage`](../../../examples/reference/chat/ChatMessage.ipynb) | Display a chat message | | [`chat_input`](https://docs.streamlit.io/library/api-reference/chat/st.chat_input) | | Input a chat message | | [`status`](https://docs.streamlit.io/library/api-reference/status/st.status) | | Display the output of long-running tasks in a container | | | [`ChatFeed`](../../../examples/reference/chat/ChatFeed.ipynb) | Display multiple chat messages | @@ -12,7 +12,7 @@ Both Streamlit and Panel provides special components to help you build conversat | [`StreamlitCallbackHandler`](https://python.langchain.com/docs/integrations/callbacks/streamlit) | [`PanelCallbackHandler`](../../../examples/reference/chat/ChatInterface.ipynb) | Display the thoughts and actions of a [LangChain](https://python.langchain.com/docs/get_started/introduction) agent | | [`StreamlitChatMessageHistory`](https://python.langchain.com/docs/integrations/memory/streamlit_chat_message_history) | | Persist the memory of a [LangChain](https://python.langchain.com/docs/get_started/introduction) agent | -The starting point for most Panel users is the *high-level* [`ChatInterface`](../../../examples/reference/chat/ChatInterface.ipyn), not the *low-level* [`ChatEntry`](../../../examples/reference/chat/ChatEntry.ipynb) and [`ChatFeed`](../../../examples/reference/chat/ChatFeed.ipynb) components. +The starting point for most Panel users is the *high-level* [`ChatInterface`](../../../examples/reference/chat/ChatInterface.ipyn), not the *low-level* [`ChatMessage`](../../../examples/reference/chat/ChatMessage.ipynb) and [`ChatFeed`](../../../examples/reference/chat/ChatFeed.ipynb) components. For inspiration check out the many chat components and examples at [panel-chat-examples](https://holoviz-topics.github.io/panel-chat-examples/). @@ -43,7 +43,7 @@ message = pn.Column( "https://panel.holoviz.org/_images/logo_horizontal_light_theme.png", "# The powerful data exploration & web app framework for Python" ) -pn.chat.ChatEntry(value=message, user="user").servable() +pn.chat.ChatMessage(message, user="user").servable() ``` ![Panel ChatEntry](../../_static/images/panel_chat_entry.png) @@ -71,9 +71,8 @@ Panel does not provide a dedicated *chat input* component because it is built in Below we will show you how to build and use a custom `ChatInput` widget. ```python -import param - import panel as pn +import param pn.extension(design="material") @@ -132,20 +131,17 @@ class ChatInput(pn.viewable.Viewer): self._text_input.value = "" ``` -Let us use the custom `ChatInput` widget. +Let us use the custom `ChatInput` widget: ```Python chat_input = ChatInput(placeholder="Say something") - -@pn.depends(chat_input.param.value) def message(prompt): if not prompt: return "" return f"User has sent the following prompt: {prompt}" - -pn.Column(message, chat_input, margin=50).servable() +pn.Column(pn.bind(message, chat_input.param.value), margin=50).servable() ``` ![Panel ChatInput](../../_static/images/panel_chat_input.png) @@ -330,7 +326,6 @@ Let us use the custom `Status` indicator. ```python status = Status("Downloading data...", collapsed=False, sizing_mode="stretch_width") - def run(_): with status.report() as progress: progress("Searching for data...") @@ -340,7 +335,6 @@ def run(_): progress("Validating data...") time.sleep(1.5) - run_button = pn.widgets.Button(name="Run", on_click=run) pn.Column( From feb23b6e63896546d07c0475e10e6f3c82f0df70 Mon Sep 17 00:00:00 2001 From: MarcSkovMadsen Date: Thu, 19 Oct 2023 08:46:42 +0000 Subject: [PATCH 08/12] remove ChatInput and Status components --- doc/how_to/streamlit_migration/chat.md | 301 +------------------------ 1 file changed, 2 insertions(+), 299 deletions(-) diff --git a/doc/how_to/streamlit_migration/chat.md b/doc/how_to/streamlit_migration/chat.md index 6bd07b8384..4968e0b5be 100644 --- a/doc/how_to/streamlit_migration/chat.md +++ b/doc/how_to/streamlit_migration/chat.md @@ -5,8 +5,8 @@ Both Streamlit and Panel provides special components to help you build conversat | Streamlit | Panel | Description | | -------------------- | ------------------- | -------------------------------------- | | [`chat_message`](https://docs.streamlit.io/library/api-reference/chat/st.chat_message) | [`ChatMessage`](../../../examples/reference/chat/ChatMessage.ipynb) | Display a chat message | -| [`chat_input`](https://docs.streamlit.io/library/api-reference/chat/st.chat_input) | | Input a chat message | -| [`status`](https://docs.streamlit.io/library/api-reference/status/st.status) | | Display the output of long-running tasks in a container | +| [`chat_input`](https://docs.streamlit.io/library/api-reference/chat/st.chat_input) | [`ChatInput` example](https://holoviz-topics.github.io/panel-chat-examples/components/#chat_input) | Input a chat message | +| [`status`](https://docs.streamlit.io/library/api-reference/status/st.status) | [`Status` example](https://holoviz-topics.github.io/panel-chat-examples/components/#status) | Display the output of long-running tasks in a container | | | [`ChatFeed`](../../../examples/reference/chat/ChatFeed.ipynb) | Display multiple chat messages | | | [`ChatInterface`](../../../examples/reference/chat/ChatInterface.ipynb) | High-level, easy to use chat interface | | [`StreamlitCallbackHandler`](https://python.langchain.com/docs/integrations/callbacks/streamlit) | [`PanelCallbackHandler`](../../../examples/reference/chat/ChatInterface.ipynb) | Display the thoughts and actions of a [LangChain](https://python.langchain.com/docs/get_started/introduction) agent | @@ -47,300 +47,3 @@ pn.chat.ChatMessage(message, user="user").servable() ``` ![Panel ChatEntry](../../_static/images/panel_chat_entry.png) - -## Chat Input - -Lets see how-to migrate an app that is using `st.chat_input`. - -### Streamlit Chat Input - -```python -import streamlit as st - -prompt = st.chat_input("Say something") -if prompt: - st.write(f"User has sent the following prompt: {prompt}") -``` - -![Streamlit chat_input](../../_static/images/streamlit_chat_input.png) - -### Panel Chat Input - -Panel does not provide a dedicated *chat input* component because it is built into Panels high-level `ChatInterface`. - -Below we will show you how to build and use a custom `ChatInput` widget. - -```python -import panel as pn -import param - -pn.extension(design="material") - - -class ChatInput(pn.viewable.Viewer): - value = param.String() - - disabled = param.Boolean() - max_length = param.Integer(default=5000) - placeholder = param.String("Send a message") - - def __init__(self, **params): - layout_params = { - key: value - for key, value in params.items() - if not key in ["value", "placeholder", "disabled", "max_length"] - } - params = { - key: value for key, value in params.items() if key not in layout_params - } - - super().__init__(**params) - - self._text_input = pn.widgets.TextInput( - align="center", - disabled=self.param.disabled, - max_length=self.param.max_length, - name="Message", - placeholder=self.param.placeholder, - sizing_mode="stretch_width", - ) - self._submit_button = pn.widgets.Button( - align="center", - disabled=self.param.disabled, - icon="send", - margin=(18, 5, 10, 0), - name="", - sizing_mode="fixed", - ) - pn.bind( - self._update_value, - value=self._text_input, - event=self._submit_button, - watch=True, - ) - - self._layout = pn.Row( - self._text_input, self._submit_button, align="center", **layout_params - ) - - def __panel__(self): - return self._layout - - def _update_value(self, value, event): - self.value = value or self.value - self._text_input.value = "" -``` - -Let us use the custom `ChatInput` widget: - -```Python -chat_input = ChatInput(placeholder="Say something") - -def message(prompt): - if not prompt: - return "" - return f"User has sent the following prompt: {prompt}" - -pn.Column(pn.bind(message, chat_input.param.value), margin=50).servable() -``` - -![Panel ChatInput](../../_static/images/panel_chat_input.png) - -## Chat Status - -Lets see how-to migrate an app that is using `st.status`. - -### Streamlit Chat Status - -```python -import time -import streamlit as st - -with st.status("Downloading data...", expanded=True): - st.write("Searching for data...") - time.sleep(1.5) - st.write("Downloading data...") - time.sleep(1.5) - st.write("Validating data...") - time.sleep(1.5) - -st.button("Run") -``` - -![Streamlit status](https://user-images.githubusercontent.com/42288570/275434382-992f352f-676a-4167-aad0-1fcc2745c130.gif) - -### Panel Chat Status - -Panel does not provide a dedicated *status* component. Instead it is built into Panels high-level `ChatInterface` as well as provided by a long list of alternative Panel [*indicators*](https://panel.holoviz.org/reference/index.html#indicators). - -Below we will show you how to build and use a custom `Status` indicator. - -```python -import time - -from contextlib import contextmanager - -import param - -import panel as pn - -from panel.widgets.indicators import LoadingSpinner - -pn.extension(design="material") - -COLORS = { - "running": "green", - "complete": "black", - "error": "red", - "next": "lightgray", -} - - -class Status(pn.viewable.Viewer): - value = param.Selector(default="complete", objects=["running", "complete", "error"]) - title = param.String() - - bgcolor = param.ObjectSelector( - default=LoadingSpinner.param.bgcolor.default, - objects=LoadingSpinner.param.bgcolor.objects, - ) - color = param.ObjectSelector( - default="success", objects=LoadingSpinner.param.color.objects - ) - collapsed = param.Boolean(default=True) - - steps = param.List(constant=True) - step = param.Parameter(constant=True) - - def __init__(self, title: str, **params): - params["title"] = title - params["steps"] = params.get("steps", []) - layout_params = { - key: value - for key, value in params.items() - if not key - in ["value", "title", "collapsed", "bgcolor", "color", "steps", "step"] - } - params = { - key: value for key, value in params.items() if key not in layout_params - } - super().__init__(**params) - - self._indicators = { - "running": pn.indicators.LoadingSpinner( - value=True, - color=self.param.color, - bgcolor=self.param.bgcolor, - size=25, - # margin=(15, 0, 0, 0), - ), - "complete": "✔️", - "error": "❌", - } - - self._title_pane = pn.pane.Markdown(self.param.title, align="center") - self._header_row = pn.Row( - pn.panel(self._indicator, sizing_mode="fixed", width=40, align="center"), - self._title_pane, - sizing_mode="stretch_width", - margin=(0, 5), - ) - self._details_pane = pn.pane.HTML( - self._details, margin=(10, 5, 10, 55), sizing_mode="stretch_width" - ) - self._layout = pn.Card( - self._details_pane, - header=self._header_row, - collapsed=self.param.collapsed, - **layout_params, - ) - - def __panel__(self): - return self._layout - - @param.depends("value") - def _indicator(self): - return self._indicators[self.value] - - @property - def _step_color(self): - return COLORS[self.value] - - def _step_index(self): - if self.step not in self.steps: - return 0 - return self.steps.index(self.step) - - @param.depends("step", "value") - def _details(self): - steps = self.steps - - if not steps: - return "" - - index = self._step_index() - - html = "" - for step in steps[:index]: - html += f"
{step}
" - step = steps[index] - html += f"
{step}
" - for step in steps[index + 1 :]: - html += f"
{step}
" - - return html - - def progress(self, step: str): - with param.edit_constant(self): - self.value = "running" - if not step in self.steps: - self.steps = self.steps + [step] - self.step = step - - def reset(self): - with param.edit_constant(self): - self.steps = [] - self.value = self.param.value.default - - def start(self): - with param.edit_constant(self): - self.step = None - self.value = "running" - - def complete(self): - self.value = "complete" - - @contextmanager - def report(self): - self.start() - try: - yield self.progress - except Exception as ex: - self.value = "error" - else: - self.complete() -``` - -Let us use the custom `Status` indicator. - -```python -status = Status("Downloading data...", collapsed=False, sizing_mode="stretch_width") - -def run(_): - with status.report() as progress: - progress("Searching for data...") - time.sleep(1.5) - progress("Downloading data...") - time.sleep(1.5) - progress("Validating data...") - time.sleep(1.5) - -run_button = pn.widgets.Button(name="Run", on_click=run) - -pn.Column( - status, - run_button, -).servable() -``` - -![Panel Status](https://user-images.githubusercontent.com/42288570/275440464-5a610fd8-b1c9-4c1e-8f5e-c9a9f407bc36.gif) From 850da890f6a3bb393d05f6faac31a8fd24ead58f Mon Sep 17 00:00:00 2001 From: MarcSkovMadsen Date: Thu, 19 Oct 2023 09:16:11 +0000 Subject: [PATCH 09/12] add echo example --- doc/_static/images/panel_echo_bot.png | Bin 0 -> 41054 bytes doc/_static/images/streamlit_echo_bot.png | Bin 0 -> 12368 bytes doc/how_to/streamlit_migration/chat.md | 67 ++++++++++++++++++++-- 3 files changed, 63 insertions(+), 4 deletions(-) create mode 100644 doc/_static/images/panel_echo_bot.png create mode 100644 doc/_static/images/streamlit_echo_bot.png diff --git a/doc/_static/images/panel_echo_bot.png b/doc/_static/images/panel_echo_bot.png new file mode 100644 index 0000000000000000000000000000000000000000..8b365050fbcb898f9e76821041d3425e58131b8a GIT binary patch literal 41054 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
y{ZNaBc~ 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 Z%@?efoHA2@U>zBmilU}MiJWE7e*xj3aRUGV literal 0 HcmV?d00001 diff --git a/doc/how_to/streamlit_migration/chat.md b/doc/how_to/streamlit_migration/chat.md index 4968e0b5be..c266a5e16b 100644 --- a/doc/how_to/streamlit_migration/chat.md +++ b/doc/how_to/streamlit_migration/chat.md @@ -9,12 +9,10 @@ Both Streamlit and Panel provides special components to help you build conversat | [`status`](https://docs.streamlit.io/library/api-reference/status/st.status) | [`Status` example](https://holoviz-topics.github.io/panel-chat-examples/components/#status) | Display the output of long-running tasks in a container | | | [`ChatFeed`](../../../examples/reference/chat/ChatFeed.ipynb) | Display multiple chat messages | | | [`ChatInterface`](../../../examples/reference/chat/ChatInterface.ipynb) | High-level, easy to use chat interface | -| [`StreamlitCallbackHandler`](https://python.langchain.com/docs/integrations/callbacks/streamlit) | [`PanelCallbackHandler`](../../../examples/reference/chat/ChatInterface.ipynb) | Display the thoughts and actions of a [LangChain](https://python.langchain.com/docs/get_started/introduction) agent | +| [`StreamlitCallbackHandler`](https://python.langchain.com/docs/integrations/callbacks/streamlit) | [`PanelCallbackHandler`](../../../examples/reference/chat/PanelCallbackHandler.ipynb) | Display the thoughts and actions of a [LangChain](https://python.langchain.com/docs/get_started/introduction) agent | | [`StreamlitChatMessageHistory`](https://python.langchain.com/docs/integrations/memory/streamlit_chat_message_history) | | Persist the memory of a [LangChain](https://python.langchain.com/docs/get_started/introduction) agent | -The starting point for most Panel users is the *high-level* [`ChatInterface`](../../../examples/reference/chat/ChatInterface.ipyn), not the *low-level* [`ChatMessage`](../../../examples/reference/chat/ChatMessage.ipynb) and [`ChatFeed`](../../../examples/reference/chat/ChatFeed.ipynb) components. - -For inspiration check out the many chat components and examples at [panel-chat-examples](https://holoviz-topics.github.io/panel-chat-examples/). +The starting point for most Panel users is the *high-level* [`ChatInterface`](../../../examples/reference/chat/ChatInterface.ipyn) or [`PanelCallbackHandler`](../../../examples/reference/chat/PanelCallbackHandler.ipynb), not the *low-level* [`ChatMessage`](../../../examples/reference/chat/ChatMessage.ipynb) and [`ChatFeed`](../../../examples/reference/chat/ChatFeed.ipynb) components. ## Chat Message @@ -47,3 +45,64 @@ pn.chat.ChatMessage(message, user="user").servable() ``` ![Panel ChatEntry](../../_static/images/panel_chat_entry.png) + +## Echo Bot + +Lets see how to migrate a bot that echoes the user input. + +### Streamlit Echo Bot + +```python +import streamlit as st + +def echo(prompt): + return f"Echo: {prompt}" + +st.title("Echo Bot") + +if "messages" not in st.session_state: + st.session_state.messages = [] + +for message in st.session_state.messages: + with st.chat_message(message["role"]): + st.markdown(message["content"]) + +if prompt := st.chat_input("What is up?"): + st.chat_message("user").markdown(prompt) + st.session_state.messages.append({"role": "user", "content": prompt}) + response = echo(prompt) + + with st.chat_message("assistant"): + st.markdown(response) + st.session_state.messages.append({"role": "assistant", "content": response}) +``` + +![Streamlit Echo Bot](../../_static/images/streamlit_echo_bot.png) + +### Panel Echo Bot + +```python +import panel as pn + +pn.extension(design="material") + + +def echo(contents, user, instance): + return f"Echo: {contents}" + + +chat_interface = pn.chat.ChatInterface( + callback=echo, +) + +pn.Column( + "# Echo Bot", + chat_interface, +).servable() +``` + +![Panel Echo Bot](../../_static/images/panel_echo_bot.png) + +## More Panel Chat Examples + +For more inspiration check out [panel-chat-examples](https://holoviz-topics.github.io/panel-chat-examples/). From 9d36e87762ddac64523104855626ae9161bd5691 Mon Sep 17 00:00:00 2001 From: MarcSkovMadsen Date: Thu, 19 Oct 2023 09:29:27 +0000 Subject: [PATCH 10/12] add streamlit chain of thought --- .../images/streamlit_callback_handler.png | Bin 0 -> 64186 bytes doc/how_to/streamlit_migration/chat.md | 35 ++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 doc/_static/images/streamlit_callback_handler.png diff --git a/doc/_static/images/streamlit_callback_handler.png b/doc/_static/images/streamlit_callback_handler.png new file mode 100644 index 0000000000000000000000000000000000000000..db80b384048153e340bcc9fd5b29b151afc86131 GIT binary patch literal 64186 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%0AQM& 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 C88jRK literal 0 HcmV?d00001 diff --git a/doc/how_to/streamlit_migration/chat.md b/doc/how_to/streamlit_migration/chat.md index c266a5e16b..b8750f5549 100644 --- a/doc/how_to/streamlit_migration/chat.md +++ b/doc/how_to/streamlit_migration/chat.md @@ -103,6 +103,41 @@ pn.Column( ![Panel Echo Bot](../../_static/images/panel_echo_bot.png) +## Search Agent with Chain of thought + +Lets try to migrate an agent that uses the Duck Duck Go search tool and shows its +*chain of thought*. + +### Streamlit Search Agent with Chain of thought + +```python +from langchain.llms import OpenAI +from langchain.agents import AgentType, initialize_agent, load_tools +from langchain.callbacks import StreamlitCallbackHandler +import streamlit as st + +llm = OpenAI(temperature=0, streaming=True) +tools = load_tools(["ddg-search"]) +agent = initialize_agent( + tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True +) + +if prompt := st.chat_input(): + st.chat_message("user").write(prompt) + with st.chat_message("assistant"): + st_callback = StreamlitCallbackHandler(st.container()) + response = agent.run(prompt, callbacks=[st_callback]) + st.write(response) +``` + + + + +### Panel Search Agent with Chain of thought + ## More Panel Chat Examples For more inspiration check out [panel-chat-examples](https://holoviz-topics.github.io/panel-chat-examples/). From c73f5e68d2de5c6bcc583b9c897978fa1bc84fdf Mon Sep 17 00:00:00 2001 From: MarcSkovMadsen Date: Thu, 19 Oct 2023 09:37:33 +0000 Subject: [PATCH 11/12] add panelcallbackhandler example --- doc/_static/images/panel_callback_handler.png | Bin 0 -> 155532 bytes doc/how_to/streamlit_migration/chat.md | 26 +++++++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 doc/_static/images/panel_callback_handler.png diff --git a/doc/_static/images/panel_callback_handler.png b/doc/_static/images/panel_callback_handler.png new file mode 100644 index 0000000000000000000000000000000000000000..2699caf48facd762eb3d1a9e34e167975e6301b8 GIT binary patch literal 155532 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

vMhoDZma-1et)Y_h12 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 Your browser does not support the video tag. @@ -138,6 +137,31 @@ if prompt := st.chat_input(): ### Panel Search Agent with Chain of thought +```python +from langchain.llms import OpenAI +from langchain.agents import AgentType, initialize_agent, load_tools +import panel as pn + +pn.extension(design="material") + +llm = OpenAI(temperature=0, streaming=True) +tools = load_tools(["ddg-search"]) +agent = initialize_agent( + tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True, +) + +async def callback(contents, user, instance): + callback_handler = pn.chat.langchain.PanelCallbackHandler(instance) + await agent.arun(contents, callbacks=[callback_handler]) + +pn.chat.ChatInterface(callback=callback).servable() +``` + + + ## More Panel Chat Examples For more inspiration check out [panel-chat-examples](https://holoviz-topics.github.io/panel-chat-examples/). From 81107fd7b9b9cab813846436c1b6b9e2d9549b31 Mon Sep 17 00:00:00 2001 From: Philipp Rudiger Date: Thu, 19 Oct 2023 12:37:36 +0200 Subject: [PATCH 12/12] Apply suggestions from code review --- doc/how_to/streamlit_migration/chat.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/how_to/streamlit_migration/chat.md b/doc/how_to/streamlit_migration/chat.md index 2935ca06cd..9cb8112891 100644 --- a/doc/how_to/streamlit_migration/chat.md +++ b/doc/how_to/streamlit_migration/chat.md @@ -131,7 +131,7 @@ if prompt := st.chat_input(): ``` @@ -158,7 +158,7 @@ pn.chat.ChatInterface(callback=callback).servable() ```

mDsa36 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