From a5e7f5251671b996223bda73bcbd35dfb4798b76 Mon Sep 17 00:00:00 2001 From: Stepan Date: Thu, 12 Dec 2024 11:18:40 +0400 Subject: [PATCH] =?UTF-8?q?=D0=A7=D1=82=D0=BE-=D1=82=D0=BE=20=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D0=B8=D0=B7=D0=BE=D1=88=D0=BB=D0=BE,=20=D0=BD=D0=BE=20?= =?UTF-8?q?=D1=87=D1=82=D0=BE=20=D0=BD=D0=B5=20=D0=BF=D0=BE=D0=BD=D1=8F?= =?UTF-8?q?=D1=82=D0=BD=D0=BE)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 544 -> 4736 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 442 -> 2781 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 721 -> 6646 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 1031 -> 12060 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 1443 -> 16905 bytes assets/cover.png | Bin 0 -> 24177 bytes assets/ic_launcher.png | Bin 0 -> 18819 bytes assets/play_store_512.png | Bin 0 -> 23859 bytes assets/svg/ru.svg | 1 + assets/svg/uk.svg | 2 + lib/components/utils/debounce.dart | 14 +- lib/data/mappers/characters_mapper.dart | 10 +- lib/data/repositories/api_interface.dart | 5 +- .../repositories/characters_repository.dart | 10 +- lib/data/repositories/mock_repository.dart | 27 +- lib/domain/models/card.dart | 14 +- lib/main.dart | 15 +- .../details_page/details_page.dart | 11 +- lib/presentation/home_page/bloc/bloc.dart | 14 +- lib/presentation/home_page/bloc/events.dart | 7 +- lib/presentation/home_page/bloc/state.dart | 16 +- lib/presentation/home_page/card.dart | 60 ++--- lib/presentation/home_page/home_page.dart | 74 +++--- makefile | 11 + pubspec.lock | 250 +++++++++++++++++- pubspec.yaml | 19 +- 26 files changed, 406 insertions(+), 154 deletions(-) create mode 100644 assets/cover.png create mode 100644 assets/ic_launcher.png create mode 100644 assets/play_store_512.png create mode 100644 assets/svg/ru.svg create mode 100644 assets/svg/uk.svg create mode 100644 makefile diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png index db77bb4b7b0906d62b1847e87f15cdcacf6a4f29..d8fd71a3ed64be610423d15af4679f2c43edf299 100644 GIT binary patch literal 4736 zcmV-`5`XQ9P)5mi()}Mssuqq&Ok!W&2F;&e17|To40S@@7NsLKl+_{`Cae)yzlkC z?`^{3|Kv*HFS`T(>-1#-6i|{dTuDjgn$(`ZF#4hZl3)aRt*xyc8Hq$rsi>%!jO)Zi zB2g2M$A@=!cSo2xnM{hjyu44t;qcC2Ft}ycu3hW9y1Lfw+`04p&d$yRvUH0~&<2bK z8Xy7^EGsLk8aj07dC_R}6b$^t_V)Hsu~h2f@>p0tASVhIiq1sEGdSVm_c}V$EZ=G zE`dn@Z1?WnPeH6ZL?6ViF94Bi!gY0ZvkM9emO-2>6YVBO`M6FD2F0{+SWLk6FgzF9 z-_-%jD=SRk{&S=);K+4}gjkDf6Q12B0h2T$6bk)%?AWo>H*enj4ZMnrUV_wHfPw&} z0=i}al;jn#N{-<0!%+ZZdMG50M;fd)D)YD~=@3#4zSjcODJXvc`Q8Oc|3G>LN;a`y@&OZq}n4M@K@*Oi}L~0ov>8xuJQ z*7Xn2lc&P>dPn2{QZ4||x2b_#uK+m5>4W1l#o_Dd?4?L$07)H8K;%YxSvQc$RlkHI z`7AhTDa5Y906au2g8n}RzwCTCnIGU)!cRZ^0z{ot2{XPLl}|Fw{19~VR?H^c-t?gK z!AQy&e83-cs-80GtRlRdjfpu8?f9U7v}u*=}oZz?Br;My*F+<`*Tv%>XLuX1K58=UkK#4f3Qhrh(N;e0rh^YGXyTtM;yClBW$sfgHXvD zl;In}p^x(_MBzo~jV+jMn(%HUic1~RX;AX?nacFCKJJTA{>KpcPSi)2Ko?6)_${!+ zTeof7_P9uaWK`O209m3{Sy}mWuw}-$+0YPMtaQ$i-}Md)?Hj>)05kk&E?`CG495r- zuIn+dRrtPGYexuwoW$74odD@-Sh%g4PJ*8l07ws&mzS>rM{O1k`p5|&OSHf}7eH2z z(HmwVDr7gY(mSkvr{Ld>PQPKZzZ=y9tnWjgECi<>=2M}oREjbWpzL>0$7kJ{l7#hI zpt!hrJ^=cr=n0!-kP|>5Sglehv%BCWXMMZ~Y)@rUG4hFac zoK&TN|X($CR5<0fV* zXMKpluGPTtBQ85p?rDhIO&DlztlnhkGkV{DQ`+WxE=k}-UI&2wB~tU3!Dc3af<;9| zTu0uj4)b~e1EzAW- zKaFJy8gx-nSy|aH0MNxEQql+U}m%`S&uQQ3|1 zV=zg*bwX!i49j6XKT`U^_ZaVVjJpo&w)cc$(R6@<(CXDtT*vAIV926IGqqC0RJcsw zsAalD?xLkqmrqM694svFXFyCB*<2*wbLAfjh0ew8hr$6MOF09ene-9#PD}^#>PD7M z85>#}=cvR8;vS!?coS7RSTR2&^Pde4d<@q%?K>Re>9{;BQetMYmkE9>};LlUZ{E8bdOG4{f|XG?`YxNDadPNsa*(6Lnj{QVrQSqbXD z7P`aK2S41SmpKvrctT{m&fuVvaQUaOt(iLR5I&x4A*^sf0q(~uevc$S;-u$gF0PMm z!a%~jT z8||>}%SAD(?^zQ$nPHkwG*O2XRSO4zg3#i_^#MzF+N5K=mKkp055D7O;SJ!9>i_~B zx9vy?JCt%XI$x}DXV$KWa2HR#O`V1t#smy1gnbHy&lv#0ydAC=;2^vX7nnNdXPqYV zkYlJ{CTJ#H&2OsD=g3f{X5gs`69+g|>PO6EhZ}HZ7<4bv zL9VDpkKaQ@Fceq17~DAtYjv7L%S%b?{n&5F4-6O%Px~Gj0D*gULk2Sd;t>=tQ1r&# zM5+PxaW9=a4WHxQa@3q0O@bv-*5(wL{IlTEGZy5gl>J&a(r!cO1pqN*o-UA{7-8wB z?rpdprxu`p61NwMCi0p+zHdZgH1JiVchRX%MQlutrg~4WtRBx>;&HJIiROPQ!>0g? z;oqQ3StmQE`9D%1*og3scBu##nURy=#;Qq_&2y@ z1qSsxfN9n8s=Ch0N=jm#n*i`e)cXh=%+mqXMew1H0cd&3K-7Nd_mU{myA18ZQQj_; z*tE(R-C(cvdS|JFczCH+3DkSZIye6a%!3$&x=o;i#-g=L+uQYy>VN((%@L> z9e)H1(3OTguUtjS4}j@!NYA59Mk*g7NQUTxo`0Po+=4dZ(8KG661Z1Ij3wfoot+y( zq0kv>L7oZZvA3xXL3`PmR=j^k3x;_C(-$$*pLu|44bqto+%Ab~!*o0bef%D2Q+2?XP|)5-|_x!8z47gojl(oR5VO?<1qIh=6^PY9{sM4Og+U3*4xfwfbm5mO zM|Ay)nCZQrXZB+T+PxV71zlp}^x7B3vR7cN17lt!QbyQyXO+;#z-k+jexIM8e;Hp& zT|yUgJ{sVG$sz~+LSN)t=;$aOt^z0NF<&?8jhGRTivi9pXfxjh9M=2<`m@#01}yg) zsFuHrl;iHYH!r!Ut+~1R{)&oH_hZ#8_wIO_q>OQJ`-GROoF zdqhEPZfR**0$nr%Tr^zGzy&Oi+VbR<%3h|9a_8U&;I{Js)}H_pHw~?y;q*eB$g|u$ zq)2@gS3gH|dDP`6Pz$e^9m6CH(p|W4$(i0wRmrIh*4BZ7`ypzNl$Dh&P%5>qbR2K( z=nxMAq+*S|vj&gvM`1urI{?;W0GB|uxs_4gG2}4`oN^h;GVI|J3Ct{yv;=Lv=&(r% z&iNfI*K5L{oFzE{#Ef(nTA{pF0_CZZNaRdC6Ia$eYRl84S;1_QL6LLA?k?otgTb;q z&F&|-?zdw@%vm5(E(3q#F#&*(TWXb{nIB?3JRthCgWiE?ZGsB954SDC91l!-O$rNAw}r9Np9ib}PHSaS$acL6sEhlddsc|luCq}wtK>(l*_w6E z02MzEkoEzj2e9I=)(64>JdfHkBzh%)I#S~%uPtGF5UzPmMBPOvaD@`N)QRALbLLT} z;*o**HsRxEQGWFvQKpyK1g-xTbkZDHwkN?!MS4a~$zScDJfnOw?UQLrM>F!f?Vb4{ zI<5< zH#Rm-$EyEEq|1fF*gnEQ79sIWAiZ9m?Bd}iZUU4eMVt!S#6z2mX6{CM4`477xXB@& zlhN6vbx8bOIJ@7&{YN783kYekd~5$)f08LVsom~GS6f@#J?O}eqN1XC0ee+zQp#jK zo(bf!H=gV&w$JAr0nmoqaik)98;7z?Z=FYmKTD=|9~uqZ=GaLP#A!LiYB6s2h!i-i zHYadMz4=jZ(r$<#Sz%gqW*Ho>_28sA@RiOobU3R5Dpr~i{d`Ve$mW_)XvWc>wRlBF zBRDb93vft%`Q1Dl?6R+&=vXV*`DUK+gV%jYUS8f5=%;9Je3@K{Z2*urFj0Sm=re3V zD@AeQB)a}!&Wrl`pBJQF>b9@#=;&)m8vxD`jBNw3(}M;NyFbY0m=7RIkJ@W0D&Q8; zvwX<;s!Qf|%EQ>0;; zUZ5ftDHSIBdvc7_GyNvl1M&ZZRG=(w5~)y5 z1Ov;*0QVxjX}=5GDJYaP5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png index 17987b79bb8a35cc66c3c1fd44f5a5526c1b78be..913bbca00e7da80021ba709d7439c65b6fe268d3 100644 GIT binary patch literal 2781 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 AVgLXD literal 721 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD3?#3*wSy!iOI#yLg7ec#$`gxH85~pclTsBt za}(23gHjVyDhp4h+5i=O3-AeX1=1l$e`s#|#^}+&7(N@w0CIr{$Oe+Uk^K-ZP~83C zcc@hG6rikF&NPT(23>y!y&wkt5C($~2D>~)O*cj@FGjOCM)M>_ixfudOh)?xMu#Fs z#}Y=@YDTwOM)x{K_j*Q;dPdJ?Mz0n|pLRx{4n|)f>SXlmV)XB04CrSJn#dS5nK2lM zrZ9#~WelCp7&e13Y$jvaEXHskn$2V!!DN-nWS__6T*l;H&Fopn?A6HZ-6WRLFP=R` zqG+CE#d4|IbyAI+rJJ`&x9*T`+a=p|0O(+s{UBcyZdkhj=yS1>AirP+0R;mf2uMgM zC}@~JfByORAh4SyRgi&!(cja>F(l*O+nd+@4m$|6K6KDn_&uvCpV23&>G9HJp{xgg zoq1^2_p9@|WEo z*X_Uko@K)qYYv~>43eQGMdbiGbo>E~Q& zrYBH{QP^@Sti!`2)uG{irBBq@y*$B zi#&(U-*=fp74j)RyIw49+0MRPMRU)+a2r*PJ$L5roHt2$UjExCTZSbq%V!HeS7J$N zdG@vOZB4v_lF7Plrx+hxo7(fCV&}fHq)$ diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index d5f1c8d34e7a88e3f88bea192c3a370d44689c3c..3514cdd240cc9770240d99f461cbb67cdcc59eb6 100644 GIT binary patch literal 12060 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�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 diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index 4d6372eebdb28e45604e46eeda8dd24651419bc0..a7ccbf1e663e8a766f1e5a415747c551d22ebcb4 100644 GIT binary patch literal 16905 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 z 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 diff --git a/assets/cover.png b/assets/cover.png new file mode 100644 index 0000000000000000000000000000000000000000..8cf70c047ff41979590e29ea53f379d7dc9bb6c8 GIT binary patch literal 24177 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
BBy%jN)DQM;d`EEGM~}Jz~#rE;JJ@~ z0x2A+2l;TwT)E!K7R|J5Z&~UM?}6^h`Kvcs1#uPZ(?GuyX&;RvC?+ZgS8r0bAk#<{ zOI#?Z;*dBo_&uSBLkda?BUt>=1dU{Gof^x|Lsyu#5nEPF7gG)vQ}&xVd-FNF(FE#4|QVnwxtpuI}L$z$B8Uj^?J)-ZHpuOqqrZY>A;E=`Jcw&nfvDt|*bBWZE=% zB8z6qtjR#{%_bZ)b7oz`+_x-3-rAny+u-R!{+pG)Eb=2BrNg8Smm-=JZwJ}^Bt*a#1x?rS!pA>OQCEnyEMj2NG%P~oxsQDeTR0BQ!BqwD1MUF#4gM?fQFW`Qgfn zHYGYuG`?lh%$YZHW{Wuovnfs2F>71qUCY9^G@+yM9ZlEKg$^IPBhXVMXe4PQXotoQ z69Xwk+7yU|LFy7?%~9`Le?iS{r2y8jv9-w;e)xwlMZv;*+K^q=v$mrejk)ybqr~h0 zK$p&>{&J@cEvxi?I)JUtJpT7pb8kHj#3i`*8Vi1RT57-?`n3&;QIDToCrqzn77I*w zfOIzqi?>)zUL*NyzziW^HEYmn4VaSp%mvKOIg)eKWx*`9EMjERESR<}on}qGOIgHs zDbQ*j=R?XOKBPb-kTjtJQ4=AiY*{4DI2(gALYN)k5B4zRbNgXEi|mwewj`v4I7=|f zmwxuAICt?pwl0}27R(#Z-eksn-q9qmRmsh(Z)0PZomj>Yj6o$K5_&1H9(Ay~9mY4^ zb~}oDTyFiu&Jy5Ng=3wg-%k&_9Ua{xA?h)BQZr$8@D2xiZ!q0^ldic2>?1M*Y5Qql zMN}ajO~;1h>3qkcS@a^mVcxd1q0RQZZ}S#g+J2n({j_lxJwA2Bz5}R6QcBskkn-o0 zBBX>poDCDSH{*;dCS~xg7((*kEXf*vI*noPl@8hY7})nI%HJ<#typttlt!RIn1flMEHL6hd_Q1>!`}%C znjI)H2E1=sbXk#`cg>+G*QJg&cC)RMDhF4JawQku^ce z)5J?)j4D=hr%WOQ3#oSe;FrG0&V_UA?3|-%JLXNxtZkXK9gX+Q+LosEG(K_m(iM^| ziIO7;vOe*_0nZZrCGe{qU^$*I=|OY;>a|4#>4z0#1ZP5yy3v3TdeDy=JB!-hTttb< z<6}n~T4wFM*XHLeVndrU=xyqQLwe9d3iuT98i}Nw(78$u_P|e|5;7~CHQKBeG z5SYdFPqV7c`5Ot_yUX z;#0xq*^5LhNmK9T(i~{AMygpcJPosZCHWwH`|q2yci*Z()aGEz!_6XCv=6|{92bcp z4+&9YHsO+|4eb$^Yb0qp^4w`e52Z=(%<83zsFJ*gn2^*LcF>5Bu#yPPoa8%**#oF4 zPuk!L8Uq)feVXFTHanLtv1mQJ^BH^dIeUwFb}uhl7OiJKZ-_yOT_gqw$x;k9Ns@y| zOfTuuZScL#;d`RYY=2RaJa-{kaRKMORm$SfBG?2jDe7AsIW{o$3fdvan!S{Xm;n|= zB|gxlO;-Uasd zr`()Q*`3We=)s@04U4v+Su|)&q@ZXpglKTZFu$1yMzT_yj=g)P_2Kz`XjRI7=)f0_ z930uk?Z6+Ql^BB37hoL9i6>^>rR-JYil-_mVblq=kJrE zG1mwP!BbTwqKSjuTM#4GWS?wONFtc34rc7nrtHsV95f4NO~ayV znNH_~kR3c_8+9)9KMI)_Fmy%zt)Eie0pFM$(pZZ0P|cxV(eQkH*;QS zI)0#ue4$NzHUyqrOu3XA9@fO8$?$kt@({|I(6OB&qv#n#Pn7~i3>b|V?W1%xn~WN> zqSq_^B#qb}XelkRTcFd-`O92?V}xJ?x3vYs0qPvn#e%(q3HxosUOVTYn=|WL7T(kO z$aFR%^>L&shLjAFED{~g)~MQEg%nK6L)@K751;4IJ-FOI+}26&H<;tkgRs`#vU5rGc&B~yNA(SP9ht4CL zW4z`767M6ek1TqhLW~fD(k%kbw82V=6$hpSN=hnRNK9{Cg)~DX_PUSspsuvgdNlE} z@WgT`60-DIrNd$Bh(45@?~R}stoB|r5iBr{i5Etjd{1&b+6KnHr3{f_6B*9}!H%F47G9Y*o<-Zzb}fD$NUflq5Ero6?~qhcFu-b!NtS{N z2{lGb(5`o8^+hQpE2DQC+mGo0cRuxyK6KzKLNqyb!uDRXD1sO$+Lq@xHo2eyNpluu zU|Iy!2+1eZ7&-!zZpzIxW7jmy3eUoNVwp%bkZg<6QTPQLe!-3g9x`y*SuR+^L&k6c zVJ9kEL8*w8blCX>iF1;TsDMj`QY}W7oM=fnd~md#(6xbf(GZ)2pG6iEPczB#tCSHY z)i{O}T2aIr7sjO4ps54tKr;iZB6<4`aGaypJIgx9FX_I)Kk_55YvB)$RC4;2?W0_h zg^oyR66Z_9BbU#@re#q@x2R!cu{H$6m|9vndNwV+0 z2PzuC2+kx16>N+Po_gvrwucp^2851;$J1p`T?nK$_Kv}97)A^M!HdBgp>>wV7&>Q& zMwquPDFFznH?CD8=LZ#^EJu7gSY8mvPS;ZThLk+mtc)2=%=hRt7j3P{;@;L#z%c!kE$zupux%xCODxz^emwz1yj8mo+c!lGZt$Q$Sze=e>ac zL6bmEl_KUy8X^)Do1iWnbtPDr7}bvFpMH$TA3u+}8OhGTHZ-ndGEB5K;Z1h8c2?;u zG|tczLgNgb2uTbf39SlK@9B#C{k$+t3+PH16o!rc1DDpkPeFn35s2ZcwKU$~dA7V@kh4*^O{sh|LYAlh-j4Ky8j! z>`mJbiavDU16U)O<88LRiwFZRoN*NcBRvndRCVCWqnmvG`=8^Phem8K_8DtSD+{9a zB$GFK_pOi)EuSQitR)$P*FIubAc_)fB-+HFaEL^(9wRN=spBcHe17XZXIXNf#VJTL zXZFs!jDn%|C1o5^q%mb2Q>HOx+@y+|lzvRzZ7^szsM`@`H-N5TfA8C*^e%=LqmWF@ zV}BpD^g+-AH}#}{)TNMF25m@ogCElJb@JGr$M^hqnJt$mcZwJobi%kxd~{Ip{X1iJ zlBYC^F&X`93{N;9;xKgFVW;;Pm9*)x%;SjdO0a3 zMz(ClaHBxd9G&b^`<5*a6^>meT=kJC7Kk_z+F4{!o~5p~iNPU~L(*(0DPn~SHAPob z_!{d=taqqy+1-1I{mGwV${QdZLeX0j9yPJAC~{KVA5wpK_50tDN`ms( zePY-sbL}tzQWS<#aptKV%Ec}Z{n;BlG?_5Mqo(4Y&SrdFEr9|rw$($oB*N|K04IJ+G6HK@3 z9AuqoogNtYhd0(-*~0XidK4&9uBy3kf|tZrfD5yZkCkJd8;yB*P_gYS11nUb42WPA z3J{lYg;E%WZh_Opz&WfFY$e#z;0nPGOQvTkilE#oD*nq|_(Nk*vk4y5b-3h-Vn~!2 zm25)?IG8S&C8Z2XOQf0vTvV_Pk3PP`nf-kp`ObCD%w|~ebTZ)A_hx*P9C4H93v$h$ z6bBUM0^1wUaAxaCf}BHih=~JCFc|TKc#T=}3j4EHSjZa$y9+4Bn0qqO?g#us`~T!u z4;FkiLMKWUm-e~A#Oy-#7Fq}65PAH-^Wz(r`K%rCP>LAaVXMeM5aF{?eCu`@j7)x@qK>+im_u49ruBVu;pLXy|9( zbDDQFO6QekwxIAWXC^at#BknQs;=Ywxa9Ii$s-Co2Z5Kq`yw+NxoOAzw>PG|B)L$O zisVU06p0oWhZJcGqZ`%(LM=_(Af?4Q+lN&d;;6t~*$|z;rlicpWcLzy8%yj4VT&luA6gfx(h&K2mJA* zyk~8H74*Yn(C5u(Po0ph7VnfYd7hd^exlsrd%DCq-(YA-CS`X!tC zDLTQaVr(GF9Ajo64XPnCC^iRvSbA?^gx>GIzTGq3=6pRRjcoP$cLaa^N2h&WB~d7P zm$b@JMokqXm*#=LQl8;^V!^iWuy~@$uF^6Y>fnHq))p8Ob7F>xMC0++)0LjK>}acw zVyk3xJfxZK)1`(Wp0e%O*^7)8hJ$FhHe0YTWZ-*8QItFb=dI#hWKl#~lQ`=NK30tw zNo4c;Kf~pp{7GV{sA7)I@7lm(5vZsb+L{(mCoRbYl1X5CkEdE}EO1FEV(tVGvbiQ6 z5s#V1?GxaJc# zW27xC!3xRbqAjVvPcYCH%Cu7Eg)#!RLd(ogQCHB;EaJy#gcJ?!Bw!oIMjB8DWvqcK zq2qG9V56N=hB?N1yzS^*B-k9_f##~83Sa`*7EDKyn4^+X4O*->BCIjq2Ss-TUwQ@P z*!~^C&!8`rizHAZJl#6JV756kYqCQ`i@sr&!HN+>q)dS-25fSORwyM&3K9-*7_~UH z7z{}wqm7!Koe`sP$viALNS=LTczfQma28*<4F2-r`l8FRmr9bLR>O`!5hth|u=g*2 zhwK02Z$t7-gXd<`FbztwH9;)1c1}9j!?u`bNvzbH1$29Yq|8oGBv`=_KOHn(fhmt@A_NhR~FOH)aisL4{&T z{j6XV4#hu!s>P_GN|7B&l#K@uvU@1XJo$DF1Y3Eq&Ggw90X+58cHBWSwIsqvU3rfVQ;`;e|6(NYh zTT3tyP3+_JyFNoF<%u56>}pXADSPO!6av-2aPHiYGZ)5O?-Frqh$RPoMq>yTI-8Rs zRD@tHU11RG*(!yy6=GY{Maz7#U@~pFb+FIP8@IS|>pCec7?h4ty}>XI7-85jiF2{# zBf;|{Qu1@f8Gb5_`Pf3Z5EC}}>@_rkNW`iKJSsW&AlDDPy>4|xJ?MQWIEMR@K@U4X z?^0c((=g2=?x{Dte-gl?yojNQ^4P-haW>iPpbS}RbNI1t$j=uS_=z~;Qw!x% z7crqll2S#{+DF*$#av;_S9;%4ier|!$nU%laJHy4Ek%v};H2SXFG)BQ^#j#?_Ef zSu-vNY*a&ru43B_*p!NaEh)n9I_RaS|q1AnJo1C|N7tL ztL7>6ECu9{%LT|O%j6i_yeXt4eL!!@o^^GEAiUcsS7V|W*5o`7#aPMiSEGnozIDV( zVr*ciaMYD!P}h{MzzPsOg)umhTuLV8s@<-S_bX&sq}5SML6Hnj47RjX&aji<@wxJ& z?U27^F7dIhqDUZWu*s0b(AjKx+?npy>hGQIdh27f)_c~)GyoDgzleM`Zm`n?yjkYE z_k|I&9~A9ps$;*bN(ccx3~6048&b}fJBq%}#|_zgn7=EK1dSTLwb!s1jWCr(9AIx3`SEy`Pj>@0nt)9St2s>1=y5JyZQ;Z5eEryc(4Ee|Kk)BDf->@+XMM@j ztzm%Tt!6D-$c+~BIG=LqTaqSb^EtN2_HItHII=8MfkVY8*YMFOXo#fbiAjjjVnSfy z9AA0o7UlW#Bm*Lf6|j<%K+W>6$;S#{jA0yektmJ1lckjJpX=oql4gmdnyZ6p%AZRQ zb(cG&M<78N43)Q_hE@!-G8dtG_5i-rZSqWKsY0L(%1|BVK4LZQ1mt_62MWGR%K2&F zQ+AW>1R->g5`kPkEr(~V0;{Cd*R}^z&t*r7eb#J`&dr;~oHL)a!;3+q1>Z11_~xw{ z;|u4(WTxqBD&tI!y2`){RtyEg2%(My3K3Z;a zB^LRp6^f|+Z3Ia<=WaQstCDBI>zWvsSt`9q?YVE+*tvd0zchN%oRXypA9JUP-gC3< zc-toiTSLU;)io{Tak~fHiC|3sxsTs>A?CCxHAFPm;7h#;9u@7MjXr58M^_0!BApGS zoN_~F6Vo!%S}3Bj(F&W5Py}INv*P(^uv{)`yrh1-zc=t7G}m*#;3quEDgg&7SP6Iu zL|5TDc({#xS~e(Rz#E7;P6r#aNK7P>f>Dd6obMh{-sxsY5-JQSMo2=6N>B(~cs0<%LYsb;B%Lfk zK^O0EL0VoYYn~2{GHKS9vl-oscO{4tB;m<3c~O-nba_0KT%{*yo^@L|Pgh1d2`u~~ zJA@K+QR!lDHH3(UfDeW?3KKWrkEc_HTSL^AndAF0{?MhcvTrO5RoLj2$3_*O6dMvI zWCfL|n3%P43E6OPfqrZkOq8r3hO8y3DzkP$s}V0sAnPzo2d+`U+r*|R7>en&{xx*_ z>D?oGZ|JXb`0a*_`vN~|30N+S6aV-B^WWoFfBFBw-~0D|ibu9u9^0&`+MHsOtl|v> zV+i61#`fWu2H*SG=f0)UK$`-Ex?E!ySQusSqtEg2|M=f#>t{a0^dmd$?pSsUkC!ao zQqaC~R-#p5rjA#d#Pwm#XjI{%J=E$AS>w-|zv6o3uS&{Jn>aU5xHb|JbSkLN+J2KY zy2DL@kb1LJA!zP|ONB70;x)3@O=&a|NW{M5FKg^sgy@9IC$>yMrJMx+0~+5?BU|s> zJ(6cRZX_d&%D}(%<nSHae&ge#P|HtPcVG`5jMZ~2`>HQ_jBQ|d@oziJ;rPx97w}F z`CLOMDo!fqV)*Ab4*2Hgn4L$@;;mpzu7kJK?#+=490L@pJTdF|#J*>1(V|Im)z2<~ z8bZjOU^y|=#@v~knCLL5wRBxTk|oA$o=)++HQS@EYU)&Gvo>buRGK^1=^& ziibaPnb+QWll_BzDuh9s7)OJR5tSUybr5o`9OEDr;8Wzh9pO|EBgCQQ@t^+z%uWSc z1I$KExwA=i=^Q)X^CS;_<~bhv`1APvIsWP%u7#Nl`R}jqvHREs1{XKz3b2y(lC0>h zC^`M#66Nuk=ebG4p!G;Jq&88+JmV;x+Xulgwm4&rS9TL*caj*cCH zf7*HQ9>HJ!Kt!ks{4ajy$N0?mT*j0w9>tmh5zxZmhb8s)fQuh}f~P+Jz08c~#j9^{ zt=;EZbCc8;Ju0lhh!P8^s*3H__S$*YeXDD87B64rjj#MMH@@~VlNaB{zqN}wXh`#p z?&>b@{Ijo8A9OS}@(o+^|Is-YKKdw>P)QEfl%<&`nKzbPZxOcI#7A#7Jh{8T`AABJ zt}19Y3MQq}h%hS*vjS!od})c!(S<~c3M#~)1fbQ#joCi0FK#h)N|h{^%{E1s;|38! za6)id5;cX;R*u)=g6k$1UA!Hww*NZ4U+`t?sUOc1s(o3rby|KWKqYhj&X>QBzx%)X zNzUykW>8~vh^R%Yg0?i-9K#?%Xm%UE`9J&)|I>ffm5jzi z&bNj#ixxs@C^hByjoK1yg3=IcgA6TpT;NF9y#+%Lw}vJE0OgmN^U1&Ry~Ns6kO-Pk z(+7)~JguAa{qv04lDKsG>ef(Shun0~KE#r0Q9t__TaRC4 z{Mb3<$|lu#z}~lBWB*%kK_|2+ax=~O&i*wHLQ5+NZ?b#$A$NvC3)&*jDMSa0O6dy0 zh@mZoo7Qu+YiUg`KZ6`EO{*ry0_Mq|W4OVZG+2JjfAvJIEjdN6u!FNJ^Z6&gUm-zF z#dMx{^^L2%bNvR@#(=Gjn#wBHIn+4R6c`cquixP9mtSUJg?a#&o;=IPf8+&af48V48GBR%+J>` z{c>(b1SfED((%OAIcKLzB;o}&9(o9h3fXOli-b-CdSgMjF~wh>(7b)XyZ`L##J8q| zCg&);F}cCj<^VN@K+X)dQ8;Hd8Ja3PlX?@cE%Web#L!xp*M_&+DRa}8T{XRes?x6u zm~#?X0e6+wIeGQiI{2quK(?R$(vhrR^$VUtnheGjP{Fx}M?8GN@%bmu@mD|fQ9k<2 zlZ>`EvBOQe*_@ZZ`3;;#>dH|R!k}=}MTujGzv1}W|M6GY`|Z~l#sStqAz+=7`e|5W z1ZySF#aqqex5=OinT37j_>)1!|1I2N@Y&}WJUpZ=eYPB=UwBD+hg0uvMPLww7hd1z z^M7)a$M%#!F2mZ2GPBC49x%5;R6`XZ2G2paKxcvNeZy!`5vAlR6aHxLRrVy}V<1{( zq8+19@LX}3N2-U&eOmCPFsYU3GMr6ed1nOwRNYaaYGFX{ka{xz5n*FH#%Nh(xm8NjK=!CD8fioX@ z1O^Eyasa4E9&49>3+?S`BaA&f^>)K!Z_TLN?7o!_s)bUuhGGV~7Z~m(s#_h!ex#Tx z!^TlBEGAX7z_l>t&F&^`zwTZVWsy7<%a|MmB>g=*C$vR2^OAs;mQWhr^c^>1HV0K~ zKS{P6g0qWMZ==ZF>Daw+zEOHV>|MAXAUQ)@gS}AF3?qJXi)*sOul&KA{8#_;%e-{p zc>C6Z)(b?73xa7oDotoNN3_EwVgHqPxc<@`6n*-63VHG-E$7OUpg~AcAV{{sqag** zkhN@$h9(MEW1tb&h0gl3L#oW zlV_tSDKMliXXoZAiyZ5i41Ixy<5AP=lQrw#tt)$wr>IjdJ#t95w=vd8frYc^&UV(k zX{c?a+S+8kb&)?hDEQBQ^^f>}{nOX^_TDB3jOf(k+=3W(5$lNvX5o1CxBe74P*RjU z0kVwNiMc38jCocsh2E7L6b*SICnr+mbLMK;6~$Ktu5uWcggriX6KPH25WM- z__%|57Lg_qy`mn(OSaz|p=gD{9I6(KCx71=)C)cdjVcX^w)ZrmOG^R_*^AjZWiKx1 z3c;5KZ^*fP*3cPfZA2WL*(j;gl+8L~(;^p;k-iADoX)WiitZVF0Cfhpy-C!9LTgNd zR3!Xn$zm{KpKbo->w*9Dzx-$XU;dll(qDyRzA{WLBE^os#kDj5DHan;im}HSY>*xK_X+wmq&mMR3ECq(PxaRroKX{AZ`NOxFEC!t0dWZ|d5ikG7AMw_2 zzd{`fBsro1CE-+YDSPj-GbqRNX&>;B=T7q@C4`7@y|jFNtQ=h0;_Ueir06J&;53(0 zF_HsHjTnlQBZo_ci`P5OeP@@=SwfTclQntzc5YxUIcOwkq(g}+c~-AeTvVJ-xGu8i z57?(A0Zt9Z3Z2cfd9^91Y>BlcQdsB}IxU2@Ow6rkcy7d}e&}QT(!cvR`S<^W|1~ds z?0J6ezx#EdhGetGul8_AK5p6_*8`4y?v2G`)Z6*Sm?N`r`@^Bxk!5+DT&26}f74R0=;NHJ0r#;R_obpPA3txjv`z zPzJ$;91WZE`13VQk(C|Oi|nj4X`Yw0l56lg#~+-l_-`If@bozzeewdKm>-%-Y64a* z-dc(TNW?lz)hVC&gFQa-yI0wo_A@ssIe0XZq}#bu{7`T-@ZbPk)3LzW5oQ_}CM;aU_NbD#{!0 zw*2eA_@D6B?wHmDjOj43%;n(wnZZoComd&~*E#!8@$3JlwaFk^59Y{PcK;<1dj%m0 zq{8Bcbso0>mfYEk2NkHtBb<{%f410y;3|?EP->0tduTPUA!Bp4Y;;O6krDC#;d9Bi^!QF11(N*0@@bQHBC7K(AXAW^VFStNGUbJ-Y7@I;%% zad6qAmp?=3OwK4&~@G&CwSlEaGzgZfarH+Grav5eKrz5lm8Lq5G6OT*w_I^?v=-4@aI{;w@Q0#A3x#lm(AG^9WCU{yCod z;`2Q66OVD}N3QURpZ+KhfA(RD^Ce|vC{0PNLkb-uVT8m1g(>*>3m?Hq+pjQky5|0% z=m>mWdY3ZSFK?OpY8J!o4T`$NIfu2mDu%N;Gzw#KA|#1=R6!{iXF)7#q0|`<*UDK9 z6hxv`Vh_46@-%0(kX)|dk;D*Hh?>Xa7<;Y{pgx1OfLy`DS?by$l5orU`yTl0-p!K0 z7%0UsY6Uy-;FZ`Z$wLa#Z<*s`Z(%GsK1B{e@7LGJ5>RYj?#1*~IgEmI3^xqLW zT-|^k@a;eTePl7gMvsJqNCi@7Kc#JR=e33_k6gq^9*UN=_wP=}Mf|6zY<*k6yx#YGfG#Z7iZ-jYGsBVi5$J48bQPTC6%o-GV1{!4ql0 zMr;vL(xIb1J3f{#C?@C6YhO1fud>~r*DEcmN;1N&q43(}n(Gfa&RyEhMV-u14j=u3 zjaEQy$~Jy7JbVMHuU%zhFX4iK8Z?N%_Mhiz64AHWn91NKr%((T|4GwnaTz_|u8`q{>zgh6k+naplD>wK* z{b#?-ul(cRW*){QQ(`0_nvT_9${^-(eI49&fY zE7-EYxq`|SIAgG4Fk<_8c$?Fil0$vAjg1;EvoA(13sJOi8)DE07${V=n1 z^{za-lFhHwhfUuY8D4*Qz}|Vs&O=*R>v5u}EpVC(B{>nSfW-bs{Szsh)$ z7i(VT1*FtpKlL4~4?2w|kLk(gp($AKPVj|rE6kWkOZHIrZrq}v+up*TJDh1a~<^uYpq zTnWpxRH`JWq#|OB;?z;a3V#qFFOEg*6}U*A^a&;d?u$SuW6$k*^GoZbkI3;>v-EO? zSde`X;!qJ9;N4_-y&Lgzled@VLtgP?-b!O`ut6AJVEfXuY@WNsU^JpMV@f+lTtX#a zG#7A){c2nEOTkF5n2Y8Gm_%=H44$S7tm+GfLy@rrUi*>>*&QmzFdPin8gH;Q95I%X z$!qU$^Tk(?NrP!Tm9^A`qcjHRT=udFY?(RR_5cx2vU7%`o18g+3p>~&ImMG3JlO0G zjRmAaNG@-o0ADCw0iCmX6>FC(YP6LQOQCd%DPs2DQ{+{*q@&3F0d+ZKyEK+c3&O0; z_PWghrNJ7avjkTVoWnauTR7Un;%x@o_gm{AEIX`Kuz7fiHjm3{6(b326R{`=ZcHp{ zs79D_ge%5W^@z>wEv`KID5G;*n9@?Yf|1=~WY0q?FzR{+%-%wlCis#;b4iQC?QXQ% z309@S;i8K4qM=v4`u_`(5?jMDX9gq2reN~!RbKhiKg0NdcAm887}%29)>O8j&;)M4 zzy!{^eQJA?!RR_qK6=2v_Qf&(#xGptqn`w^E#hk8VdIu~YX~l)QW15K7f-ZvLfPP5 zL2HM!h0qoqsZyj!6a^TQjzYD?Vx;Kf_p&Iq1`LVXD505xc%oB$30;xsiY&^5vjkfb z?2urF_#&rSw?!W3Ly?0oeZLWb1i>Z+nDOX{j(JRJAn_S3re0PK6ACFZMoB(PMn^5+-=#6+Ag7^q?Ijkoy5zx-X| zbWSOTN-Tc9U{nn9bf$CEMIzafb4Gc>?s8@8DnI-K6+izo7x~z;EoaZX!)HFX&0upv zbn{#%uS|3Ww635v4qphtIYQ|O75Fk`kV>ViI@&4_%A9@SoJEKjNf@JGOwJTA1}iyd zz+kYdlqjif!3f?OI+wL}UqpQA@rB2io=^mQ8Sn+UV-!MHLfdn_cMwX!7l!Ein0#jm zh0T#WMkuYJ=&OjMBgz#m@+6UTw$?=MO~yY zhAU~tk3U@Si+}Y=KK)$F(7b|?TZp!7Z%01*@e1mFVrgg`bS@WU@>NH-b)9r}pQfJE zT8Fn~))C5v=ptQV@O4FUHP+U>TQ$$AisbMuF`+MtYA{%wak-jyn@}?#xRT&(=4hvc zBI1hcQ<*3A27?hUEK~)(>gObs3m@TGNGbe|3J}_EU42`ZPoUf7TlN-B5!>y~=!AGQD zs6ZtL8_cE?j4Guoa7BqRHN&*WPd;S&ZT!4wbv+<@0UasD!bt6=Y~*D z@J4CX5M4>CX6Tt0`NGc+__@FPJn7t9_+g+iC7m&}l2A9KF^;BCqO~|XfRvLmr5FF! zB*cY0y(<=DvJaxbWFNjM@Xq$*w@OJg1UgZ6b7|0tQ{NUK|l89H1<0&{i>5^ z$-t|})@j{3P|b58M<=L3`ci6#8K$av9a+thrSv0F>Mu0i-^Zykum+c)2qowIJAC%S zEynGu6mg!jUVV)w2iih9VCSsm(xU^U3>2d=u~=ZYUgPKfohSI@7ljK?zsgVl+fR~4 zZ^OR7m4LAkbWTymUc5(wO9Ur$wxF{W z!3~%j!=iw;*52C4TUU^sJBM07MB7o+9_u==o>a!e*a2${ws6?WvavO0Jg%t?jH`m$ zDs>?YE6aFf84eAjkz+i}a}+0`yEi%wbnbBc#KaEdo~PtV6P6E?GRupa{%5&o7Am~{ z?U$%kDPv+g!N%@)ctoyI+nkS2OyErpnuswMXsi}|^b?x|bDfa(C^ui@Z~Z&Z@c5I0 zG5d(U#?vndANiEP;8va|uPyC(kK*ElOV19_Y67MO%>kcz%Z?{227|+4ayXZ5sq2n< zqa)N4x~l8PbfGIFP2F)|uhVT@r?|XFv+)LPG+il!KNa zbJPR`u;Q>qMOhbAgNnjHZ4DKPFrQJHL|s{iL(6Dn8I21@qpDv$d#QY_4*_?lCD2Pw zza8-80M6dS*XN4sq0-kU{7Zfa?SldGSy??01>dzy_78B*vY1VH~C8BY;r)oxxr}ca`_d>rl~_P*uI3DkesKW;i5}?YUeEPy!a|zDu~7r z9RwE%<(y(?pO1XD=I8$1&okJb@zP5NLbJ;YbIp5AgEIKyNF8I`^FY@q}ZT1ds z(V(a)h^AyQ-lp9+kE| z|3otVdO(uU9E=91aPSgbg_YGgPM&kxXO4lt^y?pbT9;9zCQsw`zWb$ako$+?j3xPw z>u|e0p)1OXk3v5#C2eyj1H&S1&dWm zNf_g~9Io=hBQ1OHOt^NfL{ErkrRTIB_Z zQ-MpCGP;~HCIOLzRfkIsrxg`o%r2k#p-XI?6I3e1Sks3y2!w-D&GN1qGHk*2#ZCOwXlvM=+ zMNu#)3U;qwMN-5_;Kt3j`ITS&fAjjaZy=)s-rakds7=437AyHhC%HE7pTy;U=!o;- z)QcS#8=2czk1sm`*>qskwfrwXIpSe6%jGXb5$$qW3;MV;$x$)Z8Hg>KTAWR22pB-6 zK~j#7M+M`iY-~3OH?TJ1W5Ks?R=hMB;)X-UqY48!6EGr_Dp?8`OQDWJlp-Y_3sW8$ z?6b9zn9t$us|T2J%JZMD_{qO@8EaprCRtP6L{9-JO6XC4)wT#Dq38B(<32(avL%L0f|~W2CE~6C`-V2W-fz zaY#rx)=DC{JRjgCSHDn6U=_8AB)NWTw)+E4gpqNW&O>^K@BIPck!RoJ`+lh6$A9`s zisBkbOKJtWyrg;RTDH#Z@;Cp@^VHR=49jbL=}QBidUBs4O^^_9lF*otm>8y(hs=a$ zwmm=ku`6t(DVFS7E`ZtYE!yb>4ShbLfnXY14%l0~iFYO*Q4gl46w*W3Me$L^KP zVR6Azw954hug??6N+5xVV2x7KP#Gn59i=#Ij7U^cu*6_U!9dp+G*X2SGngTweH?&v z71CM6$GmkGngY|-n8u>sFmDpOv%p>>%u-FGBRaE5qeB|AL1#8lTZ1bJF2@JZwN$>K z00yHQ{OsR+l+XQOjdO3KU5gD4i4j6XLN4v@g6Hw`EkF0A4SxEE;WHmK40Miq-!FO` zfdZRqTq>wjU?WbsJZL#zOc|h*3PU6O@gIE^@m-&cnTt;)%;Cb0UISw7ku@dcMIBeT zoHcLV>O{?wF_%f1>)gLQcX_@YoO|jhOZOh=c4vtQRudO!`Qnpf&KUzCP^7*g#b$4t zE-$kDkc$@O&ez8TXqTfmNqx<`lug70L`$oi{N{HezxItOuiWZ*?d@G&`tCJedF?7M zzrDv>R~H=2BGaZLnGz{WERJX54IT_Gr-dPX_k1{L9-98IVzkAEIYuqXx1ff--Iit&C}T-p4k8jmq%;C;c4tzB&KA5Jw)nq(w``LHW&&eP2tzjB6!9H!fJqb#o$~+8t%{ zl(S!BpZnJIjUE8684Rz`Dbi^M+^4)GYA0xC5wDaYSV}~y+*l%5DR2U%f}z2vK~2PJ zhmjVST%YtIXzTKFUY+#!@VNtYF`v^ZDF#vqxkhT6ux-M12Gc60Q;IfHL`C|#ycz|( zVp1+S`)K75&B+(b%3#@Uw>{L$Bnjz{^lbicQ?@{t%kdiFcTgqfHT_9ljN3VB8S7)VGa_o&P zIda)($HwN93Y)HcK0Iq>KYu>@&GNh3mSyYdKEXe_`07oTl!aK1*|%k0JJv=J9dOOp z{K0PGH(z^~Z@#m~ZWxj5HX)Wclh?LYV!leWeRX5$D`56DOoJjpAthdJ$Nc8?4d&Gj zRhf$^BSlWeOj&d$Q{Y`*$Y~r}{@PjL5#7UT$O_*f@VUz7a%Nj%&J0RPkzf#?>;DqT zLs2yN4)%5ra&kvs{`#@g zFj}Si2Y>y*3K_s@z?eid9;1;WCM=dt3T9=+%+$OyFZlhpJpbQs?eaUXwY;|2pc`Li zUTiV9BYddnsPS47)RK}#duc!)c==tw$^U$PNK@NOb8h7k>DXFd>h!`Ytc|sMx}~b5AkBz zmmxRU=H*$OkCQ+ph0g_ZishP`|H{yt|>dS3v$OfZ0jT7kJ|m{_e)xJ1TFVh&k+%1=h@Y` z{kzaIwEZ@eL}*NbO9_`ELL!)eqSypQf<)P`Io~39P%w7H=J_WXUV4g4k3B=_Z&B!i zB2KB}gkhSnRd_aBU}%()i@X|3e&d>DZg;So1qTTtLi?t}zmmCB>3!H>T`19gAp4W|Ju+zOxtj z7vFi8KRHO;Dt4Hq659`D%e=mRnY|2gUvKZ2qvjOw(+c3Lv;@Du+WObfp980-Xg^T! zLC|E0CXq};O~9yPqQR=mikt)tEhZ%pr4z@Tf>dts)bpR_%-KtvKYxZ8^0Eb~*Ooi) zGpC~H>;{u|k7-e1WPl$yf(sNOC-lbtWnEMP4XR3!B7b+|9sX+ZE@#su*ZniO5~$d$ zjL~zJO79Alh7=)0VG)#RmzZ?Wqyc+#VQ;Q{`}%}$+-mqvQ*gC)XfZ@6P!(d#a}BHD zC*&|9>aZ8AJ!d*rOQAFo?QbG$v-C-n(nnaXHFph-9 zYQ(01sFIAMpSw zf`0_&2LS&11vq6aIUZ!VbUHxp!#x`bhlL!1frMf-SI3fN-Fj0Ht>c*&KEd$vlRW*@ z)08MCROt;eTu~a z!`S7T{7UwwC5sW**c|Zk%iqR#4c#Ijlz7SJezIAaL~TwbUx}cRmG{X9-7LwUTiz@TQ z1Otr68&vgx;dqR*mcl?GitU$1D+`x{Of{E46WcGU)Mx8tlP@PaN)Mt)o?aHs>!w(Z z6qsDHH3_9Ha7Gwa1(TcaApN4LtVpOsv3v9aC)(o>>{HtH7@%^J`URQv z{g@q|zrXqXRT4QGpYD}pIhoOO(BX@sy^Bo|0(-Y^QI-{>(FRpnvN;}6np|n4u(=|L zvzEFnX`2>ja-Dz-dUXPH9_nbPd}oKp zJbd?0t77gnI?=I~_B1(!Tj{fH`eAa}RAPi1*RNx&;mp<+g0e9hQI{pwkm~|jo9o~Y zhUl^csw?trnB;6D({})2sYPcgqhc_&!25*aNLm6Vss)InEC=8_7L$ES(|Z9$@>p*K zm2?RB%F7;oKIPczxyOEYV*hxXodk8oFR(V$tkbdfmm|DHE%nV?>SyHPnKrS zp2c7(#GxHHtud*@Y6;0u*n-L#4tB3mh|hEF%V!n=$)%Y@^Kg>i?T9-?a_2sL?G*rz z+H0Mg*S|m7KiB^?o}>dc^EO4qHt7IiM58pI;^o+TVP$U=^x&&@98;aDtEL#WGs8}`gM3D7j;fa zFvj+hDKRWd7Sml)H(^;1n?9Wllk*mHLU!K}`G)zum#=x-wpne9{>VzFSlvJQ`}NLn zl8*TTR!&|0-TMcBWt__gj#Uxpx%p_H{OJAP{5`$SBV>u791WTxf~LrHI^pfN-ehAm z*CDptd_L2mcO!j&CrEl}{OD}Qu%ozrCohyP0K(3>gQ_NS& zs%l=qA=laiRg=L#T;w4aaxiL05lkvEX+&j(>GTamW?9?Ep(dWnP3vaas!x6Web@JI zfBYo)tDo<*-H9G3_#$#b?7tUUe|YKr)y8B|u4G4#hRDJG9)I*lU*$V5eVfgV4F+`$ zC=uIN%wEQ42q_t2l05#WEKM{W6;~!1BsmO@6eOpMbpwWF&HnBys7!JRbX+#|L{D(l z>NB$(3Qqy!cArn%&%XWD>*fJ={k&CL|88}E*+K6J{`v(@YVId{*@FOol}=p0?_ff| zdKTHdn@$e++Sk6ySO4%2i77GK+y({j14)G#Qm&}kFVw)Y{7D4V5QFsPPA$ZouBD;C z#u`US3I}xE^_)75#Yisodcx*jc~(_LRsuEhvDNbq4Qhuc5t{(CE<=>hhe_cMO%jP;(N> zYQ*N5^IW|A80RiMjH`#VefWL|Le~jC7(!=B-lDx_ekr&10Z?a?>}O64SWHk zZ5FXuR4uBGfFYTZYB*%HagNRH^K5MGP!t=aRMEAL6iTAEgidm}wl@@hgoz8@y#8xM z`7@L*JB@n#ewEf0zPR@M#@G|@bXprPkFA1#{8+xm>izCSr?lef;NR^+cc%5ezDCM& ze)N#m@0UZkZ%^xuck-AX>x9~S_JAHN$yu@~pg4+h%xL2hTU$>u8a;~dM#NB~-eKAT z*A=*AxViWz++6%F>h>^VK@0K%>PPoqkCo4o=;$3+^`=!?{%-yI{P%Qe!3y~6o$y}h z#8uZH>MtiPRl>Yw%6@`;B-?&g45brdn6Z2F4Zi#G@AKlf{srygRh+$vXoCY>EHTki znKM`!WU;@-O?TqH_2YNjU()T4uhM%3o;-hYB%K2e3RGT_${to`+ck&U{k=w8WRmA=P+9LJaZ&^mvp;lUH!b=Uwt;#IDYl` zX|#IZJDqnoI@Th0yXjwM$_#Q6h@w!7cHUOjL9*zM@>I_qEDBOL=@SE@F=cQVJeW#r4z*3Yl6Y!BwXcP8y~ zGmiFiewGrEzEY<}Fq&|Zkkl|ac!k;Qb&PgM%vr;xSK5;H0f_z5FsWYzB9a$`P{|?J zw|lQufLGh%Ug&<#y&cJe$j^UJ^dMg5PK}s3f2H9h^;NHQrL(#mZl1jc;C9)cy-Z?) zCNMNP>sC!ax4(XumG`&%Paa=(jEZQKnR}7_;x; zrr)febAqIIW%dhLa)&m#pEkH>@bBef@01I1Kf%3-Z_pnAz)C=rBCPfHLiu< zrggW7Hn0A)>Ook)?x~kQg>L^WYqV?^AwTCGq|5rTJJCIXf4hsW@BewxgShKGJ-Z~5 zc+|}C?4xc5wnc2r37CgbO6%8J-#(^b literal 0 HcmV?d00001 diff --git a/assets/ic_launcher.png b/assets/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..89993ad727cccc81573dff7296af44b4c83baa9c GIT binary patch literal 18819 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 BOC$gQ literal 0 HcmV?d00001 diff --git a/assets/svg/ru.svg b/assets/svg/ru.svg new file mode 100644 index 0000000..9c0cc49 --- /dev/null +++ b/assets/svg/ru.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/svg/uk.svg b/assets/svg/uk.svg new file mode 100644 index 0000000..f87fdb0 --- /dev/null +++ b/assets/svg/uk.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/lib/components/utils/debounce.dart b/lib/components/utils/debounce.dart index 60a18e1..5e04d15 100644 --- a/lib/components/utils/debounce.dart +++ b/lib/components/utils/debounce.dart @@ -1,7 +1,8 @@ import 'dart:async'; import 'dart:ui'; -class Debounce { //помощник +class Debounce { + //помощник factory Debounce() => _instance; //обращение через статический конструктор Debounce._(); @@ -10,11 +11,12 @@ class Debounce { //помощник static Timer? _timer; - static void run(//создаём задержку для ввода пользователя в поисковую строку - VoidCallback action, { - Duration delay = const Duration(milliseconds: 500), - }) { + static void run( + //создаём задержку для ввода пользователя в поисковую строку + VoidCallback action, { + Duration delay = const Duration(milliseconds: 500), + }) { _timer?.cancel(); _timer = Timer(delay, action); } -} \ No newline at end of file +} diff --git a/lib/data/mappers/characters_mapper.dart b/lib/data/mappers/characters_mapper.dart index a22858a..6e10678 100644 --- a/lib/data/mappers/characters_mapper.dart +++ b/lib/data/mappers/characters_mapper.dart @@ -3,9 +3,9 @@ import '../dtos/characters_dto.dart'; extension CharacterDtoToModel on CharacterDto { CardData toDomain() => CardData( - displayName ?? 'UNKNOWN', - descriptionText: developerName ?? 'Описание отсутствует', - gameDesc: description, - imageUrl: displayIcon, - ); + displayName ?? 'UNKNOWN', + descriptionText: developerName ?? 'Описание отсутствует', + gameDesc: description, + imageUrl: displayIcon, + ); } diff --git a/lib/data/repositories/api_interface.dart b/lib/data/repositories/api_interface.dart index 3ff1042..eddb317 100644 --- a/lib/data/repositories/api_interface.dart +++ b/lib/data/repositories/api_interface.dart @@ -1,8 +1,7 @@ - import '../../domain/models/card.dart'; typedef OnErrorCallback = void Function(String? error); -abstract class ApiInterface{ +abstract class ApiInterface { Future?> loadData(); -} \ No newline at end of file +} diff --git a/lib/data/repositories/characters_repository.dart b/lib/data/repositories/characters_repository.dart index 8c87429..b400691 100644 --- a/lib/data/repositories/characters_repository.dart +++ b/lib/data/repositories/characters_repository.dart @@ -16,7 +16,10 @@ class AgentsRepository extends ApiInterface { static const String _baseUrl = 'https://valorant-api.com/v1/ agents'; @override - Future?> loadData({OnErrorCallback? onError,String? q,}) async { + Future?> loadData({ + OnErrorCallback? onError, + String? q, + }) async { try { // Формирование URL для запроса final Response response = await _dio.get(_baseUrl); @@ -30,8 +33,9 @@ class AgentsRepository extends ApiInterface { // Фильтрация данных по displayName if (q != null && q.isNotEmpty) { - data = data?.where((agent) => - agent.text?.toLowerCase().contains(q.toLowerCase()) ?? false).toList(); + data = data + ?.where((agent) => agent.text?.toLowerCase().contains(q.toLowerCase()) ?? false) + .toList(); } return data; diff --git a/lib/data/repositories/mock_repository.dart b/lib/data/repositories/mock_repository.dart index 049f39f..85dc4a4 100644 --- a/lib/data/repositories/mock_repository.dart +++ b/lib/data/repositories/mock_repository.dart @@ -1,40 +1,37 @@ - import '../../domain/models/card.dart'; import 'api_interface.dart'; class MockRepository extends ApiInterface { @override - Future?> loadData() async{ + Future?> loadData() async { return [ - CardData( - 'Far Cry 1', + CardData('Far Cry 1', descriptionText: 'Так себе', - imageUrl: 'https://images.stopgame.ru/games/logos/8351/c1536x856/VdQJNv5ECykaiteg212k5g/far_cry_2-square_1.jpg', + imageUrl: + 'https://images.stopgame.ru/games/logos/8351/c1536x856/VdQJNv5ECykaiteg212k5g/far_cry_2-square_1.jpg', gameDesc: 'Обретите сверхчеловеческую мощь космодесантника. Пустите в ход смертоносные навыки и разрушительное оружие, чтобы ' + ' истребить безжалостных тиранидов. Защитите Империум в ярких одиночных боях или многопользовательских режимах с ' + 'видом от третьего лица. В продолжении экшена 2011 года Space Marine вам предстоит сразиться с врагами человечества и' + ' вновь доказать ему свою преданность в роли лейтенанта Деметрия Тита, который вернулся в ряды Ультрамаринов. Дайте отпор ' + 'ужасам Галактики в эпических боях сразу на нескольких планетах. Раскройте мрачные секреты и отбросьте тень вечной ночи.'), // создаётся объект ранее созданного контейнера - CardData( - 'Far Cry 2', + CardData('Far Cry 2', descriptionText: 'Лучше', - imageUrl: 'https://images.stopgame.ru/games/logos/8351/c1536x856/VdQJNv5ECykaiteg212k5g/far_cry_2-square_1.jpg', + imageUrl: + 'https://images.stopgame.ru/games/logos/8351/c1536x856/VdQJNv5ECykaiteg212k5g/far_cry_2-square_1.jpg', gameDesc: 'Обретите сверхчеловеческую мощь космодесантника. Пустите в ход смертоносные навыки и разрушительное оружие, чтобы ' + ' истребить безжалостных тиранидов. Защитите Империум в ярких одиночных боях или многопользовательских режимах с ' + 'видом от третьего лица. В продолжении экшена 2011 года Space Marine вам предстоит сразиться с врагами человечества и' + ' вновь доказать ему свою преданность в роли лейтенанта Деметрия Тита, который вернулся в ряды Ультрамаринов. Дайте отпор ' + 'ужасам Галактики в эпических боях сразу на нескольких планетах. Раскройте мрачные секреты и отбросьте тень вечной ночи.'), - CardData( - 'Far Cry 3', + CardData('Far Cry 3', descriptionText: 'Красавцы', - imageUrl: 'https://images.stopgame.ru/games/logos/8351/c1536x856/VdQJNv5ECykaiteg212k5g/far_cry_2-square_1.jpg', + imageUrl: + 'https://images.stopgame.ru/games/logos/8351/c1536x856/VdQJNv5ECykaiteg212k5g/far_cry_2-square_1.jpg', gameDesc: 'Обретите сверхчеловеческую мощь космодесантника. Пустите в ход смертоносные навыки и разрушительное оружие, чтобы ' + ' истребить безжалостных тиранидов. Защитите Империум в ярких одиночных боях или многопользовательских режимах с ' + 'видом от третьего лица. В продолжении экшена 2011 года Space Marine вам предстоит сразиться с врагами человечества и' + ' вновь доказать ему свою преданность в роли лейтенанта Деметрия Тита, который вернулся в ряды Ультрамаринов. Дайте отпор ' + - 'ужасам Галактики в эпических боях сразу на нескольких планетах. Раскройте мрачные секреты и отбросьте тень вечной ночи.' - - ), + 'ужасам Галактики в эпических боях сразу на нескольких планетах. Раскройте мрачные секреты и отбросьте тень вечной ночи.'), ]; } -} \ No newline at end of file +} diff --git a/lib/domain/models/card.dart b/lib/domain/models/card.dart index f5929f4..fcdc380 100644 --- a/lib/domain/models/card.dart +++ b/lib/domain/models/card.dart @@ -8,10 +8,10 @@ class CardData { final String? gameDesc; CardData( - this.text, { - required this.descriptionText, - //this.icon = Icons.ac_unit_outlined, - this.imageUrl, - required this.gameDesc, - }); -} \ No newline at end of file + this.text, { + required this.descriptionText, + //this.icon = Icons.ac_unit_outlined, + this.imageUrl, + required this.gameDesc, + }); +} diff --git a/lib/main.dart b/lib/main.dart index 1710bb4..270757f 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -20,21 +20,18 @@ class MyApp extends StatelessWidget { colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepOrange), useMaterial3: true, ), - home: RepositoryProvider( //даём нашему репозиторию доступ + home: RepositoryProvider( + //даём нашему репозиторию доступ lazy: true, //ленивое создание объекта create: (_) => AgentsRepository(), - child: BlocProvider( //даём доступ Bloc для нашей страницы + child: BlocProvider( + //даём доступ Bloc для нашей страницы lazy: false, - create: (context) => HomeBloc(context.read()), //в конструктор нашего Блока передаём репозиторий с нашей апи, то есть у нас появляется доступ по дереву к апи + create: (context) => HomeBloc(context.read< + AgentsRepository>()), //в конструктор нашего Блока передаём репозиторий с нашей апи, то есть у нас появляется доступ по дереву к апи child: const MyHomePage(title: 'Агенты Valorant'), ), ), ); } } - - - - - - diff --git a/lib/presentation/details_page/details_page.dart b/lib/presentation/details_page/details_page.dart index ed46e57..d2df418 100644 --- a/lib/presentation/details_page/details_page.dart +++ b/lib/presentation/details_page/details_page.dart @@ -9,12 +9,15 @@ class DetailsPage extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( - appBar: AppBar(backgroundColor: Colors.deepPurple, + appBar: AppBar( + backgroundColor: Colors.deepPurple, ), body: SingleChildScrollView( child: Container( - constraints: BoxConstraints( minHeight: MediaQuery.sizeOf(context).height - 105), - decoration: const BoxDecoration(color: Colors.deepPurpleAccent,), + constraints: BoxConstraints(minHeight: MediaQuery.sizeOf(context).height - 105), + decoration: const BoxDecoration( + color: Colors.deepPurpleAccent, + ), padding: const EdgeInsets.all(0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -40,4 +43,4 @@ class DetailsPage extends StatelessWidget { ), ); } -} \ No newline at end of file +} diff --git a/lib/presentation/home_page/bloc/bloc.dart b/lib/presentation/home_page/bloc/bloc.dart index 4b50176..ca8be37 100644 --- a/lib/presentation/home_page/bloc/bloc.dart +++ b/lib/presentation/home_page/bloc/bloc.dart @@ -3,28 +3,30 @@ import 'package:flutter_test_app/presentation/home_page/bloc/events.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import '../../../data/repositories/characters_repository.dart'; -class HomeBloc extends Bloc{//наследуем от Bloc и передаём состояния +class HomeBloc extends Bloc { + //наследуем от Bloc и передаём состояния final AgentsRepository rep; HomeBloc(this.rep) : super(const HomeState()) { on(_onLoadData); } - Future _onLoadData( - HomeLoadDataEvent event, Emitter emit) async { + Future _onLoadData(HomeLoadDataEvent event, Emitter emit) async { emit(state.copyWith(isLoading: true)); //метода emit изменяет наши состояния String? error; - final data = await rep.loadData( //загрузка данных + final data = await rep.loadData( + //загрузка данных q: event.search, onError: (e) => error = e, ); - emit(state.copyWith( //метода emit изменяет наши состояния + emit(state.copyWith( + //метода emit изменяет наши состояния isLoading: false, //флаг загрузки меняем на false data: data, error: error, )); } -} \ No newline at end of file +} diff --git a/lib/presentation/home_page/bloc/events.dart b/lib/presentation/home_page/bloc/events.dart index 70d3132..dc28622 100644 --- a/lib/presentation/home_page/bloc/events.dart +++ b/lib/presentation/home_page/bloc/events.dart @@ -1,9 +1,10 @@ -abstract class HomeEvent{ //наследуем все события +abstract class HomeEvent { + //наследуем все события const HomeEvent(); } -class HomeLoadDataEvent extends HomeEvent{ +class HomeLoadDataEvent extends HomeEvent { final String? search; //событие поиска const HomeLoadDataEvent({this.search}); //событие на загрузку данных -} \ No newline at end of file +} diff --git a/lib/presentation/home_page/bloc/state.dart b/lib/presentation/home_page/bloc/state.dart index fe51cd7..0a45d8b 100644 --- a/lib/presentation/home_page/bloc/state.dart +++ b/lib/presentation/home_page/bloc/state.dart @@ -3,7 +3,8 @@ import 'package:equatable/equatable.dart'; import '../../../domain/models/card.dart'; @CopyWith() -class HomeState extends Equatable{ //сравнение двух состояний через Equatable +class HomeState extends Equatable { + //сравнение двух состояний через Equatable final List? data; final bool isLoading; //отображение загрузки final String? error; //отображение ошибок @@ -14,7 +15,8 @@ class HomeState extends Equatable{ //сравнение двух состоян this.error, }); - HomeState copyWith({ //copyWith создаёт копию объекта с изменением некоторых данных + HomeState copyWith({ + //copyWith создаёт копию объекта с изменением некоторых данных List? data, bool? isLoading, String? error, @@ -27,8 +29,8 @@ class HomeState extends Equatable{ //сравнение двух состоян @override List get props => [ - data, - isLoading, - error, - ]; -} \ No newline at end of file + data, + isLoading, + error, + ]; +} diff --git a/lib/presentation/home_page/card.dart b/lib/presentation/home_page/card.dart index 8fc17b7..9d04111 100644 --- a/lib/presentation/home_page/card.dart +++ b/lib/presentation/home_page/card.dart @@ -2,7 +2,6 @@ part of 'home_page.dart'; typedef OnLikeCallback = void Function(String title, bool isLiked); //сделано от дублирования кода - class _Card extends StatefulWidget { final String text; final String descriptionText; @@ -12,20 +11,19 @@ class _Card extends StatefulWidget { final VoidCallback? onTap; const _Card( - this.text, { - //this.icon = Icons.ac_unit_outlined, - required this.descriptionText, - this.imageUrl, - this.onLike, - this.onTap, - } - ); + this.text, { + //this.icon = Icons.ac_unit_outlined, + required this.descriptionText, + this.imageUrl, + this.onLike, + this.onTap, + }); factory _Card.fromData( - CardData data, { - OnLikeCallback? onLike, - VoidCallback? onTap, - }) => + CardData data, { + OnLikeCallback? onLike, + VoidCallback? onTap, + }) => _Card( data.text!, descriptionText: data.descriptionText!, @@ -38,7 +36,6 @@ class _Card extends StatefulWidget { State<_Card> createState() => _CardState(); } - class _CardState extends State<_Card> { bool isLiked = false; @override @@ -57,8 +54,7 @@ class _CardState extends State<_Card> { border: Border.all( color: Colors.grey, width: 2, - ) - ), + )), child: IntrinsicHeight( child: Row( crossAxisAlignment: CrossAxisAlignment.start, @@ -71,7 +67,8 @@ class _CardState extends State<_Card> { child: SizedBox( height: 160, width: 160, - child: Stack( // делаем поверх картинки надпись New + child: Stack( + // делаем поверх картинки надпись New children: [ Positioned.fill( child: Image.network( @@ -111,11 +108,11 @@ class _CardState extends State<_Card> { children: [ Text( widget.text, - style:Theme.of(context).textTheme.headlineLarge, + style: Theme.of(context).textTheme.headlineLarge, ), Text( widget.descriptionText, - style:Theme.of(context).textTheme.bodyLarge, + style: Theme.of(context).textTheme.bodyLarge, ), ], ), @@ -130,24 +127,25 @@ class _CardState extends State<_Card> { bottom: 16, ), child: GestureDetector( - onTap: (){ - setState((){ + onTap: () { + setState(() { isLiked = !isLiked; // установка лайков }); widget.onLike?.call(widget.text, isLiked); }, - child: AnimatedSwitcher( // Анимация для наших лайков + child: AnimatedSwitcher( + // Анимация для наших лайков duration: const Duration(milliseconds: 300), child: isLiked - ? const Icon ( - Icons.favorite, - color: Colors.redAccent, - key: ValueKey(0), // ключи для перерисовки - ) + ? const Icon( + Icons.favorite, + color: Colors.redAccent, + key: ValueKey(0), // ключи для перерисовки + ) : const Icon( - Icons.favorite_border, - key: ValueKey(1), // ключи для перерисовки - ), + Icons.favorite_border, + key: ValueKey(1), // ключи для перерисовки + ), ), ), ), @@ -159,4 +157,4 @@ class _CardState extends State<_Card> { ), ); } -} \ No newline at end of file +} diff --git a/lib/presentation/home_page/home_page.dart b/lib/presentation/home_page/home_page.dart index fe1b880..d624677 100644 --- a/lib/presentation/home_page/home_page.dart +++ b/lib/presentation/home_page/home_page.dart @@ -49,7 +49,8 @@ class _BodyState extends State { @override void initState() { - WidgetsBinding.instance.addPostFrameCallback((_) { // привязываем логику к кадру + WidgetsBinding.instance.addPostFrameCallback((_) { + // привязываем логику к кадру context.read().add(const HomeLoadDataEvent()); // добавляем данные после считывания }); super.initState(); @@ -61,10 +62,9 @@ class _BodyState extends State { _scrollController.dispose(); super.dispose(); } + Future _onRefresh() { - context - .read() - .add(HomeLoadDataEvent(search: searchController.text)); + context.read().add(HomeLoadDataEvent(search: searchController.text)); return Future.value(null); //прекращение отображения загрузки } @@ -72,8 +72,8 @@ class _BodyState extends State { void _scrollToCard(String searchQuery, List? dataList) { if (dataList == null || dataList.isEmpty) return; - final index = dataList.indexWhere((data) => - data.text?.toLowerCase() == searchQuery.toLowerCase()); + final index = + dataList.indexWhere((data) => data.text?.toLowerCase() == searchQuery.toLowerCase()); if (index != -1) { _scrollController.animateTo( @@ -92,44 +92,41 @@ class _BodyState extends State { padding: const EdgeInsets.all(12), child: CupertinoSearchTextField( controller: searchController, - onChanged: (search ) { //вызов задержки пока пользователь не перестанет печатать в поисковой строке - Debounce.run(() => context - .read() - .add(HomeLoadDataEvent(search: search))); + onChanged: (search) { + //вызов задержки пока пользователь не перестанет печатать в поисковой строке + Debounce.run(() => context.read().add(HomeLoadDataEvent(search: search))); }, ), ), - BlocBuilder( //ждёт изменения состояния + BlocBuilder( + //ждёт изменения состояния builder: (context, state) => state.error != null ? Text( - state.error ?? '', - style: Theme.of(context) - .textTheme - .headlineSmall - ?.copyWith(color: Colors.red), - ) + state.error ?? '', + style: Theme.of(context).textTheme.headlineSmall?.copyWith(color: Colors.red), + ) : state.isLoading - ? const CircularProgressIndicator() - : Expanded( - child: RefreshIndicator( - onRefresh: _onRefresh, - child: ListView.builder( - padding: EdgeInsets.zero, - itemCount: state.data?.length ?? 0, - itemBuilder: (context, index) { - final data = state.data?[index]; - return data != null - ? _Card.fromData( - data, - onLike: (String title, bool isLiked) => - _showSnackBar(context, title, isLiked), - onTap: () => _navToDetails(context, data), - ) - : const SizedBox.shrink(); - }, - ), - ), - ), + ? const CircularProgressIndicator() + : Expanded( + child: RefreshIndicator( + onRefresh: _onRefresh, + child: ListView.builder( + padding: EdgeInsets.zero, + itemCount: state.data?.length ?? 0, + itemBuilder: (context, index) { + final data = state.data?[index]; + return data != null + ? _Card.fromData( + data, + onLike: (String title, bool isLiked) => + _showSnackBar(context, title, isLiked), + onTap: () => _navToDetails(context, data), + ) + : const SizedBox.shrink(); + }, + ), + ), + ), ), ], ); @@ -155,4 +152,3 @@ class _BodyState extends State { }); } } - diff --git a/makefile b/makefile new file mode 100644 index 0000000..fde0a1b --- /dev/null +++ b/makefile @@ -0,0 +1,11 @@ +gen: + flutter pub run build_runner build --delete-conflicting-outputs +icon: + flutter pub run flutter_launcher_icons:main +init_res: + dart pub global activate flutter_assets_generator +format: + dart format . --line-length 100 +res: + fgen --output lib/components/resources.g.dart --no-watch --no-preview; \ + mingw32-make format \ No newline at end of file diff --git a/pubspec.lock b/pubspec.lock index 3212b9d..e99a845 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -22,6 +22,14 @@ packages: url: "https://pub.dev" source: hosted version: "6.7.0" + archive: + dependency: transitive + description: + name: archive + sha256: cb6a278ef2dbb298455e1a713bda08524a175630ec643a242c399c932a0a1f7d + url: "https://pub.dev" + source: hosted + version: "3.6.1" args: dependency: transitive description: @@ -134,6 +142,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.3" + cli_util: + dependency: transitive + description: + name: cli_util + sha256: ff6785f7e9e3c38ac98b2fb035701789de90154024a75b6cb926445e83197d1c + url: "https://pub.dev" + source: hosted + version: "0.4.2" clock: dependency: transitive description: @@ -167,7 +183,7 @@ packages: source: hosted version: "3.1.2" copy_with_extension: - dependency: transitive + dependency: "direct main" description: name: copy_with_extension sha256: fbcf890b0c34aedf0894f91a11a579994b61b4e04080204656b582708b5b1125 @@ -246,6 +262,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.3.1" + ffi: + dependency: transitive + description: + name: ffi + sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6" + url: "https://pub.dev" + source: hosted + version: "2.1.3" file: dependency: transitive description: @@ -275,6 +299,14 @@ packages: url: "https://pub.dev" source: hosted version: "8.1.6" + flutter_launcher_icons: + dependency: "direct dev" + description: + name: flutter_launcher_icons + sha256: "526faf84284b86a4cb36d20a5e45147747b7563d921373d4ee0559c54fcdbcea" + url: "https://pub.dev" + source: hosted + version: "0.13.1" flutter_lints: dependency: "direct dev" description: @@ -283,11 +315,29 @@ packages: url: "https://pub.dev" source: hosted version: "4.0.0" + flutter_localizations: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_svg: + dependency: "direct main" + description: + name: flutter_svg + sha256: "8c5d68a82add3ca76d792f058b186a0599414f279f00ece4830b9b231b570338" + url: "https://pub.dev" + source: hosted + version: "2.0.7" flutter_test: dependency: "direct dev" description: flutter source: sdk version: "0.0.0" + flutter_web_plugins: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" frontend_server_client: dependency: transitive description: @@ -320,6 +370,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.15.5" + http: + dependency: transitive + description: + name: http + sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010 + url: "https://pub.dev" + source: hosted + version: "1.2.2" http_multi_server: dependency: transitive description: @@ -336,14 +394,30 @@ packages: url: "https://pub.dev" source: hosted version: "4.0.2" + image: + dependency: transitive + description: + name: image + sha256: f31d52537dc417fdcde36088fdf11d191026fd5e4fae742491ebd40e5a8bea7d + url: "https://pub.dev" + source: hosted + version: "4.3.0" + intl: + dependency: "direct main" + description: + name: intl + sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf + url: "https://pub.dev" + source: hosted + version: "0.19.0" io: dependency: transitive description: name: io - sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e" + sha256: dfd5a80599cf0165756e3181807ed3e77daf6dd4137caaad72d0b7931597650b url: "https://pub.dev" source: hosted - version: "1.0.4" + version: "1.0.5" js: dependency: transitive description: @@ -364,10 +438,10 @@ packages: dependency: "direct dev" description: name: json_serializable - sha256: ea1432d167339ea9b5bb153f0571d0039607a873d6e04e0117af043f14a1fd4b + sha256: c2fcb3920cf2b6ae6845954186420fca40bc0a8abcc84903b7801f17d7050d7c url: "https://pub.dev" source: hosted - version: "6.8.0" + version: "6.9.0" leak_tracker: dependency: transitive description: @@ -460,10 +534,10 @@ packages: dependency: transitive description: name: package_config - sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd" + sha256: "92d4488434b520a62570293fbd33bb556c7d49230791c1b4bbd973baf6d2dc67" url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" path: dependency: transitive description: @@ -472,6 +546,62 @@ packages: url: "https://pub.dev" source: hosted version: "1.9.0" + path_parsing: + dependency: transitive + description: + name: path_parsing + sha256: "883402936929eac138ee0a45da5b0f2c80f89913e6dc3bf77eb65b84b409c6ca" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + path_provider_linux: + dependency: transitive + description: + name: path_provider_linux + sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 + url: "https://pub.dev" + source: hosted + version: "2.2.1" + path_provider_platform_interface: + dependency: transitive + description: + name: path_provider_platform_interface + sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7 + url: "https://pub.dev" + source: hosted + version: "2.3.0" + petitparser: + dependency: transitive + description: + name: petitparser + sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27 + url: "https://pub.dev" + source: hosted + version: "6.0.2" + platform: + dependency: transitive + description: + name: platform + sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984" + url: "https://pub.dev" + source: hosted + version: "3.1.6" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" + url: "https://pub.dev" + source: hosted + version: "2.1.8" pool: dependency: transitive description: @@ -500,10 +630,10 @@ packages: dependency: transitive description: name: pub_semver - sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c" + sha256: "7b3cfbf654f3edd0c6298ecd5be782ce997ddf0e00531b9464b55245185bbbbd" url: "https://pub.dev" source: hosted - version: "2.1.4" + version: "2.1.5" pubspec_parse: dependency: transitive description: @@ -512,6 +642,62 @@ packages: url: "https://pub.dev" source: hosted version: "1.3.0" + shared_preferences: + dependency: "direct main" + description: + name: shared_preferences + sha256: "95f9997ca1fb9799d494d0cb2a780fd7be075818d59f00c43832ed112b158a82" + url: "https://pub.dev" + source: hosted + version: "2.3.3" + shared_preferences_android: + dependency: transitive + description: + name: shared_preferences_android + sha256: "7f172d1b06de5da47b6264c2692ee2ead20bbbc246690427cdb4fc301cd0c549" + url: "https://pub.dev" + source: hosted + version: "2.3.4" + shared_preferences_foundation: + dependency: transitive + description: + name: shared_preferences_foundation + sha256: "07e050c7cd39bad516f8d64c455f04508d09df104be326d8c02551590a0d513d" + url: "https://pub.dev" + source: hosted + version: "2.5.3" + shared_preferences_linux: + dependency: transitive + description: + name: shared_preferences_linux + sha256: "580abfd40f415611503cae30adf626e6656dfb2f0cee8f465ece7b6defb40f2f" + url: "https://pub.dev" + source: hosted + version: "2.4.1" + shared_preferences_platform_interface: + dependency: transitive + description: + name: shared_preferences_platform_interface + sha256: "57cbf196c486bc2cf1f02b85784932c6094376284b3ad5779d1b1c6c6a816b80" + url: "https://pub.dev" + source: hosted + version: "2.4.1" + shared_preferences_web: + dependency: transitive + description: + name: shared_preferences_web + sha256: d2ca4132d3946fec2184261726b355836a82c33d7d5b67af32692aff18a4684e + url: "https://pub.dev" + source: hosted + version: "2.4.2" + shared_preferences_windows: + dependency: transitive + description: + name: shared_preferences_windows + sha256: "94ef0f72b2d71bc3e700e025db3710911bd51a71cefb65cc609dd0d9a982e3c1" + url: "https://pub.dev" + source: hosted + version: "2.4.1" shelf: dependency: transitive description: @@ -524,10 +710,10 @@ packages: dependency: transitive description: name: shelf_web_socket - sha256: "073c147238594ecd0d193f3456a5fe91c4b0abbcc68bf5cd95b36c4e194ac611" + sha256: cc36c297b52866d203dbf9332263c94becc2fe0ceaa9681d07b6ef9807023b67 url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "2.0.1" sky_engine: dependency: transitive description: flutter @@ -621,6 +807,30 @@ packages: url: "https://pub.dev" source: hosted version: "1.4.0" + vector_graphics: + dependency: transitive + description: + name: vector_graphics + sha256: "27d5fefe86fb9aace4a9f8375b56b3c292b64d8c04510df230f849850d912cb7" + url: "https://pub.dev" + source: hosted + version: "1.1.15" + vector_graphics_codec: + dependency: transitive + description: + name: vector_graphics_codec + sha256: "2430b973a4ca3c4dbc9999b62b8c719a160100dcbae5c819bae0cacce32c9cdb" + url: "https://pub.dev" + source: hosted + version: "1.1.12" + vector_graphics_compiler: + dependency: transitive + description: + name: vector_graphics_compiler + sha256: "1b4b9e706a10294258727674a340ae0d6e64a7231980f9f9a3d12e4b42407aad" + url: "https://pub.dev" + source: hosted + version: "1.1.16" vector_math: dependency: transitive description: @@ -669,6 +879,22 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.1" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + xml: + dependency: transitive + description: + name: xml + sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226 + url: "https://pub.dev" + source: hosted + version: "6.5.0" yaml: dependency: transitive description: @@ -679,4 +905,4 @@ packages: version: "3.1.2" sdks: dart: ">=3.5.2 <4.0.0" - flutter: ">=3.18.0-18.0.pre.54" + flutter: ">=3.24.0" diff --git a/pubspec.yaml b/pubspec.yaml index 10b3558..d58de65 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -38,11 +38,17 @@ dependencies: cupertino_icons: ^1.0.8 dio: ^5.4.2+1 pretty_dio_logger: ^1.3.1 - json_annotation: ^4.8.1 + json_annotation: ^4.9.0 html: ^0.15.0 equatable: ^2.0.5 flutter_bloc: ^8.1.5 copy_with_extension_gen: ^5.0.4 + flutter_svg: 2.0.7 + flutter_localizations: + sdk: flutter + intl: ^0.19.0 + copy_with_extension: ^5.0.4 + shared_preferences: ^2.2.3 dev_dependencies: flutter_test: @@ -53,21 +59,26 @@ dev_dependencies: # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. + flutter_launcher_icons: 0.13.1 build_runner: ^2.4.9 json_serializable: ^6.7.1 flutter_lints: ^4.0.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec - +flutter_launcher_icons: + android: "ic_launcher" + image_path: "assets/ic_launcher.png" + min_sdk_android: 21 # The following section is specific to Flutter packages. flutter: - + generate: true # The following line ensures that the Material Icons font is # included with your application, so that you can use the icons in # the material Icons class. uses-material-design: true - + assets: + - assets/svg/ # To add assets to your application, add an assets section, like this: # assets: # - images/a_dot_burr.jpeg