From 89f51dab28b67b0e4ef8499869c3ac7c50a203dc Mon Sep 17 00:00:00 2001 From: Jens Date: Sun, 2 May 2021 21:45:32 +0200 Subject: [PATCH] Updates --- .../ShoppingList-settings.ini.example | 0 {ShoppingList => Compiled}/ShoppingList.jar | Bin 1437272 -> 1443366 bytes Database schema/shoppingList.sql | 196 ++++++++++++++++++ 3 files changed, 196 insertions(+) rename {ShoppingList => Compiled}/ShoppingList-settings.ini.example (100%) rename {ShoppingList => Compiled}/ShoppingList.jar (98%) create mode 100644 Database schema/shoppingList.sql diff --git a/ShoppingList/ShoppingList-settings.ini.example b/Compiled/ShoppingList-settings.ini.example similarity index 100% rename from ShoppingList/ShoppingList-settings.ini.example rename to Compiled/ShoppingList-settings.ini.example diff --git a/ShoppingList/ShoppingList.jar b/Compiled/ShoppingList.jar similarity index 98% rename from ShoppingList/ShoppingList.jar rename to Compiled/ShoppingList.jar index 8467e2e1ef8136f22b6b6560732bcf56152d1cba..dc28b0f196af8aa7492a8fc37ad13fbf0af6e20b 100644 GIT binary patch delta 19538 zcmZ6yRZv~e+l7g{1a}DT5Zv8e4({&m1UW$tc5rtH?(XjH?(Pl=4$1ufnTz>q`eHw; zdUsb>?b;W;-qpRfrCk!OgQ}_k4TBAVfPet8TvZL9j_JEC3ZQ@uxZ3+HmY>}tj3+t!M3Q_I;#hu!A(jZ>$6 z-bLb{*=~-c)zI+X-QbxipGk-0!*oLR(hV;7p2dTK9>$>cDz3%52i8JFxmmLW(d(#+6jf1^9&>k072C{3A(o&d z)y7H(2-(5#J?I7Jm>LUW90N%!IqsRNMZTAIZB>`r@hzXQpoWFq9|vD0E_emmYf_mU zQxbt_X!d=e0Wcr}?nxO8q+egtoy?#V`-|R8*6b8L9P10Jdzi@;KBHd(etH>mmd(l) zF!pfC(w>rpRCBVIE=H}wIuNa%m5^fbjZq7o%o$SKFTKcF=yM%>D*>h^Tk)eUv#o|g z@_@_=K_w{`iSwuro*_$oxWyjmB67=uvy!9_<0M2QLd6zLjTKYPjiU_#o5^ufyo-GV z!LQ+QDlx1#n+IUs%7A^*v8YU5WH2lir{ccO7TyzJUwp$`QLn<|otj2CT)yA6rE>q9 zdrr`NK2>*&qqXV+GEmcr35TiH-r=6R_4@^(ewJVb{|P-J+=*`(Wr&J0lf2ON@}uJp zuF5#yFTpqCa~P&kBYTT)yY%#vm zm9e=}C};lAtKxR4F&TOJpt%qYB@!HalWj{v)K(u=1Ta6+C zNtN9i)S*@JoDjnBiBp`|)S}p%e@;sZtYGbI4Z4aowy*#i=-#EVvRr!1)y*le81RV)C1B6;W1z}Vb<2$?L)ImVgZWN$szC-q7?jo$>V|N4$ItTW`sGE9OIv+y!1hJ; zJtt4KbNTNh%7{9xeAu_j%^@$zNE~Bt9!kb^xvn@i`tmk;YVJx$L@a^2q>Mpm-c=-h zH9cG%`^TZMWmusnE5=lWVf`wfWtiW4ZqRAPvF<|^kw8WletV_04$hir?Tj|U)j0+t zPuFU3&tlK-9jh6<1f_Jds5DMP_kvVFI?Tqcwv4Zyb?m)0(%V}geN_KI$q?5rwtLvE z5%-;aWa_FCH0G}a{w+D(5`*rv_R=Mo98T$+;yh=gLNqs;qg(xJ49)EEaqsu}LGUo{ zv8p1$0>CPpDfW6IKO2)$tGZdBoc+>iYlV5a0}F|h*5!(gMQKYgN~$J-PrBVgf-_(3 zj$iri#R`SV9=QC%M4~e%-=%nT@gLL*UgI=S#=6u+1J3WtW_c)VB;Zhlrtr z>C`+go4;60yk^v7^Q_x1sU~vZ)}79ZWxz?fqm!L1?s3Tpp>w14@dyTJ9dPKVdt6>? zUuOT9E$sXg_t4pX`Wh!&I8fR$w)SK(i6&QlEn_^Jxl=-gGT(U&?`s7-(|f`7xJ)(N%8hv=Q-YZj%iNBFlO~ z+;JHRZR-1-82zEQ2fhPfIa60g9-G5{0^9Q~uGnZjeOGFqxcwaE4Ncbh;C65|hz~>4 z<3i|`;=GkUpn8ion>=%3zR+?o%EwZ(DQs@P@Q{job7IQA*lGz2_tm2K`wYo9&Ln)h zxBnQC%T5vEe@U^0B2KYM>9{AO2?YQ35YH{Dj4fQsKl$70^|MBn!lCuYZq^Ig2ar{P z7PSIZ%KvcMx4Gk$Oz{H)=*Az=TrI9IU2XS?45a1_J3Tb_x7)+&rw`{TkC`Hj{)?6E zb@YX<_4@Bucux%L@2UmzWHD7afr*Y$3T|tg0YQCqGC2xrn&&hl+;(Y_v?6XT0w7L- zit(JnG-6?9!ILbcO1bDcC-k>2Ltu}IY^TvreVTY3s1#eK=*BwcaH_bdwq z&Et4+lFPs8OB7RVHx3U{m52kl$`lqVX=LlOO~#@zung@|D1S^53%$|?So^<#(2qU$Znu)L4T%6MO~IIJ^X$hrGiTE zIc*l_9J0nQd4QH&%p#t8I`HUBuQGPI!u-^(VAbk(VQeOEe*lxcQu%7xS-x?%rNYt% zMpITLc}(!|=r`Y4r}HT9R+!EXiD)nA+f}#RCj13OV4RDrmf*}T8$ho(W*=4Npg%T$ z*Y-Z)LiEQSm>vpwcGku6nB`JwJ%22N-=HB#*1o_CX2b|h4I1O6>cc5*{j@zPZoxGm)&>B4^Uv2ou@lE?6ayBne;HKsd?)ca%N z9Y4v2zL*^S-G{W5ikHu?a9&o!5}JWa+&@U4cOl0IKURLFJ9w>bA}6ykYP37}Y%)#5 zH*)#B+^uh=#r1b{Yz&9=oXd_-@R*P2qPB_hs9EG4AAuNgG|=CBI4AM8R?EMH$Jy3B zO`8B|jw@qyVD<^l*>NP{zVU2qii=N3i8C1s^*BZW8>;TPZQGABOF(c;Ffpq#Lcu zI+AT8sR{xsf!sF6sbPNgqV4Ovmp(b*8l>0ks5B9erLN@04rrJAzr;u4fAL*5cYViN zdujWqR$V_*K#?DeZ-mKtNpiY!w)@ZbmhWn+UJz15&*m3^^e4xx&h$Ji$IsU-Q_R07 z=5Tq6GH|peG`&*B!qktNs`9ID6S+fGvXyDcx5$!5 zZt{J!dBlhj4~vv8oWz6-k(-^ggb&-Kh3u=1gmR(cIB(e5{^iJ&myGs`jNpJ^g)!6P z!dx5(7{J^4Grz)h$A1+f)v~Z>OLHY$6Z)=0HFq%2{(a6wqo4J+T?A=r{xkNm+?ASHYyg2gMajElLuXgAJ4_IpgwC>#Ov^IW3g6{&)pC2E>@ z7G}m>+#w=7#CoMIDPy4lvwg8J>;rO#h~|fc;JUQS?=N~kgyNA^c;m;q1^z@2`fR_aI zw>zu;*|2DQxB<1NE2&RN;-Vvg6ux1kIUw`Qe(o)`qfamTUni_T_7J@QO5ujQKiLL< z?8(s1y@vS$5}Sq3H*@;~D4Djwz|1h;aGCg@2oogmG}5j&J_zg!YHOnv#|O)fG^7c9 z4U!euVjs=HGL4CaLvXp9R%jLVoNj2CBz?G~Ekgr-AbO$qPo6*+vYqsHbx{%xqp|-*EsQsOuS~7g0akA`k0uDml^!+jj zAn?YJ^FCZXdPBZRVcMdhA>C8@5Tmf-Vcw;rJuuA(VZ}l=PN05a=zbv-dP%IJs*Y^p zUf_;zK{QUAE^?%-&T7K9MHHkFdI>WaUs5DzR;WofAhKm?7mRE|9J0f-WeU9z#&acKq6aVMdG4&zQO+DHSzhQD3!YJ@#NEPDE$?!ZEgL zl_<_}h4ch=!#gH4Oq>8Wv%KsrTK6ZDg}J1hKJ@~`kCCpTEmn0mp!$x@tll85fQ{|nTS3y*x7iCGDLT++#C)?^uwt*3wfuH)JkLSIHh;e(CiMs)BF{m+W z8{megc`|jI@?^9QTw~1gJ3cVFf0mc2g#o)GQESw^QFp<&uY(PFjwX_~=tl}eYL#8D zM-)$+3R*<2W9j*-plU{uscS@@4vOT{2Ae_@hnX;*QS0l4tmJfdlAjSST8|7rt)duw zY7eVmezQyE9euoD&kO}}w+1%t*_K>*Bkl(V|I!t|^Yw=ZvhHzp$@cX|qu(Q8eRAoB z;1%K2PQnVVqkZTM_yAfCOWimEY2ps^{lUHPcQt|`#uHgSDmw%44=ln(u)T@T_e8JQ zz0G1PKNstWL0h$OMM;k|?)|V-liTVDpSR%_ncyu&3B(Hn|PF0u?SlC8n zxb^zz|4hGI@uq!<9*J}{K5x1~C8@UEL%JaxpW_MYq0<~*X_x^z(-`5=RyK!Q%!jWF zYU%p18JwXXiAa(D6G+?%pW{fGNa*N~@L~Kr78)~zYXRsm}BnJ^AyH zcd#a4P)=s&=a~?#%3n)LK6z)k9Yw36PT$_GqJT~nr*);l=kcE3v4D2GJMELJ(W!Nn zmk;_{((r}AHnp#Lt=_AR$3wH0gJ}Jr^Y-1WF5R5HA17MY*@m06t&fw2Xl~N5@(tmz z7oopdw>!o_{i@FqjX-icHd;1O041p)V8ARzuyLO}d~m7D+7R8*{4lkAzk z0DUx;asJ#g`6eBKLcjFsAcy4ZhTCjoNq$A-HN{K~-CJ2n%aCFJmO-$SC1%##>{+W{ z?KRJ`rlo|ZDv8hjRbD@(qIzSv#cQ`IYlUTnMQ`D64^NU}7^0kTVus%>-)XM<4e*aU z>ny3z9q$hgsbZ+`KKlMOlSL~bJ8lB#OrY&Zc;-})jv#65lgxlsfo(MgGIa@pIFky05%Moh?84ArB|^6q*YPY2 z*q03r>YDoA4n{>M^bGPp)t9ECW@>;!TIz(1#q~FegvD0fQS9ZqcCoV@h+#FLR2d2a zV?GX^&PO(09W5Wrw^HNa#XC~iQskG|+JzG8CgJHN)}?}<5l&^iArY+<4>HrCxTx$m zi}t0#61h0`?~R(-A?~mfHkDksF%4(~^)|{&Co8gxFHr6~(bP!zpXC4(6%`=W%eIEA za6~)1FR@&;u`xy@Y^!WtjCBnF-0D-OXkt}X%as}(+F_<^EME`hh@@w065JK#RYete z#w9c^$!04pE=6m17TqJ1y@s!h(nKUZb!QUO zmwodj>SrJKp9OaN%v5#`lLJnvS4p%6KSDJk6#=Bsx#!B;evWcUoZ=z|sK&9EEF%5% z`H)=MK>EoRgR2`yq-hWes(O@UBHE&EQ|vE>LLEh~;c$R^MBrI8mm^*GyBF4r9D3Vq z)!mt*-;3$3X~j+}R0*PSIXKEKM+l~_zSw*;VgFgHa4{0!l#Vt1eH*AKjVXyTYXjg0 zV1X-O_$w52T9!$%)69_Ja3sf6M>kY4q^3?{MVU545Xn7c_4PG<>ia^}ZR4Zl94Pzc zbL)y8;<@gz-Aaq9uNjo3V&E;^?jUhc-CUZB(wGq6C8%G%2v_Y9svmPk>JQ7fRFh0a zk&j2mSd7><_IMnB#{u%}NuL-mZ24T;ROPg!bQooPWNG?ix7HmssnW5Qt|xX%mfUmW zv>u|Z&-}hd1n*a$3uyWqv>jT#e# zg^LO>gniRHH3fr(nC@M~c{p=Dl*RNsPiLoElg(Jwk)A9S90w`{FFs$V`3^haZD|%y z`^5r%EX~l$eSpL&U#0{LBWU!s^qoYjp)=>Fv(K-rn3JaQ=!DPrS2g`5f|X5?I+(Un ztPs{_3_h1Mld{T6HM2v#v8+F_>`F{0&;*P)AHwddq6p|{6@$Aps65bn1_eTTD?0-M z;#PN;8%KzaQKx>dOn{9GdHjYCTU|%Wem$|EJJ{SltpJVY&QktfSV;JaJ;mTzPO?f) zj#k3y`s@Pk13pA|s7525l&gE^s^w@7!x`-ART=*13{Squoz$d6#|LgV2lg^Qa^T3^ zG0VBAD9jsIyx;^nf;X5H=g~UNKeUE#@1m9^t7GfPNeldNHD8Y3ZZ$u|yrPk;fGMOY zs*4hpk3e$3!&sii2SF`c>B=@Od2Q4m{@&o;yNN`yz9zR$0lnTR8+ z_ujsq)d_X}fMJn)T*K`Wsl>NTr3OU-q{NTQm)5Aid%atR;L%6AfZs}$Viv^piVnZ` zfDTLqZN8Bd&UrO5-B#@QOG@rozxa=uA+hwB7J+ON0u@6ov<@xuHz>X^Wc;)b2c<-a z&KkWGeyev*3j-JoDF|tF>Y;uUtE&1wSx)I44A}doOSo&}&O&ft_x22sw4qak5VZ6a zl3XB&K@Fp8V3t(E__;$Atylmhu~t9rnVM8HKOdVpS;Yp?d=oL*V>D4()tDd^nk%Vi z7^seo93etW7Ubk}q!304qJ)=;pG6uY6UMBXZJ44(P69I00fI7?%8t&k11HE@eXtuz z>lLR?b}8)jhKcRrh^I*awg;sKo~yT`h_4LPsZn;wdy-v~>NJhf^aAV?er(R#xer&t z6Gn_WoS_}psuydc`aP(H8xu@2b9FCZl{ZrXoSS8o^~s%Bql?MB=A24?MX=MS~S(5$J9x= z>Tt)D$~_Eu(iU+@`)sm;K};wHK(el`5ee4yb1^!GwPo_&`=%As#|o8Vm;-!_v90p_ zIu|cqYYl_PQ*<8~R1-4Cx)T>zV25vyF7EPe?yAD;m0{4tSi+NURX}fB|PiicFP>{ z9Bym!L!eCoC9mK5T%Tv-jxRSByux_rn_7|8!cZ1K=Gkj9ctOIXS_izLv%@i{F-Zw# zcBcF`v2j#S-_{x2(i@@AzGgFRQrNZsO%lnt;?x-l{c0*i#~4j?ViZC>wsx-)SF~qj z&LJfHJe#T4l5#C&U@&J;XQ~mX;UYG6m?j|Tg1&{?SuJ)fdmMyKIys~EyH2nLFBGOd z0RI=$-eVz>>C~td=@1ZC_!lKF*j*tb({(m=KMNPEsU}?_r$euca!OZ!W5Hr$%lb{; zwKRnwfnat*w|GSg_9AxXWYw@ibQ|ZF;e&CShf zHX`qLcCp?>tlz|XFs>S)N?EWr#~q^_{OS>me%{YJh6NDHiYX9QA1xfGY7(s^s^;!Z z?T1wEc-%=xFw+37IytT{O`eof!OV10U4#R@+u^B8xZ~tK_pbpODnf={lDhIjfCm?M z+k($dBuk!xl|albe?KcLiCFur;m?wLN?JyrFqPb4g_Vlh2xDO8!0h4+2wCya8OGwc zm*K1KP{9wsx_V&G#_%oBWAFRJxL8-9>oL*$Jx_%&S1_>Xt`>VIHJb`Y7DpJ&z_9D; zKJmU=fK=Zk}z4Mqp3$>YcRJA0=Rk;55POYbqTs1JF83svzu= zyNQ(I7`oNfLje62Z4Ca*K|L=GTSEeqKZH+TegN@{);3j!f~_WP8_L2+bsL%YKBPQ~ z`x8XvpRWPmQQln;-pAo=uP8dm1^`9vr!UFhb1PXfBUk}XniDpXPtG{w6Eko!lB zW%zN3IN`t{6s>;6nd!qVikW4Xn%LPiCOJ$N0#!b#YN?p6j|f;?SN{B{*Z-d9&IZYe zEQY@eB2th49`uZvt&>mi(t?i|l1YXMaG|Rx!{Z zPo1+UtYoz`X{v%7TQ2BwGRq=S-AKhX#ttwz{*t2qZ<}5y-OKNY3;|Jy_kXwPj5S$} ze|UD`q5miLM0}wBCz9sPS(EbRP}2g>agZAe#HZl?y>^vr!22g?Ow0a_Yn(UtgZ|f} zV$DbTPk=$F|L@=|a3d1Nf5E9b#Q$k@iNxgprD(PuEancT?(W69i2lTuIDdhD7Tj63 z?wqzn;+r6&ahgrhcKJoz4Ng##91@kIt%gfO28}*<=lPYBtsn#}_B{mle6WF$CQM99 z32JN9S0sdj{I9tt_mX^qs*!(rI6CE8vebbsN>)A30k;8vy?b9D{hW6^$$nsI7Q)2= z2kPgKL=U|<66~7ZVl?br%Gj3kh>4@A-wx_EI$Qx1sVjQ`x=p7mPQpX!f?8MeSuc)E zExH+(#`TD&EF?|Gr$8DKFi%YjlX+RpmXhEi!KDKJdGs)c5@@E%#?Kx?sgiCS>rzwo z62~9W{Ko>r#t4RI33Ki#`S#g){ZtN+jgmxx#>bDTd1cGW;y|*p1BbJQ0~%W5X;YVt zL!K`PXWl0|txElFWyP`Nm zG@D1#SNvkMbXGQk5+(mUs*Z#lD=7mD%*$}PZZ@q-dykt}i~f2}AAVD5$oc}5_o>>B zpyqer&{$a^u|wE5sw#x}4&kZMO&{@Hl9N;Mq0n7t6q9oSW!{29sXSC4ARuPu-fQZa zDZp+;VaL7f3C=(CWEw^cw*N+2Xos#fj!R&l<;3iE zU0j$CicvOcqEWY{Bu|f{P5vtv74W&vKO;sfB&9n&E*Tu@w8>HGW+wyea`g{MXhGEH zoD%_~0d-3=lz#~o9~w9m`@1@ioN=rUCCwvKjgCx@yx1V^IU*f*3r&wJcC}Jw466rw z@A;#is`VB9;@?3GF`~7j$iNp&OdQ&FnNgXRh}E zf-R}5A>MGTJX)HXIlY0PfuEkI4i4yYYKkc)0tbX;Ytc|zi);`ZO%8MH@TikTA5DBF zGzgz<;{75{FO9@uJH#?c8bo%z(8vUJ=S72xz037HtGr70W_>1xD2%c=8SsHLdXvDTBl)yekNxwviawLw_;$J;Ad$)|^e` z2PVdg8VT8;rUQN{p$^0{VV=`vd*Cs2`$j{XH&kP=T`W8hWLz?y)lJt z#&ne>AU&gdH|uI$*w@bG`s5{WI({)Q73cRSM)K{~o{(@Z!6C1_rZ>VEF@k8qao%{U zya<8*l-5Y{8He|pCc_zWX6TS}a?KC zwGWiY(jCx(o0jHUo=z}DgyN_oZy>Jtv-%6h?Ac4CWQ_D9KRz#{phB%A)C&O_dHu_* z=YNUj5#k%4lWd5tz;XJw;}=yM8U)#X4+mq4+8l{U3o{$hLFDN9U_hukH`PqE)Irt1}N|`m6kz?AhymYHeY$M^7+E+Y(lqCndy= zH6aP2R7{!5^K0a>N4XtKF=o?=TICjMST#(>xeT?7E21axLqe>Ah2x0TT)l!K5K!Q- zFL(VTL%&E+EtzLVsxn~3WR@?rC<+Q=yNLq}yb+c1D?GRW>f~P(xD$gh_gTR0P5dd3&fAj5 z9dFe~Aa*)Dd156H9Sxp%j&-Y2*#Rl|am9HeLj24TRz+=KK+f>1ch11?o~YIi(`Th;v z=bEu(6K|Hb4Ytc{9wy&?%U-!@wql(sH@VYtORJ_S@?r%~BMl3nY#3K4+Xf6I!#%Ft zl+8UXQEeScttdLdfpD`Ej>kfVvSmOyTJrxoIp%(WEn3npivJt-M^%>)`q)IUDDNK< zs3I#etrKWnrCcrmM1ny)coGRpHwWFqQ0(h8D5z=%z9CnTs02d&1d5&&!NO5EJ_a_Z ziV@|1O8LP<39@JlPMrw=#CguPTVP-pvgU~WH0W)>(?mZ+hp!8Sv35idi6-!y*PIuM zYW2H=xIoXBY1aJR98M&S@hiVN5N5m&Qs=R7t$5Crhh?LKEUm8Us$a@m!u7uAxW~@8 z=-{)kZ7Br9Ulx~)bXdm1wV6ryhDDehtP*>`kM7?p`s+GqRv`Ei2ztx#zlag<=F9tz zT(A8ueYeh>pysc(|5guveXtDt9dqCX5-Qt@uSMYtvrV871fRNwXFYG~CKu^o?_Z;w z{IY5Or3*&Y3Z|?45lMY!J~D#ejyIPG?GccuwcF3?1g^y10ddwy!x8 z9d5s1^g`qf`}r;crC#`0`tx4d*f*a_siw_e2*a+wH8Al74?>mYJivda+leU<3{h8dqHY zT?>GwHgAFS9VW3XiakJf8sqLH*Vp?Cv4n7g^vfFN`AFsuFa_(Ng%hu}*kgs~y6qFU z=Ndsndl3q=mkgP#FQjugEiQWR{o3zaQo<{=6dHB^YvK0YDtglIrqDq#u55u-;qxs+ zFZi{NuCtz`&z&R!6>ufE!e2pv0_J-hGbLuti|w#GrH`;e+f-?VzvdtP(ZEC;k*X2D zQHIW2BdO?BU_M-)i9~0r;Sr&v3rP}?2h|Ol@>1GiQ0Z)Ry6sD=%SIPun%gbqM;(qp zXgMX)@k;LclFJ(Emof*o<)vd=3wmVYnI5wSb59Hebs51N{Tsj4``e7{Yku_ef zO+WdSs9qrD(gLDJ&(WDBtg_$8S(9smWMiRdp{J5PkY}SRqj>&7sCRw`?)6*VG^e0q zA@d0MrP^<@xG7GD?uxhB9NkK$LD|t6zrVkI)d(Fp=rZ&;35Sgi5#qd!$Ps*95t zGFoEK8aZUWn$bzQsxotoLoLwwjW%%U-c&=CylYw6;Y|W^=LKxz^g6pU*mPdlls(5B z#2I-2CH)H?>5QHz4o)vCpDLS%w$n-J56V}&nbfHhC~7|$gyg-N?n#(i8@0Tk4h0~s z!z=y(#4dJ$*hLQ;AQzsNu*!fQwG(<4Yt$Zn-_{w`KcDiH(IM~}_Ys-g1rx>b$ncC- zLpA9f8lb$UF^O~>0?m{ra#m0Ka$x&O=e7_~NMc&=ruOOG#|wRBycu4jd3Jv*{n#Mw z*r45DGsJQdT!N`@=tB!Ma&Grs#2?`dZ$=-qTFgs(AIMq`8=zDX z>w#rYcUZ{KhrkDXueIB!8tjXvK1f>=)d=8z&#%^7g`3!t++o>dGwF&G^*FR`Kckf~vpo0I=7rW`gE zaeiDU4@8{U9g-K=y{0gp={0wV3KaO;sPV*7JYR7IpK_anDn5n7jinL3cJHFFB1`j!=Zx9!7njI+r=wypd8BAkR&Y9docc= zha6Vyn@vRh&qEUbUk~}e3A}mBWTj3@rT&3OE(&-cV|lTKWbX6`tjqop#$5ErCyqwJcnp zvwqGr8Q<7UUdOiHZ@R79PqY7KyXU>1?2keagX6d?=#yI|Hz&0T6MTGuRm@-FysMbw zTBQW|#S>Os=yK_t8$>=n%3`U^?74Vxq^nS>(2~QU6ILF=ju~T8L&cS4zFJ9Qx+(u0 z>iuhAO>aX|Z&L?oQzQ*``RN(YStIJ##37EUS-5u<9m<=-3-f4}i@9(po=sf4M@MHM ze$YOjp8yRneSsggj|Be;l)xzLX$)w`ut#G;Cqgm;Hc@{u!i)eNZ5nydY>2yp%HdtK z7lW5fbSe{c)@F??VL|X_Z0Ohzo)&{rTK67W$FT4NayNOD6I3LsyhSu}coCT4mvehG zU>^}&DGA&7qpt%(*haQ~i8o~!HAx;m@q^tyySa_|(y{h}J!`*#k7^POcHi}1a4yF{ z$_GA)J`bu4nN1XP%a|Nch=UqV>5(18L12eTEyi(ks(=9J!6XBQr2uj+Oklw_|3XeX>ia^#h_LzD z(D~A#GztSGrZ>>O;3YDZ7HD4yEer}BZ;@V89zIV@F68I0i=xF;yPQFSrwys4MP`|6LqM^NGVs*{M4FF<=zjXPT zocrIGw2o&P(FuR#XBnYZf9B_pMj+wnG5OPDRR=qR8C7=X-yX~8LVXx{BRC#`&t^w# zU{Vz`sq_x3QiySjLYo;qRAu1M=So;(wY=%A-StdKvU{Pl*?457JO6LVnlUHswo-C zx~?SuCZl%M*GLS9=v)cfvR5QsHf6M#Bjg((5q;44gaV#vW);hvDK{12jk5g|(@(;{ zRIk@$3<5bZN(U+wv5f%rs)=nMQPc05&AlD%8`_I&s%fd0%DLLxI@gVuJ6C)?6K@qg zRXl#NMCkNWjuh8hR>t!|>RG#q->hd7uGapGVOj^06>VO)$>fHf&wO+!j9S&~-Xwy7 zZ)zkWX%iRG`1Y7iJ{H%AB)xq}iV)T1A4wR&TuvW}I8#tg8^h^sSIM*XSI^AbYm+zQ z!Lh7gPzc40DK0pQcGPlb$?j{kp80Bea4h&g2f5SG$^}GD14W8*K zB9rUAvhU|)FK`pdsar2ZYz`$at<*t(bA&ec#B$gYRE9hGcakvaV)PBaVwa->n~2oC zMCR_%b<>C@3E%HZY^%McNJem(j6CP!iu_Y>djAZtnB`m-jw0q( zO`w$JF#RGm)JKsXpaLgFv%?{pP{_{UhD~!@IF``)%{8B5xQL!W663xO!D=%{ETJF> zHzQFk0W;aEL3UnLswBbc?Q7IgrornI7tUAKQSLCRK^0Jn@p7c5n{yWq(6V6JNHKMv zTyZ^A0{m>I=!#y#=rG`-tb^$NwR7NbtsQ>UyRf3Btc>W_3r`;K&vw~vDD%$9TcWx( zdM3#oo`7X9k%FH~D%SA2TLY2U<>YYf3TY@Y-AZT|(e;Wn55 zKD`}5f5_f`G38-t_GSeD%Uq86govC6!~C_;Ys@6RYT$+|@sN7Jdzo4J0#1I#-7*3U#vg;<(>pLeO_&4Az6Q3=)G^LK53%Qis^|7lfwuIZTY^XCK2?3QDsV&g zT$5*R!AP+mJ2xnBBdPZihCYBQcn~jmps1-iy`^r$OiMhFx9cK6cUzIzkdb@GuPOL# zf6rcX$jsfCu|Cl0aO~K!52y(Un`S`PPbSj$ZFIB);&VUH@RVbqwAF8A4RxE{q`2PV z3!jv@UQ5Z#OGnR#DLI zNZrWS%T#^-Ew;S~|0o!zv2)qgJJB*b(HT$*d_MoP5#ap`g?{ZafLp0f2m@?H{jxH> z^;IUq6`t5GxFbA0r_70MRDXG!eIwmJnhkcW{e2BjsP82({_{{`=!hlz$97e?(9i)T zZ_Mq6mSAj(q;9C@vACcV=glyV4>!(=w?pG$te zVITcwcSV$qEbCN+z|tmaSlh_WUs|QxySQVmf9TbroVzJjTG~!k$&+^t8 zBOMAY?ii_vY@2#F11)k;ZU&cx28HIP*7AV?uBDb~MZwDMDJ2xj3ewqDkPFPf1jZjj zcmA!<#iU({AcFOVvGha#cFR!}l+0L+WZ=#(^ndU6qg#|Ey6b z8z^@tg2Vja3>TJ8j9z|x1$-<>uCSaL9Z5}Lv#Uf*JHZ)1xOw-(KBi^2r*h*>*2NWT zBbgz4lD0}JUy{?V*k%<^_stP-2J`~mojje^UtY4x_43M%S=*@_B3N?Dx#)g{<%dzX zc*%|$7FMqHoa8Z%(8+qyYWqebLuyE(V=1D=tqQ9)#R{JnKi76)lzQd+pKD7Z`Tx7Nxom!5jt;7c#&XJ^8NZ~iSKpxcFD4M= z4_PpY2y_Q9sN&gW>Xw$~4uxf>WlwGI*3PPCtKRn=6!I?!Eb(3cozr{X`t`o;{yILYLJZ~7V_+?c zrHD!k?6Bk6y!UXdSd=eK5^6r5kz^-`@g6ETS9G)=k+($gff>%KuGVs#it=8nS!-KI zvxWg77v9@g)r;1aIbiu*U}0>clL%wM(qTtC#Ex92-qgf+*)=z_Ss}}3Vwp0oSQQu8 zo;4if8|9#S^S{!?2sKv>G4{+7|^+UcIn1TIz!LW%EjhW0JdZWmx)k&4o@IAAA zH_q(k13!ihZUQdj@P>;G_s|B=wkXg1(=|7$Wa9g<$j%UqBDN0)VjAFEN5R8VBhD=q zR+5@BJ)6Kz!nudwVi5vBQE`|vh;_T0EhmY+q@dgufe&&@6cm&Zi~(&$hpebk5Jgc9 zl$BJ~n)i1Tyd#p|D)lw|%D)^W{;W zGYC?=XIFusHtmT-t`{{ay0Vx;ayK80B)U9r)jpz&% zG=uw=9%!pIHoUZy3+)T>(h#P)=IzsgiAGGteIFAO8Wam8CuY#l<{*xF$t|!noCko@ zsS#4vr}p_LEF)?aezu9wdGxmBfqWH( zc7eX`0U@T+QcV#K!G@W>p{FoI!^RL{U1rqMic{sF5urk8Ynd70SlF>v!weYcX%J1D z$_vM}mZf8#0I_mt2d(Y;{?!R5=#jft9ZC1IRF7E+sw{MzBYgqIeseY+mv)cRK-y~U4xFWB&uiTl6aU=h& zPkz>yPil2e3B?ZmPZX}y;$%l+25EojB8|`ScafGuIA|bq86l0O8&>NN=OLwFwdjEd zN&dzOv`tqTfEX&q@f9o^cdJQwP%nle-!B$TRGL4yc|Xm4t`>4}E5XgcPLnbd)WRQ_ z!y(=Wwv8c|*Gl3Euk(G&e(rLsZn0%dz)l%BnkP+9TSES0kjJ7;6N0dCQuMXPCF# zuIM+GXo+Q8%;|jD9<&U=6h~p2p#YkjQD|j29uIF%wh+s1`Q&g#f0Es=25gX8(it8# zX9R;K*_4}L=Z76M+79!CRLPRu=Dhmt3rzpXp;jCu?DfrpjOKa8(*_NO1opcKldJK2 zqYaW6sjFnXU2+F%!#q_JO2aQ|!+*;nNAHB}dY7X-HyOE6;{c<;+W79ZQvTQoymwpo zc0FE`14LpCpFBlOHkf4zt3BJ~DnLJe?NPLLA+6Gf>VAOfTK!I3>3tkr?$0@n_uBpm z9U|XxBdcLbHUY~686T}LCis~L=g~OYt!LS$g)WK7{GJ~eSRz^^sUnz4;aK;)hKHxq zzp^7w?*TN)QQ@1wfhOO3j$n7;Km`hnlsI3>&vtiES;|TgNvu=U28QLG0*#RuO6(e& zfJE1y6cc}=AqIH&oHf&K#o&A2#YOHqz#apsLFj+Ka1 zC3lo6gxe5nmK;^6Y1q$AFM0oLu%J5;6%Hc7txdcfkazvHmmAZyBgvjr7#l&=vHnoQ z+w-*x0Td8E6R5WBnVe*gh8k;lo|`_%|DLpmQ|$F?Lm=yohVgbe!y3^n7)pPi5$hT2 z>`;{bITjyCjMdT?vI{LV{*h&}As1-iV~36F4#XgX-Dh@i$##U>c|xi*`^{b=qB~Jb zOO>*Tlq7x}cptUk2{B?Ee*}|cvSouoXaoh4s$$9_^egX+ z$+C3Y=<2t&8I$Jjm{*{NbcXtY20kNKj+~z*=du=1nLdu{%EMPM;lFFgTv5K!^yWB? z7%c~tYi{4E$6#t(52BPF^N%Z%s?~6nzgZS!OMsRe^brBdHKF8rEbQyaZjV#r1w z2E$y0>`UDw8tIx)B-OPvX)G~aYZ?4*gvef&NtT-}ON=EV<)RRVAsM0U?myE#=km{a z&UxnfpZEQ~^PTU^Ip06;|4!5`**bf4T%59x2r5-_rq;G39kxA0uM$N80Y%#Q{Nt&V zE_!~y+H*IxW2l(TR>2I0$Jku#UkAzlcqsvag721Gr`8UjT)gQZ>qx%X+ z!bm8;yy}px#Xm`e_60wioB2(ZE;)Cmu{xKNq|u<$L-xNC{Lj4HY&!=zs6_(_vb5`}Fi3OMq(P=)V%uKD)GaIm1*#gqNFw_N>Q>D<~{^ z`d@7qycI!Xv;I(~?UmBik$p?&b>i@I_p8+O#9(LFUJ@}z;+DUDp_u-=w-E)Mga@+T zRN*HnxC-*=h5H@c4~#Q#DssMmnWX8Yp6QLb5x9EDOCk6Cz^$X2XVDsmUvxSBF|&PV zdA#q1QI9*PO!K$4-gA`iupzC=h@9uul}-f38E?cIrL3X*8q%Sj7}C6!y!qxqcYo$s z;Nq0;g3dPr(R8?fA#Jl{I3OWFxgns}sqe2=n!!+9-O#i2n}vKugcoUO3v|+FoN71q zkIQnAbwfvN``~!X()YNJq^}06HZq1%-+I0_cRz+X8A@s*E{d51xfCdz74d*woo?&; z9Dm{MJC*t_zUHNY!Z7`X*6Ism&Kj->6IWiYsm?Y>93paUksOKy=es3`NTdjw`)Qe$ zPXVT@B(|o&9}|m-KB6J7vQ_GP{6w+#U(%(9;yxQ|5IPEhzdm+?+|5R|!Bc{@kMJ0lQyav6zBPV#gTLHr@zsIjG1(P* zF;2F6#B8m$jbWqOn03ZWPo86Ero?x=g(qer&_mKHg9$pu+gS|=zY;)cser?vMYKks zGD1mW@x-{f>|zV)Vo6e#U~Xzl;IMUk(NR&*9rONz-1~9l*(W!%k&5B}1X#cF)Bp$? zLI`)g@9x|glO z2jgnXm@x^}s4Fi-w7p#1y$yJ;Amp+`IMOOOW_s%r3cd?gmOcD^NMNQ9XJ$+gvY5AV z%_r8yBzr7=dao5QZ8F5g%D)9Lrx@^0hldE5sbxAL*7>pL{_Qw< zDZ?JlH*A^riZ=$wi-r`8+3{?DP z?5s)bI|9ZaQlEiE{uSFOfR5UU%=AZxBNjb5#pCi9_iY=`>Z3yw-X_T1TKb?S6GB`U zAW39-W(EeNE-xHYlX<4nBJ+-@8}m1{qwr-;zE`k;ZU>$E!0Daony2-GCqJd;hZnb5 zCc`gkBO&`Wv8&=5*p`raP4IvjR|Vqemb}VXbm8{$(iY}(g)j{2B8Qkm7k)}i=xP3e72 z_+v-+WGrrqJwD$q7Po4Zdos>7l_7lO^!S|ZsiTqCUo}du!aKKLs*IXDSB~a@Kis7$ z)xsNgUTD$wlSeqxF9c znWCvPxzIY9wG-MU7C!RkzWPjOM^n}ZIy*nXKO+0Q%3%M_kkJ>PQFSXofbJ->yke1) zk*s`20lbuJN)6%t&B!Ek&Vkr4_%2AUC{xxxrK8Bv`I#OcR%hdRUtYZTXau#S_(T7| zn^zoPKRu?x6Ow{E_`fc=VHR;+7kpf4#Z*kWouTO`$MO*=I6BQkFvTYve7D^8ZmuM_fGVg6gpAs?ucN_!ll}~ zQpnLLxAD#(t{;@+GO{Ar_|b6J6GG z%h7(+Hx&ziPE8=s2I8;J2BezO%x!_?e(UB&2lzii0x_JYuPL$DXszU&8NjwGiLoD8 zfBX8DM08m4^jEBNUY@XNk9yN^=|ex;wHP*G3x%%a$)6|f29dHxB?Js+v*)A@H6@Bb z6_ZfKY!KKXa6sUMzy*Q33RTRrh-5Y+B1yLMK;VVI2Z0}g00cn@LJ;6plI;l3aF#RD zQkWEJxevmA2nVVnEk){CosFu@Y(?aon4T&hVcm z5KMAz8aU1(52gVOi}X$d7I0=o@c%Cif~Xn5o)5A+vZ|B8&=~+=Kdwq}-w-OhEf!&gbT z%Ytv_00~y+Ii?84GDUJ{%-+>tuH){1;}!OdU;{Eo(Eh*DdiO#yLw7$C(%KWMl?#Qc zfbm}dv4c$K?k%mj$GPu0b7qN;_(8@OK#;W!cD_I}PHX~^^ML$8XrnoL8XQ%S3Fn3V z!p{eT)?(KcH43`T1FQ~SVB9>AVux1xVV{j4h-QC>@E+IH1NPuvJ|6Sep-EGyc z`d2;O)AQy{y`9(dx;RF6byEjLRRJ0X8v+3V0iv{7q7DTG68cRhkwB8Y%MXxr@6ra6 z>0PEla=*)INQr;40UN3a>Ya4LjJ$g`gu@vE-Zh8lA<*x{4jUKdorL1IKtabhNhFC9 zk-bY(BIW)OJbSMoG4r)HYyv zY^$j@*gwez4lV`jfc_@{bT0)RStv(DbaP$l*!7_FXzfs&mtbpDF)-(xucoT2)~2;% z4Gu#_1E}Sj3tC#I)6kEZPll)`V~erNj9~u=KB?L*o%?pSZI}K%s0%~loC_COvKel& z)>j#eBr?FvvHl3tzbI*1lxi1EPt;LUx=S$2If1n01RNDR{&)fe*^#Ej)JKi`pQsAr zp3d$RtNQ29o<;d{j(?UR7(J-tE)e2Nl6Q**Q+kh*%`P4v9&P97q~KKftL$W zTkdgvD^pF?`HomJ5Ky%q3B|Dzm;28~hky2WW00R$giaaQkEuV8(214v0XULB-_cao zG_rD7rE9RS^~zY1i?L#(o5|30P3z8WMnb`FN(c?P@I#*6&{Hw(II`@+$kbG`Bt26< z2|(Z7FnprKRD{>M)tKGOHIO6_eU}hxjWGJIZin%?lDnt~q%|VWe3MI($>UzTKEpyl zV&L3nl)?z{*V=%;e~12rl_aH9UG&$F)hLHhK8IBURjtz*9pb5o-+KS3H zR`$-%R+qIdf0M_Q{`{!0R0Bx@Z-&Vf6a*=)&7R}^VWg;W500iz<1uy71tCIDK(Y6? z^dkF-o^=uj{>%vy<9W8UFoB#qL1Z`s{$P%Et3cAU3#dZSv5)gEqtr!1oFnk#NX}l! zuW@lBaSsYmk%`5ram^M@Z6D9(1tQ(6rW}>3v~2GrIDL79}Za_Wb8Qmf(d3kz2(6)c8a^JP52} z^H8`m4nq1BcSSJ}LnKJr%OSX0!pM&v zf6&p~_{R}I2wje7{h(MZq>H%*`>h9BZ}pA~>2@XpM9VNboG4;J$IWFagD8n*kQgo? z`$IbEMX9UHkVibbZh$!pitC%m-pC4S1SD037pODNFw<75n1$UmJA|;C*O70n6v2`+ z%Aw9Xe*s}0&Eqd(s&Q>noDkdh2c*7oR+EaFwhe-z|?FT@$vc6_(HGKiedNEs}IJ|2~xa`WlWfzzT_c$E?(4)J<;P)y&18yM~#r zZ3aDYI`CZXw$7m_rR?dEY!4=d%CdjgS;?#mG;s99#oC{-wK%sS(aGzNrL?%&5d7BH za8@5+Zsd6_)i*T%n}kF`lL^ybXJmUv?Px)?c_VhkQ_d{c^)v{(dSCxIVl{} zXN(no{}gU%N2ds|lP^iM$op4oq-S@pDlg@TYm z#jzMyx(T^8FLGfQY>_>av*6D?)ve31g_cTZN)FS6Ya0B9^mfXRu@qh>zyp8&ehAdU z#h?StUV{mRN~HNCy%>OSm>fy0SW%Sfxq|-vwO_E{%|RJk>{7&g^MeA8-^MC$Ag~?w zHZ!-l3YetYy@64&pY7e5*j77+F+sl+zLrmLe^riP$r@HH@N@pGRQIPJg?(T%mseOL z?NbUBUuFO$I(T@gTi)Yq(X>G9&AIRZ&sUb#pOj0!g^J@IUn`E7v;xnA0*#ZvUeXwA{#z>KDA%L1ypz6J ztKE>Pvwm{S!cLy{4#WCqBrG*Z2z%ewXqi5ss4YgsWgvz#Gs>)rbtQYC_G^$JF_%P? zSvKobl$jxL(I*)kYv2!)%SJ4ME_*kurKkmW;A_PDWt;G(fWqVhA5-gxZPfr)n~}D{ z*AMcCs4e!Gl_&CWA)88UZ1^F@f3mJD#|H&fIwRBh&?CK-sPIV<+ypK_BG{<$YBaN_ zsl3W&q6;x!<#`JWha=fMkk}N{vLgz%Cg8AVPC#F|I{fEdw2cn9Okkjar|%m90E|G@}GhqnIg`J7oAzEsyu{ z#iz2pBaVaPrCxh5%vtp@fdUVkx9|)k|HC#S-Xa-_<7o#1>8T$8eJR6l*Xhjj8V$#KGz^yt=LF*>HP zTVKA6$7*R`_sUv3a)L7T070mszq6n?jL1fwz)g#VKMdBK)%yWuvUrkMLE`K0GkH7J zo~%?@wM+4OubDk>HXVT)N6MkWxCnFZ)|k z2KUG#R3cDRrkqaD6~}^+)co9M z^gAFNAqZ{3Bjb<#%P9k>!`?g5@+|Px`C9O!duC_huo`2Ny0doMK9?m`u1uK)8ic z*Au_?l3mgmD9vs=%f9RiM&k+F_-N`_Z1|d?Gd#lE&Kt|AC`X3i_loQ;U&*HW*I0Oq z?!|FHHJ-kJUnmXaBD;nHeO*kgp_p@5nnzb6LMhcD;a?+IvY&I{rPcAX%VB+LXA;L< zsRv%}edTIb32*!rE_ovB7I?P!TMPRFE503^hZ89xkg*JWz)7D|+a2x7*4{e3pwukY zLamm3T`cJq`C+TtQIfWtK8p>LYzLuGRmOTRNrV18kJiUOR@VZ{i6Mq)`?uO$kEGoY zzo(t}M4l-tru#0xKVWuGZr5M|My_$H15<9~eq8pJn019qqsV+Oc%U~Vq*idT?j*mx z79-FS0kL!xc9X43`9_D!NE5K!uO=>?k&emY9LVR%VCY@ZU6rDI?uT`c%T~K{Znd6* z*g1viMNr1A{W}79Bx2T*X`?bKV4C^3imQ=XK29=JBExP7v0U!^pm1u24@&9R`1x2P zbH&p1kdq_3o4L_UxF>Syxyy=!Wx+z@0Th&9c-1oWfz*u>J{0R&08C?b#YkgP zOrr>kh}z@lF%LK@!Y2J4UJ1#DoqLw@~r+i5fmC9y#sMASyt6(IUt z{f6*Z^MUEu3nW^k!nmGkC<4f+ZS!t>#tGlW9^4ujAPcLlP! z2^9E^nS*&)te;BRnHu3UHPRD$8~m6DmyXl!_>&7h*&w_#6L?Rem8fMO>w*0@D745M z+hk-UJw=EkxZ{djCucw;biC^U*2ZZk@EPy2%4s+0*Mml9Cn*-5C>@P=`qhJQ*DI6= zNESD-Ii^u?zM7^A(j--So;RU6tkH448MMb#4{efS^q`L`4(tD?3YH?GlMN-0p|it^ z{FmKx32fdF%=P7ust{6RvADmPYW{R6c~D5=9UKnH8=gn`(m`-VTy{)vTXiVEL*hYe zn?I7Rzz2uQE6CR*0T#ghtel5_mg>|4_m+K=O3=`fw%gw>+v&Ip%op!#gJ=By4UlKj z(Q&hTKudy|C!nC*l}R^Do!%R>rhZXlPdV~iBEbl|$P*B+D!DX2ppBNrOGjFHe4S(}*UpRKJc0}5f9_}*a1^fOx_JoGgcWo${pbt;}4S#Cd`J4HyL zut@(T?f1wIW2M{XMWSA{-ughn%#5q>=g09P%(YU(1e#_hWy&R&d`bPKxc%17EiM2H>L_k9pcCRCC%;zNL5(-q8?VT~Vs1ikh0ce%qb01Nh zMM^iDM)TXCIdkvjj==**ckK4Q4MVTnUZ37Kf^8an<9JwaHSIlk=3i+*I?(;D3}zpb zE0J*u)kEZFP|p0#%mL}MA?Yqd;pf>3X*GcaQH9MLsWrvf+KNbq>?{!A$CzQo52TZU zs(C4XocU;dB7{c2mS5<`VW7q>wvEDXruvb9wjkf^Moq`QL5huqh2)|%()HdpG>z?H z0Lrc!IG5MIpHMyzapXv9s6d#tky$H=Q>tb8r%Ys6Bve7xdX(!bp35Yrk|RtiZj9?+ zcd!W+2!ptd8!5-_SXIz=m$POM$`#bkH1C08EE(C!mLSs<^q=5p0>5M zVy+Ym#Uo-=>aPKUb48n9TStRw6;x4Xf1zbrtw2&l(`6o$r>jqTd9eD3k#C_ zI@kJToOn0>vo(&hRFfzpGg{30QUW`@IBlE&daM-uA4O6}+E3wI0_b#3zdQtd$W?HgHAjhKCpfOV>u6PQt5Fzq;G{&A z|J>iFq*2jPLr$r*4EOL|x&~#b>v5!b6b{hS*l8xqj(u`Vo+ig{$JNJ-EOel;usr&) z|I^gvZ}yl~4}#U6J**YtgEI4cB~7E_)S`~{oT?@Z&g>HxZK;Sz!VajTZ0}R;kvvc^ zQ9rJm8xzSfVThNojhAKXN8hKQvb>98T~18fI177*VRddM>-=DjXGZF_q1* z;#8Qi^<*m*t=MjBr;)nDZ7AM7!4t5yDrbfUtH?hwNQ*}j71!Xe#B3u6ef695mM2He zV|&^w@QLQCK4S6v_)loU^rdS54irgO{9%{a&Oy#&>C>Rimy`g4VG0*mPmWw%EoKY` zk5e`~6v2lLtpgF;{1e z6K00lCoV44>>*Fy=Ss3xtE(~Lk)>WGLYjd}5mxpJ0HWfhS=7!It*9#-)669Cqq;J{ zEbgBQ8jh+iRF0re&oq;!%ExHWbd7ma+$G$FzOL zOBG!Nr-VyQmo#FW3sY*#pY_fcn$9Y;E2$Z&e{)G&=0vDmE<6M$}_M=B$2gVrQhx9SPp8LQLF;|+1PS=3n3k!ePL`|d1;6W zty@jhNL?HYsq&BTVMQyR!X>Z2++B6}PaLH?AB&fU&&D;$CP}7k7DQw@(nZlwZ+BCI zeAI_DyfZ*Ulf+Wo0`(aUB(^`7Vo-+_kGbuL8%HT_OJENcZ`p{ z7s1&cK|4@##r|Qb`FQ(11IQj&nh$U*+KJQZjLIpz)E`6GT`@Ym-!S~3;ex%L3~`?Y zd?|`D*$^X+5LX=t(SQAe`<|WLSxXnOwXY50M=V(wqNEJ5|%O^|dY% zHI)YuKPE+e*hd*&Y=5FY(3&$j*SW$o)^jD%%|MnB7aX}Y(L?jx4ETElhr6Ho(9zjG zoo4aa90l4V$!J%Krv9y!3CwIhf_>z>cEWk>1NpS$#+|CI|HxeYEKBsMO!uRUFLc z8;^WS@30(E^#Bq(D82X#c7$$6qph^`@{h)>w)7-in9^V@`k!BDVspEhnel7|{gJ3a zOh>hUvz`&$2dH|0t?I3=&ajVqkdFg#FsFKnf%P1ZEiu9t>GF}T)yl^je_MyJ((hV} zJ_)|!>H=}Nm;tRB0+i}AC7T{A#Dj8elv1f*Y`J!ToimuU^)U!S^Zid8b}HbjU!DEN z6M77tUsx4NkZdiWH58qv zG5CA6aiwJgtE_WwLkfi}$NX8!+wU07nBD;Ro zL3CW>H!m;|d{wH%nq7d(n!?WlO_YnqA$EK|Y5g+icrZQ0PnLFdi3w$a)sw70+t(7S z8zlPRLZiJ$3*(JsJ<_!aif=fIjaSn zNNGSU9P)pZkTF;bzBa*V7j#4?=!?9b@>0QY|-8*J@?uQM(=7Xxg zHNlIg|0LFnT3J&Da=(6wL*4u+ED*!T#soSg|0_Lb6>$|O_H2iKDX*9a6$;3K#W}oe zle-a#_-aUI?&b)ihSH` zQ8-oW7eRnf-W)&pE?p)h+Y?RYE+jK7a#rQ{^^7F6<_VD>ZO1h=O?e7V>_}UDWqHV;ouL6upGOz&ZBjK8HN94Drc>s06G5dkUSqRH^OJ zZA&S|gwpbuHQ2J|AMCM&OpzXms1)PC+b?CW@Nc_wLIfmb6+#;%2#5l_|7UyN057l& z|L;(*;pC(D|D67<1KHAgAaPL|awS&a-kW^o>+#+R+o#fZn}&6uAN2cCpco5VlJO__ z2Cy|W>AOjCILiMx6~;6G-c7`dq(O(;c5YZ&_<_oqo)Wq^b;;56r?7H03DMd_ZHu&F z$=obT>-w7RnZ)xS+cPg5Kkvbcb-qGaWw{Kqp_)ABa_O?7?(w6NJ*(}x@ygZYg~frh zPcFXQXWjd3J&kR@ZvG|dh4e4T6C+P-vZAyqJe1C|S@2MB!|+;XO#x_k>w=uSWZT7ao?mL1m9c$ixDyX-1|~aK^uRV9PMV zmn}R?_c3}$zz_~N>_Y_w3eibe51I?|l2czv)|-xL`dG>f61bJq!}8LdSLzY-We4l) zgh4vB?*PsMU_xHlXM;y>=0QYyd+uJX=W3f<5J4=08MBJ?UILob&-Ak6ukoD4xI@hz zEM-G#1lNtIC}QHR3gqi64Y}dDqnQn0ZjqDYJs`r&E-cCnl6zGwI+uvsxcec;!Z=P* z!M@ZP?y9T|X6orz?bOeHE5CuT@|ts(a~RSFG!ie(7IhzynrUiNtU-Z??F~btd(zxr zP=lxIhWA zt^mH=o#UY*{(V2ZQ9w0F+-0)I&xI(ClGyM(ofNhEeVu}+yX+k)9*K=r!WjLLea$Ww zN;zPMRZ{VudRp4rr@Sbc->09!1^l$=zs{mAp;(%@Sz=`oLS$|ES!e5b?^OGy#woRm zj66M%DWtCQv*U7Z3%={~t?x5JPzfrVCRbZnl1(CJ-OXu-bd3$OG2C+}0#)KJJPG%U;|KaUosywFZKb$#Kz^)P?3E zuvIb1Q)focoM7a#D&=JG?g`e|Ls%tq8R`7aV#dUZ?kf7M0@9M;0Q03`MF9WrhBJlw z#ca4Nv6PN8Nj*WgpIf>XR5f@N!V6x1xV3l}S-3gu z>1OR$b8e!N^8Qh;8$$GoKPQ#nu%Kgt2LS3kmZVmz(gobsXrHy_dO=&(s-RBI=Mq&s z&K#n)D9{zl;@3N(S2bpvo?|bT|IZZY)lj-eT-)&~^=@!#jt;$3dBtW_mDZtz za8;$9?|W@><<|ywM^D zsp%I$DP>@4iGO7{DGWZ(4qF1Y1fSXDeo@}kIjC&9x|hYBmvRlmI%lNYhqyIt3qmlX zRgg1|kEz0EFoZARM{Af_(2Ors4~0mZ&lw!8KJ+cWK%B^CAM}NB9^H%G91{k*0A( z*MP1?0!ynwg*j;qYL|Acu|mmwe-b)IzkKc?C9KV)8;DU9IwVmHz@z!TI#a$O=e+D-aAEMd65*KOMv#`61{h?I}wz|xaDe{1XE{nk>3_JBHzR(wv4 zk)+AgqFdC7eQc};QkqMy0KL66Mfb?|2B3R-H}Ra* z?W9%^F>iFK&JrVKR7k-xLQ2!JF6;FYcTT6f%;Xj6Uni_d!l|Lz&s|h8C)(*d<_Luw=OCyF3Wo?Z~-)B0jO~w@m zbmnx*@(C*RSkkv`3S6463e&Dya?~GcUiCznw^*wBRApdicj{@hdEwb{VYTw&x}@Il z`n07ePLBWl!pr{E?^57?(`{ztH7oOYJ7ACgGuk*VG$_N=ar3U)4GnN^=TPiM8LCjG=57C{(NpCkm|KHs@f7L$`_-{V zQ~jkB77!I;8FrinWKD3pa_vgLK>D=M zP{;Y1tud?SlHvEl2P@t5NH^HxW4Nr~GOeYOoGR~`26iM4c{za-)|!nL#RkgBI(EEU zm|ermJ43PY#`2@Lldxnn$Z}+6Y(?U>@b;iEThO9vVYVy+V}-u5hphQ;UaV-FyZkj? zi|>+7n;OS#O{&qiJ`Tt2#zHA}7xEo?C1cY9C9;g`35h>pI7fiF5c1+(VbNCk22APt;0B5n*8 zJ_vm5lGRX4Xa}RcT!%Hpvkkq`uN(avZaLP|4>axO%WN1mF?x76f1DB&DA(eNm2z8} zZ+_1mUN#DcL?#_=8oa)4=OtjL?)a>avqvRr+r-tWOoX>^Vf!j>mrXMHS(1R)tRX1Q z`H9{U>3p@np@aBamnn0^w{C1P_-gjrCJ_EXfk)G9q{A;YX_lgSD`&@un`13p(Q@&n zLb(pDqm0%JinOz_R=pZ@0f8ZFgVpN2YHkD)te9?gbLZ%a;Q2w+@lk;jNp|x|l}SO7 z3s$Ru<#WVkPgjZMF#+TF2!=wGUkFESYt{Nf<|7^1`o66rMIkBQ@UXGFvMlp8j6gu| z0-&Rj%J3=Pq_Fv-mQyr2Qa(H9btSKXSn?z7?~fayn`8jIiEF`UEBAqf9%UqSf1@;c|XWQ=5|Bdl2$rim_%ojy&@w-kAE4e-n@*NPZ zB3+4>Dq+;DP06xiA-;Xda8?J)biO2*O3$fh225)DMYR(2#a-jUfsE0aeJ?}wPq68v zsz_SWydSYTWhV+Zt35jK$HzHKj)zcmKaF!?Y z!RN5aI`%#FS2_S*IvBC_qcc>)=M_4io)chV(28zmG>@G~v_H&n@jr zb8r^Gn2X^jt|74h7Q?WfOFM^->nlw2!L{Am=)(r`^YS1WC|&0C3mh==-12LrK>0NH zpdvD2egQ-IH~3#g++`nD_uzM3=9uSRG%4y2IVk zuoXxnd z=G7nL3H9tpDQ(%e24b8LaYRy?)k>5ZvIIM)-RKlpKpjQ`CLV=T=6m)zi+Zj>S8Zl$ zLAza(B`y=r32DC>4kP6H6C1Jt6NTnBq!a> zAs+?-^q5?Sn2a05%<4fg{b%H^DQU~Kh>67u)m&#t-8{fDhBSa>EKSHvEcq`t1(Yx* z94g9X(C?w_7+(=pE1Xs($MxHw%^N=MIu!Gln_b%T(yb0>hMsda%@Vml&lq9I$SNDF z`zz`}k%PF#j;^&N_x@Z1H6kI$qXSn5yPsAe}S>|IXn)|)6wV`ixe_SSo!Hc1z z%X138;?ams==ek5r52IkmhQ}DD!61j_k4EEE60D$rr<^K!48p;GS{ zrZO>4LIJdXOcHC(%>raqa8jYlZlU`eh`joHTm+npQOMY}qyCI=IG|{s49A0bFm~>W zLzAp;Dm$vyD%5#`!oT?$EPRo#bveF&3ls_Na^EIf_?bXI^(qxONA^^ZAbhbMF&5&@ z9tRnK9)~d|MvEwE-kPfQOwdsXu(y59FWAR32rmTEj>|Au}8y3k4+ z+n4i5AiEe~yyJbGDDjX9$7PGUw_*@>FZ$z{KS@{6xh=XIw^ptarpqs4)1siScmv9R-48k1N2@Q*Q_RaM{MAgg9y~~1i zMhcX9MZ4A}AJgve6W6g?wfzW1*4^Vrux}eFg3v&5+vSQYAg7TJJ0AU?WP9Eo%r^8(A3|`5PtpswKZ6E8%)u`(T;>Qc z_SuVsfp$xiJzp^XrrdG;2w@H!Nsv>azP{WfDrT$hB_fux9%7s8e??4ceir_V^cu^~ zvZ@%}6N%t(8}eBm=@6RnTs>F)N&RmBRbk9YZDX}o*$M6R*WH@{CEb%q$C2|6qH~}; zZ}l$jy~6f^v_nrW=RNvvVp`bE<-gvc9%c7N@V6|^kYSrIe>9mwWag~BXVKIGSE6vR zR&hu@nGZ=s6GMjM1NYh0y@NdZ*2c3u!~I;4HMO-{X;d zL6J}k?{u4Azmv*Y4afw^#wpxWczZ%S9%}*a^TvCGJ{A^A#=sB#IQ<+LBa^B{$BSgMdgOHC|g@o4e0rjn1B*7RyC zrl{l0umuT_lj=w6{!F` z42lm#V=_wfR>Bt9v>#L{=`RuhZMEX8pTv%+741_Gf2QL+aVQY9i?bFNy@beAcF81( zP?RBSr3&+d8gDkA>OOx%OxHW|=5bV`X~y zVOflDMepGMdG?WIc(4UA0sf@oGCzY|cLLiWd|KsTR$oIvL6i* zYi71%W{*Ss@cv2|e0~1PY1~`ko$%KWk?uj6tlta~w4cTqC+*pbcu54!{nYH5D8NNm7mlCW9G3|H^X>7i z79u34KO(0e@(oaLfPMqa8(`l6*OJo@e@*VFy4Uq2CSABGwg0?=(1*smTn7ds{VI&K!=ks|Ia$j`wz~0MMhfg zUmT*ewLdu6@9L{RIDGGf@d-!homfBNNWPPrCmfA;0{e_(@lG6`aopa?{xgo{J5hYW zv3)0PFE|eGgyAoa`@gK~zc_5~Wd1J>_d7v+#SwldvadLDsBbpv|M#Pfw47HQRq}tj z|I8FKLHy^BjX4RDm^{gu1tmoo7x`aLDGInmP}h9_)G1$ZDc)6;Z>oh4|5Wcu2j&C{}b^Xc`MF?t2+gn!!JX zw|ts6EH2r%|k#${e*xZ`mZ6Fpr_r! V;?kf}LQq1ez0K0~9?o0){{mXPdm8`% diff --git a/Database schema/shoppingList.sql b/Database schema/shoppingList.sql new file mode 100644 index 0000000..e3e94e1 --- /dev/null +++ b/Database schema/shoppingList.sql @@ -0,0 +1,196 @@ +-- phpMyAdmin SQL Dump +-- version 5.0.4 +-- https://www.phpmyadmin.net/ +-- + +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +START TRANSACTION; +SET time_zone = "+00:00"; + + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8mb4 */; + +-- +-- Database: `shoppingList` +-- + +-- -------------------------------------------------------- + +-- +-- Table structure for table `listEntries` +-- + +CREATE TABLE `listEntries` ( + `listId` int(11) NOT NULL, + `productId` int(11) NOT NULL, + `amount` float NOT NULL DEFAULT 1, + `unit` int(11) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `lists` +-- + +CREATE TABLE `lists` ( + `id` int(11) NOT NULL, + `creationTime` bigint(20) NOT NULL, + `comment` varchar(200) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `products` +-- + +CREATE TABLE `products` ( + `id` int(11) NOT NULL, + `name` varchar(100) NOT NULL, + `synonyms` varchar(500) DEFAULT NULL COMMENT 'Separate entries with semicolons.', + `storeTypeId` int(11) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `settings` +-- + +CREATE TABLE `settings` ( + `settingName` varchar(100) NOT NULL, + `settingValue` varchar(100) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +-- +-- Dumping data for table `settings` +-- + +INSERT INTO `settings` (`settingName`, `settingValue`) VALUES +('databaseVersion', '3'); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `storeTypes` +-- + +CREATE TABLE `storeTypes` ( + `id` int(11) NOT NULL, + `name` varchar(200) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `units` +-- + +CREATE TABLE `units` ( + `id` int(11) NOT NULL, + `name` varchar(100) NOT NULL, + `abbreviation` varchar(10) NOT NULL, + `isDefault` tinyint(2) NOT NULL DEFAULT 0, + `isDummy` tinyint(2) NOT NULL DEFAULT 0 COMMENT 'This unit will not actually be displayed. Instead an item will just be shown without amount or unit.', + `isPiece` tinyint(2) NOT NULL DEFAULT 0 +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +-- +-- Indexes for dumped tables +-- + +-- +-- Indexes for table `listEntries` +-- +ALTER TABLE `listEntries` + ADD PRIMARY KEY (`listId`,`productId`,`unit`), + ADD KEY `listEntries_ibfk_3` (`unit`), + ADD KEY `listEntries_ibfk_2` (`productId`); + +-- +-- Indexes for table `lists` +-- +ALTER TABLE `lists` + ADD PRIMARY KEY (`id`); + +-- +-- Indexes for table `products` +-- +ALTER TABLE `products` + ADD PRIMARY KEY (`id`), + ADD UNIQUE KEY `name` (`name`), + ADD KEY `storeTypeId` (`storeTypeId`); + +-- +-- Indexes for table `settings` +-- +ALTER TABLE `settings` + ADD PRIMARY KEY (`settingName`); + +-- +-- Indexes for table `storeTypes` +-- +ALTER TABLE `storeTypes` + ADD PRIMARY KEY (`id`), + ADD UNIQUE KEY `name` (`name`); + +-- +-- Indexes for table `units` +-- +ALTER TABLE `units` + ADD PRIMARY KEY (`id`); + +-- +-- AUTO_INCREMENT for dumped tables +-- + +-- +-- AUTO_INCREMENT for table `lists` +-- +ALTER TABLE `lists` + MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT for table `products` +-- +ALTER TABLE `products` + MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT for table `storeTypes` +-- +ALTER TABLE `storeTypes` + MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT for table `units` +-- +ALTER TABLE `units` + MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; + +-- +-- Constraints for dumped tables +-- + +-- +-- Constraints for table `listEntries` +-- +ALTER TABLE `listEntries` + ADD CONSTRAINT `listEntries_ibfk_1` FOREIGN KEY (`listId`) REFERENCES `lists` (`id`), + ADD CONSTRAINT `listEntries_ibfk_2` FOREIGN KEY (`productId`) REFERENCES `products` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + ADD CONSTRAINT `listEntries_ibfk_3` FOREIGN KEY (`unit`) REFERENCES `units` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; + +-- +-- Constraints for table `products` +-- +ALTER TABLE `products` + ADD CONSTRAINT `products_ibfk_1` FOREIGN KEY (`storeTypeId`) REFERENCES `storeTypes` (`id`); +COMMIT; + +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;