From 0549db07c2065e19e5f78df7525aa97b0047c1f0 Mon Sep 17 00:00:00 2001 From: annaksenova Date: Sun, 21 Dec 2025 19:55:25 +0300 Subject: [PATCH] Homework --- app/build.gradle | 5 +- app/src/main/AndroidManifest.xml | 3 + app/src/main/cart_placeholder-playstore.png | Bin 0 -> 17453 bytes .../main/ic_cart_placeholder-playstore.png | Bin 0 -> 14361 bytes .../homework/viewandresources/CartActivity.kt | 42 +- .../viewandresources/ContactsActivity.kt | 30 +- .../viewandresources/LoginActivity.kt | 15 + .../viewandresources/cart/CartAdapter.kt | 40 ++ .../viewandresources/model/CartItem.kt | 9 + .../viewandresources/model/Contact.kt | 6 + .../ui/contacts/ContactsAdapter.kt | 4 + .../res/drawable/contact_field_background.xml | 23 + .../main/res/drawable/ic_arrow_back_24.xml | 7 + .../res/drawable/ic_arrow_drop_down_24.xml | 9 + app/src/main/res/drawable/ic_attach_24.xml | 9 + app/src/main/res/drawable/ic_bookmark_24.xml | 9 + app/src/main/res/drawable/ic_calendar_24.xml | 9 + .../main/res/drawable/ic_cart_placeholder.png | Bin 0 -> 2343 bytes app/src/main/res/drawable/ic_cart_smile.xml | 9 + app/src/main/res/drawable/ic_close_20.xml | 9 + app/src/main/res/drawable/ic_menu_48.xml | 13 + app/src/main/res/drawable/ic_mic_24.xml | 9 + app/src/main/res/drawable/ic_more_vert_24.xml | 9 + app/src/main/res/drawable/ic_person.xml | 9 + app/src/main/res/drawable/ic_person_24.xml | 9 + app/src/main/res/drawable/ic_sun_24.xml | 9 + app/src/main/res/layout/activity_cart.xml | 171 ++++++- app/src/main/res/layout/activity_contacts.xml | 427 +++++++++++++++++- app/src/main/res/layout/activity_login.xml | 120 +++++ app/src/main/res/layout/item_cart.xml | 75 +++ app/src/main/res/menu/menu_cart.xml | 10 + app/src/main/res/menu/menu_contact.xml | 15 + app/src/main/res/menu/menu_login.xml | 10 + app/src/main/res/values-night/color.xml | 14 + app/src/main/res/values-night/themes.xml | 11 +- app/src/main/res/values/colors.xml | 20 +- app/src/main/res/values/dimens.xml | 26 ++ app/src/main/res/values/strings.xml | 18 + app/src/main/res/values/styles.xml | 107 +++++ app/src/main/res/values/themes.xml | 7 +- 40 files changed, 1302 insertions(+), 25 deletions(-) create mode 100644 app/src/main/cart_placeholder-playstore.png create mode 100644 app/src/main/ic_cart_placeholder-playstore.png create mode 100644 app/src/main/java/otus/gpb/homework/viewandresources/LoginActivity.kt create mode 100644 app/src/main/java/otus/gpb/homework/viewandresources/cart/CartAdapter.kt create mode 100644 app/src/main/java/otus/gpb/homework/viewandresources/model/CartItem.kt create mode 100644 app/src/main/java/otus/gpb/homework/viewandresources/model/Contact.kt create mode 100644 app/src/main/java/otus/gpb/homework/viewandresources/ui/contacts/ContactsAdapter.kt create mode 100644 app/src/main/res/drawable/contact_field_background.xml create mode 100644 app/src/main/res/drawable/ic_arrow_back_24.xml create mode 100644 app/src/main/res/drawable/ic_arrow_drop_down_24.xml create mode 100644 app/src/main/res/drawable/ic_attach_24.xml create mode 100644 app/src/main/res/drawable/ic_bookmark_24.xml create mode 100644 app/src/main/res/drawable/ic_calendar_24.xml create mode 100644 app/src/main/res/drawable/ic_cart_placeholder.png create mode 100644 app/src/main/res/drawable/ic_cart_smile.xml create mode 100644 app/src/main/res/drawable/ic_close_20.xml create mode 100644 app/src/main/res/drawable/ic_menu_48.xml create mode 100644 app/src/main/res/drawable/ic_mic_24.xml create mode 100644 app/src/main/res/drawable/ic_more_vert_24.xml create mode 100644 app/src/main/res/drawable/ic_person.xml create mode 100644 app/src/main/res/drawable/ic_person_24.xml create mode 100644 app/src/main/res/drawable/ic_sun_24.xml create mode 100644 app/src/main/res/layout/activity_login.xml create mode 100644 app/src/main/res/layout/item_cart.xml create mode 100644 app/src/main/res/menu/menu_cart.xml create mode 100644 app/src/main/res/menu/menu_contact.xml create mode 100644 app/src/main/res/menu/menu_login.xml create mode 100644 app/src/main/res/values-night/color.xml create mode 100644 app/src/main/res/values/dimens.xml create mode 100644 app/src/main/res/values/styles.xml diff --git a/app/build.gradle b/app/build.gradle index debcfaf..48d735f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -12,10 +12,13 @@ android { targetSdk 35 versionCode 1 versionName "1.0" - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } + buildFeatures { + viewBinding true + } + buildTypes { release { minifyEnabled false diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 608e135..02b9d7e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -21,6 +21,9 @@ android:name=".ContactsActivity" android:label="Contacts" android:exported="false" /> + diff --git a/app/src/main/cart_placeholder-playstore.png b/app/src/main/cart_placeholder-playstore.png new file mode 100644 index 0000000000000000000000000000000000000000..ce2797f1ef91751a2a7651e6e7f313c493ac9221 GIT binary patch literal 17453 zcmd74c|6o@`#*fn5DKA9vQw#uA|%_0P}!<0Wr<`fd-iS26h(_>BsBIbMY0uTUt8__ zlAV$@V;c=KgXjFHuIsw*`}=*K*Zutd`Tb)opU-(7=drwx<2)93j0|)*H|^R40N^~S zt92FtH2f9~*jV5P#kZXXfF|Xnmc}2x7SsJE9s=Ed$-}GGa+^XwIv&+N`~LmsXo2BZ z*x~XsAu3xppFCXrQoi$x3wgILx8$8$AS_%&_lkHJmQ`2ked77gyxw&c!+Jp{?c^5f zn8ZvlS<4nGqVkxV7+d2Y*X@(-%U`tHXp-F!q)+%VYahEF2W^avC>%t4}noR20DlaoY z0kEXYwfc|~EOX7Nd%MP|8(Qx7RoAstR3F$chl?xcpQldHM=wn5I7bqCX=>nXmbC={ zJf7Ab)=`n#Q?Fi_r`;q>Iw>1RDLtSiJGD}@cFS_Z{GGKgjDRY-YvW7<*V(RmLj05{ z?pvS2+Lt4-CFvF!&)TCqUPOvP77nI+S(vP}UX#U5|2ug>7ED7G$0}aY5~m0WYlm>7 zfr4}5W4D);)A|_JFT_Spr}Z%6+Uy+8wR&^kHX!|7#21FFt5acEC&AKt{{qtf=4s@&W1N^&IzKdeBLjo?j`g%Ny$sJLRX$N z|3`)5_cy4qH-1x3#aN+i;1;{{PKse9eP|6b@u|PpKarG}60>IvCF1(<@`7VpgXhz| z`i2f_TG6I@%8nN2ueocw=6Z4gBaxpfa;jP?l9W0YU#~{G;V(_22$V@Faetadt`br&hCOFR1cZ}l$$a8f+a&@MUgp4!TNyrCGzE<5qvbx0~0 z;Xz^G$CfZ40zWot0d7b?vlu|+g5G`!RBt|!d-6umJM?m@P4~@JR3MENGTy$;qg^7; z7+FO&?(26kNDwfpqzLSRpSnO*XCwUFf@wMfS%7D5_ILz;6hTo08cu@hy-c_fMrYvQ z@}>8LejKICAg^*LG3<3p)2hmVnk@W-AI)K2Y6-~s5)b;wqmQK8= zp(wN4eKcVwd383(=KNpZVqDF6)3S7&xCT&Q-Eh8n!)Wh%B>lm5ewUWA&pZ|oY4A&ak+ zqz{B4M)f5^4S)?N>^w5$tZL&2!Yq&J4>(CcBKI9;hF_uN03c%4zkPHD1o{~{zUOM~ zDtmKN-QDGJPQ0}1XGf++$A!+5CswWClj^c@w%VteugbRB<_9R#it`4N=#~h?@<1?L z$luC<&~rp7#X|q;JeN~$5!d?OdG%LS3vM9?ll^MjN%vU0x8~7&`Tbz(jDNtUHR~5| zdtHoh*P$u|+N9Pw#qh}>t0E-rxevdH+<;02wv5+q*VUdP=W@>%4O{IG z%x{2PpNk+#2QU~>%3s$85*F2c?8}$FjFQ>KSLHiKv$iwB+lHqPJgtDM>{G)wmM$x% zbudo9sA3%GcgiMv1(aVkG~_#zwCnJjM#+V0KKXNv4kPSP1HZ_TGav67dsZ|>d0hKP zh2LwrNyJ|FS^YcXe)7=U zZI7FGeJnpJ!=N_m$7+QLvcvVb9slzl%)sbN{<#4AR@@GZJ2${YboUM1ArhvBr3Ee= zD06L9W;LcwF;@uTTeSf=p~dAO2p%YZm*=CD1n9uOz&DV$cv^yEp)B{K!9Fp6qpbkQ zp7{AR8eme{Kyui)hCallZ74|ijA}*yjq-9*erpEHO-dKq$aMVy9je-LAI+{dbAJZ^ z1HZgd7rW7zOo|*@&E(iV%X8{-m3d5<2@!x78&?02)T0zeY+7bgAD^b>n_M)PkCe;F z`tgI1HR4!XkshiJx7iFy*}@F)b&!=OZUW#&g1hKK)=6(gfo&W4=4BtZm4x!lFMsRM z&s*{qA8DA6B_*02dG}S$nDzlz%Eqm`zQh)wOm-VkR|zNT&~rYf>J4VRA|}R&r>2xN zwHJ7r*4Sw%_@BH?TrCINB;b~ZXgmdmw`XoBe>XH(;}$)=65Cs%?`-X;dmekQ=z7ja z1}!7b*m3GX6eA$tQnC6|7)U+>`FEowI0^EP6H4PUWe6IR4HKktr|J^KuWk%fd2OyB z$V!EOd6XzIV1V6`n~hr=de8quBbV8zbJ4I~N=s!Ld(GuSd#q%^OsIL;IV+dwuE!&IL*(OT0;NCGi7#dVPqL! zv^I3+4`*weLi&hD6jxkkcGP(jRdS%q$Gu~vSs}rr7BT?@idQ_F-)$(^yR1Ly9b>`M z+02EeV~PmlZ%R5A2RQ?>-f}XlE@3aYT)0>hw~3R`@c7QeEh1_8gbbi~zdv5C0|h4Z zza1=byvh)&>>f0z-s;!EF!9_L234i4XYp-cdf?9CidIXmwFUH0Pr|7TovcfCLmh>D zyAn3>CB-fr*W$v#mDS+Nw*FbAhFnI2wLQ_KcHTJ1IVYKy-dRLy zm+&?;Jd^CYZr#EIkgK;YOi^fCa1W@4Mr`ZK5HLaCYi|+vAgwI*S&Fh&^k_|U zv{g=xo0=q`G!rz@Ll5X)Zw^qWI0*)%jyG9h;SG;YKBJcPb7*=GxNduj3j)g!1Wa}l z!WMVo21oN%l({?P4t-bMRDo45%}C<7Y%-M-x_Dyz;%wCUPEs7zp+3B%Lv()bL7J+a zo3F|h@1T}|9Yf5Yw|?Ov0DIvq(FW#9ueU#BS;OUWg z1AiQ$6bU&ne?py?LZXgjBdFawYVNIw<=kDnZ0l9`V(P=`0MM7wXacHVpr`HuNuk)$ zA8Df|Gj(j;`>uXkDRPoQKO#&aYO{Xw-06pV+~}ba#yQ$)nKqIZe#}8_f=e0&jU(aAG!W-}u=#Ygm-BCz9)ZfHx4G0rU_H1to>s)r8l&fRuKVMD8$^qEIS%i|i> zaeO;>5&B#P`-2=zlABIWpIDW`*J%R4yIXm+rn0Mds8-rn{Ht7Q>hP;5q2v|~Q}f;C zE`1q?yJ}w?C;y>x#4vF&uIqG$af!>mZe8Y=W+FsYgt9FlcdYCnxUHQg7ThWkJfNLu z*M-X`j$58y+6`=mEQ>DjxM!4h(&Z}|aoaP>R;(q9E^P!N0smj;d;dD2C+{I|#su%n zJ6Y3$GaWOs&FV2i#kU~LCY9pnX#EZziw3sUS#+-YuM$lSBlS0c*3y)-39?hC{8t8NhXif9!ypKi!s6yhP~pxs=DVg?Xl@Jmp^3ZYryp+mt0 zLSdUjY{5Xl5mAHkmSzUr!5m^HJ!y&zp3|<1^?BtQu2}&_Q;}n-`LE>XCvizaj1NNK zxQsoeW{ZXi=jFUtq}+#8Kn#zzQMybFynhHtKY*zLoAGh4)#Ki&3%6UyR`1)t^Sd?= zW@VonaQ&VV`llgR)7d@h8B$!O7RJ})j~%vtQ(8PxCQ2-=Ion({oK78JrvIC&p4*M@{1(;!oE&x4r1u;GRTgWxk z7BG-}A)Z3NkT7K>uD#c;OjHL19s`tnYk}C{6yuy2ZQ^{O9z zpgSY<_|~%mJ12j&CnY}30dFeg!HX$z&D{2GG$tA~knVeV@%fuN2PgMN&YYEMg{l(i zBpnH;2 zqUSvBrDhlPn-^i#kKc}R@=ak?304ylG$`-6{VDa$LeaIE$&G#k^xDiU<MqZhaZbk!Ybc%!^sbju|s&94JF4zD{nKkWiAXnM;A9vwk=|Mo9-z%|uTM!vtf zg%BzMHW3hoMtts;YcR@m@D1!~f8+Uhk~T_wQEca0UH7t}MU!)G0s;q~-zTG#jjec$ z1=Cb#B}esFy5i^6#typM_rHgUu0k~~{BC%D3MC~#RM>F(dkOEFc*ZS7*R0}1Y5>!U z_pR@v)Ru%=Rt}m#r2PeQA&*AiiNH?b!?K6JmVH@+;Q+TE4*2cBBuP{) zY|!0>1}6+H>sQ!|Ic^50oXd!qUMpLIjs!! zUX}Xw{Nh0bUYR=*`{4^2b}jvl}otxCbyTZM+`n^&s7w z2ki5wT`>TUSfDmb|J->az7+$(?*vHRUGq^!mhA_ZVP<0a&X+G79jF%9g4)9IBHalF zERc^JYu}gKb5AeF>+AR=nV9s?Kfq}nE7l+yCaGh#aKoh|*jHG$fB@D{#^2s>dPiGr z6*%UvD@q+Xs!OcNlkItzsvxJLX1&*bFr;2eiqx?g zEGE+?t0LS*htMnkeobqFLVdSD3KaS+=i8p z2i3a2ERK)xd(4x$MCs&|;$=lweV?Y}j)s5^<1HX*m&!g4S~p*kR9ESR^R8s$&Rc(| zJ1NM7?iH)pG(TY}yiD<9d$a}0Py+#p?sc_q(gDf)kR$GnTgUNbWGjRZHtTV*nlNNE z!V#hqf+Uq=P@T6SFFw>q4z~o|+onYGuyYgGNbk_Hy-8-hx_+luZw^Rhk+R2_M&V6C zQnin7{+UKTd-)j)>+F)lyq+0fZuoufBYzw`oe}9XXgVz@;5U}M+3?S%bIG5fPWUo| zFVJN`FS<+60fPi7=Uj1ghXW zaAW0YA)(PHj_jBin18R1#46=#uz05pH-)ozLsUU>JhXGkrxKU`eR?K8BP%i(-r z5POOmvFc3yBINmL&*=(^%XKxl5RGiy5eM(OSr(Lv+*n-RmyctwlvGytjttGVvoozY zMKzDf8$CxT=A-1wPpwv+4AZK5Lci+dK-PbsSAJpOWrcg1*ocG4GwSsf-9t-Z+%@h^ zoW~&tEUg{WI$*HZ?Gw5(QL@INq_*6tY`Hiqfi}`Z)bMnHGw1oh+)WD|6w z3Q$jW!b3p+8wd5|K4iyHNnj&UxsiIjkM6$v$zqL%YaVYmN_sr?v|2Wz(dO`)Zo&Nd zk1j>CnvZ95w;d|;crM^O_Dnor!#*i4tyd5s4mEB9ep-u}KF!smYOx$1-6(RRdEfTs zLLoH10bbpV1q}llDBt<>W=EaFoD>g^Wya^ks#u?3PTmPMc_&O}(b+N=Oe{yv#Erd6 zF0d+7KeD1noSB^7l<_H{seWlBo&Hmao)mdQERgJ%a5NDA~?-MGKZtT zUGmQpR#>STYaWZ58BS4XTYdV;)0=v$bX-vOUfooL$LGP)y8v?-1{of#Iy0H0eZzxt zhn$K7EN;WcVryCTBMzG1GJmQrKkmg1l2S^GtNJot5PX}P9pDu^KpE{YuNNKUEvY*w zj1PoP$OFNbeSa{6Q+z0VJOVz*z0|0d4UEJi$h2uY3V&7`h>RiVgXq>HS>yl+SKv)H z`4JDOR)UF-+(ieoF7~$e&h4$Ug>3=vlK81F#9eC6V*Cv8ll~&s?wh;&vVFOg#zNj# zHGh6>((fkLSZ#t8ZTCTJ25ct^YjYR9*f4{sd0m&VqyEM0IXedDWRV z>ZU@V6e{I!`JiyD+wFa2bD_yaQ+fVgWu7>)QaP3dYYFD>tYe(s;HY;G)+Xw1j~V`h5CxwJ+~d82Wcm?AS)8<>LtH8(Jh>lf`<|$)?ppQxpA6 zC4xgYDN2h~jRRITC6=yrmefGXAVmk_i4=13a*-{dS{ZA=18WJ$QDwrI!Ms7zIT#MD zpN(A%g)eOz+lIn3Bci9>+_?!*-#UD?bh}~RDtZ3q$b$b;5-*^YgORNWsPGz?NMy-8 z$B4F;FkbZv-{nLcicBu1e8OYfJ_QIpH_Mk`eWU5jI{0s*ePJJoQ`5O|MHBH$_hg8! zG=UAjUMm0lrQ79zY58fBA@ULcySY&SR!oqR%Kru55;c3%^S)o&wc?6~=K~`~p0k!g zfNf<4y$h15v`r9d^E}LP;|1<+hIYEF0cqcS0#Rg!2u#$6K0$Op2%c+}lz-`gvP}Xd zNUJt#KBME-ld%L@MK7j%#J5?tE(I?A&)sTh8ao}K%M?B=r^eIzUmHLH9q#;SJzBR7xkpd zcrV8X0?f(!`p+iu12X23M#Q|Cd!T-jNIVfme-ZsM5RFT;cKMHrbk64bxTZ`|bi z*{quC<~g4gwRxj3$|x3A8SWrPi2*Q1gLENQz=lLyV0R*7#wchKnA?;MqC#cgS#RkG z=PgWlFg<&xE)oCw$LjXQfsBhb5+V*cdh zLnoSo31jaXEglJY@Ks7?nDM~tmK}NVA?eaZ4id@o$k(<7J71@s7i%5Q&kqhgpTJ)0 zf+a2^2>`KeH$*)dTl`Lo0&&^%=l z%<#(VnWW{D5-%OudXAmPI?@A)&`w1UB_9nhv@wY??|W0z-DPL%)ut@-Iy}pBr1Z)( z<->&47J&ma?;kUDxqOW^6T+DvQ%AFo71Q<3U&`C>!|F`r7>)ZTKWb`X`#wCNW3+R{ z)T88!h89V=a1l?P5G7~$&W`KRnrMuf7VYxT-uV?1q&Tn#myL zT=zlDw*?8#boZi@Um`&?Hxd!!zg^)ey*fS&W9qFaql@bn00Py}mF}5v7V6s@G6KOLZW_m8}cD%ElrR`N_62GnP?)aV}3(`$h%s zL60&UrMj@0mz=w1?^n#d0ip_5_CWTbiV6$6Adf}w5S9Mk*1395PwH(?>Slkl%*nJk zEX`c&u@K`r`tq127*}+BNPn&JY_R=D`{Z4IcZDq>_8agVA8X~tQKnKOXUfAFrL+qh zSLHT#%@~t%`g>1B_BNCV7xHkof7PyhEAj3kG*}TcBv-6Kd&~p;kn9B!yKb%FP!YMG z68KO=Mdash1bB^l{+CCqMF5ROr_@T6NnQ7L)dj^F(vHz z!M{71*i^T2Jai7GsRvFSxFa7o{V4Not|(fXA2oXi5WV_NOHT1H<$SD9xXT*xrOcgP zPMy3^_L}8GPG)YS*+%X=8)D3lev2Bp)I`@zq*ll-xEhywH7P(|s>rh0e6BNfcb<4B z=P7G*Gf`#AhZSpYgWteP3Rh<=ChLg_V${}1KwmAWVlQpXcKI@l0bM6D8&<2*qXay} zhTM4oi5Z4fKJJ!2!rNK;-9m4K+$jH=yi{}RbiQSW>vu7mqR7mE&N>i43#~_^h=*k6y7kue=m^cg+5S(1ua5F0AN#Oc>^2%iv~o9up6LyJ=5^^sjD11*%!hsxFQ1F z4G~~IG|_v1y+DV;?_|UGAtB~IJ(_|zQu2e#-S%L@L@Q2!rI!OHh*}8oQ3hIHmK`d> z)g}tC-*Xj*xsFm!2bgJ?!TLU{=u>y5%!&auLV15kAGu(rtN6zGtzyC@YsoDtP7Zkw zRWCY?#1pCh&8O8(1c^$}Az(Nxz#qjZw>6FTKB(mA#Dulm5-kgd?@(f~NgVW)uRdhw zMSWd=Y9-P>fEI#cX8iwwbW=dlTi9Zzo>DR{POF zhm4gNhhYdW3yra{+?5&LX3^jK2BP;7gJePxRs9u@4t_N5F(XUxGngBSgE8KuNP2QOhku+q zb?5p@Nz?h!wxrxGmD)N9u5P|>%{D(D zF43MP3`wG|>zK3wqBPxj-kxq!Kt$!~p2X5w*LAsGY6?)(L8$I4qaF z#{hHW4u;8{u+{`4LO&II=nJCQ5A}ulp^pE>=$N%-nq@fY6g8jf^L?S_?BSxdn!~SJ zK5hPRLS~9mGd5Cg+{WG6-f6pI$AyOBIYpjaKW>zp!n*1)V}AUViNZj?yH0a1l1TrV ztja|qke}>brx^i4SfpB~`8(p4brq1z6|A?d(`{{zDa%3fV zP5CHv`X}ReU)zlJrwtpj?)FrBzv`MfA3#+v3ySwzeWoFN&eG(3Lea1geTwX*@Vt*R zIEWg{u=7*>GTrlozSO76F}#8r_{CZq1L@cEk5;Ry?sN=Qhn%-Iiz%8=>#3L=D7ZQD z1ZNDmQ6CJ2n`Y3-^MCq$_u{V21F%Rkkb`<1)p5`fu)!?zg~;2#7^4IO2Tfr^G*W+C zw=a@7m{p?8?FN7G?mr))OM}gZSvEyU`kGT)J?hHTFGb!9stljsg-#Bc_{zrtdhY=w zMxegwzV$8aSrq4tf41VrhYJyKQ^@G!z^0KMP@e?&QW{@mP2K7U)^Q$4DN!chQrETM zv}p8Sdmo`8a~iXlYow&plk~&C%huW7rG@_oEk1Jgkv)o16no^C5bKvw>pmHKIxVU% zTXx)b#fK&%P{_et z`RzAaj@=U? zSBc_wU;~Y45N4;crJ!9B)UP^uh$l-vadoR#UHj2+Lu!Tnvprw(FV*HYw3%gfO3)ym zR!F)FkT)3s27zxlvr@~8oHjzR!=E@Jh01s9-MdB#U z5=g~#9Xj09)WKP0D}x?RKou)3EOqhfD4Y4*CknWYmS5JKQj_Si-l&~bmhq|dQtyvw z#x9gnlqtcx z(Z3a=a#>m#jO;f@12t93S7tm_8xsw<|Ls8kC4bcf!L>YwciZI0G6zW*kou21e%oR1 z!lDIye@jW(Q4uq9yrgVOmHo0fm5;xOFmbQcP+0hpnrn5Jmd|P=p^lEKUNM>?^Bv(g zgZBoUfauJIR!&@h~kclzBgUf zl72ob0M^l8IR0?)Df?cBv%?6BKT;?fotzH36<9iaJ?+|*KhNPK$G#;5=zJOs5h(Vi zJ`fvo_}jI>p6POTUq<6(Rf+<_UiXHMneD?BmRi_$^r*atSzk?9C+K&Q}k;`rL7?yn%dZ_qDc9Y|k{jf8<5XmKYn`W)Gxu6nzaU zg%y6i#?lAAd9NogHGOL-hsoK0uu2CEc_6XEZ^w?Hx>_jW?|;V)vj0CG8M?v{L^;EJ zuyH>&r}Q3Oo?5}hqJH+hQ}uhwO_M=AlB&;;V=kxsUvXRIhl#40wt{=Es||Pk4j-~9_GdZXQxc%} z;hoNCaR9E(2Is3};s2Z)z=R+FV3%TDR%}mV?4Pf$$&oiRl3_XmCiot3;MPI^|1bjO zO=GPvtXOKI`ujD&++AE^RRl4uOs1^YyaF`ic#;Jqu?!=X?7{Tc4%2~FFrCyuVVtdw z=f4ZH?XXMqs90HmE(k>bvh08nF=uhY+oXzCG-cOUpe)=K8 zC_RW7Q5!0OFj)~XV>^I5Bk&r6LJjCub_myj7na1 zB|j0Kz7uhWkLoM0ooKv6)|ZmAA<*BK2h2_MO6`P!+v0U10ehgB5?x*{NG+`MGRax6 zU$Xxd48RKy=6Z7hi2(Nfb_xh5gUcHNnK8q^!bf=BF%qCSkBS2%y?X}S_mh}i?=OLE zOw@kmTjvknjbX0T^r#aQGllJ}{6IAV5EI}KO+B2qc&QF~lEnM<+(K&p+?>zMny_c* zJm$~PUDAza;ll&!yGw5}SWj}r^<=>onVMW9GsUVnP$`c;X^wte**sFO5|aCjRuu z!L*J6HIpB<;?$-a7pzB5tQqOT{MW+x+}4?+J&zJJgg#7G-6oVC@^($@-OeRWHZHgH zPG5UKz2Ds?1lum0p9MEbblGAb3|(Qv%SrF;O~>Zt<~t8a<>*jK1?Hp~6=nVsBR*Yl z^g?<2K;npTbQT>fQCodGg;DC8Sa@U%%n zK&=SZGoXz5E-Zl5WHPG#W;HH(loYsJsvw0E6<1rUL~M$lXWr;48Cs?ogz$Dp7~#T? zG6a{MvSZGh^b?az2HJHZD%zGa2TOO6?mjlVcsPJA5kajudTjM$@3)qdb+S$SuzGy+ zup#jx3&W2Mzr_wVKx2km-rYdDBk%<9k^@QX@2Qt%APrEVOeokt0buT#4@uLXdTa}` z&$o2ASl4?LVX9hos7VvfE!4qeHSCAlyxzwMGuyUE6=0uLG|X*p6H*mmL%KAUAb&^~ z``zkq@}oRl2egZLSG&9Fj6Gb9jm9mKoV~5OVe8HbslwpZ>7G=@@9zWHTsexXjP1_L?+)XUoDV#Gm*&na&#v57Q6LEUn0Tp7%Qw+2{FKdE7Rz?Yw|TgV zDW`5KGB|aAx_EB;?!!NVOp*k0AipA1k%G~c+^HRz7Qu{!cQEZ8`t~WImzAE)#O`+_ zvggib0ls;6jW&XfuU6zGn)l{`0a~}pAOz!%=)AFy{rRw^iNi1NwH<7VEW5<=CO?}u zH9Nh(T|wmmQD@q}l1@o+Oj4nBHpwnE`rAm)D7(+xM-t5`AG#Ee+R4iojQ4Mb{e|2c z&AU@CBwlLq?t9teJ;Q27o_4fV@~%FJ7GXO3CiK(bV{yM@bzhb!9FysXwuxZt(FOx6 zRq>_*f)xwW-n9KeqVG;{iLHAMfiZzZguf>Sc?cElIK^Ct#q@fJ zV^~&F`+|1RcEUUlQsvpBCkzvp`BG5W^wtuNVH1 zI?^F*JsbW>itE_Xf+85_{Hy}9jJ#Jr>OXb@-_TOSH{!7mW)HD$-|uL@gOM~Zm_LpQ zhlx^Tt+GYzXNjDPxV2i(Wx8;d^HIAic2%VULIhtJ+n6dR1;h<7%NM9FzD)#&Z&e7c8{>}w{Qi*>o@SH4HP z4z7@#M(EKM!km57x@F4rjxiJ75oq;DQ5LqN|1Qd!{}cznzi$h^2ji57`1J}f?BQib zdi1~+L$2&05U^IeHrpI|p|Ea?hF=ok=gW-^G&kNczUNlevs()DiA=6t`LF;@Yq|$# zBIIF#wpVa8Vns%+nV-5eLhmf7@uyhLx zWoVnu=fwRZqJch$Z<434cK(`#^ujnBte3!iDT)k`SafX-V zaAS|+_S&~gDfRNWCOqo)^cJ%efD$3p+mTxQUD!zzvc0w+>(*zvErr^5%>`4u76#)7 zA@>_&S##j!qTT0Hf$yrqH()vuN>X_oFOuXc%PGfkO zuQaBPJvX$=sy9~+wNV$poskO^+kk!fm0qyq;>@V^u7g4kO=a1ZUlGqopiM2-EU%o@o@6_8g+#xs^sGzEY z{g=U8q%#GBYWr(gcn>7!f0!jcGJ|r9o>8ih$B~L1f{-a^b-ZEpky$kqz(0*xA5TZ- zsMSbsWIYxI9>7^6AVNUyoa@uEa1S`RiHE<0T{;-}vE{i98l%7mg{fZZTCW{_@N;!4 zOKx6-lk3jc-v{uZTPD zaJJDA@9s4Ep|Cj?js=^2y3%HIV|~e!FdUA>e3e`jKcnx%WvB3j-8E!S|QvD&G;IX#q8k)g9C^K z*-VIlWK6Z*!|tbJQACrya{5h5B&;mcqB&(k$=}3X2;^!;gqOC?r8P1w$fZe-@ESxG zK}}Y$SGiJICi?AmCo9zYpCk57lA?KfcCm>bvUD4k$)fQ#4@&Nc3TT|ij`@rl#^=;0 z9YE%cEtMKZv)i_cDn9=s3XUs-k>L8>Bz=F2jsIlA2PX)u|L@cP9E^wsGb&41Ic*NH z7v$d`wEAtEgJvEZf5vs|tz?PDM+NOyYE9m>!v8ctG|%Nva%#7RW4;#`l@?RYeB(YF`A5LIF{0axg_Ql}jg$cWbiawK+F~UyT;Fm@(8}J(UV0-#_0N^aE`hyG4U5w3`8kgsxhD!GuaxIh^IC;WAEBpB6oBt0q&nX|W>G z6h)*2um_YTB?<&kf&>BqV<2?ySi$Z0Jom@_&bjxTbMJG15t5a)<{V?pcf8{rBT?3t zyCmn!&qoMJnw#y|j}RVS;*ppL{NV*OO(3M(Wxm7sV1UCQO3L|M5Ji6cDO_s1&#^L%Zb4Ool@V|`c^QW5I_DW^Ef0n+7p75N(@q1AGGR)=&V{v-bu-WIN87x{3i zqUoG(-)*j|D;xMQ%+XY{@AEwiaS1QUU?Kam4U2qTzJ%M^cX*agI#QqdmwQS}W4k^j zy)04|>6eNcCpOl#({ja$Ap`FBvUS}{FL#7jH&SCIW?S+?=^Z|L_X|snSp76NKFPl$ z#KHdi;lrPD6vcC_^qQEyJElwVo?LK;$cFZ8RUxbNzfAHNORXXYSJ6|qB{`oqk0jZ7 z$0&VSJiZM@otF;T^zd%BM?E8KtjQp3yaimfoy%ufEtkouihn-A7w=+%^Cfwdy6p%H z14HTmz<=ahb-6{fqn!*RUcz(3+0#`9q1wBqCaPpAdRv3queapw<@!Yl8@yU0i<;}> zkHu4-1)TUeB6T@{kwzN$BeAoS!wIJ^#vvviho*K&O=xi!P4)~c=ciF4m|0_w;fyR_ z`SMU?S!#ENX*t}v|CmQZgkf}OZ>8GMR$7=Y^Xp)c`-u}PbRcpNO%#vDqLg^HPyHWA zlC3zk)4Pn<3zKJ5R0rSWisR8mu^$f+CP3i7g2NDcOEhFLUIh-&7dTW#aO(xQI5;a_ zs)(GyGR`=U%vK=sGig+5_0z8QVyH`lRPU^c;3TPNL)=Ex3>p;id$N;vynv8$=hZsJ zNwhw8VqO=@mW<1_)|Tu_m<>$loTl& z7N;>HRP@~TImk_OqVGAHpk{3Gv@VCvcFDuGZT`{k6dZh%liNS0{YrdLyyAX`)oAmF z&Q3L)iqMR&Po|Bt_u$7gb0U$u?_N~aX};^%m`U$ptNPfm-|B@N8}n7k{n!G<$N(pr z>R@1TfrVc00DB2cK)Hq)L}1cIa$w+d0-OD*28)nJ08`d`h0(B_z{r=Pz~t~?(Rx?) zmv5bqon}xcA9js!YeaQ7Y>wahfv$$Lt|7DtO+DlBi)gB*&5FWJUS5@wor*+V4=X46 zK7fYaZUxjw^1 z`dg;nx_lkcC!RRf#QxB%kQ7cVr)p@{;Z%5~_{Dm8TX^9+xq+h7HoMwCRPT%{J2|mY zSW6Z+Q79t46Hzt^z;&|#d8L=&(cPOE@IDlvG8RjklGsON3jtz76cSFeFu-;dpg9&$ zyG^iux3C}wcrb0}Z zCF!e8jAPSlpCygB6%~Ge?Q-0Qo~uqj&(gtNS&k#`KV%j8s$+&uabD}p=%THm8*TZr z3Si^;$*M`2ii!xuWm>!N7uppohE8^d`TAsBEn|M{su>Ka$ffQU?)Sr8SqArrLmy|k z#CqOin>>EC=b2Ndxr^4uS z2B88L?;)KjFMfMt?h#|})-SJ`j_c}7zh_UkpKbeOFq|M3=SQJSVb1m5lhN%Cr)YKN z*ea_bTPB-3eJ_J5Q9=rNuT$vgo0+0dW$q0!n6h3jz9Mjm%8s))d%1C?faUC}?{s&M zp><}KLQO6bnj7(``0fR&DL8d%=DE>z>_(7UB};+_@9EQ9x-E750?ZLBvrUVHzOQEH1QvKB*3n+;tifZFZ;1;s-vQ-T+dPxQY2o%nr}s-h?ItnY;> z@o8b(9+@_tj|4 zUBk)eYA(Ag8l4(k7GIRak?qycr8z9wwD>>qpIoNy{%F@1c5RdH&iqQ3(57p@WyYnIS7sJ9ODuFgoUUiyI%)-36u{Jq4Glv%Ktd5|V;8$_zX zo9;keuK*WqJKMd29Lq~0UWS!1FLvrDHgevKO}iEi6^A>C!C?RW%{taUh;*P6T*Xl87C30!mg$-2ot$BIg+oRHdZzQO zQgW45fNdT_k(kUh3H>WPUj}`PC%V->^$#pumCt_F)ZJtxWeZ9E7F|bL0gp5+F$^Z3 z0V3u0Db*=MS=8HFLS^3g+~ARki_FP!FUC;$fJT_QWAaEQeY3P2 zEY{s8$jB`Hp`mupGb!aIRHm=4Uf*Ed_dy5egiHdkFVZuWS>_RiY0JwkS90Q`Z6X;X z4W-8KRx5CZhaLGN>{+L+TgKkHxpMAx6c?~Yq?q$?WVuW%Z4nBApKcaLmZ^g5(+p|7 zRT^#a62R9%IIm|+=6ncgY7LYF5Rm`O7u{9~8ScmnGOFkTJm!_?>l_g$LxKuOb7Na# zz^_d+5+{FOqD|5vjuxlCGvTz-2C=MGG}|*&9apF3n6Hj_t)kp>;D$DazQo}}hl#Q2 zcs4Wb z)&YwpXO#@Ddkyt2Vb~XlJf<00RUM_z`rdVO9h5;du!rAmAeaK+e}KVa9;8Y~8FXL4 zfc01a^44qML+|B4n*`4_&M=(|JB%~3fmhiGqyC*hi|5R}M=B`VeiuR&YRFm_C};yl z11N{#L*`asX20ObB^W!N^Aw<`8eIle=8K`G7$C)SF?$t0EWQjdYl z0Z&_vN5&+w9kV1R_efFUV`bh~##>6&g}UD|3#xt%H7v*~;@ewF&LbpBH|-L(%ae#L zIW}%jegsF=!1sHGO?yXj1=W9a;p$9W|K#giL;92kF(lj|vDx1pWLmx@T=7Pj1% z&AH+-$gwg=J1r;yqv~#n;;T(N<|WigiuLtZ93Jmd$;e(&#JDhSDyWt_W^9Vem(9FK zH~;I7-d9k-)WGlcAJeL;l`U!~G>~=7Q>QerY~O%_FZa2zVFcad_nGSisbCAk zO&1ZtK?aF^P)LHX?wGR-wzlm^WoXXSXL&nMsG>OH--ftdAdP7HbCy-1?z08t{^6>) zj{91|h&yLU6*G^6S7${kJC4OEa^<|cTXw8MmO8|MG?$?)R}OfGM<5iNp(oW@@wkFN zwoc~%Q7c6A4m{OVQ$Bg^a9itW?UJJMM~NkwVWexBx) zDT}zT84r`r_R`Tml z_GdiTnkW~Nk3obuK^(0Y&<~0h=0}XCN(%|Xx%%wC<$@~D1ewamYF*+F+3iH?=Q0`lQ?!oY7k#k7-1xGjTLWybQFnKyFN)>g?? z+pLWu(>;0_yha;i@6fP|!bnJ|A|hCc;NzT;oJ#n_2&);9`YV93G{sZ->yrJM#}4yK z&nym^#lJO1SFXYCKlw5Tt0MAeNx2?_>Q?$5?YX5=XCY8+t$JYL2%vAG4gdJa}5;6mhmP*UdF^JLA?6k+1^o z{!0M;6frTfEPxv11Wi1i@@g(wTp}aQ^>fKUP351u)YZqO&TVKQDA$AYjQ@Rs``3}6 z{H(quoG(49P!nu4lOjcTc!qC_N2fRg**nNqF0v>@h|cI5u`}M#Zt^rC$a_tccgR|y zLKQTBw~^!_z@qk<=QjBOXHZ}KrJz*G)(HsFTGnp!+pe)lR?VV|@rFtt)pm&#t-M*^ z-k|X0Mtf0n9J(LbA%|j+rY6LCXYH6(Ma|gbm_Y;L&}TV%nBS{x;?c3T1M!a@ohGfA z_vf9?!UCFsS6;5hNZrw^cY8)CJxMXuo{q_3>EGjA#@f+2X*3VeAM}PZb2&9#=0Eku zO5K^mI-7}S4cFwBz)8=0>`}jGbLrFcJxPgm+j%?ZzuFDZi0=xXGzIgnKJ|5^l*0GP zSp702s5d$}m1~Yv&LPdE#eF^E1P`&R#a4SbHIuOpR*tnLJRnG)|< z_AH~~={r4iA3yh<-nE@282VCoS#4yL^XvVNl-$@lwoAXQqr0_a?cGSKsYe1~pE;t1 zs1D)J`D*ZOFQ!(HdmVf2<~9^mrKBP%61Xbp{J;{DlyM-$htCzXv^=o4!b;PyAiS_@ z=i+*IS2E#KAFAcj#}^ngrs?f3;T$xlNP(EMWc6DdJIJAJ@1Mp)s+v-B`*Hl4%?*B7 z028+aVBH@DP6T~y$xqs0HD``;(75Ip2T5(tfTn+wjV3wRr!b0J`;%v+&sj70C&d`~ zVgKl#>_P*tqUKFXmLO&n#vI|F_G$)(rQBo`z|c9u^6PC|d-6<)XG5VnPUWS6nHs7L z>svb9z)!#1{e`ShvYxZkqmzFlbfTcZnI(r0Q-A3=DiL@}tRYC|QaHM3)>9QaRPVB) zILo;+%$ul@8R68Z*Vfuo`@~7Vt#$Bl$;5$_BvX%2^uQ)Ca}6PnZN||N$7O&J#1A}O z19&0=82jU17Z;TVS0~5Xudw15aV+N*^6ei;j5pS#LAkmn4fZT5i%SZ-!R9F}OSxYr zcOOy@5U-ACYYAb(4nVkeU{rEAOb6D~#Urr7j&lfAL&gNd%Rsz&uRzvd;Q#j0EOo?G zpn>KNQ|c9=+V#0O%)NNc&&V5 z!gP>eJpQuVJFG5r?4X`xz4PfnMy`gCA)Ih^@Eb(Ey&&uSy*KT@V+Yes7bOc)(T~ku z0wxO85d@7I=%%j);P&_KzX-~93Pj6AIB;HbnGG|C)3c$0<)mBaO21LZdG&m_ngMo=DOaA z1RxbG*jo*NBG!H*->b?X<+|jJVBUK`hynF`+Y<6S!^WO?uOYuFo@JdrEZ|eD} zzZ$%HOf$&i&+7uHi|PX+sW=fTx(RYJFA_)D!kb=r3VUBth~UMVTwV`pyHP=e{H30+ zPXXF=PgerHzB!lK_j)WvmrOc`$UA{{bgV;*E|hoTAQ`Tw9z&W7Ln?&iF@Ey$?*|}6 zmQ{n+nWifK|HGHkPf8qO20ORU=GcUYA>`|;}jG!L6~WjC8mr@2n_K4f(U{spZ; zS~xTvRf;X8)S@LyYjO>W3aLYd)bFoD^v3j0dCbvLX}-YIMO- z{~+iTAa4Rzs|x52v{0Z^f@nCv6Yn$(M&LW}=D+AhlP0q-!mqg=G`C#em~zL|eLl7C zFfT?}G1;N*s>jQX27hg`eV4JshLL$b$rUQp_RLlM2}W@Jdp42N7p=agJ99nUqXce#S&a5xik11%Dstx}w;9Cybt8G_N4uBL zqt+ebmFQhI;=Op(_gXYnn7YtyBG)i_2N`@&{3}n=xj|Rf(_TMF)Nh3gZ^SOpJ1nEm zlzY%$$A5Wyv&(V9(AepLdU$$R7 zygZ!kAS=G&xLlH$Si_LmAxwtKb;@WpiVORL_OvwYP~f2k6URic`pLgc^HaKkjU6W~ zZx!efG<}0tu_i5=I0D9!Y3pH$f*iz5Q~L5&)#VCOLEC|+U30iF*H7VEN`32&)7g!r zkt(Rxd-F}^x*~y@7skA3@~e;-SsIV@?$K`wBvEo%qsi13rx;lzOc2A76&u<0bEQ{D zpK7RL!A^062ZBqu+~;>nAmXVE@uZCw+TIpMIBD*MRN-GXNKI{i=a8f`v3{Vtw}<)l z)BWus9_tpR7@F@-lh^s_+wfo`gaOc_6VpVeQIP10&)Ilo6*R3TcqE<)SXVcHAr;KoBY(Pr!sBgUfiBftXcC|)lU-$zZ4Xe6L zyRD3@uM5`}f1NrXZCq0&R~mY$=-|eOVM^_)6Ln5mJI;UmK9$4GirbK!r zy{alw_7_84k4|EK$NOTw&w}fQ@7I=qEJwVS6CoXi#K}Fs+h%{_l{}S37v+H`G=eIH zEo3Kh0z2QD-3u6Ck?#T&;y$Qhx-)6JBUghfxNK+ejcd*5rEL_<#n%vZvboGMO z$+OJiWqKo)g4%1Zi_MA3Nt(`vMJAV|(e}`_6GJB(ZaT%UOAw0GR?oi>t0>RYiYl^s z>~o#@kOJ~9gVS-W{%cEU!Ki0RdB*>#b<{8_qr zdFbHRfPTiBcNb#!B(2aJ>9cEnb1(HxQu$2?4)YGRmmwQ%R~vGv9id|b4rQbzo7QcU zUzyodl|>|Vxfn$rc`V_P!IU>x`It2uX)5(qi&Q_!GD)ml7FtlmG)m`C&De(!6P z)(KqF)f&_09>B9yk2?1)NQ%+M&p69W!+*N{^eLa}6w>dPJMH!0*Q{mAw}Z)YH|e)N z8}+s_X7!qxGknM1jaBrzCw|58c5=q~owdIk>JusqvO|Itv_ni(J9!7nOglcu*ED7p z;51waVPDUw4{2KLHLyIN-Bah|W(*Ry|FUhQvC~Urmsfc{h*Wwu=KsX=qP>m9L7LGo zQ-S3MpR!vwRMC4fG~F3#^KXRAJ}P)xt~k}bioJ0<50gik$qvyXc(hBS`vk%bw2B0R?#>361_J8R6abna5kk}8HmmTI3i4be zKr^@;Q*$Z%c!xKEcs^f1tOZFFrg$_-Yvjd{;&}nThRZQ2_tYZlVo70ic{@h45tcWP z@Nkr{Ln`Xcih;j5dJGjacfK7Gr3UKHu0aV3v&YJb(D8Lkl>_%* zF*BgIEWeYn?lCI}jb}QVSmec{`XSH5TPH;r%?dNO&z}!|Lk_h8=}1~9i+#^2qFHFx znd^r~u*W?;xgp0{Y_zmgKdF_b6NtYel?=7rFL!2L7l%lx%<^1L#iKFy)OnR+|E`JL z>fV&GvefA~`7yv20FWOB?YF3iga-K*wZC0Sp!U)0p+4CKZKgTz+}E9!KMY#$#h(Tr zfr$w)v7*f1uBLRr)1Zi3q4u};no>d~VTj6e$M2$qwK!}44edQwDx{0uPlUX4nfYE& z>cw_AV{j&Efvkj#_P5i1%r;} zna<50SEAOnClm6CyoG`M7cM+O2<1m-%z}U%X_UrB=$cl z-Kdvl-m<%{=jLwv37RS)Nv(yEN;gj`KV#+ekB#eRiC(vCu-M4~<$4sqv)%}90rz5IbMu{6gorq|*a$Zb58QxvbUL9Q~ zG?L*n=pc-4?ZnDw9<&dxL^(LZpG8VIsI{>XB5QS02(%om1B9Vc#^#L(*I6T2f8w(Y zl-1a95;}2t8Oc+@JmcZ#~>ULT~BMnb_ksL2NL=)0!@)l_l_XRl{ z;W3I1>p~!vfwTeZQ9;-Y5UhiYFhUQT_=hgCw$Em_C4E*>%fy8`*pHB)*XO<}f2epg zUFFl#k*z|1uE42G-j=(K`b4T^M?`1%g;8tF^miDIl1-K>~D0Dp(#*L!rU6R2p6BA&cVSj zze(I$2dbY<d%{(LXo&=6`i5yP_8@HJMFD*RESg2ItD6X`2IrUL&-D z1P0U-w|0n5BfqV4EQM||6{-`Ux6hlfsZz}ag2#P%Qc}MB$^N@RQt8iHU<&J;X=jlvg05Cd|SAd&ZRe}Isp=xFd-PA0S1_`ZAyU*4{QmN@i)kwFu8UO|KVf4afH zZdH~pRb(k!2Zk>UM!KtlMEor%_P3XeOudE=%|oq0+M<0rB8#Av4r{|Ekkshr!spu4 zQvKJYg&5~TXZS~WgDXw*pqSaPeq@UdHe`+U&VPi0-~%8YFe~zR1TnV?NFO#K@-M&W z1U4bwtHoE^mLbLeV%kf3NuqhBK7$6v zWedn^EY@+5Aoi<3oP%m+bU z8Z;;{av1$DJoXnx^JC|-6pS>!__54gh%)>mKgl4?Z9kIJKXz$l0*Vv6zgre>n33Gl zP8GGXx2wCWB2JdJC4!7|fGtCdZprfq`k94Yr)ISjyq$(;Y(N)y4N6%nD|eHMQ{NQO%7FvD{E=D`pm|!hcw(f1sgp$a=W(2@gCIX$M}SBh zr^ntSOr5(i@3KjLzE%N$y4N)YfSs11XXw|4tMwFpCxHK z`t+`~&ruvrgt>E^3XEQ{bQUOH$ocgXe>*^b0@Z4?!c~B6Dt=m?BIE7k5$0^91Y>Fb znZzW?%{$bLTe3p8K4ulha2r6map^BRcR$svuc0C6^@!v0IYNq{)BN$uiikw|W+$fs z_Y=39t++;$GN@)b)xkR^=KwXzj@P<#oTYOtUT2li49vsAu_Y@kRT>e*3Tg(J6#}*k z*aLBL29P@ZZ(dH&5ks#C`QlL81ViA+3!^_N^mCAV%7N5L;?eqgmlps~ouIym;K)ni z5dhmT1#_@l6Xyv7ECqoJ?`?K4$mt1-%@r+IPbn0RnEAe#`gETm$>I=ZDhaQKWMbtfV3g;k{wXfCRlbfsvNrYvyy|Uy|E)d%Q$QmoMf z-vnb^hLIqcZ=2GFS`CKWWxyIRLfL8hvyOyux8YLO-$f)g;upFE))2Y}(Y&q_a&9EV zeBbMRAl1D}-O+(Z;UbswrDgQlhmOAWr& zyD(eMv5S3c3e{8mFD}GK=Zv4(9A-cso}?Z1;IOg>emC^4Iq#G)KR!`Y1EeMRDNO)1 z!_L#rynbTpW~`L(pWd4TUrc28ot^w1ycybs1Sg2v8rrF7b6B@9;wUgAWF?-teBQKkVbPFL@lAyyAdhM$YRupuDV+2&aq@wh`MD{x)el+htat*qgulWsvTt%wVUOerz@qI0r~CLai{~mJY1QSWvIm17U{-B$C{Y z)$?Q!7w>Cezs14oebFbt-=Y6Xh!6-Y6iCR>^+xhA7`TsxbAuAg3bYm#fu?c_Yh70R zA)cfIF|@?{gcr((98l^_kz|+^@dMZ<*FX9~w@&ATe^4F`jnU8_SbQB3oaDEA|kTpu-rDJxG0RXa^_ zbfO;3JXhdw3mf*@MDAqJKAsDj;kwmNW!`m~9=u~Y(&!Yk`_9Cam(NuB_hr--&UdVE z8bg-Xa`x%D|87(@ySLmhbT&REgukBk{mYpX-5noWVTy;>MOe?u42ZVZP{^54#95@j z@aHdVcaV)y%^LA|w$(e^Tk)ZxvcshRHvfs`!h`lfR;x6(^T_XSUEp~24Tafri4AX~ z>@0POB59}NJN<|~oAzf!CtqlP)s(oBdvb#TiTi_jRe}he5AWv5*?>{?IuKbq5|jS|?Htzk=xCsh8PJQ)$R{KL7v# literal 0 HcmV?d00001 diff --git a/app/src/main/java/otus/gpb/homework/viewandresources/CartActivity.kt b/app/src/main/java/otus/gpb/homework/viewandresources/CartActivity.kt index b6cbf73..ad5f88e 100644 --- a/app/src/main/java/otus/gpb/homework/viewandresources/CartActivity.kt +++ b/app/src/main/java/otus/gpb/homework/viewandresources/CartActivity.kt @@ -1,11 +1,47 @@ package otus.gpb.homework.viewandresources - -import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +import android.widget.TextView +import androidx.appcompat.app.AppCompatActivity +import androidx.constraintlayout.widget.ConstraintLayout +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import otus.gpb.homework.viewandresources.model.CartItem +import otus.gpb.homework.viewandresources.cart.CartAdapter class CartActivity : AppCompatActivity() { + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_cart) + val root = findViewById(R.id.rootCartLayout) + val startPadding = resources.getDimensionPixelSize(R.dimen.contact_screen_padding_start) + val endPadding = resources.getDimensionPixelSize(R.dimen.contact_screen_padding_end) + + ViewCompat.setOnApplyWindowInsetsListener(root) { view, insets -> + val statusInsets = insets.getInsets(WindowInsetsCompat.Type.statusBars()) + view.setPaddingRelative( + startPadding, + statusInsets.top, + endPadding, + view.paddingBottom + ) + WindowInsetsCompat.CONSUMED + } + ViewCompat.requestApplyInsets(root) + val items = listOf( + CartItem("List item 1", "Category", "Supporting line lorem ipsum…", "$35", R.drawable.ic_cart_placeholder), + CartItem("List item 2", "Category", "Supporting line lorem ipsum…", "$35", R.drawable.ic_cart_placeholder), + CartItem("List item 3", "Category", "Supporting line lorem ipsum…", "$35", R.drawable.ic_cart_placeholder), + CartItem("List item 4", "Category", "Supporting line lorem ipsum…", "$35", R.drawable.ic_cart_placeholder) + ) + + val recycler = findViewById(R.id.recyclerCart) + recycler.layoutManager = LinearLayoutManager(this) + recycler.adapter = CartAdapter(items) + + val itemsCountText = findViewById(R.id.textItemsCount) + itemsCountText.text = getString(R.string.cart_items_count, items.size) } -} \ No newline at end of file +} diff --git a/app/src/main/java/otus/gpb/homework/viewandresources/ContactsActivity.kt b/app/src/main/java/otus/gpb/homework/viewandresources/ContactsActivity.kt index 25f1ffb..0fa9b6f 100644 --- a/app/src/main/java/otus/gpb/homework/viewandresources/ContactsActivity.kt +++ b/app/src/main/java/otus/gpb/homework/viewandresources/ContactsActivity.kt @@ -1,11 +1,35 @@ package otus.gpb.homework.viewandresources - -import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import androidx.constraintlayout.widget.ConstraintLayout class ContactsActivity : AppCompatActivity() { + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_contacts) + + val root = findViewById(R.id.rootLayout) + + val startPadding = resources.getDimensionPixelSize( + R.dimen.contact_screen_padding_start + ) + val endPadding = resources.getDimensionPixelSize( + R.dimen.contact_screen_padding_end + ) + + ViewCompat.setOnApplyWindowInsetsListener(root) { view, insets -> + val statusInsets = insets.getInsets(WindowInsetsCompat.Type.statusBars()) + + view.setPaddingRelative( + startPadding, statusInsets.top, endPadding, view.paddingBottom + ) + + WindowInsetsCompat.CONSUMED + } + + ViewCompat.requestApplyInsets(root) } -} \ No newline at end of file +} diff --git a/app/src/main/java/otus/gpb/homework/viewandresources/LoginActivity.kt b/app/src/main/java/otus/gpb/homework/viewandresources/LoginActivity.kt new file mode 100644 index 0000000..21f8bc5 --- /dev/null +++ b/app/src/main/java/otus/gpb/homework/viewandresources/LoginActivity.kt @@ -0,0 +1,15 @@ +package otus.gpb.homework.viewandresources + +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity + +class LoginActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_login) + + setSupportActionBar(findViewById(R.id.topAppBar)) + } +} + diff --git a/app/src/main/java/otus/gpb/homework/viewandresources/cart/CartAdapter.kt b/app/src/main/java/otus/gpb/homework/viewandresources/cart/CartAdapter.kt new file mode 100644 index 0000000..731e047 --- /dev/null +++ b/app/src/main/java/otus/gpb/homework/viewandresources/cart/CartAdapter.kt @@ -0,0 +1,40 @@ +package otus.gpb.homework.viewandresources.cart +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import otus.gpb.homework.viewandresources.databinding.ItemCartBinding +import otus.gpb.homework.viewandresources.model.CartItem + +data class CartItem( + val title: String, + val category: String, + val subtitle: String, + val price: String, + val imageResId: Int +) + +class CartAdapter( + private val items: List +) : RecyclerView.Adapter() { + + class VH(val binding: ItemCartBinding) : RecyclerView.ViewHolder(binding.root) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VH { + val inflater = LayoutInflater.from(parent.context) + val binding = ItemCartBinding.inflate(inflater, parent, false) + return VH(binding) + } + + override fun onBindViewHolder(holder: VH, position: Int) { + val item = items[position] + with(holder.binding) { + cartTitle.text = item.title + cartCategory.text = item.category + cartSubtitle.text = item.subtitle + cartPrice.text = item.price + cartImage.setImageResource(item.imageResId) + } + } + + override fun getItemCount(): Int = items.size +} diff --git a/app/src/main/java/otus/gpb/homework/viewandresources/model/CartItem.kt b/app/src/main/java/otus/gpb/homework/viewandresources/model/CartItem.kt new file mode 100644 index 0000000..3bd49ce --- /dev/null +++ b/app/src/main/java/otus/gpb/homework/viewandresources/model/CartItem.kt @@ -0,0 +1,9 @@ +package otus.gpb.homework.viewandresources.model + +data class CartItem( + val title: String, + val category: String, + val subtitle: String, + val price: String, + val imageResId: Int +) \ No newline at end of file diff --git a/app/src/main/java/otus/gpb/homework/viewandresources/model/Contact.kt b/app/src/main/java/otus/gpb/homework/viewandresources/model/Contact.kt new file mode 100644 index 0000000..13624f7 --- /dev/null +++ b/app/src/main/java/otus/gpb/homework/viewandresources/model/Contact.kt @@ -0,0 +1,6 @@ +package otus.gpb.homework.viewandresources.model + +data class Contact( + val name: String, + val phone: String +) diff --git a/app/src/main/java/otus/gpb/homework/viewandresources/ui/contacts/ContactsAdapter.kt b/app/src/main/java/otus/gpb/homework/viewandresources/ui/contacts/ContactsAdapter.kt new file mode 100644 index 0000000..5c8feba --- /dev/null +++ b/app/src/main/java/otus/gpb/homework/viewandresources/ui/contacts/ContactsAdapter.kt @@ -0,0 +1,4 @@ +package otus.gpb.homework.viewandresources.ui.contacts + +class ContactsAdapter { +} \ No newline at end of file diff --git a/app/src/main/res/drawable/contact_field_background.xml b/app/src/main/res/drawable/contact_field_background.xml new file mode 100644 index 0000000..a8814c7 --- /dev/null +++ b/app/src/main/res/drawable/contact_field_background.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_arrow_back_24.xml b/app/src/main/res/drawable/ic_arrow_back_24.xml new file mode 100644 index 0000000..b5cf27c --- /dev/null +++ b/app/src/main/res/drawable/ic_arrow_back_24.xml @@ -0,0 +1,7 @@ + + + diff --git a/app/src/main/res/drawable/ic_arrow_drop_down_24.xml b/app/src/main/res/drawable/ic_arrow_drop_down_24.xml new file mode 100644 index 0000000..330b77b --- /dev/null +++ b/app/src/main/res/drawable/ic_arrow_drop_down_24.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_attach_24.xml b/app/src/main/res/drawable/ic_attach_24.xml new file mode 100644 index 0000000..ba4a1ad --- /dev/null +++ b/app/src/main/res/drawable/ic_attach_24.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_bookmark_24.xml b/app/src/main/res/drawable/ic_bookmark_24.xml new file mode 100644 index 0000000..7c1b981 --- /dev/null +++ b/app/src/main/res/drawable/ic_bookmark_24.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_calendar_24.xml b/app/src/main/res/drawable/ic_calendar_24.xml new file mode 100644 index 0000000..11ee625 --- /dev/null +++ b/app/src/main/res/drawable/ic_calendar_24.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_cart_placeholder.png b/app/src/main/res/drawable/ic_cart_placeholder.png new file mode 100644 index 0000000000000000000000000000000000000000..011bbbd4309f854512ba56e5789ff828db12bc9c GIT binary patch literal 2343 zcmV+?3E1|DP)4B;gFy{d}6Uy*|pXCbR4&V-G@1VJZatH8>=?qL73e0e5 zV>`CvVkCgbg-nAc6pyymfg6nt=*NSmAlW3Cdz78>+kvA_j`}~$v}(9WHLjR zg?A7!uK~`40gO2ghHwsG7|1z57LG9q*f(Pl{AqlAJlE2-r=1|gjn!=PcS724&kJF# z!T2B+vELISvnQVQMITV>$LAj`Mqbnc*1k$D&H)u@ZSKfs{JSHg3Sd7($SxY|M1t zK293VqX!lgg$>L&W;^;@uNMI;=r{EY#JRnf5tZm#1$vXuN62IGA6Ax6F z1|uY|1yG%9!qq-h0#$YEMg}2TMl9ltQ#@s4!#OU_qiEn5Kz%ET-=R3&Xr-!f+-KFhrwKRH{|1t#2UF*B4+Coe7g! z6$A(*E0s**KcC#fUvGYlVzH!z1`^`Zm_f?0P|ir+-PKh*+1|#b;pgzbsVOAoSU{z4 z$V7l(N@A{V+nBsPi@|{b#AFTJ+%Vfr&%{_a3f^+p@0jkAftU*ju+}M9qUGg@GWDQZ*%p<0KXB z6MyjG+BzPrt*LJq6m*rqhT-VP+`H64*2x z)3bNrNYcQM5zshUCSXRsixbj{5jqQWlt4<&_I6IyH`N9=grrq!mQ099^FVjpnvN03 z!6j1(aa*P(s))C3umds?ODh@d=AL#X@!By0X*sj^9$;hZaa%2?T6CF^Ph?`c;aqoA zh3UJUMM_G2%JoB^vXkftfy^c|DOxU9H0w+P+xfD^AZb)1ZjDu|b=07AY|$tbixNQ? zsMYH@3y?_5vNXg?h(y*qq{_zPa`w#c)QmiA$8J=P&H@IlvWdD(5MP~=!j4EF2U8X4 zIQv1_I$7sZg^7TcCVe4LWzAkhNT5%I1o}ikn@;?rVMh*)$yu$x=Z3&$OB@px@pw!e zYPvHukT)J@{UyS#FYyy=;%v7Io(SwaC@cD%RYPT@YE@;h{!&uOWFv%Q>GRR%2J*Xk zl%!zAUK^6i5O3(>MO+!ZjM2*@s8%g)A@S?-xN@Xd8L)G@wZ&SWurXC9@!J#9*2>64!s`=KMlJxU(^(M!X_`1Uv7z~~Dj*v%KDOMxPk#6Vc|ej=V3yt2Vh-Va+N_+K2`5b|4mSNDEv_pRRYYC_en#M<~gp zUKI7z|sh?ee>OYYlV`!^w7o#BqIf``tZ7AWcRh(WeEfcBiLo+ffT|x@;fr zDFP`ad>AKn1|0}YeK9hLop(2eG4l)0Kd<%Qc0rAkq_-}QjHrQfgPtR>T&ZI0r59Bi z+hvKFi)5?Zi&sW9%5j69Bar#SixR)S{PnR$w}an=s9c}V=kZ4R8}MS=doLD7qfO*{ zZ@#I~h##Mj*D)1#^{bsqTR&}NnLUu$B##E^XUqo{3Z5py zoyn0K*vulAD~K|4(FQ|Uu2x`KHGOo!4M-ZFtNYb2e}Nl+|A$JYo7TDAr+G0(mvj=i z?s;8Pjir_BPODF?H*dg4Qt7q(&W6ZXt(t|Gu3p9P@Q_H8yD*AmF^3n6MkF0IqYq}= z?1U9!Kl|`blT?zVEp`zT-%6+P`fIO9Lbl|mpp`QgSF+qM%hkpcOy}$U{1@fa^Ji9B zrO?A5n$1Lff{DgpMT$$CTaPvAVC_p5Cz@Fn`jA&Hk7Dd=SLOe46iR#k$~p!nqfXtK zGEBo2fklt?gA@N2ABKP+c@avMRNHuji2;@_sVS_1P%4wDq{h zKSppAjm>Jg->P|yyIvZi-jew^7txC(G;)rv`^KcCyl+aTuH~P@_&-q_g{hJ@QT_k` N002ovPDHLkV1meFUF84( literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/ic_cart_smile.xml b/app/src/main/res/drawable/ic_cart_smile.xml new file mode 100644 index 0000000..888b6ef --- /dev/null +++ b/app/src/main/res/drawable/ic_cart_smile.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_close_20.xml b/app/src/main/res/drawable/ic_close_20.xml new file mode 100644 index 0000000..b6fed4f --- /dev/null +++ b/app/src/main/res/drawable/ic_close_20.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_menu_48.xml b/app/src/main/res/drawable/ic_menu_48.xml new file mode 100644 index 0000000..b7bdf60 --- /dev/null +++ b/app/src/main/res/drawable/ic_menu_48.xml @@ -0,0 +1,13 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_mic_24.xml b/app/src/main/res/drawable/ic_mic_24.xml new file mode 100644 index 0000000..893fd24 --- /dev/null +++ b/app/src/main/res/drawable/ic_mic_24.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_more_vert_24.xml b/app/src/main/res/drawable/ic_more_vert_24.xml new file mode 100644 index 0000000..0e052f4 --- /dev/null +++ b/app/src/main/res/drawable/ic_more_vert_24.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_person.xml b/app/src/main/res/drawable/ic_person.xml new file mode 100644 index 0000000..5d8b807 --- /dev/null +++ b/app/src/main/res/drawable/ic_person.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_person_24.xml b/app/src/main/res/drawable/ic_person_24.xml new file mode 100644 index 0000000..3782eca --- /dev/null +++ b/app/src/main/res/drawable/ic_person_24.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_sun_24.xml b/app/src/main/res/drawable/ic_sun_24.xml new file mode 100644 index 0000000..b05ee5c --- /dev/null +++ b/app/src/main/res/drawable/ic_sun_24.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/activity_cart.xml b/app/src/main/res/layout/activity_cart.xml index 57dc4d4..43cf33b 100644 --- a/app/src/main/res/layout/activity_cart.xml +++ b/app/src/main/res/layout/activity_cart.xml @@ -2,8 +2,177 @@ - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_contacts.xml b/app/src/main/res/layout/activity_contacts.xml index 6ef087b..e311e3a 100644 --- a/app/src/main/res/layout/activity_contacts.xml +++ b/app/src/main/res/layout/activity_contacts.xml @@ -2,8 +2,433 @@ - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml new file mode 100644 index 0000000..d6b1c3d --- /dev/null +++ b/app/src/main/res/layout/activity_login.xml @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/item_cart.xml b/app/src/main/res/layout/item_cart.xml new file mode 100644 index 0000000..07752bf --- /dev/null +++ b/app/src/main/res/layout/item_cart.xml @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + diff --git a/app/src/main/res/menu/menu_cart.xml b/app/src/main/res/menu/menu_cart.xml new file mode 100644 index 0000000..6ed3155 --- /dev/null +++ b/app/src/main/res/menu/menu_cart.xml @@ -0,0 +1,10 @@ + + + + + diff --git a/app/src/main/res/menu/menu_contact.xml b/app/src/main/res/menu/menu_contact.xml new file mode 100644 index 0000000..566749f --- /dev/null +++ b/app/src/main/res/menu/menu_contact.xml @@ -0,0 +1,15 @@ + + + + + + diff --git a/app/src/main/res/menu/menu_login.xml b/app/src/main/res/menu/menu_login.xml new file mode 100644 index 0000000..9595249 --- /dev/null +++ b/app/src/main/res/menu/menu_login.xml @@ -0,0 +1,10 @@ + + + + + diff --git a/app/src/main/res/values-night/color.xml b/app/src/main/res/values-night/color.xml new file mode 100644 index 0000000..58d39fa --- /dev/null +++ b/app/src/main/res/values-night/color.xml @@ -0,0 +1,14 @@ + + + #000000 + #33353A + #E1E2E9 + #A7C8FF + #04305F + #FFC7B8FF + #33FFFFFF + #282A2F + #2A2D34 + #33353A + #C4C6CF + \ No newline at end of file diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml index b236109..c001f18 100644 --- a/app/src/main/res/values-night/themes.xml +++ b/app/src/main/res/values-night/themes.xml @@ -1,7 +1,10 @@ - - \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index f8c6127..f3abe9b 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -1,10 +1,16 @@ - #FFBB86FC - #FF6200EE - #FF3700B3 - #FF03DAC5 - #FF018786 - #FF000000 - #FFFFFFFF + #43474E + #E1E2E9 + #F5F5F5 + #43474E + #3E5F90 + #FFFFFF + #6E5676 + #33000000 + #3E5F90 + #74777F + #E1E2E9 + #C4C6CF + \ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml new file mode 100644 index 0000000..e27d602 --- /dev/null +++ b/app/src/main/res/values/dimens.xml @@ -0,0 +1,26 @@ + + 9dp + 11dp + 8dp + 6dp + 12dp + 8dp + 7dp + 4dp + 80dp + 12dp + 16dp + 16dp + 8dp + 24dp + 16dp + 12dp + 10dp + 16dp + 16dp + 1dp + 40dp + 41dp + 246dp + 329dp + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a7036ac..d297d1c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,3 +1,21 @@ View & Resources + Filipp Kirkorov + Attach + More + Cart + Place order + %1$d items in your cart + Order Total: + $175.50 + Tax: + $10.50 + $25 + Shipping: + $140 + Subtotal: + Category + List item 1 + $35 + Supporting line text lorem ipsum… \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..5a63cea --- /dev/null +++ b/app/src/main/res/values/styles.xml @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 62ec3ea..7d89cb1 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -1,9 +1,6 @@ - - + +