From 1e93daa4aa42c794f741b485bf5cee7ed71a2044 Mon Sep 17 00:00:00 2001 From: Bartmoss Date: Sun, 29 Jan 2023 22:31:45 +0100 Subject: [PATCH] beep on activation WIP --- examples/audio/activation.wav | Bin 0 -> 42088 bytes examples/capture_activations.py | 6 +++++- examples/utils/beep.py | 25 +++++++++++++++++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 examples/audio/activation.wav create mode 100644 examples/utils/beep.py diff --git a/examples/audio/activation.wav b/examples/audio/activation.wav new file mode 100644 index 0000000000000000000000000000000000000000..979e8a2e4f143f5d17391e903712aec4fe9158bc GIT binary patch literal 42088 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

OS}uf1h|exX;0kV9%?Xj&8}OvaTpcc}~91 zn|3fVUmON?;jBV#NodAT!{Vr6NSL)N@~?pA*_R|Sd(*t?=UIEC&vPF)>GF@%jOyC6 zT-CMg*QKugzi;XC@ynLHfuHYWt3JUpPJX_VJn`#AVe$_EC-~b={a&$~u(D2rbhade z#T|1ZHr-=yx?O00>X#VC16(R6VyA2>@pkKS#?nTTz*fso=~}%dYg8qnOL4{bB2>jc zJs(tL_2E>N6i=(^-S@Bhv&9L`?Y)<^lX_0<7*X_2b3XrH6EW+gqb|AG=jG=`uP_dR z&BQWf1X+s@0}mu1LP}<_>of102`_%2{+!H|eM!q|fn>(&_GDeG>YYt1Ps!d<(mzZ0 z>r}>wUukL2evy(XC9^~;%QAT%EB7*$wYw6^n|cuDNPeP@DT|;5hR5+jd$-U^pUv|v zYOo`q-OQ<&fDS_Lrry9nDdzIF$exPNOZucPZ1-n)+N!e)+dt%HOJ3yFOF!jNI$CoL zN=!~4?d(jD(Ui)yzDwNdRPwRD4Xjt8a|tu!Q}IEt7O@O533Lt97~V`+WUFVKS?u{uHCMeh}?Q!&XXi(;(u3mgm?f?aj!2 z^50OT`Vx?BSQ5Qw9Tq(39_f7++~@SiF}7YXi)jI-hha1cqHCs2)M(h<)N=(-Reck` zs^+Eqt^S>MOEW2BnU0eA%@D{qX$EGr*fP>~xwa=C@FB%bp;q3=c$}#PpGnw@_=Hcu zo0&5;SaeY*Tn&MJbHV|tt}hxH0qfO>bS4)iLl)AjT>)^wlQ_OWof{BwSbTAlUU z*f+Jq?h_XJ`0Tq8ErkG{i=Bl03|)w)$C4BF`?fIi?PGZbhU20K%IxI35^mbC=J6Si z>uNI9Rfn^J?hJ4*;D2DS;rOFjKOMF>T=!U#E_97XtyS@{m$>yVqb)CD`ZC@;~ybY!P{d8 z;C}|Tpr^Sw_y?B1NK^Ew3AxnZbykN$e{16}vDQ94A%dL1$|O<#~X+psT#Yl@{!vRq7o*_R~pUE2hQy?S=f z;AouW#cXq>iZQO5LAzPoMs8`yB4}H(F|Vb1c&_SiaBsuU*bf^abi@0X z_hsaVqXj&{Vn>M#3SxiF33{o*#QiG!E$$(~rVVVnmt}9+l{c{EaM$52&kG@~hN2a1 z;%<8-^NRY)9~K-{0=vx9uFH9Dq-V^t0g{)w2M9g|0?cl)?v!e<7`p&j54Gav#RgIW zzCRfE>=5o5LqDNR8BRPS5v9tS9;VmU?#$d>`7n!A#?JotcVm|FXJcm1pS+CYKi{RQ ze%(t-E)59BSG?vSR8b4Crx253?9TSk(byL9Q)<2?yykq^g$SUVGNQJoovs!nM zyj8iG8Iv0LkhXV8H=A114fXjs9kuWBPuBcZfT`gZ4Xg1Njjoj!G3%QPZ!~svm9;?f zzevVqXDV9Lh}x%#<4kT|t^F%wowtCT6<&o=0?t6U!@kD+Xj~wNc-~2;t}|a^zSlnF zZdPOq%O$kLPc0LY=Qrw7>g!5UQMJC*gqkg>f$CW)Z)=_;jjUTGe%SCu&4e9=zrW%!fCrd0dCpOR2cr{X6e)d zull&SNVPKwpnRS@Qo%^!DBdQoR-8&2qI@kruSyqA(|~w;bR$?8BZsCm?hI(Tz|ot0eZ9#z?CrW#pNX z3<^q`N?9!XL|)%vBBiKa6IW={3B8S@aeJ&en0!|UGRMCNz9`ZG`3W2cN`%+P*I<@J zj}z0wGpX!g33G`53HPlRB3$kHAl~f$oz&`LryO>@O}Xkim4bIaPnNi;Nnq~}(H7qq zesO@p85F9dZ;gb>lGq2_XrLHb0UiVH51SsngP83%ptd<9m>RPLw?emtuuj=P^hw)D z(6&9~Cr!0vXu}gSy-rMa)ufRw)chn+YJ<2rb+wqC4HHmHn@_+Q?I$7Y(X(*ubbi>#qGy#D@m6{w?(YrD=cIiqg`$0wtS|&G3SCSk}<=#AZ1!8SF}5}fKvuap)ue`2(!^o zkf-nuL08CE!%JvaJa*r-anD0O3o)Yue zMnR96k}#We-$-9nAjYbWGVUd5Of;%sh_ z_H}t1rDt-+b$BvwtInq_(49`&XL1WXwlel*cRp=-U<7e;G!s1#V7<(TrTJ*@rnku{*xGPT9LG*u_Eba!-=G84ZjorZd@YvG#wK5 zZSBJECt1WX$cvd=^)G6T9!yqSkoaPk7FF+m2-_CzjO_&%#l9oNp=4ZlUr+KemxY#R z=d*JxpLi#XuZ1)9LGexP=A>zw!sO%X?Brtg?4-HsW^q`3S_srWJXsDo9uy8NRO_*=xbI{K#jv;qft%qmT3ZT~; zE`yp{0`d3KZqZ(;6wRooA1CfNN)@#C{39*7_Fpm-#L6uyGq5X|QuUbQUp5 zH!bafHYxj&Hb0-OTV4>>RTd34^z9xt{^*Xi{Ly`b&0f^SdAXp_vnYSPe^$0NbSiCs zjFQ+N6yV}vGw2fJEaG`A3)O}A0Cbg-5w4>BbU$UDwDjeC(yrxA>*y!g-*!njwQ;>j zTT>}2tUM{2UREQVQ?f%a>h~jF;_vAk$L|ZwN2QBs<0@Ln71dTey5S=_+AYz=!x9 z=%%n8^`}3GpYOg$d1W`yCs=N=#~Dj`uXF>2do);arHYk!M7bcbLg5qdRg{UoD>Q;l z%0GDbRRZ=v&2;)89gA|uuoOSuyaYACmJ40#Y>j{MYzn0Ya=e$qBnK?s%{&40QMU#9 zT(uOD+rdN+mu|rl+YjRpxAr5JwVWkYw(KXLY$a1z?OiByrB?E+j(%jMx*KV@zMYU@ z$-<9w7Gq65Ci;7%0`UekANB&_2Vce=0ZyRwihpO|qUBt4c!H=$a76NL|E07szQWAj zUQG5n4<#q&9+=bazMPHm@Uo71YSQO;-=u8wb%+)IiTq8$d{)2kzJ&bfa(u5i6geI^ z8?**|Cwu^E^z4TZu`NKV^h|W6@*GAeZO6u%+i~ma594oEyYc5LpoE!a@9^kS68=&N z2FEPDhuK+XKs8h}A|N&EVep1_a8(Ni*iXiYja6gAa%0Hf;Bb0~ftYh`JlC#=owW?b z^)_uu$T7@duhZ2DdD=HAT{XeX&+46dKhy&Y25B<8jnZcIXwvoV*<_f}bC`L5k3`$o zZquE}LcM2g{>uO^`%OffDhH6nJm^EtTx13HGWHn$J&}sIm#`f$kzoqFVXt<+;1!wr z3MZ?_i9J$DqOheQDN@%p`FvG8300n+G`r-7_};Hdq3Y)lKJiySPS@Whj1i@>guxZ3 ziOd=h_GLpJBGTFwESHO8eYDsh$O7`9-5h(b&??hvAW?T5fmLn9ub1PglODxD+*Mb^AUl zK&DCnDmp0l)Vs-QeGBoTMTvjsyoXKm_d>Tso+Ivoh_IcARp61h4uFX~E7pU7h@^1a zgO`L_|CXdY-<#Cmo&gyT-NY=div7g;SFg-ecQB3Uu_q7rW{4Yn?|Byk zPnj1&qJ&?OG(0-qf%pqJ1@s8~K5T)~ylBKJ8vr%N@Etuz)fcOiuE#lBrsK~ySn=)} zF@aPS#X~AK;G4=$;0~9K#AcU2K)eB|*%2L8gwc8Z{CNhvFs9rqqD$9^%bOd;S@l=N6RX=r6DxKL3(9WtBPG4KcS|O+ zx|ag!FUtl{FqN5vqMAx{N<${Rx@94VB0CyYs2&GcMw$DrJ;%Pl_rcT|N3O#_N>p!A zb2~)Df24UddV2-CZ)>|C(mX6_OfxR6xS5t&**rem-|{u*Q`@9ms+5r%kfU-Ys4}wz zx+CeMOhqZbZN0@C-7k3)0*{#kqkR){L3{8B_-W)v^g(bDVRv*H<&u9q-Qbk4c3T46 zgZe81ocfnY&@m^mR!+awSFChv1J$B(lPv2I%MN3I4+>fPFU9Ax>y|qxFjE*cw>|ev0H4;cVMC;-S`^q~cZs z>1C^rq-%Rbs*w;#f6Il$+e#~bqjo*6!B~#DZnL9m+%Ck>Uu`46-NbqjzZ zypF9%FhzDT2ZytH?ZJtnn*npuU4L7u*+3-Qz3J#sc4s(LMk_XrhAPr-Uefhc#;vCcHVd}tB+|! z-cWN<*B6$)g&S;hijFxh6a`({!h7B!1!n>!`R~HZa)9xn8S_93lUtx#!7yYa>ltQj zLKwdm$01LH!>J;`eY!aiWY#;4Y`4EHhGDhyEj;dUf@=k7z z=2i~RP@Pp}&d>O5??{QbHR2h8iTw7+FxE6+OF|=*O2|WTQL}JZ$OKX}8c6^K1~Lj< z$?R8_bKFzmVzFvD*l%~CzDADMWVwz>iN3})CyLJ7NqsE@Xqvm2>v-JtIy8 zy~((;KnU?Ed;@$xRutO-Y!38!^xQyx`r2Sg zsv&efd1vIQxH!fUPylweAJ~Jg0@KJP(DT^y@MicJq!HMGvW0tL!rnR9OvfeL<+(mZ=H+V-n0@cYRJOutGk4HSNj$5q4p~5KwU8;vEe0fPZK15xwSYl zOS&%jP4UwAK#TF9&3l~Hj%<62k77kdyO~FV9~yTcmm7}Z59=o<5cNNqG2Iv5Bz=yU zV*sU$HYTQ9O-C|4maf^8?X(=KD>p~z-I={2fX#A*o6?WR)hUC)0}~-|gy0RTm^~H; zqJ1OIC;BOS(R$ie=q~2G_*eG0;3@7Lx0maM!rBYf~RV^${F3X znzg#2h5l!KZ9=SW3290F2i(<$64Z&N8?c_O(?CZg(AegVr$M`ViMQS`+)1*{vYvK- zHVz1`(m~?;)o&mK^bF_bTWe}-N(t2rVA>hMPi5SdeWti=_$XJvr^}2 z?x!x(7o|3vFe%4unMsFS_eJk~2l$AvhCMr8PJaa+L2<#i;^CNeC=GrnbUhglctKT# zPBL1(FgDzY3r+DKiW5DQhx zOfp=jXX)3o*64n5(scjwM(XbHrMetJlb$8WGA`yTO#+_5GJsQHZ)1LQ+GtxmM<`SL zWrUHT$C!c95r}-i2QU&$?>wE|6zYcXc(Jh}L%3H+q z9XE)}OTxb^!lM-UWwKoWTH8A5nWXj}fQ!>tS58079~V22OWRiyQsO=;cU5 zXb!L>kOFh~8c>tH#1Pi#E)KXBnMIT($EPKhO0`*y73)H@oBFByUpU7vCN6 z#lUva)6h$SBQk0?|;8!cG#D2rn9s=D{)8G*B%rIXae*8rV-9;$A_z zU;~r$O})s;Iu3cS>N075$0uTw^k0Iy-GIB)=Ep$V-lJG;g$Q}u7U*!vS9Y9*E`AnUpX=A?C z?BJfz-W3>ih2l4cv?Ql#Q}RixAmy-wn^Naqo;<x!UP$PL_)Ld_cd@=lWt@Y7@4VISRKY15MhG&^7S?Msgml&40<}DW-%Hw$ zo7e7URkr3bh^;UxxOEHZTI(&Gy6q6EQZf)WRjvXaQm%{+)wd>Y*A>fZ zKfpLY@=?10*rECxwn{Msy+y9agJnq+ywpd#AsNg1ASvKZlV0ZUldTta?~M0bq8uy6 zY5Iw&`hB9+rvDd1R~gxbyhsE8si!QLZ)V)m` z&$xd1k^Ia&xpU{vdF8yPN>Y?NIRW%}6NyAYv&8Lry%O%^=Ebeem18`) zXQJ3VNBHJ~&mk9z=2-id{xr^T#8Mt-ckFerKRlP&rX`8brPXQ(UkV-wbi~Gc*HJ56 zTTNU=PuutMzeAJDjzpA~#6+i-M91b8r^lH}X2xGHxfTDkbZUIV@;~B`3Ocr$6N%pI zUJ=p8w=OiANwvlD3r$U=71SuTFSZgupsnylbrm*TY)@8YU(hK&-8k7*WQHrITG6s? zwiU&F?28I7*xCH!b~wMj{Y>6OTR~n+>#h9f=D0%57+x&UdrBXXn;iY|3g;{2thY9F znc1zo1V|mIZjwHNt%Yt_3U{9B#$=kV`(N0``bLJ0_3ntg;u#v#$8#dCoo7PACeNP4 zYTlYjk-n6q;r^A06@g|68SJRIUwk0Cs)R-!QjUgJ33562!867_NDJ~Ob`t4I`t_Z3 z3;Bw12e;L1@K?7!cP+NPaLfztd0U8FI3T2Fe!Y-txu@-Wvv1jsW{tLX&N^-0p0&&P zdv-lq&Dl&u%lGM1_av3tG!V`zDq<_RlX&sIu@AD zmKE4Kl`3I9O0Gv`6tl5ci*F}{msBJPC4Z#!EL&B@=J;NvUFF&;A6@AwcfDd#S>WG< z!8{!&NYA4lX;AonD95%G8*ds+{Y{3O-XMQlzv^IUfkZ~2-1VqIK2J=!^LE^aaxFfh zkFwSA`zw0Hwsh}}s_vf?-jge_@03VOiRPjk zz$ft;ct>~zU7!s%Z;~o)gSqNq1N?a8Zuhe28kI|8tCY)e+e+m4`9%v8vI{0A{Fnb< ze82o#ag+07VvPmn==O#CBB0_Ip`A*P+m!Ow<{0NCI>^f7g97!CKKu+|j(kTsrN@Zh z;ma(KukicmZJz69kMlSCg^JE$Z_Bxeer2_zJC~NmTrIH&uXH7@pyY1csnS|;|CL!{ zM>r-%x2bF#InR|IR_a-7-|eR?^Vq?Lxxy6UPq{yGMymqc16lbV@`>Mze+qP@4Bo4T z9nMdt`Hmx&r=>>Qy5ea2o5C0NJq5-PcfQB|BY%#)Z@~fE(83v3N0HAgm((zAEU#)< zS6N0DyO-em{FTUNt~+#HI+|qSB>7` zf#RBZR>e2>%uLwjd7aR~yD6bdkkL5g?-tjL=@%2neUEG-6ou`P*4VA;6Z0wk3f&g^ zAN~t*2EQk3Z^pI6sTeH%t_K`)q?P~Bjt(Mo_UX-)V);MR5 zwMvfHd?P2+RG3>rU&x<9Vnw$xXUQkHr{g^k?s}-U@tu_}vB&uC(sc&XUA|}VD9>EN z=mLyr<#20X$E;AHEHx4>n;WyDv~~QH(iMsSmZm13ENhzLD?gudrD9>qH|Nph5uVhf z#{Q6mVeG8fTSE7!*2=B0BK@&#FTB{)3-^;8)ec>6S`L(2@5*E-&X)sGk zyP`o{dg+AtVMVrtQ~50tR^(>KmuHJ{?ySAB`?79D=Vy(Ne3N}XtViy4`-J=y3sE%7 zP`fmZcmtZBjf$X$8a zF|%_g$G^`RpLjjzby7_3?qoyW)8sYz-I5m;)=w%fUXzef)+P?ETo8TCT{mKde|5-q zZn5R1RK-B)NAPYi3oXPuX{+eJ#6jj*w$%2?`&-yMr!6wYu_wB?r;{80%t z@|Xl$E}Xb0XLG`xoXzozbBVYwd34OPf+La5i~kL4RCdaKs-lTyo_mjBtN&l3f^#CX zWDJCWYU&SEsC1OcTe($o-Y$!aBLX*y{Pbrhd#DYCk_0<0Tawqpen-ffmt% zK4n@Fr@W2m4^FqSpJSM%Rq15gu_AlOx`IKWLSAZ^lDjo*U+(&__qn#PBYDk2;R4+* z7tXXTE&0>3xO}Xss8XgcdnS-?0_U+<;U|1Vfx&uUGwl_+M($3zg%hT9?tyI@vnDLv zUm6MeGGktQdd8Q#8zoM5Z%XRu?wGvVJt{fY^DQaNdm(YMuQ;9xY>pL~^HJ6LZsFU+ z74|q~p!tyWA%~w;4kciGM3EbAJO#!g~liD4D+6fQP$U`Cu~!T((UW=<3fJR z?G@x#Lql3+Ew(?%oNLR=#H<&yg6B$3jInCo-&95ci>9C3{Vil8c*}eQ6{*W4h5c>Rfz?)* z93NW7EsB8s^P@+&h&a$uH32KhNK7mEoU}BzUow{6GPz#njwJBc;Ka0_+u|?&Y#(%c zE{(#o+J@K3IcE0;EA%!+(`dSk#ky7wgNi&C)fWsbW{NWzN(a3yk*}4bNUp5EX=yQL zpH?t2{7deL=x5o#;#y?=m)Ie*c1po7ca^YAA~i2_QEJQVMyaW}ovR+oznZeEXjzg_ zdL{l<#fX?n_tuEsf#D&={73U11*N-#R*Xk!a6N@7#ilSGwGZ@v4g2is7UfBeCm^|9~s&PHu1oD}|{)C-viZB;_&L? zdb&S%*L*v0(mvMLAbg}}K-5*295c}w6~DIfR03VOFHx^>CjPJTSYmzWwS*b2)OgB+ z$0EK_QN088!*ki)_H)8M^C7txeO7yiJp`*mACaZ%NBom;iR!|PGI~9q%sG|1HNO0( z{Y~+Z(29aNVd;61;ZJjVho@)L;bPW+Fgm+R=(Ftg_R!pARy^No-ds4yu(xC&8RLk? zNY`Dcm#>ZfnSCPvA+;BV>G@0(U_zK*lERk6OI*C zCJiV$nX zS?VkD2z^1^1&$jo$%8G|xli_>K`gwFt1Qys7#mZoWO`gife@dQ3nXsHUYqzPb9v&$ zUu6mPf4z+#`Rlj1YMF+ZeOZem|H@eq)*|0(A6+!UESHX@(aJjbG*2cJ&itA}#OMN1;<7nH~RmiImWR8HfhbJZu9`>m6SHwX_a&$piSOD!zfrjKs{x~*I z=HP*Pd$1|IOEch{{FquIwlG!a=UL6{;E*PPtgy4bK*S{PzNjUhr_sgki81Hg>tkNI z<73)*>POqW|3o(P{S3e8Ulux49Wd_@Y8f2TAH-Po7E-3a17<>*iW6}OgYiiA z7&*uHkjC66jTIHW%)gaiwtOzhuvQkWwWSr7+V&QBYz>3;*r9!;+0WAe{mPGmwQU6fe(i5z6+Kip6(%ITzkTA zRj!B{Rl&rJc6j2RmrqI9R6Zc_UipQ@zK*$xJt|HmT&V08Kf^UKcC81BcKWJE9ASz= z*75DEhopYSFKRLw1HMIOA;W?DxFe`I{=w_UPJtXtbI%g{qRLmHbot|OxTIg?jKZZ+ zgYp|jzsOx0osrW!dT`FQs1-S9BAeybjaZX6C~QzcR1gEETNjt!GF^83MYneiB@%t5 zNON{1xLka#epQ=Db)ehaa%@E4G}XX+z|`5*(RQL@f9Qbn%@O}AHAH_ew#8m6+7~Aj z?vB4wh$UneI^$Oqb&KCwoER5Yx-bSQ?;AC+;&Hg_d>i8Nthc5FbmJzj3uTpNV3*W1 zs28|LD?;u{;|YO#NKXwEm?FF{tv1)Fkf{}ag;g!z7}39!j0zOTM4O8rMV~9GjDA*h zGJ0rnY1Gt`dy$o;DG^!a^}=dbR@yUNBdlM&=_Zm%r)Tgp2(MHhU9b7TNa((H5ZxuS z#3muaaDnAaU|_v36+PW&tqPxAZ()&Nk8W@C+W2++{c^@!Hx~~>1yQI1LX5I_lWQHM;{*%}<&oknI z>mp@!4mW(LcwuB64%22whIyBxpM|Q}W${;Rv~+Pcu)ywp=6LTt(+>YZV|TW#p|x<0 z8Z9%#0nLsVg3)LVG!!03;NUzO(fgWgs>{+$Zeiab)(o<`x5KV*U&9ZuD3C^gY}#n0%7;)aI*iY6N1;{JxaLA>oK8Ak6aTTWea z{Ew{Tv=c_pZmfmhg4;Mo%bh2 z&h?FpUh1tG``WWCZk(rMd{@sO@hd%T;{oryxX<2TdFC4u-8T>($uQHxK5@hC`2uf_ zlzSK!sFR6eeK;~2Y69dSCS?H5@Ha^*z|sx8wCQRv2VkXRv-NywiLG_9*WR`8Ldg4k zYv|{^q|lLh*&#FY+J+$c{q6AuHrwOE4VIt9H%$}E4jV>Pbf+%5Uf?}^p=dJO9jY$Q z)4QpAm6_l(@lO=xH;~hrp+?y6v3&Bh49Rgd2(RnRi2PVl5dGY-K9+Wzin~(YHvUTa zpm>9$Fz%JZ6`NDBET+42M-<_18DaOX4;}4aZp&e6nz!(0=n;~Hw^bV=zX8($D||_D zqPTdG*ur+FyZRp(yLou?VW;2PyW*^UYPlseP?{XZl;nlYC}|Zws-$K3o08nH^Q9?a zQkgaMy5pk#MWt%3<2G0dy+y{)flaiZGm!PA`PfGFA2<)Nf;Exx+8F$?JdtW3);GTA z?wj{89_xPpOM9-jY3OWE`>;Olys*_SOE~KK9G2y*8V0)Tp$lEd>jGnumcGVV2Tu`x%r%l6=sZkK zt2{}URm?EFso)Iu%C^QAl|77E&Isc`_jyAVFKFoMPo}Ri;X#)~5m8M_$0O7zECSet z#J~U?hD`xEB2&Li57FwIij*amE%IX95GgUFLonrTxX>@`2>(9J!e@uwa^G!D`Ja~W{A$y2A)nqOYQ#mU6wQ^-L#gUueU+xjdHPwQ1vrJ>1NHM4!m~Wl z=sRa?Y*9sfe0g~aQBs;m+%K6yLM5-sC&fOJD=sC^mz*F!msTO?md_>9DmLK(=K}1h zrxE(o{}ry!4TPSFkAc~0q+SP{rZUKV`4VB1IvW-XSIj;x%a+dG4ei6Uif9)Y9W}*o zih1qp5dzsCGi5fb}vMP^KL zW!0GfDy69R&ash^?lIvPJwRxhub*vGV5IpaTiZ}g_)eUaMxjmBZ{QbwfHnilmo#KE zpN3CjipgcZB*Ra4J=32~!g8SEsMYB3*ec5c_NHYggTx~cnp%d3zAC#P^0_=Vqt8701Zu?eW$B-G`ogrI2%R(5pZa?O(YTxP(Sf9FQSQ>f`n94kB4Bx%=DAjib z9~dy8Kbii}8g7T)UHGL`lNw1@02Jm(8cGcQvzq{PHZ*$7{7$7Djgv|C`X7b`bxYX6iiM;b>ty_ z74AxnfzBCh;3v};{l4X-Hq^F3J#JsGYz;Xq$Ax~Dx`oz~4563A=^+EeiS|TMw?>L> zEG@*^ruE`CniE@+o1}SIOL+xMDsus+GF;77J4jht3qDit!~6ht_`U>t%$`FpoPWU| zDrO*c9Wf|db`eb~i^A@ej>DdoreRIW=3~+2EwG7>pJ+&BPc+`O7g_0f0N3z8gCf}r zU>jjIuwCw=OB$rjhaM`G=n}av*;?9f2oGmoR6 zF@s`?m_;$o*o2sW*g?_jxQM9v{EUe0!l1ApVy?YYu%q#_!W$QB$EjLC6z&D*!FS;& z`bv~in&abzA|jueM{V(C({tVN#$%NYO^FVh87jMF?p_jUfr?vL>J-ITJ{R6Gy9@2+ zwMBJJ>BUwfUiyf3lr^MkRjeRhIgenMJcp6b{?$+_HxT$sOweko4*4PQKEWt=8lr7lT_a9Ev%Owe0^Z$MhBiBw8yn2WzfM6jQzmHrGv zHSc;;oZDiV?i^#aSI)APA7RF$*n)!2MsYv35vz~2Lj_hq6(yj}1-&sO5T=K|^Q9HnM@$I+d9 z3_aC9-0&^1&9Iu?WthNEHY^h9AU0b^OX_#34}emqAsZP$Fro%thIJtCpbh91h{w^`KSli2UE%T-6<`-h5skOMykR7a+jtl3BZNftA zgb<5-6Rv=%Vk3Q@cvDG|T1l^^AN(45Guua*9H_1?@KM?$k6Y{R{#Q?M9R)f&CxXu^ z!=XKum!W5swcz&7?Qo3iGu*{3!B0F8vfAf@*9IQL&)7w9eIXQnCmn>=t7fP-FdvMA zUjh!)3LGN_>J8}K+Ck$F^{qKky=PsdjJD^<*F%QMS3@hLAz}Na<6+~Z^sp{cbXYH` zPw0FpHRQH*$rdRWSq{kmnHni+2B#vB57e&s32ixYKtBo|1RiN;!2KSb(Rv|iixDL;yJn2p^$?d25OCiA*qV%q^qI>SYh z1Gpg6M-NL6py5gzpqBQpY5=CmUNA}g21ERH)WojB`vw}5Uw!YXgWgt#3!ZgG(zDNW z+dap8%Wb!So+Xz3o|BeE-gL`eUsDU~KWE;;(QDr6@J!!+aE$+jzBa(ApP9N!H*U3*&wGTe;val3xf>Uw zwr1Vh4CVpwBd{7;6=;sk3S^;217mO_lR-RUbn-lFrvK$Ubi8oLa6}9-wvh)JRb`y< zgVx-57RWZNh58ysA_wRc>>>3Te@u=gPZBSvdALm1!eqlQmSxrn2x{05mp~5%#1^*E|%0JYP@Q2k${7M-XW{T5< zIlNQY$!->Z1X@Ym{ebNCevv5@ydk=MblbOUgd@dD7soB|YE zPUxL%$@*~nRV^l@v$i>;LOm05M4c8gTFtaKP(@pm`qmn%4zyHJ51V?Z=M0xiaGHJqs14|<6PP9627SVMXa_e49>ydi1N~*lM(Dec@HO78SO@<*v^nEI#&Biu1>p^3miK^b)xLnJ z>)K@KjQR@cs+e$>RF^y~rqIKL5<_)!?-TwE`9*c3tiDPsScc~SU`u$YY+8uRB<$BCSKw(-XS6f$2#ePYgeun{9byFK7j` ze~k7r@Kc%1j+dMBn3OEO7E`Txmy6}IUD0;z zHuyVp7d*s#)ps(L>LUhK!q_^}F?P1lpZmbo;`_0+1U1lE{OMmPmH2MT)qRR`+1p9` z-Me1@!+RI_;r#{9^c6v!{GZ?vfuqP3rU%-X`-nRETG(50BKBNfh<#AUVugAtCV=nI zU>+N4!X6+pZb#mdL*WJVcF1pd0k$%6Ko4^@Alx!q|I2bvE3_1;LH0%6ZaJZ-<|L(> z`LS#_Es>ua`pd29KJpfFmV5)hEI&X^$^|%G*#cHqC+m4?C-tIML*A@c6&C<)_$go- zI}Y*$hQho3-H}DUy69dnit(Nd?4V}?zQ$9GU-q;j;=D77_uhHLU0+Wk-!J2>ndSIf z_8YdEC$XVo1ln1~kZx)=G(g`64h7o-1K~og6}nWVaI12SxFXf1hKQ?an{dQX%B?p3 zWUHI}%pOxiCc|_paLd#oFx_Milo%rdRgHZEbq)6dI6Z{9PF7a6d??j~yNE&H%zwl_aO;T=Y&-?9yXgr`p+OHIrmq3kR2;Zz zuE{jDTwvB(MzcFD9k|h!zP!VnCNwtxCw4M5kt2=Qlv{KYEroibPa`^ko3RXN57GeH z1Z_eW1JAMlXO@#+qQCEGXPKQ{w0?k(VJPc-n|drph>H&qV=KFRIaG|9$y6=AV~K+9eEs_LIy7hPZ{ zfrr@D@LYB?x}05tKVZ9%HM#O&JNt0MVSbNsudv&6TO4ARrEK#^CBgDlO}32E%gi2N zmiZ6pz9}5}Xgq{oH<0*bdKeKP{~*T@e^S@6VRQgt=vwel!xV6};etNLpr}<0qm|=y zmQ+eD7CEw^@PmlpH{n&e5Nraw9Qnk&g61$9(21$3_hJUC>zF@e7xP+N&!z~Sxue`~ zd^@(TU}5@*#=t5m*t0BO@*(O#Uw5sUZ?itq_Z)cQs|dc?bf{H8fd@0$$Z7Tvn#|Y7 z-U`RDost7vtU&lI&4*0~?qk!S5!nBbY_tc~28|;&As@-d@Mt<8dSu|iaw7_6o2X<#UT|3Bot)8qs9|<>%%d z${R(+wg-8N@IC&l7lK_ zn;S`UEt}=%7GC*iS)?7X=z5Z63pmRh3a>QnMn)JR3^NSDH&R=Oa^f&q9bZEYMjO*h z;G6V5P^BN~MuSr=qH8Lv>5Wnug^1DAIX;$L%yIZ4_B3{$X@uICi}1~W0ooQA1Dp>0 zt+9cCvXtp0H)hX?NnBN-KL4DXB&=iaiwl?}c~4-!QsEB`rWbD0Tl-luHbEkVf;gC zD&K^>%BSPig$(qokPrVYy1Yx)uL2sCMrp?@QH) zgUVKHz4k9MA1H=K2U((4$R`cQZYsC%JyL6OwQ!hP!M&mPGS3X({L74OeS$IH)6{g| z-PrWq#T%QtmKzJ4uM9t&*>sfa5p}^ekKE`6iHn{&Sd{N2^43qnH<nCgvy(}IIsVWb$-&9^&`)EG1Q_nK42Y1qTIGRjH)?gm=Gh7!B0ec2( z!`9?qGDyk7ZfZUkplnP6o#zXuOFZAH-`u09+s+&0_R62cor;fm!-^9aQqdnxt*C&H zR?LAWRXTy?&PjTvt4Lk$nW7BysnW#2-{Nt0p`h{q zxO>D1b}>Gc3Bj%fb|Xy!DkS*_fQtXP-a6n??*>{b)0zEJf0hy_aJ%_qd|OTuZ0t3K~N-@E3 zP6zQ;T}PbP9r$K21)m8w#@eHaD2RLE)5IC5D%AsAK|A!5hBex5V}jbp^gf7Dw@6m= zMA2p*D||Jr=7*R*a)*oqxYGujTTIJr1eMCA6X{$IR-HGaDqj;uf=WPRsh7S>9;e#W zRq_SxrZ^aY1T(aN`v{xaEofGtDW2p1OoaP;2RWTnbX(s?Lj&JG#__(DrY}Cxw8~%C zJTZ`HUd6mO{ma%fwdMO8e+cyro21WFU!^&jq|L@feJT1590%`)Yl7WThgO0eQN|E` zr0b+n_(c`5ALt)}Erx*4YHaHrWqj+NW8CfPYCP>MF<{P~hFg^@={uFHD5G--dDDp# zS6urs-fcuTcxS_-{I9^dOf2w-TckA-e<>g3p7L5POKb;j5ddTYe+Qew4JHq;pJ|Or zHth}8>l2vhp!4L0{WPP7gtJ`eWAoOUf!&P4j!P$~%Q#lMzuNa8ct*D3AuHfOcigQp(WiK$s>DEWNwrVBrdg=vlk$ld7LHfdM z5tH~$Lb`Z~Cl!&~s?Ft$U^urNcCkNDfi)8ixoGMy&P%uCw;Ex=Ve$#O8J7ODG>`{d zS13EI+3H$rSG|_?9ydh$Q|n9?Q+c`mxo}`^-P^aHc2JjClq0VcO`2ncHd- z+d#=?Go%b|s`#0&B|xH`?PU!i1p>qxV1#r^A123ZkCYQiORbUoNzW4JfQN-}cqRV?S;LLQuCWf>$c`lUF_)+T z%n!Of^Vu+w*>AkhR57(?=bOB2n&~~)&Gd=?XbgG{jIE?N!$G;6qSR$Uz9SbWflzD{ zn2I29JTw=9fY<0x6~ZsdF~r)ScWVZpNzP&yQo91VRFN-?p5%?ClRZ8v(Y=S780>WR zIeU?Boihl(b22{B)dov;E68u2Gw@<>I|%cC13m<1=>M^Vrt(*nKGJmgnbJyXuh$aa z1YNX!kp=u~>=Rdw9M1iZHgj{00k*dp=6sfRTz}goZic-*-#P>ko`n<$Tu6bK8=^`J zLh2|F>~qvRwg=jbV5W1Hxi4ri?SM$b3-}jVifq6=XcU?qya(s;SfC$qRQ*EK4C2^# z!VvOLZV)+>sY<5#-w|)U-H5)Pqj-e-Kdh!J4^4M|M_N1Yz^$Ddq0P=7V5*A-4DJtF z{b0KB0q;1aslTlZGmRyI?IN0mMM5j-Ex%Oh!avqLoC5sA)rMbkJ<$Ny8}G?iC4*~C zEfYE!dWx%zZKdU=K5`@TLgk|QidtZ1wD0CNz!q~lh?;*w9ZX?JFJpVOnqdg`o$8H` zCXJM35V^#yKWsWgjlEd!V&N$ng)rm2d)D3M%x0rvA)^^e6aGA7%v?pmkT|pGu#Kt%Ouic z1D$Eb*PMRu)u>;d-BeYNO5Sw0A~(1P5hvWeaLAL2o%WO?o4tGBTfT-+MBp88lbNKi z;}C6?a8WrSO_cMLhEfeZUQ7d1h0pK+J_0+%}8n?1b%=g#~i-r4O z-NWs%wdX_ap+ZkPEjG2sN?Eopay{ERrKRp!%q z>lxD3bqqe~ngw-pHvk)ZIDLZmj`rTSQk@p)r!-<4$W{1SQhl+5I6z)1q^V!|i~11$ z3yAYhxQKJ1mE6C0BEN=Q#ZxpPj5OR1dW_bKeM}3aGSf=Ao%ygb)cj7ZX~y-Jrj9_0 zXOdp*zP^>6r-gB~)ejseU*SJWcZ4Tmj`&81 zlYRU=r4|1{z06hDJ98@lf_n+_tPWYZSY#*{hrZ)fbUJ?L6DJ zF{+OmDZZxm3bQGOFA1(rU9uV9kBH}c;*I!JY&lH4ggS zKEMHbJ9vP674$B<;f5%P=0h^N4)}>x*Y@B)6(@fb0euOQ~J6nQiNkx~!=?es1p zCI#L2%iRO;ELRZOxUQm$T@R2Ot{ZR@_fZJ&tO67Z)ZP3+ z-fq6B>@@$a4mMxVvQ1a?RMQQhmGKssV7LN(qYlFp$wkOFycJp#bD(pO#n?H>ffWKx z@nn4hK3|=Mf0qa1gQbX|?(qP7&bP+ya3|4B)`c`+V~`A{5xkLU39V z#V-L*@hSQUqN?_Za4SjVYq>jlN9svF7n4b+@Qr98j3ut~{{){|3{T~&2dk*s!P+JU zdCK$9AmJY{Oxy(MVlSPROZQmH-YLWp?-`u+zQi{B{zXUo?;+Cyd*RE>#Gv9^2Yk&fLL;6_x z1~^fA4X+VDq7Q@&JVZD^ZsmK@HTf?F7gyc%mFsRU;ObaH_%D{}d?RZyKhU~DsAX*+ zKD9uS#ZoRMnhRy0u}t~Xz^gur)@zWlKwG>f*c`17#lbaT2?#;HXl2NCnIqs+ENF#y0S&7qm|2zf#Gsfs936lY?e$|Z|NOgOPWenlYRzI zxDdm9Dcbl%DlsO@i%o~+x29Aj+w@YoW?GDQJq_4SrGO2|@8C^* zITVXo;YG+EI0M2E6F4@gWuHX;QQspCgDFu@rC-Q2@d46YScf#=8zV!w&+tWd6kLb> z3Y7)-{3qrh=wh5ebG9XLhfUYVaoJiUzMfV?*sit{MP;ruOSvhtGNx{o$7n6(JGv$j z;18)6^hR0@f0d3RqI3*xA}`0%<;J)ozrj~4wTTFI8j+zc3o3mhiPpNEK!Kz9M*zZ) zf*r9b&;+ywJRK>5N5NZ=woujJWQdEXPmjdjX*014>KW{y@*F!XKf`WG$1#^U9_u9H z*fU`(Izdp8dcr^?RoDx66<$Dlg))#7HQ=;p3ZD1TdPljs)>>(<_E!fei?t>4S^cV% z1IS_oG)n9T{}NUr^M$|A8p1^k77pPGKZ^(xqR8ID5%P=>AY;Wy>Y8Yw#!6qvRCy8! zD{l#(0uWBsfcvxnD(QC-82lehKnw`OivS<&(cUBD)V=68xeGQx%EbzVq4-Ar7T$~V z<4uETtq)@)_5^}xB5($O= z;DVrP7?1Q-Zz6N$`sgWfKkDU+(Ggr2=47g4e+QDV1AYj5?E43e@y$hVdr36in~t3H z0toM&0B`U;g8KVus83)3xSTl%{A3IDVSF835Y}opr2=)e(nlSty;JG~BNP(S$gR^HQO8?{nyN&hW3F*s$}&_Vgbcv<;jtf6|0chnEYzS?|aKr1#J(5o2Q z0FCHUAd=b$W)exz3j8XBVs+q^$T7GQlHoyMC**~`5NWNYBQKP#$OL&Y5+`**WI==F zVDd={Umae`9fu^=09|0GgPYh#z#i5Bd|-#^^|{m96OK{m^S#tg!ZoG77_T&!j>!Y% zdh!b8hjdxpD-~!nBr7mdY64D@`a_$gA@ILaC!~rTiSCo%qjAaz?7s2}o2t@yRjnHC z)nf6ddO5Zm*n!Oe!?E_zvY5cCbdYkv?P3wc3fb@?;Vlv-oI$_wld+q;0l&@f#DDTE9xXH=(uA%A zB-STRhzveb+Je`SB`jR&h?&)?s7;%NBqZ-@&ZJGnfEYmFre>80v_+C2TUih+g7q2NBLhSZQRqI0Dv{6BFP(OEo0<_Hg{ zUBY>KiZIku$u7yRGQ zpr-U6G2^wn_svPu-=Y z>9`UL?vQUm4dhmcN4kc-kSP4N)RuTI^(CEBGpe@CP@CnIG^qTdHzbW@B)4k)Qdk4_T}?|rMwk*!?)F&3p2D2!cldF_(SO^ zMJuuLEEx}Wpesr*DWK+wPAy%`(+7($ffnLvu)R1BnkZI-&x&tgLh6mIm2M*uvW~oz ztDzf}dgv%M3T>kmBQ^D1NIXy#v4bar=VXwgf+j&Z@GbBLA_9xh7C;J?ra#191owJ~ zwiBPNe!zbz75Gr41h14I;Rodf_yn24yUA;?zH%@TR%} zTBa<8d&*;w-=sQdv{;TN1(WDH1fQfoxOupny^F74bMYo@5gx_9z^k(x@F{E!{0n;x zo5V$9N&GAn6D}hrF$-=WiO>Ss2)$Qgz{XlCa6xaPr-Hq-Q_xH`5;>@>Lx0IRSS>k@ zI3RT-W2LUtLot>9UCgHYixUjp#V3Z*V!2_Pm}kfmPa4`u4Gd4D-E=?sCB@2b$xF&< zVvafrZ=nV4ar$B;OD~1a0^Pvb;03)dL~8}mTxBg>CfSiW;?^J^7C?S*ZO}*TT=YG& z88t8)(BA{o(1<`I)afrl82>7yUI0h_3M_})F@=zkZ4N=)CNP%&3JeuufXm_(Jxac# z?NJO`j5b|8t^ZVNf&-L`P_Z0~Y?jl|E^-DIEtlg|kju8o|Bwyjh16`Br=H0@=~QJd zeNvf1*HatN@6}J#0<8m8P2Wc5>$ix5z(afpcpfuBE73<#M`SFlLo9q7{5`0ilp#&@ zwkV>lK?{|?(Vy~dv`jjOTBS5}wAcduAmkzAh3QC~PynlZCm0d-L3M>paFt*UI#oIV ztHk+wP3bSqEqzv>%anRn>7(pcPstlJLSC+~4o-rwN)>iV zLC%QDs3cAaW`%A+z0wYJySxDHq%=Z}>QAId9fiEmUc*=PSoi=i8d?W#2WLR{f$ngj z9*balE>c@d4|WSx!TwTCV7}nlK2+|3|B&Y63xhqt^`vpQS*n3srSDh+X#)1U^c^jb z>Y`KRg@{2p3%^y~K*!VqaJ}XQmg=g$2ngO=Fj`vzHBuMB!@}pWR|P1-TWB^x2{Q z1Q%xjSf8t{(O~yB+f|U$LExh>d3e zd~8s;+r|XDhMCFO0#-(=alZ$x5c!BvXn-^oe}~sf*PseH7o4o(pkJ#8tOrKuG0+C> z3j9QEhQjI;9k?#X?Edt?svk2Ia0AvHJDl`;*c|2Ov?{#6uR|7T`)ZxV_~?+~hV zDFP2gihzLB(3CD6M0)SNh7Qt#QU#GBML_9-f&vOsr1vgGT9SKr%K3fc?|DD(zwjoX zlifQzvpeUU?l7UIPDO@#pF}cyp~y;g9<$iT!sF!C@KupMQcCoU zjH2t2U%5|^fivk2?zG-&mz!wY&-OJRxtqEOch=0|;54lcmWZxF6Zw9SD9Z%XRgHkW z?m-7{eX!CatiJ54Pk68N4sW^{<(0BUf%*Mvm8+z>@oHIul0_1IAdZO1G*$k>)s@Fj zRb4mJTWB-+Pt0^b&OGo>>SCd`Ixght4x!^glhDSXAn3aPYcSsTbQ-^%p5UF;_f%(7 zQAOF2@}S)*rn$S+kuy*gs?K@D=gyOB>;rk*98#r_;my^Jd=A3?I8p;z6+{{-qrK`qxzWF!`xQc?PGb#UKd}vpQs0a z#ieMldqef`%>1UOlsdh775P>r0lyi-8@&d}sr;3q|4gT1~x&HFR zj{c3rEPmspAG|wBwY?R|2i1shF*P(YUCs+`i6gqSh_d6Tojc8YIF>Vsp{}1iXMa*v zY_z}4R0)+cA4eV6t)u(v_ha7GF2>Udsa^%?Q-_0gsWa*^scY+jsb?WSeyFdeiZe}8 zoiNK{;_Tt*yY_h07`HW)i%0qUxFXh;-Io!XD(2(=_r=PSZmsNRv#GphjJgs0p>{-4 zd#l6md7F~!d6$#wdL@&}c;6&Oc})^esMy3&DtBToRV#6uoS#@xMkReORwoq|?UI*L z#c(v0h>YY4!86xPcXy-AW4p}`wU1o}i??p3kr-|U%i3m^Dqv=NS&Xr}LC)9Lfbbuvyh=`%=E=evqeKFWH|{$t?7x*iVH;XR(e# zGB>T3%ekz|$lt5k?j0|^o8f(BFL)JfTK}3UG?VR$hD~_E$7_gg*zu2xEXS*t)z0<+iHm!>lHAm`~!Ll zBE)0As4gF}L66Y=V07qiFa#_4n}%X_+E9DF&EKvo`dQ6dZ;pwmjJAqei~WA9yLfTS zeMOUa6Bnc%?g;&0KNUwzk~pWw%NGHuJi#E<5<F4Hv;!yQg<7d673Nd6O5Hyw$6p zoZxjz9^@q?SN6imFVx`h0`+#JsQNXsOC|&r_3XfBBlN+e_lS3+P@^&eb<75u(nbSPEAI9DLqj&{G9)%GV_&mMxW-^T~d4w`4a7X3}U>|#2p9;T2t%AE67n_m7Uc)2|G z!_Z(GAG&CFhdy*aW8d;Up&Gm(^fR{%eMIb^p)dSaBAb6f#Cr|pKWeZ1P~}#OvHR*h zv0s%Iuhdw|?wteX%Yc@-TwXettQOgWs)!w=emB|GWV2N^F%@KS^S#Jvii+V(21y{J~1T3$J`#yhXycvEya|0CVj&#(LV z>2xpuZNz}W7=t&{r@RHam-j%wR1HlJ^^-X%Yui|P*7g=X-6rz*0k7d)T#XvJOEezi zh#yP@JG_jN)%6RxG-#tdU}b7VtGtoY-q~;yZ&kRR7awlv%@0@hc7*XY^zaE)KQcn? zkK|Av1>5BFpo;uj9|97pi3WBrm39><7w_cMRGJO#bWg+))HP!aK~m>L#Ir?N-x z$aCQha&x$&TosOyTf-a0<#093HT_0IBXRUNa*_K6ZQ0Ye+_$mnl0XY_HS>g&EUtlg8pO|>qm1c ze*xdbSa7xXEj9Dr6K~XBFiC_O57dTZ<0%HyUOu&{uX1pRsRoDmT(Kbx-Va*VW!f zpUd-bGnq4)-}#8nKofN{YN_W?HT@G+(SK7z9U}(mJYtJ3CL+41Xo1n#VdIM`_6{Af zyQ!I*NKf2{G=qIAMnCaM8pWT93hc|5Zi)QP^|=As&AGI}{oZSN1=4cH#w_0oN?TK8iwPGiNWexYVy2gakiwn}F%%Fj(( zdC^=DjqQixwB1Z?+*|OweRvojcRuBJ^MLv6;=WlSnwiY_yRlplnZ3L+|V@IX}$j;gW2T=i$rP*u`S?$qmKHB(bwG8e@-+e4H_zVx>nL+c@> zF0_F2i9CEwY;|*GJy%&hu~*bm+uLhypL@A%2S3T|_ph5!=$xq{zd-fmaO%f{2ySiT`2a0%IvhKOzSBc&6Xdx%=RN6d0YT(#vf z0_rLg%v6~UGe(Q_T3J-DlIMfDa&a(F_6{1zRzX(TI=Czb1PjE9-~(|bcuGZpgekfd zy~H;^dYD0c-(=%H_K4GVkels_xqST8?&jULHqEf7si$orn%O@@eOpsDwi{$8Yvcr5 zS8cIV)FZn?m4Npf?QW>^?v5(U7u8}us0=Srov6DyPQ{SD-;?oTv3w|M$|~}Sm?{^D zUu6YB>ISY(r@E>lwN%fzh1$TifRFsDG{2U_yX7UUz}(}q$(3%enB!U^7k*6B+z6WG zqG_31#9Lh+{>5!}x7_>AxeGQo54P`fF58y>#G3JiW+AxS#2=YMTotoxHOvieX&&+j zj8`^;p5VNSy}@7DvmCaExTo8|x7=KA55(NW-_BHv?@@8cJ1gH6(cDsMcSyc=xztP7 zS0%aaiuj&-o1?wLoXe}j`MqA8)my|`9p^v)l|Th*qJ~pg?xTfLih{Df*o;_RQk)gv zQbt*rn#wgiRmSojxyId+B^=BB$g^76f+}K)sEsBT{w0+v3tyAg9FP$p_KmJ7rFkLp znx&$VDKBQ4U+KJQO(pC@o`>(Xhi#JU<;J)hF63JBLi;-xffkRNz0}K;Laa;>mo>?C zy1g8)x5?fbb5pvE8lc;&cs)|>*3;ArJw;VEgRx6?D-|}yRWF+;@7tZS7uKRAxlD2j zu$P5eh>i4&s)~tp0-u`8EqnplM-z3^9aNKCKJQ&O1mmM0y|uvpK={N4wvb;I(Xg=1 z;=hB{$K~x|uZbP!4Y4J>4fdqEk2qJ--I3#5M|sg*5M{ZJSisxq1?Hd{(M(=X5f@Nz z%u3z2@fbt@B3>e2n_+UvQszJM7P8jWx)H|ebz##LWKEr2*3vIU3&f@&da78fYl~Yt zpb};aO*9?owt0&h*u%Wv4(2khC~tQ6@b??Hp8L93s_K?d2A5X6vZKW{dtaQfwdEPR zOkT5hYV|QMR-1T?Vs5Qk0@YjSl~iJ8Qrbt1QX zD*g~9`V77+{OdD&Yq zN)6p~`oI;WYVH8naB=*hd+3_EajuKY?uNSkHr{o!>s&T_&|NT>-AePu4L5IbM^l7b zm}=a{#Bm?fndh1Qe8h}qVW)CKJB!!bxriF`co;DM)Xm}^Je}|HB;bB5-=^W*UJT-M zqCeM0w!c{p;*c7~t<(fws^;+TY7M_uKXQzBf#33y+4r*36IFu_tKKwSEvFjlB;kz& z&6FiYUfB`2pC`(SL*jdSD#`)-JGr7P&8_4P*GE=zqvbI>Nw%{Sq&7q4decdEfR`<3 zvH|mt#7(_P{H42N^+rx)E5G5t)C`~&CKD|)-}6(`6nh{%a@*}Bm)GTSi`)U5j=R{I zoW^=|(2Svx<~7wYT|@?RQv9Qf%PYw7&+1?0C9TwR{jSPj8ml^{y_yQTVB%C+TR|C$1?Xr)(O^A+L?J94t?SfHUR`0bvpmMp7Ra5ss&U8KH33pGt&8@{J ze2ms|IeN~k`8`U*!)c8BfnL}*)Y}#jZ%i{W*$ff+%sg>QuNKqvMiHmii(-0($f~D_ zOuC22t7~EumqGN^SLs{*6(#BR)WqbXo#rycLh&*+x9-FCn0V(+=EHZ@-` z<#@Ge!z1y&p_5q+AAf*9F&DYFdBX7~;2({oHzq_?Z4}J|DxO=SRxZr=7A3#W*Z4<1 z#pP))yv;@~E*A4zF@>|p;XF?E;p?(H#uz^OOUPHHu=IH zk_+uoj5YSjWb-XnsLzw}rnmgeRFSQXkS)zY(b)_TV@*!6-t4CX!C|Y8=QGIiql*unn=;30eJ|-sWRC0)}C5P+&a;9D=x9Uxp zrQRcpm_2d~##1S8oSI{Qo71+nYyo}TcFAHG9}uaLr(s2gs4QO58F>9pvLh@zJM~r< z_^w*OO}&=9*~`m;_uN(VkGZb?dN1Ta|dgyzU zP2Z&}!429PoTDYdPqZM|NM8kW=y1@V-UN-PqApBxw4m4eDt9+K`JS20y=^ZxwjR%M zCAbi$=lyJ4V|wOp(;e4O+{8}XciaH^*xi$1hwmQp*Qz+bP))d`H-bO$zTpAhWghLN zq2XR_>gfSEQ%sizts(_fLJ{INGRB=ge7lY(qA~oKQuMlbQUO5Nmz++`y$_-DE z4n8z2((+}o!|f0qFsjV#8i>pGE%CKIL1XMh>V$m0vHcq!ErA=^2HehSH^gprOKf-d zlZ|z6>@8c;ePesM;dX;-hB>J6wgeZjpCRYj$g%bgm$n)4KByKAvY*q}b`IULo2U?G zIR58{S>P1ISsef8SK-V9g+S4`nhKN#HQoZfO%8L9mNS7egR+p}te|ZFJ!bv4jB%YP z1KPh$iqeu#F%*USr6P$>4tI%gMtXxgyg6F1o{c=qBf-tDKK6aV%W`ox|rp zQGSMVg0kT}6P-o-3m8*gWDj-WKR6k2>IFaMNBo>`^Bca*0sqNFCpbh$IW6tS({`iv zHr#0w7oczW9r~J!(>ly?uH(`;FN?Brv<1hVpuJoM?Ml(_sB@W%&;zu2jh+a~LFp(n z<;CBU;HfIOYY2W?Q1Z*J?(!GlXBl1R1iA*g%1c3ua6TJllW}bX zc>bL3b9>;tAwA{FkVj!kgoGn_t6}&dcsPr_{`P~94IE7iITcOdG}I3~b%H*cgX-bD zI?5_@3{~VP!kCOIp-nYr#y%Gu2kCU=*W3>hn!wNa3;vroLQ;qLKL5pcQE~@zyaOHF z1?P9U-oO2M$OE94N%Rjdgr3%*KU<*v-O%KIVBs)y`x9hwh+=6Uy+hwa8k?vrt)&0Z z0!U>N!TZq%)RAgY1FB6Gam+_G(XtvPb0s|OJ^BOk-3L8<3%Mo$N3+4h1oV3thq*uW z*c*N8$(Oi0|BmBP{+##nK>m(L@CM{0t9TAC=LB%`4bSJ@JePk#$$1>_@B(nU7`RA) zwASLzn}Mf2(Bx4(^$b^`8(fo~@rOWcJ@lwP<)V62oa#_z^te8H|1nj-=&dyMr6M#O z{T@%*@pdKy%>;gDLF2Q4@tM&0RA_uWBs2n=>j$lO1$_*ueT2JLrI%cil7MOpz7(F7 z8nrS)_ql+of^?8e0FCbfeU)h$`ZJg7(sXVB2{fkB+!SxMn$if+D7<+Zi+)Z-of(ka ze0~>mpap=~%xE7CWJLHkApasHb)SEQp7%iS>w$^IoSmj|A>?gk=yP!WDdtZ<0m|aI zIW^)>s3Et-u>(GLq}Kc?-g0%M{@jkn1I-J#1)k6Z`uPa>`vB;y0?RE2Nfn1K3s6(a zNxdME36RJVaJLy;9t5|4KpIydh5Nw&6S~bWfb*Ah1+%x8`7vzz7U(?e_85-4P_`QO z5D%FQgiby|{r7>te88UvfAA1oo#ZFb_%mL_|L`biwF|%G#{7yagU_O%oS?VyIU3~Q zS_*|gX+c>~KR=FTL3Kc_QKvuZPv=C;dL{7z;OsJMc#9N&B&Y=ZQ(a0;pTcL2fQ`=s zkL#fQ-9W)FSlxe?-lMC)$Ze`Y_krpAz{(w1|8;6Y=P8a(P&3#@GsvPTEvLpb75_i6 zKkBsx=0AYciqpH4kqQF|Il*0e$TdWV@cb?4=axss(96c)q8+FQY;_Q9VGMdb1y|x>3-e$Li(m_1P*EHU!n$+Q z9Lh%1ahGxQ77c+H>;=iSL&Ru|yH^KJ-o-I5D8=tvc%)~r!)rj~NyvFW{P$KwjMb3B zVtC_t^lK9EJQ{v)7(DG@(4c>h?*O?4QJ!)=7e;(pX%X6g1#kW_YFS!;ifn_ZO?&onESXxIMy8`1qP~MYPfYyOFb9cmu z&U6Ic_%zUXjpJa;^(g@UW8l}agRi2{UnNMOE@h%tz)BZz+aEPX!V^pa?&E>q`DnQq zGGB^VwG6ht1W{-q{mOIb7(B)?9t|2m$MK|JVPz*^m8al$PlM01oDOl#0F{ry(M4$S z7sR!l@YQSiDQw^cPX&HQ!k_mCuRRbUIwL-`htF&Wi)jx@e+vG)LE3%bZH7YP6A&L} zL3=gZ=>#u$~^2A5<1p6VwzX?V;VCpaDSa2=F=%G#NA%c9B9;C<{#l zjRg&(tke(3?x41~))e(>pRl^1R|e0uqL5M%a8(EhD1bY~B1_7RyQbVZ3+x~Ru>Tg2k&^ACIFc11n3B(Z8GkW47nu%6G`AW z5v56}nTXbjxN9QhoFeZe7}y8{8(6GD`oCllpDfNDh;f~O_LRIYg;M%2 zVZ{nuVRJkD%6}<^qZCTX9f|7KE*G0}ila>VEQYpdT81E;X0@8ew&>Tl+aPLDvtdd> z*KR{Q4*vfI&6^X1)V$x2zFlLR4<6FBS3j!Nq!A&+bnDxL26pNHZ@p4o`t^DDe_N&8 J{r~RI{{sM2*{}cr literal 0 HcmV?d00001 diff --git a/examples/capture_activations.py b/examples/capture_activations.py index 59f0339..9ae4fb6 100644 --- a/examples/capture_activations.py +++ b/examples/capture_activations.py @@ -34,6 +34,7 @@ from openwakeword.model import Model import scipy.io.wavfile import datetime import argparse +from utils.beep import playBeep # Parse input arguments parser=argparse.ArgumentParser() @@ -116,10 +117,13 @@ if __name__ == "__main__": last_save = time.time() activation_times[mdl] = [] detect_time = datetime.datetime.now().strftime("%Y_%m_%d_%H_%M_%S") + print(f'Detected activation from \"{mdl}\" model at time {detect_time}!') # Capture total of 5 seconds, with the audio associated with the # activation around the ~4 second point audio_context = np.array(list(owwModel.preprocessor.raw_data_buffer)[-16000*5:]).astype(np.int16) fname = detect_time + f"_{mdl}.wav" - scipy.io.wavfile.write(os.path.join(os.path.abspath(args.output_dir), fname), 16000, audio_context) \ No newline at end of file + scipy.io.wavfile.write(os.path.join(os.path.abspath(args.output_dir), fname), 16000, audio_context) + + playBeep('audio/activation.wav') diff --git a/examples/utils/beep.py b/examples/utils/beep.py new file mode 100644 index 0000000..a30bdde --- /dev/null +++ b/examples/utils/beep.py @@ -0,0 +1,25 @@ +import pyaudio +import wave + +def playBeep(file_path): + CHUNK = 1024 + + wf = wave.open(file_path, 'rb') + + p = pyaudio.PyAudio() + + stream = p.open(format=p.get_format_from_width(wf.getsampwidth()), + channels=wf.getnchannels(), + rate=wf.getframerate(), + output=True) + + data = wf.readframes(CHUNK) + + while data != '': + stream.write(data) + data = wf.readframes(CHUNK) + + #stream.stop_stream() + #stream.close() + + #p.terminate() \ No newline at end of file