From 866e7f155278f049ec8234c9482a7fde9b92d8b8 Mon Sep 17 00:00:00 2001 From: gh0st Date: Fri, 17 Sep 2021 16:42:46 +0300 Subject: [PATCH] v0.4.2 --- README.md | 64 +++++++++---------- dist/python-redis-orm-0.4.2.tar.gz | Bin 0 -> 32532 bytes dist/python_redis_orm-0.4.2-py3-none-any.whl | Bin 0 -> 20764 bytes pyproject.toml | 2 +- 4 files changed, 33 insertions(+), 33 deletions(-) create mode 100644 dist/python-redis-orm-0.4.2.tar.gz create mode 100644 dist/python_redis_orm-0.4.2-py3-none-any.whl diff --git a/README.md b/README.md index af1c86d..2000046 100644 --- a/README.md +++ b/README.md @@ -682,7 +682,7 @@ def non_blocking_test(connection_pool, prefix): for i in range(data_count): test() - data_count = 1000 + data_count = 100 clean_db_after_test(connection_pool, prefix) nb_started_in = datetime.datetime.now() task(data_count, True) @@ -972,84 +972,83 @@ if __name__ == '__main__': STARTING TESTS Starting 1 test: basic test -result = True / 0.017128s +result = True / 0.017655s Starting 2 test: auto reg test -result = True / 0.00228s +result = True / 0.002688s Starting 3 test: no connection pool test -2021-09-17 12:42:32.542761 - RedisRoot: No connection_pool provided, trying default config... -result = True / 0.003301s +2021-09-17 13:33:42.915213 - RedisRoot: No connection_pool provided, trying default config... +result = True / 0.003571s Starting 4 test: choices test -result = True / 0.00103s +result = True / 0.001307s Starting 5 test: order test -result = True / 0.005032s +result = True / 0.005999s Starting 6 test: filter test -result = True / 0.016121s +result = True / 0.019395s Starting 7 test: functions like defaults test -result = True / 0.003091s +result = True / 0.003462s Starting 8 test: redis foreign key test -result = True / 0.005758s +result = True / 0.006697s Starting 9 test: update test -result = True / 0.003352s +result = True / 0.003751s Starting 10 test: delete test -result = True / 0.005884s +result = True / 0.006936s Starting 11 test: save consistency test -result = True / 6.009034s +result = True / 6.009583s Starting 12 test: meta ttl test -result = True / 6.010127s +result = True / 6.010543s Starting 13 test: use keys test -Keys usage gives +33.2% efficiency -result = True / 1.097656s +Keys usage gives +32.47% efficiency +result = True / 1.348907s Starting 14 test: list test -result = True / 0.002503s +result = True / 0.002379s Starting 15 test: dict test -result = True / 0.002373s +result = True / 0.002316s Starting 16 test: non blocking test -Non blocking gives +205.51% efficiency -result = True / 11.074569s +Non blocking gives +195.91% efficiency +result = True / 13.0517s Starting 17 test: foreign key test -result = True / 0.005522s +result = True / 0.00598s Starting 18 test: many to many test -result = True / 0.02759s +result = True / 0.033524s Starting 19 test: save override test -result = True / 0.003933s +result = True / 0.003881s Starting 20 test: performance test Performance test results on your machine: -Every test creates 1000 instances of TaskChallenge model, -So every test creates 6000 fields +Every test creates 1000 instances (6000 fields) of TaskChallenge model, Here is the results: -Configuration: use_keys = False, use_non_blocking = False took 33.766182s -Configuration: use_keys = False, use_non_blocking = True took 0.206961s -Configuration: use_keys = True, use_non_blocking = False took 26.006067s -Configuration: use_keys = True, use_non_blocking = True took 0.211069s +Configuration: use_keys = False, use_non_blocking = False took 40.92255s +Configuration: use_keys = False, use_non_blocking = True took 0.234719s +Configuration: use_keys = True, use_non_blocking = False took 31.373307s +Configuration: use_keys = True, use_non_blocking = True took 0.242484s -Best configuration: use_keys = False, use_non_blocking = True +The best configuration: use_keys = False, use_non_blocking = True -result = True / 60.491986s +result = True / 73.106303s SUCCESS! @@ -1076,5 +1075,6 @@ Test 19/20: SUCCESS (save override test) Test 20/20: SUCCESS (performance test) 20 / 20 tests ran successfully -All tests completed in 84.788676s +All tests completed in 99.646971s + ``` \ No newline at end of file diff --git a/dist/python-redis-orm-0.4.2.tar.gz b/dist/python-redis-orm-0.4.2.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..736dcf33d3a69f135dea6322e127d4a511428506 GIT binary patch literal 32532 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

9e3~ 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

oA=T0rmavPyT%G|>kIm*dkPr7=DPg~ z-%T|MiQVG)&H}CK zo>PN*x(`wbqog>elVv(AgD!d+sohy}klWZG2ko9f^6QKq@B_AgP_($*o&VVNm%j$r z{c!EvEV%b?!r!zFND3qPil|bZh<{(20PusK`~5-PL7*7WpsW#^ks6|SQ-e9565gFg zp{R7`vR;xv@LxyfPNP4zTByj(T0#fPIf90bit8kwtJpcLr(J8?yPCVYnind*Pax2lHjTer zDsMXCi-2d9+&a@Aj)Ag?R@mJ-ty;Zsqf66R&7w)A#gnm9Jbb8Y-_q2$sJZJfaXnnp z-QL<#wXOkVeq!(5Lov?Mbca+kcqe8HV88xG@5JGMlFJnBqz^#Rc zkYM!Wjh*ii+pzr&($oq6)N}S$=rYWWND=pKTrSAi=Z+6g1S?arr?0KzdXe59xV9CrsU3!C z>M~0#wPv!ulFXz^K2<{n#<&@;l7SpOk(^DzP=`8+`4@^B#}dtxr8L@(Dy&Rn0@b`t znOKn&C4E7{E_Z8DNOQhoN&L6xU`)s+U@U|ZEk9ZU+X5-4WLM7rTun1M4CK&5p;l0ZoEb#Clw0V#oAoHjs7tAMo-P7~yx zIWV-Gq`eX)C7MY3?R*VcyS#b@RP{)JaaXT6G-314w0$V!t+=-m@bnwKK(XKFKCf-YqhJiF0kdTksZWBOK z<|)(pLX7ymtFuh{b|@2lnY z$_6%X%eN=!ziq4#CIj9r3;X$NdfQ6IdJgW*oK2e_Bc7kW-@r%j5dPP~O6aPD!0^9E za?}Hx5z{eqsB7q4OuD1Ig1#{M>J_dRKs1U~EB!2QP0juMC~f|vM9iC!`&w03zr5SE zY00#Pm;2Jlv?lr+!}I#H7Qo zMUzQyaqx`RY45iWW~>8B5yG_JCtu-=HyP{rFXKfVk=7QyBb2*++9Uv`Zswnn%BlDN zfuGm^z>oi#hoV@LG19)N041vZGp+!4RDFF2RNjHNQv?R6G1ROjxGbt%O|nJN?8l0E2_8FVXPq zUx{slAUf%OVk@hhj_yAY*XA73RPObz4>sh_5N8zkz=j+(t-CYsG1RjHfm**F;sP3g z_n<6ggM#S}Ig~exmXgY{ow8^N&Dg}463uo*Sm=hL(wMF9< z^IbHV?8`w72|)jLgu@cH!S3UB8sod66$ENV+WQUi4RMIYG#)(u1d!X+At9Mz#y^Og zP+c~E+w`emOZ*4ojCtYyEEC+OK!(m3h+b=m`uiM9c7yHQxCj-^En@5FYpE&c#Ct(r`Lwf+#_Z~zRfG) zqyug%^Wze(={oiW2SM-6^!wdx^aVH

eT zFN5Z6Swx#AJWP^(9?=K8gAR@9zYNcT(5w3@Ad_(GFdw4(mvDUg++ts9!Lqff1<(r(r75WynUrn3FaSU|)eFHnRjYBU#}WNEM*nSQ7Q) ztiXbqK|?Y{cFM%tilWQoJOyG&7yCDc3dv$ZdDvFQ#nE5=kj~l?S#I8Nft$x_aA`Yj zUg1N7DIEE?Xj+h;t2cC?8+YS4C~FBR;+AAAB!3)<6PNFYoI}j*U3;8B42J~j+I`fo z!=KaJI2t1H7o*=sEjmq}?ZU4^GH#KE%o&ICI+W`o*BwIp?wNKAOjj)b?U|Hd_(PWz z3god=G9ml-Dg92Cv5#m;x5F*+m$~7_4P-3BkRtPYwE9fP_&2kRtgbJFxR5&4MnI0N zHF3g;!pxJ*-!ta<)8PiZczJd9Tb>g2U7;@lrIfXU9@!6VIg!!`=y?|K=qnCW)3i%- zwMunM4)9owf@N+uk9Q{okAJ`yTn+QT1y1vJ9JHF#04cL_jkuS75r_^nOP%E&(Hv_$ zd5AO!HZe3wWWTQA$^uAOMgye<E=1YS`83FAa-N1 zP$YZHYzlf5PGLZbQ0-EHf?*DVf}%ar!9v=$#yr?P5QxW1~tAed(Gk4pa&-?M;0MF#xyJPYhs|7 zw7w?dyGwauda_!FF3pI!x7~YALjo0#OqVz(xRfxUE^0TIZijzeut; z5+@ANb!9XCrcTtm=+?r$R7P1jrGVCzY;;X& z-?XDVj$PCBpfh|cU}fkoLo-@Bx_B)RdjE}(aqB%O%nP(}{qKFarwrg9@~Ln973}xq z;4gIJx3q~?Fz;+f4Rluf8Z1&6W4*$oqC+BGY>LT$o+4hb2gek_yIlo+(}e{w$q1%- zU`e<$=Lv>u1IxC4JcpghX|jpEv~dIiN;!#ei+kU#ZeI5oe_jgswm8?l-`WoN=wZA#_+T@D$?fL0gPZ%3bojJ-F0isGIxlJONfRXY(gc5wI zNR50^Sdu(M4pn3s1z{0T;Cr^~5Cq|hJoE{>ByjF`Gj)CG7+0h_-_B|v<<8UC+4%3p zT1}S_5Q{BMV8fKPyND^T7S44Rr6Drb&E#0eT=*tTvJ4EwW!Hds&_xeeRz*Y$UR>;& z#v(~DLyk}0ps9n=KCxTL0X|O5T)>M1fsapRLU)i0vRVuPrnrGvZ`oUO*S~j|@EC<5 z3QEQc2%dvRNP>yxDdDRQU4x#?wnh;&qk(nNFJ+v>d28sO-?AZ@8XaWQ`Qqz-HF|Y= zojtn9VockmVq{X9XzPk_`fCu2M-@s7y-oz4ZA-Xdrj^CHu*GvsDHg$y>3sZasHA|`&r8Q>o70vFASTD4Euar zdySVH2fE0JB>v9`yWW?F$j`rt-GV9Ex!)%v;9zZ9RB`^&^lSV;yr{6q!omX)9BDhK zqRTMsz`Jxn`DJZVpH%F^up~FZ3s0 zV{Hb>crshfz0`2LZR<-wdfAM@k31ia)V#Qbt*)c5dho1ZMcDx`U4Kz3o64i%^I5r^ zOLs=?PzWBjUifjr5MDB*iW2?W!bpP?o8p@iTNUZK7|7z{TSDv?uYE9#Oue6XO3Ju= z#RkdH;XssOo%7Z(@@3UfFyx!TAlE`BEL9kbUdQ`%YfkoLkF{*szA-0qw2sag@%RZohfs2fSG`Wo{sGB-S zMif&vyNoqt&GmGGjAq1sKZHd#oQX4=S6IEKqM2cUBCY8790Ef$QA%ATEg@ElNjn-v zfyzZXIUXLi*k3RbLp&j{O#T#0wBVFXS$HlHSPG0R)Axu%9tUk|i)RQiApS?Q`zty= zfx4XDik9=Vwsmy`;rSRiaTiuFtzNybO%S{^n3Z&-lS!bWoNS{^B#KF(rktG;ay7M9 z23``89-0Vr_z>gAExurkB@8QoEzi?)t+de=4Tr zlXi3^f6R<0OpbUlM@v0IeV=xx=?@o9)cv-ZV<)c8i)-B*Y4nxr=W@ugYHW*AZE%Xm z$~5A_{|fiK1u}S~sFs|cYpP4*aT@r93vq)^z>PKBK@EjrY1FRMSWCrmDX$uC{*v5P^jM@`Ju(X~{vi8p5EH_?@o_5w-~wVws>z zNnCaXBPw~NwzBPRYh5^WBelFGhh*WxfpUQ)uyq>?0@I%@h3`n_(3%R0G}W0o$ip7y zdo%O9Ljz3I)DePjQ`D@A=M36aX=*05$sCCS7T{XSA!O3_!6N{QD@C;>@S;0I+?zY1U_EQfw??OmnVAY@KXQG;7h%kB2}`(ms1& zgJTLV3z=Vfus)G3p;oyYGmVtu`dU z6pcG@+^PYJbM^@w4GI_GB>=+`UP>K(&Epw8&{v;s=9J#={hmFUYUZrTTk@z2te>#H zFv|ok`i09IfAjHJ9?x$xI+g+F_Xj0z8lYVNe*(jkQFpdg!fZ4icJ46G%@lp2}VXgU&^ zpfDdT7CN#Xe2OAtOdoq2S7_f#zUDISs@pZ9t#q)KbGhV(`HPk94*|2blxvHf5;=v? zrEsNAGznz-K;M(LHYD#al$3={-8UhatZwkBxvCkLY8fjXWU!4v`h0rPV((U|6Tz;S z)0y?2{F-gySvGp###K~XfENmzyQ6YvD1-kbtFt94W&(k$odf+b2Ds@Tnzh@lpY2EO zf6a7_-KWdz>q7;q;6KQOT|@Y;IGin%m+{K;_G0+RI+o}TT%~C`WDEO@eg*#}dlGzB z35Zam3skAZ5+Uxb-K~nv{4-}b?1~twv~@kp8TIo|OtD6kHvv8YctaA|UR1(;AH(N4Ix`wgCDOIr*Pyr#4`mU+v?gp<=u@X4^| zmrqv6X>`o4tf+Yh3o-mFV)iM4tz(K8X@`*Nd$Z1DOpK0$T*CUm5Nm8nzr*9 z6c`4a>xTU-m@PH39`jhqj12tI=f*yqEf^7rV5TdER zTH*}5zV+l=TCPSXtr~V2?DUl8C+BnaI6d7IAJi7YRM)t1dn4F0>KHWb%d{$gHNHU4 z23EQ4prbii^!R%DSKEdWp5a94AAqK)V_^FZu5Qzeu}^#Dv0dehC@X39@yoMVU9M&d zXXbJDl;=v0ay#BjZybnO0rw7tnF@>yKbJrVq89)nxVCJfW2mf4H^iV=jz^oGN5r@K z{;UwBBlA~#eG%AvCH+u|#0C)!e00z^s6uL{{&^L;^DJ)uQjb$|Y4Dq7Dv-%@(G$Q7z zqxjHKQK--Sv&4+9I!9y{;^P;teJs!FgG1MCcD`0Q1VnB zJC+3_HZw&NBCpNpTPqqEW|q7KRL@5g>Xnxlb{0jS`L@prOL@)8V<)eEj(1&sQY|e< z6pUhEb!^P>uR6OC!;2zr6Moz)@g>wv7GJd6O6M;|(lO`E&#m)@yIYy({&8kkEaBVm zD*}B<#hgIv>!jd_TSI~iY;gvEPjDY_w>HdNh z`L*>)viH~p@$}b~X89SJ2pYe28Nzeslx>Kw!J)%{D$qXwFDd4OMLHXQlZv|eZ&DH? zkKe}*Bf+oRJ%xqQxL86$+;O0xcE?hIMuqM%9LUt6}#n?LvG5+tFf3^9<#O{9=m1K9Gvh! zix8KU2NM|0B>5|m?Q(VRY$~mE%1vx^7q@9ukl#1gA5}R1nj5EFv_WJz&lo%b& zn3%|aZgoBC2OK=}znm2kn#MQZ(hPH78t8Qyb63R2xI%YhG!wBZ!-Uj|jdA9GtCL^W z-Wcz(uE477hXX>({Uf-sx$dxVd5|!G%HYl`bZSu=S_bMpN+cALyEIY_2yYiv+!o;SkH-i1^aECnR4qdTk?35WdDaf<_7Rxo3Co!= zY~98?>~`BRWL?D4MOZ{+~&!YpJW$E?aqZSiO_C zCIopx`>hB*V9?!f0M!2mBWrpI7u)}vRnWMuc273ZwMOw&9 ziK!b>>ERu8=`lb!U$l~)tMPFfP`TUM)BtEEJ(g{eLKv~gW#=e{fq#PiS#HFd>Fm%cIo_* zRD6ORG!i!%+~5a=>8`BQA5E%0XpKS0*WaTQCXRXB)9Q?)dMsNw-)9*ECt|lBE7suN zO%>mn19dE(HFrY!0C|dCB!J6$IryhHRcAabFqbn4Wr=2Kp$y~>xF^jyEu8!U#f9F` zqyd!@))Lkf$>!@+|MOU0^h>t5cWm3Ibs4W|Q+J{^NK#SZk0twN&b1#u)d1yNZIHgxB(!`!*0BM7kac$X!gbH#1+AlVBOlDquWq#lGEu;k;t3TW@Vx4%kbc2xFcw!q(48QuKqqwVT}I#{I0-9Ezg@M1^9CER-&EBlaRg8sGZaEGA<*HrPN|RFvAJA`% zYgO&6^fRq$AJalaQ1veIaav%LjZYCcGR(k}l4f8aW8579%2!i&U1}O4QiFCxt+CBU z&rbBb-mJQD{>b!j6lO$OS?;UMc7K1P`~1T!)YglPq_d)~z&%Y}WTV8UXw3(oIPV2=0H0Xl77f)3*$n|*?g}?kK<_BY1JpoHe zikh0&nvDE&@8vzo`J^a`8OBg|MLN|vmtk@xtNda-Wa_tBbQ%jb3cau4aaLzD$^UbewDi|xgDKhx2v8nf%@Ns)N&Gmo~ zt?gSN?%LP*QgDI|{A2OlgveL}Xy?E0_*`DUSQjDopjIPqws~^@@hqA@$@jAnbB8dz zE`D0T*t9;uzC+>4XJQ+ z>&p(?3908$i9Y;G!cqp=H_i_eS6u{ ztAdR7XRPF-@_wn>Y?3F{fnjp@C`$lEJ*^y+e#vXIX{So3x%IETbY;fqmRaiW{qW;C z>0K@IT~bsN~7F@gLaRigDpb8%^5gE)R{=+;yW6 zE&dey?_aOO8`9+$)DGPaw9k!{=Di|e(IWH+h3u-i>?l;l z**@W`t+=kGCs{&2M;`7tOO7d6V5j-Tc_C>FIgz$cCQ}t&*h;ehP}U+Z2EBC3roq^!#~;l0M-F4x)as!^u}!to7H)L4=sEXVB?|C{=^ zP*I@r{A4-j z6YMmy=q_Py60*-tX|g-Us4|2CtO)`4Bmd^109No7?YD`R&JNa2aDX6~tvj{4^4Yyn zD;(tyFy1{N40{AA8sP*+jNnFYmo&hk2joNxwpj#NbSsRxU3z|bYVP$|jqGjH?eota zM)l{L-|zW(-#CbWdOtS3>g(g42X$+GD$HKCpxi(k=Jm_~d$zFV?=fQ zTT=W@QjB(-NN-5?M6TSHGr~X>_n0ILk!@-m45CA}-$(@vp;aWL?GVWavacVBJ-_z9eWcHAe8)akMOBXVLjV1#v9H8maY?-!T5jx0yi^n-aH0@0G-dwt7U))v3o;m}TB z5j)3_>N8yYF#C-JM6yYAB~Cjq9`EV#`o1JV6VDvioS9_sDKyf$z!)tQs9&<$pqK?9 zXeM6KK{N31pow5qhB(Zxi#%{-615s@*gfB=_8HqO)x8-hG%nSllW%CH%u8DQ)I6lM z;*lgH*NvwLTYlc?uJq4}>&G$>;3dq1aT69DZ~1BXFoP^;RcPwOXKKSZKD~qT%(0)m zIH_t?nZ4``3HD*i!wNZn`wtK^@Uk2JJ>0RjqZ#3eGY6-O=UwVE4#&}+t}^XK=1XYh z0j=EN?h^^QL~wMxO_{mVxDj)KQi`_Ir7S5~J42@8D_{g0)$MF9nvDa;`m^ImM9$j~ zgr_{^mgx^O&Ki9ZJ;285BlO#T;+?vBV(+wLlX0@1XYrt9vogBgwUEBSuA*ZN+LoY$ zoH!!%+&5rF=c>$GEE3{cP^lP1{lsEs!=-N%84whH5G98fWdbJpckm7veG4D;ZB%_v z2eJ$v!4HZp>~W|KDY5eg0nQkhl|iCY6pH|bNhvh!Qxm{Ht#yDNh{*b{k|R1V9^@I} zj85{dSSREdwUp4TcwiaOQ$0p zICzRnIlNQ#kC({>1qXk-DFPnPK(tn+%L^fgR-po>C#ZFg2|RSI%2Tn##~#n~n)}2- zXHDN+Nu9lo2t$ZE`FCu3sU>^7xH=XrCzczScfCOau4epR=13T7-_`B)^5_0tOhG@q zsnwR~DE7et;e}V^wT7HGK_*=(EHWWwrVm@uTi7TFE2M1cKsD9iVC{&V*0T-HEG%$X zw5Nh_7f|YTF z4?rK@r>`m@u}`|;AnP_f3D=;=BtE${>0!HvaOOv%1vI(wII-&s5c6Ziv?z90pV}}5-+gf4 zD=G^RZuWR%KP1ugsMI3yaqx^*dY;lDM_+u^0cMI7BKBSf- zp?_jS+^}u-K+SHejXH*J!ZQ!?c@+0$E0Dpb?@}R4 zjWkPtvD_5Zy$y4YvMpkmi=k#*>39G|~!3@s@WqY~A zb0)qrqA_GFJ2NB%BWf0bof336(zKJamJ`ky^xQjo7GT$6F%S{y4AnDh`W9km9#qxp zHU}il7+hfztpfqWqLH`H_mI)`ju-r);$kjOmo$`oSypHr7ITHv5lCE)HN|tA5oCn8 zRLcb#RXEMF=THU(?32X3Lk|IX6dMt}^yv)>awV%#MkNp8b!4>^4~asEf^1aQ@KMP0 zH?-_?CqM|H2;wzOw`sCF>D#y`?YrSxU%i(r`s6=bPnYyK*OCTr^@-INi2>j7Iwad9 zZ-um1)abaQkyge6&oRle&#{wJjMg5w%?MBoJ0S{?kkJCeLyuXK%8?yHzbp#|#@UAP z6b(*qYD7#2+m^2^NoUa`)OpM?5dm~Kp#{s8mLcq}0UrrUQuj<#=v!WCJ58_dzuNIi zX^r^2wQDoe(?RGYe9~9dwy(e*db>JJnO{Uf(_OU6HR>xu z1#S}wX%^fM6OqRaE^-at-HQ-!H1(oio>Jt<3KFh)sPT=Fi}#n5CmZA^AMYVY0UtDY zik89cd=u(g$vLO({gr`**283tjPTd-v9V+-6`A7XCd2uOFeoDMa^pbg;#Urcjq?^O z#CO$L9%O{L_`HC_UFwRhRdHq4QAV#dwE#ir{-G0S)nQy> zz+bM!jxR=@hzA9g?orh`=sZ=}YGjlcq98m-klX8`8-=si6>f-z_$u#Jm$mf#nGxn> z*`i3p(ihuv34oU!zE4O z;rAD`*8(#Kv|*>o!#M-xmPs{~3+5OQg?%dRYp^YBAXo_A$D1y(Lim1w8ADn_~-^rsnsFXE-gwdwj#41^imEw}HrFq2u` zkV2>ie(@Afpg=Sex)j0duh@I0UJ-fR7G!U%GV{KovxSox9Y#xJ?oml)RuGpJw4pO| z=mm(YaeIC)17y0Q(9?U93MT)ouOrAQy0#?sb7VY^gh^@gQU*E|_c30x5i$8@INkZc zMI6snlD38hy%lCv7bsdpH5vTadgQS#=<|bcU6WY+gZmtWwf{m(^7n-YPC6ETAO6yn=+dpTsbdC zReb5HvX6?8g{shG_LK)JaIZ*8C(TTH=TNcAoP>3<1x4l>}B62R3AL(?$en0W9q#*e@;IEgIDoAosbjx_|F0lP#($0x$~bx z(M|{Ns>u|@u<0l~kaTw2VPj>N?q+6}O>!HtoNnGrIRF8yuXe0FV;Y<%r4Cg2qhFpF z6Mb&%VmnzG3N5ykSJ4i{q$#+NLsZyAmNzx}&bgIx>Lv>BF@oHe*0q!Cbw!W}DXI&C zPy5Ydz6Y$7ULExuxFxpf(ApQD0|U-=ucNxUHMhJK@@t}g3r&l9%0&<{PX?P)fmk!F z?h-W)q&=c%iApkmPw#MiTMhj^NWqIA?D=IXE*pwFy<{CEr(g+Oq z9@ywyAjRueB=4fY>_LH*Z&|Z+;}p2EiR^uV3E63tmsyDl~gf|ExJ`Uykg8)m#Mxva+&=1K5(G`1b)} zInNzI-i;^SH7Qzhv_2l{Y6^*xsJt{i(fdfC!$TiX2e10Gs->N3QZ2yK11p|YjT@|8 z5M^SmIAWaftM-&t^$G#M8c}GE+);N*nu2?%{P{cV6W@a*36%KZPYL^`b0+)%VI8a= zuruYu{R9F9LbyUUos%|~@MpJ~8&WD!|aK420kWU~5S}i1TEeI{14mh2% z(SCVbq~->B`TS+TqM6SPC_Icmj9>_imD}AM?B`J2JE2k=wzeV_jju{cvwPu5VVx#k zz_xcBEJIWVAz}Qox|KbuYJRXWH=8rU*7!~R18&E0vm5TgZa_aZB0JXgD(T!m{DIzC zdC^0lY3-nD;tcQio!^8=uuh-xN9@cGmHrH{IqQSWIa}??5#{|H?q=%XE8qdhLRuse zC6Nr1A&AnW^W`!!-SYCVd4E)DhKCF?I@pINyb!k|knK6bsm9pjEHU{y4R&Jo1#p9Z zGlG``CsF8a8MhbtdJCQsJKDcYxEud;7j_$-5CT1jO#F z1h)HmSZ~PEuxDn4jh#$uV~deNVCN@6|H?Plnco&agCG*!f(|5#rKwdxk9AEMwdpJrK6UWp=C4VAFLz9$KA&;Q9z_>5^VdAv7j%U+c15nTleqCDuu z?Q6p7b3rxWbV1^w(r=l1b#aKzm`4_1LxQ!82D%3r>%4_oUvyI}%y$eI4CoV*u^cAY zNZO>~{3Q2}*DP(D?mlg*s{0~UyZm8Ed5y_*ku9jYY}DEkKLuFkO ztGrZTm9^Xx%xYIpXJ~ofo-0n?uZUp*n;=~|8gaD*{4tbwd#$f5AK`m=NLd zx%>T}IRdWU*cuoT008R*0FeA|If9F+vx_smnX8SB{{OxH-$((^-+pWC`4{jGzXl32 zs-j3+exU_|op36i-74F(uG?-2E+|cr%`9p~iYCqq>ar7twjN;kX|7K~twu9E|BrfN z&*JvR{*Y8Sk^t`LeuWz7Gi!FST3t+%M@*Ap zEFwJ&Q$C8zk1HBnP{${}P;%FTX)5k;Li&zDqL%~99o$h#pi{6)x0h*z#3h0x=MC$n z=?zo7b}%u&WS1~cEVJAB89HbjVfYOcf%gOYIpMKc{)T_&^JE->fWNcZ`*zU#_V+0m z!T&kBo8SL+L44<0+kV&YYTUlR`J|x@m9hnkvwW@2)ei+iv3l<9A8g#AL4Y>03r6fA zC>Ui#1Pgql$ZQ|?Tp>9}HaQZA-O&h;S+++oFY zO2kdEM}#muk*Ph;ELv@2HkqKyIxzH?WyUj&N(bx^;ozO!#MW*wz4v^#=oJxa!p#jT zLD8ECvBR8v{4IXqGDBj#+>v08Cuc716v+AeKEnrKPRm%SRh=m_ITc8Oo^ryA1&?6A zgwU!ww#X9m1^>-3>Ji=Y)O=}~7=$9CCz*rOZ8PH8X_MP@W62 zqhZ1-5V8;}dMoKtGk`L{(IM)EJtK2?wIh8HLC!w<@Q!uXs+ z66i2doZGiKc|UJhA1t{c0G;(E-@6zPUd5lrl^)|k1(bT|a14z%eVjAGn8@t8!8xKi zMHP*QQFz4wYj&PVAjcRb4yhrCY79j_M1k+UC%n^yneh|^+2hYr08BNg#Dea(gDk+1 zWC)p}%m}!}rS-8x^0kcpmZW|fhY%*XcjF!{?=wcuZQe_}@2I0TM#iFP+!fd|W&P8O zy3S;Hjt0u$%7qd54Z(@SVSccAOy?%YN5EW$Sv;b zF^!t~u8EjZ42Bm(&08)XFRAH^5q1KA-unQuk+$~T+-MA_iWAFEf8%X?@uO!#C}rxD zs>tXSzi{yu4=qoTp66|Kp50UxE(0vi)Px~0H!*Ou7gt1rjQw?RVr%(ri1B6q((*fu2@EEqV><%(yidJHK@H; z`l|Y8rxz2=uGJAAS76QMN>8PxzHkwfIe1vlzqp_k z3PGh2>2VZSi!ocAPvR&K3%f<%Q7F|g`JGd#9~A{MgTl5mfk6HsAsTYH=If}uZA33gTmgs7}Ys}vHiiuK`L6Y*i>F{Wt3 z4qYsN?XgW|zF2w*w=lsBo5=#EOmJJD*`CMW@YsA(D+Y6)A1w#r@<>i%tS?>f;Y z6xiw4*JQN-byA;KC}|&wsInQJNnlDH^A_ttiROo*gb>Se-Xx8wB1Qo&WxseOPouJ_ z9Mv4iH#%+MsR|q;IjtXbyJ;x|Q(76==U|wwE=(j+Z@O()hsa6b>a8k^mUjA1&bcTD zjj|JzkRIR45^9G-XsJquwQQ2MU$HB*RuvyhPlWZ-_Sf~7Y%(}?6Q&vkVK(xLH(`J1Dwd)7_%)lBnHo-L ztu}&MnTG3%hM#*@hXFaGESX4zSmZ#}@-%91iO^)rI!Nc5K)G;#x*QW{Gk=hanR1UF zUfG!G%pL?^`}`Q}vtHjmV0RdhyxX<0y4Bc}{?o7empfNl^A8zzfr531wk^X*gTBz7 z-ML5*$};nhBK{jAVx-tp1U1w3R5PF>X5kxgc7i9 z8TpV$Q$kG}vqWgjg`W#gHFKRzl%=-gHMO!=GwULJI!6@Z3>8cojJF@iFUyFmf&@mT zI#-B==E*jq9OHP3LS&N@ZgB|&EvCv|V4jt?hL)j_xd@~>(k0Izq+~m+5?OMcxk=}W zw2UbutL}(kjTj<8A#YkmhWcX@ffeLmC@I`J-Ox6hUDP6-q*%eS|Fy*oyf`f{k>!tg z-@<8J)x|;@Ofwame6yMq%{!-kJ?9_h#t7dAsW zrIMP{b6J?S{ZY25Y)28z%pX#L<6@Q(WssGPN=_{!$5H`9&HkR%C#bz@-`5Oh`&q9y6YnC(Zr)awb5)&0X;sXH+{2Rb~!#a__F^r!p(Zs-OI4PVyQ0qpHYa zQ_-lQ4*!u7L?V;T7HN%2ap`UqdIR?eoWwi24>G&%0=>ufCW=ln=vOa8!f&_EzdLr< zl7zx_^Lz&0r*Mb(Ji*DwUUi4!+zagR&rUh7g8ZxLrcIYTKxwC4sO_?^Ra8Gj_mc0u ztFwzhusWCl9~VNgR~Z2fd;F)L&I124f1k)u4kidCf0Wr4n>uP@H1F-^*j2wPVn?Es zb)Jq}h81=2&jymUumNp$6;ToTw#eROa%qMuRpGPf(d_F}+CKW2RT8?q;u0G`cNfM(gaC09Pz%E7;;CbH_ReHodmF}-^ImCJXAhh=3}+v3kJuhD(X z-8E$-->dJ#Nh$ziryKgA=GQ4 zsL!LWho_CEF8is`VpD2`EszQv+i(GILCZ`G3aRymk+pVzM>N#xvYI{U;77GJE}b=) zDDT~g{-H6gV4T3ed2I*!GR95l=!T<tqwg0No(T;C0*{NIQTvyjwyIcYLX_ws-aU zxVhq`mgsmi-IJe&&}}%inPH~0hc9&RrC=EO9eSelImz^X*{^H{t%K0$*dkVB-4HS* zD&4In_hXl9uOWefPZX}k=qs8gr@d~SxSLTPYPg+)3oKIOErUSL)Yr{(sR@@{4{Uu7 zPgFKSRE5@sbBlncdc+=95Ftlvq+RNgF^;9=8K^8&+)f}nygVX%@jbNSt0%y86$v|* zN(<;El;eFOb*!%&`}ZT%v4!H3p$pTM9%5J~@zYR-7-ElET^AU;PodQlEj~(D-!O5F z-&C#`E5F2gm$N|6hNB`wI;X`FH7|e1e)n9!cS!N)|KSrStO_izC*)%F5=O}lW2v%g zuzvVnLDm-vredrvioD!c8mvtXo%wn_?O@Bo!flp*Vmm(`tm>=9gzgrbs&%X-glOpf z6ObqnaxEw5#7n3+gq&S_+7;id3!WSDj`eoNXzEkyOJe<+o`1g3WjS)N#QChzL!oRx zlx-&Z8qZ!aByL(J<;WeHX& z>qB$8E6M4O*6D^EY$8IH>?7Hd9*s);$4{RmMy4eQYs9M3`!E>+?mMV@s6h0=$}>s} z=lH8~laju}y2Wrdf2^|Zi%Ln4^;I(tY3g-kx~XtJ%6jDTO_>>K5wc~@*QR&Zu)kIT zS&8*#(TeakakR%8wv2_+f+1`3at_WEBVe}(liJ80Q?e%W740wsd*a0Y^Lcr^8kg)} zA)ckpymeo;*dB%>(&%ykPoL}kRm7LGOcFMy{NIWU+kHnl!sFc0CD7B3;9|ldZZ*hP zLpdg6+sx7ObCq;hj!!>#f4ym5rRApO%`mNL>h5EwS7o=3$wy+R(IoacG7GXZUl~72 za?uT>)1Gz9a16Ut$Z^4u*S7s)w_NVv{^Vb{`^tWcoT>7-0k+lC`kVcvTsQ9-oxOEyu_ z!BcX)(f6gt(?oZSFsBTCAkNhtnU)Wfcu-OD7v)^nTzb(|Q7Z|RQfy2?EB;#HV-GNz zn3KMgXUUA@>h^ZeyW#bD!r$!f?{3%jLNWxM&+R)t>qOWhtB|xBqI$m>U;6Kdy9x^UqIcuVv$ew{5{TbaKe zb-Ul*-f+FkFWgPGWS`aYbUfY-f4<^M&ZHc`t*hQisb9C-FX6AZVJuCR!bhB1Vo zZA{DsVnSkkTEuG%QmtLE%Y~wWy2EeM9%Y<4lELZzaoI)dZZ8m>!eXC1d_JTI{R=6C z*3d|{!WjAG6CwE(;r?ua9mWi|o69g=jm}>#X5wFUS;fKpo6sDvHw*$lb`_rtpCkLadok@ zasJOcX;s^@I$}WdrGFv_>(K~HK%hJ})O>OECj>3rJc?zD!X@prrF?(In{+aIU+kK9 zB^+GL%w#r?LsKu~3tWDQ2?g=wS_|{DSven?)Z*uRlaEA0g`kPs)}6K3h*p5B6Qoq_ zH`<^(m5)adNUtHZ8Q9} zmVq;)!bD$HA;*=+>noXKRD!X+3*nYEzJoq(t=X zS#5sqM9$gvFSC+ zBNg}au$%FurckW%=zyG6di)UzgnjLYH92KE&QcMR8~B6IJ|OU4V=FdblQ`*cvh6s;mQ-Mr?kUh}hX2*v8P z5X}Bv_)UGfm-Mq_aEs~%kC#LIMb}~R;oL^|8mA~@opeq0*kGPj%zNUT zKXnsv?oS_qtD6L`^*r0(`vAhEgLZB$u`Jm@6lC9l+*pTM2g^>uLX8g2x~*3!<*o?b>$SX53~R98vgev<*wKR)Hw;jl8bsqX4%SB7C!3t2pl z>WGmv%maooYDS^|`v%x{O;TdQ{q@s5UB_a=#u(iGkTOom-3#x!5XNC`dwA(+iJikG zp3kSVwMb6t=<9iiYS9E@Y@2mgO^2@7heW=P>{E0Xfg&L$PUAb zd;I{w%0h`M&VkK!d~ZiU_iW+N6}suYwvG)|=sNRm5vBlvyuG#S(E*bisOc&^eM6DD zy6lU)0aWq68XOIm%MF1Ui%@JEK?=mp^4&>>VSl}ge=Qrduk1%4F5&%x8B{~=;8MG@ z)SsD@JKMecK^M4+{Cb1ia9+uA%~VLLzXQ4ZWC2S>qm_T?_m&+t@g13lZD;+U(&=*Z z#u+Ut{`tsJP?0H6JKQRp)h~lmA@u0I_Ie|9fz95MCiH&m!Vx>;b@r1%HTOIg3}f+n z88qwg!EsZ2(%p4yXl|!1Y`X3EZC{dz`xZbDQ0vXn>6rAze>rSoI9iw_-D?;XTv4F% zAWHKFY*sV$N)s46Pu;m1fD(n~1>*!&vp$5NNQ1o3FFjffT@po-n4Y<>fhw9+i&5ke z#t94)ncqASDyBvoh-$ABq&|}7oLYA`c}k4pl|8bcbRMLUt^^dEL`A#kI)<8Jt@<~r zI1uasy-4Fv$^j?+6Ubj9xHlNS0R-7?=sBhmYDgYZ?`*N^-!T6}#u5*%+jvU< z$yfP5kpI8PSY1L?R0d{FLUv{WPMY@5?DSl-62mg{zLWfnG_4fPBz=<-<%B#fRTXID zWu^nz$yxfj7y1==3VP|O3ArX!3TkSZQz&T}$cifV)#=Gu=_UE8suR%vtm{kk?t-NF z{MYe!NC5z-{$E}tE2<(WBB&zxUw_}8WYTf(o%+MgFkzd7itmZokZWV<=3{kNT}?|L zS#%$6vW%tu7?zhgB@G>vLoNtYB7pEcso#;&=ool7y}#gFyz+9*<@G5+xb~)pD+6L% zX-RcOb>;bToF#v01jjp4{TD3Oh#%IgWXB>^&x3iBjr6gjz10<(6k~XdGRHPIkM*d;4@u0vy@Lm2Y!Yzdc^Yql2(tTFE?%0yL?#ex zOywRsxKa?lnc=D?%nR3>k%mtPAiPWr7X&uyFDPb?&x4%8{N)_T+)H+r!|SU89YetKZ^ zZ^=Lei^H5iW-I`WOFSYyTz+!+odU-&q|76BCzkPrZESrHv)I}IH`LjG1YErX z*v}t0Ep?dy;%FT%dKC#Q1?LDu-^SO^YNP5`M8tLy*~e$kZo>wU4FY zg_eyQsDnc1avm!xFfjo_NXmLKHwoefOL-Co5CodAKpx6W#Evk7h}*fbMG0GcKqc~N zzbutrLk;`kheKlK+dDPK_iX~8R=I@C36eEA%9Q6Zpf{+I-j)a1-`;{R$ni;MArK^F zP|~h0bA)d&NYtbmR;iOIb1EHc{|G%s$bGqk1N}gXXI!wDqKt$O8sNq$2F7F+9p{73 zGXRVO15RYW^%-4ZGrk%Z202K95~6tszEazReawGSl2CC38(oy1jBj(`1&T0>FjQcq zgH3$U^#JAzL2$ahhvJS#Malwj=HzO`n1unT2~b^Jhj$)8JAsL_lq|naKtKSa6Jk9N z10hx{8Fc45TL)GLhNitQMKth^6(9m+;~asJXvI_>CSrDwr$oTV zaDlx50eJ=_rpI(&)(ky*Gf}KYGeRL;g#gDLGRpad2EbuBa&k$$5$awOQ;t*mZq&vL zl#TPz<0|xy*Pca7AX9XqaUKq2OjKspH>L%4m-L~T0~Ql31*KK@D2)FBxTP*1ug^zt zocu2{rehdWC_TFLPXv4HLG%i!4&FO+6_@nU3Z^eQ1ZUt2_E9Q?>}n7K&VzKC8GNq} zQy%N-KI#4+2785&GQT@?TgH)!^06@yZ}@{J%8_3j3rF;LF!BbI#LvS~+~9I1-VFN? z%t|qf$&ou%ijb2z;M4PStjYqnLiE6*vmCWjZKwcomqXezD9+cieV)Su>NMGT8}jIY zGupBNhrlEL+*JkapU`j+*p{SfDpGa^`h=LJ7A_tRnD4~P3#d1O>TC(HaZi~GTvXyb z)lNDU6OS_}k|7KD=jBC48ct7iO~s4=6Fz+?z{WO;(pxonr8+V815je5VJ5DI1KBy5#jO)1Khpg z@mH&3uoORv%&sHOG&G*0jMh+eE)AVAsmmdlB%N`HMTq)69^zCGGZ2AYoMd)qbYp@A zDp^cO2Soz8VI*m6n3_;NB7{OA*moK{BXaul1vcY&(;dvC@Nt4zPmY6?%KU_S^n^X} z8ey7dfDKm6R|2Wtms-}_JWelf?2ssfStHWMP!;Qg<{)}77Z&DNHnN;>o)I8d&NJiF z>1NJT0?cW&k=qTo(_N?m@b$hR-&GnRpC2f6hnEw&5n`EBZ;lYs89vO<}0 z!f-#i*Ki;Ty{Kmh(l;&+?M}(~R4^1)#9($R6gnRmw<1ja4!5#0GXzH9q$X>k zSfM1AO2+PxvjiObHNHqR3*tWqJ+<&0#dXr)`j{+A7M7;y&4<0nnYNa*S|*onmH{R$ z6M7~eF{N0{!2x5NQAKvLjH3tu2QtyFL^eWzB8t|9*HbF3Ep;3wAK!@d_j?027UELn zE($Amut%5uJ6PSm>SK>_S*Ns(3EfWLrc3d1K-mPt9J{0 z1)@mDb{|o#>X>g02>}_C1QuVOYAi8h?X$+C2f=K?*>&bj>l^?lS5w5SOhVmBb^jzg z4wCI;lLQ{dR!BW6%;`|zqEg#qzR3?IBkoLlqWP*ALR^x!*fkuss=9;Y#6-Wk!>Emw7}+-FT*;1~>>X_2fiP)=gG#|W!1h(QVBzoz zJRpUp#atH%2Wi^o__J-R1G*BX7!V4&z*vtaMW&V}fPm;mRpfIGNv=0%N+)ku%wUXsTm$Ma^+W@^FAkj)yF?Oz|*>C>BPv z-V1V-SQH?gpzs!O0;)l}Ac)*oDro9*D$00VA({}8858bIg6Y2s+^6_cO^@Ht_mRym zuixk8@pe8b&;PqIm;ZgOPw;ivj4`KuJ^M0yv+LKcX;u+KS|IZ`{q=^m5Bj^nX*$$8 zW<93L2(g|C;(6l|L9Ga!nPP=nPUVR5RVCD4bj}UO6q2#7juwcqt(}cO96J#>* z#7b&Q0NOgEJ*I?V%SlpH1@0#&>|H8@U5|0(pLBRsCo|0gq!0`$dvOI<{G7ld$|};~ zT?QHOAkhusE@%Zq%f|euan2zjw|(lkx5K!@a!q6AgCCR(T*WxV$6mhnJ5zql0_qg& zka(-@ewAd%m35Mnt6#!ff8X!tXMbJ)&mZ=+e)=^fN{1@WuFH(UZwkQo&ByDl|MyS( z?eF(T{P8z`&+q5eZ!koE@6XY5yIc>D##cRMT8v-92w253q|fim2g2P`etm!E56JIh z_7#8M@64w^(ON&r?Jrbz{V#X;g7)R4EROZc#c zQQgGo`VR^9Y>sH|C=i`qoju-FXsPJC-lV7i>f$S?1}+^$0oYgp>~OWjgD^4>9XnX& zp@K5=Ru|141hfgIW7b@QBMbuw`a-vuulo$}a1MltC+1+m$1`PuFVoXr6to=9mQ6~d zOQXlg3^|I;E<>#W09{+-M{f>am=JOlOU=87A>XW-D^@G#5*T#X zPe7K`lx6LhB2Ejp)L&I)u4-f>(VTHf8RwC}#w?|J444QIyP)RP8eOV2u2ESUTMRkF zdFQMdWa|~aSN5|gt3nKqYTkxX8X#v!Xcd(n;p)8*Co%Vw8j7DFQ7NY9qdyf9kdiIa zjgqXa^_am!jh|onSqm*_zZ%F?<5 z5hs6m_4er~6Dn(v2bCPdDj3g$%<5RO=Yc;9$iKKQx4&t^*4&S8WLzRH4I7sS7~ zm-JV%tuap!B+d0?@Tpzn(}_MkKxi4-BjY_oWlAcBP}nDiFqrbv;+s4ME6EA`!Ht0i zC$?281vi-&g6kw1&4N6LgB25D5OQwophAaJ^SBW=K@j9QDLY2Kq1!_*Eof;7*55%h2i9q5ybI#!qxT7jBIEdMcmPD z1?o+2FZVGhNGxj0%m;@^7gAQ8_3b8dr|)(kYYlt*P6odWXs!c9w9I{VGPBCx%;!*3(Fk zT>yl6$-lc<*Ub$V;kYwu<>fm5ldT(T$t}qge1{2cy##e0M)?6%Q$DDfbJ*ccIH6oXs10V7UZ4Wn%nwsgti9fA||V`10RAHgD%=yE@s_D zl-xY4dgn#YRU5g~Tb{~j9;l^Ey1WMd&`j*K+JF?xR3(fJl#kAZ0B-zeGr}Gx!ED~m zH0`Szk!H6~n+X9jv)$!WoKvEwd2+ouM;eXBRc;pO#x2k`9KtfX9qmu+=?waD5*7dB zsQYCnHCA{T-}L`!wXP4>^}GMZ z24pF|F>pVw`&zII&Q9*@Ty@mUn*zn5OjK4}6aoyfe-sL8#Oq@d7D)Q*+5N|Afo&oX z4Q29XGsoceIN0OHy2B&L?p{x1d;ArFKKQGMHf>wvnQEI`LE7ZVDH1;EdrUUTrF#SM z{3_6+ea2Fjd!^w96+O|KE4VRVmypAs0I?{(D$)Zz-SeujJ=>y}$A z-D-i#pbtLEe-f|L3+^p}NM7+G3FJQ!VPJP>6ubGlSCR0}byaE?V=eD0VC2c`$-;%- z&#TM`O>gHkM}!SbREQe;UFf}LE#+Wm_y_Al&zR;ESScXK%{kW$SScA0He04W!Ij~! z#P@;LFoRt3a3GX!EwAkY$B=vKhg$QFQGDT{cY0>CzW7t#`Y~}^o0aECxaN}MT+*gV zN0Ii52qdRo(N{roZ1B8kQ;cp4y|?qOC69LXlt?9VIc?#5-?XVr>T<@uQ*!`%*~@7E zfg#K@6Snmsd>G`i)4yP`l@&}ZFI=dGL6g6+`9g~*qJpy)z(Fp9jQf61dpRJ^$N5Kh znudIu?un3iB|a|j5}&pSx&llhQMSyDSqToX5WGuEf=m%N+B2<+pYLwqK({x;BGF%} z17)aO<9YZKNA#xxkc%i6v&B)zBuHia(Z$BL{lbV>oSW)}-ErV%n8B9nbM_uVbDK50 z8&v{^AA7v$1~)pp#CT*BLZq#CpQz2$UuCBAJeCH{Y*fQg=W0KEktNQd+~C}2gKU6& zLatz(a%j6&K# z@cFEmCaV@_Nl&0TpqnEo@{SnRp9~1tiQgP$yBZr+yN2B z_N`KdzT@Ur!&kw7q`JCX=W~Zq0`4ORF$C0u2*EKsK5py_!g<1y#Efm2U7*2sS`Sf;# zJDhjiIJl%T23gj?$@(id8&~DhLAKbb1u4^-=1)b#eOJAE#gN=a#PaNx&daaf`uJp} zdR+6Ue7!jZ12148CbwI#f1v!}x%(Agh_vgMG#x^6L z*;;Z{N!Zl&D~=nPYz?Yj^3FeaZXA(FTo{{6EZ`Sof@3IzGkOHep_K$7PKpE483CakAl2o3i^wej=v-cYB$~vBB(?6J<{qAe?(vN&5@hu&LyRcZYsoD zOP18+Ok*f33b9{WgejU1!W+{HO;{!-skN&Y$xv9-fbT*u|aB5FcMy)oGyO$#4xbtt0I*tkR6>ss0mu@qQjJy=?gLVRd0ez?)l zKV*VKUn_X_Equ{(QCb^dKaXAd|w3%DaKlwS^!6s z_D*tss-Ql$lOTiKZ_Qg5%TQ&iLp1UeajunJykrA zZ7%8pmZvC6JdlhuL#ejPYfM$_^^wF06=i$`h%s&++VZsq=vZLv_4(+&DfUPODwCmR6; za&-OXUA;5IC*E9u94tUaHJMLyQ_fpP9yrZ@O!HMPT6nz9PQ>60V5UldcJ@OrpnsiN zS#e+1VqiQ9!g*I=ok{19@*ug(p~DVd8{{=k!rr3!jz8W;WU)Bv(gBc3wLnG(1GF4X z_w}L5rz}StJ6c2ddO9v_A}Gyd76 zE@_wALYY9!&G@_4(ni)z%Lj5~8ySaiqnZX_pr7NFt6ApvDh-AxoGLr!n*(_P)7OtH z^2W7r{2-kwD@Z9|hp!~b8;QYlB~?$VkCrS)B`?dY!By5~oUKVtuZb7MB725pSq1_2iotGy(N} z6NhTEdxCx~GZanGCDA*LTwX-#ZEa7Zc1!$p1 zN;1h`R?Z6)vBD^{wHdCPRaJX*&VA8NvoOm*XOAI-+n2tqxI`|CM!q_CU4On|(4W#| z{AATc8m?8VS*A8;j$+O0qE~2AqD+*%hQ_kHx1GajB&1#lrm*ant>xhdF@}cqW<=Pz;c>ef>S(ot{WWN27I1 zHNF0Ju>x)ic)Mxe0Q;4Vya-k;tsW61G=}Ci-533-)sgo)yu#Fkx>W2fi(c|-kZyp0 zlbO*y^swvN+WKlIua$MaJ@eTYhThWIYow!)OK6cBkwzd1dXNMl!52*`Q)t{G2srx$ zA`IOdNlUf96P3*V#a156DcttOqA9Jp_px}tRlRwr@unOv6EGTqXwJmV*3KBs?*$KA zA-?4%){C%MN+c)Mj;{IoRNI7Kfum&nE;JyJ(sV&=kfR=DE)J6=&S1YlbeV_I`~THlmtK1hM_e?sCeL2R5V0RwHMK zAiF&zo+xvnRE#OPSq(!|`LN8(98>7~KDhv#$P1rXSr5}dW|odVUa!_qNw49Ou0kML zWvoWjQSzNIsfFWjc7Dp>H8Z=lwCDEK+gmwP5*HlIyccw|KIGaA)<$C0V|c?ul)A zV;u7_VikY*tWA1b`D({>SaSQ2Z%~jR)7$hq8Y7ENlWyB>$Zk@@pX_-FsB-*=>OoHWu&|%{T8f50FIULs9DYkEknj zZqYb=>GW6xP*2L)*En9LvNB*-@8@OfFlmsvrDNej6|W*>U%`5VrsX+`qw4KR`py`# z1MT{y<}NV~%Z4MgSiiicw~&=DG26gw#xra@QCj2!zMzh05cbmR?sa9d>63WVNa|jf zH)R93q5g3c`o9OOOsO)08Prr%xhIYQ@b8Q;O|CYn(r7~e7@jr>w2IdzE2tUL`**3v4jbf$w3(L~pdMOPEp;ga*@ZTOrmTF-aJtl&Tes)mC9Mrb z`)((Bt_3X?aJ5Lghvu|PW=49;k5v|np5UqKv)y!*#i(6h3E zv9gHC_<#&M7OMV>mZGj#1>9nVrYW>Wdek%=RR1}N?&Ns?`4oo#`T75H=}wbQ=hFR) zLq$~>uJV78{yU}aH0AWIwBMBHCt-Jg+0S3^sGSC$7PNi?`%cF3e*ykm*E)?k?a2Jb zBwqb1=06!Tr>K8X7XF7yZFc={Q2!|~oMxUD4t_Jg{~hMP^@G#c(?#Gn7ODR?w)(G< WV5E1J?$00TPhR**HHk6&bM;?9c_b|W literal 0 HcmV?d00001 diff --git a/pyproject.toml b/pyproject.toml index 61ce23c..c792475 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "python-redis-orm" -version = "0.4.1" +version = "0.4.2" description = "Python Redis ORM library that gives redis easy-to-use objects with fields and speeds a development up, inspired by Django ORM" authors = ["Anton Nechaev "] readme = "README.md"