From 8f9998769601355fde71eb3129584678bd24a2fe Mon Sep 17 00:00:00 2001 From: khy <18814188563@163.com> Date: Fri, 14 Apr 2017 16:07:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B8=B8=E6=88=8F=E6=B1=82=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=EF=BC=88=E6=9C=AA=E5=AF=B9=E6=8E=A5=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=EF=BC=89=EF=BC=8C=20=E6=96=87=E7=AB=A0=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E4=BC=98=E5=8C=96=EF=BC=88=E6=96=87=E7=AB=A0=E5=86=85?= =?UTF-8?q?=E5=AE=B9=E8=B7=B3=E8=BD=AC=E6=9C=AA=E5=81=9A=EF=BC=89=EF=BC=8C?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E4=B8=AD=E5=BF=83=EF=BC=88=E6=9C=AA=E6=8E=A5?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=EF=BC=89=EF=BC=8C=E9=A6=96=E9=A1=B5=E8=B5=84?= =?UTF-8?q?=E8=AE=AF=E6=94=B9=E7=89=88=EF=BC=8C=E8=B7=B3=E8=BD=AC=E6=84=8F?= =?UTF-8?q?=E8=A7=81=E5=8F=8D=E9=A6=88=E8=A7=84=E5=88=99=E6=B1=87=E6=80=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/libs/mid-sdk-2.3.jar | Bin 43727 -> 0 bytes app/libs/mid-sdk-3.71.jar | Bin 0 -> 56376 bytes .../mta-android-stat-sdk-2.2.0_20160504.jar | Bin 143993 -> 0 bytes ...android-stat-sdk-3.0.0_20170331-jdk1.6.jar | Bin 0 -> 158505 bytes app/src/main/AndroidManifest.xml | 26 +- .../main/java/com/gh/base/AppController.java | 8 +- .../main/java/com/gh/base/HomeFragment.java | 8 +- .../java/com/gh/common/constant/Config.java | 8 +- .../java/com/gh/common/util/CommentUtils.java | 154 ++++ .../com/gh/common/util/MessageShareUtils.java | 14 +- .../java/com/gh/common/util/NewsUtils.java | 19 +- .../com/gh/common/view/DownloadDialog.java | 2 + .../gh/common/view/ZoomSimpleDraweeView.java | 17 + .../com/gh/gamecenter/GameNewsActivity.java | 61 +- .../java/com/gh/gamecenter/KaiFuActivity.java | 10 + .../java/com/gh/gamecenter/MainActivity.java | 153 +++- .../gh/gamecenter/MessageDetailActivity.java | 2 + .../gh/gamecenter/NewGameDetailActivity.java | 8 +- .../com/gh/gamecenter/NewSuggestActivity.java | 402 ++++++++- .../com/gh/gamecenter/NewsDetailActivity.java | 2 + .../java/com/gh/gamecenter/SkipActivity.java | 3 +- .../com/gh/gamecenter/SubjectActivity.java | 3 + .../gh/gamecenter/SuggestSelectActivity.java | 10 +- .../com/gh/gamecenter/SuggestionActivity.java | 2 +- .../com/gh/gamecenter/ViewImageActivity.java | 117 +++ .../java/com/gh/gamecenter/VoteActivity.java | 172 ++++ .../gamecenter/adapter/GameNewsAdapter.java | 4 +- .../adapter/GameNewsTypeListAdapter.java | 6 +- .../adapter/LibaoDetailAdapter.java | 24 + .../adapter/MessageDetailAdapter.java | 122 +-- .../gamecenter/adapter/NewsNormalAdapter.java | 6 +- .../gamecenter/adapter/PlatformAdapter.java | 19 + .../gh/gamecenter/adapter/SubjectAdapter.java | 2 +- .../gh/gamecenter/adapter/VoteAdapter.java | 96 +++ .../adapter/viewholder/VoteViewHolder.java | 31 + .../com/gh/gamecenter/db/DatabaseHelper.java | 5 +- .../java/com/gh/gamecenter/db/KeFuDao.java | 40 + .../com/gh/gamecenter/db/info/KeFuInfo.java | 129 +++ .../gamecenter/entity/GameDetailEntity.java | 10 + .../com/gh/gamecenter/entity/KeFuEntity.java | 120 +++ .../entity/MessageUnreadEntity.java | 103 +++ .../com/gh/gamecenter/entity/NewsEntity.java | 10 + .../gh/gamecenter/entity/NoticeEntity.java | 9 + .../entity/SuggestionTypeEntity.java | 49 ++ .../gamecenter/game/GameFragmentAdapter.java | 25 +- .../gh/gamecenter/gamedetail/FuLiAdapter.java | 40 +- .../gamedetail/GameDetailKaiFuAdapter.java | 12 +- .../gamecenter/gamedetail/XinXiAdapter.java | 25 +- .../gh/gamecenter/message/AnswerFragment.java | 26 + .../message/AnswerFragmentAdapter.java | 41 + .../gamecenter/message/CommentFragment.java | 74 ++ .../message/CommentFragmentAdapter.java | 126 +++ .../message/CommentNormalViewHolder.java | 35 + .../message/CommentVoteViewHolder.java | 31 + .../gh/gamecenter/message/KeFuFragment.java | 106 +++ .../message/KeFuFragmentAdapter.java | 201 +++++ .../gh/gamecenter/message/KeFuViewHolder.java | 32 + .../gamecenter/message/MessageFragment.java | 209 +++++ .../gh/gamecenter/message/NoticeFragment.java | 73 ++ .../message/NoticeFragmentAdapter.java | 126 +++ .../gamecenter/message/WenDaViewHolder.java | 39 + .../com/gh/gamecenter/news/News1Fragment.java | 342 +------- .../gamecenter/news/News1FragmentAdapter.java | 730 +++++----------- .../com/gh/gamecenter/news/News2Fragment.java | 206 +++-- .../gamecenter/news/News2FragmentAdapter.java | 504 +++-------- .../news/News2FragmentDialogAdapter.java | 87 ++ .../com/gh/gamecenter/news/News3Fragment.java | 2 + .../gamecenter/news/News3FragmentAdapter.java | 49 +- .../com/gh/gamecenter/news/News4Fragment.java | 438 ++++++++++ .../gamecenter/news/News4FragmentAdapter.java | 782 ++++++++++++++++++ .../com/gh/gamecenter/news/NewsFragment.java | 74 +- .../newsdetail/NewsDetailAdapter.java | 17 +- .../gamecenter/personal/PersonalFragment.java | 17 +- .../gh/gamecenter/retrofit/ApiService.java | 46 +- .../search/SearchGameDetailFragment.java | 2 +- .../search/SearchHistoryFragment.java | 6 +- .../search/SearchHistoryFragmentAdapter.java | 2 +- .../gamecenter/suggest/SuggestPicAdapter.java | 4 + .../suggest/SuggestTypeAdapter.java | 5 +- .../gh/gamecenter/wenda/WenDaFragment.java | 17 + .../main/res/drawable-hdpi/add_vote_icon.png | Bin 0 -> 361 bytes .../main/res/drawable-hdpi/ic_game_select.png | Bin 3893 -> 3811 bytes .../res/drawable-hdpi/ic_game_unselect.png | Bin 3987 -> 3867 bytes .../res/drawable-hdpi/ic_message_select.png | Bin 0 -> 3733 bytes .../res/drawable-hdpi/ic_message_unselect.png | Bin 0 -> 3747 bytes .../main/res/drawable-hdpi/ic_news_select.png | Bin 1844 -> 1690 bytes .../res/drawable-hdpi/ic_news_unselect.png | Bin 1903 -> 1759 bytes .../main/res/drawable-hdpi/ic_user_select.png | Bin 3619 -> 3622 bytes .../res/drawable-hdpi/ic_user_unselect.png | Bin 3650 -> 3570 bytes .../res/drawable-hdpi/ic_wenda_select.png | Bin 0 -> 4605 bytes .../res/drawable-hdpi/ic_wenda_unselect.png | Bin 0 -> 4704 bytes .../drawable-hdpi/personal_entrance_libao.png | Bin 0 -> 3412 bytes .../main/res/drawable-hdpi/platform_vote.jpg | Bin 0 -> 7662 bytes .../res/drawable-hdpi/suggest_pic_delete.png | Bin 1258 -> 1652 bytes .../drawable-nodpi/oval_message_hint_bg.xml | 7 + .../res/drawable/progressbar_vote_style.xml | 17 + .../main/res/drawable/textview_all_red_dn.xml | 19 + .../res/drawable/textview_all_red_style.xml | 8 + .../main/res/drawable/textview_all_red_up.xml | 9 + .../main/res/layout/activity_game_detail.xml | 15 +- .../res/layout/activity_gamedetail_news.xml | 2 +- app/src/main/res/layout/activity_main.xml | 65 +- .../main/res/layout/activity_suggest_new.xml | 8 +- app/src/main/res/layout/activity_vote.xml | 48 ++ .../res/layout/dialog_modify_nickname.xml | 1 + .../layout/dialog_strategy_select_game.xml | 11 +- app/src/main/res/layout/fm_search_history.xml | 8 +- app/src/main/res/layout/fragment_message.xml | 161 ++++ app/src/main/res/layout/fragment_news1.xml | 90 +- app/src/main/res/layout/fragment_news2.xml | 61 +- app/src/main/res/layout/fragment_news4.xml | 110 ++- .../res/layout/fragment_normal_message.xml | 27 + app/src/main/res/layout/fragment_personal.xml | 12 +- .../main/res/layout/gamedetail_item_top.xml | 4 +- .../layout/message_comment_item_normal.xml | 84 ++ .../res/layout/message_comment_item_vote.xml | 58 ++ app/src/main/res/layout/message_kefu_item.xml | 61 ++ .../main/res/layout/message_wenda_item.xml | 97 +++ .../main/res/layout/news_detail_comment.xml | 4 +- app/src/main/res/layout/news_footer_item.xml | 3 +- .../res/layout/newsdetail_item_content.xml | 3 +- .../res/layout/newsdetail_item_news_more.xml | 4 +- .../main/res/layout/refresh_footerview.xml | 3 +- app/src/main/res/layout/reuse_actionbar.xml | 2 +- app/src/main/res/layout/vote_item.xml | 84 ++ app/src/main/res/values/colors.xml | 2 + 126 files changed, 5775 insertions(+), 1850 deletions(-) delete mode 100644 app/libs/mid-sdk-2.3.jar create mode 100644 app/libs/mid-sdk-3.71.jar delete mode 100644 app/libs/mta-android-stat-sdk-2.2.0_20160504.jar create mode 100644 app/libs/mta-android-stat-sdk-3.0.0_20170331-jdk1.6.jar create mode 100644 app/src/main/java/com/gh/gamecenter/VoteActivity.java create mode 100644 app/src/main/java/com/gh/gamecenter/adapter/VoteAdapter.java create mode 100644 app/src/main/java/com/gh/gamecenter/adapter/viewholder/VoteViewHolder.java create mode 100644 app/src/main/java/com/gh/gamecenter/db/KeFuDao.java create mode 100644 app/src/main/java/com/gh/gamecenter/db/info/KeFuInfo.java create mode 100644 app/src/main/java/com/gh/gamecenter/entity/KeFuEntity.java create mode 100644 app/src/main/java/com/gh/gamecenter/entity/MessageUnreadEntity.java create mode 100644 app/src/main/java/com/gh/gamecenter/entity/NoticeEntity.java create mode 100644 app/src/main/java/com/gh/gamecenter/entity/SuggestionTypeEntity.java create mode 100644 app/src/main/java/com/gh/gamecenter/message/AnswerFragment.java create mode 100644 app/src/main/java/com/gh/gamecenter/message/AnswerFragmentAdapter.java create mode 100644 app/src/main/java/com/gh/gamecenter/message/CommentFragment.java create mode 100644 app/src/main/java/com/gh/gamecenter/message/CommentFragmentAdapter.java create mode 100644 app/src/main/java/com/gh/gamecenter/message/CommentNormalViewHolder.java create mode 100644 app/src/main/java/com/gh/gamecenter/message/CommentVoteViewHolder.java create mode 100644 app/src/main/java/com/gh/gamecenter/message/KeFuFragment.java create mode 100644 app/src/main/java/com/gh/gamecenter/message/KeFuFragmentAdapter.java create mode 100644 app/src/main/java/com/gh/gamecenter/message/KeFuViewHolder.java create mode 100644 app/src/main/java/com/gh/gamecenter/message/MessageFragment.java create mode 100644 app/src/main/java/com/gh/gamecenter/message/NoticeFragment.java create mode 100644 app/src/main/java/com/gh/gamecenter/message/NoticeFragmentAdapter.java create mode 100644 app/src/main/java/com/gh/gamecenter/message/WenDaViewHolder.java create mode 100644 app/src/main/java/com/gh/gamecenter/news/News2FragmentDialogAdapter.java create mode 100644 app/src/main/java/com/gh/gamecenter/news/News4Fragment.java create mode 100644 app/src/main/java/com/gh/gamecenter/news/News4FragmentAdapter.java create mode 100644 app/src/main/java/com/gh/gamecenter/wenda/WenDaFragment.java create mode 100644 app/src/main/res/drawable-hdpi/add_vote_icon.png create mode 100644 app/src/main/res/drawable-hdpi/ic_message_select.png create mode 100644 app/src/main/res/drawable-hdpi/ic_message_unselect.png create mode 100644 app/src/main/res/drawable-hdpi/ic_wenda_select.png create mode 100644 app/src/main/res/drawable-hdpi/ic_wenda_unselect.png create mode 100644 app/src/main/res/drawable-hdpi/personal_entrance_libao.png create mode 100644 app/src/main/res/drawable-hdpi/platform_vote.jpg create mode 100644 app/src/main/res/drawable-nodpi/oval_message_hint_bg.xml create mode 100644 app/src/main/res/drawable/progressbar_vote_style.xml create mode 100644 app/src/main/res/drawable/textview_all_red_dn.xml create mode 100644 app/src/main/res/drawable/textview_all_red_style.xml create mode 100644 app/src/main/res/drawable/textview_all_red_up.xml create mode 100644 app/src/main/res/layout/activity_vote.xml create mode 100644 app/src/main/res/layout/fragment_message.xml create mode 100644 app/src/main/res/layout/fragment_normal_message.xml create mode 100644 app/src/main/res/layout/message_comment_item_normal.xml create mode 100644 app/src/main/res/layout/message_comment_item_vote.xml create mode 100644 app/src/main/res/layout/message_kefu_item.xml create mode 100644 app/src/main/res/layout/message_wenda_item.xml create mode 100644 app/src/main/res/layout/vote_item.xml diff --git a/app/libs/mid-sdk-2.3.jar b/app/libs/mid-sdk-2.3.jar deleted file mode 100644 index c57e1ab0de36d4296a75023ddc3605818107d448..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43727 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 j{{fo|2g_E5PD6- diff --git a/app/libs/mid-sdk-3.71.jar b/app/libs/mid-sdk-3.71.jar new file mode 100644 index 0000000000000000000000000000000000000000..2c0f80e8b3c8a98e7adb71256665c52f7f9ca792 GIT binary patch literal 56376 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 X+F7q1Mgr>3fUo1=x7J^~)?WP^NzE!! literal 0 HcmV?d00001 diff --git a/app/libs/mta-android-stat-sdk-2.2.0_20160504.jar b/app/libs/mta-android-stat-sdk-2.2.0_20160504.jar deleted file mode 100644 index c77a04d051b8f0f8f840ffc21a8164f305449ef6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 143993 zcmbTeWpE?Swzb)2W@eJi%*@Pex0#ulnVH#cGc&iD+RV(%%yyf4`aS2)#Kgq8C*m7P z8C4Pbp{gfy?c6JOmK0^cz|p@!LqmUCP%4)E_WydJ|2>xzQx&3?u z^j`|TNU$?yABo{`h<2m%Lu$st(0E{pL)~W=vw>;1u!-?U#g4aNuLUtLutP#TInEmo zopRGBEALPN+B(uMKze`|4tN$Vj!Yg&Kh?zdIQD60bZ^U}(}zU~8DgAmUKsc=ma7R@ zhZ5#~iHoAFdVvw1xQmzR&R60Dd0|TkFA2>$bt{{~jgEG-c4os0i?v%n3|CbZ-7CL` z{vSR2^nAS}b}2%P-tV)YVxKE6@4aS#0> zu~XI|>Mn2;jq*>#C2@-1#rua_IJnf}$zLj(ApeaU#s9`l*3#MK|I3c)A9kVtW*6}` z8yJf4J*(bI7T(dAF{z!ymw(+$FJM}8}@j6CIhC`xlsqpSdH#FG`wsE4J>00O0xX9-pG`F>7Ve-#K}vi zEBKO$U7|EMsK}b1;z_F0P1i&~Vc0o|Oh=bx21HX%~#3Tx-4pPuG&?*T~ zFfr%~v=>vdFl^xhYD2~Fr2v2;%3fY3DhiBhO<}My^lUjZJ+nvxGO%c8KWS>RU|}b} zT0bc(Jtr%@NIyp@qsSh6DWiIsR%QV)V9p#fQf>#NPpZ7lV~hn@xZ1MriAqkVm~B{faCffxk= zNZBAZ$exh@Qfdu{ufy(NBCh|H8TNl-X7q1Lp^9=cgM!Gu3qy9v!yU`(ua1iLY=oFy zt&jUlNVmJbXzBA>9LQ~NogtOG{Y1O*Nz=;xB5;V4D;pdWlkZ=@KR_MgL;`gKYXzz6 zDe8#|!T`bnQ`jM9G02Xfk?KLy%+0>5B;ef(Ji_apwBr&-F?2Dm=VO*-E<3%8P{urN zBElX@+js+G)OYLc>5X3P^Xl=kOB624zT(7koNwk?vwFF@P{-h0b2D0UEd&+WK1Q%3 zT>__WW;N4gT~3Nqv~k~K5?WTjNu4Q}Z&_WUYRA|)FCA@@Il4VVCi)V4g>nplX!Yi# zusGV8IY)4v-&oK}Y5t4dQ2*!J^ItO2|L5!s|IIE|Sxy0z3E3BHbR0H{k{FgW5~^>I zd}sp~(TQ0I$wHPlZ7VE)Hmju2KYFOnVt+1JV0_i?mK57|o?{`?lf~AYpI?9b8>?bN zy=j3(fr;UUFjpX@x(#xgjc7t6ipcyhXj<|piLC)&q?`%734#rB;nF&nVeh)x0Fud$ zJ1-SF*0?2(XW1ssh!Ulah_(7g9zOTmCC-c_(@~CtD@|~fF}Y?ul$|ZRFkYB4=O*y- zi!87<`3Kr?4_~^?WDW=#Uzsx*_ywZJX(Z93m_8d!L)s%(!M!<9_*|7q;YZz!EG{V1 z)cfzRK|$snW3r_^!kc(cLCQagSqYile|U}46>#Ttsd<-A}ibJ=4TwM1|5 zmz&v$tP*F9R$d5^>je6<`e^4Tmn>yPkR(+nls^gY%xQbbc$V}~I%ji+$S$QMsVx>E zqWiG^i2}?HVWWzFd&Cd)zr|4Ce;U#9rY`RGPS$dUc82DrPXE(I>K7_#8t8v)q3u>_ z>!6{7f}(JPla{So(zHkdijC@V3(8aJ$57P=>|`+)dzx!}*V28p-sbsfeP4w(f@Cu- z&Cg|d76d95EWM|%QEOo4kls6AHl3&WX14hJzaAbKzOf&?lWO%5Gq&@3Oa>b^HmgcWDI8A>*JHFzjZ;G);0w zOW`o=hs3lok{s|x=a?t9C8pdVGBaZoaG#ijs1BSKH+NcJxjQ3rq#T19kPPhp`>MKLcF9PAsE=Y`QG&u$uG7 zHk%}5wXl>Wya}BhYjpsM2+Y&ia++DBs_VkjDfgG*MJ(A027PZ@hDEU0#M)EAoi9GQ zxqe?=o-CJ*8gjY?bQxTnmee5KgxOR_SE#u|g&2GVvD7^PMKD`9sqb7tpaTc6aI+vB zpAQ7M969B>5uL9%BtM`vWm7ht`m4=O|NKp&MK|`D~sIDcnTqz|} zxfwj=W(Vx+$)4s{BqF&+yGio@p`;IV7M+BBdJRdM3_ zli^}SThy(Rds>0+%`6=+epPD9y|fo8nr_$jLt%o`=_)xY&BaT3V)aUapwXPL`YsB$#; zHl|u~7C7gVmwzJBv8FNo)E?KE5H`rw=bDwoSmLodTjq%ct*N$LLE_PHMb+k|d;QR%{08o; zc;irhgTx&guF%yB3>y%-U15ZOvc+*Sv zz@LK-z^Ab+LPeR)_I0Mh$I|r{(athQlXGW;aS%@$f;}AX;dRA%OBI+RW`jAeiVnD( zt@qJp)qO|gmC^)R>0O0Phpv+xBogKRgD(=tVO=vBOsj~0ErYzZ;DDt&W`#8fyxCV| zFjLFQot61+O8p}&omKjlB#a<-5S=;xXCP7iK2r6aCzQ8;Q>*F2En?Dywck)w8s5U~ zrR~p#I}IaUU|W}_)D);!R?SjR55Aaxk&vibS%j&7zg&=clcl{wVZ|=`vKfn(xdsTY zJ$F+27)cthgiv+PAfE~&=(8Ky*o@&8dRBy8jsybGv&w#q_WDFV-xPDh48_C-??l4)p+=D3!B@2PHxz zudR-~`%kEY@5!l{$*Z6kqf-0+|I8~i8ImXvkl(%y!T|u9?8Mc*{=Y7p}!ZqWpaQ*r8vVruCg;I)>!BBm`7{(K(3UwJ!9oHZ-39>ymRWIR``J>f=Gs}9nqj?`niF6M%VQ_D z@r>gXtRvYyo)NCUv`wp~R~&CIMN>V$(b`@;MUnvF1aedyfvq zUd3KCIxfDl;GUho^h)35;)5>L)^&wbcnx&;`U0|6MSkFJiS$-NdrLZM+-*IY{~>^F z4=o*v7zK7&k0D+}-`xP(b1z`n8SRfD{pO8cD zLx?4^Td_r~n}2{GZhnR@_xh>mRx;LuKV8eZha|kVAopy<>22*YlK^vngYsft!9P{9zow=llveszlq{;*(Qioce{BuPBT+d1RyXnK%RTaBm(! z8jRf1p@CgPG%m^R!Ia)8@4=QR_orEsLc2u&=;GEPr|j3?Tq^ zH=@uCIYoV|z9e&V^O>AAE*=4Y-#;L`FnL%FC;4Z6?)5jjJ;6|jgxnrlLBXzp5S!?f z1}X+9Rm;^dI{mJJz)fWMHDt=d^TNQaXm4ldjjT?3UYpK@_M?52Rvq5qxCx9l7;n8M zGyqtpC7MO@m{KY8SfG&6A<26#0N!<-6us*>Jo8hs+>^lc%@Xwq$BH?7rS+n$+Ei$M zqQHjjPnO8)1ThLk?q@;x-P=`{%_pW^<>AL%gof3gl-B1$*(}GxNQEBZA-P z-?y4yYZD;3N?UyV0p3SF{){&krdq@zj%r`Ac+`3s-os1&!<2&O2_h|m0}jD;kR6o7;j?0lJrw$YAnB&cIcSXZWO44MfZLvc zc#~1=)Wo6hIMQhMpwn=#isD4W;6C{Vgvp?#;FHj=vi;1M7@GsGAU|j{2g^W@(a{@< zciHWzUr~Qhwuc7=)!jA()j5jwb7ZLHA5;dt54fYD!L~9^Aghg>;K)}VM0Z%f<=I+= zoj`6PG~`^6twixGDI$Y(dRK>o@U#;w zr58*SqFXEamfRoRlXGNo(U)IU$CG*%n(8CjNYJcrY%-j;)C>egV5o3}L?~d#U9I=4 zh2=#qldvCT=5)oEe{Nd)%>_<(%M#T_Uwf$^tDmG>mU>YoHMA6KM0>3jaA(MOpDV-u zJX@l6mt&?`FrH;}tB$$6*}xnewO*V`u&m1x;j`R{c5SaQvsNT?N&M$>PqS zQp?pw1j%M*t1L7BJv|Q0MUQNnX0wgYdCctsq>c$6YXx1r9I>1+o7-x|%=4$+)X%B7 zQbYwTw)P2hrByJwhJA0OERr`QU%{;6ETug&UCMAP-g1rXqtNy0F@n!Mj4+$*QqhsK1;1MDXkGD(IKazg`ia{0GUxk;$;Eal?dbfH(c8- z=&{62#O>(@{RGs6u_HWA`a{Au={bTNl3!>ML`C(D?PKPaKP@WtfR zXQu+GH+5J0u|$kr(P-X^(mb50h6pA*mH}U7cplNh6Toq9*&BO)7_vHKa%9iIiH4Kr z5ww(ZEt(}=X@K%k9_c5RIJ2_lUHt888^Zz#TjhUW{_A=@WILJl3<(k|iK#(**>0kS6w`qqXBatsR*^En^&ZNl%92n+s8S?Im8v?fPKU`EQEZQ7m*VIMS4$aMS4!kilQIoK|6qY8yWxx z5)Y0IDi7{MmhXv>Ea|Mdcgr4L9ir_aF@UZPlr@$bh(W?ZoWNfOZVqRKeCKD1cIT>| zSRD>$X7wR23XJEp8C@NWi}AhYIdq8eW|rMdzoSF4Gn5GnM#8Q^xLZ_C+*7xzaH;gK zGvDY~nq1zJpRls?NcM&wQ+4!s7OGp~XW~I;6<$DZNy1fst!u6*f9+0xC1NTj`&dlh zvNTiZY)##&(4bj5P+4%0^5JIASmaPi#2K8Mn*yd`xeV5Or&WFKX1rjB96>y6>H@7N zo7x-J8nv!52R(X}Rw|FkuJTLg*^jQ!k_}1iwRJVxHu<`@$ms2>kep+aFh!-TxHM=X zLgvOOl}?h%F)A^h%IC2o;%~0QG=nr-O4Xw_0*wo=&xey6uPxpjv!mou+?~IKF%g3? zlrAED+4M&(C9oo;ciRhx2^Y#1gk49NYS2hW9&uch;NNL4veFE-?9wpL%tTzVl|>c~ zIg5gKl{{x?Gi*mLMX4YP5ZabXjk+jn$joZz)7Yjaa3f^~6e6+!;a>7ALH3FRqE#0+ z00N=t6g!>kdVd0JGd(AJsWAOqt$3r-Ivv2%CL=+csWyBv3P;RdhX{AAJF=DpM|n&8 zplPvP`{#A<#tq{7-;eo_$;x&CsGmK2q4hgC<{4dPskv0?NI?L>TcH2AJ_D|~65<{9 z-4=2@T3yI1^xcezPl^ZC&`1Q9hz@aWSi2+V2(LCUyg$L=sTQ$TKA$t&>~x%@9y=VlG5Zug2RP(ti$xKE0F8n zzR7-PT52@kuDmY{cMCtcM!<-#Natm&3P{#We1RWPCgL#r-KtMBFbHsRi9#N*E&!Dke&9+bZH z%`N&8>I#UJZADcSP-k8yZy&^;wA{Yi3L^slh`*J6PqpT+`1}8>_^JMP@&B{5{!fj< z)b9UYU6YGsf*lY<7W)HWvZm7O7q5b_H-M$-7p~VIAptNoCBzU;4}f`4ItIt~dLV84 z`{yxy)1D-N4aXtTx1SEd7}?IIjLssW%Mbuwu4a{oo5{w*hlt@3_U{BOe|cDj#@5GZ z!G!Bo_UZBsb?W`u=SRGc1_mY=YN;dRI}!iPf%o}W{&K$WZyWUYveW;z|GixGAD0aO z71bOZ-Q{){fpgxK>233_1dOpK@PSRqz(#Bwz|83^ei%jH)DI&*EYo=c)G< z>94P2y$il;5*YW8Ux{nOJqUl#@t*e0bDsIx+4lbQ{*Lsm?T%I$5)qRk<1U?>xw~vA8!xEV?OGkHxAlEq-TO3Z4YO{Nyg9K zUt=8xC(WD-3Kt73n6!{;dv2;VJP$iFBhYYeqVCVJW%zEk)>6p=synp4ux+sxWp-_* z(fSO(#fPT8Wwo}Md&g`KEy@zwLDhIRonz|M#R1TxM2{9z!2dy~0)s>)Gri6ZuFN%2 z3@hg@QnfgmesAwO=r)0lahmgkCS_UUA-l@cwY$0X=kva&o}gk?5bhOK4K2D;c0o>D zJw5l*lMa1dB}D}lH{Rz`l3AUlHb$kO1#7FtDJWC7Q6@Ux>qsD~cQ#~|yTv7J^A)aL zzf0_STq)kfIzL?rRkLcX>Udm%_HpZA?uv&{VW`?ci$pCs-z$0-qQM>Ewv@|5%hi54~h=oA5%G07`QIVI6bWh(SJ zRtQKxuKaNfERjmm{r!VgntMFQB}d9vR+@vQ>c{sj)VZM8>x0H#C7$m>?4>?J4}rZO z&2#eM?y7#(jm`B}|3_>5W6m(AXU;n<{IuiV%ba_#&_a^aqQ6=`rr?y8p{1xUin?BJ^gd9EX zgnDy=)_(S>AHgYiHh8`8o1BGD3aj*!q7Vw`xLcx-kHe%dmh=nU$kzG8T<|g3)aTdF zHwf$!loA8@SFnFVN10_IH`3qGQTBHM<$qV$e>91v|IQX%6Q-oW{;6b^3K*9yaI0(6 zosP>9V4<`{8AJyuIw(01u@n?@!^ke|Tf;={4?x`(4B=IgTA(Fm=iKO^PH((V&;*FM zh%^gVhp$4YE+pp(;7Pq#M@Qyskat?;-X z-c39C?0G(E;$6vOkAr1XgV?Nw+E5J=oWifxT@aN#npYk)WYCloZ6)^-Iw0rce2n-VD7fd|jo^+}~h&BpdYYjl#`aUyJ?WyMS9p*vYDua$94qtyu-=#DSCe@9y(hUYiUj9c$jM z&fBf5j!XKlnG97|d;eHJ7a@1^810Eoo8D8jmLj2x=X2HOyw6QUU$*z5xL1Ts_6YsK z!lpRCAT$eCC|ugeMDF3I*OeFkrnVQohgGNPX4xCinr0;)YiQ(hr~mlMMmt;hVhvc`CJe zB#l#Fky7RvO_K#MRRzGA+9<=?P+TB7v z4D)w32jm4(`o7SK6tkEs(wwq0Xh8VXyH|o8k$mhr$TVXUoWhrYXDF}bIsEO}f$Y<} zPt}5$Rn@|n?H?r8k#zVl_95&a-yjB{vq)bY6hqEW?WFr0$rql=E1rCnouNJLi##xe#*KUcW=qT6}%BY0O;TzbtEq6vv+d?)4zAN|b z3h%PwXpp74l+})?MGn=X=8-A^?gYhBq%O^ZcZlVH(wx$!b0G%MgD$=rr!7Ti{J!jw z78qxwn4-<074jXP!9#!Ye<^%e4Nnbm$|KFu?IEvV>f@oT{08AODJH$a>a~QQ+Uc zdBXg+8H411OEyL9?aVCA|0l3%!+5AJVer3918z*21)0A~4zLr;ND8AWDv=eEfMbt> z0;=g9N4o%IO-%Md!`;`eRdDpg`*u2tB*7%LYE_E1RmxBx^K3fXZZe>bZ59;j_wB9;`w2|IopJ<2k5#~Arx>PPK6?`GFnTCfTL7KLP9!-lqZjbqy&b zyhfr5NbM7#3Vh$!i?mPhC>!!c)c|Y*@9ZL9BsUrEBmiIKLqy512dMtS`wG$@WvKqr z`wB82IFWy3_h+O(;!*u6;D!XUH_CnTHOvkzG2UBl4*Ou$MHI8aXx0+B>a*m?IYSJn z`&om|z*(TjVa!lfkyTMuQ6@>t$ur~_!*>;f24Rj-@r4}Fg$VlRz#pLFNHP>0XoXmW z;Dl)Uoq{mH3BYr~%aB80RD-blA;7WFbfg_H`j^00P<136`1;j@uE5)nH>Dk*`hCHX zP%g<=MHnUP(+w!0mK&+S!;kvBT1lYT>&b(XVYp#F5G{<;dGd212r$ z4WV4>AE52XSN8&v*TjP&z`AUbz|@!%cRiq78V~SifBDJYe(Mha>sSMadSoQ(Cl8_n ze?i?;xXlOq5ZyPgf>uYXCef6sUjQkqr-uU1$lhgz0$<~X3b7E4I7Vnl1-}A^?Y9Mg z;WR*tT^;g*nI`5;-t`HhfvF`~6|RrnE!BZ;f`hShahlGf@JQTc3sT709EQu;oF3uw zWM2XVDS;RL7NwXW8>MhSL06O@S&AxGpM=Zxf$b+*WKYe{F(7|Z|J!#b)Rk&zi?^Qg zdNM5{Fvs%;D6IREl}mT16arc4T)%m(tW5-f9(lXKAPs0gkz4Bi3vhenE~#6rAO`3j zQR3%VpP*!h{p4I9rXPogGLp(jL>GrLYvJ-eG2I7;a+kgG+rxfhx7I-~FkfefRckBq zJ!zk5yYArjXg&OT0XDU!fJqhL?17FesmtdDt6iAIo&4vt5Wm|! zqie{TIrtx;{5ZKq6rfS6m+|7VjMv)a*WO{-e4zpbXZ)4({R0er{s`RKPR2Xr|u(LdJlXbA44Ku%>ggDoRQz~$Qfi${M@k2 zjv2HG-^FjO!2OuF%ocAsTU3hMFs>T%v{k#jk>8-z$+yL{>#E7JVpAnsXqq~PfDZ^< zxYF4Anl-cUyQwlG?hO7?w3k)Fnara7VryIJ+%VeK%tqb1yiwic(_88mQWCcNq5otD zP01e{6IkO@DzU2!c`$Cy?kUn^v3gT=1|M!DO{u;hcx2g7gd;n+J?&5rnaxunA@L1N2t&ZswG9!J+RD`1{@=W<8}r1f!d#l1M(6hJxWkv zB#dnv$~j71UPz8yXryhR!$gb%sLV-F^Y*tcYhXM?w%BU$s9DE)d;{Ze zz~^y0a9KMdj1M=Pq<*0-3A;Ozksu^5x0+zN?h4(+>*Bm$C1Mrb2@HkJETUM%5Jzkh z-#4fToP4a3xYiTcM_u@Jg^G{ozltowL(IQKb}OY#fl&UN1Z)Vh_LYQ;mb_*D#qke? z0=o4xG%d5GweT_1MMZDd<{MziJ!!$>zG^kNRjzn}C84yvIuTmM2NOlzj9AuPi!74+ zau)4O6Ha*wb|jVJthHbS&sK%~2{n`P;``B=o=q{BzKK{bx5)dO;nnc87jrWMP=T+} z)zg834T|^En^I2V%{Qd9f0~z`jNX#_N|&T}qL*!p<5sKcW(Ufc6t3?ow75-H<*R{mP?q234cj zt9Fcl4!6jGk%z|`^9S2rEq+S4sl%v{X$Vev*ikUll_pD6dYZHx->B^D_(S2?_uQf& zz=F=cn)f<-<224$&BMIJ3|ufo)IhYCWd^#clX@N#FcJ+|{Y(>iYb4 zL!+bT#rSiaxPnA-Sxt8ln8wOn!%$Pcqp6IqHyK}gF)v(X=Rh|}hs{x$ON)2bodJeR z{=oYBg|>1AHxIXkM4D$-R`ZC#A)@W#l{H|5D%;aIMr4Na;gV&Fw&m{3&lH$Xd#`-Dk8lR zGcJn3ytpgcjK`Wy?>|a0J$z63^E5+WX^T^X00ltsL`*+`celd&?)xT&(?n+-PhLFO zWU-cQc6$1NI3Qw(U0=*>>KMOx1tYE)4S|`?0;$sT=PT5kEy>vic?l>@ES#2}s6P;2 zh=w0&;i)Rbp^#g-)aWYR$mr5#xfP{moUTT8ohTa?F9jmcTEpVD-oI+pbFHxPDO9pX z1pP|IU&v+to+6JDiStEHN#f*NjN@PJ$da@&LP_i@F~&m7G)@xnz$ownsjA>kiLZvs zXe_8-D_Uf@h$2#eGj1_x5%<-yfegu)pssJr`QZ4Pv)iKxGQz&L!#-paCLGl!(4&%8vf7U|`qCF4ZAGE4{i zSjh*6)hyPPE6oy$ZljG_x**M_pm=BPl80PNft+tbS-i_{65X0n8Y}9vSZWFD?gi$d zsx1=8FXtXsUZN?XkZocd{Q*+)3r}qNIwiayNlGC0#Pbd{pq_PS4DgA_RDBwKUd-sLdf z)N-~)vHQquJ~&Tz?qevfkVsinhfd_%V2{|IMHA`;%)6>|Cc1ty(NznGipHWU&io!X z8y8+zE??9Pnw5Ic9%W@SphP8u%gIKCd&;p!_bg|wy}|hxtnE_RYQH4usw+x)9W{=fp~P1$ zg|}=wCCA&^tmFvJL(#Ffn6Pf0wD6>yP#_DcR0NhDgludvPm@+zLj_G}J-^Lsq14Jn z+*M+E89bCM>O3%@pkjjxPne7_4ZWZ}%@P$%$LGHPwYLt?D1fegh485C^HB9vpqb$m zJ@uujpWG{Rc6k9$SqzIRS#uK`nw)gKeNCvS5>U+z)aSYm+hA->+l?uXLQXLUC-h#eH z5h$ZVt1-FgUF?Ugpu0>AIZ{%*3x&S$>}0MN&6e10gRJ+WO5fo-lv~H+v?QQ{NyB<* z^=O15{5d2Oi$7+GP<2N$w8;&M33smHbQmq5%4OtssNI@L zP9MGbw)fg0;(AoQ7H0vZpC(qxmN8i$Gada(6*7UCDFn(F9Q(pnh*=nl{A+1@THXb< z7^w@w1s5g0z;R84RC!HgV1`k4%4q;)0S==~2RoT=X`eijB}{EH+%qG|NE$t?lY+N1 zaU0vyCI8-cxuGgQm;6=)K)oOAcqPZbn5kSo>0!X*7h`7nOz>9km^ zBPll(8g;fdP8X{pA)Qnyaq8+`;IHVTcAYV&To%cx99N7ulZZ-Z#{c&iF0LZectblF z7DMk`y~ed^j!Ev7lxx2iI29j&V6mx*MSz-K7}Ywr66Nw^9}BEoNbZ9 z=$I^hbZ_{G{>mAoK3>kV`0(t~%3fv8wrRP3&ErxWRJ-O1|4FmyY>mL!nk`@O47uRp z8hNcLHzT4}#k&|;BNaKJ*+Q|2C+U9{tR#W~dt{aHNC=bgRaP~o0tl^0IZOn__yrqA zhHFH{u*Y2dL!CQ=??m!pNymxlfwP9`Icx(LTNde!IY*~fPoMDGMD>-^HlwbR<2#E`aFkJ;pDQ66oW*h zaw&tYD9++UJte{8SQ6#KBeOn(F1N0%KmF|QM=Pg!EV=#PZrz`DdX($Yk0&I#wVL)n zNXPNtbRZ{yk8<#7GG`kUa{?+c+S2-hktfvM)yosOxjO}K4?3T}p?yCR-<$~;P#$iu zW|)1=$;LT;eK7kPla0T4ROJ74XOT{M)8;5YXvcq5yprt!GUiPuI zVU3MG8&LEc$h=JmIYTXu$o#9Z3zzbSx`5V072jK>4$g4+zCM0RL3|TW?S3UDaQ|({ z?|<)3nF)Fav2iZaSGXI4g?s!GEq4m`aI%3nX4v)@K|cxo39-+D>hD8D2eRZ(#$zVv znkpYBhKbn0Z>_3`4LL&WR&v4}I=fK$Izh{IeSxqM+EO@J%EJrAG3E)(;XSw9np6iB z%EJvu-o*f2++_iUod_JTdS9Zk4qqhR^Q=C|?`zCCcUWE`RBZ75_9||s+_f)GRR{tb zs}9*e_w01>ewupr@CXeM@biRXon0%_=$&A9^&P6!Oz3E(g)S%8=N`Cha8ZOhlfFmNU)|utta75fS z;|5cU$XXox_G)7=0q_~$`@C#1?9_>%omCXj4n8IuC-GQ!;5KiXaXmk9S>a}4GIU5MV0Q!$kT6?#0$yn2tdyNK$vVFvtqHr)4TEqvXO4OB1W1Sr}Dg;LFi z90N{x)tsl@rnusXjVd^8?5#g=sB{OmDKwpri19XkFv&>#v(-pzWw#!4Z@JlIX6`DxI|L zTr$ZCUIJhhAoThTA1E}FQdf}Z4{-~0SQHmUUH1@K8Qv>LzzOd*%+?QG&o8-nP|mekxDI@AH1~?h!H!_4DwPn#aPyy8@$#0<9;GnzXR(Ww);ThQAHn}YPJQz zRr1|Jpmzj^Xs-20eRL#TB7FBm>uw_IZ^zUUMQJPYH7W9yQx#QOp5u5RvWXr|lzJ`( zKHw$boS)%k1bYog(rDxt!p_R1OFDdLC_WQtMacynq1p(>g3gPl!Ddrn_!Zz?ifLC2xz!}RxoJ^Q# zP-+b6d?fT{s1=`TeJ-tV>M~fT@g~W36x-Hsj+kZ}GTnkr zLpROV&dqXpVYUV1Ub-nSs8;B8X43{e2G{#>IFIC2xEagzCcvy9kxHsECl;4>TpXjL zG1mER4_Rct%aadV)QkR+kYulaLx~oleY?H3 z7KBrTm4b-h1;(RthOrDeMTHT%mrRm^B5}HK>Q|iV`cJQyZ#i)U^qtEzkP0%mIwZ$Z z}V!&>*d$r_`SDu0x4H9Pg-qGyb4h*o?z2Oj#%d{;p#B6~$pm7JY| zHTQ#2i8fRBLl`0OeN;--@5AOLjB=yzU7R^$8l9JyrJ)Yxk}qv+7Sm)vpGN&vUip0h zqC}UXG+M*}|Bh~y5^o|e$~S}O+%1kDcI5>WcWdgjtC@wDPYPtg@yJA;K9iUOr9u(p zDGT@Vm)lEPwvZE?DJPY3$8cmeBp3xg5=ACqAH>>Ehi`F$d_EAr4&h81Ry8K^l5{N` zXr)6zV$ha!S+35KCR`B|)xzoZXK z;nxgirY6#F-`b~T&o^AY9;lzKsdyWw`l~iQ-71SB{X(;C^FkgZ-{~TCgl2)Z>|VW> zn>ZOk9}|mm@p))$d*Gzb+2Waa)K=)j1z^A7uNSi@RGNNPnkTYQA8L%mlmU&7HjRfD z)WBfE4E%*_5Jz#@q}>Pul*!H5=y4=2CbIr6A&@^~P_e{e$Z;x->$;@CJ^2S#{2}zs zPAmMH!Fm($$C7pooT$B7L)&14hwqQpX4*yQ|B=NA$cYy<5|~z4i+7sbuxRJXMr(9J z>eFNu@kY6lp508<()~cyfEoW_JMOA2gmr8O@C;`IV$Fl6OnKrk|J3|^9ekQg9`f4L z@$DvT&_j2{lWf0yP)XC>MW)?mo#|}7#7RA)rG|)RYF3;VHI2$eqrqzI=wCEw$m`>w z){#K$t0`wc01D@E=|=MBqFF`|-S?;|)Y(F$Y2@NiP+Wt;J$3elT59AHHTj;U$3#E= z{_S2mj9MrA*UKla=-a!B{M>3Uh%scyF59Wi^+Vr#mI_7Qa6*$z-gl5#p9ryDOD31F zbLct%@$Jd3KJJ`tXV5iV@@^oB-BOnFOi)zrt}TvUNNL_UFB#Jv?$Xa@kdpYTA$N>g_|kEYm5l6W#5(-9@xakMflF~W~We#YOT83qlRzCI%$nuMF~eZ>a+|inrX(Io^!&z>3DD5lUBDFVZ58d zdD(29#|Edwp0(KI@iB>m9&^gY*$&g+bSwq95H)Ze9c#wilju{xRxBy}G)iwL3bFdt zN%bsOXHwO>HE`fYr@I0~TtoFzOJ{Y}A-!9e_B7J|9tviiW$RjXUNo1m4MeGP!dV)1 z!5pUiC~F)rB3_Zht!EKqH4s-NUe1M8C(v(!c4S2xfZMsHKfR>_)yqHAarbESH9M*V z-Q!l^^)WwxOtAKc@3M*9ddn@hyovpNMo2C*ok^r21LSva*8U{W3(F_==VeF{eoz^F zQ}1fyd)Y7-ebeGuOPGas4f~;%vBjHNG!t_cyE-nL4T8@=Nq=oFAlTqv*m~B%}6e7w*Xcq#Fx@;<*qsD z%6IsRdzPNOP6oM3=e32ioNEr&cL?tl;iebs@q#~ZAF^+|7cm4x6WdMLKDh;J3)MNN zPs5WxG{uiDV*AY-f0QBh%wd20^qi6;^eJL$UpwTJd%^Zx*S3(IZ8eg=&`B;VWol1z zG*ebDM@nQ{p9_ohGhwEir*dMAVzQ3$e6OZ8$TkG|!%k;VVFwZp1Lq(|8#1Nc8Vp8f zs4XDthJlN6sR^%%28H8piqkevu~Lk`Q3x~2G4KT)DKL+`ljW#wIPh(=naGS6a@!Td zdvAerGXz28R$QQazSok-lf}m;*-!#@BC;HzXW?A*ik0y8HHqb5l^Qv)qm-pr4c1B6?8dne%e|rY3gKF2yt8 z%c(w{YaiKt?;wwNacj`?)k8gx0nvQnfQxfi2MgA%$=V0st-byX6Y!aMQO|b~~;2IpcptW)P>JG@83tnNE*^*i6Kc@Qs*;dqyj$+?Vw6o<{_i_MZ5DOzQ z%4CwkaG6qB<_KjQb;4_6Ne?;~x^Rx-s%nfWLFHx&%BtA1ej~JQ#R@`y$u%q5gY~QgYzG zHehcR$6y!zEqd?%*R6{G>wSwFx)`cD8QMAjUzD8%Ok~ZrwqbC0cX#)}-QC^Y8fOM~ zcXxMpXK;6SXc$}v7+}z!@0@e*Z|6J7O?oGtbh1;cs#fh?UC;Y2i~k}p|F_A3yE`PN zJEVpLq%uNY^-!bOTlP@5>)T#p;Z(P)?KHClMCI(JAHYj94AR=XcDjGJMe;4kL#?`bf)&tLyPdyu~dPt4i{VC-sYC2DMEXJTw>`_EH;^~nE?l2(KvH|yNM zM%IY;`Le=iwy%ft{sLeU_K8MF8w2UygJ!+{FOpOtIORTvE2ePXo0Zcrrpa+3MxK!u zvB07O6_Y`54Jy{suUZ#_jQ-{69C0fcSnFrV5pE^(7e`7;2aU+X-1%P|>Gv;lR(_wY z{?8ogzop!){uzXQLXW~1VdT*dIwC616BsBhnbEMLXogTR;(2OLlZ#asen!GBEbQps zu#{^fV`C|LZ;-t4@-8eB5(SowxZNp*_m^M49}ta*bTKC|D>JS`%;VSWn4m&i_%!0V zW?F&yMuXz>5)gRs72gjM3v`H{Y%UVwd*gq~Mlb#z0Nre0oh z?gY}_syP!G zk({a5$T18jx|7-TcawdzztY&)FVu$ev!BU7)qj7V#{YJ@+x)YyV^sAWQH9a@!Qe#O zqDtm;bTQ^vzQDEX{0REhU)ey@5}R&Gi&jpA^n4WbF$N`gC3H}E z0hTq@!Ao_#<7MG|yg93w2Wq$H@Z}R#ol*w24;VY?9jxuO&o~7g9KoAtsQ@JU8v`*2 za4|8mS5QWI2=L*W!uP8K)Xfmm+w=Dl0|NsR16fxP^u%}i81&cyc-oN6VsOL9@XI38 zS3S+%k{hx2HDHEM8daU@=i!XcY;B);K4&;}Gw`Fv+nYW?zrH!nB{Lho0uinv-2{x~QeZ4BJuk1J(w zPz;K!$t!KwA4yl5Twg=iG2-gm%z)QGGGvhmn#3*XH;^^N>NaKmEo+Uwq0um+N|}b#^~FzVNb6x3_3NfcEOK6_C}gvOCKsGE4?H1 ziy!ml@pOJmO>*c%u4}{_Oh!8>(C`_2T8mpP~W|gJ8p_K!JJ^6otd6)F?X~%V^GQzX5xtJ|Lhlo@dnK9_RNsI?DF4bUwN}e*^2I zL4>!%TVtuW%-5Cxm4!{ksHU!`HDacltG6nQt&D)wz_81#$FMWr9%AIgZq|5-C9(Sb zI$uO53JeqJL>n*RJ-H8k&FEsm0&8O$O&F^&bM*nb8Pv-;4UR+{x<7iI9GfE=OWgUy51);3_Fbni2o?$Y-foJ$+ZNpmO@ z0Wg(j*&b8~C2cK^@ey>I(+q-4JkTfE3ua^&`6=a>7fD=je2zee)Vh1D3O)BIP2`Mp zWa8qSD)tN>Et67|G0}2HskBS_**-bBv{XVoalo(0TPD2SzeeCaH4ldGa|B%f=Ogeh z*0Dtg${T-p*^kYuQ~$DNL#DBrQ7ha;yYnufeT2b1C?j@c8&ONCi~VH@vceNzT@i*Bkgd}9Xc)Suj7e;5F-)t_Que@FvA?^ieAsQ&bV;hQz! zsQCni?i)5BSboEc@opTlTXyq;@t!|Gq~fUq9EAO-9x(jW+M&POhJ0uMf2clPW4uF! zd?*9`RG#uMDr6E$X;f-R>CTj(fm^7Vk#Pvj^s{tuP; zd-0SY#hv2hYyK3{_-p-CUgDocRzHcOkK{i;%-$U{J|vGECtevcKJT!}>L+U(xt8fkHl2#;igub;7JdFO}9zI;})T+a{5sj{c9C zbuRrM^HX;1ullJ+lM6VFuBG%0@g*URuBr44i6u=@La#}&n4-aMSfWIDluvRj7bcph zdh!5-egtqYm@DF^cv$`m#=sZ#wGl#9V_sRbSCtTh2jYHF@YyQvUCuxs@H}!)oe=J> zh&_WqFz`53c;sm0*T6jwTD|dFs`iXM%)m`(2P)6Vy;WNBH7|9k#&B4g)(E36*f)BG z8$t~CdIJpiMp4?Uj->ps{5WD6WU@6;KniTvx&_8Vy{vkBq<-Om*BT~9ZRrNbg-M_- zjIS6#EyQ;H@Dtqh)($ye!}#k<{2q0`qk4NT1Pq}j5YjyZmP;iKZygJ!w|GGQ;*PdE z?oBNu%leV4DX+Xf%?+hHZ_gnx4w+B(#wF0O0zl{1o8s<9CyR2Ac0s%*T_3e45oiem zSa@tYhrUt+x<3d6#-Vy=@1cPkl0ALx_kcE_dSdKHQfm*21wg%2!xEX)p}tCl@LEF= zS#+tdNw)Z0gu^~IG9mBTK!xK$os>g`qaf82Rox)NRopPk|7Mm&^$yv?1K(8xnog+! zQ7|c=K>E?ZcU6GOt?D78RxzLt>VelN-i9G@O?eeJ;3&EI(s@QmXx`CA@q6Zhvnbsn zH)u#=>u}&q--$;IZu|5vnEPD_+p{R31>|nv`;qu>P~5Aau8iZ5y*I#K*5jeBOriJz zf?Z)oKcEQB9#Qy&ZfKCalle~rM%Qh@cUPVyW?<%j~J#Dj}`WlGkBPXLy zQF5yvJlE!q6~4o(+i3pkZl$HIxfGnET6m+ z^U2MVj-PviyGS1~{27Dm7Xi(L0(9|?7!jN`#T67GGXVPF`lZ+y?m5KxC1_f`%3e6) zez1C=uv@>7%J#LZ zTliqt^ke1e(Rv68+IQ@|_7_pZht=!og(2<-j3w>|%}dmXpM zUSN^l!V{ir@DHWSI&i-t)3=;Gq6-H3%8{%D8^D)wp*eC4Uv>*LpYZNf z|4Rz)T2>}I78ebN$}tE^>dp7SZ<(%$Oe@7D7xwZx5_b#-bnMnVk^aqrBeg>mC78ao zl=^*XwhJNPwofMVHp4F|8&5o$OEW&1&6p($o#7JIWFk;8TC=l@#R%*sWYgX(jap|z zU@}<{fDGb%Y2A}Mm1O2qR)Z30O=Obr(X`fE^-T1_p5UiHndnC;@cy7o$~f)ktyc;e z(vT?{!@5`(G8qw_caLKGppezM!qRX1owZVRI0z3J$9ru{%x&U(5bzf4Q~GGpp=b?K zYebRasut{rhQf!nOD2$Iq#Wqyccw1k)Z=Q*A=}T-Cdz(LE2~4DUDM$1^rNwxfxLn5 zQlI~$qz#m2W|yW~bqg*h$fWlR6fYeqZM>*<6w`(+;YGW@Y_>VDiB>pGukoT@jvSpT zxGc&2;i}dR!i(GYm!gjxvPNtW#5n!kMywcEfqmIR8aHRW@a4O~W+(y!UBfSMyJ(8e zw|-CNCDUgwm5O#h4iOi24C%`eL^i6E`md>S^31vID|vco5vWlLG;<_`a^NqCCYddT zomzU!5&>B_?YKt{+6uCD*t3a;ZwWi~?Qv(Jse#e>i@Cs`QzDn^r#5Uqsdv_$lba6T z^z{ROil90;XoyZ0vrUOUdn%JURO|GzCPqW47UW{|@9fm{&piyY1G7U@f8pgAU1Q0$ z-X?~^Ky>>9+A=C~8ipQLjM%NDTR+-E7k#~xVyN3cB3|HT6r?b-^SD@gK){^(PLtq? zt+!IeE_?HfdZtrxahn>AU$v(R)Gl@Oo^;?0Y~%y1tK}J(q<9oEwDmj_X(p80_fCHC z!!_g2Qf^XeOK9bBpfnSX_Af<-dN0b_w;({+GbKca4veH(^@jeEFm+~A&HosI*_iia zpq&%=6Nxjap2X{_@5he2Ws}F@$Z{O0JN8Zf*S?SHSvr49o6(0;Y#+SN_OZg6Pj#t0 zAT?s9JtJE$!2K493WGQrD=8Jm>u`5eEqiJIAl>%0A4^`~d*gW)TT6lGR*UM{H@%Im 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ªs+Gu1Yb(tNgK?|mnxTCSR|k^ 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 diff --git a/app/libs/mta-android-stat-sdk-3.0.0_20170331-jdk1.6.jar b/app/libs/mta-android-stat-sdk-3.0.0_20170331-jdk1.6.jar new file mode 100644 index 0000000000000000000000000000000000000000..cace74d68020057bdb898267ff935c2ce6797012 GIT binary patch literal 158505 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

    17Rhj<4 za~b`;Z_6F)qc)#B(FqYDJr$do=`19uEvPD}7AFahGogMaoF3^FuQ_ozCYE#rKZBdi zWwR3*PJu_e-qZqljz{pbg|0VZARf06vldq+y;_DBXAdev#g_!)3teM!L`ISM zRlP30r z{lN>wD3ExOki^t?yExFkKbb&Vej;IjVE6x#zO_j_O6DGp=M@uU8TsO;H=LrnmpXUc8mu8w9S{Wgch zEOU>I@0oTRzydogg{rxHneARSJ={()pqVka?8;8YQ>#j-~uO@Rk< z$Z+TteA?Rp?OWX%??(-phQkZA z>RDs6qutBM<9r#7MshHXKT#S~TR&hG&EZ8-_+!xg$`I+!yS9#;MysHL%JpJ%yyGFK zXXEAi_T4t9d`%Nn7)Fchhhm5OgITcYYGV)ug*7?CWUfCcNT0{@UCK#J=wi^u9=*=< zv)-68h!FmQ-zy>~=r24nn%o$njz>N8@&E&g0M%3f0Q?1?S1b{vQNJ3t^30ALhPUfO}>D1qC#H^?nrK(UIE{&A#G+5n7*tm3Fy|Md7={|Nw ztjfbp%35`DR=@9b``LRwvO(oMlFU9}6;lXkGq;kY$bF&jHY0m+S3<;?*Hv{&mr}#- zIoC70wXv=Oej*n4Q|E?-%!fIGy5Bs<5}uCE@i{KTgf&!s^%D!DZ2kJC*p!Kbc`$89 zuweGxPTiov&u)B}#Gyeer}zATRV3s~r5+(uI)hi`|TqRf+R%Auh+61OVz1{!Z1ZTB-NBfQK$XdtF;!qu@0-zjBH(K%~ZU$o>LX zzth*IDJAg4%+vpjuYfC8g_8X)_`O1NQ;Y-d`QKZqL%jkX_Wc{w`Cn|Me=rrXNe*@k zD)`{brWPT^Da+i2r9X`)zkWR7V%)uJk9o|7S?J|A68y`pY%+4$=}%7jjSj4U5)$_? z&&022*WL_F!2$T8X8|l8F0bV0{Tx%Ls3UNR9= zo1|FVRj0Q44JvWTah{(koE%@hU;w!LV+-QC~k!BvN?edJWo@>yuws zjZ_eSgw1BAe-=eb{~AcEkomX12gjYAs(v9wq{N)ZE zGWUyd7AiP0s-n&es9fmco;qD7Ld#gmz2#Y}GQ!QIUYqbT#H87O!1zw z>B+OiC;%!z5P+%i>xv9aYIVn1YCnlT z_&jSVXg*i;Fx^rzeEo>~HVbEq9>ll4N%ns~IV(dw!~g4+*eF;>G5j7@{@>QU|NA%T zAE-jCroK9nB+hFV^(058b2wF@OAKbX;TR1&!KA4p#(t6{Mnd-T>gtxo*hUUYkeBQ; zs5hhWd!?Y6d6RXj-p}Frz8%&Eriq27g2pj54$a$K&a%D*f0j+5zPDS5@`vf&2`bzq z9i=@pBx)oJBt|R+q~1^wF*@?3dYawVPH6+RcV3~PYv zEIB|ygLCYq-=Fdo9oDZr|EnhseulcrQ1#ab9Ov%3_u;D>gW1ST3Md)c#wb$*sBkQ` zj8_TjS4dlGSM-)Rek}GzWOX~W^_#`H6^>kw~93n#fJ;371WY!Lzg z*)NYzCgpifSX@|vd?MN_>rO!Op5M6+vXwF?a|M3Van(!~Us&vC9)WyX48-F}nA58s z#s-RLsc2}o{pN8_YmMdus5Q@_;DYE8AAyPPG){ zy77dTHfCVoTGAWSY5ERb)xys;j)@h63?B#WnOorREx?KJ_wbWFG;`rSEw(znyD*q_ zlBJq4e_L0+_5~`Uen=pQWJ zUyn5@gh(yf^h~<$pGv0gKK5dA6r+()iE9^O-Tyf6t?I3F5?l?IwkFxfJ>TU^M1cJ1 z0M_y+8t(L-rfJ0QssACUAt?9T-08+ICug_!-)yGTH(aQRP`^?rqs+&PPN}}|-XISH z9&_VA5rUOEQYSe=)_B=3>N4SHR`Vne*Tm-x!O3rd!639~wbN4UjRQhA$JnulNMWlr zzxie+&U{4rBk_#~L(?WKN&TO@#l6Bce>*K)qRV-JS3U+%rq#1{^9st0IYlJHb}i?^ zV*ui}&6~xnveL{k7hCF2oikEf+>l>V7+S6~R%xVE9 z1rF%oR12iu!BYRr`gT!Oa1fjtqgRLc zUtC%l|C=TCYI>k`U;Ya@|F{F84Vb~FZ=ix9?hVo61XIa_n!zhEMpIB(4z7%WH!+}_ zo~CYZ1-e6Xt}k|g#xE?0zpZqo=39OAIj^vM9CtXw=Ss0nDTbi1yL|*1rBYJ#7lmYx zkJxt_?;<>?&RZ^{&fud^Aw$V+ninDcaxLKZrqDVwZ&GwK-2o3K(fz=DW)i#`;ecpr zh&0y^gcB!&1hQ`=nd!6lcv)pK%`pGLBMECNQ_{TGn{fV%GUoqaHZ%?2r5*SIXtI3c zjk5{R%&Dhp^r+-EYqkzyYYfJAY$9-SD8KDi?FZ+l96MK0hbuLmo?$-o?ZENXU-P&-SU^FJ43zalp7PqADU%=M8}mZz#_sQk|)f5n5%!Mlq3 zDi6(q;-%SdhsCRe!b?dWN)82qu9ZQgq!#^GD57rONeR_5NSUQ6=E=ckquC|<>?kTA zWw9Y9)z1yZ$-z}%>m}dc{MFOK+(jK6_h510EZ*NvI!+~QG_hW z^Qshpu+Jd}EsQflYN9pbUl0(C1p2neFCK5YTAS1)#F(w3&~?Dj%3YJ*9ZW*lK8X>5 z8pC-v3eS;cDAUnda*~$K&{3I9QE04R0ZQWZ5Uvw|0Eo@otJ9WJD)hVwz5p1N-Ts=b zxuSA%7vP4!q#og;4Uc@wNo?@{o2Mhy(irDpJ|2CDoL*GecZL=%`;icR*{2TGKtfP` zk(;uOzXs1?bg9XP(dw`K_WJTXw}Ouo%ir68pB3FREPVG-?=`{KoT}I(re6@>tX-Yz zAD>xK*pGZqTk=#ILsCI_!6PS5YNTHiC@7ajsjZFlfRPIc<6 z48N1`6&C!s@CFaI?&;Pa|JYFwi@>()>I}QRaK3Fx&$}6GnLvR zF>54$@u610LVRH%>|Os=KO({W!$KPr_x2_!66RE&IHuk8lMijY3Fjr$BugrCusA2{ zw?LjPGPN|)kwRTFS83;IwGfZk1{Qb78i)A$1?33FYF9;h)SK!;p2fKab7Na0Ae``5 z?&e4pwKl7Y(CIH~WcTIa5ey#sa=xWI38lEt^%GREL^Gy{9rtFV-AqiSbW1x?r#iff zb;>CC=CBl)E=Mqn3$d3EZrclXOA_a}rDLZKNjUQ%i=IOW9}%$#k7H;*&H}fG#@*lC z%^vYHiS0bXNNBH*UvS^xi8Tcw9GZ8N%Fhxq3P)`+JiF2|nL{Dmp)}a&NuL11Lr0oa z@Ql0#o@9FEg@F{Ja*xq<7)ha8!%fNK;Sn^$$iSgsqawaFu8y#)?yJ28F+>bEO&2Qi zC&fEdxM3OKsP%NZb;X`Fm&(Ac{?6^@fTEywP@~zbzZoj6wHJ!RZ8m-cJY&S=W0W*V z6b{Gm@`(UVl}B1um}LW1%f*Wr%E#DuPMZEkl^ zA4NRIh7>F2`thFi=7@LP73r~0=oTh{Fyb@nzpgrqG%Yh9-=mM`e-VBD2fm{ApC(Eh zGcjFsO*JW;1SV#izFX=tmJwnW4L41S_1?OhKuz@dWGAsoVB!o_VJ!OVhd`X&xU8!W zlAGq!J-$bIzLuWTGs%~qKG^Ri_Gk6`2e}7jiO{Kh6Ggj4d&WWpB4`sEcsdt_3f88o zh^#_5DoM27GwksJV)Tdlyh`0vQnP?3#+r&IIF12-TOpegS#M*7~XSczNxy{Lpr>JP;mq5gpBA%2ZP`?d+f$E+gsE{_6}2&OX>73u1GT9queF{p z!W15IaD%Ao&`b{ZKnwy3rb|SnFu{SflD)LmuP<9V1N6UF-U;`A8=LA(Iv4AxaF z1vXbjHE>m2JJM`X(6*8H`<4$h)!@y^#sYW#g}?$<|I?5A`a;1R8u{ zvv<*Z7Vn2_lbl^5h&LF829RUQ>##>Q%|@l@w#NiHqM;IIp9^DEblW$>4$r!x7mwOS zLD5xU_k*xm?V|N<4FJIa2oppToQ-?2hXrv*i5}C{8DvKBX43JBAjBovEeyM4Gu!nw zXuX1|)ur2GM5)Ta<#mWZ$}wgpw%MKwNckMEkwP<|w^NoLF#}hUgf{LR0U)hHO=V&1 zlc=1%m8ZI>AH75Ytlj#ybmSKZJasmoBv<%Yv|(O@g}$lx62j-ngI*#QW;kB>vK(t7 zqjf8-M;V0;7gNb%nzMgL54h#s8r7Ro#*W&;(mc4@RpjRr`bK#ch>;9cH97GdZ$6AA z&WuQJVS9OV0|L~-8XX@E;vdHQr0=Wy*}IlLJF)58n|HRx_xhLeIrS7$Sh;JZPQV=s zW=?;k;j_P7of6w^@W_f)T&*c{>Vvos#huF?QO`USPC$>?@7O}Iv$8eL(98DvR>Atn z913=nFihmc2Ortc%T+P}&%5r_@(&SXTF@&Ys55h`EpnN?mAKfz)>L5!T4t5|WT&_0 z3QhLpeX$PXEy+X=Ehg<{?IVriw2+RNue$SdRWyk~w6lMo{@}`V^T`GUy-7xEZadu{ zJ5S=)aaa4Frn&JktNJKXKs+y3;*(sQV-aoUnv~O*p%p2kFONGs zSmVS*+t8n&3DoOyUMcWGj-A{A7kjhc(WDS0P-&B9=F}lNsI+!CSA0Ha_@=rKmovs3 zO-PWO)i47ahVV=`jJqXvHoZ}HOHb!Jp1C2?mPzYb&<3E#Bb`(Y&e zFSIlN066{yjro_&z7(!B9nKadVz1=u-h6O0-BuJ?P1|X3Bv;bafd}Zjn1Fn%{#D%- zij3dBsJ%a%@L$4b>Y)g$ua!DjA2XYdZgTltdoyp(kB(SB(3pU)I6}3FJozqMHjcdd z*(a_u%;G2~5>bkX@hGh!U$N3t@ik0kBJD8Uc9O8PDR8QLhI0?MG!!BgfPe8WZ zN->1rb8XUJG7F5HnC&$=k!P#g($rpG`(DDhXEs}-EL?DG7t)tXi5KGBo)lRf0hiJ|oS5b#yx>w;T2-_^g7-!=La z^Oo-wGr)h*EdPgal&bX~p%)q~d{R)Th)tqaqAjWl;DGhno%_nOR-?tUpk#x;Oaz1lR>#%i@ao%4LZ9RCT1 zH^k}m%AMGeaTdtLAVV+1sH0{~r=#U89#lbA^p2;@3hoa62<+C3*8?mUp((>-_G2XD z1&0bv92j6A?+!JH`&wFn)UpMvzUzV~Pc0pdOiK$-$f5KIo8Ja=Y zG}O9G>A5+Wu{&DrQx0X%6Jzj7LT^qF3E7;?-|Xos-|oSh+cV}-1#Bplp+qqkw^!F# zyQnwKUo)ais6D`Y5M4qR_$KCY6?7TKyul#S-^EqlJOWW97%_yp9^$H>nN^~AF$nh) z)=hme?c%WeihW0-b`KGBuJ6bj=ZO$pbIe40JdF(7nB#91u6(Bm>0*UXI>4!=)<4mf zS+!YNNtc;VWHx0E%Sz0;@(hSt)I8Wz-bw6ApTLR;x*)*(}U`|1Kb) zoe*>GW}Ro$as-&TVwvSPVU=5Z>?@<06`^<;3H>=)Zv-WZ7AEDYRnfr3efU1V9R-?} z@nRg@It-y^{$XENE~%&pvI&a&?jr9wJbP$8!VZ_k=vF{+iZt|kB0`P)D}swSuIhGs zCa-^$gL*+mR;VtULwMI_m?9Q$Ak;DoMZ+M7M(C*1oZHO&;5|EmA7)a6-fg~%vP{+k zf8SObBU>#t%$}Y~;A#;hoO1+8i|EcbCUd=-JE*V%DoC&Do4 z>2pPL8+@14-6j15rG3=&j>%jlc+?so>Gnqo$jwLr}~bl5K6UTN0{blw)E zSL{ceg)V;7yZSh~C}BQ>JN6{%!c(<5XX0e^WhYt{yfgh_5)?5CxVc$82S z?j4Ktjfr!I?hv1YvtC8?jR_5*2@&s?o0sg#TU{>WQA1b4$ndgpawV592n;WwomBk% z5hd*iS))G9i79slj|t_7#0K-jEd{3`zaZv&KC;+e7FNoUccDKt=9C$c8)Qr9ra5%! z!h19dCg8AtDtIMu-z$zs@N0G~c!$lXh@e%#FU_r4>iIc)p>KVvMtJPl zwpqMS1o_`~rvCvs#U^db5sKoB^s&#yt}l&P?+0dUtvga!4C_m(h^kTqC#rQ5T8*-0 zJ`XLi6&ja&XkjR^S z(~ae{WiX)w_0Yg69}wWtPA$5*KM!rNRdj!B5V@U0`Ppka*CU9k7I%+BGoD?lo+(ut zUTBov7pmPQ=8V>MEXV%z4MZNS%4Ci|Hv9HBs9YEeTVn|`1O)8-n!YOz9ux}K|JNPs zj_U3z;XUaY_%8$p|DazSRQ3ObQg|(WM=2;S+u_yxqG^Rg=^^OB7bCkP!@1*$6R)Z1 z+N-_q3a&mbAf1hmn)Zp5K$!Nloc23gx4M~&P@ldrny`&1hj*d>P^_Yq6p8h@ zVDipgpU!7JvY!gVn18UzL7vJgG#h3c)P*Uw*=S}9ql#yGahR)|K5+o$I z?KL}x+bwua%)^S_cg7j@le|M+Gc5mvkEqx!xsZ2!f& z{Qrol|47qdf`TkM5D_UDydW4XXK+ptWbg^rh%y+%ZL*EvAdB?1T-d&WPdg}nOAN#1 znrSn_f4NhlgrMZ2VVTrdIlIbO7Zx@bwgdd1pm!M3crRQf_-J@(_)2+6oE2P$cz^OG z5up$%^Wxg6hTX#B4-z~9G{{WzvC;vd&RP&jn5AQm{yB$y_#-X@HkD`+82D-Ya_K-~ zg*#h(Hum5u0>|w3aD4(W_r@HXttrv6qTo<|q;$JIMI0fGC7U@#kR6RB_oR(i3?oh6 zpy@H-VI(a3S}3z&KCjANTUWKGSL5A+A=^oDGx#MmyTwwS(W5g(iNUB-w{ZRbBqu2j zsNTw&a+I9UvC*Y7bOfN>6@NI3E$iWqE^oGkp-xGyUjiT1O(SZXJDh)iV!gF!#OMFM zr`+yxQoELEgULke;6I`+oiS%Jf`*q~T58|wGgxvR^_zBD}K40h&7r_ zG_zRZyYZmXVPo=zBSp4FeR{)ncfvG_F6BclYRDhYB~TXHXNjAu@T{4RzmD>CWRkuz zMd}Fc!#fNwInj;;+CC~vbLs`O$f#Y&KBNPRgI#w^vfIFB9x34+^Uxk?@#6R$=DYY^ z(A0?Gur}9^N^4-Er!`$Z-&R}LbmnV3?{GcR%a^QOMq6w+qV*wXs2Vsf#{wJd5E!^- z`@*N+)1D3j^vw1OF|TTJfY&+Yu`(hVH&9%|C~wz9c3xQp+~H!jNp6*0NV{VxwV7{@^u=q7v>!!1u~{pA$i3^m zywwhb-N;M@k|v?th4+4RvfS$axV&Cg#v&Ym)-UzE9v$A}H5A?S*>5hI)%%(-NEyXX z%2>i!!&qU*CCDXc21$_IS!qWfdK>pKuHO@`m-fm(h!pWzWk(wN6Rwxkj&9I5#Al5i zE9g&nk750F{^diAARiDGhaYdhbIvX-TWUifrSCdmVUYH2dCVd2 zkh6poan&OEc>cJ~z=9^+7{>v=(vu6f0{nV>D(|Fo%&y0$U>SD&fbI`z!Q?rnUU-nd z_`>DJ_zxWKKUg6M_$20!<-s$10dVnq`^Y4aQJe$aOIbgifun19IHUe>96ykg<`uA8 zbpZB4)tSVT@sVMxc*o95W?cQp0( z)sx|oa;soRS@4BZJ<#N^Zx0GC5VDT*ocr*I0Qq$70e)b7#Dk~SSgecZZ#UVC}&xSI?Z;+-#pF(ITlj{X>1Xyhhh${eZaA3TbT*w71EY-d5t)26|U$+WBqN zQ2#U~_~t=>tx)yJk4paHJo4Nwa0@+3Dm^6pF?8;?MU0$tVt#bEkl=>FHo?cFvD(j%-@z6n^ipy+q=x{)p_Py{VeQ6#wOpthig3><)2sY z-zY`GYx}X5PNSaG{Lk@|{il_F|1N3aqg_~MViXqPtEMko8&1{w&T7@HfL>k2ifZ%+ z8re{+sedhRL0wk5uQVrMSx{h0uNE_V!dhyg*{{oz^kYqtLumnCXG80+!HysX<}~k~ zFOFfLjcG`lx8PRxJW>4VY1w6TMkX)6zZq|~oZ=lNN**&mu`}cE9W>4gS(T$2HYC(^ zBQq@AR0E-@x69%E=#v+zjcHxCUb!`Pmy|Tm#xgA2bVarNva%XiePt{8>L%JBbMuW& zW#JpK3;x{ko;VR+G({j;wX+fCie3cvl29`hk2`V-OkH7^)$yn# z40&9f*H6Y+t`1#c6*1<0pWE7V7F@q5R+^X1CzK4*{`Lf`W{|TsJLT+VG!Yq^*5JNC z<|Ow$rcrRpZl=VS+b-RvWdA-!Q`41|;l?ei<&zbDSX6bEe!PbJt$|EaDnesx8cUwH zhx9^I{>G@$pk~ub(^HO~^E8~w-Ns4(=JhWV+oD43rY*EZ%O<@Rukt-VcNALJw6tVh zWjW5LbBJ3ezLF_)2`PXdCf!wK20qq+0r-ovhD->XgHNrl{tJ$kkyeu@e~Y*$&0Ltz zLOE`-?&&)*d}^Fl6k#=Sht{?)jmLpm?x?yLr0vO~-#%@i`@%!8v8o_PYcb4IMoOR#S7%hd|%R9o|9M7P^uf)0{=OeZt4FlBaM^}G3tN;3~Waw|PcwlhAof!3+WH)(t z_D|9RU4d8@f@SU)WBHIf{8|&8sru4_#4_^2ESen$Yl>I43b{ud6Vzha>M;3ywSLBW zH4$c}pXGJmIa^IN3(5RW>xr&B_`{ zRJ+D`tC?dur5DsnQFcD01X(uR; zw$={gX?mSf#p8!pKj_ksmQxFM&iPqktS5uz3}uIWdsH72A^T*s&#KCp)RMv-H2j_F zuqLPBtzQT@-Zl#g2v-j!8c)6wnbldiqSN{o-WSy9L0lGHimfvQ!8gT%FG$FS(k5Xg zNYfi_h#Kr|t04=h2xXu3Y!TuD`(r8XJ5umdJwdPz`r`|dPu3#z-Ie?6I&-aA%v~jT z&=rNJ_}l80$o5o)jxecKdDG@`Kf(!m+wW7a->h6%Z*Q|XeDNW-FoPx3%O<$Zhqe}A zIMA(SP#L?j*1Rw>6oq^Ii~NTrEmKS~<_r!FvZtqsdr;(r&dxb#>NO>_~S zNzIB4pQ-gMb)4NqfMqn!=5ET-E4BnZ4jVYpqwu)1ubp>&at1en*G$$P zct@N|S(cSG#ibeKRWV~s$=;Ed<0_~n73^+lrzd1S1*!>Y7#6DD--d)VJj4Fje3_*{ zi?_OBK;wt1O7>f)SEzwrYEcj6mt{}Njrbv_F4r6Z`=RQQhQ2fp zi|_T{wZEbtWC9}ZEyE9(|NGqdAO4wx>blaqQAUW-xWop75*69G{Vq z1myXL!w?2J&YQ*4nZd?Z` z*V&Cx-3E>r4}n_(FL9K~hsoC8-p2>*QQniPoF8GJW>Mq0bogPpo30Ltx1JIPDusRv-dd*+>iiUAMO6X*YM9kq_Y2e!sYwF zPq<9~hZ>eJAO{h_0KeIoE{_bA{`gUu{y9_+9py8S6)1`!2;1${8eQs`Ja3O8oQ9w( z`1nCMrM>E&Y>J6ffO8ui=IvDs{rqVMtmKQQ^MSgbq)KAy>=~{U6`fr z>^oX6>X>1L#>4(JsP3oT8M4uRhhjK*0bfa}Eu|P`xW^S8r}<=A_%2E7oIap6logbi zsEg}E(!ffXy47c6{j-VUveG1-K?L97v#jw~M!-Ra8i>SApG;q=kaHr3VT_QC^dRQ` z3DTj}t9{gNQ-Rb-n>^BjS4?5Ip;6SyX%1x?yDQhk-eO~@A(3QUZyHz;nD^S{4OvRL zyyi*UsF`PLG27Tafu|!Bdb|b(UIp^yb-jZ~KandxuwE_PLb!zR9O)=DXHrx$8{nD@ zek#{6`qH#hX}|>P&VXDuyr}|A_W6z|;*es!c}>&|DoHzWO)$m@N3oCT)o=2PwHYGO zzjszg5mX{qRaKV|O_Xbr5(yTtc}ZPk%2NKyf3B%0`}ko^p5sSa@I`!n%7vz%>LcvG zNYcy8TSQC5(`1tN(+c3dbQ3X4K zg~4_V-!WBXAFv=mAn;gQH8Ptat}uEx4H*?rlSmw0ye^8t%{oIQWtUvs0K!$u)!h#R z#)sfTcp+5cY7oE$CxBCMKEV`*UT`j9pd1YMY9JyO5-W-tjXz%>>PwKuUN`_T44Rj* zQrOWb=5*ve$+0VQpK$j(dGtwn@C@h^L3d&H)TM14&gph~^hqK+k)6mh%1+74zO~^0 zIoUgx91k>5>fw)Kd7fYdwh%t=`$jBN|hgxNsiv_3JKgN=6va>5fW32pgTRZ zSsA2eT&vNQ-Ct18?b#E@(cW^$E*$K6YWa=$Y(JUQe;t8V3ha-CCO949 zpSBmvMv720)xQ4)ujnY!J=+s`1N!1>OMHZ4{SuWGU%rMVsH!INa@7CeDt7Y+CDP~V ziwEUNz8~y4t*ra{Q)_y%#hEqz&ZE}de@520Tj(s~zW1ul|M$IW(|?duu}S|%(t@|= zrluUKxNj*ZIOG?&bxwaAk6;AnqYR*2T8>uy_@U_re9{#qotOMKlhz!57kSEg>wRDi zpDX-NKfm4{7~bKAC>UTk12RJtL!3rRkxG35d8i`2EUF2<8WuqsMl#ki#z1Er(>(u| zm83>W3*}K^HU1l{gNB--P%hC*jb789+C$fPmzg%O@Ned9ZKT1HFUdQ_T=6I3++>mQ zhxbzErFaKictyCPLLa6sa%fS>@uusQ{XMjcYVFiLj2v3bW5+W0`Cj>g)XrM?L@Da2 zpb7@Y!me`rF}2V~9ssyZqD1NK}}|?Al;@_68&{io{13zf^eI8Lkt*&j{3+ z$rdVCBKG9k3G|D_H1p%dF{+8cCHq1Ee)gJEFfq|J4|UT1l~m{{X1X-_om1l$XcwOl zk{^7h9CPgtpMsQTwfI~jIcJk(Nu$I4Eng`=@uah`TjU!V|J1<0y}yXtL2tJ2(QxX2 z9}P|ZVF;J#Ao<}O0s~oB%`IsO$A)tgxJ3ZtVz8JAuriJ0?HMq#h-HK3Ry?4U+|3K6 z;D+?pwKYgyGmlP1Yg%(!E0(ctam#%|>wWLJ$t9$9?XTM6eb2k`jjaiaq3>5Y zi^zySmX^F%NhmiKOIp3wAU~2n7E7XYMd)v=&(ymdNa^xkEuoB5-BN?8ShY#cEuqVD z?NWpANNsW}jJrHYZSw8ngSp=QZ$F8xzlehbN3JBnPHcY3yZV4_%g0_q%RxiO3^-ED zM>+`YCL6-mCAh;mViyq-0zhZaG51!bzgdtbD;5s%xLvqqf zvqvJx5vX_as$DFg4{{|GX3(3wO9>bSsR7DB(` zINW}~qazekSUkJn;1vwIQb-x-^VN=9&i()eSS{yVl=V4ymmXa9&Ng{OfqcS$9ls)i zf`;K315g88K|k3we6ElmIU(DKZ0Y3NA(~hE;B8L9sVi3KA2p^&C>gCEUgf@W;{Wt@ zCSM@fO(!v!C~7%2%@|-?2szvN2$*4e&i>kQmeG|b&3wfO-e$*W3j+m^v~U!qF7X)0 zA*}CQl58N(_+0Vl1$;HZeqIY%hL9ri_Ik7~Ps8(PtdDmZ3f@i$b_SWCJdcKK3ZCxv zd$Mngb$)DEBjG72JQxt>!5GpdS!A0D;h$lK4ZO=Ap!mD1OadrEDfmvv)>EUpuvR!) z=wb&+aMXiho~zLpuEUKVadV&_Byy5y35MzXc{>u8vCM{@W~(GK*$sisCjaP7T9rQtkv^*W0QSql=T?B%f}>W1-daCgA1vICuF;o zX_Z>A!x0n9>3_9I|NZ-$7m39UYmqPPH$|clguPWe&rpHV1Jv+PA#Urh!~J($bc5}0 zq(Kfjx}H>fuXrqXMCfnijYzg88a7o{5u~OfhQ0(7LVFO`V3u)L#O6f2V$Smy9|iIa zon&_#qMwTu`Ur*BFT|Aey5id8n%vn9aHg$-Ktm>D7*XUO)QyYXP1N0 zv?Md+W%kD={jOr*W$>>i+Tf`(MB^QE!jsCRiARyUs_W*{)MR}DM5~Tb)N;rTe&-un z`~I=?xG)!A;>J!Zu5$WDa!{BdQ3&sWIgsuc15&yQ84oHSyZEf3T&W_rlJ#UJO6WGG zE^l}IpZUXlj24aM;_8HTn#Epo`D}oNQ%y)nv5_^E-tXRlSJcuTyB;YDe?qj3I6QN? zkVKjAS;1lg6aBgsnff{rszN*X4wPhp_{0^%m4jJi}$G`DXe9z3Zd3P@~d3Po6kBQWb;xn<- z47A7-^b4yAd(R(oyf4QcmG?N^ow&+_oogG(^?A~YE%fa#R9wqHazk6VE{rV=vC!DQ z<%v^$QFu<5Knv7dgLfql2ha!m6NF644K5goZhQ?}H#lA42@Xaqzo_;-iwF`nbHf^*f1V|KE$U8KT3yY)_iIeKQ% zf-g-D{KJ4ahB1VCVS_$`q)jry<%&&Fk@uH{9P(N;0Ya4PH-dI?2MQ1B>k>Kr9P`hK zp(_)}78_?THg!eLZ405&yFZW)IN6*KETk=J<(>a>*tzDO31>lBq4DRU)-;ZfATm`5 z!5rF`U*h~C3HyUhvs-FiVVvxojmR}=5v3!lgIdDcFNK6FtMb6aRGHD^Z1KvsV(=oE z(v=6}X|_5UHUBSRBg^*`u3y1|4I8gGfSeC+CeHB#QQ|6Yy@UGkB5>E!(x+H3RL5N+al@gTG!fo8oukySMRH=We3rjS;qP=%Jnpe8-@^V=kJy5zz z{JC>54G?Blf@KV&A1DO*;3v=^*dDUK@(=ZLgLBJvQSU%BTFxC=!58O+I5d_GBIYim zLx(^A(2(Z^Yqumvb}n3v5P9L?dOl7M2GGp*`jyzRHYh`KJL+SN#vfqn_3@pujW^7e zL7?u;hsKGm#kSOgNHP7i(B-s)=-n?YeH)XG8<+gw0}PG~4@iW*&0{&|hP2}Ccp%{} zkP4%O4P9H#M{_sFrJzj~OkNN}EjO_1xZ`RS7g^(xrzs;ggy#HEw1%m&?)5zQP+{nr zu~sN!I5FUBTw<8CZvS2GH*d4T_d_@K^t8whdn_O+eo#+xadhZiOA4$$Kb$^Vq`%8P zT{GV~%KC4Do{C1m>1db8Ou2PL^3do+Jz(SJcBg1lWGN8sSzgecuSAl=;{1njOD zey>~M{lDrgH1Ea9|ATg~?q=eqZt=y##>_(2!TBG2K#KvAm&OuM_+d+SYr_1iIhiry z1S}5397a1PLTnIAW-tj6UL%8wb-dr4W>NuB^{f{7z`#qLhBmTJnJ2w38wyYD`-qhyod?S{z|2IjJ(F zAW2jdVFq-`p@`ESLW<&5#caZHNurR$acQKmWZc7%oKzjEh~ibmbOo|2W0pkGsSo){ zGN}xSNiwNPbWq?jnnqGE;HXwaFi0|K4sl2_X%8VwYA_Z`VU{tPmQZNX?*Swi8BAL! ze$eeHNamD8Gyz@WDK0dJ{G-~9Fa>a~zfzEB42eg1>0k-~uOlc(G>6QhR!Sl^qmI=i z+9*i0hg_o`Wxtc}8zGMc?uBsa^j|23$hC&=;KBBhKVn0-VJeV~(b6e|So~57?n1nv zX%Ej2-#LQqqj{tp_zO#l*DAE8?uzF2>j=yCXu(;3GBNu495?|xY-!+BIc;X1$%pIt0 z5o6}oovLjcBvAX6`3spbXSlXuaP^lIW3|P4b$#5+7%~e(m07xeLEffm7(8_BrkwLP zAi*kHuocp0YOi%PM6TBcxZU zD=27XS~^M{-?*(bni4Q1B7rXNt#E;F?zhaIIp~QcV`2YaIEgKD)-5<>XMX@)2s_ zkA^Q)*8nnJ<9dxVW~!k=R8Oeou3BeT%1h=>K9I$XRe$%3aMBJ=uo~lY!c5a3kc(cw z{2DjUER6BwTJA@9zm@(jgHLzVIki`?G3h`uqJ}TG?*j7j6=jVxb4yoRJY|MO*x3rP zR(oPkkVw3Kg$HBTB=X0(O=he|uHd2t6MD~L$nOm~HhSWKAs@`gNw@Z(m%JTp*Z`aX zK(H>)E5WDi{J8u~GMV~FV@^?o0Y2CxOaldHq=6FHbW8(9XUc&o*mcAJh5FnbkM~X5 ziR6RmgCqv4j3uae6%+dw^|mw;IQ3?}-?!_u`bhX}Nce^jxIiOSlz`|CTLUW^e2c_F z)1J2@6`YO8k90xRo}Hh);}TqkNY(QRtJ@0O>=A}1aoDLT5@|znR-!)I_~U>p4}0b^ zR*s~Kw2E?lV!!gNlrz-8Fl;*Z`@caKB^}6y9h)CmUXx&%n<&9Nyul6jMS4QqqIhgl zR49N_I^>3}vNvU(4tGv0CNQ$aj_r=xu@5F2Knwnev_&BTtvFPk`Aw-l#Q4*I08c|6 z$?`%`_}dgsw?x0RXU%g!_R1Ix&o1qsV82Yo=IcYAhDaU9pCsAGJ7@NLg0?p>7cG&u ze}FtLP~5!~*b?@-n^hNGwHb6DJqpu-aGB_NFL-gEY0pqg9BtKZUc~ z!5`O#T857K8M^X14VBeiB1T+b#{WOg-Z4nhpzGS5p0;hHC_OoqHGw%1!?f(+&-V;ZK88)?!z6=t&cyyH8TBOHrp-p{JqqN zKmad@m(AX>ccjcmfSw65z0!WFNQq2W|M%ZNZnbxhY`0Q905V>knkCo+|;AwP5E z>$}{ah>CW_h6AyryZPO%|?Zm zKK^?m?$>i4>hY*r3cL5s<9Friy4O~eqFj%{R0z(Xk(G#XR>d>taBpSF%nFsSndi-_ z2~~@Sx06mwc74MOlUPOqku%iq$}briB-f0q_T5&Am8<)AY^e0rTD41|BeQy41ykoP zOCC*aPfI`j=LX7F5ADelN-8*OuT<(fo|3{Y9Kz#dTECO6&p^!U4pMp7$B{%snx+E&FTcz1M9qFSOm@*NTu zr3$^cHm|d&aG3>15YLrpbx+}TA*vdfj?;PImCTjCm`GclUbg~O#__!e3%bX$g9oHb z;^bjO=sfK(x*7R7B6|rH?dsLNU753oPRB+TSJhR~hGH-EthIRx#Uut=Fqh4$G^`!{ z0$ckzD`#@x31y5R^Am;i^1$K?a;si?7uJ@S;hyDbA9Ug({7j>d1mz=qRms}5Rcbwb zi@Xyn%tCmV1m|#2PrGk#<-VV38L2^Vbe*Se8O%gA!GRfC%?>q=|Zk64qGHMdDHAtK{noO$b=cd{uPI9DGd=z zIegG!>pL{DCEOO91bXE=bx0q`J#APoDJa1rNW8&y$c>^@**A?hWJ0JUWZ=S|XBtB` zb~pV#Sh89U-|>7`!eLwfbXwL@`fxSa72hdj z%=dNIz%FSLlO|V_7v^;Q^q}uRdT=x*fm|Sz9CTFbC#t^HSwG(cHoOT$=Djg(fLPJs zH(zLRch7`m-S|0QdRvdeaw=&#d+H!diQL#i^~5E$?oNrleoO8o&Z>E_#F{17O$7fi z6YttMlT{m&04Gw8i6Wn{>hwuXJaZEWxYhn7b|HvZ+A_^@?0_^H_M~JC8#Oy5De!~o zJQEWlsE{Q`ZFRlEJS~pl{Y`lqv%|Z8q+);peAa;dtEJQ4VR#Jo41y=4lY5 z+k7C(_bwqT&#N4pk>wurQABofmmAZ*7F$uxz&OP{asrOI-J)lVgjHe_2ctg*G7SDP ziDX2~sFZs1aMu}wOdanG32nay{`zTBxt#2%R`!RnZ?o@gk7kWD=vAM#-7LDBwX|R= zgLte*Jaa+bRMF zU;c_g1)Y{b{|+aXm-TME+)4pePi+BO1m~A7&G>les`a+|u!r-T*Fq^DI*su^ly@EW1XzJh1v1Q$XQvPtCK+P{hpPpcBFq?Njpw|! zwcH$`0%z9yAyY#$JReB~x{^MytKGwCvW7u871(T5i=ij>Ubv2eto*q5XuB})feN4= z3%FN*2R4pwQG$}?|5Yv7*|!C@kLJVdb9M90W09a9%%9j&SJIi{d2FEceWmp>YTGs>;!MRd{t)EhwiqyRI0xM{Zl^Mg>rVr$*r8c86rSiW zH{Fd`x2iTt^l}1inD_MDvpMq2pW+;4iP)&FL^QPLb2!f6-A!1{{*nMIe%UMPcO2^5 zU)ZxjBl?oV*01!XN%+K8RHaknF5Z}dYpNBF=){I7Ah_yB0Pll0MV3#-Cx7Aze9i8_ z#UbW#&g89|s`V*cTUuGdNnYDMc<}VNqD;*lu|_o4%^8V1$fx=et#0CnlZg^!WE4sG zSu4sPG#{$4V&GP6$zV{ff1I2V%P+sdmQ`S#MG(?Ux`L6iQs|RlunfQOwFhx?tp1tj3l2t){spl4VFuYH@*Ev#7audgl43N1npfu zJH?2=2t)v^&iQ>vx|9gZVkM1w_x?L(zw{d4@fjd9TK9X(`y9xWT(~j`bR8ir(7b0M zOEt7bVgj1l(C>Pp84zjYd*NjvR4b&a-clEne$P!S;;-&+BQl2_IKp`-1dT^!ef6=? zz5gl>e5AL52JxZ2Zz5||^IWQP!4NU&X(eQg<`gQ5kL%mZM=S%}2orAgjvY!!TYJDT z_7x0j0bKzu^RRSnekcU>$Y5#E}joQ!eSUI$JW4MPJ z1ke4ZB_wh@)j79)(M>_f4}o4N$XCS9TC^lOEU~b2UK%my)pXguF703@8k{SsVAak~ zl*kxOje&HrEjdB-ZB> zW4dVWsp|DHX%qqTZ0=yQjJzhWJoTrsc52~I5wsc7E=GME#(>ZGOS6?jI6ajPW2>ja zT)c-rDd6aq`y5Y3&W^z)YK^hcJwP*bp4D0104X}y1)|bV7W~uYP{+& z=4>?iUQIcbzPkT_jqfzZ#t!97i+$6ZKnv!jjS!Fts~K7tG`=3tlYxdKj|;4o{e_#I zOecqZL|ByrP;XCE-+2NLV5xPaX>;hGlIaF-l})1@GAT)JbEDiq&`83N#yhBFOOt{n zRAMVcw)&R_p5aF=cIA#CjrqaN4O0SpdG2Nk9NW-(m!b+E*p+YVhY=NHb>^6!vi$SO zOkqn)u`DT$E-98NDV{1Rwq2NiEGfp8mf|fbrY$Kx;<93;-7?oaW2c2pOKC|@aZO8J zwlGaWdlsQ(J`Y>JP8r`2$tX>ZVj}GRs%8u_EG1{YY+oNJZ@%q^Pt3ilme>>Z|pe`AlHt0KJCy)WT!%F>-j@pueYRf|X zkckR52^DA>Y-1XnISI8f1;w6;>Y9d{69_Hy;8-PReo&w1hsY1=HrzyDIF6=XKv=)& zN!-aY-AQ4^(17t7Ojt9CjNGEp!(+!KLk#LI)~F408VBSA+rE_>No}B}zvUOy?WPwpr?U7i_yKlx=CWjZ1(MSUdJA{Q;+fj*S-N8_BJ@@q$wxQTnFtWc4O&QfOXfl=Wi3<5ZFi{msj|LK$LoPRk#s zbn26e+vGVyVlMx_DgHo(Far+?3FA0X(&}o(?({bw*2|N1O^Y;fZTfRLl?Fp-qHsyL zlxMr)ahBN1K#HBD)~2)OaM8g&Dl1q);u|27m4`y&ro0y;Xc#5slMy572+^FGwq^#_-0#(U#o%J?B zp;yXvB*bhMhsu6NtgZ2h*@t@Z8IYo3hIZYvcwJ~DGTjZpOCo35V?ID+ErWXlM+pH5&_?%kq z_h*GHTWis|DPhfsLnTAUpNi85hPY`f8d6JUav9O2w9u|8YgD+ht(ZY^DvP8RWcHwr zZJU!Zstx!PEi}*`e7vcnrQ}ujQyG@m#8=Tw_%Sr|q{Town5A=Ww<4{P(>R=KzMtmu z>TmqS^wxo+m-7#J!ykxqTk=koGS7B#xbck5SIA#;fM*Qtvmg7I|Elwz(PX%u_KfvO z7;VaWXQLynpiV2A)vr48D0@dlmL?f)a-5Qx*+T)9E}B;y9-3YXJ^xWfvBfm@TR_5H zI6lx>S$p!8Nwa>4$y*n7(;sY+2xWXxAbd$Kwxeoo<<>c}YrS}U*ZNsZ+J@pt7%Hqw#eFzi z2S)RuHQ4b&^E(w|YR!#0Gpd597^v+NvLS|jeGcY!^S37a`wcjOaPLJ=a;&kwJ3^#>(z(nkyLK5j>Zs$bB4p^~gj7uaAfdcryqN=_ESZ*=1{-O5DP#VP-z3n;NRAeK?E6^`M>eGbBwEo57CNS2@6CchGj$YWJCQvj&H7$B=2 z22{GVqPy9<-;oE|SEdbt-z$*wrpcl^sPLb{8t;NSbWRSn=;=&QxsmL;c`t>zzw zBW~O$+JYVX;bUBv<|%rXb8)VS*h@Ej%C^ojjrJtQE%K_rqk41 zcNvGL2A9r5y=-x0pq|CD>0fjcG&(m2#G;p~S8SH#nArST*d+w*Fg7(}==2KUXTuJrXHQTxg zgQzd;*mby=19fZf$cLtU6!5a~rPrDVrmsFjR|JY@y31Sqk#s9O@H9MY+Qu_@mL|82>dR0?{@j+uWZJLl%}K-_B+RNG$I13{*>ef zA|SqFk4+CG-aFNSI+NY6GW?2fV)Rpe>5OBkf1H zy1wtxVY{>>$9L-F8kcop{Pf_e?&XY zuy>O1w_v^GoqFK_=RP~NA{I|UJ9;OOCdLu>6;MJ|dB`Q`Av?A6jl`l3zcmF3U$rec z(r`OF;aMDyvhdjQ|AjLVl2X$i63{5-q3WDk)k!LFyC|&DZ2e7#rM1ReSCS=<5(VF? z4&KS0X!*iW982f~+N$KXsYJm<@3Xa@i%up#k!y0yl*)8Mfnp| z)vaGVJ1;=V1!Cx80CN@7B)=sv&d4C$BORRKS6>Qn+z^gxq>D3HjSTx;Wi({2jr2RU)q)PG32S)o~bv3Q?UYGF@og-CVI*M)42e3Y_^lQN>01KIc-b<)@B?Z$t;uet8#@ALu~UxBd|n*O}B)E@B)A=zBg` zqBhR6UUO9@A&tPiCvNK)tIGj%rh2wtK?vRvbHz~QdH>L2{k1v`Mr<+T(Dx~7Pt}6n zXeW!4MFlMQ5Bb9mEGQLMDx4e%J(o%i{Kf9?qtRGJZ5gR0RhnwB$1_C7$7SQ!vB;ZM z)VMjhiy5Hr1BfSCL=)o!nXDs=YB3eH(>JgFSrm;#)~#hLC8I@Sqrl@E&CSu zC_`*(24rw{hGtu|Bcm}$s^<7N$YS`j%L!==!D%+tm!YIWX(+D)&lr{SD%O@lnlD@O zK{NV;N@X$G?J$5J4G?8X|4o+1PG7W^hZDr}jQwq*ahN3R4O@{TT{QP^gwc@E!f5RNi+Bn*TDy%)y|>TeU;a65!N^ zu$X9MruHZRycI=XZ){}yP>h_KIK*o$!+sIVbhI{~_WWG;=n6GJ=#FmZ(zy+!%FAp` z=^k?x@9ui`wPhZ*gaK7E43zUDyQ`+Sx3Ev_+JOk{{`R0cQBU@+?#bq9_jp zMKeMU%0{XF$Leb(uA=s>ye!&`C@0sb$fMBQNkQW;;Bxc>K?-uC5C27`?R!Beh_72V zD_$XOT&JHPaiF_n313Pzc8!1=GJ9rJC1UKd!9gn(TVrjZFCm|}NKCiqFBEn{f*YSu!HtnicDcTV2? z7%u4@C)-tpY29ys<-y=vpEgCm1 zcd@D%;Qa&$vrbcYrBCSYjiHOYw&STp&~q4wBCcGB%kZeR?%~(!?R0@Js1YSZ(fz-P zgG>QVs+Us%90JyhUo)au(~N8ZLI942N>_OKRT&tw>4W07TTC^m9d|MO-nHWcX4WU z1g<1liH~Oiqmra0{3@eq&hAO0ZB7}TT*o01sp^pytXYO#w@nyE*&Is{Jy)PP z3A%NdDy$Lpgkkak@*?H!R57w#yR6NxYn0A=#?iQMW#Xn5QQna+VnKx=d_p)AlblDS zJ7wgJrRO*fSo6q@Jeq1x|A_B-4+MSy!s9mtHi0lqG9S$S4x@olhh^}N$9Fh2~ItEEibCMjWCyTTJ!? zeP@1;?kvV|l`I}O-)GBj|DvbE%ez-LN_7r0?&?TU&dKJgPcCqd3PGDNGpB~gIug-*gTTJg@RFPf{TREX5wny#W9JvDh! z-xUogke)XaQmJmb|KvbYzZ3-#FAhws?Jr$S3~f2(v)tM9OwraBBj0fLo3vv~c$5jD zRn1&0Ac?-6E-||uo{fAsZIAiM_E8t&>1>hj_(%&1DZ~3q3AL$j{MedDvmJ&tE)R=h zaZfaY?q-MIHhDrcruM_MnkzoTiQD7s;x*huJKY>f=XQ%RSh6;l261i%<<=J_5lV(u zfs+nA1xBN4sFl<%JE5JCdu?L=QC%}H?V8G9f_X*=wyW9%W z31c;L_>6^%GaSGz+7Ncra*x2xc!3=qzkC=H7tAQAxtz^J_z|%m*eSn`fRl87+w%bl zmR@&w6L?1wPpKGogDH~YfRQXJR&23#W6ytVpQv33neio*;<763=T+7_0m1$(T;iTfsnn~~EG9X*(Ba40kQ?DV57jSLd3M1Lkug&!5JCxZHa>esy{DnD(+!eE# zujl77Sg-BL)7RA7hC-V=ogWQ7(Xun2T-#6R;89QcTKsa$w7GkCUE66r{%!8#)&Ft7 z{wqCO^fPCWTuae$VLSc}&sWs@`hB45`408AdFDxK86m&gZbXqhd(Eaxe)x^Ahpgw> z=d*hNyKXL|nreE~p>lhNkak~N!Q46ZxqMazM}PC@Hc(x;WT}A z9;|k+s4J$b?y72R*SR?+-;SFF8?hB%9Dc8plF&T%dCEobmA&j%Y`mzXOW69K2@NX7 ze(M+TcNyU8x*D8GeDQ#qc-}v@u)c>`=G_2iH~1&BWslFdRh!GWzXj~+{P+I^FpJsg zZF~^_`Xz1h|EDLS`~TDv*_#+yn0hFh*xNZen;1*jn*KKe-bc~O4oLxl7afXb0&QYl zvl)Jc-MV~LGuMaWlH3p(Spuv2b^y)R0b3oy%Vz%j09=MfhUGt05@wnW#kG#HoS#ac zp3KU8{X8C_|246?XfHOP1N+Rfxl)&Bz!-dpqFYp#Aqu4gqlQ_-sBM-umv5jb#`TvP zW&x%V>@JP{=2we95>1E}7~Y*j_%31um@3A28gkksdJBA(Q0by`muPuKN6m^lYS=L} zx6dZ3`edwWR011+=Tyf9k{cCOZpGA*+qW2Yq1E^}D(%XB@`AOkk0Xy9+X`p{$~|?p zY-c5ooWf6BUeCi>vZ~awj@Z}{BIsj*3q@zo#?wihwiB}*s}2&eWU-1$OoglQ z)E2)db$eHpTGwaGBjD6oSBj461ZYs~4Yxu<;Y>1=_s#0}t7fN);(VoqT(Y^TN=F_+ zF>~~hIC~M*b7Z3O9rbZj0z||m2o(sEPzB}IW96|3v~*UvXQLZ|RT7&I09ncIyQ)>- z%ihM%870w>7}mwloKL1X5UovuyL^s~9ASTnn0}ahrBw=8Ds!ck+Q;h8O$id(iLsJ) zTz0FR{TSNFEG8372rmCHhtL!D3$l9*Hn46C%{|hSTa+KBcJJUNpjpDi$T;zbhzfBk z$A~V#-UC;o7oXvG3e6%W?uR3>BJ`%oq62>_M|7GV*MlfC6ZBvfzuuVt^k{xrDyPPG z`DJ@^u)!bi>lXmYJSP+r9LFfKW44M9?H%~(z7zYbpHbg8(~wKj8#>_+@d5fjnm5{! zv=8wg-^RxOeb%1gf1#?;3KKtmTNGa4q&o^t0eNK&+j~;pxcn2KQef7Uv|Fi}SLxveO-hAbl!z zg*er^3WCgE1CGB9Xh`!3jR<11{E3!PP+%?$7y9sAVUiXFL@wd#h7f9&YcSoLFJZ1} zPd#JKC9G(Io2*;ct|G+@WQ^_fo4t(ItX-5HK6{4*Tprqv9}ggf4xCqAFx4XoJL`Y~ zUt7V2&J>}JucUdjA-(braG?YYlsI5AnC*wc2pjYE`!8TmJ5Zc0!4|;!JDaC3d(Oo} z9^}pp_dNbFr~3Yjkj9qbxnmXfUFgh9FLA^qAS(nWs|Bu^OrI>_$0`^#%2vj1vYK^E zY8yT0L+aWk9*5?0&WU~ryRAARp3XIp&PT(H-PHCFR>E{hpAqLE-ik729@LE^iQosw zuc;Mbl=!=5#@TB9?)i^O(aNGX-0H_|qw|07wlVxKo$~)(v4Kh+C}q3?iU9hcxuWoJ z>L~113}jZiRT(Lvh-M6o4|M*(py82z_?yBgH>&WtI{O4KS+C=)?dkN`nO3)7Bjy(W z0~#}s8|Vo!g+e?)#eh;pL0QlrEk+b!3*>;}qM|r0%dg6-FoMqHI)lQpG(taznNxjF z$=^C#FZ5F4>bZQG&k`q;nK*S0-BU!I2vAY1ol{EO-XB!) z#UL1p{Y~Od`*(Pv{+Gm8)Fg~0BTin^O;%9jU$ERn6WJKfCiJ541i4w2V^ppIng<(% zgdR9=p#OQ9i%)V%Y$=XJq2Gxr-|b^yih@n#qn$^|&rO(} zz+f639Wz`*Pgom^wrA_s_Q1neE2NzwOfT@_l5vR@ z*UajfqugesADj)vykJ4TEa+D2nt#oEFWvc%M+|>r!G7^)r{nyYp8s19^MCn}(F$9# z{R|kqpu@jPW%VOoLL(5VO~YF;>~7`uxDK|3+ zxQZjK;!=r6P7~l68O4L!9{`VZ(4Huz?>HhZzeAtq5rPLJqg*mg22=4DD|QSck)BLT zx&$LwEvX0hs-`CnA(e{qF2aZ^7QeU#wdji%^m3+(qo6?Qr+8jwxZ z%{EjJ^eb}4q!2F9>^EIOsi9!_9ieb`sx}7T=k47|H@d9X7jG}{Y0f*$w~Ke2mnhA} zRaz|!0uUg)>NvW~IKJ$LM?tU)$nBR0*|ezI#zUb!$IQcJQn~3ilBv?~p|z&LOmru1 zw^YGTOOIUW0m)W|GEIW8Imuw(;7Uc>pfZLTG7SuFDcgCXnXK9OL|e7x4Cj2?YX=j~ zxq}?ATBXPWCYqDQt~VvtYC2q>=m*yinF^#_8}s2r*l72OY3M^lIE(K9Vo(t?jM`+a z1^1!v{Qom;OpjM-H$PPz_`j&)|1t$_;{W{*<#D)o>_67jg)dD_jSf)gEwn8Ze*$Mh z=iMz1xaQ{S-IyM=JW`#9U%blBqDrH#JKkm-$L!3ZuRT5dd_Y+M)_S|WzQO$Pgz$Y7 zn4;z?ON~Z`(5RHEU=Y;uTHfS`SI@?Yb|!xV|A z#x4Pd(C35J3pIaIu##3b6M@h+7l0CMeSaG}o1>H}3Bk8S#%I>h!-QMN&uP^(5{&seP z{AXHbVrFXOHv0{>S{VKyg0wXW60H+zIa{BHJe*Q)?#@LM;prYNgf>x0>!wlpR5&M_ z4xNrRbo;GV2TwKDW2zlPT^o9;Q7nqj)jmQmD5e*v1zMFB6J?yV%Szc?EmT@79wZmM zvv=fR7B(ujY>lMv{`uXRurd%%l!QWZYyU_vI40-~jkQhvRqHC^S9|lH_D~wa7xv|+;6wix1^-_TUbY&f8ukk67Z@!w zj1l+*Kpp6!zES;e-A~?|R@g$rS_-l7?|wL0B`)zmo)#8jDPrsOCW|drorNXYg(02O zgcgT$2o!dSts$FxV8=J;H|+Jq#91#hk{xy6Vz7tq=c~@^p7$QF>xKPjH(d|dK45pD zeho-YNWFM_k$!m65Apt3(huSO8Iljh{#ud`k$yeW51IadBHlWK?84qkgRR2eT7z!F zT?BibL_Oqt??k=?1w@7tgAHL7VQRwK=(nM!O-4}$1(==j`e{jX5k@c_QMep{o1&=f zG}AOA2II}}eHcnin_1(Fe#-PJp7EPDY1KWZ{xn05u^WRBW~QrtWF{_qO;PmgxnPHo z5sU_=r#*FOL2*X!xE}{BJY$hoo?!^#LV%Ar(IL==$`@J-AVopl z7U2QfDW*@P(mmX^szcfAGeiA=%vHKEL&2b54D z_KNITZ>(NIl}9|EJv%8q$HY|MWU}62F%r_=tq%{;7Hhho$|t(VGLvLIMb_-S&196g zD5t(wrAsozEpZ#gRy*XFkscjAlQXyA8t6Vxhh>^F*m<_sU~^#Tpha)lGGyus-HCO~B= z%G9b+QzABb`VdAdR)#Mp&$NiF+pJBSMq`LrGb2m`!ye~6+S;LhU*%s)^OljD7#1;a zCjO0aE$uvpb;~X#|B%H2AS-pZhnBJizSd2g=kQ>(DRh(Dy~IawBKa{v3?lcTPA1&5 zZ=$8tjo#hd6Qf(EnAT%14coS#v$$TC-=)Jmd&ShrRu&YWO?tpLD8g}d{Ny(X)#MG? zir6UiF!$yIHvP#FBd^+Qq%*Wl;RK0~t2A|yJ3Uj?9BrNn)9((p=$OAxu&#RSP7{cf zxUH%fzlk!bYjFL`=Ac-JLW4Dc{GF%w9&uq&hf>KrILwSeFRZKBx0EuTlQMokeP4H` z+m1#jm7Lt65-f)y%ZsDCOf9Qq8s%X*{d6o9z5t3fQr62CoO*Pq4lKD6(byQ-vRIkH z5is(SB{8wmr2}_K8Cg;!g=SM(nP|TFh>F+Az+%T9wzOKG^Fd88$7o-}q@!I|%f6iOYpU&;aYli1I%E$V)0lk#rUY$lm0Z1PngMw1)dqa1w zawwiXsZUA(OolT?*GyNvF*T>8524kkYbgA3r;Pu4vqGeRtF8>qs%+FLoQ*QHnI z?j5E#x}jhMo7hmQvkTY>I4~R(NF96(O3kGGx_jlp#*zK%b|-Lv*YZ5K3ogyE#PCRIlp_ufF+3XY6HL}Ru#}g-b}FAItS`L-c(-3 zKAGqYV;6LZR_Nyi+Pa1LbTvtjAqL&-Q^VrIR3j#}Fy7$Tk%^v)P8tQxY#j<(5?OY> z;&9Xn8+#s^vt(Twn9N;A-_R468gi<-g_nuPxRi(|QIvM;1`jxB7Lrnz)jXFok)Kj9~_{Wr*;y?n?8bZS!))wcbN zwr9t@|4{mc9oP!s$h|abj`EF2*p$1Ra~Z17t|({>@Rvt+=_uPz8ujA(RI6K%xzE}D zpDYId={{6zE$o_PI^4_IC)IGO-F?_0NtdUD^BuqcoG*X!$j8KfQc;fJ|L+e`|3!(~ z#0p6L1ZxHVBgrhPt}L-AtVVq>?H~ZEjX;;93;+jsC4?jtV9yTyE7nKgc>(@V*fU1u zIqCPpAK1Wj$IrF9{v}(7uaBf(3oqE)C}4)2JqCpHKq6=@F^C~?p-)pEDQ*}M#vpr? zdj7#EXXn%{Sv%!ZtyT)cp8gMkY;4ai%|z!Qcd3Kz7{pJ;_MixBU2N zXl(u$4UGw%k+p%7(~$R%t@E(```zbwGK<-aY=ZwW`;rR6FfdtE*9goc=v? zA5TiBNx*!6`{bN2eDqv?KDm8P&mQyfe3AUpCh|~u!cP8FHR)AayH??R!Tk%m!^_@QcU32GG_5qxnt3+B!MOjf)q3BPAT9KfX9HCM!oUC1; zTp>xUGFB~Fs9Y|cJg!nMm@HbEAeKB_G0&lbRV#_CY*9cZqxv!h^{?b6mfE|spFjUb z3&ppx-%jb}66(9CpTF?tTk&NJ>f0{ZPjxp}>E#&p3pChIVfUHhLpRt@V)vQy!#DU^ z`Gqd{TJ;4O>bs%;XG9?QTIHn{<;yC#x8{Z&E#;r3q1H+Vb@RbB^UJz zJ@{K?*H7u?J;isQANu6mfth)Ja*~BjVP8Wa>BoXaQQR>VP98 z@7NuUfMXW*v7Ryk=J$B8N{vD=EA@b#M37vvw#*-En!%5c(pUV32rvOsYf+a%OX4mX zh;5#Py^0r*YuPq&2x1V>4FZpNLF}HkqYyw05{uj=e1i0#YYX0i3-~5@p#cB|j6iroyg|fR&Gy$U5lmvS ztoGH+PtPY|fXp7Ya>>vizTDU{svz+Klv4l0yBWz0DkOpjl zz$1Al??}KJULb?GAzcu>&<6y9)FOA~3y^P!)+O#tfanpv@B!cK!s$uWd>2-BqP zF$HJ=s37-{%Sctk<}Nq1-T{IC#-<7FMdc;zn**=){Yc$of03^POnyWAOERSBJ;^%Z@3*^lM&<NW6X46%rvpmBAxaon^bGo(0N|I};F5M2IXjPd%mU;T&m}URNv<7l z$lI0xxyE)}FO=(Ntz|DZaByEJhdHL##P*?qexaWOfLw!Xju#78Fn@H87q>MnxG&xU zuaq}Fu^XQNd;}i3cOU=HEr6f+5Pp3lMAs<5PnuV^C?qxPfK+oN6kbWUU z?+6>`1C?(H;3o^)OYlPaUK-ddN>Y1^jr$>U_D-g=ua)E#8H)2^W9btrdx`Iib*vEFVrwcVMJ>Oy~zMLN!z@xjNgPa$~dWLl+%uvCYJ&VR+`qZD>AiLqNP=Gpb>di}`4lcB? zt1iPLnr(R`TM)P5Z8Z?s5Lom-Tv*s>N6 zB}X!spBov%tn{r%)jKVgj^Jsub9Aa@r`cH^=ArYfc5AyR=tMzh;`eYOL9K|e584N1 zL}KN`dMU#%5g+@*$o3kZ94!gqNj}|a4uvU&oFp{&L|)f{&?jAnh$Fgj>7&I@@5y-m#NmBry;#e>yUO`0;#yHE5N zZ94=JP-RvJI2*$$CMjAv9@`?J^IFES<$En3*iP1*YQr;o> z4DY0&8|>AK@Exd%aDWG}%;Of;vkRTz=D)=XcGt3K78q)&a}Z*V*uQ4f+#Jqv)7!TX zZEjahb+B$b$dz@=fSkq)s3WCUR*E^#M1%+`4br%xxKfQ>bhFD#=oXjNbk+HpL!V-F zIk}&gKL#$VuiHFd4oXC@@wzRvLM3QN5672CX!)c=@JEx8ALSjSEzK8~tDwF=+(~`m zWp^Nl22MKM3wEb+)LEkDs`Wt1&jssi%pFy^&NGiBh6+W*7f_*sks;-z+IX{IjQ&_X zmlADhz_9p<*-!8=f_U;OoA<|Kb#kSI>_Z#fTBHdZ(iYg<5OjpCXD}eaw4R^U+xW)!A-0QzhaW$O{)C!e?$&Jhk=u2V;G$|OlGh@N*LRN zp;SkaZej)Du78TSSWh2Nh;FR6E79HsgmmmV>{~}$duE^xkW3L~Q2NmxW6?a;>qmx8 zbEDZ+uch@NYi>3bF&;8&q=XD))@?1LSVV&*>Nprz^Y9GJl4aR&mRnm6cz~o5tFgMo zE1NWG4c)0vE+9tPvi{2vHi{%idTgr74e$;L(8*c=HWV;^)|Z0r=mWrx+2eGQ^xqc! zLnd-qI2=!Erwku$u{S}TVlQI zjTTNF37ivVD2kmFEK3~ZEL{{@iyN_pY#uQOHsKt?pK%u|LTw(XyPyla9gru2;o&UL z=y%9R;NsedZ*(+I&uYeYTy8n4vYF7p9@FS#G`lRxYHnZo8AQ7_-xRYFUSt(I9q=IP zq}be+;9)#*w^$1I{gM}!+TVpWH>*c9Dez{HOu#f=0HB~XxU@J+6wV38(8vg0ZCwcu&nNblS*NJr?DX0G#OdtzY zMM6wzkLB6?;q;e+#dK2KLa>@Hx(*YjR)SSY@2=pvjE@nYXReM|HuRQ|@7L-lTy$=O zHx7))?k_{(!60-W#QMycCeXlO!g4?KsNOx;oSsHK`4c|X{^00Ef>N|qve*&v*q>`8 z|5rn4g$<0m|BXN$S#+j`Se!=4M92GRzrRjd442Z$216wVmbrw2f(YM+)yhaP!n`9y zzYMP3qH5H(oVi;nBO`0f#Gnh*NP?7WDtL*mkjv#<^i#abPP#ptLN1ZXrPG*?3sPFbzP-tPJ3X-v1y4cowkCjo~Ow0k3|#V|(^ zlafE(cyJdNqar0KQ463kIP7y=$U>!m?q7;ph zt7@;PSZ?7)IDms@!fTKR1LIx!$H;9LcTE`Hzf&f5 zEO@ITh)E6Of{pM}$|vZUwma1m76aZ>M%`aw%vifVF|r4ikYoBi#sb&|8z{T(wVOzc zGvmsyM+E3LYAdk`lW@98bKLsOfeEAGVS`VhS|YYPUo@wOv6c_ayOXCp6~- zB?|_Tpa6K$1?)`X|#Tc<{6kW12+77q!#>hcdB%CokR`2^ zc$gX~=RM9biuNKH3V}zv6A^xs!m?$1C)sWZb_PMOg5{=SWyb0FsPqwbEX?o=ac&V1 z9mrjCyRg%7&9)OEL=vv}zlnD#iCWyJ-jw;pQaXr>{%FEf8l7Bo#l@Mk%w=SoqSH}7 z3fb6t2OjG}8zCCotKYZ=P|ML^-6RW^_C`rn3&(08LiB5YI2Tyzro=lqF=G4GApmH< zC_rR;WAgNT=Hv*3J+r_?JQG^OA4ub;^YMMcazih745V4!{vXcXDLm4yYuk-cQO8Ed zwvCQ$+qTiMZQJS?72CFxj-7O@&Y$P|-nEXk@vmp&-KpKX>Zp5;dCf7$bzT7h68ifb z03gQ;x1wKE*pC-{p_$Va@LrFy(boMP?@qY8s1pjj!YlZ=;&qNd!n>?BedMhAQW%G& zbgj;~0bl6*ys|la#^@uvy6~fpE+vLeAlwl_D71WU%aPuZqui+>YTZgL|1{OT`Lu$_^oIPQPuAXO|qT4Z!=@Vqp1#-~^e=wZUJNXavXH5+c z42<1Ej=PuF!drNoUBSe+oI4y161Y*Nnj!6FxL+J(Be*$JmOmL@GvA_S|@ zkED*h7$Al9kKoYO7@%ePk*C>VJPrQAuJ&Hun(b-GBP18(9=+#3-Wz)P^iC-^#hahJ zrFR>}_r6zpq*FgCUm+j7Xy0&miSNy!I*2qn+c5Z4fqFhr*=TG;XV^dWCvlekf<`0| zn&Sj@Cu+|FzP;}HW{#MIXN*Fsl(B$M<?Brqiy3|5r1~8XJrX>xN!cTH z1{?~w26cgAgT6o^7KCcR+xK4Iaf$!Y#l&SL^p9!mixj)n^QrgHbjtj#Nn>zTCM8wJne`PHY47EaB zU2(!crS_JQklkS4V&)n$@yLqKD@h~aULODvy%2P|2T?+QC5H{RGdc9)ICL$=UUT5EO2lZCt7Ikkx@cc(^ zu(*z5jlFPkgO2O}Qh6Zjv7hOWfb++)CI1Ee3ubThX1}ZJfwZANvUyHr2_rNYHdtyc z0rI-174LGSE5b1kiNf??^sddGzZeHxFhj`%6U0v^s!u?ZICcB-QH|AMSSP$he0*Fm zUU;LCbBato$e+Hvqkgjz8-CeCUOn~(;x0n%Ec{hob@>+N><>L`+;ht)S^WA3PLLbA z2z`~AuH%B#BH8LyNVSW-mVC-jZM6EN!xpU+$cv@2KE2DPB)&T7W<-op z;{c!557tSijXCZ~hm8_xFwd*b1^?LrG0gR+J~Vy82_&>OI60As4u9(AkMdeLFi)qN zB3yt&=GQ?CIf_+<4bjvShP?gq4_SbZNT5X%EbA?VdpEsX%$5U{8(-AjabBoYB|#T7 zZ_vX2O}Q_3=9cG`Pue=%b%E5N^Q5&4m)loR+>-Q=-00nFrLI*)4W{3PlCFmeHu~1Q z&f@p}y=RKE_xo^zey`_EZo4vEH`6XfT(dTe;NhP>wzm^S|1o)inrQv^%I$U1>Ij;^9t#6V!-;u1O} z;9&jTjuK5h%=hchSkO>*pzZ7!yW;Ka5Wb@aD7h<^?}+x!BP7E|7qSIcjAv%@B=1I~E=sZUhk>JQnt|e|;b54iX!GL|{ zoQb*;p_LE2jQhV*X-5tGFhf*ep&MbSRh|5;LnSHe5x9c=sQkpSy~K}3L*A;J%L}7G zwfeldBR|@T4~>`)N~KVl`9EN8&K!uX!X1j6h?_CO6K=b9D#jd$$3O1vewgZ3$nHoF zQ{x|S|E5L{GJjxcY^xz3DSLh*)q=~?f0n7>X2s$trjt?*-5L|(;*-@xcQ`5?gF{Pt zp(4NA=Ot6Yqx_@xV)x>FqQDp0zE!8|r*V}MhkIzQKyfvUBh^FmDf}0`MIfl%TnYHf zS3c?dAflv!*!0pbvMv>yIB62iJT24>w(=7u1$f=m9KBJt`20r2%bX3dd)ymCzvStF zDl0G;%tAh_HPkRd(`mpf{&mMz2TP|*_2QTcstd{=Oyes2zVlZ10*|(WdsJJ_Z~Anh zkbMRP{)sAQ&}I2o$r{6O#AM*aqa1PpWudPvQ->j^6%i+4NmqxhJguOF^vvH-^flcS z(*xn|I{-cOSVKXSBsli zrsxXE3<6{Id_U2xAg<`V9>`13svTQjJmB1zmgZjKVJfuH9UQ2RXW1a|P5*|6jruue zf4=nyw1RM|T{ZjJ7GPuSQP2vO9Yh6a$^(r;UeSZyKgp9np*bpY7&_43E@!a891ROL zy)k=^K6K$J%y<`@htgnCe8Oi~r34ngiVY!JmSGr|VclTy)D&dbE0?U-VDY$)(MPRX zHP@?Rx4!x`cdKI5c}>iHpgW@C_2r`)^RP!mge%cL&%+U$riEb87}jc4y9BcAL=!%w zcxN%ix>M0%>CdK9jJZ=hv_?u%zDt7xV0(yF20L8>EJ|@%|H@=Cfu^kMh;4*)SM{^1 z^=4BNAThz=1_6u#!yV0Ho&?){SZZYRLpHG5p_g~7VAQxz8?c_4d3G9eU$-=Rjxl~i z#|7BFviAmjm`bqnZaia$0Fuiv9}#HNZ`cGEZX4JKNICjuaE95&FcTX0?wPPQupyR2Lvjm+yJSF8A^^iGsLXuS4TnlYsGkVZXPY4ek{AB9Ui1EgID zaF0m^!aK+FutG;7k=-y7E`^B~7m>7i+ygd9YnZTwu^50aVTZU(v1r-K34L5ErW#xa z$gMJyK8LF6V6UyM1tKgT@h+csEIfi4J%rve#n$4p$ zxfUlR!#`{984e4{^EY(6;3Qx?yyP??YP)=V$auw3S3gMrKCX=}@#?H_pY(kDmlsxd z8yufZO13e)5G~N%##y`COO6Nha;ikF^{gQQ^ZA#*uETCLdJ+ad)27{I$wN|!^Yieq@ z7nC$(MkzKxR!cDWM~WTvpFBWXU($_jbclY)j*&$d{^fDi4SOjeBTeI}samx7U-o5# z$W6{vSwVi-5);RQ5wP!aflAxgg(3G*C50M+}IwOQ>Zo;SKoGs;8WbERRu z=-q;nkj{*rW|}Z#`metc=7*j<*3MmSRoi8?k9-@G+WZ!AaA~1!!y=dygEpsmOwsd)1k&qy0x#c23cUl*=mhV3KG|vga`Ia!h2SC^uA8B_}c4 zUt4HQQBn#`*(tf{fO0ydJ9!rdRYGZ*V<6GVY#C>I^dW=)y3k(abE85j>N1y)Q5g^P#q=pcH+F3Gkd;r6bz9kMR|IW93VxLV)7bo5EP=!* zmZ$VgAJU$vVM=a*zVR!4XWTpO_{lG@<&PXCml^3*7&H=eT~{{OR_pKAypuw9DKpBH zqQ4z5QcLkk(GqaSN=K1@4ZXFgf(hjCrjlrwm(gj*H~y-+Um? z_y#MskCY>~#=Et$)&XtI4Q(|OM4xSrww>PmYNncK{(SsRy?l#k#5R{uL4Tx(urfzz zTTdK5#uEmaI3Um;f@yzOur>0#pHO$9Yq+fm9EbX>SK}l{K4C-5BhfoQTk=qaf z=Nj}3#9RnYaK7PU_5qZW-(*=;Es!xv+9 zBcpxcVR1G)@-aV}{CoGh<_xm0!Ng?OpOl`Y5#L5vPkP%mh=d{_^={JFO93yA9m`aV zHSc(DKpKk`%a|Q2(m?7M7@(4*ib{bk(X7$zko|ptaX8-exe3WJnmN0HDaM(-)@XQ` zEtJ>H7LC!+m>>xr)5a$Tm%Y2s6nE!03$CclT3f^&yWO5Mu0Uf=Fbg}LkKw?OCMYuI ziDZd0n77jDyY55Pc&ch$W)8#F10G-fR%d>dU!BxZSJn~mabhj|u~JIC64kIF>pQ)p z4gFKC_VzEwag)kBBE&PRGS;FBIjEds`XzNWUNgqWfGfW>gb#VQ+v~&tDU;&V^fIo~ zg0NM*8TB$vqeg@sNj`s91 zpuNz4C{@<8Pah$m#?q*WSxw>y4K2UH~6`b*rR!F?IS_3X+P&ngoW5 z!aDbAc&+^9rvjBpjh^@*_CAo3F{lvtHYp$jwR>!coJLa+F7E7!9<(e z=XsoCAq4eIRW0waw9>2_6w3|^^lXYdtPTQD!(HNO@r?)vR7RZD7xktp2S@LlzvOOq zPz?JM79BtEye)FZI)iU17YawDEU$`w1q38eNYJv+3e5NW>1lI%7`B1Ffrd&LQ>nRy zX>;C#siA&k>+EtH3V0deVkMt!31&(KUOTXJU(0h(My=lm?)P(AujnQ`Ng0IsxK6}vx7J) z_+{j8x_^vg>6pPrI$x1zBvAjhSSkN+i}fptz}DW5;fLw}WDoqm9^n`jYkOQ#G(O|9 zwdO8KV+vUq+X6bsY}dY$Lsb;5=*wW&kN#f@dK1H2T8OvYQtZedqCR^f@eYxKzoBo6 z{GBglHG@f(=5xKLH@V#Pa$oL#?feCCfaXzzf}souk9~5nIjwW?DcDay)E;r?#zQbg zKu5qw(6@S~h5}!Kw1ep+cTnDS4d8&-jz+B=VhVG?yYpa+4S}tOO$WmUzb3KXW$C1= zv&$#FQOKuO7~lhU4Vbx22(az6-nH%|aTw`s^^pFasn>{>I&Xcbd%QY!#ihrvagX$> zXRm7*GBpsS=l0}qVk$kQ)!fo}?)LHU6}iTk)Iyqm`k7U8m%YH9HhrF*JMX!!kv%Bp zWfg;Y8>PFYmcDi3?fc2Ul0wMuhJN%%IkSEx@N147I0UA5;gn)J&v4TimZv~43Fwbq{Up#b&i^To$E?`o0+r%p}As z?lgYZx}NDsj8q69SjM~xNz5o=3UiC;!kHX2$&mvzbbyi`9&_IYd)$WvPHT{XCCKW%8uyi=5Cy zMS=q#gH$!2Zdm!?Q#fW&h-s3YWPl%2aeAN$qlwPd7FM!Ett%rE2gxgxW z%J9LuR`9=j>O6f-oZ{Cq4fxk(O876!^grRBJP-CO{7_I(Bv5K@P-bpW7-CRk2k$x` ziHn^Fi=8MRzY_;heDekE{Br$JNP+~_j5G`VOUc|DQU1Cs3YhjJ4w;*w7>eoNl39^f+36zAr1mTzV}1J z_!zE1IdfTC()~(s3uyx5c@nw`4vwE_l1(bL^(u3WcSuUzE-rcU-I2V0v&)y<&eFw& zZ+Qt6@VonIzdhNRk%N6n@bhD+2&4`k36>VE90m={94?#0p}SWag8rKZeVyfz41MBmeTR{-1&rR)Z&8P5uzL*N z6K?_g9Q-i-hQky5ZC@FF&n-ywL6}&C#y*+1p2L_v4qUtw&+$mL{_-!oQlm_NqDi8K zhDWgT4Dd{SVsAx<9f#Af^v!)HpeObwqJJ@Vk3ZMOHF#wq)duRn8Ia-q>7#y5K~ihf zLbx{f@xK)suHtXQiG49Z=p22nMyd@+!^*oCg7NFkkEgcN9x_9JPrhXtuA;{1)5oSz zz29R+kHRL4{)$6n%5fwxhT8WThUC;7VpeP1?SW9k9N5ABH0dn(E&NOvKm*39Iz-bp z?2K3&u??5{D^uo%S0`7&KGo}UP}c#UN{+bZz?>;W2=reeJr(8k zYeA6IS4Jtj-%$VN8%4@yC75moE30&(^TGd$Y^}E^+@~Mz3a7p@clCGX0{K+9CCZ9( z{wcppivH$^64>fvh-GN@($75=T|!5K5v^5PljT+yIicrG)~`}|IrnJM7i=~hgv?`` ze!H-xxgh~@UR|C#JI3c5+%Y6^rcIYbV^PjNRs&;t_(gYYXSXIb^2!u0O9>OlZ?Iwg ztS~b@G@cGLZ}-VQ+r!ClZBCFRYwGsOfeJS(KUUpmi_sb*YA?K)TFu0_nZ4{%^HT3J zvvSN>O>AB4Oj5U=(zX(gEjER!df*dNLCVs_cu?TdLn@-ZYLnDD^{Ar|5wQtpWoLDJ zJW+hZgWG1ei`!!X!j~*)5k7bvuF4K)yO!ZamwGQ35APTk4K6I}FlPSTuz*uzk~+w^ z!_liuDT2s5a@-%bl6|vpigfJ28}E`e^NKy9+p^S+8Z)TQ{}c*_O{3Rq@PHNGqaI+r zs6tMzEM1PB)#8@ySDp9j=GZLi?k zoE0Xpx`I_F$rhN7VL8VenG;ywS2!0zsA(>!OkF<8G?VJ-t_POJGFw~ORom4R7Ni_y z0y7ngLsg2sjKgHgNR6x&xhpC#YFLEsC@o-Xq7+hbwp6srgb;~k?>dzRex zJHDA^pJwi;E#Sd&u+Pf!Ob>dDCQHKAmM8(S_v@7__%5afE$3JhS0xLRFxjPu*JBuu z@mi4(Jk=nk)=J+y;LqH~DOZsCzucINFo(vFTpx`(zbKTlMb(OYWP&!7>m@QEtbuH}3+rc?QGWE3Ov$Tkfv@N}Y|PdN~4X7aGi(wBHZsEu4r(?%$9$s%o&XuUQ7L#iP zMq|*3mO)s45uU6w%qAK{6!i?Owrg;2?K;LzmQZ~_EFgKsqJ`o*2S+)d1hY~N%nK6s zwkfN_FwPcDkxNJDkwi~3)URRE7BF*Onf&<0Ab8Y|L8$08OOidX z!j$u%=m*h8((PF-BQtLTy~DcL!GTWJNR-mjMo-qbCHv3;D-pGuQZ{{#$9*c0Sgf8Hd2rP z$d&(_(FIXhA5lxUodOzJJ(FwoY#i6QE+&*aJ}k_+Zp(Fh5}f-F5bq+M841eV0c%}~ zf*(Pzb$wbyfMQRB!;w130i0srqxLu$KjZKMZ!Ie*_So~gBe^5WF0KO_FQ8iCL>c=a zC`T|#Y~s)p5^#dV%RuXe9jko4Y+T2++jBssvE>JGWjJDJF+SkyH#zVTyCz{qKrlLh zipJ&mbNkg8%?O_0&K?uFsv#DVI+WEZ|vAyku(|N zJ*D_{tWUM1`^)xK@CQqV>{v*%D}9kf1^-5023b*Qrr#O#=TITUtY_aT5uT$ciHOa`f-qFaIfot~--n7@q}YNM zF)GF-nkSZ zy!c9(TodwEfC|J4hziaMWgZ_yv^@Va8zZ4ed&WF7Ut6@-TW>vT#{J5|S3 zMf>DK@i1gofce(4ydKF0_g%}j3UUrZG5=e60g-D?FcU<-3|{C|&DC3X&OYWx@dvf2 z<^f(@-n#SqMPAXecNmChqCXc!kNeKncGuHZR+_-ymj@0IirW}yO(ebhT{0xS$6cBT z%Lq(T+6Zh|Z6h@!x!?E^?qu6Z9{Rt*Baq1W6Q4DHJ4Y~#?+syxzF`v>a8Aq?nRtJT(h;a82xc2b?_r~3M>Fz{+;jrKsnE&ERVGE$>;22H=czGn+alE&^M9+t zSF{C6Q|k@nN3I|%-$IG0c8+bdGFJb#)ls>H%~idndR6rq4rI7Zj{L<$x(k5thRg)- z^P9qIoxJy8wZv($Tb-lV!@O_{KqZyUTu?Nk&}25YX0MQy&k|#mbLq*DI>n$`PW)ZW zUM9+tnGlIcPX18b6^7qh)09Bm@-vFhx{PH`PrH?M!-Qk01Hv)KS0S4OQ4iw;1`VEF zKA&kTm!qZvbZVBpi1(vs(%F-Itga?~PcE=)aGm$m0U3P!NXF2yj}s-%yv9*y>gY+Vu|APJ zl*|4L9zLlKJJO}K9Mj2qThYa-gxS2<`V|`G`6%)gy|WIc0uVFNYgsO9I9hO`&#bWB zLVD@o5?8<5v4Tcn;*STnsl{WpD5%=(oTSym1>=gcpas|i?=8>RAOlFoG+9( zkpk@web~hui>4Z1_fJa;ZUB{TVHKtYE$MRPC?zhFoc{Qh2(xv9A0LF2>qKT|(GOR! zG=6b{GbNxeeb!WQ63))Cn`~vo4x6>(RVo+yLg`pinnxEDzR0nn^6XV$w?qhq5lxy` zVc0`-ZVqG2kj`ExW+NVyq*&7=ZGw|g>$9%g!PeA1-;uQVz(WP?U0X8PU&0NW= zDFYVhewNcEP_c;FA!aqPwcK5jMbj)jL6vo2hMP%NNn38GiMz0~#^lT{ z06kdj*Y>+}L?^5avRbd|D~A=C56Y4)7DZ~-57%_kN(g!4UVAo2&iHZ?@XSHB#ZQy>-VxCa^EL`JYXYUW7f+@`&I_{S?8CGXUNFzd-ltNe20Q^R@2Ohe`QLMC7LWmX z0!!AM!01w)n+Xd&r`6~G0S}o~?`QRX!OaN1f<6EL!9)LcIyU*=VpyW4>5Qg|_ScS? zrFFq&v^yFK8^cf-MNCkKyc(8xj`jk};e2uv9-o`fu{3O|jfV1SBIq!RLFLvgKuuOD zI8nUn8Tv2a)8CZ0%$xi)9@Z#9>gVyMcdGZayZqtNwm|Do=sJ7>3kholoMASdc?Zpb zG@S1Fo91A;J&6M{oru7}Hxxn%AIjT=!4Z@^37v#C>RU?$tJ`cue1;Q^kRW)5Q^vY9 z!ydWiEp9bqiUESqH0)5<#Xam$->>@j0UzeF*jPZ&fd%EldeaarG?;9#7tgH5C1BdO#E- zLg&;vYb=%r^aw&{6bC|Q*Z>s&ex0?=2c9uhcP}>hPTfT7#XG(n)-wTBz?sLfe{ZSB zu>mzthC@n{Qf$^}M`>1m%vg02r`W3jdy-B@xD{J;WO zfyZ$Mf57sy;H+z}V@h73aYf(EoO<0wlle9-A#08cy>&?i2%ymFRa4K!J1tMAKAq%~ zVnF0*^C_GwBBv-Wwa{sPxvj_E6!pW6{nsRuwr6Or2a$n^jc~~(Act;#TWRd`FE0&q zlW?wJ0WS4L+OdD6fQ8}~*rm{~eRJnEI5>omee+ij6+X%H*DI7LCT%Y4CmSWA`J7gI z8l@k?f*UCfbR$krvwv$7QO;&cQ+kKPvL3XwN~RGqltE+WGZGITPRO>pRLnBW#Ex3=V znncHY^%iDYNl>k{miqKvGzp}!FvOs3Rs>3;=1)q3l5m0y+Bk6SLVQgPq?T~uq<*9n zoVNW;PqTTsQ|GsP!GmK}#S*caBV~%SaW*$(`kvhILaB5h8f~|AI~Oe;Va7PyD;Gqs}S^z zE1Rg-i!=TcnEW6=UYXGOO0zDdi8BzjC(28oSU{({)u@pKKT}}Hij&)yY7!p1o*Df^ zWKIHEH$WricVTvZeWZUUim1&Us;Ee##|6|f`M|*pKYmHhdhvZzd8c=j)IkVI_YkFjc5>1mNe?ZEtb|ecObN_wKwan6S*Ys)VxeEU1y;vlsK+2ZeC9uA;y zts&C;W~{OpepNVzg0g!$%SRhxC%sN`CO?PiyB`A00Q;RBC+|b?tf_-~C7spTtUKey zZ2EpOE>FK3G`+Ve;5)c6lpR)^r9q@|x^b{^wsGJ-^$6(*TkN^)E~jZBa+&Nrw=C94 zq-bjdyqD2jmKfr(F;n_5Q~W4dXoZfUt_|!4s^5@b zO9MSVTbBD( zgK|krf!vC(6-|G=?b4(6x{@b&62f$>*9@DPj4V5*a5Wo~MlTvRRBtbBpqK7Ah*IAR zpGwo004j@Fr8XMNNlu|TxUu0uX-yNh< zkzh1OA1)}ZS<)qsRmmwtsQawj;jZ?V$q5_-VFeKy`uN%Fexbc|C~|Xxd!i-b@of^Q z330_0S8OzK8g)^gUYq1b-wmnXRI#N+Bq7Ila1&T9@SJH$wYpV;h9O0olAj^<<(g9^ zx*E=3!!g{$Vz4Zj&4z*NJw@$x2wj|i0yveLu=fW?9Wpe&NWr3JkwqE&jB>ffn`>TN zqOj4^{S-~b+XXR*AAD_cKI^e1*9EpnHTHAnY@}9G<67(b=Lj+%ELtsn%?Go2Ry>2N z0pjVRz-=)&_;dP8=_0p0REa8ISo1S{lcZNck;p#+oiC0+!^)jM6|^|wq=89kre9orl63V+ya5@S?sTrukf|eOVNosX4y;#C&r9H ztpoUPLm1F}3j7>~GyI$nqzx`8{mwZ3Zi;?J_&JEx92ZM2h;#3!uW=o3?{GbB?(iLN zUi|$t^CSSa8v6?^Tg5?7NJ&UaNGqU*sEDX+mkg2v&4)fAEj>OxxsCKTbTA9WUb6Em zdF=mtUb03Zl=2~U)E&a%oi-92(i&8$9sosu@Q4;AjG|Cw-AxA&%KM&}-zEbDjAJ~K zA+f=DZTpcikkO|&$B8S2M^LG?>hgxZV+2uad9FtW(IPeyRmXrgH5TA^(Z)7%7VLRu zn;F(&EjfVBSha<>g;Hf3CKwo6c?5jWH+mo+vvy7vsoyk(s^3P3t}s^b0pu(_@b_`} zhtoslR}Yn=EuP^;aP0c$Zy@D+1~mgR*(wEX>x%UA*;bL6<|C?Y$%GwwF4HY3T;d;s z7f5D*EISWFl9;R&{BotLE9s$m5h`B9CF!Y<-{op*e#rb5}V0z1h`1$)3hb( zu<02ai)w9s&UN`jE1-Y=mCAgpF6N4N$2j(KPC-|FEVcp$k#zYq88{S=uT>gM=vLhb zq&DxH(TmqkZB6(|(%26FsqkH-gp23v?vtSyR|fU1Cp*T{EHkP)jct^uYa`lSvo4`C z7kC&G;xPn_c5k!Hh4azZ9R(W?&WOiM<}+oIM)d&9K@Am(uwel!O;SZLi)nP8BT}J} zeSBi%BFR+Vx5YU{CtjO!Ar_k1>L{jR{l!Xd+^k~RC}z`R>q$T6vl%10+08N|6pdQh z#`-pm$9!UIH4HXg5KWjRY3w*tbM#jAzjwONGdY7 zM7&&~Tj+1nF>RbS-klEaMYLt?O_eKExuTZX?Ips~YUQi9b01EHP!DfV=xLExyd zPNCTBSv*WwtMi{mo{OgF91_zNuz9ds>(jc5A=6;=L@x<+2IrL+A;6Dnw=AYNQk`JK%+WR=_Ea$zLlnBRr%V63;@sB zui!dFHI^(dOZV!yqYRGWwW#h%xI?xMQAq)-y1fG;pfl)k7B5~`t(J?g$%$#dLh-~NrZn8N~zsd|L>;RlBZt)ggUgd@2&^KJ1WQL@LyGB`X!~i|fvW8J_XI3?PW3TgnBkiH%y!SJ(N73Co*;AN6 zgB6Oyhwld?MJ10W-%wS4AU4!>lh#I@oAgk1qqokIm%@C{<{tX~f}nMLvZYHwszsU^ zDPQ!1Z)zh-zOfhyG5Dws+9?Ee_cGNQE`-dee@LS=p795<*LIz+LXD~_03&^QZ z_Hf3$Pd3aoG14-)iJ>nB_Q5E>e)y%v8z#HtGpYGO_>Ukpoac$4mYxEKJgN{H-@-@wWeX);tkNQISDh*(gq=402gxurNQ*Qv=XW&ZLp~ED5OwbU9yTta-EO zKMJ&fpv_f%FZw=`aM;#6H{ckt&pd)2TjfY8acZ&-p0wQOs3eYuFPS}bN(%1+MV|G; z-Jf2VQKEfY6N+nvN1%_$$vy2tyhXFMtCH*T*K+6CgMsGMlzcEmOz(GADCx&$WNQzL zQ95q)R+BhdjGDQ=xuNm!E)6HBun4}ZMQgpOuTZ1?Fv0FE9S7|7Qr`{D+y-^C3#puU z4I=EUJQD-g8v1uJkk@NgCBqa&OxTiI$ zdn?W;UVTCvsO3jr_x7ce#%Op4gZ-|2KsKM(dpuwNWbwvZYO^0;LM2>~Lg#`G(dX2o z@Cq|ZQ}U;@zXhoqS)@UwAe2;@60!i1_X0@<04-lL+sdgqPDlw&+}T;7bhJXL+~CpO zTop4!CXMOU-5jD>Fd86=-C!|W6JI{> zonG|E?URaOe$gMxcgbf*F^JVg(YVkRxg{(!)$H2gH{Jb8LDbGa+9aT^`7`)Sn`C|s z7W{V&ivOUaW7N)-QPt5tbsG%FfL|dAAcPvCA~2=R{8|dyphC$Yfl|%QZfmrLY-_R{ zxca_57S>g^6~1d>%a$V7?J6#m*ajRv9*DCO7e+-_MR_ zF!7<s5h~ zA-$nbif|0bK~lFc@ebV34!DK7LEbqE3Xz4Ps}#f(1R17*30$idiT4R#sMWy?P@{MR z7^;K>B}cOAsX5{?Fhw&CV!?;DMRI7o&{$#4=BL!shQ4 zLMLR-9%e!(Wb&Cjn(0+@#0XRI8Sp;N_({}xy+wqb!n)YV|8JGVk4+46W!T{1tWq-%W86QA;E1y z)~aF&-;MbY>(nLfl9a8rhT^)fiR1&DBgJtns(@@`bu~0mY&}y-3Ia-+@VsDVpub!! zBgcY=Gi^@6vgirrgc(%~H;r6Jsa<+OcY~`PC~%nBl43W3Ud8=f7vb6$Mzh1B?*C@S zbyKc5Y3jaY<3WLI=Ab($|OQGYuka) zl4HXtcOpig0|hD+8OQ4nhTvSTRb*y&0R0MtJm|Z69KhwUMNJfFle+(v@9D|efX0# zwmVOPe)NHIjCQ)P5wXedMbHWl5PQL?LTB3l9xI3Wj21k>!FY2IE1PAMsbliNWu8Mg zFnjPE{ei8xZWiZ5BKvv=c%uGd)}{S9ie1%oAHvt<809{oP%7boB9w_Xl=(eN8XAakWj ziEe0*wpa;w*Pk72Iv}`Tg;w(Z#AiXNlWmOfIU@2*%?1H5_D~yE%_fOmaw7F_aPR!> ztK+#0M%Ij7B7KpSCUS?uAM#FPnG$KrryC}AKH+C2hAUL29~QLv;^-wnf-ud|+SoyY!juB5_ne{qIR|Hq^V%aj zjK9$T6#iJ&)R^ioB|`=G-xmJ=kl68K>H+gzv zP+9O$pA(V}H{kD-x6MfO#}0drJv~p*y-=tTN=7O~t zClV5sUj&TB;C9$AJ_+u55l|c-9nkelxDASW z{b7%C12^)^E8Y3Ze%tqYs`Kfn)0b;avBwk_*|jWOR+HUyV{y9_kMJwI+OnW7vAUR& zE=5J4oeHg(kxR%*L{rF08e7Opd`;*q|G+A<>_E9i=t`oGGN@W&Z1ua=jo2_E6&1EJ zqgdp}M44=DwvH<8)CVqHZUGCq4C^Q*6D4b5Wwp;)T|)-R#ISr4_sZ(`$R;dPlzp;s z1VGwMx}FAGeS?pYsp{TEWkaQKMLK^`gTuJcdg*v0Dyd5`AVRVMDvma4wAe*AGI`#W z&B^^V&|zkPPc)6pons7SQA#GQTE@wjA7x9X&!UW*xd{70S3$ZP!DM7?U2vNl@MFvM zK>7W=~+qP}KY1^uuYwfSKb8*gD7waF)o0t*tj2OM!*K9M*=WV5mvB$?&qZ)Ut znv6_UO)VH!hieq@n|2!MQl^RWG0GphO;xFk$c|PN2gg{XnpT%+82E{gUdBtqLU-6t zXdCA&jPP)@VxgKU1uv@`u&OG@#;i}4Nv)l@Pb-eqjnX7@?3V>BEz14GsD zU+r_h;Qv*+bUyK#gd;j;yr+M3zRgb`E!&D>)SP?+9trV}*T7@|Uor`x84d0}Lw8Gx znoILM=W7l91u@nflZ|wD2Gnq`HSHZTq#b`?5->`y9I&u_>0~nCsQ-;b4-H!QG!(z3$P=zKtZ*4d?nHfuB8z-P9cjct6SG{NU6EB1r6jBNCz(kW zebgyLeI|V$WCn@cu|>V#W=L{Nl_zjBJh8o-BiL!EeCy}-*uL*PgG|k-m(`ExK!zS> z=BS)Cj61x(C0VsUv#+rwnl%`_zrLlCHMu?H)Yi!n>lOCk5^zFwLJ6Jp5Nuo#g5C!W z5K;%G4?rIjy+v}T?1IsSLm#BxOTMLYXVnI(^(E)K==V# zfI)j~ZxB8x{J_}3t6Rud5^pFz*j)eF0o+^8S03-*JrH^U^n+@9mA9;~T;9Mvkh=lg zfX!RnS2}O_9{3;6%Ye=;@hjseh%Xd>U?&sNZ2*R*`Omh*jqtzSmj2^SxJubn(o#VgS(Tg_Z$B)e0V>@( z12sR(j{_pr{zF;Z5}{fBtPaaz1SHvBoS)ESh+hZK!*yU38l#jopFYLWvlfv(AJg+% z;1^xH5p$;nN%<(YNv=0F^?lX7(&OWG<%9NlH!IhRpa7q}R4!GDm+k4oRk7%hEhep4 zE+$W1hP(ug1u7F@+K<<-+t1hUD;O#2yI~Vg1|c6P6I!-h0^zdm9K>aPj`pZfDx+Z8 zSgxlD93a>q7sXA6ftD55U$|5p*ZVaWOhk?X)f6ii6K>HY7ZV*T7dDHLBRgwy>_~iy zw_{yaik3(joa7KJbmA0#7Tg#~3mmE0P~pT`hMeqK>4=E3%*uxET%BRHj!Dsni7u=c1`6c_Vzz zlN*TWP^`&Uf3aHu9_FG!B;VI;M_Th$v=0XtKwr_TGs)F>p;KuOWtVWnUP{g^s`OC& z!ZvP)-C$!rWjm#|f|uE}(Ffi>w%JH7?X#&^%d4y0W@Zc1dCaW&00vzh+oO`cwUIx1 zS(C~i+%q#qEz9`iDvyA}&qEW@TL&bLtf$`QP<#5sdMe2Axv-o=;L-#OW{*O*GVaTr z!opkR@uA#`yRc9diWx0gTSmpc7NA)_Xwf`zCj0UwaV3c*L3>Pam7v+ZXP_~}e03)) zs~hNE+fS(|QEH6bKiM3+R8bgAEan+iFg1R}ryG`W%Q(~Qa+zEJ#q?BAyJQ$Sykh05 zpFOp7UXtthlj|7PVu6mfNq*GVc8ldt+rlM-Hyk;rEZI-}HUB~iXvtQHwo|JZo)j{< zK3G_KJ(y^EJs1GGqtz+#Q&E#ThpL=aNTrwNJkPlAG@7s>&0IQEa~{Npjc|d!L1J_X zs1z(_ms@FxJD&`*fHBI_M~e6HH#Z=)ing5S#D8hgEH>Ni3S8hpod9Bm__R^Vd!KGZ zZD{_?Vm6;#&GiUF_X90<3f8@5*)A5WDcmh!1IPb-k3qIoIweyCO{!72HCr%rD}P@t zaGGGuTsa$TfKSoZ@5X6&Z-8WtNgQ7stnoQbxpm>I{*c7aDFYA2Hg1D+R4#ts9&~1r ziUu`a(Wf-oE0q#U2nm?=uDjuz4!T}M|NOg=%sk=4rS`y{-UGe_WhF$p7hCw1R6fQE z1ty0A-kP?oGQDjq&)uAIAG0f(kvjEL8~&1z<(%EgM~K~FHuU8?8&<}9FvQBeH~j58 z9C_xw5sB$N66x?)57fmMmc<>1<;`VopS_Qu7jnZJ4dza3kIomnYR`$_fm@%n7dqsP zM|~Jiefq{9PVbl7!-qbs->(%%n5qNFx*TMEU^)M29#}R9BreDkwzCcP_?cyY7Y9Ixh=%WK?!PqVqBzj}sDuuR?qw-!nFo|s?-NvqTL#DDy4!3@FpVuT2hgM)J@3V3XU zdZQI!7>zM|>KJ1TLJ&i62GgSL?%Jby!0%s2Mo_?e2F=(?(tTpH{-)r0W9?`Cji;NE zyJt!CZM*zDH0CYsNb}Lwc9rT^2hb||CmyIJngR7H>fjjZ6rYeo2RSVz(_PXu&o-^+7g}R4rAkPk0&5?jS#u{n5zlzFeX1(aI@X z)!{E&sxW3$uT+Zr`l6U~@IXT6T{3pSD@zkdy2+yjL)S=SkY%hnvToyV~?giRYqLHOZD^!>~&or7{ zdk3I<1tb9)ll02KVX;o&@@GpDMiTC0rhuDH9)ohuq|ZOvdV<#otJYN={vJxol0EL; z{T6<>v#S$oz_t`OC0?r{EkdKJollPIRHh96{hmH#t5AJ0Cu>24N+bj!N(L!CFE(<2 z^N7d)lGA(peLVH?AUw8?vVJjkCON1iRhS=Zl^I4Fy=(*XQ@{lm9?}c4g2}tPz0ZDh zo!@K)_7WCz)wgDuYPBt3Z;!5NlRiI6(aP!Rv)m+0+VZcVr?ro7<6-(IaQRt=#NQRv z9n4|YGIUgH&K1Py^*2^lJ^T(1i<|-K!tRk;B0gelj8dn_!52f3f%B-di^xKx35K)e zUr^(=UZKJq1v9wBRWLTw-LfbLE*NFC%BJ`U8Vas|O?N=I8$gK2a5ul||2htGn9&;$ ze@3B?|LdssKc)i{`AJzIL4+y;|9%(2KJb0wJHv)bLZdFsD0C#b9;7Jn=um?!n#hkn z6Nc}Ie|^J|Sn$4o@lCAzM3BrD63freos0k5wRLIK_!l+CBt|8MYZPm=0~Y#$&9Tnr z5WrEEcbFGa5D1%unWBADM2=q!VR9MSA{n@5$E054HZ1Q@+D(8sDp;1e!zw)ZRhw&| zsgvIFG$=o6Suu+b=Aa*g(NKLT%Z#!qR`H><-kX#iXRk|D{1K90lOU0Hr)@pdCqWz* zmY_Za1G?7j2pNDL31u1@u=C11Jn(l+zUm3+HM+)Z zzZ}DoagKb{)F<8h@99MBxN0%?k0hbte-tJBPm%e5{7=KG+e-iSh*+l~vy*01Na#)d zHc(Xx_;;(SmQ9&W@gp!KKAS|e@UqAS;6Ef1kuWBEr#Gka>X@>XYb0)_tQSaZIFK8d3cgY?oC@~ZrmAgv6 z6%-w%yG}oic-G*)gkup0P7F)vWc-QxUfV?dm_zgdYz#Z+&c1u*0d9;N=Z@0+-#94P z+48mMK`JZnd~vI02jw_sDrX+* zF-bvLXh&Jm(6M>{--0ui40it2a?fE|ep3B8B}O$L+6| zJDN(c2UjNDd%N`+ztX71&EM9wPgz-$CAAsML82h>z>9$e7o@TmD}8K;K?bSu`FvRQ z(mSrEiztg@I+K_VR{bT%Q0vW#1C|UpJL4j=f`X=vE6IO~q$r*466ASq`8G9nSJm&b z>v4%qJ79K^#^rl#>Uz)}2e8DDfif~@RBb>K>G$8>x;oFUnT8u$euG(OY@@Xu_=qQED<1<%Kjik-tRP=4bU|S`H)aL zSO%SEr{~T|c*=-(R78}P=xL31CF~G83n$%+{*DgxCvOsWgMt)o9>RB2yL3!o8j^VR z7i6hIU0OEjQE-v_ZZq$h8N7*~D#YfB7bNJ#M4`^(UFnJKn(O`kB9u&pf(SV*dB#tQ zQ%iNR`wf2HGqgj*Me&iZ|62~#qW4;71epZ=*4f?S3SNgUFVk8sBpgF8kI)@mS%0<< z32VUZ4#5Kd`qtw+3mJ5Eo?fs=)1Lm26$iu&hfAD0bYgyFeo6rzWCa3;I4UqG9J%c6 z->->}fBxs*^77e0%3#PQ@-)C2?tARLX2!s%$YturNx>v&36Zy=Ua5EP5>y3@6;eHP zGzar>G!xs{a5ekpbG0b;_R@U&Hh0gp-oXO7X1Er)CkTKGyE~}kT56-{t=op;=3N&L z)Ch=$Vkx15oGZNn`LWI*7bL4zOnZQeR6_Uq!XCh4JrgAp~72&=a0{JvmsH z_ywi;L@wVl|5C$}S1#!tM!x@BizkU1a69+2L1q86EdFQLQsbS0C^B3OKP~9I2iKLdaBf+n0*@*xUE-Ydm(MlanLx$@Cdy4 zJ#q&MX}$_5O>cMR2c8F4Q!_t2U*2ExVxs!8`nr1&eJcJ|K&znFj!7K0j$8X}(+bDx z$8Cv1Q0puU9IK(}EF+BDp$|T7`i8&T`Lx;U!vexdwV4PRt@iQgn52)OFE(vAlU>-i z5?U-l0V_UWw0iD*edsV!Z;6=Xk*aP1p3`;;SC1BNMJ1D#2uvg<(yB~pOuo3(y@a8F zH3f`+$ZjzUo4)FinuX5w`^$k0^6-)lCWoi71sSt_If~8I+BeG~n_JG6F8gG9Ic#K3 z!ieO$$Nbgt45wtiQ?e`~=#`3hAo<>gT4<_9oXVc;qG z5;i9NN}mYOI2LgIDSrLxM~~=0>~YxB41z8HFd>mXSnTiq`{3Z~xyS_alV`*Ik9qe0 zr}h3nEDI%P183p?##%_2SlgR8{-=z@1F4@hylmH#zJ0Sf9YP|71YyQ;I3|dI%0hr7 z^j82*8VHeRAi+8z+1PD+J4pD#hPU#`68edXsvIf;GDIJxnX0V2s=KMTZtYI=A3C=zUJ7vVoibw9?4U2x^RXaMj`tE^+PwxPl#kXe!-QrUy zx_05!GFr{D>(9Y5R_*+&X7sAnr(?8U{vBAf-BO#}K_<&i*&SJQtNG`jXuB2n%#lr2 zyd`&u1A}P2;=8bsLabPeF5!b%^G}6n{*pU83-8pCPL^+*X#UDO-{{_gyH=L(n33Mn zJ2%#Eqv(GM2c;~0dEqQFMOFiq;Sa0|CE>{#YbD|I7W-T>TSeiStPYW6w#!2{8Es0) zZWjA^GTti4yK_UbGCW1$qpWvLWY6aNoHCE*`>ZnF;>dPZ`yUyv@npVL;koAfW>mc* zM;9tRf=8(ppG?Va72c5(trgyx6Rnk>mj7j-qA&l{Ox7#CzfkcFoUl`VlcDO>IBG5X zoTTbiIchEcbWPsPzvou*O`Yg1xbIZ)jh*PNxc5@=&7HVWdjqEOlm9R0)T+uiZ1Ro# zn{2Y5($Q?WckV>4nn&w|mvWEZ5q(*g+7Y<&PU(Fhm7fCYg|b3zgp_iqXr zpzL+Mgz`O?0a{5|K%F|bsLxhFy)OORmoIegVP6q_;2^%@d$l0n;(HiC!-9P>1j&C> z`>=pqKr$d+Az6^y5(MJb3{c|};{z~s7 z2Z=%AkliBz3Pv0wU`Q9B^QQzsLu`xt@hU(8VMADx)P?t%0{Z&Bi(QCxUr(BEM`NPk=N6>jZ?@J{dm zopcz`Kk-#+3+?#=!6Uhc^%dH>%R(Z!r}Y`xu8s0J3$rUMS4$J!{>Ao$xFipFZu|}M z2kJMxe>liFWE0XWlz%7WmhhexNRQwiB72uWWKSQTkif;0Vq@ye%H+4;UM|SD=-w`b z`Pgq!2jN`BKY5A2_Ti{5wr>meN%D{=Na_}0zgP}Q4acSabYSbMLP1m!)n)WmgV?$a z5V>a_tNp70b}Isi5m-PP9Q_N@L^ihCCmk0_^x zrHXqhM}|Q8DDEZS*wlUE_UWBcSFyoL69A=(oEh6;fBL*ns; z(m&sNfXo1>c|L)FP(fA@+S2GBZ(Y2LLqC$cL3)JuPC$Hv|Aw$o-*~!H)8F0x{pt1K zEA9~98Uf`J?PdMFy$yX+g!jv0^9)Gw6!J*!1BWnACVxYM-<84bOg2MAxVAW&#ruxB zX9wY#9(_dXYV24sZ^^xLY?@f}8Ot@z zkxXn_{-fuRbdCEE&A@a?|JxX_LZ0_2qEk{TuOS_i))cWl+?5wywASAf1QN~y3{Vm6 zuuGK4_$xz30A0Z`(m90!oY#{f@XV5Z{u?+?AUCNWzPK z<)W<%%-Aj37^G0!N3`Ut@D|(S0Ll>}NbaMEb(ek%75A2UOBKH?aEL{A4~TsUBTvrt z7_v1KL9f2IIoid$LwVvW{G20xMvDI^d*;DELEQH47QZB4(A~=re_U9Hqu6~3DeOI75_pFwb(#Bg7C*j{Gr190)oT4 zLwo8GR=b14m-!X@u4CyNYstTt$g{6gaKmf)om8ujA>luEWevx?*Jzq5)fUkorO`<3 z-CrU>F{j*AUOk8p9c)-F`oo%%Or*zo5JzLeu)|)%fExMiS684+)-qc2Qcc*g_nODj zJ22IY>|HP6# z<5|NQ+^B2Wnf3J+n`;nY**@3|)}*g3V_4D)0bz%am`|ZoSBT0Vz=smmZ>SHUKeSpi zQ{XZoAztO@WyvF2&c`Oj0M|acyhi}#7aaMs@fV0?ma*y86_+(lqZbpKkm*;l>zvs| z!3q+C`s+g%G|D)O)69jC+dY71dN<{==Nn-za2q>wGR>ny!{X{7hLKrQ#9GJY+_^=~0--!iY<^wlRa%qAgvD@ebC`(OdjU!8wcDWWc{ubZxc_@Od~ zt7GR&-Z}_b$Y^uZV$@&ORSra+8pGVIyG=F09 zGs~N|lXwp6!m+)9 z(^`Jc%WIYHI*Jf)5EA`*qABk#hyB0?p5AnBJg{4^xdL-UOVOgYffoJhkvZM8$gjVP zxz}$Cluq7VrR!um&|&q($MhWEy=%M#{0d=i{;uQ-gKJj+RONr$k<2nupS>1AB_&&* zb{O1Z7vR03!g)n2tb$Hu7aJi>WT^zg+4 z;}{(8Sz(q9SHKG97%vuzhgdZXHzi4rys1L;t1_(s~5@q#ej9Z8T%?%q@->%)$$4vIQyl!w`HW3j2POym#UHZEP@@K?1*9m^F!9G$eJ#7ZNraLMjse6piS#G|%Ic31fxus3&mpy z@JAiFnObVbbgu%o3B;#91|q_*f(0yXc{yHifNx7HRS0ZC6U9+MuLnm|kkBXB+oFNG zUUiT-8v6{^eBn&@uNb+@(FZJjXA+L4Sj8SwG{E4WEXrYe+aA(`+W8PL_=-uEVpM9|Km@+8O@5Uft00YA!2T@Vd@t#reW@T)mJ1)_PV{Ga??o^=4H4)wSiW~OWN2CpG9h)0Ic$O;I+*m&2#}yyrv{uhyI^Rhv;nlf|Aw}u34Mx0M&xX?(gCy0Qz7-7hE1q+%s%!)XS<`rH5pRTv6XL2YcejTPQ zdIvuB10tIy5t1j~#M=LsI1dStVt`Qe$T})#_XuEb&^+p9GVpC4M!w4o8%M*Wu)PPU zzG7NEp)W%iu;Nl;!XP3rg`V=CG!uz7Wqzn3=c6nkh!isY5Po@$>0fgz$AE zO6N^kg=OhQEO>Nmq;+k?jKoQVuF-;vnC4c{@;-r| z$O^~tEv@fs*AO65Ltxt7*v3amasImPKk6+5tcatRsgG#;<%jgniQ5gP%S5N!q&%4+ z^WrDw&@jN+!0kcBoib}l{}jsq%AU@b=!CB~dYp)RMKMvnsb6r*Xh&rq;N_r#2U{!> zN?SXACq`u2OjMD;UdS^NsL&~$!Q%G!|s^rAnB(hNVg-6V^sl1OQ5G01v-Gs#faCPKN-8M)=GQ1DyOo6 z*bl7CmTmU1v5uB=kEbQxv25T#CM=GbBif6K)dHh*YT^$O(IySK0E41o=p$bdb4SlU zG-{ohv@kIFIo%V}l7?EkZl6Mqi8}fNDF7M5Vv#LVKqBnrp<{lY*Gg_aI<~h|3(24m zPaOoFp6(c$qy=wpzYC+@j6ebPv1xYadvmnHW%V+z^+o-O6EMg&3tvRM-vx*)hBG$Y zMVQzSMa7oDblB(1AItI|AtKmXgKn_TZ zrJThPwq=IYg?q(`@`w<&F6}BxF9?#EXzQphoYP6NlY2()$+G`FTMv+KCdFSYSU9Ac zUTC?ST+^xW$j$}jOK|In4R^X2xM{%u>QGh52TFA*@S%cdduvqyf@90b>_r!7xMZ6gc&wH;WqTrM`v!e=4Y$z$H3fK=Oop!k;$Iu0?;zC+FHURIK>3-ViATImVjyXk?zbRqg-m2~$ zgzfe69PCwA5EZ6mF{9?$hi1&OQGaMf0PrGLmB(wD?SMAFepIo|4;Vu65Rd{fs$;tX zBhkr?!67W|avF&qj_|s+DZVU5Duil+&@GI+kHF=_O&|rFHB9q+@hZV}|I@rRbWSlg zQdI7uK5QEt_0@AZq`?Eu3*bp$Pj6xA*z}6wnjwqhRhuub!d}UL6VX5xF8XN%{48sH z(Fe5fXEoPh>+j4V-WKA2E_;hUT5)ZB!fIQ(p`)66`X|{nbV#057QlR9nNs60 zHjyxedww6llK9sC5m5dE%*7c~c5W{2RA5zSv;Ekw_co^&d+V9O(BGuKKFtQu^|jin{Ep((UxZPV(YpM@jw+Y(Xp+CFm^ z&(tIId!%sO^g=kpgA=KK0o|s$$as*gaSKUfQ+ivk2;O%{d|Kj_wk(LS<27x8T456y zP=Ja(u}UJrz8MwKuwG}lHdJPc0;Ohc(*}9AY}0`(w`@UITPusFIrg3i<0sKK}wB5MxV8geLL26S;moGIUYOYB1^@$5oR}VFEhfu+FXfi zVcwF4+~+D6?CmZ8F+=2pY;=^z@oAsNURlb!Nh1la=oAZq=@*u->{(fbjcLHXi=|7} zJ!T^qA^G=YIy<)M!3%?IuIq{$k!KK@OMJ_$xng!R0t=OGZ;M_#m7ZK z7(WZ+Vgx5}N9Nt6hFfcj_?6StFId<5ONOl^NyM>1G&d_`%l`2tJhysIJ%^{9DZ8r} zD@>}2iBKG7tQL$t%y0+Ml7 zJVAS#5{F>Xc=V;7G=3RxA!=>S;m5anfSNu^M#`t4lXY?43^IS9EYz%V6BTMzM-@q*}N&gFbQZsY^Dg z1^e0Epe^c$M!4At^LZfFo=Tr$k~{C4OrLsWQ1}(Yc%x&qUYRG<8N4D3B{x(oR7`s8TWzGKK^0$j`ujiO;Qd399v_^ILE$58_Bi!z>( z1U_`mPooO^yA@mU0}%ZLz9z+c%Wu7CKXP$uC+2Umw~#)eySd=l$=9+m>9s!T^+@&) zE*ByK#}OGqzP{=vlzf%g9~brO_W1o1_)^|PjH|0iXV`3d(D} z^5TR$Nt}>Y9Oa%yoPKkM^)?n~ezFCX`@u`YOpx9yI77=R%VB@SpXpa)U%5~xlw8Ga zN!8^@Vk}^IjXn-ij`)e)emL*jfhP`ml3IPo*4|V6>OuC@=!5D$UR>|OWcEOIR`q!h zdMx~hl;j;x3I%r+@Ck!KF@|)a&Al6cBq6s8dM$KQru(e!V~|o9>yvKD4!y#9i_A09 z`mC~7(N+s~VF3JynRFZ|j4fc{QdXxIj82+OPmoQnkHigT0W3o0ig+p}PYCvg!vc+qWfW(8NbYJRAQ&89Q@T;CXp%NaAs zzzKeH0nmMp7AI(oozA=|Qs9iCA&))}NQ$uK2+!Icdj=>dcQyO+9J*5^9BHeQO)|Bq zr?A>L)71KVnRwvi#1)T^qC9~_sRB9@(Rx%(823!xf^ zy^mT)hV2+w3Q&f>_~i!7gSe)-1%}`Gl#{5v_V_*RGL}1$nWQ;yj9T}9VOfpm0>7qZ zDQ}J1TshU$&yr}LA-6A(AOEr4GIE0V4k&v?a$hdYF5@jt(!-#(7Dqf%UulToxmow2 zsRKqM2JZf`n-I=w5!<~#PXO7e&`<9EUNk0+Ro{Z|rfBW#s`S)AZ}4)X|6r39{8lq0 z|1&b;ogf98BHTVatGq|9-wxG!hT{~@5*gD8!$n8TbxefI-Jd8hcP|6Lh7Fv zv524?oob7e1RI0w+}N7^my&AB7iR=3>CR|^9(E!HgJm;VBW{m5CH08AemO`wZs9$B5-w2qmhI^*Y~R!U~liqoQW2nLJoZ`BQTZXB4vO)xzk;efVM*1303r{CHs{A!#o8j75ynVpF?uzju zLXUVu7Y?0xNR?1@o3`Z;n8x{|94PrZ4-3iW(LV)H2C^W^(LM*5HL3%wQA&I)@Ul_V zvtK9iM`bhwo${S82uei3}beO?|dsB!X)~g4oA0%d`d5sLMtAA%%><&{? zmUe?OAsizpp78l4v7YJ;%J)AIOUcmpe0R#*2(PZGF8yPnUl8%6{JF$aB9KK~4^yn+qx&|C-S z`C0@$LkihA#poH@k&gE0dF@fWV)TCzK9gqMQ)Dxtb}Pp>mqLr2lQ`A(YIyM)L14>r znO?h0wWz%#wXY*$h+cN#tcQC6cKlX`Z{}pX3ngzT4$XB+p6aE%_SAs{N1p+FBJ#LM z%71HGX6&0?(EOG9(mj#LB-^{5L5eC6oZVao8dG=^$Ij zYR2S9xberya2KG!;&lX!<*M&x`!S+u5G=}w%KdUdm|t}Xo_5)nhH#a(1FnyWtx)zkqTgpYI42{) zU`9y+gZ^By$y11>6cDS~!&sHtkKR|Rr1r^miC(Sz1Y)h&l;Rt(1wH1;2N_~Mv z6mq7q0-Kwu`Q+ia_`vy$0|qaIslwGg9nN;@v<;RGeWJBw8UU=~-BGhYD!|xYC;ygS z|Iae;USr!HsF7joYY1-#nEZWBMIy3Ka{!P0c@NKGEEdw0J2k;_WIMyLPu)F-2aW8U z;|0R_WsvxyyB&P(h}Ry8(Y;DWo#Ztihvd@wNW`<<2#MAe4-+G-Cya(*MF3DTI{8n2ijXDMEu*~ zF+H{Tx|%oL_rEU6Y5J62o*TYYg2nzy{7VaAd{EJrE3D&%-zM2%8^a zN#tS}fe9|X$hSui89?<=Ul+t&$`6n27n&-)p>e%`vrLId(_wHKpf#?#7Dy~DVA}~+ z(G!Si*ASI@{(am(+@ux*vp^S6DIb!a$wr27Rc{%%;CHDrcq-;^GYhjmuk5h)nA zF;f9%{i&VwbXORs{sLgjVFL9|2}3)R3P!#$iWc|YeC%~$Jg`1Ddi>H*IqtReH0W~y z4Oa(UF?UYW1=?Sr1(bek`vJrxJnR~@sPER&7|R>5^;|+QhUN*Zu?t*kzDg%SitU6r zvS%%yQ;`R@4e?T#v<31qwlI~NRh}yxy3fS>-kbaql_*o_9JjBOx%D`h|C9(-gn_zQIt^@s|boIy{ClDxUET!`g2%gQHFu)Vx6N z7vIfdEh2k!4}!D9Q`A(&r70on2et88=w3zgo`!+0937T)+)X90~c zoC96@I7A-!4=)UT8I0iI1~S$nBq@i+abeCZ@^=EP&_j@E6JT*>su;&JVjKS|990!0ItueDy8G~7 zmV$SDP(jZH`TE?6c>bl{J8kWyJgER}kYJRdy87F6JRoK+9fscxT!#<@V~|4#49t+X z>7yjW*L3&h<*i=H>jPd}S!!4g@|Nj#fr!h&w-B%R~dH4me& z^uVTeSa_yR?{IL*#4yQFuOpv(VuQJnYxiUn1HjnGHG7J!FEqn8&yOW zC>%N*PeddoQ$N{`Xcf70G-6kp@=}yr8Dh1g92bzeNdu zVNFuvsplJwkB0_V2iYd$TETcr&+@*}I1QqP2I*Ma^jfDaqp5DCDK1kkEPIsVl&t{V znxktgRvnjhUz#pa7N&S_XFjUa5aR1nEXsXksEc z29Wnn#`vewL_mjsw3FuAVcdIIu_Kp+g!{B0d@@*1sd=tj7dYXLTlWh-3$wIeuK-^< z9Hi?Ry7q4k1kf1pq|7Q*FX)^OS6(gbe)MWlsK~7e8<9QUdQofJWE*0Y zl>zVGsR z=3s%dO8TcR7=`B&HIWz&mywL>4i34==`e7m8q&HH=Z5E3kTANB$QIf{f3SFO**e%MyCdij-MB$f(a zrE+Ze(@1K!Dnc~$>;u2;!)7-B07vFlJn; z^g{4cuYpcPE;f1cei0_jwu(dX)wU05^reZHvscvb@Fw?>u}3QF_D59!wFop)8W{Q@ zDn+aEj@WyQqIc$S=H2O;oIp7gyGq^|Skb(F;yeeKGyc)a55$*;%9?E$370K)@{ zspz)|uGbUDluEu4WC_2077f-{r|$^+gjW>2ztsl-)mYU})Ub#m-Y60PYnuI)lk(Y+)v}O$SnwmJjA{IFavJz^b^O0-`l+OAGh!sxfu%lJq|Df zE94hC7GdYrug_4PNrWIn;7>hjiMrF#$K1SoO) zZ2ViCO=9+KRlJGIsn3Z3;mG3UoHl63Io(-m*TeY8?o_nol($-sJ5(h>PEkFG!6;l& zMAz`~6k9dyma?%q3>FAhl(DvInCweHu*VxRi0Bpa^H^NSO+1)?PKphoOyzgcZO^?p zF~=QoN+e{KH#_ z2p4ip1}Qza5YcE}4c&@@aA{+WRX*}JNBIQvThg{p82U3@SMchKll!jWB-tEToLogx z2J!vd87n1Ut<*XvDEm0N{QY%0O0Kyi_&!F2$_|$-z0a}L4kB-B-YRsdiO~(4?!4;J zIQ-U^{gdZS7O*u=2(@UpwKwm!0AKlU-r_HnnEVOf*XUMxKK3C*)yF@khHOa_quYiW zbVCG{OI!yW2s4QcGQpK9ZG=9*rt_2Q32mrpGG7DkaIal6Sw)1EG~&{f?eLP6{qlN` z4TaQ98ZWKn1x)BAD@|E;R(XZ!AI4R=La3Q={rG`*JYl*hY%bgi8lW&Qo^xiklRSEx1gnuCa4gPr<=5I0JjTL12#})WF z1_CK?3Z_Bv4oAyD!|au&lCr(zfF&_sg;|C4?Fg&C(h29vE@{gLO& z+8fRJwnW$_uhu7z)YZ{E69UV@GOTTY0IziIn#uS@^Z3ZH_+4xSHLTpzaZm8MUCfg@ zZoW*NZ{7z$)zlA%&yKDZu&v3aZ}^vCo`2W@ZFBG#lgVqx z0AmWZ@4Y>&K)WUE{!<11jPEF@)*j{+-0I@ zIJuraH2b}Sx&HiT=szJ*14@z}1f<01-}DQ#Uy^{Y zk!(g6GkX&=dlyFMueof-uN(j54gP0F+y3j8y^HgI1pp~;DqjMCk$$MTvetmFNQ^g7 zO&_*{La;qjyLn}+>?{m%zj595h(Hebi`|$Hjq#Z2;~4({|CD`w9irz^S&paG_09F} z-l-XbZ9fpr!84&(ChBh`SSdv%J8?nXFvc)>G?LVkw7=2+p!Fy>R2CEzRQ!Y{!4{>6 zutmZp7Io5#!X=K`Rma-zz!)yg>!2RGfW9>12nyGXFqDIVcSinmP!WPHZe_^Fk-xov z)w#BFS*ML*H?rwF&V-e{ZSH~f=6&gK_or~aV%_c*M?D+=SLj+>ueuHs9Q_dL4McF0 zz71C$X&x)Y(p#`|rTQjCy6OZup@!|iCiOTEjw`tFsO#wz$HtHKy^@W}K5Tq!VkJEJ5o|;|y)}cImRM2@*x5o}4Yy3?eJ+ zA)mSmmCGU7IJXX!qTF~lk&&6_+x+uB9d z(2FHojfzc{#G=(7C+{6xb;98=Dn~)Alf9?|Ix350J2%0>9WG^slPU&xL&Fuhm99&(tGjUNGBMRR+ZT0Lau#|+JePh7R#f?w}P0_M&oi<8XB9z(=VFq zI&AZgy!A%solgcTt}}EpPM@;D#0!o5TZctriPKMrL|ZA|cxTB&dRx!Gop^4%QV~8h zWjNGFnvXxC)EP-Piu`cP!+ImEdVYej{{~+jg+>v)xna72SwIz#cwgZZ6z)0Q2e~07 z%%{|Ubjskm+=sqNiZ>I879b!giz~lj%X_)SBGZ3jCiT1A2MzgiRdkkqJ){z0kav^J z_*YMI>nab*mC85#(s$^da#Z5i``A58<^<&yYL0}a)RLK+r1U$oW3nw!xJf5T?(8ix3P#E*^TYKl-Uei8PXjO`rARJH&d0b538A1>ov{{`+-hQXvbRVNzsc5NA!(u>t*?>s4EQHiP`^nVz#j% zSI_p(a@M&|z-Z>7xxpR3d9ydUVjRC>+ljk7dP(tj#rDRg$XyTPHO6?{##1krnnEzx zVZ1usk9%B)T9}*0EY%Be54JyE62EoHa*DM@t54y*#(8@uIW=UYBqebbU!gS|leM5b zFP1=8EXTQNsT>i}l2HgdUQ%*$byQ^C`x8HhiuzmiBQI+>K>ogzb;}rZLYm7|GBZqW zD%sk2)g=oWbvaFXem~M?mJS_xe=Q(OPW#Kb&8wAEi#?OLJxx9vjfR|U;=>9$;clLQ zU2H*HAH%YeVgiG|Qtp|*<+Mzgoh{5&q?MRn>cEQqm&KN*4jFvVg8{VTr8Q*=ECd-p&mI)v;7DCnJo^AYUmOWyRf zrF!7#>Eykym(^mmvhogrW~%ONPd9!D@Ui|kb_Z{+KtRI z!AY--34ibVF}l<Qhbl4pgV3RrF%FrjL*$M9@=LO`>TPjX|kfujSU zzj&4IbB_;~FD2fm^6d`~ksTU!D6|upQ*e74v}?5AtO&lT$@WIvUIkx}HDh)xgBqaX zXD>H!^C?$*JLh2zhj@7H*zxd|a*(1d&2&HJsRjs6mxTKP+v!moj>+{3-$aO59B5k=dtoesnqlA}eiH%lMUf^hCo zK(d@$iCrGk3pc$i zH{@}h4Gv9EW{hFk9i_-Tzy+$-SfWDXeiPYLkPzKze`Q6#zqT>cZLo(8U0jMkxvFw@ zt@}wxpff0pR|c=M#=Vdn-p@Lt%9#rCQyXSFgRn2;9F!A5Qav?Q8e&3ZmK{;PP)j&w zw0d3Y+o&`y!OyoY4Y0>SLMqRE86*^mo(|nAmv*OjRcM})vP$+UDt%2VR#H;Fgpslj zD4+GX*SiWeE8c$b3*P2-VsY%>%eGaM>qqc&bu;Nj6 znwTQjA;_fDiR*6(@h^I}`iMuEV!ZtQiYQKR-Sw128sV_7Y-pVwzdDl9(Cy?Xa)LJrsuDSOn5*gRz_1xHbL(L&!c+gW!^1aD{Vn35dq* z^C39v{=|-p57`#0z)Mf~^Nhucmv5M{uVRUpUg+!-Mv7-(60wg9>JM4YUAOlYy-@On zlct=&%en0LT;m+X&fT%hL4xZGnTLNb{N^gks;nt3FOr&QVV{qqkgwFDXU|(SZ>ce- zXzhFrOtIHlbqkaGc7nR! zv#Bra1r}ZN?b`9ME-9B+9Ru}57vIP%Ze;l-#hv>9_M>$w)*7mjVH4 z&mopQ-Xoq6cbrEgRU>foZ17(D^&W==Mq{Rw08yiF6@AA@#X+7^IqQ1+{7^x(tz+eG zq-nzS7pxfP@w=5vaGYn5y&mZRspi2k;37cLM%BJs5*W%y@Bf48)CNY1gK4+%!TAvF1YOXXT8-H-;EExTu!9|Xlha@bE5 zY->WNPAoS84rCFLN_19R`Yvtf+4sfDd_1nKh}a?Q(`cDYD5qKS2&F~Uc^qPh1zB-c z6}a`JCEEoIn-r&Mb!vJ5i9m6AY8GnJG%55DDcs!S z7lXk9drK$RG_SVEC0!7afgC|GIM)(|iW4DP8J(m_v$61~#?g2@PKMmBz?YJ=M%U;S zb$YE4`Mjm1M-~<2jz?sJK-G}KOsh9E5woy!w~rh-(?v35b(YRjJ-}RvCTC@6mlX8^ zK1po`ZNj2?Z8I8SOKp){krM{*3Aql!O`ghNbW#h=+)1U>T!|KY?EOZt;15Kd%kMro zgKzU%)3ax-F~d%7n5lxs#{$+L!sKI+wtC+$o+=_XBpw_p-T@EpjfGY3P^!tL;`-m! zwz`BSeTK9gO}D`~P#5e5(r4pEM5B%3SW-xl5bV^w%&1VD1j0i^c0rJ@XFJ{yRq?vR z9pQDpxaalQF1ddfoWH;p*V z)|MGW)4!T&Jpod;znd1wWWV6END3uW&;pB7-Nd^gvKcrw0OG zh2xo8-yu0te)A0?;}&jxAl&uGx&*;`qgF{&!wO@-Jtnnv2zcjR12s-3@h)oIddZJNyCh zNzlWRN;;Y!zeVnJ6GM5cJwfsE}ZUm6U-XZ~-O9T#;Y)aotk|$y|}y>h?u# zEjhw1i(T^J8)b45SscyY?I-f{aJ;9RIuO(eX+Xit?yJi;`|aNN=ehWNUxc6XUeQsE zmCtoigcZ+)QR%81ssI{K)!V9)ijt~78q@{KvC?O1YX!>5(zt4CHOke}b~G1?Ck(0j zrE?6a)0J#B%Ic+GYHb=l<&y^*{-U{T^f|ODHOoxl33Tm3#av;b&`U+jQsD;}cB+Mn z-!!4ZFtzHIvBElNYgNBFLfdE;Y80b|jY3^Q#nEuoj(dc|gfY>&DipN~nL}Y<(0dd5 z5A?$SuEae7o(lpDo=9V!-e#i^pBrHXQGc5IX#b1}D2LF6HH0k#Ux`wHY=F1YsghRf&f#g2df^>y0#U6nlBiBF~ zpk3p#uS8C;9}nz<`KbV(uGK(4sdoI?-U;;=u1&s)J|~K+1-)DwfPLtII4tiGvT0Mc zxC*a_^rKwk$C6+?bH=*uIk0!(ewNJgKWB+|-$3D9{JOGf!R#+rg6b=p75McC%N5|i zbd2<&SPXn7jqM6qj}}}yt}uLp;iA~#`p_<>>Z?_ftsA;Ai+v4s68>2o%0Z+F=3g{h zVED9q#fF1&&em5rYja(W)2sed3$z~f?Z=M`AtzTbf6^TTi1%u7l>rav&$?M4$qqc& zR)iqxwQKBF$Q9D}3VZt#(i$uKND5ZqOARxglo_iSzefi#R^-{xnC*wLfjQa4hAV7G@^Az)wz1)zM(PbEoG;6q3EGd7KWNSB zOlQJBNU)ik5=q6iE#{=dQ{>IXNh6K7Mq^mGj}u0s#d%QJVT=XeJmx~m0q|442bgaw zxD(H>FEJm^nD?r)C4|)#RvLFj$U18?{O!)OY}*LmWi4_m!3;JV7Z#=ETerWANh^8N zdGe>?#Tn3=GDjOl{WoG~*2wE}^p%ab!4h*{dNMD_dwLelXJ;3BOgG40rl#5t-H;z1 zQsbJ^?55CLG^#Svd5^`r|F$8xeJN#(x4~J z_UNZE7~Ewtu)@QT`cf>7Y90X5cHL(_RM$qahJtYg35V$Yfur~Ek@>n za+$V`R;r8~2lww8N>o^@vMO#RWA<_Q&I|ato149ngR6yoq`nrY!MVY`AtLpPgWnx2 zW>!(39!I?K0fSc1>NG9}HT~6$W@f(q-bN$To+(eT#3oGHT11rb*T{j()?u!pA!$57%d(RIvY=0N#U&XZgo=C^!G2_zcy*lL@8Pp@X_Z~{ggEP z{Ls}$iQzGmj&5^mdoqVVyu$Q~okOae={ll|kK7b*dOlFu_hvQdOdAK*nj=cYAg9z` zZWlcHU2j4r_Ub3WqUM{>O$|sqtwIcR; zn8!wb(B*}4@#TN)c(Bk9nG^dKXWHst$zwcQvL6LIhMSscrW3Ja1E+hx6-tY+lZS`j zc@^$3sk0QTz|9}EI`$?wceW%-V{p@69z(Nx_)69(%cH!0%^6Oi_f{az#0K!BGejL(^1n(Z9fhxpuv5rwp!J&ZUgmtsAch-d z*1<4Z&Tz^e^l46CWLa`|9Jt&K;u9@eSKm|68z6Nj(uQ@gm36xgXq|7R&I)Xc#Sck% zDIcXxjmK2W(fx$KKYnFjtYWntxRHD-|IuakGO*fX8;79~cSAfxhBl+K0>YUTs>PkS z?+o5yh#J%AXRqY>g=qjrRf-EE8;>ZQo1k1XB!E`KH0zrmqg=)=uH-p-+Iarg29>&X9knJ6lxq8q%5@o-r?#)A(3yzvR?~-~(xDvzzMci33)1Dz?gY0ZG z3)I?Ca&Mn-ArsNkr?oEk5Hx5%pAvLzE|KTFsY{Qd4k4<$4-CivxicCi?5 zsq)LmeB*yiqzLlQTUCpY<=^F332?&yH3GCVQD54IawIA~92(3QyNyAo8e@ zbjc0eS_j~D&tk1vXn|2IQo}dQ)f#!bgstKUyQX_EvFnR`rlprUXI6bStYPa)D?0)@ zqlTB=$S)Y_u(}aUR~5C~S_e71gj-=nZ{&f2%6jgdVlE4KIIk~O6mt!>MA4Ga9mzYu zs_N;Z#M3qJV&{lnj_Po({pCt7E4RNur>`>5!G+x)_o!mG?8vdDFMO-??TCO~y~y3R zJ^W@l71d|i>3D&?r}7tPG-ukiWJ8ot@W@)qwRu}p8c>C@kYrVqT(cI1u1&9JVh@>v zBRqU+@m47KNn%v(B{$+>C%cWX)=ic}S0dygPP7xt_?MiyhnqmKI}#TkrgpC3V<+e{ z!_nf%S#pxr6x=Uf;IDv4J`{vHHgeloCoibI3r@#CUq0?wG{#{3J=Y>2?(N3U@1v;q z>DRy6-h~90g)pyr5B)?&y}@ZkdOSq{h=K_IqZ99PLV-54w?4%2dQ!9))g@Lw1MuVW z&kjX|0@YsVwrUMiq6j~@dLB5*SuhYYXxrpD!HV7NuAFJSeHD#&G28*v)X)xRlkc}_ zF|{-^ny4hU3*rp75jMIYTd~g4Gab@*HOiMRA;Iirb7_u_#g&cZYp-A{o7nOznJAa} z$o#}Ah^W~07=MLS%Ja{>Q6G)iZBiHKRs&8k8?}Wd-PbY?LvKk>1b)3am0m)Dj}SIe{%&0SXlk@Kav zv2Eu^T@o>K1O3Y2u@!8s#l0%P0oOX&3X8S85YyeH{miv?VU!;xD>u=jUneX4d`|bM zLPac`wHPNiic&>d&l4}5+ljBWrD48aQWM4B2==W3KO%X$WbI70ig#0roQINPfDe=FMqAm%jRR*BiiF3%CP+ zK6>Rj$l|ig_E=-S2{75?zmwfK&*&IuQL=XXomXIMPtLlWlI;oN#BoM6qOkGBYp8zor+?cFkAM5z#t9eTrn>k7*bZ< zY0RTmTl(sEgQp9O7Q(Nb`h4*Pub$oibU06(6@IA0gMhT+{~JsDH^Tkjo@S_`oWj7D zdE2_Wy7eMhRM4}l2w%<3=}0K;uxKR3MjHJr$!1nl#pft%r1<_X!ku`Q>2E0VrxdIX zhf~>;hrYi4K44sf3=*j(!6wNj(I&izP=SbHV%cf7+K;=&#NPo%0qiy3G$ok750&A- zz}fp=MHQ+$Na34V;Q>;u=jX-Q=mj#1KZo(dHk@iqoX2JwH?4e@!A2I z5Ys6=q9y`>oR55?g)E4E6A_Ug`P>;{5b<0ZVG!9tw6{#+N4nQe;zzmn^fl+S7fshKnUXUNIC91Bqqs(HIlTHSHL*OMxBzdj!dh2}>Dn#=@g8W~f7c z7=+4QSp$u#QN8{-u-s`*W3_`styhBm>lLuvR&n;t^$ zE;@_)4wXnuVSb1X|2)EL=I3y_p9T&<@T5 z>r&B?Ql9lUO*kiOPx`JKWHOeTBcsE$XHTwC%I;s7zJMpHXOgXw9pbGQ+L~Ln9-UvF zOK&(^1v_URxj_y)i!gnWPt?yC(=^WrTU9&Vbbkp13U=N+YJ&)O*kSxedkA+QVEiU= z`6i+MLR=|dYxKzd+P*e|^dI3xe+NH87%t*IwYn+xY^HH*3yK(M47QqvxCA7>+?J<22k z_3h%m0Kbv7D~(LaPAKKKGI*gLV5%viyCKBek;x2KD)$*y`ne@C5ocxZ*=O_@DcEW7 zMYF3L0#0PcepLEkNjJ5}*tI#~VC3riCstc`TxvUBV|#;y0tLlcTIY}%9(nNh2A}bl znl)-Ih2e%Vi^DpA{QAlFZ6|*1CigsGmPYz4pSHLwhs@7CLn|{CZ3AItMsab(8)qS-y-jT!AS%Mi*1 zJIcme^tkm@jgG!zpXYjB(jl9?JD&+cHzdj3h1q2MG>u{>T!<^L{cz5idx&1$MuU^{ zgx71kP(c5bB=#dm(gll27f9;{e0|gko9cjeS9ULQ!M&v$8v!d+7aK3bPj`=PeG}1u z0)S>-KP9~te=-~01d|FqKh%2n6JGTB$))|(24*2e&OU>j)(rm)1RI*m9Jcdlfj+dD z%Q}TbtyORQ)G5U+r%)kRxjXmm{AH5#TOZusFivaTq7fryn0-iyLy zF7O9i9-9fgMyRb<){&lLahks(HR`K-qCnD2B@maKbALM9 zF=i@S9`W}z!e}+EyMeRi5EIvGcOO!zFdt>!Ax5*&52k{6=HY>o3Ix=+Kl5ZEsipCI zp9bRbW1K)%S8&_qW1uKrIc#ODhZav}CEeggtpuvJcszG|5}#q3P?KkirGgS3TEc|A zg3>or?GURR#gj^hT&PR4r~8v+weRpw=8xlMDtyaMTa2HCIATHqu-|gcOTs2m2Q^hY z?k^SROfG%O!tw>+A?WBi*I~OBS?kE)->Ikb5-alBa^128o%vLtn};m{^~cZeneHt+ zuQi?0>2`4d?Iu_`9KGmN4{baFa-9@7HPAD2nKkNkrC5>kC6<&6D`dt@8#eT$w7Cn# z!A_+GAwaRiYpi8sMe^SiyK+Vvdj487w(P6&5#zr!1NchQnY+_eUU3uTQEwP8A(#c`aOP`su1P=1pO2OL%1k`WkW8rO;lHT0G<5i!a-QcREKhrBPFIXq#z;_J|nGi$P(UvtBF z91j(0uH1Zjxkm*9T=I|Tii&!ClA%W={POr@bj8Wjn1B6|1R_KovIcLr#9N1xhq~z8 zWOvqh8#$s8Tm^(MjK+lnny)7vRWQ~Sg7Y-)&PTs^LY^y($lNOxVW*+U!3n?3Pw z(jL5UNVV{c+nZNL^sCXe&g~zd-UmJ0eiB|+{lM7VYD7T%4d-!9$6Bt`^z_xDUy;9=y}S z%N$JFlA^mPg;SJslQ)#HVD)T{-B_hz%N^22!6O)oQomB&6s^Lwu&CELz~i`Q+m6>6 z4bi?mREOCeR=@f*-`K^uGTQ(8m?$Qna3-I!CPVCxO0hmqu`2i3jgae9dN?kFkzOaP z0#XZQ;$4Bqb{+T@ckj+A*<`Zear+FfAvNXo-QhRTv(ERWV?LZGMyh%xcD*^4$U=#A zw6m`h^~5W3{<~I)3z2Hq3iE&5=&WJm3yu3i6wthz!z#WnNGv~NoA4=1`nYS|EJEHK zMFEYvJeqkEum7im4;&l`(trj5>HpUpAA1q<5J8@e0WM@9u3OkqpWTo`P>>$0m0+$`3Eepe8vP+}8!hI*F3wkQ;WU#?hFMM!Eif?b- z?VWTTU=&s73M~G;4J$U{P^C}DlX57}k5-!(qvJ;wI;VEF_9c06%WRV}r;qwms3^p< zChLLLu8?;p`iSPRD5~@AQYOsebJGG#Wk)w}zg>1;E?t7g@vLe2rrVeLz1G~sJHaf& zNg4Es9cazN*0fGkyv^Q+6RpW_Hdb&5dotC z9pXCzE?V8;$(>s=Pw}m1kh4ul9+?Fk*GL`_zc%er4?<=qm^auub=dQF#{;zF`j~bL zv*@glDCeIF{{Y*;g|wuTFHj5dujvc_vS^I|vuH|Hb^Zxg{s>Ex*Gbn=vP4I37;S^p zxQP-&tsPXQWk(~wDYb8(H*Y+*Z?l;nhWZSj5qKrafWG;MTL{n8#3ue0k6=9VVLi%m zm?pRI!}EDVFa$h-T_N%uFx7<=hB_siB<|CUu*Z?do#AnE**kCSYQ_=8L_(8DivB`Q z-_u1?%1Jb4i6YKXV+zNHOixsA2#|rX-z^I2mZTmvR{sT4hMi3nYVQB zqJT;d&?wzF<|3IuQdD8Y=2#4}SJPXsu@1BIoTH|6U7t9F)$x*9#_3X9hG|oqAuyv) zq~ac6vdMMbU8$q2@~k$uAa7pEe_`B9I?58wRX9+<6LRR`l@dja`>bZFeUz>?>~^)Q zw$fQkR(7h@Ttx|!xQMIfhp*It+eI%n(k^q)CvKU8oDE0(p+H!VX;8y&41IWBRnWcI zMvOPpQcD3|95zK@F)gARbaR+_X?vXdt&u6$s7YaYv|D)EY?dZlU9AQC8_l<1uZ=dQ zNkXU6XuB#caXxo3xsEwWNZC(X_fsvxbZLK;VC6a`{KBs5Ta3V6AgOr<7h9Mhy&2XO zGof|5NcCP%Y6@8-3TsP|(wZGkgf73Z&;V=(3AaMI(wywprSUWCj`#Gg@N(6>He!;# zyaiUawk*UG()!RS6d6ln;7DE>zk_#(S}xmMN~xNZtbq<=&8o& zzrnu^LXZlfCYRb4Xs)l>OZB`_%JO+8$RK7(W=jg+2St7YKX-l=IIO{g>LA?pa&Gr{ zUU?^T3L^Ghf?|z;qo;G*JIemp*p+nNIOrH*o?=D~3K0T5f`qezD8>oG`b}h_`7`1h zqyi6<0E;T115IYfL+yO1nVjkNV022h6tL#oyTy}%Y#z05hdPf;4q{;{y!)b9p2%Rtj02BOT(0x&*<+H%_~EijEU+9-$V46s$c56>(RE_pqw3SAsNK#v z5!&`Yo=f)gQLSonrN?T{-wsu(E^@}R zG!!aX%iv zTJVebRhMYd_I|M()h#S=e=`SY*PZXMIj>gDW^QcVWjfG`I_hcV>n02Axej8>)-FE{ zp0F0_hJL#b0F_NH2x15dTlG$h{=jvP^p!;^ty@4|6_PM!!GgV% z8=VV5Q7gKIf*TA{GV@8wHu#Oa&n}w2O=J6ZRc|*=%d$8t5h=i#qDzSv_@4gf8#ft3 zCh5;#f#8FqX6KyWz_mqAGU{6}L2p4W6e~x`n`S?6O!O7EL7SSp71g`KPr3LV5(#R< z95ayVV4dEMQA{P^dj(40QuIY+71iPS^ASSBkeLyGG^*m>}8avE4lrFgnB-~WjW_rARHIp6#m zXFIU~Il2}@BNS&Q6eET)2rM*|53D4r|4!qG)&V1+v_nlrt*N4DzXF?wg~N;#9CU=u zFpLyBeGLYTrop*Rk`9BVkxQmAmaJ5~DT^}CG4T))gJr0+9MTF~#?rUw*a)HM8Az}X z3cG`2s^&Ix2TfddiJJfjD$AR+@wBIB8f>qn4WH zP#ksEn!nKDt234yqifq&uc?QzDcF35mu8sBkmTB zee6j#S7=taRULZ&e37T9;^)KJVxMs;J<@4Psq6J95j^vN^lkjJ@+xU>{7zJRf)iam zZ{Xn0cLN>C46IGKkY3Q8l5*%VT}|`P4EcrISsBSp11v~R2Rr?pMXk5}<2)$<3;Fmj zW3J1&lrLKSBEv;^rQQu+vFvFa&kehZ(j+;I?RW+)ikuO22wZ#!_iHv-xplgdS9KaS z>x6ydQql-mVa%eI@e=33S@vP1iC^eN23zIDVRmd2uH(eb=7Z z6BxuQXe}uPUdakg$P~z8HhFm2#wJ=?k8TKU!Yd?c_Xiy+$9qNhdw6C{8sXaEQd2@N zy~xiwnpqm@?j1%X@a(Lix`Y!x)tcbx!hLI1rGlZ-y|+|pdCxE@r_fFGISJ_{yDU*( zi++B`thzm{&1YiK=YbkYmzUWUXd%oaqFuD9HA^%$4zjD_zuwoRmOx3vI8s@`wG_V2 z$hg>_0+F_c%VWOau@*^{d6%OcUP*{Zxtqf`axIkWv*Ot+H$N$OI1zIC(QWPFr{mrO zir*x{pZgGM{2}W4ji8=pJEQBtPb6F{RJuD-*9OMC9iLkDx-H>L=Ei2@LjVUo!wb3h&C6J`u1mS?gcAh61bj@0cXD2=)&C&p9hW2cwJmRbBvJEaHFfa{db#H2W_Y)C72_E~0;2**+Z{ zfQ}`AfP;dEF=b{lA<+td*BJy6LLmVtmZ(!Er<)pbZ1+G2W9oFTtSv4v6p+-~%@3(J zP+%8`+32jTrCz@ES=!k=X-5q^Z%vY6n^TN0``rC~+Hk()exiHId(tQHe*9wvB1clN z;|=3iuoDjBSF-a2^HH!95A#v7!wBJ(x3XAi-tg*quf!FpiHHlB2_4@ z#1Kj`1V@b_sYE&?Oj#rNwr|#fCXRjDkiV-3cV*@w2qX^kR+|J~(C~F6@AA_e?mxge zC^v#gs4eVZge^1o2n~_+Xb+Klzyoctw`z+pu2dVb0AWJtG6~9KO=C^djP$MkJA_Nh8@Qm!<4gdP41%x)bfei#R6J| zF*5nc0iSNT;p6v3aPkaKrNRXF_i^%!PwTOkt~tZ}caY&f2Z1;rvGG>Vh&Ft&3YO1| zDo0o!;qjJS@o#K=K%5ztn0eIz2;rUNtOjI-l^Z3w$-yIb=IGK?4_VY^Ct*}IzFPB) zUP#FQ@nGdMxtfI;zDdfCX=LMCZ#1TIjl!6&w8#*Psl9hMz-`|untdqtHQaY{#DDhSD>|n zP2`16G%VlN67_kVA8DiD0{-H1(-_Xxl48$@q^MWWuIR=e2-}^T0INs`Dtdc*`xd6! zT!>sLe!LU>wK_`Fu*#>FVQm~z>*?@|2mUJQCIE3FJD@fjKbE)Fs;7f_3d$BXqg*a~{60k63jvOQ{0 zA^r`OTY}$(zQn$pdglwBu)Rg<27H;UH7zQXS9_-bx~x93KW-6g-hg_mvmCNS7&olQ zhP*w=?#g|439kqkRP-%Q$xMI*s&7iB(9kPB&*jK|nWSZralb*Y>4^R9M5frieB8Cw{U;-tDtRi(AzY0xYt z^J6lh>R2N8_mu2sWYA4T_owC^+vAI}(dW<)C%DCte@zEw*DdCl+BuB|sXj6D*aEe% z$3!iNfxX`@R9DNh&x&WIVpY@9Wl?6BppwojzeC>C0G(^kLQ;R%diBJ!l1R-F7?);>x+V~!sfQ^|!;vO2kx*nR zTBdDkKZYw`WDbf-B8~N_04!DVWx<*$9kxZA3p5#e4qj>sQz}PpH8XAUE$pR9HbWWR z7XY{V=Rc}CJ@sIhIUQ2fY{&3RO#-Mi*s=*E7P{7g_?kw%7$^Zo)&XVHD~eFrH-k0geA|!t>VhX!6knu(6V4}}I;*{Z|A8E}r?-q{I`u)2JVA*SGLd|~I|KmgiLRySO1{%f3$^}u-mPIpUj@NO+`BbF#r8|tGd_XF zhyED(x#`yqdissr zf5M~-+?U{=vy=07XZQL;C7dF`Zt{2l+;5-z+i?P2_4hJrST;`0%^Gdf=cInnjtflC zenfBS8DzM^vu2XQ9d&%BSh)y!ra;;_RMZfU)0|Nr^@f!%@?hzKcp9ebuR`&jwKeL| z4iD72D+;aNg1j9nJTSLcp)RV7t?iI!Sfvxfgt2o-?oq7Mt8{jbz;PXS-tr-~uz3~P z(S`tO>ix3mI|JEx1$t5e#dg3?QE2wB$m4}f=S)BSS0PQmUG9G{n$HYrwdPj}oeSFk z5u=&^mj-G8JWxl_KO|7L9=z-teg=Tc2P6=Y;etj=4cM8kLepix78OFJYS?(kwp2^g znmkEgz4aB^N$V(=!&^m0#^T_3&2yAK`EJAW&%Mb~-S_IP>avjEmiuq@JRMGToAY`7 z*$|-wtwGoE(V5Q#vQU`%hz-}9y^9Y!n7zvnUzxqD4Evk%5%2dmT~8R-(H)KziDPh% z@0n{sm?0;L_0r*(HcDeun>j_(*{6yX(=CndacFH2N5eO*P(^=jYU15=6hHD^L==ML zYYBjV(zV4uf3h_I{>j(wfX{@%holZ66dAHcRg?*`MsXAyi(fAuGb#JxF-$ROCfs=w z*F8VjcDN5TLou0qQg+SY>J2@}fz{ahKu6Ah5FEC^q$45lFC3wgBkHA+Bdh+%wO1G? zb5G{(1>BWl1K5?tb3hP?{=_v$*b@_;dIO3(bC0GFl7pECC9oSk@VwcjfQWCG@8-rw3dIYNaL7% zQg*3;;BfmiePQ8h?;zV6HzHw#yWTW@lM4#ha_E91WIz$Pd~>d;YgY95Jyy7KY{?h6 zzS2DduDZSLo^vN3jUg>GEK9FAwds8b;E^h5QHbFZ8#|>w*jaJp@*%<`YOTu5R=;aU^;o;F6rw@ z?dqE`MrHD3DNfnyS;CQmB_E;!a1NL>gLe*CfsL>;gBlRwo`AbLKDE3$#+_q#3)a1G zb&UTmS5W%rH0yf}nZJ|a@G}=|bv;QROPYY2|3tF3a17hfd<`OQmj2{?RkcJ8AO;}*;kt4K3URJ7;-C?Q?w;p zjrmO)X5}EZR7_*jj>dRAMU$S$VL>^}Y9$+ToC5=3FerTrCha0R&)Q~`$vsy(3E=T< z)!_F2Md^B5S9_DDH*s^HeoDo@wXiimhjwy#65|Fl8RgC82PdeMf+K0OkU~#>+CF`qTIU1 zPpP!h4N7;1v@}RcD4-zSF_aR5QX?G_(nu;LD2O!DDh<*gN(d4HQi_WI!@a)WWte&H z_y69<^{h4Enjib@v(Mi9w4*Dlf!GHwg}TzS>@z}7c08_b!!Nx^?zb_TQC)RoN)oJj zR;2Ylzn3(1b6H0Yc$$*>PGyp3%*^(^ z@aJ~LQmO9=UShT?(;1w?>4aK3dRGZq-7}M|#q4R%Z@uP=m1ApjWLBa4!C^1Ml$rC| zs;$b8q)2MQ$YLRvm7$=p!MTH{&aTuc!G@*{E=^4}@-3`L`Dw@76-=YAAqi#+PxLsh z;AlOtSYRg<>}=7e7T-^ySlW)hvH$43g_VbvJzYIcy7v0H4(|@IM0D zU`E+vj%W(QnP4NwWKW}~X% z8ea3K`pECc!rt+qXk&J@V(F&)3+>sC1%+_QYZ)Zcbv+~7WA~fa za@0uQa>K6-@y4HaJDVP(AIo85TO@Jcf8ypp3o`Y!g#~S{3YQed)89=YyK^o*Rzg-5 zOB{B`crBIOwYHf(fR=&lneY92>YYQG#fT2po?O|mh!1Wlasq+9_?q}ca2vSYfMnoR zxTe$$5x(Yma_;j&XIF_rVUy%&hTg zuc`&~Plbzzqo>=<+i{pJ$#FA>KBiTO6w;;-S=*PWT+dR_Q7xov+dGqif0zivdE3u~ zlO19}oII!q9`0K2cGLxV7X}zf5Xpcat zpyhdVL#MY^R)$5{jyf^0+`5cK?YNcL*=7b%q#!xMS4nY2q4dvxs=B zd`csDM~ck?rBIZVW%89vlb49LPdjN)vVV-YM^4v`x1-$k=~{96hER=9TCz`~t)0G%i$!dzP*^$9kp40f zBj@_(o*PfC_(&@gMyN!m&!cB`&Op=h8G8W^5y)G)Y*dHqiN&y>}uA^Exeyh z>h;~GtGLeb)_lIqYf{097o(Id7MbkV&)aM8JlWCuM%I;mhVGJlj;W3)mU9i6eMU+3 zKC4-m9$ShNmOZy1vu6tG`>IQu#sGhR5Nl8D{?e{X5}D zcWu?}#?Blb{Ng9WOVJqyRm}cGos8g#Y68)EWdsu^xy|`p|0~Kb z1%DRO4>obm-xI`OO}e9}TrQYT6=gS@G+2&5gRfM@@OD{9ayFshg}`#6zcaqL^<5fi zE%5>P=fqvn(;3g5nC22SpVz6qmb@fy!>3je9YB0=*1wOO&}AcY^A_JW%~6*FbHqm< z16=MK^RGwV{L8Sg?Vm1(-mEL}(ZZ5T8;`D)89p;`z`MG5f4Az;_mRK_f(s%8X&7nW zhHh*mcVC!(U>Ujo``sB4ZbS7*nTu{VZ6zt zYv#b6c!R#2Ehd`GUdwvC8_36FmL<3qtVC zYS=}EQctJtr#m6DmWG)U;XBPe=1sLldY52?PgKuy z=j*k@$@mN6xq6QjTwPVmdn-iOC3YT?=%yvGJUr}Jd~P>2_xd5eL_DtAyMgojN!XKp zye9D%7JLbV3k$dA!UPqZ-`lGG6v)|TVEtYOvlH?(Cc0;?ynfo}!dE@R3mPQq!<3-cxPKGkT^wiYSrqLvi}OE=-)95+b^8#*NLlnJ`m@_hE1U+`98!z>pEUOQw@=?z zlz;r)TlKqb&9_r{-!IZU_>P`R^#D(?^>Og!+wlF!xk3lIK=w_%BO4>Kqr;{IvzuK1 z?d+!Ae`YrwJ*E^%r5)Ll);L+b(%SL~leO(SzN=6}LMN7~wYONbo;P2#8tKr*;IovxLU*2gq%Nj* z`A`Sv8ywmslNlZ8BqJcswp;$7M_`iWY;F|%rlPkZI9AvYU;1?VwTn;eVT11~A_)j& z+MG)T?{rqM#`P?gTzHCm-^9B0b zjxl3A&Oc&IjGadvcYB@fu@=3zR@mLdm47mH>xemciBhb-p2aU0>Dz6efs;QqG!f)Z zApG_GRd~TitJ1luf=j;EvvDqF64iYCl3&A4eag-arpPM1E94fPUpD4Aa<$Q|WWv}5 zM?=Rh_+ZHSb2_;-hi70&6C1yaVT>j`#2ha}vM^_!H1-pBoS%jqoSseykL%-3an%h% zQL)Ru()>Ju+g&4CVp8%$RO^$uZOdSeQNdTnB;l3)TvAil3*SC1&5bJy305VORWTUY z8gTA7Qx!2Q<`mZ9I(wr+zRxaGGA5<7wkm0~1hrGb8~AO)`5Vekj28ZmDFN-lO|~kH zZ7YTEJ&In|VLVPrZIsANqNguwUH2_x7}(uiF6bc!gPOO5)wj<`(Efta20!}!%AmDBoaY?FW4Ah; zjC8sm1bk%eeuJr^XAw0)v2>+C5CwB;vrMGS4pR@n6cNCe8>tiICZv-vTc!HKIMUpu@ag9 znVe!l>J@2Pn2SfQAX{*!^RP9vd#$XJU)I){?n`keErCMp*o@c$DFl{?G{i2pD zD!C%0M;XR?Nz2?$;HMGctsc52u4Cr^Fx(`@OUa_LwFyUzT&yZ7y-mqbdG%NA=pwFH_U z-n~9AN_Mw5?lZ$m@35=~yX6?&7*Q-$r=W?-)D2nh>O(7@hwpt;ZLn<`1#NYDnbLo> zZcT&JdtZf9J!tFiskj*B5HDT1!+3MtfBPMG>V$67t5@9cE8XN9llWUryH9c=^sEQ& zufsjR1P&<#%k0&{R`9ofJ0^utqZQ#3isOIeq)2aS?zX2?;;j8`IuJ$xAHO-7#dRrh zlmVCAE|k<*TvzGK86UZ?4`I=31a%$DGV+hpG)~0`1O%yP-y@U>Eiusu(PB;Q(vi(l zSqf*%bDPvoHD@HFQws>Z6@m9S3`^GYo>={KMvd zMOY>{A4xJapk|+-L4EEp;cQS))Y&G9`B>e48$m)sj<}vXOKY_o;`KjP_xBmlTyoB} z%}|=QSG;z+KTqG~A9IHGthgYpQH%<$Pt3!a<<44{oevH7aL^NoCEVm*)nLU$5?j2IHG(N&*v$r;1>i-9IvNM4wR-D@7)+Kj;~=#_3et&a-8W4 zYrPMSw!-saRSZznH7=p4WAD4==+J0=eWk>`h*FiR^FdC;JHKW<^J0=px+1RR5t>44 z-&m@;=jbH869&O@Z(Ud6^QqM%7AZ2_swC!(>wKTMN(z$37?RaHz)UD^*4E1)M~}+uqf_O|+~YHguN#vhSTQG|HsavFPY-EdF6Fn9O#K_YbqbhqTXv_4T>^`Qbt%9V-97J*wQqhk;mcOKr+%=uil9ZkK zk@$rs+!iez#6!Hv0;?8yLLuu;Pl=1GABWnJ#j2uy^%OMba4d8L__l;q#mDWSj0XUzESa3fdb)(gXsEAwAe+l%wSBm&Lb{>*b< zCoXf<;53w65;YnRw;JYKIv{85vHd|@*mr&KuIkX{{uQYjNleMs-` zhCl;p?qqDziqMeVX5E@h^atH7`ss0YcJiOPXlEOVZ4U5NRXfM1X&QX-J~7KREOYF6 z&}s@2=j~$s$myaH?QQO;0PA2=`Y234WPHNwS0yWaKiY}<%-#5 zJ66dqD$Pc)!iDn-ai3x1@O`Q=O)s(DAL7NDYhDPZF6lhO;J*p>dR~=(R~__l?M|go z{cKOb!|#Xl-Ph1cyyGri2=v357K3%&vp(@Ez~l+t^Vq0edS@tPr{G8u)@p3 z(qPP%i@IlkP|@;I{?F@A7u6@tJ&0jwEiTCS$!Mk`0ulL3nnP1YoCYpXp zRId*aR$pxNU4c)135YCtpq{c)(h-OmFoH)`g)Ox7qLq_CT$drsVor5E&dd&+nL_rG z(Oa#xouN3ZNS>1ByjW!j`UPqSxN3cj5q;#ve%(ZhShSrk%z?HfdSy8&*0Bk#?WeCu ztoXI2LbnWg4{;tkuUNb@U14m+1A^3_rBc7ZbG{Vr#dx8N=lkYs=@BfJ`ayd z7mN^8wu*X7nQ$dpfMq^_%lKId8RuSgE`c8w?KzmvC1WMLy^^?R+Ltbe2GL>MDp`1@ z7YdJxAY8^cEn?-S|H_Tv8qBE8AcKs*^dmX1eN8kI^_LHE@cNo3=CtAj`!J0*W?s7# zc+N+3E!>M8=d=s(@PFuj&RyiCLch)Z1xuNSA2XN_4+PAHxh*F+uVc>^eX`S&_+tdEcqU`$ZkX9oIq>WDmBCJn{O*}EHLKT( z4jeq(QQ1qnwc5}6z${$1ruCt7DRF=GQA^-IfBR`0&ROyBf+ ztX`QgC3fI!vNb6IDEo4)`2N32p0CAn{hu+8_=PCC;MnanmAPfoNKzpkLy$O zu_lzAiL=aNdo_Df$TMR=hL8k}_1Yjy<0X0R&hQdTGsZ)5lhoVeUk$LuaGu7v;R728E_BPg*K9)|_|Jj+9see~{_!4CRVO-49*WU<&BEk%- z&B;g=&xHhG6N>N(Z1v|!KC~F)U5yTjwa!%#-opHr6SdJBUB{!K@KDBYd)i||dZV%N z$6tLMyo+HUeen5&xg8A$Hx=88;UWb6!cGq3D}nG;i8`2G7n#ON*vI4;dJXoJp_~%c zE`n1YZl0FLEzYNeaKEsp7{IOt+M9u)=Hxj2&DXCixhcIP&YT{N7pw@ZLZ?X%be6`1weeqd!e>{n;#DROpW-Wt2-mzqD zN$N^cd1@K2^nNf*i&oq4%!4r!tCjp->5Vu^hLYj?z0Eh8WTc2=O22N~l>8VCs($7$~e&G%>H+eMy}m?NhK zKJvBNur-KG$sJRm1~NxQJ=e3q2b zEZdX&MF}RuQKQ0J3%2cgwl$-Hb#~2Vc2dNH&R0mH;}f(F#ENrws5&M34eFPQl2!9` zS(1i%!>1lt<-qS||Sh>QHmH!=JGWAW4rd*^g@hVNo z+0Qd@GMaTb%Uvasa~6>oi8nkS4_CbDSx2|h`n-OEkn%958BG8^H#}DATVB*{bvaVJ zcAu15zc14s{qNHyWdj0!5t?CW3r`R6x0<{CwJoQ`E!*;eW!n6Ot~{){WzBne+A8?J zB+_68Dnd_}2L|$(0#_wGJy-2oL@-%h6sIZz1+4I+EZ@DtoEGK}MaPU~awQKw?XD^i zmGU`gz5M!R-|C%20|R*@tkNG@FBEUJl_A19G!Q&@}F{YUa9ZkdG?Gv8n22Qx$WTqWy zyZ+a3V-r91{AOd$nfZh>+A&mIWk9eYFncIDyYMYsguU^r89SGj!J7&AfrBco%slXmB6kz`r0?#!xa7PZxLngH$`_Q&UP}~iw(LB> z1#e=Cz4^jMjP_-Qaln?Zy^C95ixihzlTA~i%XtO($88ZoLkd?*84Rj}{;)^Q7S?b@ zC3?2yiz8a_h1p))l0Lf1Qwm zjzNk>iiVAijTWwV_wt8K>95A%|7^hvmaUz5G?nz_c+|9%`84IU)RdL<^m#Rvb<`0F z_p#L8ErIVD0y-1I_cOpxNOzVfnS1#B$G`mTR!#zkrs6k_#5DszHU!{1@Eeps4SNsI ze}|eE%)YS(v7Y7(8X6@6lo^)uo9L#ePX;Jx6wgHs&6sS4GvPJ+CMne9HUPu&{=$i$AV25N8 zQRFBnfA*=Kq*RN3)Gq^+7C>P{(AaHi6qKV2M&v9lUA4g{Vj zn8igZ+uyt+<2q^r)-Ki%Dtm07D{&Tx`506#Vl8NblaWwkVKB{qtA)|I;8HqJ3vZC@ zwj3w|3HfJj>q-5&?xrzE0AKF|tQ4^>iJ4JQ{!CY&q};HIDx(7h$-9h(b^$?abL=Q6 zM_N;Gb+NIBz&W)D^rr(%4|u`%k3CwdP&jvU4?Dydb5clq9M#PN&RQ8G-94ddb|ycHG7m`j0laL-Bt=7$(1xOVd3d@yAHV13q^M~Or?z1Lc4Uc&P(d9C zsG_;2xxTx(iwC%%0kvuSVhq^b1;8WIKDy58pJyKuYVQFv_q6<96ic;1#w`u3unWl& z`>&vo_RqZ3$ujd#rRK2$0yD-*OVrgvLHRQQagsvI%Y1M&u|W@P8quDc^ifd$q$4LO z*81O`2?1FckYpjdhJx~ERPiK*wV{kc22ebaC^3d8D1U~LPEwk;sMEE8@9|PRSt4SP zI3Tt2Ka>3@DN^{SLj6FE$AFjnpPC1s3cXQKj#}vd#Lc5-CI3IE+evazgKW<&z=;6w z(fuL+Jbpe9WMz59|1ZPhCXAQ829!4iDwF9SF8HM33xQTKceXb0fNBD@YBZyzz|)a{ zIEAQ%ojVXfEpyNpvsO5AFMm4%)Qw9=;3oG15Y-tt7{s`70EZy|jnngVH}|x*^+Aob zV8S)&2FMnYli^JS=o_i>kE%`2+WnTjB}C8_gm-FCf;iL+;t*o<(1}CAgGiaugzo$# z1BFFyWKR=NP+U=$?V{}(2_vA`AvIN;WE2z_Y6|>S)15{@*#%lcERkCZ3d)~L6;2wl z^HanAXwXzY01_g_69gh8JwtfdoE9cA7eEj|Dv?Si3d*1JCQr&z+#nnC8`!uBkOxtg zAK54<5Q&T<#&}vRki`T^FPCyqP`prUml8v#I|5LyAW_KjQBZE7rnFR~?lJ+24w7CL z3sF#Rqo&M_4$PqgN-(frM7?Mgp`du9rjV6cpT7(=D*#A{l%x_A6o__7kN>n+1rUBC zm58Mb1;rP&EFvS_JaeF?k2(%i2>$JPISPt7M6Zb4^Q(*^5C$Do5+Y`*0u=_L^WmgW zrMU!j8v;^kM2t-(DhxzV=$Sm52pLezP3)7H#FwZr5Q%+3R2>C2!1N(WvssS{1L5#O zS=7lH0mcJK8rfHTov7_@&x{xY-x(gKsBIBwk@;y`srY8tch|)~IMTLP#xhlS2(y9d*4q!Wo7#EPh zBl%8qh@4B@kH~8eV1|(~eW)-HNms32(P=DDpgJT>$p9)0MAr3Os+_R{NOKer5DT?8 zgbD)@DP;__nOK3%kRq8M#t145M5uhn`l4S9U~VH}TqjUrAYvsRUyN%tD3m;sZq{c| zVIYEKJ-v9}Wq>%3)HGLSQDGpWW!ZJcAse7xe55wzH;)Pf5$Ia?^Qcn+!W!gth&9Fj z2^9t+>h3V_Y{miIv>;VD_9`k2M8L%ViHUgyVEBTO zmVcnYSU`lktZ%q;M{bJ+Nt%nlP+=hAl$W*P7&)+FDoUZpJZDV9X)%5*62*Q$LwN|H%5}0O=z_6qsZE1vO_F zgh%D+O8Kb@N_W%?;{~?#&$B5A#e`W~+S~a289A|1bFqPNY>xKL;f_FiCP>;#6hXnZ zfC$ezvMo&d03(KkQ5Hjmfe6nG-NUeVpm^c{g=nB3FQURggy-w7BPFT;p@byOPe4Wr zh!zmxS#bAD$|jH|7)hE)NmLk!@GKR-N_eE=dq~o>N}<9)gl7%x0D^Bon)^u7c!Dtw zUTnQ8CRfEQN>~RK~N5UMnIxtjc=?I1ZQFjc6c*|n10AL^h zvLC~tp;5b{0D`}8bPv6v^-;$ky0M`f$>^v78YnCp0|K?h9hwT^_geSNN!vllodhEj zh_GuO&@c#JY*RX){tCDkdf)*OVRj(yASv)qc_HG%>->GDJpcUSP$G-yuM|@_tEdX8}?KyZ6Ym?;( zGz`M6sgVV34gje#LHk66l@&q5AYARO?i$hnP?J$ewfXibGz=o%2lx&P9`()$k&HH} z92y4Eor#OTc1D#4tOhnenV5Wf1`Rv%z6yUiOjT%L}NyO~` z#&+@WGQeu`*JAJ?JL z5M9UPm-H|mlM)TBbORdp&-JM%g*$%v45Dzlzo2;#Rdf85ctqISLueR8@AmlV;b8XW z*yC~r1KB+z95a8il*bQwMr7rIh092;{%;mU+&+F*E+R`63~)iPAcEuZLopFqnr9(d z5Gla%!h&X%vtOG=rJ{=?rBFrA&;mvxi7SYh$SRq*_&Pq60pT~FfBFfjr z0m+1j+{d>GBC@!+Az2WC`}nRfL>40$&w#KEh=6u{vkfBaE*NiwU_s;n$G3eTvOGl~ zSr93}@zwr_EK$&Vgpdm&1312b8Ict!4#|QDv&YwtB6>zFX%sA^1<)sL?D#^yqZOzB zJR`FI%7b2idh$;kU)OfDBJiIlMgITtCs3>p)KNbLx;|ho0{mlRLql6r0I?YD{{iZi B%7y>{ literal 0 HcmV?d00001 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e739391af3..40389834a5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -63,7 +63,7 @@ android:value="81DB144D555386A38A70B833537EC256" /> + android:value="GH_TEST"/> @@ -74,15 +74,22 @@ android:name="InstallChannel" android:value="GH_TEST"/> + + + android:value="58e5b0b9c62dca35a00005e6"> + + android:value="ca08596492f8a7fde2ab48dceab8c1f3"> + - - - + diff --git a/app/src/main/java/com/gh/base/AppController.java b/app/src/main/java/com/gh/base/AppController.java index ce452337fc..16bb835182 100644 --- a/app/src/main/java/com/gh/base/AppController.java +++ b/app/src/main/java/com/gh/base/AppController.java @@ -30,10 +30,10 @@ public class AppController extends Application { //public class AppController extends TinkerApplication { public static final String TAG = AppController.class.getSimpleName(); - // xiaomi push appid - public static final String APP_ID = "2882303761517352993"; - // xiaomi push appkey - public static final String APP_KEY = "5451735292993"; + // TODO xiaomi push appid 2882303761517352993 + public static final String APP_ID = "2882303761517564447"; + // TODO xiaomi push appkey 5451735292993 + public static final String APP_KEY = "5761756481447"; private static AppController mInstance; private static ArrayMap objectMap = new ArrayMap<>(); diff --git a/app/src/main/java/com/gh/base/HomeFragment.java b/app/src/main/java/com/gh/base/HomeFragment.java index 669ec7fbbf..85f040c6d1 100644 --- a/app/src/main/java/com/gh/base/HomeFragment.java +++ b/app/src/main/java/com/gh/base/HomeFragment.java @@ -22,6 +22,7 @@ import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DataUtils; import com.gh.common.util.DisplayUtils; import com.gh.download.DownloadManager; +import com.gh.gamecenter.ConcernActivity; import com.gh.gamecenter.DownloadManagerActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.SearchActivity; @@ -222,9 +223,12 @@ public class HomeFragment extends Fragment implements View.OnClickListener { intent.putExtra("entrance", "(工具栏)"); startActivity(intent); } else if (id == R.id.actionbar_notification) { + DataUtils.onEvent(getActivity(), "主页", "关注图标"); + DataCollectionUtils.uploadClick(getActivity(), "关注图标", "主页"); -// Intent intent = new Intent(getContext(), NewGameDetailActivity.class); -// getActivity().startActivity(intent); + Intent intent = new Intent(getActivity(), ConcernActivity.class); + intent.putExtra("entrance", "(工具栏)"); + startActivity(intent); } } diff --git a/app/src/main/java/com/gh/common/constant/Config.java b/app/src/main/java/com/gh/common/constant/Config.java index f53114a951..cf2671945a 100644 --- a/app/src/main/java/com/gh/common/constant/Config.java +++ b/app/src/main/java/com/gh/common/constant/Config.java @@ -6,11 +6,11 @@ import android.content.SharedPreferences; public class Config { - public static final String HOST = "http://api.ghzhushou.com/v2d5/"; - public static final String USER_HOST = "http://user.ghzhushou.com/v1d2/"; - public static final String COMMENT_HOST = "http://comment2.ghzhushou.com/v1d2/"; + public static final String HOST = "http://dev.api2.ghzhushou.com/v2d5/"; + public static final String USER_HOST = "http://dev.user2.ghzhushou.com/v1d2/"; + public static final String COMMENT_HOST = "http://dev.comment2.ghzhushou.com/v1d2/"; public static final String DATA_HOST = "http://data.ghzhushou.com/"; - public static final String LIBAO_HOST = "http://libao.ghzhushou.com/v1d1/"; + public static final String LIBAO_HOST = "http://dev.libao2.ghzhushou.com/v1d2/"; public static final String PREFERENCE = "ghzhushou"; public static boolean isShow(Context context) { diff --git a/app/src/main/java/com/gh/common/util/CommentUtils.java b/app/src/main/java/com/gh/common/util/CommentUtils.java index 245570b5a4..4a6e61f01d 100644 --- a/app/src/main/java/com/gh/common/util/CommentUtils.java +++ b/app/src/main/java/com/gh/common/util/CommentUtils.java @@ -1,10 +1,30 @@ package com.gh.common.util; +import android.app.Dialog; +import android.content.Context; +import android.content.Intent; +import android.graphics.Color; +import android.text.TextUtils; +import android.view.View; +import android.view.Window; +import android.widget.LinearLayout; import android.widget.TextView; +import com.gh.base.AppController; +import com.gh.gamecenter.CommentDetailActivity; +import com.gh.gamecenter.MessageDetailActivity; +import com.gh.gamecenter.R; +import com.gh.gamecenter.adapter.MessageDetailAdapter; +import com.gh.gamecenter.entity.CommentEntity; + +import org.json.JSONException; +import org.json.JSONObject; + import java.text.ParseException; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Date; +import java.util.List; import java.util.Locale; /** @@ -42,4 +62,138 @@ public class CommentUtils { textView.setText(format.format(time * 1000)); } } + + public static void showReportDialog(final CommentEntity commentEntity, final Context mContext + , final MessageDetailAdapter.OnCommentCallBackListener mCallBackListener, final String newsId) { + + final Dialog dialog = new Dialog(mContext); + + LinearLayout container = new LinearLayout(mContext); + container.setOrientation(LinearLayout.VERTICAL); + container.setBackgroundColor(Color.WHITE); + container.setPadding(0, DisplayUtils.dip2px(mContext, 12), 0, DisplayUtils.dip2px(mContext, 12)); + + List dialogType = new ArrayList<>(); + dialogType.add("回复"); + dialogType.add("复制"); + dialogType.add("举报"); + + if (commentEntity.getParent() != null) { + dialogType.add("查看对话"); + } + + for (String s : dialogType) { + final TextView reportTv = new TextView(mContext); + reportTv.setPadding(DisplayUtils.dip2px(mContext, 20), DisplayUtils.dip2px(mContext, 12), + 0, DisplayUtils.dip2px(mContext, 12)); + reportTv.setText(s); + reportTv.setTextSize(17); + reportTv.setTextColor(mContext.getResources().getColor(R.color.title)); + reportTv.setBackgroundResource(R.drawable.textview_white_style); + int widthPixels = mContext.getResources().getDisplayMetrics().widthPixels; + reportTv.setLayoutParams(new LinearLayout.LayoutParams((widthPixels * 9)/10, + LinearLayout.LayoutParams.WRAP_CONTENT)); + container.addView(reportTv); + + reportTv.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + dialog.cancel(); + switch (reportTv.getText().toString()) { + case "回复": + if (mCallBackListener != null) { + mCallBackListener.showSoftInput(commentEntity); + } else if (!TextUtils.isEmpty(newsId)){ + Intent intent = new Intent(mContext, MessageDetailActivity.class); + AppController.put("CommentEntity", commentEntity); + intent.putExtra("commentNum", -1); + intent.putExtra("newsId", newsId); + intent.putExtra("openSoftInput", true); + mContext.startActivity(intent); + } else { + Utils.toast(mContext, "缺少关键属性"); + } + + break; + case "复制": + LibaoUtils.copyLink(commentEntity.getContent(), mContext); + break; + case "举报": + showReportTypeDialog(commentEntity, mContext); + break; + case "查看对话": + Intent intent = new Intent(mContext, CommentDetailActivity.class); + intent.putExtra("commentId", commentEntity.getId()); + mContext.startActivity(intent); + break; + } + + + } + }); + } + + dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); + dialog.setContentView(container); + dialog.show(); + + } + + private static void showReportTypeDialog(final CommentEntity commentEntity, final Context mContext) { + final String[] arrReportType = new String[]{"垃圾广告营销", "恶意攻击谩骂", "淫秽色情信息", + "违法有害信息", "其它"}; + int widthPixels = mContext.getResources().getDisplayMetrics().widthPixels; + + final Dialog reportTypeDialog = new Dialog(mContext); + LinearLayout container = new LinearLayout(mContext); + container.setOrientation(LinearLayout.VERTICAL); + container.setPadding(0, DisplayUtils.dip2px(mContext, 12), 0, DisplayUtils.dip2px(mContext, 12)); + container.setBackgroundColor(Color.WHITE); + + for (final String s : arrReportType) { + TextView reportTypeTv = new TextView(mContext); + reportTypeTv.setText(s); + reportTypeTv.setTextSize(17); + reportTypeTv.setTextColor(mContext.getResources().getColor(R.color.title)); + reportTypeTv.setBackgroundResource(R.drawable.textview_white_style); + reportTypeTv.setLayoutParams(new LinearLayout.LayoutParams((widthPixels * 9)/10, + LinearLayout.LayoutParams.WRAP_CONTENT)); + reportTypeTv.setPadding(DisplayUtils.dip2px(mContext, 20), DisplayUtils.dip2px(mContext, 12), + 0, DisplayUtils.dip2px(mContext, 12)); + container.addView(reportTypeTv); + + reportTypeTv.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + JSONObject jsonObject = new JSONObject(); + try { + jsonObject.put("comment_id", commentEntity.getId()); + jsonObject.put("reason", s); + } catch (JSONException e) { + e.printStackTrace(); + } + + PostCommentUtils.addReportData(mContext, jsonObject.toString(), true, + new PostCommentUtils.PostCommentListener() { + @Override + public void postSucced(JSONObject response) { + Utils.toast(mContext, "感谢您的举报"); + } + + @Override + public void postFailed(Throwable error) { + Utils.toast(mContext, "举报失败,请检查网络设置"); + } + }); + reportTypeDialog.cancel(); + } + }); + } + + reportTypeDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); + reportTypeDialog.setContentView(container); + reportTypeDialog.show(); + } + + } diff --git a/app/src/main/java/com/gh/common/util/MessageShareUtils.java b/app/src/main/java/com/gh/common/util/MessageShareUtils.java index 15ed1ae215..4514a8193c 100644 --- a/app/src/main/java/com/gh/common/util/MessageShareUtils.java +++ b/app/src/main/java/com/gh/common/util/MessageShareUtils.java @@ -447,11 +447,7 @@ public class MessageShareUtils { if (isToast) { Utils.toast(context,"成功保存到相册"); //刷新手机图片库 - Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); - Uri uri = Uri.fromFile(_file); - intent.setData(uri); - context.sendBroadcast(intent); - Utils.log("保存分享图片路径:" + _file.getAbsolutePath()); + refreshImage(_file, context); } } } @@ -469,4 +465,12 @@ public class MessageShareUtils { } } + public static void refreshImage(File _file, Context context) { + Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); + Uri uri = Uri.fromFile(_file); + intent.setData(uri); + context.sendBroadcast(intent); + Utils.log("保存分享图片路径:" + _file.getAbsolutePath()); + } + } diff --git a/app/src/main/java/com/gh/common/util/NewsUtils.java b/app/src/main/java/com/gh/common/util/NewsUtils.java index a81716772a..3ee1a6e2e9 100644 --- a/app/src/main/java/com/gh/common/util/NewsUtils.java +++ b/app/src/main/java/com/gh/common/util/NewsUtils.java @@ -35,6 +35,8 @@ public class NewsUtils { return R.drawable.textview_orange_up; } else if ("新游".equals(type)) { return R.drawable.textview_green_up; + } else if ("热门".equals(type) || "置顶".equals(type)) { + return R.drawable.textview_all_red_up; } else { return R.drawable.textview_blue_up; } @@ -98,8 +100,17 @@ public class NewsUtils { /** * 设置新闻类型 */ - public static void setNewsType(TextView textView, String type) { - textView.setText(type); + public static void setNewsType(TextView textView, String type, int priority, int position) { + if (priority != 0) { + if (position == 0) { + textView.setText("置顶"); + } else { + textView.setText("热门"); + } + } else { + textView.setText(type); + } + textView.setTextColor(Color.WHITE); if ("活动".equals(type)) { textView.setBackgroundResource(R.drawable.textview_orange_style); @@ -111,6 +122,10 @@ public class NewsUtils { textView.setBackgroundResource(R.drawable.textview_orange_style); } else if ("专题".equals(type)) { textView.setBackgroundResource(R.drawable.textview_blue_style); + } else if ("置顶".equals(type)) { + textView.setBackgroundResource(R.drawable.textview_all_red_style); + } else if ("热门".equals(type)){ + textView.setBackgroundResource(R.drawable.textview_all_red_style); } else { textView.setBackgroundResource(R.drawable.textview_blue_style); } diff --git a/app/src/main/java/com/gh/common/view/DownloadDialog.java b/app/src/main/java/com/gh/common/view/DownloadDialog.java index 5411711422..d2f95d0ad5 100644 --- a/app/src/main/java/com/gh/common/view/DownloadDialog.java +++ b/app/src/main/java/com/gh/common/view/DownloadDialog.java @@ -250,6 +250,8 @@ public class DownloadDialog implements OnCollectionCallBackListener { } } + apkList.add(new ApkEntity()); // 添加一个跳转投票 + dialog_ll_hint.removeAllViews(); int size = (int) Math.ceil(apkList.size() / (double) (row * column)); addHintPoint(dialog_ll_hint, size); diff --git a/app/src/main/java/com/gh/common/view/ZoomSimpleDraweeView.java b/app/src/main/java/com/gh/common/view/ZoomSimpleDraweeView.java index 96c588867e..6095926756 100644 --- a/app/src/main/java/com/gh/common/view/ZoomSimpleDraweeView.java +++ b/app/src/main/java/com/gh/common/view/ZoomSimpleDraweeView.java @@ -25,6 +25,7 @@ public class ZoomSimpleDraweeView extends SimpleDraweeView { private float mCurrentScale = 1f; private Matrix mCurrentMatrix; private setOnSingleClickListener mClickListener; + private setOnLongClickListener mLongClickListener; private float imgagePro = -1; // 图片宽高比 @@ -82,6 +83,14 @@ public class ZoomSimpleDraweeView extends SimpleDraweeView { return true; } + @Override + public void onLongPress(MotionEvent e) { + super.onLongPress(e); + if (mLongClickListener != null) { + mLongClickListener.onLongClick(); + } + } + @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { if (mCurrentScale > 1f) { @@ -273,6 +282,14 @@ public class ZoomSimpleDraweeView extends SimpleDraweeView { mClickListener = listener; } + public void setOnLongClickListener(setOnLongClickListener listener) { + mLongClickListener = listener; + } + + public interface setOnLongClickListener { + void onLongClick(); + } + public interface setOnSingleClickListener { void onClick(); } diff --git a/app/src/main/java/com/gh/gamecenter/GameNewsActivity.java b/app/src/main/java/com/gh/gamecenter/GameNewsActivity.java index ae1872e471..8fa1409215 100644 --- a/app/src/main/java/com/gh/gamecenter/GameNewsActivity.java +++ b/app/src/main/java/com/gh/gamecenter/GameNewsActivity.java @@ -5,6 +5,7 @@ import android.support.v4.util.ArrayMap; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; +import android.text.TextUtils; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; @@ -16,10 +17,16 @@ import com.gh.common.util.DisplayUtils; import com.gh.gamecenter.adapter.GameNewsAdapter; import com.gh.gamecenter.adapter.GameNewsTypeListAdapter; import com.gh.gamecenter.eventbus.EBTypeChange; +import com.gh.gamecenter.retrofit.Response; +import com.gh.gamecenter.retrofit.RetrofitManager; import java.util.ArrayList; +import java.util.List; import butterknife.BindView; +import retrofit2.adapter.rxjava.HttpException; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; /** * Created by LGT on 2016/8/29. @@ -37,7 +44,7 @@ public class GameNewsActivity extends BaseActivity implements View.OnClickListen private ArrayMap adapterMap; - private ArrayList typeList; + private List typeList; private String gameId; private String entrance; @@ -71,17 +78,14 @@ public class GameNewsActivity extends BaseActivity implements View.OnClickListen adapterMap = new ArrayMap<>(); - typeList = getIntent().getStringArrayListExtra("articleTypes"); - typeList.add(0, "全部"); + typeList = new ArrayList<>(); gameId = getIntent().getStringExtra("gameId"); game_news_list.setHasFixedSize(true); layoutManager = new LinearLayoutManager(this); game_news_list.setLayoutManager(layoutManager); - adapter = new GameNewsAdapter(this, typeList, game_news_list, gameId, "全部", entrance); - adapterMap.put("全部", adapter); - game_news_list.setAdapter(adapter); + game_news_list.setOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { @@ -100,7 +104,7 @@ public class GameNewsActivity extends BaseActivity implements View.OnClickListen @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); - if (newState == RecyclerView.SCROLL_STATE_IDLE + if (adapter != null && newState == RecyclerView.SCROLL_STATE_IDLE && layoutManager.findLastVisibleItemPosition() == adapter.getItemCount() - 1) { if (!adapter.isRemove() && !adapter.isLoading() && !adapter.isNetworkError()) { adapter.addList(adapter.getNewsList().size()); @@ -111,12 +115,6 @@ public class GameNewsActivity extends BaseActivity implements View.OnClickListen game_news_top_type_list.setHasFixedSize(true); game_news_top_type_list.setLayoutManager(new GridLayoutManager(this, 5)); - typeListAdapter = new GameNewsTypeListAdapter(typeList, "全部"); - game_news_top_type_list.setAdapter(typeListAdapter); - - ViewGroup.LayoutParams params = game_news_top_type_list.getLayoutParams(); - params.height = (int) Math.ceil(typeList.size() / 5f) * DisplayUtils.dip2px(this, 35)+ DisplayUtils.dip2px(this, 12); - game_news_top_type_list.setLayoutParams(params); //禁止由于滑动出现的阴影 game_news_top_type_list.setOnTouchListener(new View.OnTouchListener() { @@ -132,12 +130,47 @@ public class GameNewsActivity extends BaseActivity implements View.OnClickListen return false; } }); + + if (!TextUtils.isEmpty(gameId)) { + getGameArticleType(); + } + } + + private void getGameArticleType() { + RetrofitManager.getApi() + .getGameArticleType(gameId) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Response>(){ + @Override + public void onResponse(List response) { + super.onResponse(response); + typeList = response; + typeList.add(0, "全部"); + adapter = new GameNewsAdapter(GameNewsActivity.this, typeList, game_news_list, gameId, "全部", entrance); + adapterMap.put("全部", adapter); + game_news_list.setAdapter(adapter); + + typeListAdapter = new GameNewsTypeListAdapter(typeList, "全部"); + game_news_top_type_list.setAdapter(typeListAdapter); + + ViewGroup.LayoutParams params = game_news_top_type_list.getLayoutParams(); + params.height = (int) Math.ceil(typeList.size() / 5f) * DisplayUtils.dip2px(GameNewsActivity.this, 35) + + DisplayUtils.dip2px(GameNewsActivity.this, 12); + game_news_top_type_list.setLayoutParams(params); + } + + @Override + public void onFailure(HttpException e) { + super.onFailure(e); + } + }); } public void onEventMainThread(EBTypeChange change) { adapter = adapterMap.get(change.getType()); if (adapter == null) { - adapter = new GameNewsAdapter(this, typeList, game_news_list, gameId, change.getType(), entrance); + adapter = new GameNewsAdapter(GameNewsActivity.this, typeList, game_news_list, gameId, change.getType(), entrance); adapterMap.put(change.getType(), adapter); } game_news_list.setAdapter(adapter); diff --git a/app/src/main/java/com/gh/gamecenter/KaiFuActivity.java b/app/src/main/java/com/gh/gamecenter/KaiFuActivity.java index bcfddc27a1..9bf20b5e14 100644 --- a/app/src/main/java/com/gh/gamecenter/KaiFuActivity.java +++ b/app/src/main/java/com/gh/gamecenter/KaiFuActivity.java @@ -38,6 +38,7 @@ import rx.functions.Action1; /** * Created by khy on 2017/3/16. + * 首页-开服表 */ public class KaiFuActivity extends BaseActivity implements KaiFuDialogAdapter.OnKaiFuDialogCallBackListener , KaiFuAdapter.OnScrollToKaiFuIndex, SwipeRefreshLayout.OnRefreshListener{ @@ -153,6 +154,15 @@ public class KaiFuActivity extends BaseActivity implements KaiFuDialogAdapter.O } }); + mNoConnection.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + mAdapter.initKaiFuOffset(); + mNoConnection.setVisibility(View.GONE); + mPbLoading.setVisibility(View.VISIBLE); + } + }); + } private void initSelectGameDialog() { diff --git a/app/src/main/java/com/gh/gamecenter/MainActivity.java b/app/src/main/java/com/gh/gamecenter/MainActivity.java index 35168ea80c..b760646c4d 100644 --- a/app/src/main/java/com/gh/gamecenter/MainActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MainActivity.java @@ -40,6 +40,7 @@ import com.gh.common.util.PackageUtils; import com.gh.common.util.PlatformUtils; import com.gh.common.util.TokenUtils; import com.gh.common.util.TrafficUtils; +import com.gh.common.util.Utils; import com.gh.download.DataWatcher; import com.gh.download.DownloadEntity; import com.gh.download.DownloadManager; @@ -50,6 +51,7 @@ import com.gh.gamecenter.entity.ApkEntity; import com.gh.gamecenter.entity.GameDigestEntity; import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.entity.GameUpdateEntity; +import com.gh.gamecenter.entity.SuggestionTypeEntity; import com.gh.gamecenter.eventbus.EBDownloadStatus; import com.gh.gamecenter.eventbus.EBPackage; import com.gh.gamecenter.eventbus.EBShowDialog; @@ -62,13 +64,14 @@ import com.gh.gamecenter.manager.FilterManager; import com.gh.gamecenter.manager.GameManager; import com.gh.gamecenter.manager.PackageManager; import com.gh.gamecenter.manager.UpdateManager; +import com.gh.gamecenter.message.MessageFragment; import com.gh.gamecenter.news.NewsFragment; import com.gh.gamecenter.personal.PersonalFragment; import com.gh.gamecenter.retrofit.JSONObjectResponse; import com.gh.gamecenter.retrofit.ObservableUtil; import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.retrofit.RetrofitManager; -import com.gh.gamecenter.zixun.ZiXunFragment; +import com.gh.gamecenter.wenda.WenDaFragment; import org.json.JSONArray; import org.json.JSONObject; @@ -79,6 +82,7 @@ import java.util.Enumeration; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.concurrent.CountDownLatch; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; @@ -99,15 +103,21 @@ import rx.schedulers.Schedulers; */ public class MainActivity extends BaseFragmentActivity implements OnClickListener { - // private NewsFragment newsFragment; - private ZiXunFragment ziXunFragment; + private NewsFragment newsFragment; + private MessageFragment messageFragment; + private WenDaFragment wenDaFragment; +// private ZiXunFragment ziXunFragment; private PersonalFragment personalFragment; private GameFragment gameFragment; private ImageView ivGame; private ImageView ivNews; + private ImageView ivWenDa; + private ImageView ivMessage; private ImageView ivPersonal; private TextView tvGame; private TextView tvNews; + private TextView tvWenDa; + private TextView tvMessage; private TextView tvPersonal; private SharedPreferences sp; @@ -393,6 +403,47 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene if (sp.getBoolean("changeDefaultIcon", false) && sp.getInt("default_user_icon", 0) != 0) { postDefaultIcon(true, sp.getInt("default_user_icon", 0)); } + + getSuggestionType(); + } + + private void getSuggestionType() { + RetrofitManager + .getApi() + .getSuggestionType() + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Response(){ + @Override + public void onResponse(SuggestionTypeEntity response) { + super.onResponse(response); + Set suggestionGame = response.getGame(); + Set suggestionLibao = response.getLibao(); + Set suggestionPlugin = response.getPlugin(); + Set suggestionService = response.getService(); + SharedPreferences.Editor edit = sp.edit(); + if (suggestionGame.size() != 0) { + edit.putStringSet("suggestionGame", suggestionGame); + } + if (suggestionLibao.size() != 0) { + edit.putStringSet("suggestionLibao", suggestionLibao); + } + if (suggestionPlugin.size() != 0) { + edit.putStringSet("suggestionPlugin", suggestionPlugin); + } + if (suggestionService.size() != 0) { + edit.putStringSet("suggestionService", suggestionService); + } + edit.apply(); + } + + @Override + public void onError(Throwable e) { + super.onError(e); + Utils.log("反馈的问题选项::ERROR::" + e.toString()); + } + }); + } // 更新用户使用的助手信息 @@ -514,12 +565,18 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene private void initViews() { findViewById(R.id.main_ll_game).setOnClickListener(this); findViewById(R.id.main_ll_news).setOnClickListener(this); + findViewById(R.id.main_ll_wenda).setOnClickListener(this); + findViewById(R.id.main_ll_message).setOnClickListener(this); findViewById(R.id.main_ll_personal).setOnClickListener(this); ivGame = (ImageView) findViewById(R.id.main_iv_game); ivNews = (ImageView) findViewById(R.id.main_iv_news); + ivWenDa = (ImageView) findViewById(R.id.main_iv_wenda); + ivMessage = (ImageView) findViewById(R.id.main_iv_message); ivPersonal = (ImageView) findViewById(R.id.main_iv_personal); tvGame = (TextView) findViewById(R.id.main_tv_game); tvNews = (TextView) findViewById(R.id.main_tv_news); + tvWenDa = (TextView) findViewById(R.id.main_tv_wenda); + tvMessage = (TextView) findViewById(R.id.main_tv_message); tvPersonal = (TextView) findViewById(R.id.main_tv_personal); } @@ -895,8 +952,8 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene if (gameFragment != null) { gameFragment.setHint(searchHint); } - if (ziXunFragment != null) { - ziXunFragment.setHint(searchHint); + if (newsFragment != null) { + newsFragment.setHint(searchHint); } } } @@ -946,9 +1003,13 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene } else if (id == R.id.main_ll_news) { EventBus.getDefault().post(new EBUISwitch("MainActivity", 1)); setTabSelection(1); + } else if (id == R.id.main_ll_wenda) { + setTabSelection(2); + } else if (id == R.id.main_ll_message){ + setTabSelection(3); } else if (id == R.id.main_ll_personal) { EventBus.getDefault().post(new EBUISwitch("MainActivity", 2)); - setTabSelection(2); + setTabSelection(4); } } @@ -986,30 +1047,78 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene case 1: ivNews.setImageResource(R.drawable.ic_news_select); tvNews.setTextColor(getResources().getColor(R.color.theme)); - if (ziXunFragment == null) { + if (newsFragment == null) { List list = getSupportFragmentManager().getFragments(); if (list != null) { for (Fragment fragment : list) { if (fragment.getClass().equals(NewsFragment.class)) { - ziXunFragment = (ZiXunFragment) fragment; - transaction.show(ziXunFragment); + newsFragment = (NewsFragment) fragment; + transaction.show(newsFragment); break; } } } - if (ziXunFragment == null) { - ziXunFragment = new ZiXunFragment(); + if (newsFragment == null) { + newsFragment = new NewsFragment(); if (searchHint != null && searchHint.size() > 0) { - ziXunFragment.setHint(searchHint); + newsFragment.setHint(searchHint); } - transaction.add(R.id.main_content, ziXunFragment); + transaction.add(R.id.main_content, newsFragment); } } else { - transaction.show(ziXunFragment); + transaction.show(newsFragment); } currentTab = 1; break; case 2: + ivWenDa.setImageResource(R.drawable.ic_wenda_select); + tvWenDa.setTextColor(getResources().getColor(R.color.theme)); + if (wenDaFragment == null) { + List list = getSupportFragmentManager().getFragments(); + if (list != null) { + for (Fragment fragment : list) { + if (fragment.getClass().equals(WenDaFragment.class)) { + wenDaFragment = (WenDaFragment) fragment; + transaction.show(wenDaFragment); + break; + } + } + } + if (wenDaFragment == null) { + wenDaFragment = new WenDaFragment(); + transaction.add(R.id.main_content, wenDaFragment); + } + } else { + transaction.show(wenDaFragment); + } + currentTab = 2; + break; + + case 3: + ivMessage.setImageResource(R.drawable.ic_message_select); + tvMessage.setTextColor(getResources().getColor(R.color.theme)); + if (messageFragment == null) { + List list = getSupportFragmentManager().getFragments(); + if (list != null) { + for (Fragment fragment : list) { + if (fragment.getClass().equals(MessageFragment.class)) { + messageFragment = (MessageFragment) fragment; + transaction.show(messageFragment); + break; + } + } + } + if (messageFragment == null) { + messageFragment = new MessageFragment(); + transaction.add(R.id.main_content, messageFragment); + } + } else { + transaction.show(messageFragment); + } + currentTab = 3; + break; + + case 4: ivPersonal.setImageResource(R.drawable.ic_user_select); tvPersonal.setTextColor(getResources().getColor(R.color.theme)); if (personalFragment == null) { @@ -1030,7 +1139,7 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene } else { transaction.show(personalFragment); } - currentTab = 2; + currentTab = 4; break; default: break; @@ -1042,9 +1151,13 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene private void clearSelection() { ivGame.setImageResource(R.drawable.ic_game_unselect); ivNews.setImageResource(R.drawable.ic_news_unselect); + ivWenDa.setImageResource(R.drawable.ic_wenda_unselect); + ivMessage.setImageResource(R.drawable.ic_message_unselect); ivPersonal.setImageResource(R.drawable.ic_user_unselect); tvGame.setTextColor(Color.parseColor("#a7a8b2")); tvNews.setTextColor(Color.parseColor("#a7a8b2")); + tvWenDa.setTextColor(Color.parseColor("#a7a8b2")); + tvMessage.setTextColor(Color.parseColor("#a7a8b2")); tvPersonal.setTextColor(Color.parseColor("#a7a8b2")); } @@ -1056,8 +1169,14 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene if (gameFragment != null) { transaction.hide(gameFragment); } - if (ziXunFragment != null) { - transaction.hide(ziXunFragment); + if (wenDaFragment != null) { + transaction.hide(wenDaFragment); + } + if (messageFragment != null) { + transaction.hide(messageFragment); + } + if (newsFragment != null) { + transaction.hide(newsFragment); } List list = getSupportFragmentManager().getFragments(); diff --git a/app/src/main/java/com/gh/gamecenter/MessageDetailActivity.java b/app/src/main/java/com/gh/gamecenter/MessageDetailActivity.java index 3b7c51cb3f..3bd027ed0e 100644 --- a/app/src/main/java/com/gh/gamecenter/MessageDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MessageDetailActivity.java @@ -107,6 +107,8 @@ public class MessageDetailActivity extends BaseActivity implements MessageDetail mConcernEntity = (ConcernEntity) AppController.get("ConcernEntity", true); + mCommentEntity = (CommentEntity) AppController.get("CommentEntity", true); // 来自新闻详情-评论回复 + Intent intent = getIntent(); newsId = intent.getExtras().getString("newsId"); commentNum = intent.getExtras().getInt("commentNum"); diff --git a/app/src/main/java/com/gh/gamecenter/NewGameDetailActivity.java b/app/src/main/java/com/gh/gamecenter/NewGameDetailActivity.java index 023ebcc7ea..1753125089 100644 --- a/app/src/main/java/com/gh/gamecenter/NewGameDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/NewGameDetailActivity.java @@ -64,6 +64,7 @@ import rx.schedulers.Schedulers; /** * Created by khy on 2017/3/24. + * 游戏详情适配器 */ public class NewGameDetailActivity extends BaseFragmentActivity { @@ -82,7 +83,6 @@ public class NewGameDetailActivity extends BaseFragmentActivity { @BindView(R.id.gamedetail_tabbar_xinxi) TextView mTanBarXinXi; @BindView(R.id.gamedetail_tabbar_fuli_tv) TextView mTanBarFuLiTv; @BindView(R.id.gamedetail_tabbar_xinxi_tv) TextView mTanBarXinXiTv; - @BindView(R.id.gamedetail_suggest) ImageView mSuggestIv; @BindView(R.id.gamedetail_share) ImageView mShareIv; @BindView(R.id.detail_ll_bottom) LinearLayout mDownloadBottom; @@ -398,7 +398,7 @@ public class NewGameDetailActivity extends BaseFragmentActivity { } - @OnClick({R.id.detail_tv_download, R.id.detail_pb_progressbar, R.id.gamedetail_suggest + @OnClick({R.id.detail_tv_download, R.id.detail_pb_progressbar , R.id.detail_tv_per, R.id.gamedetail_tabbar_xinxi, R.id.gamedetail_tabbar_xinxi_tv , R.id.gamedetail_tabbar_fuli, R.id.gamedetail_tabbar_fuli_tv, R.id.gamedetail_share}) public void onClick(View v) { @@ -471,10 +471,6 @@ public class NewGameDetailActivity extends BaseFragmentActivity { showShare(url, mGameEntity.getName(), mGameEntity.getIcon(), null, mGameEntity.getTag()); } }); - } else if (v == mSuggestIv) { - Intent intent = new Intent(this, NewSuggestActivity.class); - intent.putExtra("suggestType", 1); - startActivity(intent); } } diff --git a/app/src/main/java/com/gh/gamecenter/NewSuggestActivity.java b/app/src/main/java/com/gh/gamecenter/NewSuggestActivity.java index a1fc27c2f7..308678043e 100644 --- a/app/src/main/java/com/gh/gamecenter/NewSuggestActivity.java +++ b/app/src/main/java/com/gh/gamecenter/NewSuggestActivity.java @@ -1,8 +1,13 @@ package com.gh.gamecenter; import android.app.Dialog; +import android.content.Context; import android.content.Intent; +import android.content.SharedPreferences; import android.database.Cursor; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Color; import android.graphics.Rect; import android.net.Uri; import android.os.Build; @@ -11,10 +16,12 @@ import android.os.Environment; import android.provider.MediaStore; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; +import android.telephony.TelephonyManager; import android.text.TextUtils; import android.view.View; import android.view.ViewTreeObserver; import android.view.Window; +import android.view.inputmethod.InputMethodManager; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.ProgressBar; @@ -23,21 +30,53 @@ import android.widget.ScrollView; import android.widget.TextView; import com.gh.base.BaseActivity; +import com.gh.common.constant.Config; +import com.gh.common.util.DialogUtils; +import com.gh.common.util.DisplayUtils; +import com.gh.common.util.FileUtils; +import com.gh.common.util.PackageUtils; +import com.gh.common.util.TokenUtils; import com.gh.common.util.Utils; import com.gh.gamecenter.entity.InstallGameEntity; +import com.gh.gamecenter.retrofit.JSONObjectResponse; +import com.gh.gamecenter.retrofit.RetrofitManager; import com.gh.gamecenter.suggest.SuggestPicAdapter; import com.gh.gamecenter.suggest.SuggestSelectGameAdapter; import com.gh.gamecenter.suggest.SuggestTypeAdapter; +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import butterknife.BindView; import butterknife.OnClick; +import okhttp3.MediaType; +import okhttp3.RequestBody; +import okhttp3.ResponseBody; +import retrofit2.adapter.rxjava.HttpException; +import rx.Observable; +import rx.Observer; +import rx.Subscriber; +import rx.android.schedulers.AndroidSchedulers; +import rx.functions.Func1; +import rx.schedulers.Schedulers; /** * Created by khy on 2017/3/31. @@ -71,9 +110,14 @@ public class NewSuggestActivity extends BaseActivity implements SuggestTypeAdapt private SuggestPicAdapter mAdapter; + private Dialog selectGameDialog; + private Dialog postDialog; + + private String[] arrType = {"普通反馈", "功能建议", "发生闪退", "游戏问题", "游戏收录", "文章投稿"}; + private int curType = -1; - private Dialog dialog; + private SharedPreferences sp; @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { @@ -107,17 +151,23 @@ public class NewSuggestActivity extends BaseActivity implements SuggestTypeAdapt super.onCreate(savedInstanceState); View view = View.inflate(this, R.layout.activity_suggest_new, null); init(view, "意见反馈"); - curType = getIntent().getExtras().getInt("suggestType"); - String suggestContent = getIntent().getExtras().getString("suggestContent"); + curType = getIntent().getExtras().getInt("suggestType"); + String suggestContent = getIntent().getExtras().getString("content"); + String suggestHintType = getIntent().getExtras().getString("suggestHintType"); + + sp = getSharedPreferences(Config.PREFERENCE, Context.MODE_PRIVATE); + + // 意见反馈类型 mTypeRv.setLayoutManager(new GridLayoutManager(this, 2){ @Override public boolean canScrollVertically() { return false; } }); - mTypeRv.setAdapter(new SuggestTypeAdapter(this, curType)); + mTypeRv.setAdapter(new SuggestTypeAdapter(this, curType, arrType)); + // 意见反馈上传图片列表 mSuggestPicRv.setLayoutManager(new GridLayoutManager(this, 5){ @Override public boolean canScrollVertically() { @@ -154,14 +204,106 @@ public class NewSuggestActivity extends BaseActivity implements SuggestTypeAdapt } else { initSuggest(curType); } + + if (TextUtils.isEmpty(suggestHintType)) { + return; + } + + switch (suggestHintType) { + case "plugin": + Set plugin = sp.getStringSet("suggestionPlugin", null); + if (plugin != null) { + showHintDialog(plugin); + } + break; + case "game": + Set game = sp.getStringSet("suggestionGame", null); + if (game != null) { + showHintDialog(game); + } + break; + case "libao": + Set libao = sp.getStringSet("suggestionLibao", null); + if (libao != null) { + showHintDialog(libao); + } + break; + case "service": + Set service = sp.getStringSet("suggestionService", null); + if (service != null) { + showHintDialog(service); + } + break; + } + } + + private void showHintDialog(Set dialogType) { + final Dialog dialog = new Dialog(NewSuggestActivity.this); + + LinearLayout container = new LinearLayout(NewSuggestActivity.this); + container.setOrientation(LinearLayout.VERTICAL); + container.setBackgroundColor(Color.WHITE); + container.setPadding(0, DisplayUtils.dip2px(NewSuggestActivity.this, 12), 0, DisplayUtils.dip2px(NewSuggestActivity.this, 12)); + + for (String s : dialogType) { + final TextView reportTv = new TextView(NewSuggestActivity.this); + reportTv.setPadding(DisplayUtils.dip2px(NewSuggestActivity.this, 20), DisplayUtils.dip2px(NewSuggestActivity.this, 12), + 0, DisplayUtils.dip2px(NewSuggestActivity.this, 12)); + reportTv.setText(s); + reportTv.setTextSize(17); + reportTv.setTextColor(NewSuggestActivity.this.getResources().getColor(R.color.title)); + reportTv.setBackgroundResource(R.drawable.textview_white_style); + int widthPixels = NewSuggestActivity.this.getResources().getDisplayMetrics().widthPixels; + reportTv.setLayoutParams(new LinearLayout.LayoutParams((widthPixels * 9)/10, + LinearLayout.LayoutParams.WRAP_CONTENT)); + container.addView(reportTv); + + reportTv.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + dialog.cancel(); + mSuggestContentEt.setText(mSuggestContentEt.getText().toString() + reportTv.getText().toString()); + } + }); + } + + dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); + dialog.setContentView(container); + dialog.show(); } @OnClick({ R.id.suggest_post_btn, R.id.suggest_select_game, R.id.suggest_game_text}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.suggest_post_btn: - Utils.log("=====" + readFromFile()); + if (TextUtils.isEmpty(mSuggestContentEt.getText().toString())) { + return; + } + String email = mSuggestEmailEt.getText().toString().trim(); + if (TextUtils.isEmpty(email)) { + showConfirmDialog(email); + } else if (isEmailAddress(email)) { + postDialog = new Dialog(NewSuggestActivity.this); + View content = View.inflate(NewSuggestActivity.this, R.layout.set_wait_dialog, null); + TextView message = (TextView) content + .findViewById(R.id.set_wait_message); + message.setText("正在反馈..."); + postDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); + postDialog.setContentView(content); + postDialog.setCanceledOnTouchOutside(false); + postDialog.setCancelable(false); + postDialog.show(); + + List fileList = mAdapter.getFileList(); + if (fileList != null && fileList.size() > 0) { + postPic(email); + } else { + initPostData(email, null); + } + } else { + toast("邮箱错误"); + } break; case R.id.suggest_select_game: showSelectDialog(); @@ -173,6 +315,233 @@ public class NewSuggestActivity extends BaseActivity implements SuggestTypeAdapt } } + // 弹出确认对话框 + private void showConfirmDialog(final String email) { + + DialogUtils.showWarningDialog(this, "温馨提示", "填写联系方式有助于我们更好地一对一解决您的问题,确定不填写吗?", + "直接提交", "我要填写", + new DialogUtils.ConfiremListener() { + @Override + public void onConfirem() { + mSuggestEmailEt.requestFocus(); + new Thread() { + public void run() { + try { + sleep(300); + } catch (InterruptedException e) { + + e.printStackTrace(); + } + InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); + imm.showSoftInput(mSuggestEmailEt, 0); + } + }.start(); + } + }, + new DialogUtils.CancelListener() { + @Override + public void onCancel() { + postDialog = new Dialog(NewSuggestActivity.this); + View view = View.inflate(NewSuggestActivity.this, + R.layout.set_wait_dialog, null); + TextView message = (TextView) view + .findViewById(R.id.set_wait_message); + message.setText("正在反馈..."); + postDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); + postDialog.setContentView(view); + postDialog.setCanceledOnTouchOutside(false); + postDialog.setCancelable(false); + postDialog.show(); + + List fileList = mAdapter.getFileList(); + if (fileList != null && fileList.size() > 0) { + postPic(email); + } else { + initPostData(email, null); + } + } + }); + } + + public boolean savePicture(String newPath, String filePath) { + BitmapFactory.Options options = new BitmapFactory.Options(); +// options.inSampleSize = 2; + Bitmap bitmap = BitmapFactory.decodeFile(filePath, options); + + File file = new File(newPath); + int quality = 80; + do { + try { + BufferedOutputStream bos = new BufferedOutputStream( + new FileOutputStream(file)); + bitmap.compress(Bitmap.CompressFormat.JPEG, quality, bos); + bos.flush(); + bos.close(); + } catch (IOException e) { + file.delete(); + e.printStackTrace(); + return false; + } + quality -= 10; + } while (file.length() > 81920); + return true; + } + + private void postPic(final String email) { + + final JSONArray picArray = new JSONArray(); + Observable.create(new Observable.OnSubscribe() { + @Override + public void call(Subscriber subscriber) { + String path; + int index = 0; + for (String s : mAdapter.getFileList()) { + path = getCacheDir() + File.separator + System.currentTimeMillis() + index + ".jpg"; + if (savePicture(path, s)) { + subscriber.onNext(FileUtils.uploadFile(Config.HOST + "support/user/suggestion/img", path, null)); + index ++; + } else { + subscriber.onNext(FileUtils.uploadFile(Config.HOST + "support/user/suggestion/img", s, null)); + } + } + subscriber.onCompleted(); + } + }).subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { + @Override + public void onCompleted() { + Utils.log("=========完成" ); + initPostData(email, picArray); + } + + @Override + public void onError(Throwable e) { + Utils.log("=========错误" + e.toString()); + } + + @Override + public void onNext(JSONObject result) { + if (result != null) { + try { + Utils.log("===========" + result); + int statusCode = result.getInt("statusCode"); + if (statusCode == HttpURLConnection.HTTP_OK) { + picArray.put(result.getString("img")); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + } + }); + } + + private void initPostData(String email, JSONArray picArray) { + Map params = new HashMap<>(); + params.put("message", mSuggestContentEt.getText().toString().trim()); + params.put("from", email); + params.put("ghversion", PackageUtils.getVersionName(this)); + params.put("channel", (String) PackageUtils.getMetaData(this, getPackageName(), "TD_CHANNEL_ID")); + params.put("type", android.os.Build.MODEL); + params.put("sdk", String.valueOf(android.os.Build.VERSION.SDK_INT)); + params.put("version", android.os.Build.VERSION.RELEASE); + params.put("source", "光环助手"); + params.put("imei", ((TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId()); + if (curType > 0) { + params.put("suggestion_type", arrType[curType - 1]); + } + if (curType == 3) { + params.put("log", readFromFile()); + } + + JSONObject jsonObject = new JSONObject(params); + + if (picArray != null && picArray.length() > 0) { + try { + jsonObject.put("pic", picArray); + } catch (JSONException e) { + e.printStackTrace(); + } + } + + RequestBody body = RequestBody.create(MediaType.parse("application/json"), + jsonObject.toString()); + + Utils.log("=======postBody" + jsonObject.toString()); + + sendSuggestion(body, true); + } + + + private void sendSuggestion(final RequestBody body, boolean isCheck) { + + TokenUtils.getToken(NewSuggestActivity.this, isCheck).flatMap(new Func1>() { + @Override + public Observable call(String token) { + return RetrofitManager.getApi().postSuggestion(body, token); + } + }).subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new JSONObjectResponse(){ + @Override + public void onResponse(JSONObject response) { + if (postDialog != null) { + postDialog.dismiss(); + } + Utils.log("======onResponse" + response.toString()); + if (response.length() != 0) { + try { + if ("ok".equals(response.getString("status"))) { + + toast("提交成功,感谢您的反馈!"); + setResult(0x122); + finish(); + } else { + toast("提交失败,请稍后尝试!"); + } + } catch (JSONException e) { + e.printStackTrace(); + } + } else { + toast("提交失败,请稍后尝试!"); + } + } + + @Override + public void onError(Throwable e) { + super.onError(e); + Utils.log("======ERROR" + e.toString()); + + } + + @Override + public void onFailure(HttpException e) { + try { + if (e != null) { + String string = e.response().errorBody().string(); + Utils.log("===========onFailure" + string); + } + } catch (IOException e1) { + e1.printStackTrace(); + } + + + if (e != null && e.code() == 401) { + sendSuggestion(body, false); + return; + } else { + if (postDialog != null) { + postDialog.dismiss(); + } + + toast("提交失败,请检查网络状态"); + } + } + }); + + } + private void showSelectDialog() { View view = View.inflate(this, R.layout.dialog_suggest_select_game, null); RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.dialog_suggest_game_rv); @@ -181,16 +550,16 @@ public class NewSuggestActivity extends BaseActivity implements SuggestTypeAdapt recyclerView.setLayoutManager(new GridLayoutManager(this, 4)); recyclerView.setAdapter(new SuggestSelectGameAdapter(this, pb)); - dialog = new Dialog(this); - dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); - dialog.setCanceledOnTouchOutside(false); - dialog.setContentView(view); - dialog.show(); + selectGameDialog = new Dialog(this); + selectGameDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); + selectGameDialog.setCanceledOnTouchOutside(false); + selectGameDialog.setContentView(view); + selectGameDialog.show(); back.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - dialog.cancel(); + selectGameDialog.cancel(); } }); } @@ -254,8 +623,8 @@ public class NewSuggestActivity extends BaseActivity implements SuggestTypeAdapt @Override public void loadDone(Object obj) { super.loadDone(obj); - if (dialog != null) { - dialog.cancel(); + if (selectGameDialog != null) { + selectGameDialog.cancel(); } mSuggestGameLl.setVisibility(View.GONE); @@ -298,4 +667,11 @@ public class NewSuggestActivity extends BaseActivity implements SuggestTypeAdapt return "SD Card error"; } } + + private boolean isEmailAddress(String email) { + Pattern p = Pattern + .compile("^\\s*\\w+(?:\\.{0,1}[\\w-]+)*@[a-zA-Z0-9]+(?:[-.][a-zA-Z0-9]+)*\\.[a-zA-Z]+\\s*$"); + Matcher m = p.matcher(email); + return m.matches(); + } } diff --git a/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java b/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java index c549d72f03..dc2bd656b4 100644 --- a/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java @@ -34,6 +34,7 @@ import com.gh.common.util.NetworkUtils; import com.gh.common.util.PackageUtils; import com.gh.common.util.ShareUtils; import com.gh.common.view.DownloadDialog; +import com.gh.common.view.VerticalItemDecoration; import com.gh.download.DataWatcher; import com.gh.download.DownloadEntity; import com.gh.download.DownloadManager; @@ -157,6 +158,7 @@ public class NewsDetailActivity extends BaseActivity implements OnClickListener detail_rv_show.setHasFixedSize(true); detail_rv_show.setLayoutManager(new LinearLayoutManager(this)); + detail_rv_show.addItemDecoration(new VerticalItemDecoration(this, 8, false)); adapter = new NewsDetailAdapter(this, entrance); detail_rv_show.setAdapter(adapter); diff --git a/app/src/main/java/com/gh/gamecenter/SkipActivity.java b/app/src/main/java/com/gh/gamecenter/SkipActivity.java index 25a78dec8f..1f67f98846 100644 --- a/app/src/main/java/com/gh/gamecenter/SkipActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SkipActivity.java @@ -47,7 +47,8 @@ public class SkipActivity extends BaseActivity { + "-" + PlatformUtils.getInstance(this).getPlatformName(uri.getQueryParameter("platform")) + "-V" + uri.getQueryParameter("version") + "】"; intent.putExtra("content", content); - intent.setClass(this, SuggestionActivity.class); + intent.putExtra("suggestHintType", "plugin"); + intent.setClass(this, NewSuggestActivity.class); } else if ("download".equals(host)) { intent.setClass(this, DownloadManagerActivity.class); intent.putExtra("gameId", id); diff --git a/app/src/main/java/com/gh/gamecenter/SubjectActivity.java b/app/src/main/java/com/gh/gamecenter/SubjectActivity.java index c3655d2374..c0c9e553dc 100644 --- a/app/src/main/java/com/gh/gamecenter/SubjectActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SubjectActivity.java @@ -172,6 +172,9 @@ public class SubjectActivity extends BaseActivity implements SubjectTypeAdapter @Override public void loadDone(Object obj) { super.loadDone(obj); + // 初始化顶部分类标签 + if (!type.equals("全部")) return; + ArrayList gameType = (ArrayList) obj; gameType.add(0, "全部"); ViewGroup.LayoutParams params = subject_type_list.getLayoutParams(); diff --git a/app/src/main/java/com/gh/gamecenter/SuggestSelectActivity.java b/app/src/main/java/com/gh/gamecenter/SuggestSelectActivity.java index eba69ca6d1..ca9cdd43ce 100644 --- a/app/src/main/java/com/gh/gamecenter/SuggestSelectActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SuggestSelectActivity.java @@ -21,6 +21,14 @@ public class SuggestSelectActivity extends BaseActivity { @BindView(R.id.suggest_type5) RelativeLayout mType5; @BindView(R.id.suggest_type6) RelativeLayout mType6; + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (requestCode == 0x121 && resultCode == 0x122) { + finish(); + } + } + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -55,7 +63,7 @@ public class SuggestSelectActivity extends BaseActivity { Intent intent = new Intent(this, NewSuggestActivity.class); intent.putExtra("suggestType", type); - startActivity(intent); + startActivityForResult(intent, 0x121); } } diff --git a/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java b/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java index 3998031a4b..71ba6608b3 100644 --- a/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java @@ -182,7 +182,7 @@ public class SuggestionActivity extends BaseActivity implements OnClickListener RequestBody body = RequestBody.create(MediaType.parse("application/json"), new JSONObject(params).toString()); - RetrofitManager.getApi().postSuggestion(body) + RetrofitManager.getApi().postSuggestion(body, null) // TODO 接口改变 .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new JSONObjectResponse() { diff --git a/app/src/main/java/com/gh/gamecenter/ViewImageActivity.java b/app/src/main/java/com/gh/gamecenter/ViewImageActivity.java index 24d51595ba..8a62797405 100644 --- a/app/src/main/java/com/gh/gamecenter/ViewImageActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ViewImageActivity.java @@ -1,9 +1,13 @@ package com.gh.gamecenter; +import android.app.Dialog; import android.content.res.Configuration; +import android.graphics.Bitmap; +import android.graphics.Color; import android.graphics.drawable.Animatable; import android.net.Uri; import android.os.Bundle; +import android.os.Environment; import android.os.Handler; import android.os.Message; import android.support.v4.view.PagerAdapter; @@ -11,23 +15,37 @@ import android.support.v4.view.ViewPager.OnPageChangeListener; import android.util.DisplayMetrics; import android.view.View; import android.view.ViewGroup; +import android.view.Window; +import android.widget.LinearLayout; import android.widget.RelativeLayout; +import android.widget.TextView; +import com.facebook.common.executors.CallerThreadExecutor; +import com.facebook.common.references.CloseableReference; +import com.facebook.datasource.DataSource; import com.facebook.drawee.backends.pipeline.Fresco; import com.facebook.drawee.controller.BaseControllerListener; import com.facebook.drawee.drawable.ScalingUtils; import com.facebook.drawee.interfaces.DraweeController; import com.facebook.imagepipeline.core.ImagePipeline; +import com.facebook.imagepipeline.datasource.BaseBitmapDataSubscriber; +import com.facebook.imagepipeline.image.CloseableImage; import com.facebook.imagepipeline.image.ImageInfo; +import com.facebook.imagepipeline.request.ImageRequest; +import com.facebook.imagepipeline.request.ImageRequestBuilder; import com.gc.materialdesign.views.ProgressBarCircularIndeterminate; import com.gh.base.BaseActivity; import com.gh.common.util.DisplayUtils; import com.gh.common.util.ImageUtils; +import com.gh.common.util.MessageShareUtils; +import com.gh.common.util.Utils; import com.gh.common.view.Gh_RelativeLayout; import com.gh.common.view.Gh_RelativeLayout.OnSingleTapListener; import com.gh.common.view.Gh_ViewPager; import com.gh.common.view.ZoomSimpleDraweeView; +import java.io.File; +import java.io.FileOutputStream; import java.io.IOException; import java.net.HttpURLConnection; import java.net.URL; @@ -188,11 +206,110 @@ public class ViewImageActivity extends BaseActivity implements OnPageChangeListe } }); + //长按 + imageView.setOnLongClickListener(new ZoomSimpleDraweeView.setOnLongClickListener() { + @Override + public void onLongClick() { + final Dialog dialog = new Dialog(ViewImageActivity.this); + + LinearLayout container = new LinearLayout(ViewImageActivity.this); + container.setOrientation(LinearLayout.VERTICAL); + container.setBackgroundColor(Color.WHITE); + + final TextView reportTv = new TextView(ViewImageActivity.this); + reportTv.setPadding(DisplayUtils.dip2px(ViewImageActivity.this, 20), DisplayUtils.dip2px(ViewImageActivity.this, 12), + 0, DisplayUtils.dip2px(ViewImageActivity.this, 12)); + reportTv.setText("保存图片"); + reportTv.setTextSize(17); + reportTv.setTextColor(ViewImageActivity.this.getResources().getColor(R.color.title)); + reportTv.setBackgroundResource(R.drawable.textview_white_style); + int widthPixels = ViewImageActivity.this.getResources().getDisplayMetrics().widthPixels; + reportTv.setLayoutParams(new LinearLayout.LayoutParams((widthPixels * 9)/10, + LinearLayout.LayoutParams.WRAP_CONTENT)); + container.addView(reportTv); + + dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); + dialog.setContentView(container); + dialog.show(); + + reportTv.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + findImageBM(); + dialog.cancel(); + } + }); + } + }); + view.setTag(position); container.addView(view); return view; } + private void findImageBM() { + String key = urls.get(viewimage_vp_show.getCurrentItem()); + String hdKey = "http://image.ghzhushou.com/pic/hq" + key.substring(key.lastIndexOf("/")); + ImagePipeline imagePipeline = Fresco.getImagePipeline(); + String curUrl = null; + + if (imagePipeline.isInBitmapMemoryCache(Uri.parse(hdKey))) { + curUrl = hdKey; + } else if (imagePipeline.isInBitmapMemoryCache(Uri.parse(key))){ + curUrl = key; + } else { + return; + } + + ImageRequest imageRequest = ImageRequestBuilder + .newBuilderWithSource(Uri.parse(key)) + .setProgressiveRenderingEnabled(true) + .build(); + + DataSource> + dataSource = imagePipeline.fetchDecodedImage(imageRequest, ViewImageActivity.this); + final String finalCurUrl = curUrl; + dataSource.subscribe(new BaseBitmapDataSubscriber() { + @Override + protected void onNewResultImpl(Bitmap bitmap) { + saveImage(bitmap, finalCurUrl); + } + + @Override + protected void onFailureImpl(DataSource> dataSource) { + + } + }, CallerThreadExecutor.getInstance()); + } + + private void saveImage(Bitmap bitmap, String curUrl) { + + String fileName = curUrl.substring(curUrl.lastIndexOf("/")); + String savePath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pictures/ghzhushou/"; + + try { + File file = new File(savePath); + if (!file.exists()) { + file.mkdirs(); + } + + File f = new File(savePath, fileName); + if (f.exists()) { + f.delete(); + } + + FileOutputStream out = new FileOutputStream(f); + bitmap.compress(Bitmap.CompressFormat.PNG, 90, out); + out.flush(); + out.close(); + Utils.log("========保存成功"); + MessageShareUtils.refreshImage(new File(savePath), ViewImageActivity.this); + } catch (IOException e) { + Utils.log("========保存失败" + e.toString()); + System.out.println(e); + } + } + @Override public boolean isViewFromObject(View view, Object object) { return view == object; diff --git a/app/src/main/java/com/gh/gamecenter/VoteActivity.java b/app/src/main/java/com/gh/gamecenter/VoteActivity.java new file mode 100644 index 0000000000..a61392b7ec --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/VoteActivity.java @@ -0,0 +1,172 @@ +package com.gh.gamecenter; + +import android.app.Dialog; +import android.content.Context; +import android.content.DialogInterface; +import android.os.Bundle; +import android.support.v4.widget.SwipeRefreshLayout; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.text.TextUtils; +import android.view.KeyEvent; +import android.view.View; +import android.view.Window; +import android.view.inputmethod.EditorInfo; +import android.view.inputmethod.InputMethodManager; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.RelativeLayout; +import android.widget.TextView; +import android.widget.Toast; + +import com.gc.materialdesign.views.ProgressBarCircularIndeterminate; +import com.gh.base.BaseActivity; +import com.gh.common.util.DisplayUtils; +import com.gh.gamecenter.adapter.VoteAdapter; + +import butterknife.BindView; + +/** + * Created by khy on 2017/4/11. + * 求版本投票页面 + */ +public class VoteActivity extends BaseActivity { + + @BindView(R.id.vote_rv) + RecyclerView mVoteRv; + @BindView(R.id.vote_refresh) + SwipeRefreshLayout mVoteRefresh; + @BindView(R.id.vote_loading) + ProgressBarCircularIndeterminate mVoteLoading; + @BindView(R.id.reuse_no_connection) + LinearLayout mNoConnection; + @BindView(R.id.vote_add_tv) + TextView mAddTv; + + private ImageView addVote; + + private VoteAdapter mAdapter; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + String gameName = getIntent().getExtras().getString("gameName"); + + View view = View.inflate(this, R.layout.activity_vote, null); + + // 添加添加图标 + addVote = new ImageView(this); + addVote.setImageResource(R.drawable.add_vote_icon); + addVote.setPadding(DisplayUtils.dip2px(this, 13), DisplayUtils.dip2px(this, 15) + , DisplayUtils.dip2px(this, 15), DisplayUtils.dip2px(this, 15)); + RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams( + DisplayUtils.dip2px(this, 48), DisplayUtils.dip2px(this, 48)); + params.addRule(RelativeLayout.CENTER_VERTICAL); + params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); + RelativeLayout reuse_actionbar = (RelativeLayout) view.findViewById( + R.id.reuse_actionbar); + reuse_actionbar.addView(addVote, params); + init(view, gameName + " - 求版本"); + + + addVote.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + showAddVoteDialog(); + } + }); + + + mVoteRv.setLayoutManager(new LinearLayoutManager(this)); + mAdapter = new VoteAdapter(this); + mVoteRv.setAdapter(mAdapter); + + mAddTv.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + showAddVoteDialog(); + } + }); + + } + + private void showAddVoteDialog() { + final Dialog dialog = new Dialog(VoteActivity.this); + + View view = View.inflate(VoteActivity.this, R.layout.dialog_modify_nickname, null); + + TextView title = (TextView) view.findViewById(R.id.dialog_nickname_title); + title.setText("输入选项名字"); + + final EditText input = (EditText) view.findViewById(R.id.dialog_nickname_input); + input.setHint(""); + input.setSelection(input.getText().length()); + + input.setOnEditorActionListener(new TextView.OnEditorActionListener() { + @Override + public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { + if (actionId == EditorInfo.IME_ACTION_DONE) { + String nickname = input.getText().toString().trim(); + if (TextUtils.isEmpty(nickname)) { + Toast.makeText(VoteActivity.this, "请输入名字", Toast.LENGTH_SHORT).show(); + return true; + } + + dialog.dismiss(); + return true; + } + return false; + } + }); + + // 取消按钮 + TextView cancel = (TextView) view.findViewById(R.id.dialog_nickname_cannel); + cancel.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + dialog.dismiss(); + } + }); + + // 确定按钮 + TextView confirm = (TextView) view.findViewById(R.id.dialog_nickname_confirm); + confirm.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + String nickname = input.getText().toString().trim(); + if (TextUtils.isEmpty(nickname)) { + Toast.makeText(VoteActivity.this, "请输入名字", Toast.LENGTH_SHORT).show(); + return; + } + dialog.dismiss(); + } + }); + + dialog.setOnDismissListener(new DialogInterface.OnDismissListener() { + @Override + public void onDismiss(DialogInterface dialog) { + InputMethodManager imm = (InputMethodManager) VoteActivity.this.getSystemService(Context.INPUT_METHOD_SERVICE); + imm.hideSoftInputFromWindow(input.getWindowToken(), 0); + } + }); + + dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); + dialog.setContentView(view); + dialog.show(); + + new Thread() { + @Override + public void run() { + try { + sleep(300); + } catch (InterruptedException e) { + e.printStackTrace(); + } + InputMethodManager imm = (InputMethodManager) VoteActivity.this + .getSystemService(Context.INPUT_METHOD_SERVICE); + imm.showSoftInput(input, InputMethodManager.SHOW_FORCED); + } + }.start(); + } +} diff --git a/app/src/main/java/com/gh/gamecenter/adapter/GameNewsAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/GameNewsAdapter.java index a0d9048ca7..a9380f0785 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/GameNewsAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/GameNewsAdapter.java @@ -46,7 +46,7 @@ public class GameNewsAdapter extends RecyclerView.Adapter { private RecyclerView game_news_list; private ArrayList newsList; - private ArrayList typeList; + private List typeList; private String gameId; private String newsType; @@ -58,7 +58,7 @@ public class GameNewsAdapter extends RecyclerView.Adapter { private boolean isOpenKeyBoard; public GameNewsAdapter(Context context, - ArrayList tList, + List tList, RecyclerView game_news_list, String id, String type, diff --git a/app/src/main/java/com/gh/gamecenter/adapter/GameNewsTypeListAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/GameNewsTypeListAdapter.java index 01caa6d3d0..be44f847ba 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/GameNewsTypeListAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/GameNewsTypeListAdapter.java @@ -12,7 +12,7 @@ import com.gh.gamecenter.R; import com.gh.gamecenter.adapter.viewholder.GameNewsTypeViewHolder; import com.gh.gamecenter.eventbus.EBTypeChange; -import java.util.ArrayList; +import java.util.List; import de.greenrobot.event.EventBus; @@ -21,13 +21,13 @@ import de.greenrobot.event.EventBus; */ public class GameNewsTypeListAdapter extends RecyclerView.Adapter { - private ArrayList typeList; + private List typeList; private String newsType; private int currentPosition; - public GameNewsTypeListAdapter(ArrayList tList, String type) { + public GameNewsTypeListAdapter(List tList, String type) { typeList = tList; diff --git a/app/src/main/java/com/gh/gamecenter/adapter/LibaoDetailAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/LibaoDetailAdapter.java index 0eb26e67e6..c398bca249 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/LibaoDetailAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/LibaoDetailAdapter.java @@ -1,6 +1,7 @@ package com.gh.gamecenter.adapter; import android.content.Context; +import android.content.Intent; import android.graphics.Color; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; @@ -18,7 +19,9 @@ import com.gh.common.util.ImageUtils; import com.gh.common.util.LibaoUtils; import com.gh.common.util.PlatformUtils; import com.gh.gamecenter.LibaoDetailActivity; +import com.gh.gamecenter.NewSuggestActivity; import com.gh.gamecenter.R; +import com.gh.gamecenter.adapter.viewholder.FooterViewHolder; import com.gh.gamecenter.adapter.viewholder.LibaoDetailTopViewHolder; import com.gh.gamecenter.db.LibaoDao; import com.gh.gamecenter.db.info.LibaoInfo; @@ -93,6 +96,9 @@ public class LibaoDetailAdapter extends RecyclerView.Adapter dialogType = new ArrayList<>(); - dialogType.add("回复"); - dialogType.add("复制"); - dialogType.add("举报"); - - if (commentEntity.getParent() != null) { - dialogType.add("查看对话"); - } - - for (String s : dialogType) { - final TextView reportTv = new TextView(mContext); - reportTv.setPadding(DisplayUtils.dip2px(mContext, 20), DisplayUtils.dip2px(mContext, 12), - 0, DisplayUtils.dip2px(mContext, 12)); - reportTv.setText(s); - reportTv.setTextSize(17); - reportTv.setTextColor(mContext.getResources().getColor(R.color.title)); - reportTv.setBackgroundResource(R.drawable.textview_white_style); - int widthPixels = mContext.getResources().getDisplayMetrics().widthPixels; - reportTv.setLayoutParams(new LinearLayout.LayoutParams((widthPixels * 9)/10, - LinearLayout.LayoutParams.WRAP_CONTENT)); - container.addView(reportTv); - - reportTv.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - dialog.cancel(); - switch (reportTv.getText().toString()) { - case "回复": - mCallBackListener.showSoftInput(commentEntity); - break; - case "复制": - LibaoUtils.copyLink(commentEntity.getContent(), mContext); - break; - case "举报": - showReportTypeDialog(commentEntity); - break; - case "查看对话": - Intent intent = new Intent(mContext, CommentDetailActivity.class); - intent.putExtra("commentId", commentEntity.getId()); - mContext.startActivity(intent); - break; - } - } - }); - } - dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); - dialog.setContentView(container); - dialog.show(); - - } - - private void showReportTypeDialog(final CommentEntity commentEntity) { - final String[] arrReportType = new String[]{"垃圾广告营销", "恶意攻击谩骂", "淫秽色情信息", - "违法有害信息", "其它"}; - int widthPixels = mContext.getResources().getDisplayMetrics().widthPixels; - - final Dialog reportTypeDialog = new Dialog(mContext); - LinearLayout container = new LinearLayout(mContext); - container.setOrientation(LinearLayout.VERTICAL); - container.setPadding(0, DisplayUtils.dip2px(mContext, 12), 0, DisplayUtils.dip2px(mContext, 12)); - container.setBackgroundColor(Color.WHITE); - - for (final String s : arrReportType) { - TextView reportTypeTv = new TextView(mContext); - reportTypeTv.setText(s); - reportTypeTv.setTextSize(17); - reportTypeTv.setTextColor(mContext.getResources().getColor(R.color.title)); - reportTypeTv.setBackgroundResource(R.drawable.textview_white_style); - reportTypeTv.setLayoutParams(new LinearLayout.LayoutParams((widthPixels * 9)/10, - LinearLayout.LayoutParams.WRAP_CONTENT)); - reportTypeTv.setPadding(DisplayUtils.dip2px(mContext, 20), DisplayUtils.dip2px(mContext, 12), - 0, DisplayUtils.dip2px(mContext, 12)); - container.addView(reportTypeTv); - - reportTypeTv.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - JSONObject jsonObject = new JSONObject(); - try { - jsonObject.put("comment_id", commentEntity.getId()); - jsonObject.put("reason", s); - } catch (JSONException e) { - e.printStackTrace(); - } - - PostCommentUtils.addReportData(mContext, jsonObject.toString(), true, - new PostCommentUtils.PostCommentListener() { - @Override - public void postSucced(JSONObject response) { - Utils.toast(mContext, "感谢您的举报"); - } - - @Override - public void postFailed(Throwable error) { - Utils.toast(mContext, "举报失败,请检查网络设置"); - } - }); - reportTypeDialog.cancel(); - } - }); - } - - reportTypeDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); - reportTypeDialog.setContentView(container); - reportTypeDialog.show(); - } private void statNewsViews(final String news_id) { RetrofitManager.getData().postNewsViews(news_id) diff --git a/app/src/main/java/com/gh/gamecenter/adapter/NewsNormalAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/NewsNormalAdapter.java index e582b8f04f..5d0bbf2e98 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/NewsNormalAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/NewsNormalAdapter.java @@ -263,7 +263,7 @@ public class NewsNormalAdapter extends RecyclerView.Adapter { public void onBindViewHolder(final PlatformViewHolder viewHolder, int position) { final ApkEntity apkEntity = platforms.get((row * column) * adapterPosition + position); + if (apkEntity == null || TextUtils.isEmpty(apkEntity.getPackageName())) { + viewHolder.download_item_iv_pic.setVisibility(View.VISIBLE); + viewHolder.download_item_tv_hint.setVisibility(View.GONE); + viewHolder.download_item_progressbar.setVisibility(View.GONE); + viewHolder.download_item_tv_name.setVisibility(View.GONE); + viewHolder.download_item_tv_status.setVisibility(View.GONE); + viewHolder.download_item_iv_pic.setImageURI(Uri.parse("res:///" + R.drawable.platform_vote)); + viewHolder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(context, VoteActivity.class); + intent.putExtra("gameName", gameEntity.getName()); + context.startActivity(intent); + } + }); + return; + } + if (apkEntity.getApkCollection() == null) { // 非合集 viewHolder.itemView.setOnClickListener(new View.OnClickListener() { diff --git a/app/src/main/java/com/gh/gamecenter/adapter/SubjectAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/SubjectAdapter.java index df3b1e3484..335a47af20 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/SubjectAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/SubjectAdapter.java @@ -139,7 +139,7 @@ public class SubjectAdapter extends RecyclerView.Adapter { + + private Context mContext; + + private float mPbwidth; //进度条原始最大宽度 + + private List voteList; + + + public VoteAdapter(VoteActivity activity) { + this.mContext = activity; + mPbwidth = (float) (activity.getResources().getDisplayMetrics().widthPixels * 0.65); + + voteList = new ArrayList<>(); + + float max = 1000; + for (int i = 0; i < 50; i++) { + voteList.add(max); + max = max - 20; + } + } + + @Override + public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = LayoutInflater.from(mContext).inflate(R.layout.vote_item, parent, false); + if (mPbwidth == -1) { + final View pb = view.findViewById(R.id.progressbar); + pb.post(new Runnable() { + @Override + public void run() { + mPbwidth = pb.getWidth(); + } + }); + } + return new VoteViewHolder(view); + } + + @Override + public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { + if (holder instanceof VoteViewHolder) { + VoteViewHolder viewHolder = (VoteViewHolder) holder; + + viewHolder.voteBtn.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + + } + }); + + View progressbar = viewHolder.progressbar; + ViewGroup.LayoutParams layoutParams = progressbar.getLayoutParams(); + if (position > 0) { + + float maxSize = voteList.get(0); + + float curSize = voteList.get(position); + + float f = curSize/maxSize; + Utils.log(maxSize + "======="+ curSize +"=======" + f + "====" + (int) (mPbwidth/f)); + layoutParams.width = (int) (mPbwidth * f); + + } else { + layoutParams.width = (int) mPbwidth; + Utils.log("==============" + mPbwidth); + } + + viewHolder.count.setText(voteList.get(position) + "票"); + progressbar.setLayoutParams(layoutParams); + } + } + + @Override + public int getItemCount() { + return voteList.size(); + } +} diff --git a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/VoteViewHolder.java b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/VoteViewHolder.java new file mode 100644 index 0000000000..b6f43500db --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/VoteViewHolder.java @@ -0,0 +1,31 @@ +package com.gh.gamecenter.adapter.viewholder; + +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.widget.TextView; + +import com.gh.gamecenter.R; + +import butterknife.BindView; +import butterknife.ButterKnife; + +/** + * Created by khy on 2017/4/11. + * 投票ITEM + */ +public class VoteViewHolder extends RecyclerView.ViewHolder { + + @BindView(R.id.vote_item_name) + public TextView name; + @BindView(R.id.vote_item_btn) + public TextView voteBtn; + @BindView(R.id.progressbar) + public View progressbar; + @BindView(R.id.vote_item_count) + public TextView count; + + public VoteViewHolder(View itemView) { + super(itemView); + ButterKnife.bind(this, itemView); + } +} diff --git a/app/src/main/java/com/gh/gamecenter/db/DatabaseHelper.java b/app/src/main/java/com/gh/gamecenter/db/DatabaseHelper.java index 2327fa3d6a..1c71d4c2e1 100644 --- a/app/src/main/java/com/gh/gamecenter/db/DatabaseHelper.java +++ b/app/src/main/java/com/gh/gamecenter/db/DatabaseHelper.java @@ -11,6 +11,7 @@ import com.gh.gamecenter.db.info.ConcernInfo; import com.gh.gamecenter.db.info.DataCollectionInfo; import com.gh.gamecenter.db.info.FilterInfo; import com.gh.gamecenter.db.info.GameInfo; +import com.gh.gamecenter.db.info.KeFuInfo; import com.gh.gamecenter.db.info.LibaoInfo; import com.gh.gamecenter.db.info.PackageInfo; import com.gh.gamecenter.db.info.SearchHistoryInfo; @@ -25,7 +26,7 @@ import java.sql.SQLException; public class DatabaseHelper extends OrmLiteSqliteOpenHelper { private static final String DATABASE_NAME = "gh_assist.db"; - private static final int DATABASE_VERSION = 5; + private static final int DATABASE_VERSION = 6; private static DatabaseHelper instance; private ArrayMap daos = new ArrayMap<>(); @@ -65,6 +66,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper { TableUtils.createTable(connectionSource, LibaoInfo.class); TableUtils.createTable(connectionSource, AppRunTimeInfo.class); TableUtils.createTable(connectionSource, PackageInfo.class); + TableUtils.createTable(connectionSource, KeFuInfo.class); } catch (SQLException e) { e.printStackTrace(); } @@ -84,6 +86,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper { TableUtils.dropTable(connectionSource, LibaoInfo.class, true); TableUtils.dropTable(connectionSource, AppRunTimeInfo.class, true); TableUtils.dropTable(connectionSource, PackageInfo.class, true); + TableUtils.dropTable(connectionSource, KeFuInfo.class, true); onCreate(database, connectionSource); } catch (SQLException e) { e.printStackTrace(); diff --git a/app/src/main/java/com/gh/gamecenter/db/KeFuDao.java b/app/src/main/java/com/gh/gamecenter/db/KeFuDao.java new file mode 100644 index 0000000000..1335c689f6 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/db/KeFuDao.java @@ -0,0 +1,40 @@ +package com.gh.gamecenter.db; + +import android.content.Context; + +import com.gh.gamecenter.db.info.KeFuInfo; +import com.j256.ormlite.dao.Dao; + +import java.sql.SQLException; +import java.util.List; + +/** + * Created by khy on 2017/4/12. + */ +public class KeFuDao { + + private DatabaseHelper helper; + private Dao dao; + + public KeFuDao(Context context) { + try { + helper = DatabaseHelper.getHelper(context); + dao = helper.getDao(KeFuInfo.class); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + /** + * 获取客服信息 + */ + public List getAll() { + try { + return dao.queryForAll(); + } catch (SQLException e) { + e.printStackTrace(); + } + return null; + } + +} diff --git a/app/src/main/java/com/gh/gamecenter/db/info/KeFuInfo.java b/app/src/main/java/com/gh/gamecenter/db/info/KeFuInfo.java new file mode 100644 index 0000000000..c2220d45d9 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/db/info/KeFuInfo.java @@ -0,0 +1,129 @@ +package com.gh.gamecenter.db.info; + +import com.j256.ormlite.field.DatabaseField; +import com.j256.ormlite.table.DatabaseTable; + +import java.io.Serializable; + +/** + * Created by khy on 2017/4/12. + */ + +@DatabaseTable(tableName = "tb_kefu") +public class KeFuInfo implements Serializable { + + @DatabaseField(id = true, columnName = "id") + private String id; + + @DatabaseField(columnName = "isRead") + private boolean isRead; + + @DatabaseField(columnName = "message") + private String message; + + @DatabaseField(columnName = "time") + private long time; + + @DatabaseField(columnName = "suggestion") + private String suggestion; + + @DatabaseField(columnName = "document") + private String document; + + @DatabaseField(columnName = "type") + private String type; + + @DatabaseField(columnName = "url") + private String url; + + @DatabaseField(columnName = "qq") + private String qq; + + @DatabaseField(columnName = "key") + private String key; + + + public KeFuInfo() { + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public boolean isRead() { + return isRead; + } + + public void setRead(boolean read) { + isRead = read; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public long getTime() { + return time; + } + + public void setTime(long time) { + this.time = time; + } + + public String getSuggestion() { + return suggestion; + } + + public void setSuggestion(String suggestion) { + this.suggestion = suggestion; + } + + public String getDocument() { + return document; + } + + public void setDocument(String document) { + this.document = document; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public String getQq() { + return qq; + } + + public void setQq(String qq) { + this.qq = qq; + } + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } + +} diff --git a/app/src/main/java/com/gh/gamecenter/entity/GameDetailEntity.java b/app/src/main/java/com/gh/gamecenter/entity/GameDetailEntity.java index f5fd778dd4..fddb23d696 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/GameDetailEntity.java +++ b/app/src/main/java/com/gh/gamecenter/entity/GameDetailEntity.java @@ -228,6 +228,8 @@ public class GameDetailEntity { private String qq; + private String key; + public void setDes(String des) { this.des = des; } @@ -243,6 +245,14 @@ public class GameDetailEntity { public String getQq() { return qq; } + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } } public class Notice { diff --git a/app/src/main/java/com/gh/gamecenter/entity/KeFuEntity.java b/app/src/main/java/com/gh/gamecenter/entity/KeFuEntity.java new file mode 100644 index 0000000000..1f0a5db18e --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/entity/KeFuEntity.java @@ -0,0 +1,120 @@ +package com.gh.gamecenter.entity; + +/** + * Created by khy on 2017/4/10. + */ +public class KeFuEntity { + + private String id; + + private boolean isRead; + + private String message; + + private long time; + + private String suggestion; + + private LinkEntity link; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public boolean isRead() { + return isRead; + } + + public void setRead(boolean read) { + isRead = read; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public long getTime() { + return time; + } + + public void setTime(long time) { + this.time = time; + } + + public String getSuggestion() { + return suggestion; + } + + public void setSuggestion(String suggestion) { + this.suggestion = suggestion; + } + + public LinkEntity getLink() { + return link; + } + + public void setLink(LinkEntity link) { + this.link = link; + } + + public class LinkEntity { + + private String document; + + private String type; + + private String url; + + private String qq; + + private String key; + + public String getDocument() { + return document; + } + + public void setDocument(String document) { + this.document = document; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public String getQq() { + return qq; + } + + public void setQq(String qq) { + this.qq = qq; + } + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } + } +} diff --git a/app/src/main/java/com/gh/gamecenter/entity/MessageUnreadEntity.java b/app/src/main/java/com/gh/gamecenter/entity/MessageUnreadEntity.java new file mode 100644 index 0000000000..f5bf5573ef --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/entity/MessageUnreadEntity.java @@ -0,0 +1,103 @@ +package com.gh.gamecenter.entity; + +import com.google.gson.annotations.SerializedName; + +import java.util.List; + +/** + * Created by khy on 2017/4/12. + * 消息未读数据实体 + */ +public class MessageUnreadEntity { + + private int comment; + + private Notice notice; + + private int question; + + private Service service; + + public void setComment(int comment) { + this.comment = comment; + } + + public int getComment() { + return comment; + } + + public void setNotice(Notice notice) { + this.notice = notice; + } + + public Notice getNotice() { + return notice; + } + + public void setQuestion(int question) { + this.question = question; + } + + public int getQuestion() { + return question; + } + + public void setService(Service service) { + this.service = service; + } + + public Service getService() { + return service; + } + + public class Notice { + + @SerializedName("message_id") + private List messageId; + + private int num; + + public void setMessageId(List messageId) { + this.messageId = messageId; + } + + public List getMessageId() { + return messageId; + } + + public void setNum(int num) { + this.num = num; + } + + public int getNum() { + return num; + } + + } + + public class Service { + + @SerializedName("message_id") + private List messageId; + + private int num; + + public void setMessageId(List messageId) { + this.messageId = messageId; + } + + public List getMessageId() { + return messageId; + } + + public void setNum(int num) { + this.num = num; + } + + public int getNum() { + return num; + } + + } + +} diff --git a/app/src/main/java/com/gh/gamecenter/entity/NewsEntity.java b/app/src/main/java/com/gh/gamecenter/entity/NewsEntity.java index 6b34952af2..94f114c828 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/NewsEntity.java +++ b/app/src/main/java/com/gh/gamecenter/entity/NewsEntity.java @@ -29,6 +29,8 @@ public class NewsEntity { private long overtime; + private int priority; + public int getViews() { return views; } @@ -116,4 +118,12 @@ public class NewsEntity { public void setOvertime(long overtime) { this.overtime = overtime; } + + public int getPriority() { + return priority; + } + + public void setPriority(int priority) { + this.priority = priority; + } } diff --git a/app/src/main/java/com/gh/gamecenter/entity/NoticeEntity.java b/app/src/main/java/com/gh/gamecenter/entity/NoticeEntity.java new file mode 100644 index 0000000000..d4605fe6c3 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/entity/NoticeEntity.java @@ -0,0 +1,9 @@ +package com.gh.gamecenter.entity; + +/** + * Created by khy on 2017/4/10. + */ +public class NoticeEntity { + + +} diff --git a/app/src/main/java/com/gh/gamecenter/entity/SuggestionTypeEntity.java b/app/src/main/java/com/gh/gamecenter/entity/SuggestionTypeEntity.java new file mode 100644 index 0000000000..0419a10ac6 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/entity/SuggestionTypeEntity.java @@ -0,0 +1,49 @@ +package com.gh.gamecenter.entity; + +import java.util.Set; + +/** + * Created by khy on 2017/4/14. + */ +public class SuggestionTypeEntity { + + private Set game ; + + private Set libao ; + + private Set plugin ; + + private Set service ; + + public Set getGame() { + return game; + } + + public void setGame(Set game) { + this.game = game; + } + + public Set getLibao() { + return libao; + } + + public void setLibao(Set libao) { + this.libao = libao; + } + + public Set getPlugin() { + return plugin; + } + + public void setPlugin(Set plugin) { + this.plugin = plugin; + } + + public Set getService() { + return service; + } + + public void setService(Set service) { + this.service = service; + } +} diff --git a/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.java index 95ef4ddd8a..02d505122f 100644 --- a/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.java @@ -38,7 +38,6 @@ import com.gh.common.util.Utils; import com.gh.common.view.AutoScrollViewPager; import com.gh.download.DownloadManager; import com.gh.gamecenter.KaiFuActivity; -import com.gh.gamecenter.LibaoActivity; import com.gh.gamecenter.NewsDetailActivity; import com.gh.gamecenter.PluginActivity; import com.gh.gamecenter.R; @@ -178,7 +177,7 @@ class GameFragmentAdapter extends RecyclerView.Adapter .subscribe(new Response>(){ @Override public void onResponse(List response) { - if (response.size() == 3) { + if (response.size() == 5) { subjectDigestList = response; } else { isSubjectDigestError = true; @@ -688,23 +687,11 @@ class GameFragmentAdapter extends RecyclerView.Adapter contentView.setLayoutParams(lp); viewHolder.subjectLl.addView(contentView); - if (subjectDigestList.size() == 3 && i < 3) { + if (subjectDigestList.size() >= 5 && i < 5) { ImageUtils.display(subjectIcon, subjectDigestList.get(i).getIcon()); subjectName.setText(subjectDigestList.get(i).getName()); } - if (i == 3) { - - } - - if (i == 4) { - subjectName.setText("礼包"); - subjectIcon.setImageURI(Uri.parse("res:///" + R.drawable.home_entrance_libao)); - if (sp.getBoolean("showGiftNewIcon", true)) { - subjectNewIcon.setVisibility(View.VISIBLE); - } - } - if (i == 5) { subjectName.setText("开服表"); subjectIcon.setImageURI(Uri.parse("res:///" + R.drawable.home_entrance_kaifu)); @@ -714,19 +701,13 @@ class GameFragmentAdapter extends RecyclerView.Adapter contentView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - if (finalI < 4 && !isSubjectDigestError) { + if (finalI < 5 && !isSubjectDigestError) { Intent intent = new Intent(context, SubjectActivity.class); intent.putExtra("id", subjectDigestList.get(finalI).getColumnId()); intent.putExtra("name", subjectDigestList.get(finalI).getColumnName()); intent.putExtra("order", subjectDigestList.get(finalI).getOrder()); intent.putExtra("entrance", "(游戏-专题:" + subjectDigestList.get(finalI).getName() + ")"); context.startActivity(intent); - } else if (finalI == 4) { - subjectNewIcon.setVisibility(View.GONE); - sp.edit().putBoolean("showGiftNewIcon", false).apply(); - Intent intent = new Intent(context, LibaoActivity.class); - intent.putExtra("entrance", "(游戏-专题:礼包)"); - context.startActivity(intent); } else if (finalI == 5){ Intent intent = new Intent(context, KaiFuActivity.class); intent.putExtra("entrance", "(游戏-专题:开服表)"); diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/FuLiAdapter.java b/app/src/main/java/com/gh/gamecenter/gamedetail/FuLiAdapter.java index 7a323d1e28..3552fdf7b7 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/FuLiAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/FuLiAdapter.java @@ -1,12 +1,14 @@ package com.gh.gamecenter.gamedetail; import android.content.Context; +import android.content.Intent; import android.graphics.Color; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.text.Html; import android.text.TextUtils; +import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -23,7 +25,9 @@ import com.gh.common.util.QQUtils; import com.gh.common.util.Utils; import com.gh.common.view.GridDivider; import com.gh.common.view.MarqueeView; +import com.gh.gamecenter.NewSuggestActivity; import com.gh.gamecenter.R; +import com.gh.gamecenter.adapter.viewholder.FooterViewHolder; import com.gh.gamecenter.adapter.viewholder.ReuseViewHolder; import com.gh.gamecenter.db.LibaoDao; import com.gh.gamecenter.db.info.LibaoInfo; @@ -45,6 +49,7 @@ import rx.schedulers.Schedulers; /** * Created by khy on 2017/3/27. + * 游戏详情 - 福利适配器 */ public class FuLiAdapter extends RecyclerView.Adapter{ @@ -211,8 +216,8 @@ public class FuLiAdapter extends RecyclerView.Adapter{ view = LayoutInflater.from(mContext).inflate(R.layout.gamedetail_item_kaifu, parent, false); return new GameDetailKaiFuViewHolder(view); case 6: - RelativeLayout bottomRl = new RelativeLayout(mContext); - return new BottomViewHolder(bottomRl); + view = LayoutInflater.from(mContext).inflate(R.layout.refresh_footerview, parent, false); + return new FooterViewHolder(view); } return null; } @@ -235,14 +240,33 @@ public class FuLiAdapter extends RecyclerView.Adapter{ } else if (holder instanceof GameDetailKaiFuViewHolder) { GameDetailKaiFuViewHolder viewHolder = (GameDetailKaiFuViewHolder) holder; initKaiFuViewHolder(viewHolder); - } else if (holder instanceof BottomViewHolder) { - BottomViewHolder viewHolder = (BottomViewHolder) holder; + } else if (holder instanceof FooterViewHolder) { + FooterViewHolder viewHolder = (FooterViewHolder) holder; + viewHolder.loading.setVisibility(View.GONE); + viewHolder.hint.setText("此游戏有问题?点击反馈"); + int height = fuLiFragment.getHeight(); int i = height - mRecyclerView.getHeight() - DisplayUtils.dip2px(mContext, 75); if (offsetH == 0 && i < 0 || i<0 &&offsetH < i) { offsetH = i; } - viewHolder.bottomRl.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, -offsetH)); + + if (-offsetH > DisplayUtils.dip2px(mContext, 37)) { + LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, -offsetH); + params.gravity = Gravity.CENTER; + viewHolder.itemView.setLayoutParams(params); + } + + viewHolder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(mContext, NewSuggestActivity.class); + intent.putExtra("suggestType", 4); + intent.putExtra("suggestHintType", "game"); + intent.putExtra("content", mGameEntity.getName() + ",问题反馈:"); + mContext.startActivity(intent); + } + }); } } @@ -355,7 +379,7 @@ public class FuLiAdapter extends RecyclerView.Adapter{ if (viewHolder.kaifuRv.getAdapter() == null) { viewHolder.kaifuRv.setLayoutManager(new GridLayoutManager(mContext, 7)); viewHolder.kaifuRv.addItemDecoration(new GridDivider(mContext,1, Color.BLACK)); - viewHolder.kaifuRv.setAdapter(new GameDetailKaiFuAdapter(mContext, mGameDetailEntity.getKaiFuServer(), viewHolder)); + viewHolder.kaifuRv.setAdapter(new GameDetailKaiFuAdapter(mContext, mGameDetailEntity.getKaiFuServer(), viewHolder, mGameEntity.getName())); } } @@ -369,7 +393,7 @@ public class FuLiAdapter extends RecyclerView.Adapter{ } if (contact != null && contact.getService() != null){ viewHolder.fuliQqunRl.setVisibility(View.VISIBLE); - viewHolder.fuliQqunDes.setText(contact.getPlayer().getDes() + ":" + contact.getPlayer().getQq()); + viewHolder.fuliQqunDes.setText(contact.getService().getDes() + ":" + contact.getService().getQq()); } else { viewHolder.fuliQqunRl.setVisibility(View.GONE); } @@ -391,7 +415,7 @@ public class FuLiAdapter extends RecyclerView.Adapter{ viewHolder.fuliQqBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - boolean b = QQUtils.joinQQGroup(mContext, "Op7gxygPvGwdN4rYUj8alatXGIHgX6J8"); + boolean b = QQUtils.joinQQGroup(mContext, mGameDetailEntity.getContact().getPlayer().getKey()); Utils.toast(mContext, b + ""); } }); diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailKaiFuAdapter.java b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailKaiFuAdapter.java index 49f472ec7f..804efe48b2 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailKaiFuAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailKaiFuAdapter.java @@ -31,6 +31,7 @@ import de.greenrobot.event.EventBus; /** * Created by khy on 2017/3/28. + * 游戏详情-日历表适配器 */ public class GameDetailKaiFuAdapter extends RecyclerView.Adapter { private Context mContext; @@ -43,6 +44,9 @@ public class GameDetailKaiFuAdapter extends RecyclerView.Adapter curDayData; private List mServerList; @@ -66,10 +70,11 @@ public class GameDetailKaiFuAdapter extends RecyclerView.Adapter serverInfo, GameDetailKaiFuViewHolder viewHolder) { + public GameDetailKaiFuAdapter(Context context, List serverInfo, GameDetailKaiFuViewHolder viewHolder, String gameName) { this.mContext = context; this.mServerList = serverInfo; this.viewHolder = viewHolder; + this.gameName = gameName; isNextMonth = false; @@ -149,6 +154,8 @@ public class GameDetailKaiFuAdapter extends RecyclerView.Adapter { private Context mContext; @@ -159,6 +162,8 @@ public class XinXiAdapter extends RecyclerView.Adapter return 5; } else if (position_game != -1 && position_game == position) { return 6; + } else if (position == getItemCount() - 1) { + return 101; } else if (position_game != -1 && mGameList != null &&mGameList.size()>0) { return 100; } @@ -208,6 +213,9 @@ public class XinXiAdapter extends RecyclerView.Adapter view = LayoutInflater.from(mContext).inflate( R.layout.game_normal_item, parent, false); return new GameNormalViewHolder(view); + case 101: + view = LayoutInflater.from(mContext).inflate(R.layout.refresh_footerview, parent, false); + return new FooterViewHolder(view); } return null; } @@ -231,13 +239,28 @@ public class XinXiAdapter extends RecyclerView.Adapter } else if (holder instanceof GameDetailGameViewHolder) { } else if (holder instanceof GameNormalViewHolder) { initGameNormalViewHolder((GameNormalViewHolder) holder, position); + } else if (holder instanceof FooterViewHolder) { + FooterViewHolder viewHolder = (FooterViewHolder) holder; + viewHolder.loading.setVisibility(View.GONE); + viewHolder.hint.setText("此游戏有问题?点击反馈"); + + viewHolder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(mContext, NewSuggestActivity.class); + intent.putExtra("suggestType", 4); + intent.putExtra("content", mGameEntity.getName() + ",问题反馈:"); + intent.putExtra("suggestHintType", "game"); + mContext.startActivity(intent); + } + }); } } @Override public int getItemCount() { - int index = 1; + int index = 2; if (position_notice != -1) { index++; diff --git a/app/src/main/java/com/gh/gamecenter/message/AnswerFragment.java b/app/src/main/java/com/gh/gamecenter/message/AnswerFragment.java new file mode 100644 index 0000000000..0936102606 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/message/AnswerFragment.java @@ -0,0 +1,26 @@ +package com.gh.gamecenter.message; + +import android.os.Bundle; +import android.support.annotation.Nullable; + +import com.gh.base.BaseFragment; +import com.gh.gamecenter.eventbus.EBUISwitch; + +/** + * Created by khy on 2017/4/5. + */ +public class AnswerFragment extends BaseFragment { + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); +// init(R.layout.fragment_news4); + } + + // Fragment界面切换事件 + public void onEventMainThread(EBUISwitch swith) { + if ("MessageFragment".equals(swith.getFrom()) && swith.getPosition() == 0) { + + } + } +} diff --git a/app/src/main/java/com/gh/gamecenter/message/AnswerFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/message/AnswerFragmentAdapter.java new file mode 100644 index 0000000000..03159c16ec --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/message/AnswerFragmentAdapter.java @@ -0,0 +1,41 @@ +package com.gh.gamecenter.message; + +import android.content.Context; +import android.support.v7.widget.RecyclerView; +import android.view.ViewGroup; + +import com.gh.gamecenter.entity.KeFuEntity; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by khy on 2017/4/10. + */ +public class AnswerFragmentAdapter extends RecyclerView.Adapter { + + private Context mContext; + + private List mKeFuList; + + public AnswerFragmentAdapter(Context mContext) { + this.mContext = mContext; + + mKeFuList = new ArrayList<>(); + } + + @Override + public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + return null; + } + + @Override + public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { + + } + + @Override + public int getItemCount() { + return mKeFuList.size(); + } +} diff --git a/app/src/main/java/com/gh/gamecenter/message/CommentFragment.java b/app/src/main/java/com/gh/gamecenter/message/CommentFragment.java new file mode 100644 index 0000000000..174086b32c --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/message/CommentFragment.java @@ -0,0 +1,74 @@ +package com.gh.gamecenter.message; + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v4.widget.SwipeRefreshLayout; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.widget.LinearLayout; + +import com.gc.materialdesign.views.ProgressBarCircularIndeterminate; +import com.gh.base.BaseFragment; +import com.gh.gamecenter.R; +import com.gh.gamecenter.eventbus.EBUISwitch; + +import butterknife.BindView; + +/** + * Created by khy on 2017/4/5. + * 消息-评论 + */ +public class CommentFragment extends BaseFragment { + + + @BindView(R.id.recyclerview) + RecyclerView mRecyclerview; + @BindView(R.id.refresh) + SwipeRefreshLayout mRefresh; + @BindView(R.id.loading_pb) + ProgressBarCircularIndeterminate mLoadingPb; + @BindView(R.id.reuse_no_connection) + LinearLayout mNoConnection; + @BindView(R.id.reuse_none_data) + LinearLayout mNoneData; + + private LinearLayoutManager layoutManager; + + private CommentFragmentAdapter mAdapter; + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + init(R.layout.fragment_normal_message); + + mRefresh.setColorSchemeResources(R.color.theme); + + mAdapter = new CommentFragmentAdapter(getContext()); + layoutManager = new LinearLayoutManager(getContext()); + mRecyclerview.setLayoutManager(layoutManager); + mRecyclerview.setAdapter(mAdapter); + + mRecyclerview.setOnScrollListener(new RecyclerView.OnScrollListener() { + @Override + public void onScrollStateChanged(RecyclerView recyclerView, int newState) { + super.onScrollStateChanged(recyclerView, newState); + if (newState == RecyclerView.SCROLL_STATE_IDLE && mAdapter.isLoaded() && !mAdapter.isRemove() + && mAdapter.getItemCount() == layoutManager.findLastVisibleItemPosition() + 1) { + mAdapter.addList(mAdapter.getItemCount() - 1); + } + } + }); + + } + + // Fragment界面切换事件 + public void onEventMainThread(EBUISwitch swith) { + if ("MessageFragment".equals(swith.getFrom()) && swith.getPosition() == 1) { + if (mLoadingPb.getVisibility() == View.VISIBLE) { + mAdapter.addList(0); + } + } + } + +} diff --git a/app/src/main/java/com/gh/gamecenter/message/CommentFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/message/CommentFragmentAdapter.java new file mode 100644 index 0000000000..017010f55e --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/message/CommentFragmentAdapter.java @@ -0,0 +1,126 @@ +package com.gh.gamecenter.message; + +import android.content.Context; +import android.support.v7.widget.RecyclerView; +import android.text.TextUtils; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.gh.gamecenter.R; +import com.gh.gamecenter.adapter.viewholder.FooterViewHolder; +import com.gh.gamecenter.entity.KeFuEntity; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by khy on 2017/4/10. + * 消息-评论适配器 + */ +public class CommentFragmentAdapter extends RecyclerView.Adapter { + + private Context mContext; + + private List mKeFuList; + + private boolean isRemove; + private boolean isNetworkError; + private boolean isLoaded; + + public CommentFragmentAdapter(Context mContext) { + this.mContext = mContext; + + mKeFuList = new ArrayList<>(); + + addList(0); + } + + public void addList(int offset) { + + } + + @Override + public int getItemViewType(int position) { + if (position == getItemCount() - 1) { + return 0; + } else { + return 1; + } + } + + @Override + public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + if (viewType == 0) { + View view = LayoutInflater.from(mContext).inflate(R.layout.refresh_footerview, parent, false); + return new FooterViewHolder(view); + } else { + View view = LayoutInflater.from(mContext).inflate(R.layout.message_kefu_item, parent, false); + return new KeFuViewHolder(view); + } + } + + @Override + public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { + if (holder instanceof KeFuViewHolder) { + KeFuEntity keFuEntity = mKeFuList.get(position); + KeFuViewHolder viewHolder = (KeFuViewHolder) holder; + initKeFuViewHolder(viewHolder, keFuEntity); + } else if (holder instanceof FooterViewHolder) { + FooterViewHolder viewHolder = (FooterViewHolder) holder; + initFooterViewHolder(viewHolder); + } + + } + + private void initFooterViewHolder(FooterViewHolder viewHolder) { + if (isNetworkError) { + viewHolder.loading.setVisibility(View.GONE); + viewHolder.hint.setText("加载失败,点击重试"); + viewHolder.itemView.setClickable(true); + viewHolder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + isNetworkError = false; + notifyDataSetChanged(); + addList(mKeFuList.size()); + } + }); + } else if (isRemove) { + viewHolder.loading.setVisibility(View.GONE); + viewHolder.hint.setText("加载完毕"); + viewHolder.itemView.setClickable(false); + viewHolder.lineLeft.setVisibility(View.VISIBLE); + viewHolder.lineRight.setVisibility(View.VISIBLE); + } else { + viewHolder.loading.setVisibility(View.VISIBLE); + viewHolder.hint.setText("加载中..."); + viewHolder.itemView.setClickable(false); + } + } + + + private void initKeFuViewHolder(KeFuViewHolder viewHolder, KeFuEntity keFuEntity) { + viewHolder.content.setText(keFuEntity.getMessage()); + if (!TextUtils.isEmpty(keFuEntity.getSuggestion())) { + viewHolder.suggestion.setVisibility(View.VISIBLE); + viewHolder.suggestion.setText(keFuEntity.getSuggestion()); + } else { + viewHolder.suggestion.setVisibility(View.GONE); + } + viewHolder.skip.setText(keFuEntity.getLink().getDocument()); + } + + @Override + public int getItemCount() { + return mKeFuList.size(); + } + + public boolean isLoaded() { + return isLoaded; + } + + public boolean isRemove() { + return isRemove; + } +} diff --git a/app/src/main/java/com/gh/gamecenter/message/CommentNormalViewHolder.java b/app/src/main/java/com/gh/gamecenter/message/CommentNormalViewHolder.java new file mode 100644 index 0000000000..c1ed8ea5b0 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/message/CommentNormalViewHolder.java @@ -0,0 +1,35 @@ +package com.gh.gamecenter.message; + +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.widget.TextView; + +import com.facebook.drawee.view.SimpleDraweeView; +import com.gh.gamecenter.R; + +import butterknife.BindView; +import butterknife.ButterKnife; + +/** + * Created by khy on 2017/4/6. + */ +public class CommentNormalViewHolder extends RecyclerView.ViewHolder { + + @BindView(R.id.message_comment_user_icon) + public SimpleDraweeView userIcon; + @BindView(R.id.message_comment_user_name) + public TextView userName; + @BindView(R.id.message_comment_request_control) + public TextView requestControl; + @BindView(R.id.message_comment_content) + public TextView commentContent; + @BindView(R.id.message_comment_answer) + public TextView commentAnswer; + @BindView(R.id.message_comment_time) + public TextView commentTime; + + public CommentNormalViewHolder(View itemView) { + super(itemView); + ButterKnife.bind(this, itemView); + } +} diff --git a/app/src/main/java/com/gh/gamecenter/message/CommentVoteViewHolder.java b/app/src/main/java/com/gh/gamecenter/message/CommentVoteViewHolder.java new file mode 100644 index 0000000000..28272736e6 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/message/CommentVoteViewHolder.java @@ -0,0 +1,31 @@ +package com.gh.gamecenter.message; + +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.widget.TextView; + +import com.facebook.drawee.view.SimpleDraweeView; +import com.gh.gamecenter.R; + +import butterknife.BindView; +import butterknife.ButterKnife; + +/** + * Created by khy on 2017/4/6. + */ +public class CommentVoteViewHolder extends RecyclerView.ViewHolder { + + @BindView(R.id.message_comment_user_icon) + public SimpleDraweeView userIcon; + @BindView(R.id.comment_like_count) + public TextView likeCountTv; + @BindView(R.id.message_comment_time) + public TextView commentTime; + @BindView(R.id.message_comment_content) + public TextView commentContent; + + public CommentVoteViewHolder(View itemView) { + super(itemView); + ButterKnife.bind(this, itemView); + } +} diff --git a/app/src/main/java/com/gh/gamecenter/message/KeFuFragment.java b/app/src/main/java/com/gh/gamecenter/message/KeFuFragment.java new file mode 100644 index 0000000000..648a47605c --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/message/KeFuFragment.java @@ -0,0 +1,106 @@ +package com.gh.gamecenter.message; + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v4.widget.SwipeRefreshLayout; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.widget.LinearLayout; + +import com.gc.materialdesign.views.ProgressBarCircularIndeterminate; +import com.gh.base.BaseFragment; +import com.gh.common.view.VerticalItemDecoration; +import com.gh.gamecenter.R; +import com.gh.gamecenter.eventbus.EBUISwitch; + +import butterknife.BindView; + +/** + * Created by khy on 2017/4/5. + * 消息-客服 + */ +public class KeFuFragment extends BaseFragment implements SwipeRefreshLayout.OnRefreshListener{ + + @BindView(R.id.recyclerview) + RecyclerView mRecyclerview; + @BindView(R.id.refresh) + SwipeRefreshLayout mRefresh; + @BindView(R.id.loading_pb) + ProgressBarCircularIndeterminate mLoadingPb; + @BindView(R.id.reuse_no_connection) + LinearLayout mNoConnection; + @BindView(R.id.reuse_none_data) + LinearLayout mNoneData; + + private LinearLayoutManager layoutManager; + + private KeFuFragmentAdapter mAdapter; + + Runnable runnable = new Runnable() { + @Override + public void run() { + mAdapter = new KeFuFragmentAdapter(KeFuFragment.this); + mRecyclerview.setAdapter(mAdapter); + mAdapter.addList(0, true); + } + }; + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + init(R.layout.fragment_normal_message); + + mRefresh.setColorSchemeResources(R.color.theme); + mRefresh.setOnRefreshListener(this); + + mAdapter = new KeFuFragmentAdapter(this); + layoutManager = new LinearLayoutManager(getContext()); + mRecyclerview.setLayoutManager(layoutManager); + mRecyclerview.addItemDecoration(new VerticalItemDecoration(getContext(), 8, true)); + mRecyclerview.setAdapter(mAdapter); + + mRecyclerview.setOnScrollListener(new RecyclerView.OnScrollListener() { + @Override + public void onScrollStateChanged(RecyclerView recyclerView, int newState) { + super.onScrollStateChanged(recyclerView, newState); + if (newState == RecyclerView.SCROLL_STATE_IDLE && mAdapter.isLoaded() && !mAdapter.isRemove() + && mAdapter.getItemCount() == layoutManager.findLastVisibleItemPosition() + 1) { + mAdapter.addList(mAdapter.getItemCount() - 1, true); + } + } + }); + + } + + @Override + public void loadDone() { + super.loadDone(); + mRefresh.setRefreshing(false); + mLoadingPb.setVisibility(View.GONE); + } + + @Override + public void loadError() { + super.loadError(); + } + + @Override + public void loadEmpty() { + super.loadEmpty(); + } + + // Fragment界面切换事件 + public void onEventMainThread(EBUISwitch swith) { + if ("MessageFragment".equals(swith.getFrom()) && swith.getPosition() == 2) { + if (mLoadingPb.getVisibility() == View.VISIBLE) { + mAdapter.addList(0, true); + } + } + } + + @Override + public void onRefresh() { + handler.postDelayed(runnable, 1000); + } +} diff --git a/app/src/main/java/com/gh/gamecenter/message/KeFuFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/message/KeFuFragmentAdapter.java new file mode 100644 index 0000000000..5a55f04aee --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/message/KeFuFragmentAdapter.java @@ -0,0 +1,201 @@ +package com.gh.gamecenter.message; + +import android.content.Context; +import android.support.v7.widget.RecyclerView; +import android.text.TextUtils; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.gh.common.util.CommentUtils; +import com.gh.common.util.TokenUtils; +import com.gh.common.util.Utils; +import com.gh.gamecenter.R; +import com.gh.gamecenter.adapter.viewholder.FooterViewHolder; +import com.gh.gamecenter.entity.KeFuEntity; +import com.gh.gamecenter.listener.OnCallBackListener; +import com.gh.gamecenter.retrofit.Response; +import com.gh.gamecenter.retrofit.RetrofitManager; + +import java.util.ArrayList; +import java.util.List; + +import retrofit2.adapter.rxjava.HttpException; +import rx.Observable; +import rx.android.schedulers.AndroidSchedulers; +import rx.functions.Func1; +import rx.schedulers.Schedulers; + +/** + * Created by khy on 2017/4/10. + * 消息-客服适配器 + */ +public class KeFuFragmentAdapter extends RecyclerView.Adapter { + + private Context mContext; + + private OnCallBackListener mCallBackListener; + + private List mKeFuList; + + private boolean isRemove; + private boolean isNetworkError; + private boolean isLoaded; + + public KeFuFragmentAdapter(KeFuFragment fragment) { + this.mContext = fragment.getContext(); + this.mCallBackListener = fragment; + mKeFuList = new ArrayList<>(); + } + + public void addList(final int offset, boolean isCheck) { + isLoaded = false; + TokenUtils.getToken(mContext, isCheck) + .flatMap(new Func1>>() { + @Override + public Observable> call(String token) { + return RetrofitManager.getApi().getKeFuDataUnread(token, offset, 10); + } + }) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Response>(){ + @Override + public void onResponse(List response) { + super.onResponse(response); + Utils.log("======onResponse"); + if (response.size() < 10) { + isRemove = true; + } + + isLoaded = true; + mKeFuList.addAll(response); + notifyDataSetChanged(); + + if (mKeFuList.size() == 0) { + mCallBackListener.loadEmpty(); + } else { + mCallBackListener.loadDone(); + } + + } + + @Override + public void onError(Throwable e) { + super.onError(e); + Utils.log("======" + e.toString()); + } + + @Override + public void onFailure(HttpException e) { + + if (e != null && e.code() == 401) { + addList(offset, false); + } else { + isLoaded = true; + isNetworkError = true; + } + } + }); + } + + @Override + public int getItemViewType(int position) { + if (position == getItemCount() - 1) { + return 0; + } else { + return 1; + } + } + + @Override + public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + if (viewType == 0) { + View view = LayoutInflater.from(mContext).inflate(R.layout.refresh_footerview, parent, false); + return new FooterViewHolder(view); + } else { + View view = LayoutInflater.from(mContext).inflate(R.layout.message_kefu_item, parent, false); + return new KeFuViewHolder(view); + } + } + + @Override + public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { + if (holder instanceof KeFuViewHolder) { + KeFuEntity keFuEntity = mKeFuList.get(position); + KeFuViewHolder viewHolder = (KeFuViewHolder) holder; + initKeFuViewHolder(viewHolder, keFuEntity); + } else if (holder instanceof FooterViewHolder) { + FooterViewHolder viewHolder = (FooterViewHolder) holder; + initFooterViewHolder(viewHolder); + } + + } + + private void initFooterViewHolder(FooterViewHolder viewHolder) { + if (isNetworkError) { + viewHolder.loading.setVisibility(View.GONE); + viewHolder.hint.setText("加载失败,点击重试"); + viewHolder.itemView.setClickable(true); + viewHolder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + isNetworkError = false; + notifyDataSetChanged(); + addList(mKeFuList.size(), true); + } + }); + } else if (isRemove) { + viewHolder.loading.setVisibility(View.GONE); + viewHolder.hint.setText("加载完毕"); + viewHolder.itemView.setClickable(false); + viewHolder.lineLeft.setVisibility(View.VISIBLE); + viewHolder.lineRight.setVisibility(View.VISIBLE); + } else { + viewHolder.loading.setVisibility(View.VISIBLE); + viewHolder.hint.setText("加载中..."); + viewHolder.itemView.setClickable(false); + } + } + + + private void initKeFuViewHolder(KeFuViewHolder viewHolder, KeFuEntity keFuEntity) { + viewHolder.content.setText(keFuEntity.getMessage()); + if (!TextUtils.isEmpty(keFuEntity.getSuggestion())) { + viewHolder.suggestion.setVisibility(View.VISIBLE); + viewHolder.suggestion.setText(keFuEntity.getSuggestion()); + } else { + viewHolder.suggestion.setVisibility(View.GONE); + } + viewHolder.skip.setText(keFuEntity.getLink().getDocument()); + + CommentUtils.setCommentTime(viewHolder.time, keFuEntity.getTime()); + + if (!TextUtils.isEmpty(keFuEntity.getSuggestion())) { + viewHolder.suggestion.setVisibility(View.VISIBLE); + viewHolder.suggestion.setText(keFuEntity.getSuggestion()); + } else { + viewHolder.suggestion.setVisibility(View.GONE); + } + + viewHolder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + + } + }); + } + + @Override + public int getItemCount() { + return mKeFuList.size(); + } + + public boolean isLoaded(){ + return isLoaded; + } + + public boolean isRemove(){ + return isRemove; + } +} diff --git a/app/src/main/java/com/gh/gamecenter/message/KeFuViewHolder.java b/app/src/main/java/com/gh/gamecenter/message/KeFuViewHolder.java new file mode 100644 index 0000000000..9522a73f1e --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/message/KeFuViewHolder.java @@ -0,0 +1,32 @@ +package com.gh.gamecenter.message; + +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.widget.TextView; + +import com.gh.gamecenter.R; + +import butterknife.BindView; +import butterknife.ButterKnife; + +/** + * Created by khy on 2017/4/10. + */ +public class KeFuViewHolder extends RecyclerView.ViewHolder { + + @BindView(R.id.message_kefu_time) + public TextView time; + @BindView(R.id.message_kefu_hint) + public View hint; + @BindView(R.id.message_kefu_content) + public TextView content; + @BindView(R.id.message_kefu_suggestion) + public TextView suggestion; + @BindView(R.id.message_kefu_skip) + public TextView skip; + + public KeFuViewHolder(View itemView) { + super(itemView); + ButterKnife.bind(this, itemView); + } +} diff --git a/app/src/main/java/com/gh/gamecenter/message/MessageFragment.java b/app/src/main/java/com/gh/gamecenter/message/MessageFragment.java new file mode 100644 index 0000000000..391f0f5964 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/message/MessageFragment.java @@ -0,0 +1,209 @@ +package com.gh.gamecenter.message; + +import android.os.Build; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v4.app.Fragment; +import android.support.v4.view.ViewPager; +import android.util.DisplayMetrics; +import android.view.View; +import android.widget.LinearLayout; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import com.gh.base.BaseFragment; +import com.gh.common.util.DisplayUtils; +import com.gh.common.util.TokenUtils; +import com.gh.gamecenter.R; +import com.gh.gamecenter.adapter.FragmentAdapter; +import com.gh.gamecenter.entity.MessageUnreadEntity; +import com.gh.gamecenter.eventbus.EBNetworkState; +import com.gh.gamecenter.eventbus.EBUISwitch; +import com.gh.gamecenter.retrofit.Response; +import com.gh.gamecenter.retrofit.RetrofitManager; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; +import de.greenrobot.event.EventBus; +import retrofit2.adapter.rxjava.HttpException; +import rx.Observable; +import rx.android.schedulers.AndroidSchedulers; +import rx.functions.Func1; +import rx.schedulers.Schedulers; + +/** + * Created by khy on 2017/4/5. + * 首页-消息 + */ +public class MessageFragment extends BaseFragment implements ViewPager.OnPageChangeListener { + + @BindView(R.id.message_wenda_tv) TextView mMessageWendaTv; + @BindView(R.id.message_wenda_hint) TextView mMessageWendaHint; + @BindView(R.id.message_wenda_ll) LinearLayout mMessageWendaLl; + @BindView(R.id.message_comment_tv) TextView mMessageCommentTv; + @BindView(R.id.message_comment_hint) TextView mMessageCommentHint; + @BindView(R.id.message_comment_ll) LinearLayout mMessageCommentLl; + @BindView(R.id.message_kefu_tv) TextView mMessageKefuTv; + @BindView(R.id.message_kefu_hint) View mMessageKefuHint; + @BindView(R.id.message_kefu_rl) RelativeLayout mMessageKefuRl; + @BindView(R.id.message_notice_tv) TextView mMessageNoticeTv; + @BindView(R.id.message_notice_hint) View mMessageNoticeHint; + @BindView(R.id.message_notice_rl) RelativeLayout mMessageNoticeRl; + @BindView(R.id.message_slide_line) View mMessageSlideLine; + @BindView(R.id.meaasge_viewPager) ViewPager mMeaasgeViewPager; + + private LinearLayout.LayoutParams lparams; + + private int width; + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + init(R.layout.fragment_message); + + LinearLayout title = (LinearLayout) view.findViewById(R.id.actionbar_title_ll); + LinearLayout.LayoutParams tparams = new LinearLayout.LayoutParams( + LinearLayout.LayoutParams.MATCH_PARENT, DisplayUtils.dip2px(getActivity(), 55)); + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + int top = DisplayUtils.getStatusBarHeight(getResources()); + title.setPadding(0, top, 0, 0); + tparams.height += top; + } + title.setLayoutParams(tparams); + + DisplayMetrics outMetrics = new DisplayMetrics(); + getActivity().getWindowManager().getDefaultDisplay().getMetrics(outMetrics); + width = outMetrics.widthPixels / 4; + lparams = new LinearLayout.LayoutParams((int) (width * 0.6), + DisplayUtils.dip2px(getContext(), 2)); + lparams.leftMargin = (int) (width * (0 + 0.2f)); + mMessageSlideLine.setLayoutParams(lparams); + + List list = new ArrayList<>(); + list.add(new AnswerFragment()); + list.add(new CommentFragment()); + list.add(new KeFuFragment()); + list.add(new NoticeFragment()); + mMeaasgeViewPager.setAdapter(new FragmentAdapter(getChildFragmentManager(), list)); + mMeaasgeViewPager.addOnPageChangeListener(this); + mMeaasgeViewPager.setCurrentItem(0); + + initMessageUnread(true); + } + + private void initMessageUnread(boolean isCheck) { + TokenUtils.getToken(getContext(), isCheck) + .flatMap(new Func1>() { + @Override + public Observable call(String token) { + return RetrofitManager.getApi().getMessageUnread(token); + } + }) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Response(){ + @Override + public void onResponse(MessageUnreadEntity response) { + super.onResponse(response); + if (response.getComment() > 0) { + mMessageCommentHint.setVisibility(View.VISIBLE); + mMessageCommentHint.setText(response.getComment() + ""); + } + if (response.getQuestion() > 0) { + mMessageWendaHint.setVisibility(View.VISIBLE); + mMessageWendaHint.setText(response.getQuestion() + ""); + } + if (response.getNotice() != null && response.getNotice().getNum() > 0) { + mMessageNoticeHint.setVisibility(View.VISIBLE); + if (response.getNotice().getMessageId().size() > 0) { + // TODO 删除数据库内容 + } + } + if (response.getService() != null && response.getService().getNum() > 0) { + mMessageKefuHint.setVisibility(View.VISIBLE); + if (response.getService().getMessageId().size() > 0) { + // TODO 删除数据库内容 + } + } + } + @Override + public void onFailure(HttpException e) { + if (e != null && e.code() == 401) { + initMessageUnread(false); + } + } + }); + } + + //连接上网络事件 + public void onEventMainThread(EBNetworkState busNetworkState) { + if (busNetworkState.isNetworkConnected()) { + + } + } + + + @OnClick({R.id.message_wenda_ll, R.id.message_comment_ll, R.id.message_kefu_rl, R.id.message_notice_rl}) + public void onViewClicked(View view) { + switch (view.getId()) { + case R.id.message_wenda_ll: + mMeaasgeViewPager.setCurrentItem(0); + break; + case R.id.message_comment_ll: + mMeaasgeViewPager.setCurrentItem(1); + break; + case R.id.message_kefu_rl: + mMeaasgeViewPager.setCurrentItem(2); + break; + case R.id.message_notice_rl: + mMeaasgeViewPager.setCurrentItem(3); + break; + } + } + + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + if (positionOffset != 0) { + lparams.leftMargin = (int) (width * (position + positionOffset + 0.2f)); + mMessageSlideLine.setLayoutParams(lparams); + } + } + + @Override + public void onPageSelected(int position) { + if (position == 0){ + EventBus.getDefault().post(new EBUISwitch("MessageFragment", 0)); + mMessageWendaTv.setTextColor(getResources().getColor(R.color.theme)); + mMessageCommentTv.setTextColor(getResources().getColor(R.color.title)); + mMessageKefuTv.setTextColor(getResources().getColor(R.color.title)); + mMessageNoticeTv.setTextColor(getResources().getColor(R.color.title)); + } else if (position == 1) { + EventBus.getDefault().post(new EBUISwitch("MessageFragment", 1)); + mMessageWendaTv.setTextColor(getResources().getColor(R.color.title)); + mMessageCommentTv.setTextColor(getResources().getColor(R.color.theme)); + mMessageKefuTv.setTextColor(getResources().getColor(R.color.title)); + mMessageNoticeTv.setTextColor(getResources().getColor(R.color.title)); + } else if (position == 2){ + EventBus.getDefault().post(new EBUISwitch("MessageFragment", 2)); + mMessageWendaTv.setTextColor(getResources().getColor(R.color.title)); + mMessageCommentTv.setTextColor(getResources().getColor(R.color.title)); + mMessageKefuTv.setTextColor(getResources().getColor(R.color.theme)); + mMessageNoticeTv.setTextColor(getResources().getColor(R.color.title)); + } else if (position == 3) { + EventBus.getDefault().post(new EBUISwitch("MessageFragment", 3)); + mMessageWendaTv.setTextColor(getResources().getColor(R.color.title)); + mMessageCommentTv.setTextColor(getResources().getColor(R.color.title)); + mMessageKefuTv.setTextColor(getResources().getColor(R.color.title)); + mMessageNoticeTv.setTextColor(getResources().getColor(R.color.theme)); + } + } + + @Override + public void onPageScrollStateChanged(int state) { + + } +} diff --git a/app/src/main/java/com/gh/gamecenter/message/NoticeFragment.java b/app/src/main/java/com/gh/gamecenter/message/NoticeFragment.java new file mode 100644 index 0000000000..363c5e8d6e --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/message/NoticeFragment.java @@ -0,0 +1,73 @@ +package com.gh.gamecenter.message; + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v4.widget.SwipeRefreshLayout; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.widget.LinearLayout; + +import com.gc.materialdesign.views.ProgressBarCircularIndeterminate; +import com.gh.base.BaseFragment; +import com.gh.gamecenter.R; +import com.gh.gamecenter.eventbus.EBUISwitch; + +import butterknife.BindView; + +/** + * Created by khy on 2017/4/5. + * 消息-公告 + */ +public class NoticeFragment extends BaseFragment { + + @BindView(R.id.recyclerview) + RecyclerView mRecyclerview; + @BindView(R.id.refresh) + SwipeRefreshLayout mRefresh; + @BindView(R.id.loading_pb) + ProgressBarCircularIndeterminate mLoadingPb; + @BindView(R.id.reuse_no_connection) + LinearLayout mNoConnection; + @BindView(R.id.reuse_none_data) + LinearLayout mNoneData; + + private LinearLayoutManager layoutManager; + + private NoticeFragmentAdapter mAdapter; + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + init(R.layout.fragment_normal_message); + + mRefresh.setColorSchemeResources(R.color.theme); + + mAdapter = new NoticeFragmentAdapter(getContext()); + layoutManager = new LinearLayoutManager(getContext()); + mRecyclerview.setLayoutManager(layoutManager); + mRecyclerview.setAdapter(mAdapter); + + mRecyclerview.setOnScrollListener(new RecyclerView.OnScrollListener() { + @Override + public void onScrollStateChanged(RecyclerView recyclerView, int newState) { + super.onScrollStateChanged(recyclerView, newState); + if (newState == RecyclerView.SCROLL_STATE_IDLE && mAdapter.isLoaded() && !mAdapter.isRemove() + && mAdapter.getItemCount() == layoutManager.findLastVisibleItemPosition() + 1) { + mAdapter.addList(mAdapter.getItemCount() - 1); + } + } + }); + + } + + // Fragment界面切换事件 + public void onEventMainThread(EBUISwitch swith) { + if ("MessageFragment".equals(swith.getFrom()) && swith.getPosition() == 3) { + if (mLoadingPb.getVisibility() == View.VISIBLE) { + mAdapter.addList(0); + } + } + } + +} diff --git a/app/src/main/java/com/gh/gamecenter/message/NoticeFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/message/NoticeFragmentAdapter.java new file mode 100644 index 0000000000..a0a71fac3c --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/message/NoticeFragmentAdapter.java @@ -0,0 +1,126 @@ +package com.gh.gamecenter.message; + +import android.content.Context; +import android.support.v7.widget.RecyclerView; +import android.text.TextUtils; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.gh.gamecenter.R; +import com.gh.gamecenter.adapter.viewholder.FooterViewHolder; +import com.gh.gamecenter.entity.KeFuEntity; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by khy on 2017/4/10. + * 消息-公告适配器 + */ +public class NoticeFragmentAdapter extends RecyclerView.Adapter { + + private Context mContext; + + private List mKeFuList; + + private boolean isRemove; + private boolean isNetworkError; + private boolean isLoaded; + + public NoticeFragmentAdapter(Context mContext) { + this.mContext = mContext; + + mKeFuList = new ArrayList<>(); + + addList(0); + } + + public void addList(int offset) { + + } + + @Override + public int getItemViewType(int position) { + if (position == getItemCount() - 1) { + return 0; + } else { + return 1; + } + } + + @Override + public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + if (viewType == 0) { + View view = LayoutInflater.from(mContext).inflate(R.layout.refresh_footerview, parent, false); + return new FooterViewHolder(view); + } else { + View view = LayoutInflater.from(mContext).inflate(R.layout.message_kefu_item, parent, false); + return new KeFuViewHolder(view); + } + } + + @Override + public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { + if (holder instanceof KeFuViewHolder) { + KeFuEntity keFuEntity = mKeFuList.get(position); + KeFuViewHolder viewHolder = (KeFuViewHolder) holder; + initKeFuViewHolder(viewHolder, keFuEntity); + } else if (holder instanceof FooterViewHolder) { + FooterViewHolder viewHolder = (FooterViewHolder) holder; + initFooterViewHolder(viewHolder); + } + + } + + private void initFooterViewHolder(FooterViewHolder viewHolder) { + if (isNetworkError) { + viewHolder.loading.setVisibility(View.GONE); + viewHolder.hint.setText("加载失败,点击重试"); + viewHolder.itemView.setClickable(true); + viewHolder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + isNetworkError = false; + notifyDataSetChanged(); + addList(mKeFuList.size()); + } + }); + } else if (isRemove) { + viewHolder.loading.setVisibility(View.GONE); + viewHolder.hint.setText("加载完毕"); + viewHolder.itemView.setClickable(false); + viewHolder.lineLeft.setVisibility(View.VISIBLE); + viewHolder.lineRight.setVisibility(View.VISIBLE); + } else { + viewHolder.loading.setVisibility(View.VISIBLE); + viewHolder.hint.setText("加载中..."); + viewHolder.itemView.setClickable(false); + } + } + + + private void initKeFuViewHolder(KeFuViewHolder viewHolder, KeFuEntity keFuEntity) { + viewHolder.content.setText(keFuEntity.getMessage()); + if (!TextUtils.isEmpty(keFuEntity.getSuggestion())) { + viewHolder.suggestion.setVisibility(View.VISIBLE); + viewHolder.suggestion.setText(keFuEntity.getSuggestion()); + } else { + viewHolder.suggestion.setVisibility(View.GONE); + } + viewHolder.skip.setText(keFuEntity.getLink().getDocument()); + } + + @Override + public int getItemCount() { + return mKeFuList.size(); + } + + public boolean isLoaded() { + return isLoaded; + } + + public boolean isRemove() { + return isRemove; + } +} diff --git a/app/src/main/java/com/gh/gamecenter/message/WenDaViewHolder.java b/app/src/main/java/com/gh/gamecenter/message/WenDaViewHolder.java new file mode 100644 index 0000000000..06b710a335 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/message/WenDaViewHolder.java @@ -0,0 +1,39 @@ +package com.gh.gamecenter.message; + +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.widget.TextView; + +import com.facebook.drawee.view.SimpleDraweeView; +import com.gh.gamecenter.R; + +import butterknife.BindView; +import butterknife.ButterKnife; + +/** + * Created by khy on 2017/4/5. + */ +public class WenDaViewHolder extends RecyclerView.ViewHolder { + + @BindView(R.id.wenda_user_icon) + public SimpleDraweeView userIcon; + @BindView(R.id.wenda_user_name) + public TextView userName; + @BindView(R.id.wenda_request_control) + public TextView requestControl; + @BindView(R.id.wenda_comment_answer) + public TextView commentAnswer; + @BindView(R.id.wenda_game_icon) + public SimpleDraweeView gameIcon; + @BindView(R.id.wenda_content) + public TextView wendaContent; + @BindView(R.id.wenda_comment) + public TextView wendaComment; + @BindView(R.id.wenda_time) + public TextView wendaTime; + + public WenDaViewHolder(View itemView) { + super(itemView); + ButterKnife.bind(this, itemView); + } +} diff --git a/app/src/main/java/com/gh/gamecenter/news/News1Fragment.java b/app/src/main/java/com/gh/gamecenter/news/News1Fragment.java index b856c47114..9503c6f38f 100644 --- a/app/src/main/java/com/gh/gamecenter/news/News1Fragment.java +++ b/app/src/main/java/com/gh/gamecenter/news/News1Fragment.java @@ -1,77 +1,36 @@ package com.gh.gamecenter.news; -import android.content.Intent; import android.os.Bundle; import android.support.annotation.Nullable; -import android.support.v4.util.ArrayMap; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; import android.widget.LinearLayout; -import android.widget.TextView; -import com.facebook.drawee.view.SimpleDraweeView; import com.gc.materialdesign.views.ProgressBarCircularIndeterminate; import com.gh.base.BaseFragment; -import com.gh.common.util.ImageUtils; -import com.gh.common.util.PackageUtils; +import com.gh.common.view.VerticalItemDecoration; import com.gh.gamecenter.R; -import com.gh.gamecenter.db.info.ConcernInfo; -import com.gh.gamecenter.entity.GameEntity; -import com.gh.gamecenter.eventbus.EBConcernChanged; import com.gh.gamecenter.eventbus.EBNetworkState; import com.gh.gamecenter.eventbus.EBUISwitch; -import com.gh.gamecenter.manager.ConcernManager; -import com.gh.gamecenter.retrofit.ObservableUtil; -import com.gh.gamecenter.retrofit.Response; -import com.gh.gamecenter.retrofit.RetrofitManager; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.HashMap; -import java.util.List; -import java.util.Map; import butterknife.BindView; import butterknife.OnClick; -import rx.Observable; -import rx.Subscriber; -import rx.android.schedulers.AndroidSchedulers; -import rx.functions.Action1; -import rx.functions.Func1; -import rx.schedulers.Schedulers; /** - * Created by khy on 2016/8/15. - * 资讯-关注界面 + * Created by LGT on 2016/6/29. + * 资讯-资讯界面 */ public class News1Fragment extends BaseFragment implements SwipeRefreshLayout.OnRefreshListener { - @BindView(R.id.news1_srl_refresh) SwipeRefreshLayout refreshLayout; - @BindView(R.id.news1_rv_list) RecyclerView recyclerView; - @BindView(R.id.news1_pb_loading) ProgressBarCircularIndeterminate loadingLayout; + @BindView(R.id.news2_srl_refresh) SwipeRefreshLayout refreshLayout; + @BindView(R.id.news2_rv_list) RecyclerView recyclerView; + @BindView(R.id.news2_pb_loading) ProgressBarCircularIndeterminate loadingLayout; @BindView(R.id.reuse_no_connection) LinearLayout noConnectionLayout; - @BindView(R.id.news1_ll_empty) LinearLayout emptyLayout; - @BindView(R.id.news1_tv_concern) TextView concern; - @BindView(R.id.news1_ll_concern) LinearLayout concernLayout; - @BindView(R.id.news1_ll_concern_list) LinearLayout concernListLayout; - private News1FragmentAdapter adapter; private LinearLayoutManager layoutManager; - - private List recommendGameList; // 推荐关注的游戏 - private List installGameList; // 安装的游戏 - - private Map concernMap; // 记录选择关注 - - private ConcernManager concernManager; - - private boolean isInitConcernOcer; - private boolean isInitInstallOver; + private News1FragmentAdapter adapter; Runnable runnable = new Runnable() { @Override @@ -88,17 +47,13 @@ public class News1Fragment extends BaseFragment implements SwipeRefreshLayout.On init(R.layout.fragment_news1); - recommendGameList = new ArrayList<>(); - installGameList = new ArrayList<>(); - concernManager = new ConcernManager(getActivity()); - concernMap = new ArrayMap<>(); - refreshLayout.setColorSchemeResources(R.color.theme); refreshLayout.setOnRefreshListener(this); recyclerView.setHasFixedSize(true); layoutManager = new LinearLayoutManager(getActivity()); recyclerView.setLayoutManager(layoutManager); + recyclerView.addItemDecoration(new VerticalItemDecoration(getContext(), 8, true)); adapter = new News1FragmentAdapter(News1Fragment.this); recyclerView.setAdapter(adapter); recyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() { @@ -107,43 +62,13 @@ public class News1Fragment extends BaseFragment implements SwipeRefreshLayout.On if (newState == RecyclerView.SCROLL_STATE_IDLE && layoutManager.findLastVisibleItemPosition() + 1 == adapter.getItemCount()) { if (!adapter.isOver() && !adapter.isLoading() && !adapter.isNetworkError()) { - adapter.addList(adapter.getConcernListSize()); + adapter.addList(adapter.getNewsListSize()); } } } }); } - @Override - public void onActivityResult(int requestCode, int resultCode, Intent data) { - if (requestCode == 0x125 && adapter.getSkipPosition() != -1) { - // 更新对应位置 - adapter.notifyItemChanged(adapter.getSkipPosition()); - adapter.setSkipPosition(-1); - } else if (requestCode == 0x122 && adapter.getSkipPosition() != -1) { - adapter.initLibaoDao(); - adapter.notifyItemChanged(adapter.getSkipPosition()); - adapter.setSkipPosition(-1); - } - } - - @OnClick(R.id.news1_tv_concern) - public void concern() { // 关注 推荐关注的游戏 - ArrayList list = new ArrayList<>(); - for (int key : concernMap.keySet()) { - if (concernMap.get(key)) { - list.add(recommendGameList.get(key)); - } - } - if (list.size() != 0) { - if (list.size() == 1) { - concernManager.addByEntity(list.get(0)); - } else { - concernManager.addByList(list); - } - } - } - @OnClick(R.id.reuse_no_connection) public void reconnection() { // 重新连接 refreshLayout.setRefreshing(true); @@ -156,10 +81,7 @@ public class News1Fragment extends BaseFragment implements SwipeRefreshLayout.On @Override public void loadDone() { // 数据加载成功回调 refreshLayout.setRefreshing(false); - emptyLayout.setVisibility(View.GONE); - concernLayout.setVisibility(View.GONE); loadingLayout.setVisibility(View.GONE); - recyclerView.setVisibility(View.VISIBLE); } @Override @@ -170,17 +92,6 @@ public class News1Fragment extends BaseFragment implements SwipeRefreshLayout.On noConnectionLayout.setVisibility(View.VISIBLE); } - @Override - public void loadEmpty() { // 数据为空回调 - refreshLayout.setRefreshing(false); - loadingLayout.setVisibility(View.GONE); - recyclerView.setVisibility(View.GONE); - emptyLayout.setVisibility(View.VISIBLE); - refreshLayout.setEnabled(false); - - initInstallGame(); - } - // 连接上网络事件 public void onEventMainThread(EBNetworkState busNetworkState) { if (busNetworkState.isNetworkConnected()) { @@ -189,248 +100,25 @@ public class News1Fragment extends BaseFragment implements SwipeRefreshLayout.On } else if (adapter.isNetworkError()) { adapter.setNetworkError(false); adapter.notifyItemChanged(adapter.getItemCount() - 1); - adapter.addList(adapter.getConcernListSize()); + adapter.addList(adapter.getNewsListSize()); } } } - // Fragment界面切换事件 - public void onEventMainThread(EBUISwitch swith) { - if ("NewsFragment".equals(swith.getFrom())) { - if (swith.getPosition() == 0) { + // 资讯Fragment界面切换事件 + public void onEventMainThread(EBUISwitch busNine) { + if ("NewsFragment".equals(busNine.getFrom())) { + if (busNine.getPosition() == 0) { if (loadingLayout.getVisibility() == View.VISIBLE) { adapter.addList(0); } - } else if (swith.getPosition() == -2 || swith.getPosition() == -1) { - if (swith.getPosition() == -1) { - isInitInstallOver = true; - } else if (swith.getPosition() == -2) { - isInitConcernOcer = true; - } - - if (isInitConcernOcer && isInitInstallOver) { // 没有关注且初始化安装完成,显示推荐小版块 - refreshLayout.setRefreshing(false); - loadingLayout.setVisibility(View.GONE); - recyclerView.setVisibility(View.GONE); - emptyLayout.setVisibility(View.VISIBLE); - refreshLayout.setEnabled(false); - initInstallGame(); - } } } } - // 关注事件 - public void onEventMainThread(EBConcernChanged changed) { - emptyLayout.setVisibility(View.GONE); - refreshLayout.setEnabled(true); - refreshLayout.setRefreshing(true); - recyclerView.setVisibility(View.VISIBLE); - loadingLayout.setVisibility(View.VISIBLE); - adapter = new News1FragmentAdapter(News1Fragment.this); - recyclerView.setAdapter(adapter); - adapter.addList(0); - } - @Override - public void onRefresh() { + public void onRefresh() { // 刷新 handler.postDelayed(runnable, 1000); } - // 推荐关注改为手机安装的游戏+光环助手 - private void initInstallGame() { - recommendGameList.clear();//清除上一次记录 - concern.setEnabled(true);//防止上一次关注按钮不可以,导致重新刷新后也不可用 - - ObservableUtil.computation(new Observable.OnSubscribe>() { - @Override - public void call(Subscriber> subscriber) { - List installedList = concernManager.getInstalledGame(); - // 获取第一次安装时间 - HashMap packageNames; - for (ConcernInfo concernInfo : installedList) { - long time = 0; - packageNames = concernInfo.getPackageNames(); - for (String packageName : packageNames.keySet()) { - long installedTime = PackageUtils.getInstalledTime(getActivity(), packageName); - if (installedTime > time) { // 多版本获取最近安装版本时间 - time = installedTime; - } - } - concernInfo.setTime(time); - } - - // 对已安装的游戏排序 - Collections.sort(installedList, new Comparator() { - @Override - public int compare(ConcernInfo lhs, ConcernInfo rhs) { - return lhs.getTime() < rhs.getTime() ? -1 : (lhs.getTime() == rhs.getTime() ? 0 : 1); - } - }); - - subscriber.onNext(installedList); - subscriber.onCompleted(); - } - }, new Action1>() { - @Override - public void call(final List installedList) { - final List gameList = new ArrayList<>(); - - List> sequences = new ArrayList<>(); - for (int i = 0, size = installedList.size() + 1; i < size; i++) { - if (i == size - 1) { - sequences.add(RetrofitManager.getApi().getGameDigest("5618b86e8ab49e17088b4575"));// 光环助手ID - } else { - sequences.add(RetrofitManager.getApi().getGameDigest(installedList.get(i).getId())); - } - } - Observable.merge(sequences) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Response() { - @Override - public void onNext(GameEntity response) { - if (response.getId().equals("5618b86e8ab49e17088b4575")) { - recommendGameList.add(response); - } else { - gameList.add(response); - } - } - - @Override - public void onCompleted() { - initRecommendConcern(installedList, gameList); - } - }); - } - }); - } - - private void initRecommendConcern(List list, List gameList) { - for (ConcernInfo info : list) { - for (int i = 0; i < gameList.size(); i++) { - if (info.getId().equals(gameList.get(i).getId())) { - installGameList.add(gameList.get(i)); - break; - } - } - } - - RetrofitManager.getApi() - .getRemenkapai() - .map(new Func1, String>() { - @Override - public String call(List list) { - // 根据热门卡牌顺序进行排序 - for (int i = 0; i < installGameList.size(); i++) { - if (recommendGameList.size() >= 4) { - break; - } - for (int j = 0; j < list.size(); j++) { - if (list.get(j).getId().equals(installGameList.get(i).getId())) { - recommendGameList.add(installGameList.get(i)); - installGameList.remove(i); - i--; - break; - } - } - } - - // 推荐关注列表不足4个时,剩下的从已安装列表选取 - if (recommendGameList.size() < 4) { - for (GameEntity gameEntity : installGameList) { - if (recommendGameList.size() < 4 - && !concernManager.isConcern(gameEntity.getId())) { - recommendGameList.add(gameEntity); - } - } - } - - return null; - } - }) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Response(){ - @Override - public void onResponse(String response) { - initRecommendConcernView(); - } - }); - } - - private void initRecommendConcernView() { - if (recommendGameList.isEmpty()) { - return; - } - concernLayout.setVisibility(View.VISIBLE); - concernListLayout.removeAllViews(); - - SimpleDraweeView icon; - TextView name; - ImageView concern; - - GameEntity gameEntity; - for (int i = 0, size = recommendGameList.size(); i < size; i++) { - concernMap.put(i, true); - - gameEntity = recommendGameList.get(i); - - View view = View.inflate(getActivity(), R.layout.concern_item, null); - - icon = (SimpleDraweeView) view.findViewById(R.id.concern_item_icon); - name = (TextView) view.findViewById(R.id.concern_item_name); - concern = (ImageView) view.findViewById(R.id.concern_item_concern_iv); - view.findViewById(R.id.concern_item_concern).setVisibility(View.GONE); - - concern.setVisibility(View.VISIBLE); -// icon.setImageURI(gameEntity.getIcon()); - ImageUtils.display(icon, gameEntity.getIcon()); - name.setText(gameEntity.getName()); - concern.setImageResource(R.drawable.concern_select_true); - - final int finalI = i; - concern.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (concernMap.get(finalI)){ - ((ImageView) v).setImageResource(R.drawable.concern_select_false); - concernMap.put(finalI, false); - } else { - ((ImageView) v).setImageResource(R.drawable.concern_select_true); - concernMap.put(finalI, true); - } - - // 判断关注按钮是否可用 - isConcernAvailable(); - } - }); - - LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( - 0, ViewGroup.LayoutParams.MATCH_PARENT); - params.weight = 1; - concernListLayout.addView(view, params); - } - - concernListLayout.setVisibility(View.VISIBLE); - } - - // 判断关注按钮是否可用 - private void isConcernAvailable() { - boolean isEnabled = false; - for (int key : concernMap.keySet()) { - if (concernMap.get(key)){ - isEnabled = true; - break; - } - } - if (isEnabled) { - concern.setTextColor(getResources().getColor(R.color.theme)); - concern.setEnabled(true); - } else { - concern.setTextColor(getResources().getColor(R.color.btn_pause)); - concern.setEnabled(false); - } - } - } diff --git a/app/src/main/java/com/gh/gamecenter/news/News1FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/news/News1FragmentAdapter.java index 891c40949d..e5490921a2 100644 --- a/app/src/main/java/com/gh/gamecenter/news/News1FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/news/News1FragmentAdapter.java @@ -1,62 +1,38 @@ package com.gh.gamecenter.news; import android.content.Context; -import android.content.Intent; -import android.os.Bundle; import android.support.v7.widget.RecyclerView; -import android.text.Html; -import android.text.TextUtils; +import android.util.DisplayMetrics; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.LinearLayout; import android.widget.Toast; -import com.gh.base.AppController; import com.gh.common.constant.ItemViewType; -import com.gh.common.util.ConcernContentUtils; -import com.gh.common.util.ConcernUtils; import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DataUtils; import com.gh.common.util.DisplayUtils; import com.gh.common.util.ImageUtils; -import com.gh.common.util.LibaoUtils; -import com.gh.common.util.MD5Utils; import com.gh.common.util.NewsUtils; -import com.gh.common.util.PlatformUtils; -import com.gh.common.view.CardLinearLayout; -import com.gh.gamecenter.LibaoDetailActivity; -import com.gh.gamecenter.MessageDetailActivity; -import com.gh.gamecenter.NewsDetailActivity; import com.gh.gamecenter.R; -import com.gh.gamecenter.ShareCardActivity; -import com.gh.gamecenter.ShareCardPicActivity; -import com.gh.gamecenter.WebActivity; import com.gh.gamecenter.adapter.viewholder.FooterViewHolder; -import com.gh.gamecenter.adapter.viewholder.NewsDigestViewHolder; -import com.gh.gamecenter.db.LibaoDao; -import com.gh.gamecenter.db.info.ConcernInfo; -import com.gh.gamecenter.db.info.LibaoInfo; -import com.gh.gamecenter.entity.CommentnumEntity; -import com.gh.gamecenter.entity.ConcernEntity; -import com.gh.gamecenter.entity.LibaoEntity; -import com.gh.gamecenter.entity.LibaoStatusEntity; +import com.gh.gamecenter.adapter.viewholder.NewsImage1ViewHolder; +import com.gh.gamecenter.adapter.viewholder.NewsImage2ViewHolder; +import com.gh.gamecenter.adapter.viewholder.NewsImage3ViewHolder; +import com.gh.gamecenter.entity.NewsEntity; import com.gh.gamecenter.entity.ViewsEntity; import com.gh.gamecenter.listener.OnCallBackListener; -import com.gh.gamecenter.manager.CommentManager; -import com.gh.gamecenter.manager.ConcernManager; import com.gh.gamecenter.manager.VisitManager; import com.gh.gamecenter.retrofit.JSONObjectResponse; import com.gh.gamecenter.retrofit.ObservableUtil; import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.retrofit.RetrofitManager; -import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Locale; @@ -71,28 +47,18 @@ import rx.functions.Func1; import rx.schedulers.Schedulers; /** - * Created by khy on 2016/8/15. - * 资讯-关注-数据适配器 + * Created by khy on 2016/6/30. + * 资讯-资讯-数据适配器 */ -public class News1FragmentAdapter extends RecyclerView.Adapter { +public class News1FragmentAdapter extends RecyclerView.Adapter{ private News1Fragment fragment; private Context context; - private OnCallBackListener listener; - private List concernList; - private List gameIdList; - private List libaoStatusList; - - private List libaoInfo; - private LibaoDao libaoDao; - - private String key; - private String ids; + private List newsList; private int itemCount; - private int skipPosition; private int cardMargin; @@ -105,21 +71,15 @@ public class News1FragmentAdapter extends RecyclerView.Adapter(); - gameIdList = new ArrayList<>(); - libaoStatusList = new ArrayList<>(); + newsList = new ArrayList<>(); itemCount = 0; - skipPosition = -1; - isNetworkError = false; - isOver = false; isLoading = false; + isOver = false; + isNetworkError = false; - libaoDao = new LibaoDao(context); - libaoInfo = libaoDao.getAll(); - - cardMargin = (int) context.getResources().getDimension(R.dimen.cardview_margin); + cardMargin = (int)context.getResources().getDimension(R.dimen.cardview_margin); } // 加载数据 @@ -128,172 +88,46 @@ public class News1FragmentAdapter extends RecyclerView.Adapter() { - @Override - public void call(Subscriber subscriber) { - ConcernManager concernManager = new ConcernManager(context); - List concernList = concernManager.getConcernGame(); - if (concernList == null || concernList.isEmpty()) { - subscriber.onNext(null); - } else { - for (ConcernInfo concernInfo : concernList) { - gameIdList.add(concernInfo.getId()); - } - - // 对数据进行排序 - Collections.sort(gameIdList, new Comparator() { - @Override - public int compare(String lhs, String rhs) { - return lhs.compareTo(rhs); - } - }); - - StringBuilder keyBuilder = new StringBuilder(); - StringBuilder idsBuilder = new StringBuilder(); - for (int i = 0; i < gameIdList.size(); i++) { - keyBuilder.append(gameIdList.get(i)); - if (i < 5) { - idsBuilder.append(gameIdList.get(i)); - idsBuilder.append("-"); - } - } - key = MD5Utils.getContentMD5(keyBuilder.toString()); - ids = idsBuilder.substring(0, idsBuilder.length() - 1); - subscriber.onNext(""); - } - subscriber.onCompleted(); - } - }, new Action1() { - @Override - public void call(String s) { - if (s == null) { - listener.loadEmpty(); - } else { - loadDataByKey(offset); - } - } - }); - } else { - loadDataByKey(offset); - } - } - - private void loadDataByKey(final int offset) { RetrofitManager.getApi() - .getGuanZhuByKey(key, offset) - .map(new Func1, List>() { + .getZiXun(offset) + .map(new Func1, List>() { @Override - public List call(List list) { - // 去除重复数据 - return removeDuplicateData(concernList, list); + public List call(List list) { + // 去掉重复数据 + return NewsUtils.removeDuplicateData(newsList, list); } }) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Response>() { - @Override - public void onResponse(List response) { - isLoading = false; - - if (response.size() != 0) { - concernList.addAll(response); - itemCount += response.size(); - if (!fragment.isHidden() && !fragment.isEverpause()) { - notifyItemRangeInserted(concernList.size() - response.size(), response.size()); - } else { - notifyDataSetChanged(); - } - - getLibaoStatus(response); - getNewsViews(response, offset); - getNewsCommentnum(response, offset); - - } else { - isOver = true; - notifyItemChanged(getItemCount() - 1); - } - - if (offset == 0 && listener != null) { - if (concernList.isEmpty()) { - listener.loadEmpty(); - } else { - listener.loadDone(); - } - } - } - - @Override - public void onFailure(HttpException e) { - if (e != null && e.code() == 409) { - loadDataByGameId(offset); - ConcernUtils.updateConcernData(context, new JSONArray(gameIdList)); - return; - } - - isLoading = false; - - // 网络错误 - if (offset == 0) { - if (listener != null) { - listener.loadError(); - } - } else { - Toast.makeText(context, "加载失败,请检查网络状态", Toast.LENGTH_SHORT).show(); - isNetworkError = true; - notifyItemChanged(getItemCount() - 1); - } - } - }); - } - - private void loadDataByGameId(final int offset) { - RetrofitManager.getApi() - .getGuanZhuById(ids, offset) - .map(new Func1, List>() { + .subscribe(new Response>(){ @Override - public List call(List list) { - // 去除重复数据 - return removeDuplicateData(concernList, list); - } - }) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Response>() { - @Override - public void onResponse(List response) { + public void onResponse(List response) { isLoading = false; if (response.size() != 0) { - concernList.addAll(response); + newsList.addAll(response); itemCount += response.size(); if (!fragment.isHidden() && !fragment.isEverpause()) { - notifyItemRangeInserted(concernList.size() - response.size(), response.size()); + notifyItemRangeInserted(newsList.size() - response.size(), response.size()); } else { notifyDataSetChanged(); } - - getNewsViews(response, offset); - getNewsCommentnum(response, offset); - getLibaoStatus(response); } else { isOver = true; notifyItemChanged(getItemCount() - 1); } if (offset == 0 && listener != null) { - if (concernList.isEmpty()) { - listener.loadEmpty(); - } else { - listener.loadDone(); - } + listener.loadDone(); } + + // 获取新闻阅读量 + getNewsViews(response, offset); } @Override public void onFailure(HttpException e) { isLoading = false; - // 网络错误 if (offset == 0) { if (listener != null) { @@ -308,56 +142,8 @@ public class News1FragmentAdapter extends RecyclerView.Adapter response) { - StringBuilder builder = new StringBuilder(); - for (int i = 0, size = response.size(); i < size; i++) { - if ("libao".equals(response.get(i).getType())){ - builder.append(response.get(i).getId()); - builder.append("-"); - } - } - if (builder.length() == 0) return; - builder.deleteCharAt(builder.length() - 1); - String ids = builder.toString(); - - LibaoUtils.getLibaoStatus(ids, new LibaoUtils.PostLibaoListener() { - @Override - public void postSucced(Object response) { - libaoStatusList.addAll((List)response); - notifyDataSetChanged(); - } - - @Override - public void postFailed(Throwable error) { - - } - }); - } - - - // 去除重复数据 - private static List removeDuplicateData(List sourceList, List rawList) { - if (sourceList == null || sourceList.isEmpty() - || rawList == null || rawList.isEmpty()) { - return rawList; - } - String id; - for (int i = 0; i < rawList.size(); i++) { - id = rawList.get(i).getId(); - for (ConcernEntity concernEntity : sourceList) { - if (id.equals(concernEntity.getId())) { - rawList.remove(i); - i--; - break; - } - } - } - return rawList; - } - // 获取新闻阅读量 - private void getNewsViews(final List list, final int start) { + private void getNewsViews(final List list, final int start) { if (list == null || list.isEmpty()) { return; } @@ -384,9 +170,9 @@ public class News1FragmentAdapter extends RecyclerView.Adapter list) { for (ViewsEntity viewsEntity : list) { - for (ConcernEntity concernEntity : concernList) { - if (viewsEntity.getId().equals(concernEntity.getId())) { - concernEntity.setViews(viewsEntity.getViews()); + for (NewsEntity newsEntity : newsList) { + if (viewsEntity.getId().equals(newsEntity.getId())) { + newsEntity.setViews(viewsEntity.getViews()); break; } } @@ -406,99 +192,23 @@ public class News1FragmentAdapter extends RecyclerView.Adapter list, final int start) { - if (list == null || list.isEmpty()) { - return; - } - ObservableUtil.computation(new Observable.OnSubscribe() { - @Override - public void call(Subscriber subscriber) { - StringBuilder builder = new StringBuilder(); - for (int i = 0, size = list.size(); i < size; i++) { - builder.append(list.get(i).getId()); - builder.append("-"); - } - builder.deleteCharAt(builder.length() - 1); - CommentManager.getInstance().addUrl(builder.toString()); - subscriber.onNext(builder.toString()); - subscriber.onCompleted(); - } - }, new Action1() { - @Override - public void call(String ids) { - RetrofitManager.getComment() - .getNewsCommentnum(ids) - .map(new Func1, String>() { - @Override - public String call(List list) { - for (CommentnumEntity commentnumEntity : list) { - for (ConcernEntity concernEntity : concernList) { - if (commentnumEntity.getId().equals(concernEntity.getId())) { - concernEntity.setCommentnum(commentnumEntity.getNum()); - break; - } - } - } - return null; - } - }) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Response() { - @Override - public void onResponse(String response) { - notifyItemRangeChanged(start, list.size()); - } - }); - } - }); - } - - // 统计新闻阅读量 - private void statNewsViews(final ConcernEntity concernEntity, final int position) { - RetrofitManager.getData().postNewsViews(concernEntity.getId()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new JSONObjectResponse(){ - @Override - public void onResponse(JSONObject response) { - if (response.length() != 0) { - try { - if ("success".equals(response.getString("status"))) { - concernEntity.setViews(concernEntity.getViews() + 1); - - notifyItemChanged(position); - - // 更新okhttp缓存数据 - VisitManager.updateOkhttpCache(concernEntity.getId()); - } - } catch (JSONException e) { - e.printStackTrace(); - } - } - } - }); - } - - @Override - public int getItemViewType(int position) { - if (position == concernList.size()) { - return ItemViewType.LOADING; - } else { - return ItemViewType.NEWS_DIGEST; - } - } - @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - if (viewType == ItemViewType.NEWS_DIGEST) { - View view = LayoutInflater.from(parent.getContext()). - inflate(R.layout.news_digest_item, parent, false); - return new NewsDigestViewHolder(view); + if (viewType == ItemViewType.NEWS_IMAGE1) { + View view = LayoutInflater.from(parent.getContext()).inflate( + R.layout.news_image1_item, parent, false); + return new NewsImage1ViewHolder(view); + } else if (viewType == ItemViewType.NEWS_IMAGE2) { + View view = LayoutInflater.from(parent.getContext()).inflate( + R.layout.news_image2_item, parent, false); + return new NewsImage2ViewHolder(view); + } else if (viewType == ItemViewType.NEWS_IMAGE3) { + View view = LayoutInflater.from(parent.getContext()).inflate( + R.layout.news_image3_item, parent, false); + return new NewsImage3ViewHolder(view); } else if (viewType == ItemViewType.LOADING) { - View view = LayoutInflater.from(parent.getContext()). - inflate(R.layout.refresh_footerview, parent, false); + View view = LayoutInflater.from(parent.getContext()).inflate( + R.layout.refresh_footerview, parent, false); return new FooterViewHolder(view); } return null; @@ -506,241 +216,144 @@ public class News1FragmentAdapter extends RecyclerView.Adapter kv = new HashMap<>(); + kv.put("名字", newsEntity.getTitle()); + kv.put("位置", String.valueOf(viewHolder.getPosition() + 1)); + DataUtils.onEvent(context, "点击", "资讯-资讯", kv); - // 最后一个 - if (position == concernList.size() - 1) { - ((CardLinearLayout) viewHolder.itemView).setBottom(true); - } else { - ((CardLinearLayout) viewHolder.itemView).setBottom(false); - } + DataCollectionUtils.uploadClick(context, "列表", "资讯-资讯", newsEntity.getTitle()); -// viewHolder.thumb.setImageURI(concernEntity.getGameIcon()); - ImageUtils.display(viewHolder.thumb, concernEntity.getGameIcon()); - viewHolder.title.setText(concernEntity.getGameName()); - NewsUtils.setNewsPublishOn(viewHolder.time, concernEntity.getTime()); - - if ("libao".equals(concernEntity.getType())) { - String content ; - if (concernEntity.getContent().contains("
    ")) { - content = concernEntity.getContent().replaceAll("
    ", " "); - } else { - content = concernEntity.getContent(); + //统计阅读量 + statNewsViews(newsEntity, viewHolder.getPosition()); + NewsUtils.startNewsDetailActivity(context, newsEntity, "(资讯-资讯)"); } - - String libaoCode = null; - viewHolder.imgLayout.removeAllViews(); - - if (TextUtils.isEmpty(concernEntity.getPlatform())) { - viewHolder.content.setText(concernEntity.getName() + "\n礼包内容:" + content ); - } else { - viewHolder.content.setText(concernEntity.getName() + "(限" + PlatformUtils.getInstance(context) - .getPlatformName(concernEntity.getPlatform()) + "版)\n礼包内容:" + content ); - } - viewHolder.comment.setVisibility(View.GONE); - viewHolder.share.setVisibility(View.GONE); - viewHolder.link.setImageResource(R.drawable.ic_libao); - - for (LibaoStatusEntity libaoStatusEntity : libaoStatusList) { - if (libaoStatusEntity.getId().equals(concernEntity.getId())) { - - if ("finish".equals(libaoStatusEntity.getStatus())) { - viewHolder.read.setText("已结束"); - } else { - viewHolder.read.setText("点击查看"); - } - - if (libaoInfo != null) { - for (LibaoInfo info : libaoInfo) { - if (info.getLibaoId().equals(concernEntity.getId()) || "linged".equals(info.getStatus())) { - if ("ling".equals(info.getStatus())) { - viewHolder.read.setText("已领取"); - } else { - viewHolder.read.setText("已淘号"); - } - - libaoCode = info.getCode(); - break; - } - } - } - } - } - - final String finalLibaoCode = libaoCode; - viewHolder.itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - for (LibaoStatusEntity libaoStatusEntity : libaoStatusList) { - if (concernEntity.getId().equals(libaoStatusEntity.getId())) { - AppController.put("libaoEntity", LibaoEntity.createLibaoEntity( - concernEntity, libaoStatusEntity, finalLibaoCode)); - } - } - skipPosition = viewHolder.getPosition(); - Intent intent = new Intent(context, LibaoDetailActivity.class); - intent.putExtra("entrance", "(资讯-关注)"); - fragment.startActivityForResult(intent, 0x122); - } - }); - return; - } - - viewHolder.comment.setVisibility(View.VISIBLE); - viewHolder.share.setVisibility(View.VISIBLE); - - if (concernEntity.getBrief() != null) { - viewHolder.content.setText(Html.fromHtml(concernEntity.getBrief())); - viewHolder.content.setMaxLines(100); - } else { - viewHolder.content.setText(Html.fromHtml(concernEntity.getContent())); - viewHolder.content.setMaxLines(5); - } - - if (concernEntity.getImg().isEmpty()) { - viewHolder.imgLayout.setVisibility(View.GONE); - viewHolder.imgLayout.removeAllViews(); - } else { - viewHolder.imgLayout.setVisibility(View.VISIBLE); - viewHolder.imgLayout.removeAllViews(); - ConcernContentUtils.addContentPic(context, viewHolder.imgLayout, concernEntity.getImg(), "(资讯-关注)", - context.getResources().getDisplayMetrics().widthPixels - DisplayUtils.dip2px(context, 34)); - } - - int views = concernEntity.getViews(); + }); +// viewHolder.thumb.setImageURI(newsEntity.getThumbnail().getUrl().get(0)); + ImageUtils.display(viewHolder.thumb, newsEntity.getThumbnail().getUrl().get(0)); + viewHolder.title.setText(newsEntity.getTitle()); + int views = newsEntity.getViews(); if (views == 0) { viewHolder.read.setVisibility(View.GONE); } else { viewHolder.read.setVisibility(View.VISIBLE); viewHolder.read.setText(String.format(Locale.getDefault(), "阅读 %d", views)); } + NewsUtils.setNewsType(viewHolder.type, newsEntity.getType(), newsEntity.getPriority(), position); + } - int commentnum = concernEntity.getCommentnum(); - if (commentnum == 0) { - viewHolder.commentnum.setVisibility(View.GONE); - } else { - viewHolder.commentnum.setVisibility(View.VISIBLE); - if (commentnum > 999) { - viewHolder.commentnum.setText(R.string.thousand); - } else { - viewHolder.commentnum.setText(String.valueOf(commentnum)); - } - } + private void initNewsImage2ViewHolder(final NewsImage2ViewHolder viewHolder, int position) { - if (concernEntity.getLink() != null) { - viewHolder.link.setImageResource(R.drawable.ic_link); - } else { - viewHolder.link.setImageResource(R.drawable.concern_message_icon); - } + final NewsEntity newsEntity = newsList.get(position); - viewHolder.comment.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - skipPosition = viewHolder.getPosition(); - concernEntity.setItemHeight(viewHolder.itemView.getHeight()); - AppController.put("ConcernEntity", concernEntity); - Intent intent = new Intent(context, MessageDetailActivity.class); - intent.putExtra("entrance", "(资讯-关注)"); - fragment.startActivityForResult(intent, 0x125); - } - }); + DisplayMetrics outMetrics = new DisplayMetrics(); + fragment.getActivity().getWindowManager().getDefaultDisplay().getMetrics(outMetrics); + int width = (outMetrics.widthPixels - DisplayUtils.dip2px(context, 56)) / 3; + int height = (int) (width * 3 / 4f); - viewHolder.share.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - String shareContent; - if (concernEntity.getBrief() != null) { - shareContent = concernEntity.getBrief(); - } else { - shareContent = concernEntity.getContent(); - } - if (concernEntity.getImg() != null && concernEntity.getImg().size() > 0) { - Intent intent = new Intent(context, ShareCardPicActivity.class); - Bundle bundle = new Bundle(); - bundle.putString("gameName", concernEntity.getGameName()); - bundle.putString("gameIconUrl", concernEntity.getGameIcon()); - bundle.putString("shareContent", shareContent); - if (concernEntity.getLink() == null){ - bundle.putString("newsId", concernEntity.getId()); - } - bundle.putStringArrayList("shareArrImg", (ArrayList) concernEntity.getImg()); - intent.putExtras(bundle); - intent.putExtra("entrance", "(资讯-关注)"); - context.startActivity(intent); - } else { - Intent intent = new Intent(context, ShareCardActivity.class); - Bundle bundle = new Bundle(); - bundle.putString("gameName", concernEntity.getGameName()); - bundle.putString("gameIconUrl", concernEntity.getGameIcon()); - bundle.putString("shareContent", shareContent); - if (concernEntity.getLink() == null){ - bundle.putString("newsId", concernEntity.getId()); - } - intent.putExtras(bundle); - intent.putExtra("entrance", "(资讯-关注)"); - context.startActivity(intent); - } - } - }); + LinearLayout.LayoutParams lparams1 = new LinearLayout.LayoutParams(width, height); + viewHolder.thumb1.setLayoutParams(lparams1); + + LinearLayout.LayoutParams lparams2 = new LinearLayout.LayoutParams(width, height); + lparams2.leftMargin = DisplayUtils.dip2px(context, 8); + viewHolder.thumb2.setLayoutParams(lparams2); + + LinearLayout.LayoutParams lparams3 = new LinearLayout.LayoutParams(width, height); + lparams3.leftMargin = DisplayUtils.dip2px(context, 8); + viewHolder.thumb3.setLayoutParams(lparams3); viewHolder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Map kv = new HashMap<>(); - kv.put("名字", concernEntity.getTitle()); + kv.put("名字", newsEntity.getTitle()); kv.put("位置", String.valueOf(viewHolder.getPosition() + 1)); - DataUtils.onEvent(context, "点击", "资讯-关注", kv); + DataUtils.onEvent(context, "点击", "资讯-资讯", kv); - DataCollectionUtils.uploadClick(context, "列表", "资讯-关注", concernEntity.getTitle()); + DataCollectionUtils.uploadClick(context, "列表", "资讯-资讯", newsEntity.getTitle()); //统计阅读量 - statNewsViews(concernEntity, viewHolder.getPosition()); - AppController.put("ConcernEntity", concernEntity); - skipPosition = viewHolder.getPosition(); - if (concernEntity.getLink() != null){ - Intent intent = new Intent(context, WebActivity.class); - intent.putExtra("url", concernEntity.getLink()); - intent.putExtra("gameName", concernEntity.getGameName()); - intent.putExtra("newsId", concernEntity.getId()); - intent.putExtra("entrance", "(资讯-关注)"); - fragment.startActivityForResult(intent, 0x125); - }else { - Intent intent = new Intent(context, NewsDetailActivity.class); - intent.putExtra("newsId", concernEntity.getId()); - intent.putExtra("entrance", "(资讯-关注)"); - fragment.startActivityForResult(intent, 0x125); - } - + statNewsViews(newsEntity, viewHolder.getPosition()); + NewsUtils.startNewsDetailActivity(context, newsEntity, "(资讯-资讯)"); } }); + viewHolder.title.setText(newsEntity.getTitle()); +// viewHolder.thumb1.setImageURI(newsEntity.getThumbnail().getUrl().get(0)); +// viewHolder.thumb2.setImageURI(newsEntity.getThumbnail().getUrl().get(1)); +// viewHolder.thumb3.setImageURI(newsEntity.getThumbnail().getUrl().get(2)); + ImageUtils.display(viewHolder.thumb1, newsEntity.getThumbnail().getUrl().get(0)); + ImageUtils.display(viewHolder.thumb2, newsEntity.getThumbnail().getUrl().get(1)); + ImageUtils.display(viewHolder.thumb3, newsEntity.getThumbnail().getUrl().get(2)); + int views = newsEntity.getViews(); + if (views == 0) { + viewHolder.read.setVisibility(View.GONE); + } else { + viewHolder.read.setVisibility(View.VISIBLE); + viewHolder.read.setText(String.format(Locale.getDefault(), "阅读 %d", views)); + } + NewsUtils.setNewsType(viewHolder.type, newsEntity.getType(), newsEntity.getPriority(), position); + } + + private void initNewsImage3ViewHolder(final NewsImage3ViewHolder viewHolder, int position) { + + final NewsEntity newsEntity = newsList.get(position); + + viewHolder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Map kv = new HashMap<>(); + kv.put("名字", newsEntity.getTitle()); + kv.put("位置", String.valueOf(viewHolder.getPosition() + 1)); + DataUtils.onEvent(context, "点击", "资讯-资讯", kv); + + DataCollectionUtils.uploadClick(context, "列表", "资讯-资讯", newsEntity.getTitle()); + + //统计阅读量 + statNewsViews(newsEntity, viewHolder.getPosition()); + NewsUtils.startNewsDetailActivity(context, newsEntity, "(资讯-资讯)"); + } + }); + viewHolder.title.setText(newsEntity.getTitle()); + ImageUtils.getInstance().display(viewHolder.thumb, newsEntity.getThumbnail().getUrl().get(0), + context.getResources().getDisplayMetrics().widthPixels - DisplayUtils.dip2px(context, 40)); + int views = newsEntity.getViews(); + if (views == 0) { + viewHolder.read.setVisibility(View.GONE); + } else { + viewHolder.read.setVisibility(View.VISIBLE); + viewHolder.read.setText(String.format(Locale.getDefault(), "阅读 %d", views)); + } + NewsUtils.setNewsType(viewHolder.type, newsEntity.getType(), newsEntity.getPriority(), position); } private void initFooterViewHolder(FooterViewHolder viewHolder) { if (isNetworkError) { viewHolder.loading.setVisibility(View.GONE); viewHolder.hint.setText("加载失败,点击重试"); + viewHolder.itemView.setClickable(true); viewHolder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { isNetworkError = false; notifyItemChanged(getItemCount() - 1); - loadDataByKey(concernList.size()); + addList(newsList.size()); } }); } else if (isOver) { @@ -756,28 +369,51 @@ public class News1FragmentAdapter extends RecyclerView.Adapter concernGame; @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); - init(R.layout.fragment_news2); - refreshLayout.setColorSchemeResources(R.color.theme); - refreshLayout.setOnRefreshListener(this); - recyclerView.setHasFixedSize(true); - layoutManager = new LinearLayoutManager(getActivity()); - recyclerView.setLayoutManager(layoutManager); - adapter = new News2FragmentAdapter(News2Fragment.this); - recyclerView.setAdapter(adapter); - recyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() { + mStrategyAdapter = new News2FragmentAdapter(this, mNoData); + final LinearLayoutManager layoutManager = new LinearLayoutManager(getContext()); + mStrategyRv.setLayoutManager(layoutManager); + mStrategyRv.setAdapter(mStrategyAdapter); + + mStrategyRv.setOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { - if (newState == RecyclerView.SCROLL_STATE_IDLE - && layoutManager.findLastVisibleItemPosition() + 1 == adapter.getItemCount()) { - if (!adapter.isOver() && !adapter.isLoading() && !adapter.isNetworkError()) { - adapter.addList(adapter.getNewsListSize()); - } + super.onScrollStateChanged(recyclerView, newState); + if(layoutManager.findLastVisibleItemPosition() + 1 == mStrategyAdapter.getItemCount() + && newState == RecyclerView.SCROLL_STATE_IDLE && mStrategyAdapter.isCanLoading()) { + mStrategyAdapter.addList(mStrategyAdapter.getItemCount()-1); } } }); + + // 防抖处理 + RxView.clicks(mSelectGameRl) + .throttleFirst(1, TimeUnit.SECONDS) + .subscribe(new Action1() { + @Override + public void call(Void aVoid) { + ConcernManager concernManager = new ConcernManager(getContext()); + concernGame = concernManager.getConcernGame(); + + if (concernGame.size() >1 || (concernGame.size() == 1 + && !concernGame.get(0).getId().equals("5618b86e8ab49e17088b4575"))) { + OnSelectGameClickListener(); + } else { + Intent intent = new Intent(getContext(), ConcernActivity.class); + intent.putExtra("entrance", "资讯(攻略-我关注的游戏)"); + getContext().startActivity(intent); + } + } + }); + } + + public void OnSelectGameClickListener() { + isShowPopupBg(true); + + View contentView = View.inflate(getContext(), R.layout.dialog_strategy_select_game, null); + RecyclerView selectGameRv = (RecyclerView) contentView.findViewById(R.id.dialog_strategy_select_game_rv); + RelativeLayout allGameRl = (RelativeLayout) contentView.findViewById(R.id.dialog_strategy_select_game_rl); + + if (concernGame.size() > 7) { + ViewGroup.LayoutParams params = selectGameRv.getLayoutParams(); + params.height = DisplayUtils.dip2px(getContext(), 43 * 6); + selectGameRv.setLayoutParams(params); + } + + int widthPixels = getContext().getResources().getDisplayMetrics().widthPixels; + allGameRl.setLayoutParams(new LinearLayout.LayoutParams((widthPixels * 9)/10, + DisplayUtils.dip2px(getContext(), 50))); + + allGameRl.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + isShowPopupBg(false); + Intent intent = new Intent(getContext(), ConcernActivity.class); + intent.putExtra("entrance", "资讯(攻略-我关注的游戏)"); + getContext().startActivity(intent); + } + }); + + selectGameRv.setLayoutManager(new MeasureHeightLayoutManager(getContext())); + selectGameRv.setAdapter(new News2FragmentDialogAdapter(News2Fragment.this)); + + + dialog = new Dialog(getContext()); + + dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); + dialog.setContentView(contentView); + dialog.show(); + + + contentView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + isShowPopupBg(false); + } + }); } - @OnClick(R.id.reuse_no_connection) - public void reconnection() { // 重新连接 - refreshLayout.setRefreshing(true); - recyclerView.setVisibility(View.VISIBLE); - loadingLayout.setVisibility(View.VISIBLE); - noConnectionLayout.setVisibility(View.GONE); - handler.postDelayed(runnable, 1000); - } - - @Override - public void loadDone() { // 数据加载成功回调 - refreshLayout.setRefreshing(false); - loadingLayout.setVisibility(View.GONE); - } - - @Override - public void loadError() { // 数据加载失败回调 - refreshLayout.setRefreshing(false); - loadingLayout.setVisibility(View.GONE); - recyclerView.setVisibility(View.GONE); - noConnectionLayout.setVisibility(View.VISIBLE); - } - - // 连接上网络事件 - public void onEventMainThread(EBNetworkState busNetworkState) { - if (busNetworkState.isNetworkConnected()) { - if (noConnectionLayout.getVisibility() == View.VISIBLE) { - reconnection(); - } else if (adapter.isNetworkError()) { - adapter.setNetworkError(false); - adapter.notifyItemChanged(adapter.getItemCount() - 1); - adapter.addList(adapter.getNewsListSize()); - } - } - } - - // 资讯Fragment界面切换事件 - public void onEventMainThread(EBUISwitch busNine) { - if ("NewsFragment".equals(busNine.getFrom())) { - if (busNine.getPosition() == 1) { - if (loadingLayout.getVisibility() == View.VISIBLE) { - adapter.addList(0); - } + public void isShowPopupBg(boolean isShow) { + if(!isShow) { + if (dialog != null) { + dialog.cancel(); } } } @Override - public void onRefresh() { // 刷新 - handler.postDelayed(runnable, 1000); + public void selectPosition(int position, ConcernInfo concernInfo) { + isShowPopupBg(false); + Intent intent = new Intent(getContext(), GameNewsActivity.class); + intent.putExtra("gameName", concernInfo.getGameName()); + intent.putExtra("gameId", concernInfo.getId()); + getContext().startActivity(intent); } + // 关注事件 + public void onEventMainThread(EBConcernChanged changed) { + + } } diff --git a/app/src/main/java/com/gh/gamecenter/news/News2FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/news/News2FragmentAdapter.java index fc8775ec5e..83a04c2bdf 100644 --- a/app/src/main/java/com/gh/gamecenter/news/News2FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/news/News2FragmentAdapter.java @@ -2,100 +2,82 @@ package com.gh.gamecenter.news; import android.content.Context; import android.support.v7.widget.RecyclerView; -import android.util.DisplayMetrics; +import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; -import android.widget.Toast; -import com.gh.common.constant.ItemViewType; -import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DataUtils; -import com.gh.common.util.DisplayUtils; -import com.gh.common.util.ImageUtils; import com.gh.common.util.NewsUtils; -import com.gh.common.view.CardLinearLayout; import com.gh.gamecenter.R; -import com.gh.gamecenter.adapter.viewholder.FooterViewHolder; -import com.gh.gamecenter.adapter.viewholder.NewsImage1ViewHolder; -import com.gh.gamecenter.adapter.viewholder.NewsImage2ViewHolder; -import com.gh.gamecenter.adapter.viewholder.NewsImage3ViewHolder; +import com.gh.gamecenter.adapter.viewholder.NewsFooterViewHolder; +import com.gh.gamecenter.adapter.viewholder.NewsTextViewHolder; import com.gh.gamecenter.entity.NewsEntity; -import com.gh.gamecenter.entity.ViewsEntity; -import com.gh.gamecenter.listener.OnCallBackListener; -import com.gh.gamecenter.manager.VisitManager; -import com.gh.gamecenter.retrofit.JSONObjectResponse; -import com.gh.gamecenter.retrofit.ObservableUtil; +import com.gh.gamecenter.manager.DataCollectionManager; import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.retrofit.RetrofitManager; -import org.json.JSONException; -import org.json.JSONObject; - import java.util.ArrayList; import java.util.HashMap; import java.util.List; -import java.util.Locale; import java.util.Map; import retrofit2.adapter.rxjava.HttpException; -import rx.Observable; -import rx.Subscriber; import rx.android.schedulers.AndroidSchedulers; -import rx.functions.Action1; import rx.functions.Func1; import rx.schedulers.Schedulers; /** - * Created by khy on 2016/6/30. - * 资讯-资讯-数据适配器 + * Created by khy on 2017/4/7. + * 资讯-攻略适配器 */ -public class News2FragmentAdapter extends RecyclerView.Adapter{ +public class News2FragmentAdapter extends RecyclerView.Adapter { + private Context mContext; - private News2Fragment fragment; - private Context context; - private OnCallBackListener listener; + private News2Fragment news2Fragment; - private List newsList; + private LinearLayout mNoData; - private int itemCount; + private List mNewsList; - private int cardMargin; + private String entrance; + private boolean isRemove; private boolean isLoading; - private boolean isOver; private boolean isNetworkError; - public News2FragmentAdapter(News2Fragment fragment) { - this.fragment = fragment; - this.context = fragment.getActivity(); - this.listener = fragment; + public News2FragmentAdapter(News2Fragment news2Fragment, LinearLayout noData) { + this.news2Fragment = news2Fragment; + this.mContext = news2Fragment.getContext(); + this.mNoData = noData; - newsList = new ArrayList<>(); + entrance = ""; - itemCount = 0; + mNewsList = new ArrayList<>(); isLoading = false; - isOver = false; + isRemove = false; isNetworkError = false; - cardMargin = (int)context.getResources().getDimension(R.dimen.cardview_margin); + addList(0); } - // 加载数据 public void addList(final int offset) { - if (isLoading) { - return; - } isLoading = true; - RetrofitManager.getApi() - .getZiXun(offset) + if (offset == 0) { + mNewsList.clear(); + notifyDataSetChanged(); + } + + RetrofitManager + .getApi() + .getNews("攻略", 20, offset) .map(new Func1, List>() { @Override - public List call(List list) { - // 去掉重复数据 - return NewsUtils.removeDuplicateData(newsList, list); + public List call(List newsEntities) { + return NewsUtils.removeDuplicateData(mNewsList, newsEntities); + } }) .subscribeOn(Schedulers.io()) @@ -103,379 +85,137 @@ public class News2FragmentAdapter extends RecyclerView.Adapter>(){ @Override public void onResponse(List response) { - isLoading = false; - if (response.size() != 0) { - newsList.addAll(response); - itemCount += response.size(); - if (!fragment.isHidden() && !fragment.isEverpause()) { - notifyItemRangeInserted(newsList.size() - response.size(), response.size()); - } else { + mNewsList.addAll(response); + if (mNewsList.size() <= 20) { notifyDataSetChanged(); + } else { + notifyItemRangeInserted(mNewsList.size() - response.size(), response.size()); } - } else { - isOver = true; + notifyItemChanged(getItemCount() - response.size() - 2); + } + + if (response.size() < 20) { + isRemove = true; notifyItemChanged(getItemCount() - 1); } - if (offset == 0 && listener != null) { - listener.loadDone(); + if (mNewsList.size() == 0) { + mNoData.setVisibility(View.VISIBLE); + notifyItemChanged(0); + } else { + mNoData.setVisibility(View.GONE); } - - // 获取新闻阅读量 - getNewsViews(response, offset); + isLoading = false; } @Override public void onFailure(HttpException e) { + isNetworkError = true; isLoading = false; - // 网络错误 - if (offset == 0) { - if (listener != null) { - listener.loadError(); - } - } else { - Toast.makeText(context, "加载失败,请检查网络状态", Toast.LENGTH_SHORT).show(); - isNetworkError = true; - notifyItemChanged(getItemCount() - 1); - } + notifyItemChanged(getItemCount() - 1); } }); } - // 获取新闻阅读量 - private void getNewsViews(final List list, final int start) { - if (list == null || list.isEmpty()) { - return; + @Override + public int getItemViewType(int position) { + if (position == getItemCount() - 1) { + return 0; + } else { + return 1; } - ObservableUtil.computation(new Observable.OnSubscribe() { - @Override - public void call(Subscriber subscriber) { - StringBuilder builder = new StringBuilder(); - for (int i = 0, size = list.size(); i < size; i++) { - builder.append(list.get(i).getId()); - builder.append("-"); - } - builder.deleteCharAt(builder.length() - 1); - String ids = builder.toString(); - VisitManager.getInstance().addUrl(ids); - subscriber.onNext(ids); - subscriber.onCompleted(); - } - }, new Action1() { - @Override - public void call(String ids) { - RetrofitManager.getData() - .getNewsViews(ids) - .map(new Func1, String>() { - @Override - public String call(List list) { - for (ViewsEntity viewsEntity : list) { - for (NewsEntity newsEntity : newsList) { - if (viewsEntity.getId().equals(newsEntity.getId())) { - newsEntity.setViews(viewsEntity.getViews()); - break; - } - } - } - return null; - } - }) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Response() { - @Override - public void onResponse(String response) { - notifyItemRangeChanged(start, list.size()); - } - }); - } - }); } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - if (viewType == ItemViewType.NEWS_IMAGE1) { - View view = LayoutInflater.from(parent.getContext()).inflate( - R.layout.news_image1_item, parent, false); - return new NewsImage1ViewHolder(view); - } else if (viewType == ItemViewType.NEWS_IMAGE2) { - View view = LayoutInflater.from(parent.getContext()).inflate( - R.layout.news_image2_item, parent, false); - return new NewsImage2ViewHolder(view); - } else if (viewType == ItemViewType.NEWS_IMAGE3) { - View view = LayoutInflater.from(parent.getContext()).inflate( - R.layout.news_image3_item, parent, false); - return new NewsImage3ViewHolder(view); - } else if (viewType == ItemViewType.LOADING) { - View view = LayoutInflater.from(parent.getContext()).inflate( - R.layout.refresh_footerview, parent, false); - return new FooterViewHolder(view); + if (viewType == 1) { + View view = LayoutInflater.from(mContext).inflate(R.layout.news_text_item, parent, false); + return new NewsTextViewHolder(view); + } else { + View view = LayoutInflater.from(mContext).inflate(R.layout.news_footer_item, parent, false); + return new NewsFooterViewHolder(view); } - return null; } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { - if (holder instanceof NewsImage1ViewHolder) { - initNewsImage1ViewHolder((NewsImage1ViewHolder) holder, position); - } else if (holder instanceof NewsImage2ViewHolder) { - initNewsImage2ViewHolder((NewsImage2ViewHolder) holder, position); - } else if (holder instanceof NewsImage3ViewHolder) { - initNewsImage3ViewHolder((NewsImage3ViewHolder) holder, position); - } else if (holder instanceof FooterViewHolder) { - initFooterViewHolder((FooterViewHolder) holder); - } - } + if (holder instanceof NewsTextViewHolder) { + final NewsTextViewHolder viewHolder = (NewsTextViewHolder) holder; + final NewsEntity newsEntity = mNewsList.get(position); - private void initNewsImage1ViewHolder(final NewsImage1ViewHolder viewHolder, int position) { - - final NewsEntity newsEntity = newsList.get(position); - - // 第一个 - if (position == 0) { - ((CardLinearLayout) viewHolder.itemView).setmTop(cardMargin); - } else { - ((CardLinearLayout) viewHolder.itemView).setmTop(0); - } - - // 最后一个 - if (position + 1 == newsList.size()) { - ((CardLinearLayout) viewHolder.itemView).setBottom(true); - } else { - ((CardLinearLayout) viewHolder.itemView).setBottom(false); - } - - viewHolder.itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - Map kv = new HashMap<>(); - kv.put("名字", newsEntity.getTitle()); - kv.put("位置", String.valueOf(viewHolder.getPosition() + 1)); - DataUtils.onEvent(context, "点击", "资讯-资讯", kv); - - DataCollectionUtils.uploadClick(context, "列表", "资讯-资讯", newsEntity.getTitle()); - - //统计阅读量 - statNewsViews(newsEntity, viewHolder.getPosition()); - NewsUtils.startNewsDetailActivity(context, newsEntity, "(资讯-资讯)"); + if (!TextUtils.isEmpty(newsEntity.getType())) { + if (position == 0 && newsEntity.getPriority() != 0) { + viewHolder.type.setText("置顶"); + } else if (newsEntity.getPriority() != 0) { + viewHolder.type.setText("热门"); + } else { + viewHolder.type.setText(newsEntity.getType()); + } + viewHolder.type.setVisibility(View.VISIBLE); + } else { + viewHolder.type.setVisibility(View.GONE); } - }); -// viewHolder.thumb.setImageURI(newsEntity.getThumbnail().getUrl().get(0)); - ImageUtils.display(viewHolder.thumb, newsEntity.getThumbnail().getUrl().get(0)); - viewHolder.title.setText(newsEntity.getTitle()); - int views = newsEntity.getViews(); - if (views == 0) { - viewHolder.read.setVisibility(View.GONE); - } else { - viewHolder.read.setVisibility(View.VISIBLE); - viewHolder.read.setText(String.format(Locale.getDefault(), "阅读 %d", views)); - } - NewsUtils.setNewsType(viewHolder.type, newsEntity.getType()); - } - private void initNewsImage2ViewHolder(final NewsImage2ViewHolder viewHolder, int position) { - - final NewsEntity newsEntity = newsList.get(position); - - // 第一个 - if (position == 0) { - ((CardLinearLayout) viewHolder.itemView).setmTop(cardMargin); - } else { - ((CardLinearLayout) viewHolder.itemView).setmTop(0); - } - - // 最后一个 - if (position + 1 == newsList.size()) { - ((CardLinearLayout) viewHolder.itemView).setBottom(true); - } else { - ((CardLinearLayout) viewHolder.itemView).setBottom(false); - } - - DisplayMetrics outMetrics = new DisplayMetrics(); - fragment.getActivity().getWindowManager().getDefaultDisplay().getMetrics(outMetrics); - int width = (outMetrics.widthPixels - DisplayUtils.dip2px(context, 56)) / 3; - int height = (int) (width * 3 / 4f); - - LinearLayout.LayoutParams lparams1 = new LinearLayout.LayoutParams(width, height); - viewHolder.thumb1.setLayoutParams(lparams1); - - LinearLayout.LayoutParams lparams2 = new LinearLayout.LayoutParams(width, height); - lparams2.leftMargin = DisplayUtils.dip2px(context, 8); - viewHolder.thumb2.setLayoutParams(lparams2); - - LinearLayout.LayoutParams lparams3 = new LinearLayout.LayoutParams(width, height); - lparams3.leftMargin = DisplayUtils.dip2px(context, 8); - viewHolder.thumb3.setLayoutParams(lparams3); - - viewHolder.itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - Map kv = new HashMap<>(); - kv.put("名字", newsEntity.getTitle()); - kv.put("位置", String.valueOf(viewHolder.getPosition() + 1)); - DataUtils.onEvent(context, "点击", "资讯-资讯", kv); - - DataCollectionUtils.uploadClick(context, "列表", "资讯-资讯", newsEntity.getTitle()); - - //统计阅读量 - statNewsViews(newsEntity, viewHolder.getPosition()); - NewsUtils.startNewsDetailActivity(context, newsEntity, "(资讯-资讯)"); - } - }); - viewHolder.title.setText(newsEntity.getTitle()); -// viewHolder.thumb1.setImageURI(newsEntity.getThumbnail().getUrl().get(0)); -// viewHolder.thumb2.setImageURI(newsEntity.getThumbnail().getUrl().get(1)); -// viewHolder.thumb3.setImageURI(newsEntity.getThumbnail().getUrl().get(2)); - ImageUtils.display(viewHolder.thumb1, newsEntity.getThumbnail().getUrl().get(0)); - ImageUtils.display(viewHolder.thumb2, newsEntity.getThumbnail().getUrl().get(1)); - ImageUtils.display(viewHolder.thumb3, newsEntity.getThumbnail().getUrl().get(2)); - int views = newsEntity.getViews(); - if (views == 0) { - viewHolder.read.setVisibility(View.GONE); - } else { - viewHolder.read.setVisibility(View.VISIBLE); - viewHolder.read.setText(String.format(Locale.getDefault(), "阅读 %d", views)); - } - NewsUtils.setNewsType(viewHolder.type, newsEntity.getType()); - } - - private void initNewsImage3ViewHolder(final NewsImage3ViewHolder viewHolder, int position) { - - final NewsEntity newsEntity = newsList.get(position); - - // 第一个 - if (position == 0) { - ((CardLinearLayout) viewHolder.itemView).setmTop(cardMargin); - } else { - ((CardLinearLayout) viewHolder.itemView).setmTop(0); - } - - // 最后一个 - if (position + 1 == newsList.size()) { - ((CardLinearLayout) viewHolder.itemView).setBottom(true); - } else { - ((CardLinearLayout) viewHolder.itemView).setBottom(false); - } - - viewHolder.itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - Map kv = new HashMap<>(); - kv.put("名字", newsEntity.getTitle()); - kv.put("位置", String.valueOf(viewHolder.getPosition() + 1)); - DataUtils.onEvent(context, "点击", "资讯-资讯", kv); - - DataCollectionUtils.uploadClick(context, "列表", "资讯-资讯", newsEntity.getTitle()); - - //统计阅读量 - statNewsViews(newsEntity, viewHolder.getPosition()); - NewsUtils.startNewsDetailActivity(context, newsEntity, "(资讯-资讯)"); - } - }); - viewHolder.title.setText(newsEntity.getTitle()); - ImageUtils.getInstance().display(viewHolder.thumb, newsEntity.getThumbnail().getUrl().get(0), - context.getResources().getDisplayMetrics().widthPixels - DisplayUtils.dip2px(context, 40)); - int views = newsEntity.getViews(); - if (views == 0) { - viewHolder.read.setVisibility(View.GONE); - } else { - viewHolder.read.setVisibility(View.VISIBLE); - viewHolder.read.setText(String.format(Locale.getDefault(), "阅读 %d", views)); - } - NewsUtils.setNewsType(viewHolder.type, newsEntity.getType()); - } - - private void initFooterViewHolder(FooterViewHolder viewHolder) { - if (isNetworkError) { - viewHolder.loading.setVisibility(View.GONE); - viewHolder.hint.setText("加载失败,点击重试"); - viewHolder.itemView.setClickable(true); + viewHolder.type.setBackgroundResource(NewsUtils.getDrawableIdByType(newsEntity.getType())); + viewHolder.type.setText(newsEntity.getType()); + viewHolder.title.setText(newsEntity.getTitle()); viewHolder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - isNetworkError = false; - notifyItemChanged(getItemCount() - 1); - addList(newsList.size()); + Map kv = new HashMap<>(); + kv.put("名字", newsEntity.getTitle()); + kv.put("位置", String.valueOf(viewHolder.getPosition() + 1)); + DataUtils.onEvent(mContext, "点击", "游戏新闻详情", kv); + + Map map = new HashMap<>(); + map.put("page", "游戏新闻详情"); + map.put("news", newsEntity.getTitle()); + map.put("news_id", newsEntity.getId()); + DataCollectionManager.onEvent(mContext, "click-item", map); + + // 统计阅读量 + NewsUtils.statNewsViews(newsEntity.getId()); + NewsUtils.startNewsDetailActivity(mContext, newsEntity, entrance + "+(攻略[" + newsEntity.getTitle() + "])"); } }); - } else if (isOver) { - viewHolder.loading.setVisibility(View.GONE); - viewHolder.hint.setText("加载完毕"); - viewHolder.itemView.setClickable(false); } else { - viewHolder.loading.setVisibility(View.VISIBLE); - viewHolder.hint.setText("加载中..."); - viewHolder.itemView.setClickable(false); + final NewsFooterViewHolder footerViewHolder = ((NewsFooterViewHolder) holder); + if (mNoData.getVisibility() == View.VISIBLE) { + footerViewHolder.itemView.setVisibility(View.GONE); + }else{ + footerViewHolder.itemView.setVisibility(View.VISIBLE); + } + if (isRemove){ + footerViewHolder.hint.setText("加载完毕"); + footerViewHolder.loading.setVisibility(View.GONE); + }else if (isNetworkError){ + footerViewHolder.hint.setText("网络错误,点击重试!"); + footerViewHolder.loading.setVisibility(View.GONE); + } else { + footerViewHolder.hint.setText("加载中..."); + footerViewHolder.loading.setVisibility(View.VISIBLE); + } + footerViewHolder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (isNetworkError) { + isNetworkError = false; + footerViewHolder.hint.setText("加载中..."); + footerViewHolder.loading.setVisibility(View.VISIBLE); + addList(mNewsList.size()); + } + } + }); } } @Override public int getItemCount() { - if (itemCount == 0) { - return 0; - } - return itemCount + 1; + return mNewsList.size() + 1; } - @Override - public int getItemViewType(int position) { - if (position == newsList.size()) { - return ItemViewType.LOADING; - } - NewsEntity newsEntity = newsList.get(position); - if ("4x3".equals(newsEntity.getThumbnail().getType()) && newsEntity.getThumbnail().getUrl().size() == 3){ - return ItemViewType.NEWS_IMAGE2; - } - if ("3x1".equals(newsEntity.getThumbnail().getType())) { - return ItemViewType.NEWS_IMAGE3; - } - return ItemViewType.NEWS_IMAGE1; - } - - // 统计新闻阅读量 - private void statNewsViews(final NewsEntity newsEntity, final int position) { - RetrofitManager.getData().postNewsViews(newsEntity.getId()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new JSONObjectResponse(){ - @Override - public void onResponse(JSONObject response) { - if (response.length() != 0) { - try { - if ("success".equals(response.getString("status"))) { - newsEntity.setViews(newsEntity.getViews() + 1); - - notifyItemChanged(position); - - // 更新okhttp缓存数据 - VisitManager.updateOkhttpCache(newsEntity.getId()); - } - } catch (JSONException e) { - e.printStackTrace(); - } - } - } - }); - } - - public boolean isOver() { - return isOver; - } - - public boolean isLoading() { - return isLoading; - } - - public boolean isNetworkError() { - return isNetworkError; - } - - public void setNetworkError(boolean networkError) { - isNetworkError = networkError; - } - - public int getNewsListSize() { - return newsList.size(); + public boolean isCanLoading() { + return (!isNetworkError && !isLoading && !isRemove); } } diff --git a/app/src/main/java/com/gh/gamecenter/news/News2FragmentDialogAdapter.java b/app/src/main/java/com/gh/gamecenter/news/News2FragmentDialogAdapter.java new file mode 100644 index 0000000000..c8f2a933b6 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/news/News2FragmentDialogAdapter.java @@ -0,0 +1,87 @@ +package com.gh.gamecenter.news; + +import android.content.Context; +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.LinearLayout; + +import com.gh.common.util.DisplayUtils; +import com.gh.gamecenter.R; +import com.gh.gamecenter.adapter.viewholder.StrategyDialogViewHolder; +import com.gh.gamecenter.db.info.ConcernInfo; +import com.gh.gamecenter.manager.ConcernManager; + +import java.util.List; + +/** + * Created by khy on 2016/12/5. + * 资讯-攻略关注的游戏弹窗适配器 + */ +public class News2FragmentDialogAdapter extends RecyclerView.Adapter { + + private Context mContext; + + private OnStrategyDialogCallBackListener callBackListener; + + private List mConcernGame; + + public News2FragmentDialogAdapter(News2Fragment fragment) { + this.mContext = fragment.getContext(); + this.callBackListener = fragment; + + ConcernManager concernManager = new ConcernManager(fragment.getContext()); + List concernGame = concernManager.getConcernGame(); + for (int i = 0; i < concernGame.size(); i++) { + if ("5618b86e8ab49e17088b4575".equals(concernGame.get(i).getId())) { + concernGame.remove(i); + } + } + mConcernGame = concernGame; + } + + @Override + public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = LayoutInflater.from(mContext).inflate(R.layout.dialog_strategy_item, parent, false); + return new StrategyDialogViewHolder(view); + } + + @Override + public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) { + if (holder instanceof StrategyDialogViewHolder) { + StrategyDialogViewHolder viewHolder = ((StrategyDialogViewHolder) holder); + viewHolder.gameName.setText(mConcernGame.get(position).getGameName()); + viewHolder.selectIcon.setVisibility(View.GONE); + + LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.WRAP_CONTENT); + if (getItemCount() == 1) { + params.setMargins(0, DisplayUtils.dip2px(mContext, 12), 0, DisplayUtils.dip2px(mContext, 12)); + } else if (position == 0) { + params.setMargins(0, DisplayUtils.dip2px(mContext, 12), 0, 0); + } else if (position == getItemCount() - 1){ + params.setMargins(0, 0, 0, DisplayUtils.dip2px(mContext, 12)); + } else { + params.setMargins(0, 0, 0, 0); + } + viewHolder.itemView.setLayoutParams(params); + + viewHolder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + callBackListener.selectPosition(position, mConcernGame.get(position)); + } + }); + } + } + + @Override + public int getItemCount() { + return mConcernGame.size(); + } + + public interface OnStrategyDialogCallBackListener{ + void selectPosition(int position, ConcernInfo concernInfo); + } +} diff --git a/app/src/main/java/com/gh/gamecenter/news/News3Fragment.java b/app/src/main/java/com/gh/gamecenter/news/News3Fragment.java index 8ad96f0202..e68f93b8c3 100644 --- a/app/src/main/java/com/gh/gamecenter/news/News3Fragment.java +++ b/app/src/main/java/com/gh/gamecenter/news/News3Fragment.java @@ -10,6 +10,7 @@ import android.widget.LinearLayout; import com.gc.materialdesign.views.ProgressBarCircularIndeterminate; import com.gh.base.BaseFragment; +import com.gh.common.view.VerticalItemDecoration; import com.gh.gamecenter.R; import com.gh.gamecenter.eventbus.EBNetworkState; import com.gh.gamecenter.eventbus.EBUISwitch; @@ -53,6 +54,7 @@ public class News3Fragment extends BaseFragment implements SwipeRefreshLayout.On layoutManager = new LinearLayoutManager(getActivity()); recyclerView.setLayoutManager(layoutManager); adapter = new News3FragmentAdapter(News3Fragment.this); + recyclerView.addItemDecoration(new VerticalItemDecoration(getContext(), 8, true)); recyclerView.setAdapter(adapter); recyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() { @Override diff --git a/app/src/main/java/com/gh/gamecenter/news/News3FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/news/News3FragmentAdapter.java index 1ffba5ea2b..997ad918c8 100644 --- a/app/src/main/java/com/gh/gamecenter/news/News3FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/news/News3FragmentAdapter.java @@ -15,7 +15,6 @@ import com.gh.common.util.DataUtils; import com.gh.common.util.DisplayUtils; import com.gh.common.util.ImageUtils; import com.gh.common.util.NewsUtils; -import com.gh.common.view.CardLinearLayout; import com.gh.gamecenter.R; import com.gh.gamecenter.adapter.viewholder.FooterViewHolder; import com.gh.gamecenter.adapter.viewholder.NewsImage1ViewHolder; @@ -230,20 +229,6 @@ public class News3FragmentAdapter extends RecyclerView.Adapter recommendGameList; // 推荐关注的游戏 + private List installGameList; // 安装的游戏 + + private Map concernMap; // 记录选择关注 + + private ConcernManager concernManager; + + private boolean isInitConcernOcer; + private boolean isInitInstallOver; + + Runnable runnable = new Runnable() { + @Override + public void run() { + adapter = new News4FragmentAdapter(News4Fragment.this); + recyclerView.setAdapter(adapter); + adapter.addList(0); + } + }; + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + init(R.layout.fragment_news4); + + recommendGameList = new ArrayList<>(); + installGameList = new ArrayList<>(); + concernManager = new ConcernManager(getActivity()); + concernMap = new ArrayMap<>(); + + refreshLayout.setColorSchemeResources(R.color.theme); + refreshLayout.setOnRefreshListener(this); + + recyclerView.setHasFixedSize(true); + layoutManager = new LinearLayoutManager(getActivity()); + recyclerView.setLayoutManager(layoutManager); + recyclerView.addItemDecoration(new VerticalItemDecoration(getContext(), 8, true)); + adapter = new News4FragmentAdapter(News4Fragment.this); + recyclerView.setAdapter(adapter); + recyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() { + @Override + public void onScrollStateChanged(RecyclerView recyclerView, int newState) { + if (newState == RecyclerView.SCROLL_STATE_IDLE + && layoutManager.findLastVisibleItemPosition() + 1 == adapter.getItemCount()) { + if (!adapter.isOver() && !adapter.isLoading() && !adapter.isNetworkError()) { + adapter.addList(adapter.getConcernListSize()); + } + } + } + }); + } + + @Override + public void onActivityResult(int requestCode, int resultCode, Intent data) { + if (requestCode == 0x125 && adapter.getSkipPosition() != -1) { + // 更新对应位置 + adapter.notifyItemChanged(adapter.getSkipPosition()); + adapter.setSkipPosition(-1); + } else if (requestCode == 0x122 && adapter.getSkipPosition() != -1) { + adapter.initLibaoDao(); + adapter.notifyItemChanged(adapter.getSkipPosition()); + adapter.setSkipPosition(-1); + } + } + + @OnClick(R.id.news1_tv_concern) + public void concern() { // 关注 推荐关注的游戏 + ArrayList list = new ArrayList<>(); + for (int key : concernMap.keySet()) { + if (concernMap.get(key)) { + list.add(recommendGameList.get(key)); + } + } + if (list.size() != 0) { + if (list.size() == 1) { + concernManager.addByEntity(list.get(0)); + } else { + concernManager.addByList(list); + } + } + } + + @OnClick(R.id.reuse_no_connection) + public void reconnection() { // 重新连接 + refreshLayout.setRefreshing(true); + recyclerView.setVisibility(View.VISIBLE); + loadingLayout.setVisibility(View.VISIBLE); + noConnectionLayout.setVisibility(View.GONE); + handler.postDelayed(runnable, 1000); + } + + @Override + public void loadDone() { // 数据加载成功回调 + refreshLayout.setRefreshing(false); + emptyLayout.setVisibility(View.GONE); + concernLayout.setVisibility(View.GONE); + loadingLayout.setVisibility(View.GONE); + recyclerView.setVisibility(View.VISIBLE); + } + + @Override + public void loadError() { // 数据加载失败回调 + refreshLayout.setRefreshing(false); + loadingLayout.setVisibility(View.GONE); + recyclerView.setVisibility(View.GONE); + noConnectionLayout.setVisibility(View.VISIBLE); + } + + @Override + public void loadEmpty() { // 数据为空回调 + refreshLayout.setRefreshing(false); + loadingLayout.setVisibility(View.GONE); + recyclerView.setVisibility(View.GONE); + emptyLayout.setVisibility(View.VISIBLE); + refreshLayout.setEnabled(false); + + initInstallGame(); + } + + // 连接上网络事件 + public void onEventMainThread(EBNetworkState busNetworkState) { + if (busNetworkState.isNetworkConnected()) { + if (noConnectionLayout.getVisibility() == View.VISIBLE) { + reconnection(); + } else if (adapter.isNetworkError()) { + adapter.setNetworkError(false); + adapter.notifyItemChanged(adapter.getItemCount() - 1); + adapter.addList(adapter.getConcernListSize()); + } + } + } + + // Fragment界面切换事件 + public void onEventMainThread(EBUISwitch swith) { + if ("NewsFragment".equals(swith.getFrom())) { + if (swith.getPosition() == 3) { + if (loadingLayout.getVisibility() == View.VISIBLE) { + adapter.addList(0); + } + } else if (swith.getPosition() == -2 || swith.getPosition() == -1) { + if (swith.getPosition() == -1) { + isInitInstallOver = true; + } else if (swith.getPosition() == -2) { + isInitConcernOcer = true; + } + + if (isInitConcernOcer && isInitInstallOver) { // 没有关注且初始化安装完成,显示推荐小版块 + refreshLayout.setRefreshing(false); + loadingLayout.setVisibility(View.GONE); + recyclerView.setVisibility(View.GONE); + emptyLayout.setVisibility(View.VISIBLE); + refreshLayout.setEnabled(false); + initInstallGame(); + } + } + } + } + + // 关注事件 + public void onEventMainThread(EBConcernChanged changed) { + emptyLayout.setVisibility(View.GONE); + refreshLayout.setEnabled(true); + refreshLayout.setRefreshing(true); + recyclerView.setVisibility(View.VISIBLE); + loadingLayout.setVisibility(View.VISIBLE); + adapter = new News4FragmentAdapter(News4Fragment.this); + recyclerView.setAdapter(adapter); + adapter.addList(0); + } + + @Override + public void onRefresh() { + handler.postDelayed(runnable, 1000); + } + + // 推荐关注改为手机安装的游戏+光环助手 + private void initInstallGame() { + recommendGameList.clear();//清除上一次记录 + concern.setEnabled(true);//防止上一次关注按钮不可以,导致重新刷新后也不可用 + + ObservableUtil.computation(new Observable.OnSubscribe>() { + @Override + public void call(Subscriber> subscriber) { + List installedList = concernManager.getInstalledGame(); + // 获取第一次安装时间 + HashMap packageNames; + for (ConcernInfo concernInfo : installedList) { + long time = 0; + packageNames = concernInfo.getPackageNames(); + for (String packageName : packageNames.keySet()) { + long installedTime = PackageUtils.getInstalledTime(getActivity(), packageName); + if (installedTime > time) { // 多版本获取最近安装版本时间 + time = installedTime; + } + } + concernInfo.setTime(time); + } + + // 对已安装的游戏排序 + Collections.sort(installedList, new Comparator() { + @Override + public int compare(ConcernInfo lhs, ConcernInfo rhs) { + return lhs.getTime() < rhs.getTime() ? -1 : (lhs.getTime() == rhs.getTime() ? 0 : 1); + } + }); + + subscriber.onNext(installedList); + subscriber.onCompleted(); + } + }, new Action1>() { + @Override + public void call(final List installedList) { + final List gameList = new ArrayList<>(); + + List> sequences = new ArrayList<>(); + for (int i = 0, size = installedList.size() + 1; i < size; i++) { + if (i == size - 1) { + sequences.add(RetrofitManager.getApi().getGameDigest("5618b86e8ab49e17088b4575"));// 光环助手ID + } else { + sequences.add(RetrofitManager.getApi().getGameDigest(installedList.get(i).getId())); + } + } + Observable.merge(sequences) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Response() { + @Override + public void onNext(GameEntity response) { + if (response.getId().equals("5618b86e8ab49e17088b4575")) { + recommendGameList.add(response); + } else { + gameList.add(response); + } + } + + @Override + public void onCompleted() { + initRecommendConcern(installedList, gameList); + } + }); + } + }); + } + + private void initRecommendConcern(List list, List gameList) { + for (ConcernInfo info : list) { + for (int i = 0; i < gameList.size(); i++) { + if (info.getId().equals(gameList.get(i).getId())) { + installGameList.add(gameList.get(i)); + break; + } + } + } + + RetrofitManager.getApi() + .getRemenkapai() + .map(new Func1, String>() { + @Override + public String call(List list) { + // 根据热门卡牌顺序进行排序 + for (int i = 0; i < installGameList.size(); i++) { + if (recommendGameList.size() >= 4) { + break; + } + for (int j = 0; j < list.size(); j++) { + if (list.get(j).getId().equals(installGameList.get(i).getId())) { + recommendGameList.add(installGameList.get(i)); + installGameList.remove(i); + i--; + break; + } + } + } + + // 推荐关注列表不足4个时,剩下的从已安装列表选取 + if (recommendGameList.size() < 4) { + for (GameEntity gameEntity : installGameList) { + if (recommendGameList.size() < 4 + && !concernManager.isConcern(gameEntity.getId())) { + recommendGameList.add(gameEntity); + } + } + } + + return null; + } + }) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Response(){ + @Override + public void onResponse(String response) { + initRecommendConcernView(); + } + }); + } + + private void initRecommendConcernView() { + if (recommendGameList.isEmpty()) { + return; + } + concernLayout.setVisibility(View.VISIBLE); + concernListLayout.removeAllViews(); + + SimpleDraweeView icon; + TextView name; + ImageView concern; + + GameEntity gameEntity; + for (int i = 0, size = recommendGameList.size(); i < size; i++) { + concernMap.put(i, true); + + gameEntity = recommendGameList.get(i); + + View view = View.inflate(getActivity(), R.layout.concern_item, null); + + icon = (SimpleDraweeView) view.findViewById(R.id.concern_item_icon); + name = (TextView) view.findViewById(R.id.concern_item_name); + concern = (ImageView) view.findViewById(R.id.concern_item_concern_iv); + view.findViewById(R.id.concern_item_concern).setVisibility(View.GONE); + + concern.setVisibility(View.VISIBLE); +// icon.setImageURI(gameEntity.getIcon()); + ImageUtils.display(icon, gameEntity.getIcon()); + name.setText(gameEntity.getName()); + concern.setImageResource(R.drawable.concern_select_true); + + final int finalI = i; + concern.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (concernMap.get(finalI)){ + ((ImageView) v).setImageResource(R.drawable.concern_select_false); + concernMap.put(finalI, false); + } else { + ((ImageView) v).setImageResource(R.drawable.concern_select_true); + concernMap.put(finalI, true); + } + + // 判断关注按钮是否可用 + isConcernAvailable(); + } + }); + + LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( + 0, ViewGroup.LayoutParams.MATCH_PARENT); + params.weight = 1; + concernListLayout.addView(view, params); + } + + concernListLayout.setVisibility(View.VISIBLE); + } + + // 判断关注按钮是否可用 + private void isConcernAvailable() { + boolean isEnabled = false; + for (int key : concernMap.keySet()) { + if (concernMap.get(key)){ + isEnabled = true; + break; + } + } + if (isEnabled) { + concern.setTextColor(getResources().getColor(R.color.theme)); + concern.setEnabled(true); + } else { + concern.setTextColor(getResources().getColor(R.color.btn_pause)); + concern.setEnabled(false); + } + } + +} diff --git a/app/src/main/java/com/gh/gamecenter/news/News4FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/news/News4FragmentAdapter.java new file mode 100644 index 0000000000..d0ddba2b9a --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/news/News4FragmentAdapter.java @@ -0,0 +1,782 @@ +package com.gh.gamecenter.news; + +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.support.v7.widget.RecyclerView; +import android.text.Html; +import android.text.TextUtils; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Toast; + +import com.gh.base.AppController; +import com.gh.common.constant.ItemViewType; +import com.gh.common.util.ConcernContentUtils; +import com.gh.common.util.ConcernUtils; +import com.gh.common.util.DataCollectionUtils; +import com.gh.common.util.DataUtils; +import com.gh.common.util.DisplayUtils; +import com.gh.common.util.ImageUtils; +import com.gh.common.util.LibaoUtils; +import com.gh.common.util.MD5Utils; +import com.gh.common.util.NewsUtils; +import com.gh.common.util.PlatformUtils; +import com.gh.gamecenter.LibaoDetailActivity; +import com.gh.gamecenter.MessageDetailActivity; +import com.gh.gamecenter.NewsDetailActivity; +import com.gh.gamecenter.R; +import com.gh.gamecenter.ShareCardActivity; +import com.gh.gamecenter.ShareCardPicActivity; +import com.gh.gamecenter.WebActivity; +import com.gh.gamecenter.adapter.viewholder.FooterViewHolder; +import com.gh.gamecenter.adapter.viewholder.NewsDigestViewHolder; +import com.gh.gamecenter.db.LibaoDao; +import com.gh.gamecenter.db.info.ConcernInfo; +import com.gh.gamecenter.db.info.LibaoInfo; +import com.gh.gamecenter.entity.CommentnumEntity; +import com.gh.gamecenter.entity.ConcernEntity; +import com.gh.gamecenter.entity.LibaoEntity; +import com.gh.gamecenter.entity.LibaoStatusEntity; +import com.gh.gamecenter.entity.ViewsEntity; +import com.gh.gamecenter.listener.OnCallBackListener; +import com.gh.gamecenter.manager.CommentManager; +import com.gh.gamecenter.manager.ConcernManager; +import com.gh.gamecenter.manager.VisitManager; +import com.gh.gamecenter.retrofit.JSONObjectResponse; +import com.gh.gamecenter.retrofit.ObservableUtil; +import com.gh.gamecenter.retrofit.Response; +import com.gh.gamecenter.retrofit.RetrofitManager; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; + +import retrofit2.adapter.rxjava.HttpException; +import rx.Observable; +import rx.Subscriber; +import rx.android.schedulers.AndroidSchedulers; +import rx.functions.Action1; +import rx.functions.Func1; +import rx.schedulers.Schedulers; + +/** + * Created by khy on 2016/8/15. + * 资讯-关注-数据适配器 + */ +public class News4FragmentAdapter extends RecyclerView.Adapter { + + private News4Fragment fragment; + private Context context; + + private OnCallBackListener listener; + + private List concernList; + private List gameIdList; + private List libaoStatusList; + + private List libaoInfo; + private LibaoDao libaoDao; + + private String key; + private String ids; + + private int itemCount; + private int skipPosition; + + private int cardMargin; + + private boolean isLoading; + private boolean isOver; + private boolean isNetworkError; + + public News4FragmentAdapter(News4Fragment fragment) { + this.fragment = fragment; + this.context = fragment.getActivity(); + this.listener = fragment; + + concernList = new ArrayList<>(); + gameIdList = new ArrayList<>(); + libaoStatusList = new ArrayList<>(); + + itemCount = 0; + skipPosition = -1; + + isNetworkError = false; + isOver = false; + isLoading = false; + + libaoDao = new LibaoDao(context); + libaoInfo = libaoDao.getAll(); + + cardMargin = (int) context.getResources().getDimension(R.dimen.cardview_margin); + } + + // 加载数据 + public void addList(final int offset) { + if (isLoading) { + return; + } + isLoading = true; + if (TextUtils.isEmpty(key) || TextUtils.isEmpty(ids)) { + ObservableUtil.computation(new Observable.OnSubscribe() { + @Override + public void call(Subscriber subscriber) { + ConcernManager concernManager = new ConcernManager(context); + List concernList = concernManager.getConcernGame(); + if (concernList == null || concernList.isEmpty()) { + subscriber.onNext(null); + } else { + for (ConcernInfo concernInfo : concernList) { + gameIdList.add(concernInfo.getId()); + } + + // 对数据进行排序 + Collections.sort(gameIdList, new Comparator() { + @Override + public int compare(String lhs, String rhs) { + return lhs.compareTo(rhs); + } + }); + + StringBuilder keyBuilder = new StringBuilder(); + StringBuilder idsBuilder = new StringBuilder(); + for (int i = 0; i < gameIdList.size(); i++) { + keyBuilder.append(gameIdList.get(i)); + if (i < 5) { + idsBuilder.append(gameIdList.get(i)); + idsBuilder.append("-"); + } + } + key = MD5Utils.getContentMD5(keyBuilder.toString()); + ids = idsBuilder.substring(0, idsBuilder.length() - 1); + subscriber.onNext(""); + } + subscriber.onCompleted(); + } + }, new Action1() { + @Override + public void call(String s) { + if (s == null) { + listener.loadEmpty(); + } else { + loadDataByKey(offset); + } + } + }); + } else { + loadDataByKey(offset); + } + } + + private void loadDataByKey(final int offset) { + RetrofitManager.getApi() + .getGuanZhuByKey(key, offset) + .map(new Func1, List>() { + @Override + public List call(List list) { + // 去除重复数据 + return removeDuplicateData(concernList, list); + } + }) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Response>() { + @Override + public void onResponse(List response) { + isLoading = false; + + if (response.size() != 0) { + concernList.addAll(response); + itemCount += response.size(); + if (!fragment.isHidden() && !fragment.isEverpause()) { + notifyItemRangeInserted(concernList.size() - response.size(), response.size()); + } else { + notifyDataSetChanged(); + } + + getLibaoStatus(response); + getNewsViews(response, offset); + getNewsCommentnum(response, offset); + + } else { + isOver = true; + notifyItemChanged(getItemCount() - 1); + } + + if (offset == 0 && listener != null) { + if (concernList.isEmpty()) { + listener.loadEmpty(); + } else { + listener.loadDone(); + } + } + } + + @Override + public void onFailure(HttpException e) { + if (e != null && e.code() == 409) { + loadDataByGameId(offset); + ConcernUtils.updateConcernData(context, new JSONArray(gameIdList)); + return; + } + + isLoading = false; + + // 网络错误 + if (offset == 0) { + if (listener != null) { + listener.loadError(); + } + } else { + Toast.makeText(context, "加载失败,请检查网络状态", Toast.LENGTH_SHORT).show(); + isNetworkError = true; + notifyItemChanged(getItemCount() - 1); + } + } + }); + } + + private void loadDataByGameId(final int offset) { + RetrofitManager.getApi() + .getGuanZhuById(ids, offset) + .map(new Func1, List>() { + @Override + public List call(List list) { + // 去除重复数据 + return removeDuplicateData(concernList, list); + } + }) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Response>() { + @Override + public void onResponse(List response) { + isLoading = false; + + if (response.size() != 0) { + concernList.addAll(response); + itemCount += response.size(); + if (!fragment.isHidden() && !fragment.isEverpause()) { + notifyItemRangeInserted(concernList.size() - response.size(), response.size()); + } else { + notifyDataSetChanged(); + } + + getNewsViews(response, offset); + getNewsCommentnum(response, offset); + getLibaoStatus(response); + } else { + isOver = true; + notifyItemChanged(getItemCount() - 1); + } + + if (offset == 0 && listener != null) { + if (concernList.isEmpty()) { + listener.loadEmpty(); + } else { + listener.loadDone(); + } + } + } + + @Override + public void onFailure(HttpException e) { + isLoading = false; + + // 网络错误 + if (offset == 0) { + if (listener != null) { + listener.loadError(); + } + } else { + Toast.makeText(context, "加载失败,请检查网络状态", Toast.LENGTH_SHORT).show(); + isNetworkError = true; + notifyItemChanged(getItemCount() - 1); + } + } + }); + } + + //获取礼包状态 + private void getLibaoStatus(List response) { + StringBuilder builder = new StringBuilder(); + for (int i = 0, size = response.size(); i < size; i++) { + if ("libao".equals(response.get(i).getType())){ + builder.append(response.get(i).getId()); + builder.append("-"); + } + } + if (builder.length() == 0) return; + builder.deleteCharAt(builder.length() - 1); + String ids = builder.toString(); + + LibaoUtils.getLibaoStatus(ids, new LibaoUtils.PostLibaoListener() { + @Override + public void postSucced(Object response) { + libaoStatusList.addAll((List)response); + notifyDataSetChanged(); + } + + @Override + public void postFailed(Throwable error) { + + } + }); + } + + + // 去除重复数据 + private static List removeDuplicateData(List sourceList, List rawList) { + if (sourceList == null || sourceList.isEmpty() + || rawList == null || rawList.isEmpty()) { + return rawList; + } + String id; + for (int i = 0; i < rawList.size(); i++) { + id = rawList.get(i).getId(); + for (ConcernEntity concernEntity : sourceList) { + if (id.equals(concernEntity.getId())) { + rawList.remove(i); + i--; + break; + } + } + } + return rawList; + } + + // 获取新闻阅读量 + private void getNewsViews(final List list, final int start) { + if (list == null || list.isEmpty()) { + return; + } + ObservableUtil.computation(new Observable.OnSubscribe() { + @Override + public void call(Subscriber subscriber) { + StringBuilder builder = new StringBuilder(); + for (int i = 0, size = list.size(); i < size; i++) { + builder.append(list.get(i).getId()); + builder.append("-"); + } + builder.deleteCharAt(builder.length() - 1); + String ids = builder.toString(); + VisitManager.getInstance().addUrl(ids); + subscriber.onNext(ids); + subscriber.onCompleted(); + } + }, new Action1() { + @Override + public void call(String ids) { + RetrofitManager.getData() + .getNewsViews(ids) + .map(new Func1, String>() { + @Override + public String call(List list) { + for (ViewsEntity viewsEntity : list) { + for (ConcernEntity concernEntity : concernList) { + if (viewsEntity.getId().equals(concernEntity.getId())) { + concernEntity.setViews(viewsEntity.getViews()); + break; + } + } + } + return null; + } + }) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Response() { + @Override + public void onResponse(String response) { + notifyItemRangeChanged(start, list.size()); + } + }); + } + }); + } + + // 获取新闻评论数 + private void getNewsCommentnum(final List list, final int start) { + if (list == null || list.isEmpty()) { + return; + } + ObservableUtil.computation(new Observable.OnSubscribe() { + @Override + public void call(Subscriber subscriber) { + StringBuilder builder = new StringBuilder(); + for (int i = 0, size = list.size(); i < size; i++) { + builder.append(list.get(i).getId()); + builder.append("-"); + } + builder.deleteCharAt(builder.length() - 1); + CommentManager.getInstance().addUrl(builder.toString()); + subscriber.onNext(builder.toString()); + subscriber.onCompleted(); + } + }, new Action1() { + @Override + public void call(String ids) { + RetrofitManager.getComment() + .getNewsCommentnum(ids) + .map(new Func1, String>() { + @Override + public String call(List list) { + for (CommentnumEntity commentnumEntity : list) { + for (ConcernEntity concernEntity : concernList) { + if (commentnumEntity.getId().equals(concernEntity.getId())) { + concernEntity.setCommentnum(commentnumEntity.getNum()); + break; + } + } + } + return null; + } + }) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Response() { + @Override + public void onResponse(String response) { + notifyItemRangeChanged(start, list.size()); + } + }); + } + }); + } + + // 统计新闻阅读量 + private void statNewsViews(final ConcernEntity concernEntity, final int position) { + RetrofitManager.getData().postNewsViews(concernEntity.getId()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new JSONObjectResponse(){ + @Override + public void onResponse(JSONObject response) { + if (response.length() != 0) { + try { + if ("success".equals(response.getString("status"))) { + concernEntity.setViews(concernEntity.getViews() + 1); + + notifyItemChanged(position); + + // 更新okhttp缓存数据 + VisitManager.updateOkhttpCache(concernEntity.getId()); + } + } catch (JSONException e) { + e.printStackTrace(); + } + } + } + }); + } + + @Override + public int getItemViewType(int position) { + if (position == concernList.size()) { + return ItemViewType.LOADING; + } else { + return ItemViewType.NEWS_DIGEST; + } + } + + @Override + public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + if (viewType == ItemViewType.NEWS_DIGEST) { + View view = LayoutInflater.from(parent.getContext()). + inflate(R.layout.news_digest_item, parent, false); + return new NewsDigestViewHolder(view); + } else if (viewType == ItemViewType.LOADING) { + View view = LayoutInflater.from(parent.getContext()). + inflate(R.layout.refresh_footerview, parent, false); + return new FooterViewHolder(view); + } + return null; + } + + @Override + public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { + if (holder instanceof NewsDigestViewHolder) { + initNewsDigestViewHolder((NewsDigestViewHolder) holder, position); + } else if (holder instanceof FooterViewHolder) { + initFooterViewHolder((FooterViewHolder) holder); + } + } + + private void initNewsDigestViewHolder(final NewsDigestViewHolder viewHolder, int position) { + + final ConcernEntity concernEntity = concernList.get(position); + + ImageUtils.display(viewHolder.thumb, concernEntity.getGameIcon()); + viewHolder.title.setText(concernEntity.getGameName()); + NewsUtils.setNewsPublishOn(viewHolder.time, concernEntity.getTime()); + + if ("libao".equals(concernEntity.getType())) { + String content ; + if (concernEntity.getContent().contains("
    ")) { + content = concernEntity.getContent().replaceAll("
    ", " "); + } else { + content = concernEntity.getContent(); + } + + String libaoCode = null; + viewHolder.imgLayout.removeAllViews(); + + if (TextUtils.isEmpty(concernEntity.getPlatform())) { + viewHolder.content.setText(concernEntity.getName() + "\n礼包内容:" + content ); + } else { + viewHolder.content.setText(concernEntity.getName() + "(限" + PlatformUtils.getInstance(context) + .getPlatformName(concernEntity.getPlatform()) + "版)\n礼包内容:" + content ); + } + viewHolder.comment.setVisibility(View.GONE); + viewHolder.share.setVisibility(View.GONE); + viewHolder.link.setImageResource(R.drawable.ic_libao); + + for (LibaoStatusEntity libaoStatusEntity : libaoStatusList) { + if (libaoStatusEntity.getId().equals(concernEntity.getId())) { + + if ("finish".equals(libaoStatusEntity.getStatus())) { + viewHolder.read.setText("已结束"); + } else { + viewHolder.read.setText("点击查看"); + } + + if (libaoInfo != null) { + for (LibaoInfo info : libaoInfo) { + if (info.getLibaoId().equals(concernEntity.getId()) || "linged".equals(info.getStatus())) { + if ("ling".equals(info.getStatus())) { + viewHolder.read.setText("已领取"); + } else { + viewHolder.read.setText("已淘号"); + } + + libaoCode = info.getCode(); + break; + } + } + } + } + } + + final String finalLibaoCode = libaoCode; + viewHolder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + for (LibaoStatusEntity libaoStatusEntity : libaoStatusList) { + if (concernEntity.getId().equals(libaoStatusEntity.getId())) { + AppController.put("libaoEntity", LibaoEntity.createLibaoEntity( + concernEntity, libaoStatusEntity, finalLibaoCode)); + } + } + skipPosition = viewHolder.getPosition(); + Intent intent = new Intent(context, LibaoDetailActivity.class); + intent.putExtra("entrance", "(资讯-关注)"); + fragment.startActivityForResult(intent, 0x122); + } + }); + return; + } + + viewHolder.comment.setVisibility(View.VISIBLE); + viewHolder.share.setVisibility(View.VISIBLE); + + if (concernEntity.getBrief() != null) { + viewHolder.content.setText(Html.fromHtml(concernEntity.getBrief())); + viewHolder.content.setMaxLines(100); + } else { + viewHolder.content.setText(Html.fromHtml(concernEntity.getContent())); + viewHolder.content.setMaxLines(5); + } + + if (concernEntity.getImg().isEmpty()) { + viewHolder.imgLayout.setVisibility(View.GONE); + viewHolder.imgLayout.removeAllViews(); + } else { + viewHolder.imgLayout.setVisibility(View.VISIBLE); + viewHolder.imgLayout.removeAllViews(); + ConcernContentUtils.addContentPic(context, viewHolder.imgLayout, concernEntity.getImg(), "(资讯-关注)", + context.getResources().getDisplayMetrics().widthPixels - DisplayUtils.dip2px(context, 34)); + } + + int views = concernEntity.getViews(); + if (views == 0) { + viewHolder.read.setVisibility(View.GONE); + } else { + viewHolder.read.setVisibility(View.VISIBLE); + viewHolder.read.setText(String.format(Locale.getDefault(), "阅读 %d", views)); + } + + int commentnum = concernEntity.getCommentnum(); + if (commentnum == 0) { + viewHolder.commentnum.setVisibility(View.GONE); + } else { + viewHolder.commentnum.setVisibility(View.VISIBLE); + if (commentnum > 999) { + viewHolder.commentnum.setText(R.string.thousand); + } else { + viewHolder.commentnum.setText(String.valueOf(commentnum)); + } + } + + if (concernEntity.getLink() != null) { + viewHolder.link.setImageResource(R.drawable.ic_link); + } else { + viewHolder.link.setImageResource(R.drawable.concern_message_icon); + } + + viewHolder.comment.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + skipPosition = viewHolder.getPosition(); + concernEntity.setItemHeight(viewHolder.itemView.getHeight()); + AppController.put("ConcernEntity", concernEntity); + Intent intent = new Intent(context, MessageDetailActivity.class); + intent.putExtra("entrance", "(资讯-关注)"); + fragment.startActivityForResult(intent, 0x125); + } + }); + + viewHolder.share.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + String shareContent; + if (concernEntity.getBrief() != null) { + shareContent = concernEntity.getBrief(); + } else { + shareContent = concernEntity.getContent(); + } + if (concernEntity.getImg() != null && concernEntity.getImg().size() > 0) { + Intent intent = new Intent(context, ShareCardPicActivity.class); + Bundle bundle = new Bundle(); + bundle.putString("gameName", concernEntity.getGameName()); + bundle.putString("gameIconUrl", concernEntity.getGameIcon()); + bundle.putString("shareContent", shareContent); + if (concernEntity.getLink() == null){ + bundle.putString("newsId", concernEntity.getId()); + } + bundle.putStringArrayList("shareArrImg", (ArrayList) concernEntity.getImg()); + intent.putExtras(bundle); + intent.putExtra("entrance", "(资讯-关注)"); + context.startActivity(intent); + } else { + Intent intent = new Intent(context, ShareCardActivity.class); + Bundle bundle = new Bundle(); + bundle.putString("gameName", concernEntity.getGameName()); + bundle.putString("gameIconUrl", concernEntity.getGameIcon()); + bundle.putString("shareContent", shareContent); + if (concernEntity.getLink() == null){ + bundle.putString("newsId", concernEntity.getId()); + } + intent.putExtras(bundle); + intent.putExtra("entrance", "(资讯-关注)"); + context.startActivity(intent); + } + } + }); + + viewHolder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Map kv = new HashMap<>(); + kv.put("名字", concernEntity.getTitle()); + kv.put("位置", String.valueOf(viewHolder.getPosition() + 1)); + DataUtils.onEvent(context, "点击", "资讯-关注", kv); + + DataCollectionUtils.uploadClick(context, "列表", "资讯-关注", concernEntity.getTitle()); + + //统计阅读量 + statNewsViews(concernEntity, viewHolder.getPosition()); + AppController.put("ConcernEntity", concernEntity); + skipPosition = viewHolder.getPosition(); + if (concernEntity.getLink() != null){ + Intent intent = new Intent(context, WebActivity.class); + intent.putExtra("url", concernEntity.getLink()); + intent.putExtra("gameName", concernEntity.getGameName()); + intent.putExtra("newsId", concernEntity.getId()); + intent.putExtra("entrance", "(资讯-关注)"); + fragment.startActivityForResult(intent, 0x125); + }else { + Intent intent = new Intent(context, NewsDetailActivity.class); + intent.putExtra("newsId", concernEntity.getId()); + intent.putExtra("entrance", "(资讯-关注)"); + fragment.startActivityForResult(intent, 0x125); + } + + } + }); + } + + private void initFooterViewHolder(FooterViewHolder viewHolder) { + if (isNetworkError) { + viewHolder.loading.setVisibility(View.GONE); + viewHolder.hint.setText("加载失败,点击重试"); + viewHolder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + isNetworkError = false; + notifyItemChanged(getItemCount() - 1); + loadDataByKey(concernList.size()); + } + }); + } else if (isOver) { + viewHolder.loading.setVisibility(View.GONE); + viewHolder.hint.setText("加载完毕"); + viewHolder.itemView.setClickable(false); + } else { + viewHolder.loading.setVisibility(View.VISIBLE); + viewHolder.hint.setText("加载中..."); + viewHolder.itemView.setClickable(false); + } + } + + @Override + public int getItemCount() { + if (itemCount == 0){ + return 0; + } + return itemCount + 1; + } + + //初始化获取数据库的列表 + public void initLibaoDao() { + libaoDao = new LibaoDao(context); + libaoInfo = libaoDao.getAll(); + } + + public int getConcernListSize() { + return concernList.size(); + } + + public boolean isNetworkError() { + return isNetworkError; + } + + public void setNetworkError(boolean networkError) { + isNetworkError = networkError; + } + + public boolean isOver() { + return isOver; + } + + public boolean isLoading() { + return isLoading; + } + + public int getSkipPosition() { + return skipPosition; + } + + public void setSkipPosition(int skipPosition) { + this.skipPosition = skipPosition; + } +} diff --git a/app/src/main/java/com/gh/gamecenter/news/NewsFragment.java b/app/src/main/java/com/gh/gamecenter/news/NewsFragment.java index eb2a5152d0..d56a61eae7 100644 --- a/app/src/main/java/com/gh/gamecenter/news/NewsFragment.java +++ b/app/src/main/java/com/gh/gamecenter/news/NewsFragment.java @@ -37,6 +37,7 @@ public class NewsFragment extends HomeFragment implements View.OnClickListener, private TextView tv_guanzhu; private TextView tv_zixun; private TextView tv_yuanchuang; + private TextView tv_gonglve; private int width; private int currentItem; @@ -62,6 +63,7 @@ public class NewsFragment extends HomeFragment implements View.OnClickListener, list.add(new News1Fragment()); list.add(new News2Fragment()); list.add(new News3Fragment()); + list.add(new News4Fragment()); page_vp_content.setAdapter(new FragmentAdapter(getChildFragmentManager(), list)); page_vp_content.addOnPageChangeListener(this); @@ -74,7 +76,7 @@ public class NewsFragment extends HomeFragment implements View.OnClickListener, DisplayMetrics outMetrics = new DisplayMetrics(); getActivity().getWindowManager().getDefaultDisplay().getMetrics(outMetrics); - width = outMetrics.widthPixels / 3; + width = outMetrics.widthPixels / 4; lparams = new LinearLayout.LayoutParams(width / 2, DisplayUtils.dip2px(getActivity(), 2)); lparams.leftMargin = (int) (width * (currentItem + 0.25f)); @@ -89,23 +91,9 @@ public class NewsFragment extends HomeFragment implements View.OnClickListener, } private void initTextView() { - tv_guanzhu = new TextView(getActivity()); - tv_guanzhu.setText("关注"); - if (currentItem == 0) { - tv_guanzhu.setTextColor(getResources().getColor(R.color.theme)); - } else { - tv_guanzhu.setTextColor(getResources().getColor(R.color.title)); - } - tv_guanzhu.setGravity(Gravity.CENTER); - tv_guanzhu.setOnClickListener(this); - LinearLayout.LayoutParams lparams4 = new LinearLayout.LayoutParams( - 0, DisplayUtils.dip2px(getActivity(), 35)); - lparams4.weight = 1; - slidebar_ll_top.addView(tv_guanzhu, lparams4); - tv_zixun = new TextView(getActivity()); tv_zixun.setText("资讯"); - if (currentItem == 1) { + if (currentItem == 0) { tv_zixun.setTextColor(getResources().getColor(R.color.theme)); } else { tv_zixun.setTextColor(getResources().getColor(R.color.title)); @@ -117,6 +105,20 @@ public class NewsFragment extends HomeFragment implements View.OnClickListener, lparams1.weight = 1; slidebar_ll_top.addView(tv_zixun, lparams1); + tv_gonglve = new TextView(getActivity()); + tv_gonglve.setText("攻略"); + if (currentItem == 1) { + tv_gonglve.setTextColor(getResources().getColor(R.color.theme)); + } else { + tv_gonglve.setTextColor(getResources().getColor(R.color.title)); + } + tv_gonglve.setGravity(Gravity.CENTER); + tv_gonglve.setOnClickListener(this); + LinearLayout.LayoutParams lparams2 = new LinearLayout.LayoutParams( + 0, DisplayUtils.dip2px(getActivity(), 35)); + lparams2.weight = 1; + slidebar_ll_top.addView(tv_gonglve, lparams2); + tv_yuanchuang = new TextView(getActivity()); tv_yuanchuang.setText("原创"); if (currentItem == 2) { @@ -126,21 +128,37 @@ public class NewsFragment extends HomeFragment implements View.OnClickListener, } tv_yuanchuang.setGravity(Gravity.CENTER); tv_yuanchuang.setOnClickListener(this); - LinearLayout.LayoutParams lparams2 = new LinearLayout.LayoutParams( + LinearLayout.LayoutParams lparams3 = new LinearLayout.LayoutParams( 0, DisplayUtils.dip2px(getActivity(), 35)); - lparams2.weight = 1; - slidebar_ll_top.addView(tv_yuanchuang, lparams2); + lparams3.weight = 1; + slidebar_ll_top.addView(tv_yuanchuang, lparams3); + + tv_guanzhu = new TextView(getActivity()); + tv_guanzhu.setText("关注"); + if (currentItem == 3) { + tv_guanzhu.setTextColor(getResources().getColor(R.color.theme)); + } else { + tv_guanzhu.setTextColor(getResources().getColor(R.color.title)); + } + tv_guanzhu.setGravity(Gravity.CENTER); + tv_guanzhu.setOnClickListener(this); + LinearLayout.LayoutParams lparams4 = new LinearLayout.LayoutParams( + 0, DisplayUtils.dip2px(getActivity(), 35)); + lparams4.weight = 1; + slidebar_ll_top.addView(tv_guanzhu, lparams4); } @Override public void onClick(View v) { super.onClick(v); if (v == tv_zixun) { + page_vp_content.setCurrentItem(0); + } else if (v == tv_gonglve) { page_vp_content.setCurrentItem(1); } else if (v == tv_yuanchuang) { page_vp_content.setCurrentItem(2); } else if (v == tv_guanzhu) { - page_vp_content.setCurrentItem(0); + page_vp_content.setCurrentItem(3); } } @@ -160,17 +178,25 @@ public class NewsFragment extends HomeFragment implements View.OnClickListener, @Override public void onPageSelected(int position) { if (position == 0){ - tv_zixun.setTextColor(getResources().getColor(R.color.title)); - tv_yuanchuang.setTextColor(getResources().getColor(R.color.title)); - tv_guanzhu.setTextColor(getResources().getColor(R.color.theme)); - } else if (position == 1) { tv_zixun.setTextColor(getResources().getColor(R.color.theme)); + tv_gonglve.setTextColor(getResources().getColor(R.color.title)); + tv_yuanchuang.setTextColor(getResources().getColor(R.color.title)); + tv_guanzhu.setTextColor(getResources().getColor(R.color.title)); + } else if (position == 1) { + tv_zixun.setTextColor(getResources().getColor(R.color.title)); + tv_gonglve.setTextColor(getResources().getColor(R.color.theme)); tv_yuanchuang.setTextColor(getResources().getColor(R.color.title)); tv_guanzhu.setTextColor(getResources().getColor(R.color.title)); } else if (position == 2) { tv_zixun.setTextColor(getResources().getColor(R.color.title)); + tv_gonglve.setTextColor(getResources().getColor(R.color.title)); tv_yuanchuang.setTextColor(getResources().getColor(R.color.theme)); tv_guanzhu.setTextColor(getResources().getColor(R.color.title)); + } else if (position == 3) { + tv_zixun.setTextColor(getResources().getColor(R.color.title)); + tv_gonglve.setTextColor(getResources().getColor(R.color.title)); + tv_yuanchuang.setTextColor(getResources().getColor(R.color.title)); + tv_guanzhu.setTextColor(getResources().getColor(R.color.theme)); } } diff --git a/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailAdapter.java b/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailAdapter.java index 6000829e64..d293b63a9d 100644 --- a/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailAdapter.java @@ -22,6 +22,7 @@ import android.widget.Toast; import com.facebook.drawee.view.SimpleDraweeView; import com.gh.common.constant.Config; +import com.gh.common.util.CommentUtils; import com.gh.common.util.ConcernUtils; import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DataUtils; @@ -317,12 +318,18 @@ public class NewsDetailAdapter extends RecyclerView.Adapter { final ImageView like = (ImageView) contentView.findViewById(R.id.comment_like); likeCount.setText(String.valueOf(commentEntity.getVote())); - content.setText(commentEntity.getContent()); userName.setText(commentEntity.getUser().getName()); // userIcon.setImageURI(commentEntity.getUser().getIcon()); ImageUtils.display(userIcon, commentEntity.getUser().getIcon()); holder.list.addView(contentView); + if (commentEntity.getParent() != null) { + content.setText("回复"+ commentEntity.getParent().getUser().getName() + ": " + commentEntity.getContent()); + } else { + content.setText(commentEntity.getContent()); + } + + SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd", Locale.getDefault()); try { long today = format.parse(format.format(new Date())).getTime(); @@ -415,6 +422,12 @@ public class NewsDetailAdapter extends RecyclerView.Adapter { }); } }); + contentView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + CommentUtils.showReportDialog(commentEntity, context, null, newsDetailEntity.getId()); + } + }); } LinearLayout linearLayout = new LinearLayout(context); @@ -592,7 +605,7 @@ public class NewsDetailAdapter extends RecyclerView.Adapter { } if (viewHolder.newsdetail_item_wv_content.getTag() == null) { - viewHolder.newsdetail_item_wv_content.setBackgroundColor(0xFFEDF2F4); +// viewHolder.newsdetail_item_wv_content.setBackgroundColor(0xFFEDF2F4); viewHolder.newsdetail_item_wv_content.addJavascriptInterface(new JsInterface(context), "imagelistener"); webSettings = viewHolder.newsdetail_item_wv_content.getSettings(); webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN); diff --git a/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java b/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java index 49891ed61f..605282d04e 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java +++ b/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java @@ -36,7 +36,7 @@ import com.gh.common.util.DisplayUtils; import com.gh.common.util.ImageUtils; import com.gh.common.util.TokenUtils; import com.gh.common.util.Utils; -import com.gh.gamecenter.ConcernActivity; +import com.gh.gamecenter.LibaoActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.SelectUserIconActivity; import com.gh.gamecenter.SettingActivity; @@ -73,7 +73,7 @@ public class PersonalFragment extends BaseFragment implements View.OnClickListen @BindView(R.id.me_iv_top_icon) SimpleDraweeView me_iv_top_icon; @BindView(R.id.me_tv_top_name) TextView me_tv_top_name; @BindView(R.id.user_name_hint) ImageView userNameHint; - @BindView(R.id.personal_entrance_concern) LinearLayout entranceConcern; + @BindView(R.id.personal_entrance_libao) LinearLayout entranceLibao; @BindView(R.id.personal_entrance_setting) LinearLayout entranceSetting; @BindView(R.id.personal_entrance_share) LinearLayout entranceShare; @BindView(R.id.personal_entrance_suggest) LinearLayout entranceSuggest; @@ -175,7 +175,7 @@ public class PersonalFragment extends BaseFragment implements View.OnClickListen } @OnClick({R.id.personal_entrance_suggest, R.id.personal_entrance_share, R.id.personal_entrance_setting - , R.id.personal_entrance_concern}) + , R.id.personal_entrance_libao}) public void onEntranceClick(View v) { switch (v.getId()) { case R.id.personal_entrance_suggest: @@ -194,12 +194,11 @@ public class PersonalFragment extends BaseFragment implements View.OnClickListen intent3.putExtra("entrance", "(我的光环)"); startActivity(intent3); break; - case R.id.personal_entrance_concern: - DataUtils.onEvent(getActivity(), "主页", "关注图标"); - DataCollectionUtils.uploadClick(getActivity(), "关注图标", "我的光环"); - - Intent intent = new Intent(getActivity(), ConcernActivity.class); - intent.putExtra("entrance", "(我的光环)"); + case R.id.personal_entrance_libao: + DataUtils.onEvent(getActivity(), "主页", "礼包图标"); + DataCollectionUtils.uploadClick(getActivity(), "礼包图标", "我的光环"); + Intent intent = new Intent(getActivity(), LibaoActivity.class); + intent.putExtra("entrance", "(我的光环-礼包图标:礼包)"); startActivity(intent); break; } diff --git a/app/src/main/java/com/gh/gamecenter/retrofit/ApiService.java b/app/src/main/java/com/gh/gamecenter/retrofit/ApiService.java index f3689b176b..ffaa11fc87 100644 --- a/app/src/main/java/com/gh/gamecenter/retrofit/ApiService.java +++ b/app/src/main/java/com/gh/gamecenter/retrofit/ApiService.java @@ -6,6 +6,8 @@ import com.gh.gamecenter.entity.GameDetailEntity; import com.gh.gamecenter.entity.GameDigestEntity; import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.entity.GameUpdateEntity; +import com.gh.gamecenter.entity.KeFuEntity; +import com.gh.gamecenter.entity.MessageUnreadEntity; import com.gh.gamecenter.entity.NewsDetailEntity; import com.gh.gamecenter.entity.NewsEntity; import com.gh.gamecenter.entity.PackageEntity; @@ -13,6 +15,7 @@ import com.gh.gamecenter.entity.PlatformEntity; import com.gh.gamecenter.entity.SlideEntity; import com.gh.gamecenter.entity.SubjectDigestEntity; import com.gh.gamecenter.entity.SubjectEntity; +import com.gh.gamecenter.entity.SuggestionTypeEntity; import com.gh.gamecenter.entity.TagEntity; import java.util.ArrayList; @@ -22,6 +25,7 @@ import okhttp3.RequestBody; import okhttp3.ResponseBody; import retrofit2.http.Body; import retrofit2.http.GET; +import retrofit2.http.Header; import retrofit2.http.Headers; import retrofit2.http.POST; import retrofit2.http.Path; @@ -46,14 +50,14 @@ public interface ApiService { @GET("zixun/yuanchuang?limit=20") // 获取资讯-原创 Observable> getYuanChuang(@Query("offset") int offset); - @GET("news") // 获取资讯-原创 + @GET("article") // 获取资讯-原创 Observable> getNews(@Query("type_group") String type_group, @Query("limit") int limit, @Query("offset") int offset); @GET("game/{game_id}/digest") // 获取游戏摘要 Observable getGameDigest(@Path("game_id") String game_id); - @GET("game/{game_id}/news_digest") // 获取游戏新闻摘要 + @GET("game/{game_id}/article_digest") // 获取游戏新闻摘要 Observable getGameNewsDigest(@Path("game_id") String game_id); @GET("game/{game_id}/detail") // 获取游戏详情 @@ -85,31 +89,31 @@ public interface ApiService { @GET("support/upgrade") Observable getUpdate(@Query("version") String version, @Query("channel") String channel); // 获取助手更新 - @GET("news/{news_id}/detail") + @GET("article/{news_id}/detail") Observable getNewsDetail(@Path("news_id") String news_id); // 获取新闻详情 - @GET("news/{news_id}/digest") + @GET("article/{news_id}/digest") Observable getNewsDigest(@Path("news_id") String news_id); // 获取新闻摘要 - @GET("news/{news_id}/suggestion") + @GET("article/{news_id}/suggestion") Observable> getNewsSuggestion(@Path("news_id") String news_id); // 获取新闻相关推荐 @GET("skin/gameInfo/{game_id}") Observable getGameSkin(@Path("game_id") String game_id); // 获取游戏皮肤信息 - @GET("game/{game_id}/news") + @GET("game/{game_id}/article") Observable> getGameNews(@Path("game_id") String game_id, @Query("limit") int limit, @Query("offset") int offset, @Query("type") String type); // 获取游戏新闻 - @GET("game/{game_id}/news") + @GET("game/{game_id}/article") Observable> getGameNews(@Path("game_id") String game_id, @Query("limit") int limit, @Query("type_group") String type, @Query("offset") int offset); // 获取游戏攻略 - @GET("game/{game_id}/news") + @GET("game/{game_id}/article") Observable> getGameNews(@Path("game_id") String game_id, @Query("limit") int limit, @Query("offset") int offset); // 获取游戏新闻 - @GET("game/{game_id}/news") + @GET("game/{game_id}/article") Observable> getGameNews(@Path("game_id") String game_id, @Query("limit") int limit); // 获取游戏新闻 @GET("game/{game_id}/serverInfo") @@ -121,7 +125,7 @@ public interface ApiService { @GET("article/{news_id}/rich-digest") Observable getNewsRichDigest(@Path("news_id") String news_id); // 获取新闻rich摘要 - @GET("search/news") + @GET("search/article") Observable> getSearchNews(@Query("game_id") String game_id, @Query("keyword") String keyword, @Query("page") int page, @Query("limit") int limit); // 搜索新闻 @@ -150,8 +154,8 @@ public interface ApiService { Observable> getSubjectGame(@Path("subject_id") String subject_id); //获取专题游戏 用于主页换一批 @Headers({"Content-Type: application/json", "Accept: application/json"}) - @POST("support/suggestion") // 上传意见反馈 - Observable postSuggestion(@Body RequestBody body); + @POST("support/user/suggestion") // 上传意见反馈 + Observable postSuggestion(@Body RequestBody body, @Header("TOKEN") String token); @GET("support/package/in-use") Observable> getPackageUsed(@Query("since") long since, @Query("skip") long skip); // 获取有用包名 @@ -173,4 +177,22 @@ public interface ApiService { @GET("game/server") Observable> getKaiFuData(@Query("type") String type, @Query("offset") int offset, @Query("limit") int limit); // 获取开服表数据 + + @GET("message/private/new") + Observable> getKeFuDataUnread(@Header("TOKEN") String token,@Query("offset") int offset, @Query("limit") int limit); // 获取消息-客服未读数据 + + @GET("user/message/notice") + Observable> getNoticeData(@Query("version") String version + , @Query("channel") String channel, @Query("package") String packageName + , @Query("offset") int offset, @Query("limit") int limit); // 获取消息-客服数据 + + @GET("message/sync") + Observable getMessageUnread(@Header("TOKEN") String token); // 获取消息未读数据 + + @GET("game/{game_id}/article_type") + Observable> getGameArticleType(@Path("game_id") String gameId); // 获取游戏新闻类型 + + @GET("support/setting/suggestion") + Observable getSuggestionType(); // 获取意见反馈的问题选项 + } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragment.java b/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragment.java index bf0930209b..94a27883a3 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragment.java +++ b/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragment.java @@ -83,7 +83,7 @@ public class SearchGameDetailFragment extends BaseFragment implements OnCallBack public void onClick(View v) { Intent intent = new Intent(getContext(), NewSuggestActivity.class); intent.putExtra("suggestType", 5); - intent.putExtra("suggestContent", "求收录游戏:" + key); + intent.putExtra("content", "求收录游戏:" + key); getActivity().startActivity(intent); } }); diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchHistoryFragment.java b/app/src/main/java/com/gh/gamecenter/search/SearchHistoryFragment.java index c674b3485e..9e2fb574b6 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchHistoryFragment.java +++ b/app/src/main/java/com/gh/gamecenter/search/SearchHistoryFragment.java @@ -77,7 +77,7 @@ public class SearchHistoryFragment extends Fragment { mHistoryadapter = new SearchHistoryFragmentAdapter(getActivity(), mHistorylist, dao, true); mSearchHistoryRv.setAdapter(mHistoryadapter); ViewGroup.LayoutParams params = mSearchHistoryRv.getLayoutParams(); - params.height = (int) Math.ceil(mHistorylist.size() / 3f) * DisplayUtils.dip2px(getContext(), 42); + params.height = (int) Math.ceil(mHistorylist.size() / 3f) * DisplayUtils.dip2px(getContext(), 32) + DisplayUtils.dip2px(getContext(), 10); mSearchHistoryRv.setLayoutParams(params); mSearchHotRv.setHasFixedSize(true); @@ -89,7 +89,7 @@ public class SearchHistoryFragment extends Fragment { }); mSearchHotRv.setAdapter(new SearchHistoryFragmentAdapter(getActivity(), mHotlist, dao, false)); ViewGroup.LayoutParams params2 = mSearchHotRv.getLayoutParams(); - params2.height = (int) Math.ceil(mHotlist.size() / 3f) * DisplayUtils.dip2px(getContext(), 42); + params2.height = (int) Math.ceil(mHotlist.size() / 3f) * DisplayUtils.dip2px(getContext(), 32) + DisplayUtils.dip2px(getContext(), 10); mSearchHotRv.setLayoutParams(params2); loadSearchHotData(); @@ -120,7 +120,7 @@ public class SearchHistoryFragment extends Fragment { mSearchHotTv.setVisibility(View.VISIBLE); mSearchHotRv.setAdapter(new SearchHistoryFragmentAdapter(getActivity(), mHotlist, dao, false)); ViewGroup.LayoutParams params2 = mSearchHotRv.getLayoutParams(); - params2.height = (int) Math.ceil(mHotlist.size() / 3f) * DisplayUtils.dip2px(getContext(), 42); + params2.height = (int) Math.ceil(mHotlist.size() / 3f) * DisplayUtils.dip2px(getContext(), 32) + DisplayUtils.dip2px(getContext(), 10); mSearchHotRv.setLayoutParams(params2); } }); diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchHistoryFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/search/SearchHistoryFragmentAdapter.java index 677658f82c..82fd42b826 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchHistoryFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/search/SearchHistoryFragmentAdapter.java @@ -63,7 +63,7 @@ class SearchHistoryFragmentAdapter extends RecyclerView.Adapter { textView.setTextSize(13); textView.setPadding(DisplayUtils.dip2px(context, 10), 0, DisplayUtils.dip2px(context, 10), 0); textView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT - , DisplayUtils.dip2px(context, 42))); + , DisplayUtils.dip2px(context, 32))); textView.setGravity(Gravity.CENTER_VERTICAL); textView.setBackgroundResource(R.drawable.reuse_listview_item_style); return new TextViewHolder(textView); diff --git a/app/src/main/java/com/gh/gamecenter/suggest/SuggestPicAdapter.java b/app/src/main/java/com/gh/gamecenter/suggest/SuggestPicAdapter.java index c89f9f5b7a..8a9fc0ebc9 100644 --- a/app/src/main/java/com/gh/gamecenter/suggest/SuggestPicAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/suggest/SuggestPicAdapter.java @@ -85,4 +85,8 @@ public class SuggestPicAdapter extends RecyclerView.Adapter getFileList() { + return picList; + } } diff --git a/app/src/main/java/com/gh/gamecenter/suggest/SuggestTypeAdapter.java b/app/src/main/java/com/gh/gamecenter/suggest/SuggestTypeAdapter.java index b7edd960d8..e1727226ec 100644 --- a/app/src/main/java/com/gh/gamecenter/suggest/SuggestTypeAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/suggest/SuggestTypeAdapter.java @@ -15,15 +15,16 @@ import com.gh.gamecenter.R; public class SuggestTypeAdapter extends RecyclerView.Adapter { private Context mContext; private OnSelectTypeListener listener; - private String[] arrType = {"普通反馈", "功能建议", "发生闪退 ", "游戏问题", "游戏收录", "文章投稿"}; + private String[] arrType; private int curType = -1; private int lastType = -1; - public SuggestTypeAdapter(NewSuggestActivity mContext, int curType) { + public SuggestTypeAdapter(NewSuggestActivity mContext, int curType, String[] arrType) { this.mContext = mContext; this.listener = mContext; this.curType = curType - 1; + this.arrType = arrType; } @Override diff --git a/app/src/main/java/com/gh/gamecenter/wenda/WenDaFragment.java b/app/src/main/java/com/gh/gamecenter/wenda/WenDaFragment.java new file mode 100644 index 0000000000..387cd2947c --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/wenda/WenDaFragment.java @@ -0,0 +1,17 @@ +package com.gh.gamecenter.wenda; + +import com.gh.base.BaseFragment; +import com.gh.gamecenter.eventbus.EBNetworkState; + +/** + * Created by khy on 2017/4/5. + */ +public class WenDaFragment extends BaseFragment { + + //连接上网络事件 + public void onEventMainThread(EBNetworkState busNetworkState) { + if (busNetworkState.isNetworkConnected()) { + + } + } +} diff --git a/app/src/main/res/drawable-hdpi/add_vote_icon.png b/app/src/main/res/drawable-hdpi/add_vote_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..9bd8cbd1a336824fe79f89bd994cd633e9f6070e GIT binary patch literal 361 zcmeAS@N?(olHy`uVBq!ia0vp^Q6S901|%(3I5IIXFdBHeIEGZrd3$H0FSDb7!$rd) z$0M@?gr*ctd2+x~_F=;mhWTsKx&Mpb&vLilkrsmJr$De=h z`8@0Oo(a)G8A~sCES%`1-0H^FDL7%tiWtL^1n*B# S4V3~0A%mx@pUXO@geCyo#gb_N literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/ic_game_select.png b/app/src/main/res/drawable-hdpi/ic_game_select.png index 53f5d61a440e65679a5f68a25e0db943908aaf76..1c5e7027f8e66478c31f73e89ebdbe0d598a857a 100644 GIT binary patch delta 3164 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 LcIMS)K1u%unTWr$ delta 3246 zcmZ`+X*d*&7PbvB_An@8Uj{LQ7)$njmwkzu$-X9(ZA_*wW0{PlG$hKtWhX-Rtr=99 zC{a^JzL32P<#z9L@1OfT-;Z<7^PKa(@2_*7bIxb64zOf~qrC+ehbRXF0|S?prRn8A zG5p_lhV_pp1iDYPNJ5w-%uI}oFRE)BK}|J`U@$W+W7wYr%uL-}OA8J&GKJ@dGM)b) z$oL;YRZLKy|0==%2_z*E6MH!zP{%*&YFtD>WUQ6xC8_v`YbyRB{yP8VYX1{AUya!q zldnReFfafstxSzv;@@pt0pNHLLqkI`QiL}~)1Xukc^F9h1lYqS#1HEAA}X^re^!T1 zYgPU}KTLcEJBESOXHYM$C~B=}ltq}$H;WM+GCc+eh3ce^0|gvTl)T~7&PCna0)#yZ zZd!ct=>Oz=p#-;d&8HhFIY4@_6MM1A1X!4Ll}DGUZP=`-U)I_Z4_s1M}!=SKdv zfWuv_H&hFj4J$J}!O8o7_|QL#KxQDPv8D3FM5$Pe5Dwpmw}f zSXQY)Jul-=M;opY;|RJ)i~;Q+KuX98<1UZgd|6Ch5{RDubUDzZRa3{FFRKOVqmSiz~zxAB(DW8o@{^SJ4(=Gdq_H9NEB7BZv=-JC2pVb>^0(A)Co=6_~} zgM{zjjf;@Yu8=r%kcB2!y~YS&lpFJIAsfbxIW>B>n=3zrMgz5g(F$HbzNUXL7v={oqco zBskCzc+r}!DOlAO{C=EoNJK{g#L`qLT&;VzyxlhSWz&DO7?9_azWTg;!!yNa9 zpAqu0i)C#{F~vpF4cw1f4&K%k`-;&Hc`0Xmc(Vhl=W-jMyQX2#IoT?~8n7@e-%ZiT z#Mpz(h2va|sqmK8;afuCWuuqshS;9dEc<$ggh<$*$TaL?Bd*JV^QN>S5{WNgku>4b z`HIpBSEu#_DiAmM`I1K9olWJSSa&tQn=*u{y1R`r#ckw@rGmi(Klvp;4;A~}yf|!J z%Sm6H2uJ7gZZBN!cqsi>RZC%$M=t{NC=QE`Ol)R!^H*57PTJE)POHHijm%w#u08y8 zF@lxf<$e{cx>m5Weop!NNAhL-Gm21uMljc_kb?9Zk_dP zPQI2(WY9T^lYVI~!a)WO%I_dLqODrKuL$@T5$A^FL?B0PWrR?Hw;!)(9lyueeZJ8! zW^Owx?$ur{XM|jmG|>n_L1YP=IH=|QckanLoC^KYQe&`^S7j1k82Mg%a5Fjeh-VD< zYNvjClKfhN80wPJ!~#g&Q77~BSUNS=i~Xi}e~|+Q^%?C2XZBruzcQ7plf^V_6LCQ` zZKGi4o^SSE+wSFi>aj5?2fX2!7Lr6x ztutQwtnaZka~qsnbW~X3N5xINUtLwTTdQ0BUiO~eDC4+X@3s87w2(iI%~*hQ3aD5E zmoMt~U#l=#mFMJGKe1&D1MXRuPwMXh*msVdS1Z>3X1!Mm5eP3B`xJ+n_mfBhlipo1 z4-6Bb`j(VQfccOw&nX%~w)$Dalw(aTw1WDC_ zd`dlkLxOy*yZG?FVUS;YE#vL+x~1NO(GN~72relvSfb=wm|NWO7KC&)9Y zIYqtNFu_kPG&`}0ZFBK`z={*U7kwpt;1FI-kQsRB z63`g6J2=f@qY+z0{&vu$_d?%@*^qUN$1(dPZ`ep*Mxq=Zh?)k*WKpsnb<=;& z&4f=oXU=*kqN&M8$N6r`j`9hb``W}7!-*^7!fXA?V?;GErEgIPTB@O_@bZK?yhL}C}8)svpJM!M{o;(0thb-%%4l(igW@46WxVX08&Nmo02~{?KNepok17!dBLC-D h-p1b7`K>g-kQ-d*^?~b5!k-s}!OG0uwDHfv_!s6v>8$_& diff --git a/app/src/main/res/drawable-hdpi/ic_game_unselect.png b/app/src/main/res/drawable-hdpi/ic_game_unselect.png index 86843a3de6b7b01a1201749cfbf16b06c9bb901e..561aa5bbfee9e8900d11029b0c569f41c0dd85c3 100644 GIT binary patch delta 3220 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 Mg15kxW1Xn~0$QdU{r~^~ diff --git a/app/src/main/res/drawable-hdpi/ic_message_select.png b/app/src/main/res/drawable-hdpi/ic_message_select.png new file mode 100644 index 0000000000000000000000000000000000000000..97029415a6788ac00f7ff16279f0753f7d3c613d GIT binary patch literal 3733 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/ic_message_unselect.png b/app/src/main/res/drawable-hdpi/ic_message_unselect.png new file mode 100644 index 0000000000000000000000000000000000000000..271edc1a63f44b1ee18d453d20cc7484c29c19ac GIT binary patch literal 3747 zcmaJ^c|26@-##QHLVH;ngY2_eni-U31|ufR6rn6L!whCIhEY)?Pb(#RWy=;RqR7~a zAK5BGk)bRlq!>|@?HxT&&+q-??LD9SoO}6P*Y#chxX&dAytRzfZYcl&WNjNEnSNWCMW7fiR{wF@Vel`H=mnbW`wj^%F3NN-_nz7}~?^nU-V<)#fCN z?0gbWAf5~$qDbHa`#~mQXrTa&%=QL_(E{ng=rB|8FI}{7y><)*gMLBS0jA);opQBz z09i6vWRM}mNRJ5DM}qdDAaFwz5@DbVLcrigP#6jdH_(H@(J&Mm1_%A~fQ8mrBww@> z#_Ati!ksCY!e%qkP$-APfpGL843-}hjzXcJFa#8V&=Vr`f=|%d-eG$5VAbCW7;-R? zMP;(73_55{(c6a+!Zrm9J^ecb8uMRSdhkDK5+)29=FNn{A+WWOegp08|9>cr_Afe^ z?L_{szyGIjFyRD~40R$0GeTHIVc~pL*Gw_dmMpS2o53P57=gdD=s;nx8Nn0=6J%+* zmbHB#O&2Pi#NY&L{o>f$qjB_Lwl|$f#$imsLKO&=N)O2|{=O#eV5_YyR_1JD%U8n)Pfo+l%7-1bV*{sFewquGg>5a;plttfdG%@>8@nxuJNN-4^E;edaY{hgTi<+M~XIE6~$A{8hD!z6D zB)N*0pH-3riVaWVA2?_Y)Ydm(jIA%n&7flk7j2FKVqTm6GpaD;Y_giP z-9=&nB0!5e`vzVsoiY>5Tu;hp7!-@(QE+%(3 z|J34tz1y3%?LrD^^}xn(?5BWN7x}Dm$($)aSsnUQk+ewOfY@n9dr`ofZz74+K4$qT zF=8_-E@!Pt1K)Qp=mQ@gX|9C(OG~zkc}%qfW7|qcHpLFjJrEa3Yvm234SO!#SP|n^ z8egtS5fMdd+)xXB-OGAbBs~hG`AuRAuC-3_!sTit!cgy)OA8mwyNZ_8EQ28u9mN`x zc6Hu=Ey1)-W;kwX@v@iKDK5oWjz?6u*PU>zD$|*K$^}YwtyraC~3V-+DrAJb%;9Z{r5rXvpA^csPrpHqN^9ya6DdG zW9}YWqPgYX=Vsm433Zu8*W-Y>*v8TQ(ckuMyt3$K5W{Kxba(HD&G{4R0!oX2goCQc z0UHN;3AdqTwpUg6?KmO`ZqVzi{GqRTRAv9Mf&4ma?a{KCjw_Mv%Eyl7vqKJPzb4j= zNlcD#zk@uK*H7Q*u@Q7qp7SLym5-serx58STtX1PIA(&s%sc;iapFXr zXoo3ZEqeV8T=Vr_z2bmQL`JJtq`rMT8DG_`HUU@J?!EGKO-o#hoVt$N5V7eKl0LRF#u{7_;3p>dNZv zokZ=IJqBNnh=YoZPertfS3ciU>uP<({)UoJb7m5MX|&}}6tIfs&t|u0E+F*<1F071!iB-b+@d5FK{n)4Pl3+ClohY_DfikBiwi`8 zs*G(6^6oE~QxDRcCY;?r^4LL>y7*V)n(sjD#HY_!iY9k9%EXkZls}HG-8$lk<0M>+x@}KB6|p3z-$ChriT?ng8~L5#LXWKUw@Nx84#I;(;gvTk0NG|MnSJF;<7 z$lM=~&a|wfls>(gI+2Q3o>X$9wuqyy^hDtui^m_GDN=W$ej^9K3aWY#~lr11WCHrH|K`R z6BS7_3s0lA@N>A^G9%kz=!mCk66bTN2`&05;q#xe)F1G_>f*5`JK%llI#aa~ck_Od zT5PW=lTjSZbo-#HM5-jCNo9pC4^u^fSB}kfF9*^$JVv}HW^Q19+_rpWZ){WJOn$Wq zPr!U!n%lt<$uECCZIJXTqe@J2NRZn$O=43OgWDyL!EGx?j&eWwFNwfDn-_~@UJp{} zc(Yg%d*2zyMSl|8=`XdeDbwh?zP8Q4lWzp>tXaVzofYUMn33rC!2b}NN)mZ$7 z{f(PBaJ7$4Gj)ZPNtEcx;wNQC+6hgWj#r`2Q8}}A@o!BH#zLn)+LR=3!)ZgjA^P<< z6ei*2ogr7FOL2R(7}Bqkv;E$jh&_OKaga8AzN}dxLhrhjYTgq+y4GwWFAvUXueIKP zx!sIg60HQCZu_GeyEPRO9(5Is**y!~4g>{vh5=21H}-TJ?&`4oTCiHElgW_boHy<0wK3pin- zSj~GnlUutOnL}B6k1<(z*iZbmB(-);efiJgeTJpIE$eRu8Ldjxeb%|j%JAD^?io3& zuIPF}vLwNN<;LAw9NP#*tBbJezgr&PvmQiS@iVR)7CDp<<5?F{%k4_G<#_060Mm-O z&8b`s!p}L_UfibRV5_#<{%6!7L^-{}ZrdgC@^i%3^Vg4zBQFNu^~rFYQx;Um^gDKA zFKvI5KIAE|G*_q~Y>}JJ$yU)t`wv0{?y{F2=}MJ2ZZ`c<5mi~Y#Dqts=DCM-8YmB~ z#Nb#imCv@0kxxq;cL~TU1Os1GpoWdZKNQVQWPBQUhtBnAKiBVWvTOxc%h=*Dj_Ga6MlE0+RHguqph1aL|g)z+LhHSl!78lT;u1JZffjVP{Y;D?=St&6uMsS{i-pNMHPW2_MJ0ckvn7KS%978H@y_sX1A>t^}_Wq2l z)X`7nWQOVi9EF-rZof=!Qp#h)IGXR~4s5lGj=#r<|6K z3i;K;$m!q_Ch zk{Mj@b!kV$>inyxb5qToB_D{-2tL)ZdfM~NR?Y7emVbR7esleuGoOUEbMwpIJT8;+ z-^WS7)#``rR!&S~XOzxi!tQLB=op8S-q zO~H}-Tgv38PH*M7pQfboWcQ~zSNXX^!JY*AH85?t>-?fP$Q8xl zDsZX&VdLk!p3V2?$T}zeH0Dk7ksq8YuNA~rH7Ga;0R5G){mi|^GT~;&Y&>SqURr$0 zbn3&+99)(QY)lHm`n?`35cQmuTPuIiN&cd$Q7(*y?|&=Ljn)Nk^C>^N5^%Ply2_7dyV2gMv& zeerYbg4#B}X?ddiZl^+^+P9bu+x!o0XsnxYtN7p~1@GT7Jc=4AZToJBO-Y&GVp17q zu;uxo{~P?B>SyV^+qr=0pyCS4|0(lX-lZ`ElLauufU(m8^b*k0yFsTuR($)~w7{#6 zHMGj{!pfwzc2mratIq$M`Kfv3|M=%Ill-=3y^(MF&cC4kbm#oDr~1O`ORg4OyjAn? z{F%KzA43W`UNt0hJnjn&at!XNzhmg7mEkh;iBDGLGaoaZV;Zxy_%wtBjsWd~Sh<4z dr|JQQo3AJFo?qIs516ePJYD@<);T3K0RWyWpq&5! delta 1181 zcmbQmyM<4&Gr-TCmrII^fq{Y7)59eQNauhs2OE&=PYXZ0QBjjg!Q9Nq!otMa*}%ob z$0+x?kz1gbl9^%!)$4>y?_?upr}}MQFK{q0FfZ|RaSW-r^=7Vbhi{_9@%yLu z_I$dlb0T8Gm52$RQ?BwQNlauDW`QuC} zF4s1nnGY-GotrtU;GJ#pdE4hU&+pw||4-Jq`25FnzaQUuUVFasyl%z3=L+^d3%Lc@ zIG9@$>v@3mY3rjq*fm1j#ZNt3mSTKY^3;qaN-sa3TDpEFm+(3T?I8R29RKzhzYb24 zl%M!=>jycrp7t;2GR_K=vGKnQ%sBRBy@*_O%H~+3)pvgfZ*saM`He}_ic73z>sHl? z1{?L$PCT2Gk}q^fqTMw9UdOcelgfGKd{%zDJcmtSnsI$T&=p(f8m#Qv^6IAgPSuyw z&n%AS?cdWnxp76|Hm_?QZZG0yFF&%lzIHA1@!XQNv5Ce1Kkrp7$=%n**ClBsCeUW! zAfd44F8evp1_BSfRYG zQJiPq4zc|kuP!op`^Va`q0#sdLt=wL3*#Y$>8X1+g>1TJYPVcsdj6#2ll(bWpBFq? zdGbon?T>eVX5U*iN9b^5j>|No;G(l0(Py|`8(wq#<8dGhQv^V#x~*w5|vZ_zSjV%A%zx}0YYBg9sQ#I@~LH`Ogp z*?YQdTbz0=yI|P-;z`MDw+gTQ?BBfOoTlNNr*0{|-_Np6znkN&*HS8--LF?2)v%#p zo>!f8*7*s>+n$|yl+^L~Tz&k4>89~2yL-1BExEWbd``Z1*v=o`{Zg*!ujgAde}5UR z`?|e}fjJ%MRfa@hR5|9Iu99tDd+x*g>o=#lPukA0y5G+E$Ck#j7wxPsoTIdWzP;#v z{+o1W_qj{)+rIVRnzdo-x&JK++Ao%i=sHDMSViY&Zu+`7dD}iUtLXYeH|rw=7M{O* zUHe?Ji0syjH-GIu7vC6pD&U&)N%mDoGWKvV@yrnfCsa^6b(T=z0Y-R6Zldchvzc}t zUN^+j-)LrJ2Ce8jH~nmz4d>m9utg p>{JdBS#U&yeSdJt59I?4mqKQ?ezB~&1}t$HJYD@<);T3K0RZ^d28sXx diff --git a/app/src/main/res/drawable-hdpi/ic_news_unselect.png b/app/src/main/res/drawable-hdpi/ic_news_unselect.png index 603f2257fa7e82bad63a439a2275a799d3dd7f59..e068070f266b968bf0f5adce8accbf324d21d421 100644 GIT binary patch delta 1095 zcmaFQcb`|WGr-TCmrII^fq{Y7)59eQNN0dB2OE%-mD##*qoO90f{}}ffs2!yiJ_&F zfuW(RxuubTqpPL4iHV7^xsj!T`Q$7n8JHqdoQjq)8N@(MGQy=uNujtTC^gM0B|o_| zH#M)s)5TV)BDX*JG(jv*Dd-psMi5DAoUD?iiZ zRkJXRYg^M%wh$pDFC7?CD+YlrlPTMH&N@Q36aQB%rD z6#OVC(7Uzcae3jaH)o{o&P@Dwat^b6`Q}73^Y3r&9DnoXYt4QA#@J~WSU8wi6gdP~ zIGpMQRD3PZ9o+h{bE}ryROVAbvx?>N8ZDRd@P7GzF0GU;Hk?mMUC96D@;hfXb-zA* zxarN=pbPG|{?9+RN{-m<6LzeBX(apkM>vPqbmLRE#rkU(#H3D|pd|IcK4ZiB7Z3Z?E`Lv}35t7B zA@BIoyJ&i++~!{!Zyp6XmcvOvfuqR$>@}$szDF%nBO<2;n%)T)bvL;y?;J2AxN(6_ z;dN=93ExypYz~J(gquUl({8mvpd3e%7TXC_&cATC`dFNTb zc_u960*4XU1HedbP+s&ZSECB|uFgpNV!ylkRQ2ZzvTFn8 ztv>XQ?aO=CkDCK;&O64v+%#^7@#c2Ld66j|B~Ap>lP@cPBLEk ya;CB5mcY{$`}}Vkc``s#wSdBkfIngh3>{~-`p^8l(*RgDFnGH9xvX*u~t{(ah1z*~!?=ZE_Zq3`~(ZPDRU@3}T=rncz~Sq)=QEl$vIhlAm0f zo0?bR>0+x?kz1gbl9^%!)oY4N?_?upr}~f27OOBYFyHrdaSW-r^=7VbM{l6S@$;tg zZa=*?DFa)f-1mI$@84H1?=(KU*Y^9LXY-2Z6~C{{SDNZ&*}-r8 zf~keE{t!bV2XhPKp+|m|`}i;1EX|)d>vq@Kl5~aSt|g1M?#%o>-J`Yh^@&rf=9j1C znY-GmKK&ht54#v=RE5_fJiTvwZpH>h*bMTF<6b)oX=mt!n<~ z(B0?qrsaqF{(s#p+GqVDs=oE?|Ksnc zUE2CFs$|2Ag~^OipZM(T_gwj5ThPKVL*vuCd$if2X1#6~5Zkw=IcuH9s-hk1@4jDg z#P_ywh_TJ&`q0Oh-d_uQ`a{4yrmDNgQb*;Lh-jtVF}0S~V{NIJHRGg-=sX<{<~{woMseDCp1%wZ9jcug`TYJ_mH-Q79sxEEX9)$Kq{#N0 z^Bx(QX2-s(?)v#D^rMUFG4~c<-Pbc_mAOV9Sy>aT*E{Lj;R*E;I@z7-n|f|`%|5k~ zC-LBwN~LV3-Ai0~4>i3kcC}hIS$V$5djYYAXWZ647oT}rE$%veDszhK@h6vVndILo z|GzytK4YJ@oYr*4u+E#Fn;$RR%cn6%kPR56ia@6n#$H>^cY8(J-tMyP``n+p${$)b ztu*i~Cx6h+1u=XcQS8q3NgLLP&O0&d#q86kRtf>_ubS2`TOHN0Az_|&UDcHH3$!n# zep%LPa8|r*!owxr@)x?LcK^8~_tfNFu>8**(f8L?F7`GL-~Fdw?rGQCYxbW%7XRA! z?iznuoAQDJH()pjv>7-^94U@mZ*?YXgQ?)Mgx$LRp>ca$Z(P~*M(WUWn|hB_mz`TY zq9!RCMof#X`nE>>b+ z(?1phiT8t2-dprEcMW4bpobshXy~Hs04hRJ_#~n64TOfC(I$ z&IQ;m$3f3m)hDt z-Q%C`)9_dtRHEL^=Ku@>p!E(ChZJn;I1LyAdL9^FXW;=ATMVAAelF{nof4V=&QT$* diff --git a/app/src/main/res/drawable-hdpi/ic_user_select.png b/app/src/main/res/drawable-hdpi/ic_user_select.png index 13b74c134398da18721aa76e1dc22637b3720503..d5f87a4752af18f15e148c868688f12ad7f3ff36 100644 GIT binary patch delta 2973 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 delta 2970 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 diff --git a/app/src/main/res/drawable-hdpi/ic_user_unselect.png b/app/src/main/res/drawable-hdpi/ic_user_unselect.png index 4c47e30c8eb0b20893dbabe4d3f5efc1c572f771..35d723d063874f8137aa7a8e739c2eb808f5bf10 100644 GIT binary patch delta 2921 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 delta 3001 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 diff --git a/app/src/main/res/drawable-hdpi/ic_wenda_select.png b/app/src/main/res/drawable-hdpi/ic_wenda_select.png new file mode 100644 index 0000000000000000000000000000000000000000..6ab8c21b6b170ecf17c74d0a0425758486f0fd8f GIT binary patch literal 4605 zcmaJ_XIN8Nw+;|UP*9QHLy!`XkkDa3dhZ=Y#E^s{gai_#ODF<@QUsJHy(vux5Rn!T z1tCh8Dn*(~5d=}B-8kPk-~Dmtp7orw%d_5ht-aQ}|D0P^7KW@R_)Y)-09IooJsaBS z`RfHU(Y}HL4TZFUm!$7RvcS6eI}e<4aTv(t!TOt45pu+Lnbv{&FFCYe4^# zl#{s?L>KRmg($+6WY9=?6^ODb9I2?PBByX3B8NaK$s$x`kqR;hq#8n14S|IG{Xl8a z{4wroHhKns$D*w?pq?ZWK}}XRFfb4vC=bW`d&nYHRaIpXa6(r+J z6#dPhhb5x@y$B>Pyf5SzBgzdQK+=HHGX2jHaD;zoeTjdUiB>S#AQV9s2}k@o(r-s| z^Z(x!hx^ByNV38HH{bu0m}nPFz{=WSiTD72G_7&&qQ62B)O7u^C=%Y^4v+WwT}3NT zJPA+q#1kO8y1%NX43Tv7^2Oi-iLk#g=H_a~zC;qr7mYR6(}2=g;9g!BHKekliXuWm z52>nyKqB>(wN(_52J#AWiYm%-a>^>&zp;9FbN~+POZtt){1>bLuh?I5z!7MX^|1b4 z*RdD_e>@KI*Rj>S{yi6+f93ldi~09lbpI7AOG`%fS9AYYvwv^V6!dHQk928^f5eaV zr77N@ChZrIKWX>v6wX*r+b(Ew&E;f0r#G&#und*!>V5^R(6tMLbMv;)#fHtN0wPdMNkvTz=u9^KxQpwF#yfd0qIusG}Ebh7?yH6 z(G z*5iiDvop$^0dMMrS0S<2ZUaWK8?UBsHpviKvyu3MQFZmF`Rsa)D)FgAHiT! z-WisiQz??p>Xr*+*}MoojEJ8*RwmMIqj*P%)Qqfl%H>;4TtxJ;L8txs_G0MvdulXe z`kg8C<=#6v<(g%I(y! zp7{sT)s1choamv8&Utkpz3d`3S?IEB()`^!_0fa~cxs$voh&~H51w~qgmBxPlRmAk zjd5{YK9Y;)1_dn#FT<$CS(*+tc-zSf`Q89jsrq?&WSU=#-P1Pg%j>!^K$M#6vjiWH z7cXO<6q-{RvXn!oi*dIMiLcYF%$W`&S!NrZSX$skpSfPOJV$yibOG9QG0x&4sthUx zIq6T=o9M03Y_ZD0({(ph^P8H%AAE*YCoa{d7za=nW+e26n|siv$9IR?;M{;Hmu;@? zrPx)EOv413CsF>%7AF8!Qd~jPaidC(3a?1dy9>wfD(d|hb*$m+3nT4^EDR#cC!@U&PWkGlwhv7~@fLFXCo8vvO&m9GVl2tEyBh;IqO^|%5NG3Lu zSMEyn+=yshI&^Af7aiX)V4fQ2XB;1=`z-aY(cruMu}D-Tuf1g0-?|>$(qXEF9K_@}%@5BlKYS2G>iX;$&|riJ9cE==qbyf!)X7yLqq! zwXAbm&b(Zy&!_a04i=P3w=cy#xS7+K$H2Vd|EKsXWWXIBUCQn8z){%O{8FVDqiO2aqK}$ zA4xi>O~QF*zkp|OkiP2#{e^AQrL**o-+|U*;X}(Q`GHF=WDtKxS8s2Ft_eS-Nj8ad zByJ~V9rI+mSbVBp^3GhzA;ns=0McMLd9n*QUVNF~9WVmZ(sY=#2zDB+VXoV5BIk#9 zS_}JPk5cC+wNg7y!^TpMHxGN(ATu*_x5F%(6p$5XSd1RGpP8;)S&)z5;?(ddd7AnR zSD!(SNo5lo@m{nq0j&+ZOTiU(N;;&JRRiXqaLA%K0~CBj`C8u`n1kjhMtNue$jd== zm}SJTH{7)_edYZ+S9c}o-Pgtp(;l&L&yJay4)de#bpw z{>t48k)T)ZIooO1N4pWa+}68Z!h5&vm^QQ3(a(0{K`I5jC$tnXIiY=}ET4<&-y{!| zrbz=`7le(IB}DcX=2`L$sV05eAJ@#7wsvC|o5g!eZcV0 zt9w@u#a0lAjsQj5$#)rUgp`%tl6k(n8|8apLI)9-EL_+f0bYg&Gt#AVl($(}o}3I0 z$~=tet3zok%9Gp`>f+e6a{~q}f11fUDI&|W&?xn)LdGj;kqPc#B@>;{RGA)Wt6y&; zGjSNt(+Sd5KX$dI!z5@Om2*TgM29PFkH)S)tVJb$)fMIykMJbdE6fl%%thjT&UAja zWsOz&cqLkJ;r<2dN%+$&)hwgF0@aOz7gqB8C&z_j#;0Bk4VMV-Fy0XfWKQmm25=}y z%-b1V&AWRTmIk)WT|Z!)5SF^GAOAk{F5H#VxrfsW{=@|CkmBVGem*8^H7zi1;P-j{ z#OZ|r#X~Zc&EcF16sx+*=z?BN#h(DdW%xuC1Dp_0J-1nMn5fs}h|O?@vh4_&iKf7|G>tBKO&8Kv_RrZ6WvP6>`z`U*TfqCu%P zr!3NjhGAv6>dgAO`jl0E+`T;3R;Dk=P zp=8{2uI?NpX`4IQxX#}F>u%=0eaC=AZYiz|hKpx?&%I#k3eC>`L~$y-e9|uD<&)_TT+v50~a=+tpzu| zuR-s%!y*8vr3)P9E<)`J;}GurIt>?Y3}a+Hnn!X7A@zZKLu^h#?((dt(%S<807zm> z2w_(6@P-fv5E4^$TvLBqWM4RIQyNd`Vkm8q3auC%)E=gaV8J%%;0X}lfcytkZ8+RC#!U_&D;5i+Tfiivcr8Q) ze_mI~pfY~Bo*2%)n|UbpwI<6->*&R7WNT;b`9Q#A#2OfLba zjP+psueH3l?x_c-YKz%f+a-McIe$lI%S?+P3=NENi&hbHlw)>J3+wmEpPEc8i92h= z@u2%MY24(^GAFP>t<~U-HnPQ}%vw9PN}M=hVz)#Qd6*~U8W)Xfyk#OFW}k6ut}#lq z^Rr|{I{sPGI0v-i6+7g{$l6z~xq69K@&M0IpCtab)zE{-opbkIFV;FkE`6X&$cw6? ziWjA39YpeD6!ZK?jdNry(%2-r+?4iShTLt38W8FVMsCz*QkZozRaP}9kz>WusunGc zbRU^YS+nooAI6K7>d-5dFJDi%rxfcyr=FzKfE}ItE^H?8A?5U7BotgZ1sEBa9(x>?lN9Zp;d7geqEW=L87bMViveenm{^=FtjWy051dk9&U zArDucF{6iE$&rF9-_o*;WR4uHl#`^%NqoC#Y6!6GQvBvDRJt;p(#CPD_T}tEU*9Vh zmh|kxqL0*b`1Wb-)VgBH53ZHe3imp$IJuq&f?;E*EftC<&c`o;Lz7f#K5(k&-K@cN zv9$ZW!1vrcrVozjxfx>U!eL#ITy6%x5>HRg#V>4&vcVBelERg+X=bn|YAkV@Vp8qC zry90G@ZZ$6uc4EYHbCb9!nHH`o&>LFGTy$F%l%x8LPSwJgJwi#PHy_8GJ5FwI^651 zg)u3To21A(^z4AVy}?EK%YrAh=xxkXSsk6*2BeFWrWV2VY^QZ^BzgIHynG;^y>=r* zB^1DH#Hqh7pp&ohHtzmK2`PyW`}+(#%}qWchp^_o84%V~$dYYTG-1IJ;&-;W20TH} z_Mv8)-(El9=9)J*yX41xXx8Og+pdXp;x1GHR^u=*a!$k literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/ic_wenda_unselect.png b/app/src/main/res/drawable-hdpi/ic_wenda_unselect.png new file mode 100644 index 0000000000000000000000000000000000000000..0bbbe1eca93fe44da65cd52f799c72095909b94c GIT binary patch literal 4704 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 z zKWr0M9DqNcToi>yR?;HsHm$uh>f*ry3Dpt{NXbwh8)8L8szB|6=$4LUqhhH^9{xzz&;pvk6Cp$=pCk5D$TOIfvILv~7J$>h$A+4I z20Q{D0QZCtYlhklC3AsN%J+b?zy)9)IFxb7H^4*SHgH!6@n4p~G7~7J`~bKFd13v@52qFH-B7kv$`ZT=)e2@P+HYhfL>%a}ur?)YIQc4H72wX$m1Z-p#SOk`Y z5N}O1Xhfit@(W-IXqad(2Oa|#g%H1|Z77vMDP;k;4EzL4q&=9N*#fQtH-!*8NgGKl zP)hkea0@t>v<*wR1AHxn_&3SUi3Cb1KLzfi2Ee006ZlF9@mJg(V+)j0)=&f1a@>6_ z#|0LI5Y0F{#S$o`tfL00AI8~lhm5y7D|;0;i((#7F}5HSae@ z@3alV1x`e{COTms(0AMWygTwheb@W?yC2Ab0`)lW7Nc{wjYAE%r5ywk)&nmy{Nubd zoI^PXB+#yYJX>b?o-j;1$O5`f&v1W*_@{piaYguqTsj8yi4n@AN>i=L458EN^;x znrgL5u~@`)T~=0BOg8UhW@d)T$w}7M)>vO(H{JYUl%s3j54t^2&z}8>!3m)0>1i5` z28F_INAGkxG@G#!9+7YyhkCtExxD+p)M~Y8wOXb_JqJGXX8ZPD1J7c3_N-d1?vn>l zsZ^-d%s$vSj>EBI$M(qsn46npYHG@8ER>_O-Pn6JTreG}SnRz*C`?N9fQwI9MEl(VkDg)E`~G@DK15~Ij_@!|!`%aIeyNmzhgfv2;KWKv>Oc~74{ zpyBRT-KqaU@zS4`8l{Dyz*M?^+jhP4s>~F)?AQJb-GE0nWBXl^Dc;dLYl;Yr4pMC@Fb5&CbB9PN_h*di`8*3GK7d_;_fT(o z8)ar@##e5!m$Zq2C=zF9XA`v@!W)z`B~TX)J~SO=a&j_oo2jfyn8bsAfhlRxT?_EBnUq<={1I!Ux%qq&wK70c8?RhbeBN{Rm`>i<> zG$*ozS{h`G;xWpJkMYZf;lzL05J2y6HLIfbyiPz!PZ|qsXNldL5N{Mq8q{@J{6U zfLOILdPSd83}`YwV_ejNJF#9aiCtWze>*40aXK^yny71D?C+GQI!j+48jQve=ML&_ z8++w8NKxLVZ|~=UZ&9Q5VPgw*?B|oN9SGwkKvORPYNWtYAIM4I8|+Snt)h}A%?Ulhr z&Pjvh0G$hL2}N*CYzZ36l9dANCOW5hv%Wohe`jaT=X}yhr}f<1_jy;dGjC=q&1Mr% zoCYoe=Yey;1W*G`0;8tQ2jD%h33Pxrz)Rpcu$|{5N~uCgRSUJwW*nFWW`NIuAfx@L z`P6{P$nh?)3M>LGV8c~{SqbH#0$c@_fxm(Kz!xQB2PVdS6LZ;|qf#oRat8Q=vlT_!8fOam{p)@QOB zW(ki0Pmw{xurmQX&AQTQ!Xrp;cpPLyCV;lqdL*eqnsAfhzKxTZMsklONqCOo?4a^8 ztF?}OWW@=e1s?m&XCOS*S|1vm#0mcbobaEIcTONKeH;{SaI_;R*VMJvePi#aa0R$m zBKT`$UhA5-z^f9!zo)g{pVUN!zrubZ@D1<@GDvx3pW7iGB6I9Xa}FD(5I3M-_?BhB zSHKhV{a@gFVBRuTlzHF>q!@rX$7{=2`);A|IB>}_*eMS81$QVXJ#S(}sUl?~8!l>j6S%6xAto8UL>GnQ|Z&`qo0lkGSpJYi7LKa}u z)#K>c5FksIzDeqhL&}c5^YS4;)@OZ^B^xpb>GuJCChZ|<&smofj=XGEk(Kw!td-^PPz;HV;S$6QfdSGOFOo=%*Vhr^F085!p$@EHt;jO&2!g) z&n#o@yG3{6{Q<0DxBBoaQjkA|lx0uk$@%DdVNh#Hi9*CO{e+TRiCLgctA})Qz39kb;yr<)z8%nA5g9no; z9t)V~)-k1}lv;@ULt2UFI(|y#icNO1;Z!n72&31zcu0JF*sVIqS-X6nV*G2ly8F6WO?S z)O)#hkw;H#Z=8fpA$|e)l%pMyEtwn&$%6et_&U;qe~k>z2gRB>XT#)Bn6gVPZDc{c zj@;_DMT9i=OzgTjS39+J1}(!pK*%4sFj4b7qwi!nYID^Xg&jZ6|X4&0o)`W U=0057d;kCd07*qoM6N<$f)`mx(EtDd diff --git a/app/src/main/res/drawable-nodpi/oval_message_hint_bg.xml b/app/src/main/res/drawable-nodpi/oval_message_hint_bg.xml new file mode 100644 index 0000000000..461ad89e7b --- /dev/null +++ b/app/src/main/res/drawable-nodpi/oval_message_hint_bg.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/progressbar_vote_style.xml b/app/src/main/res/drawable/progressbar_vote_style.xml new file mode 100644 index 0000000000..5b29c76b1e --- /dev/null +++ b/app/src/main/res/drawable/progressbar_vote_style.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_all_red_dn.xml b/app/src/main/res/drawable/textview_all_red_dn.xml new file mode 100644 index 0000000000..f6716e8f51 --- /dev/null +++ b/app/src/main/res/drawable/textview_all_red_dn.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_all_red_style.xml b/app/src/main/res/drawable/textview_all_red_style.xml new file mode 100644 index 0000000000..8b4ab33665 --- /dev/null +++ b/app/src/main/res/drawable/textview_all_red_style.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_all_red_up.xml b/app/src/main/res/drawable/textview_all_red_up.xml new file mode 100644 index 0000000000..2efa60a7b5 --- /dev/null +++ b/app/src/main/res/drawable/textview_all_red_up.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_game_detail.xml b/app/src/main/res/layout/activity_game_detail.xml index a5fbeba5a9..7b32b0a992 100644 --- a/app/src/main/res/layout/activity_game_detail.xml +++ b/app/src/main/res/layout/activity_game_detail.xml @@ -8,7 +8,7 @@ - - + android:layout_margin="8dp"/> + android:src="@drawable/ic_game_select" /> @@ -79,6 +79,57 @@ android:textSize="10sp" /> + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_suggest_new.xml b/app/src/main/res/layout/activity_suggest_new.xml index f9347b2c79..eece92b364 100644 --- a/app/src/main/res/layout/activity_suggest_new.xml +++ b/app/src/main/res/layout/activity_suggest_new.xml @@ -18,14 +18,14 @@ + android:scrollbars="none" + android:layout_marginBottom="60dp"> + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_modify_nickname.xml b/app/src/main/res/layout/dialog_modify_nickname.xml index 36478fb725..9b17a4d660 100644 --- a/app/src/main/res/layout/dialog_modify_nickname.xml +++ b/app/src/main/res/layout/dialog_modify_nickname.xml @@ -6,6 +6,7 @@ android:orientation="vertical"> + android:layout_width="wrap_content" + android:layout_height="wrap_content"> @@ -29,6 +25,7 @@ android:layout_centerVertical="true" android:layout_alignParentRight="true" android:layout_marginRight="20dp" + android:visibility="gone" android:src="@drawable/strategy_game_select"/> diff --git a/app/src/main/res/layout/fm_search_history.xml b/app/src/main/res/layout/fm_search_history.xml index e0b61e1125..9b3360f117 100644 --- a/app/src/main/res/layout/fm_search_history.xml +++ b/app/src/main/res/layout/fm_search_history.xml @@ -26,7 +26,9 @@ android:layout_height="wrap_content" android:background="@android:color/white" android:paddingLeft="15dp" - android:paddingRight="15dp" /> + android:paddingRight="15dp" + android:paddingTop="5dp" + android:paddingBottom="5dp"/> @@ -83,7 +85,9 @@ android:layout_height="wrap_content" android:background="@android:color/white" android:paddingLeft="15dp" - android:paddingRight="15dp" /> + android:paddingRight="15dp" + android:paddingTop="5dp" + android:paddingBottom="5dp"/> diff --git a/app/src/main/res/layout/fragment_message.xml b/app/src/main/res/layout/fragment_message.xml new file mode 100644 index 0000000000..8d52889279 --- /dev/null +++ b/app/src/main/res/layout/fragment_message.xml @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_news1.xml b/app/src/main/res/layout/fragment_news1.xml index 7f9e9fc7d4..6f6e27f4c6 100644 --- a/app/src/main/res/layout/fragment_news1.xml +++ b/app/src/main/res/layout/fragment_news1.xml @@ -1,109 +1,27 @@ - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_news2.xml b/app/src/main/res/layout/fragment_news2.xml index 6f6e27f4c6..4aba769972 100644 --- a/app/src/main/res/layout/fragment_news2.xml +++ b/app/src/main/res/layout/fragment_news2.xml @@ -1,27 +1,58 @@ + android:layout_height="match_parent"> - + android:layout_height="match_parent" + android:orientation="vertical" + android:gravity="center_horizontal"> + + + + + + + + - - + android:layout_height="match_parent"/> - + - + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_news4.xml b/app/src/main/res/layout/fragment_news4.xml index c3475128c7..07f2016c2b 100644 --- a/app/src/main/res/layout/fragment_news4.xml +++ b/app/src/main/res/layout/fragment_news4.xml @@ -4,45 +4,105 @@ android:layout_height="match_parent" > + android:layout_height="wrap_content"> - - - - - + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_normal_message.xml b/app/src/main/res/layout/fragment_normal_message.xml new file mode 100644 index 0000000000..1fb0837e5d --- /dev/null +++ b/app/src/main/res/layout/fragment_normal_message.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_personal.xml b/app/src/main/res/layout/fragment_personal.xml index 5e7fcc6bd0..4ea1d28fb7 100644 --- a/app/src/main/res/layout/fragment_personal.xml +++ b/app/src/main/res/layout/fragment_personal.xml @@ -23,8 +23,8 @@ + android:src="@drawable/personal_entrance_libao"/> + android:text="礼包" /> diff --git a/app/src/main/res/layout/gamedetail_item_top.xml b/app/src/main/res/layout/gamedetail_item_top.xml index 3ed7e7e0a6..4a5d6a466e 100644 --- a/app/src/main/res/layout/gamedetail_item_top.xml +++ b/app/src/main/res/layout/gamedetail_item_top.xml @@ -6,8 +6,8 @@ android:gravity="center_vertical" android:background="@android:color/white" android:paddingBottom="15dp" - android:paddingLeft="12dp" - android:paddingRight="12dp" + android:paddingLeft="18dp" + android:paddingRight="18dp" android:paddingTop="15dp"> + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/message_comment_item_vote.xml b/app/src/main/res/layout/message_comment_item_vote.xml new file mode 100644 index 0000000000..8b22e06f52 --- /dev/null +++ b/app/src/main/res/layout/message_comment_item_vote.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/message_kefu_item.xml b/app/src/main/res/layout/message_kefu_item.xml new file mode 100644 index 0000000000..f7f47e13a8 --- /dev/null +++ b/app/src/main/res/layout/message_kefu_item.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/message_wenda_item.xml b/app/src/main/res/layout/message_wenda_item.xml new file mode 100644 index 0000000000..c0c04338ab --- /dev/null +++ b/app/src/main/res/layout/message_wenda_item.xml @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/news_detail_comment.xml b/app/src/main/res/layout/news_detail_comment.xml index f3243529cc..0c0317cfed 100644 --- a/app/src/main/res/layout/news_detail_comment.xml +++ b/app/src/main/res/layout/news_detail_comment.xml @@ -14,8 +14,8 @@ android:text="热门评论" android:textColor="#3a3a3a" android:textSize="16dp" - android:paddingLeft="12dp" - android:paddingRight="12dp" + android:paddingLeft="18dp" + android:paddingRight="18dp" android:paddingTop="12dp" android:layout_marginBottom="12dp"/> diff --git a/app/src/main/res/layout/news_footer_item.xml b/app/src/main/res/layout/news_footer_item.xml index 854e8bea7b..c7ae44a5fa 100644 --- a/app/src/main/res/layout/news_footer_item.xml +++ b/app/src/main/res/layout/news_footer_item.xml @@ -4,7 +4,8 @@ android:layout_height="wrap_content" android:gravity="center" android:orientation="horizontal" - android:paddingBottom="8dp"> + android:paddingBottom="8dp" + android:paddingTop="8dp"> + android:orientation="vertical" + android:background="@android:color/white"> + android:paddingBottom="6dp" + android:paddingTop="6dp"> + + + + + + + + + + + + + + + + + + + + + + + + + + \ 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 1025d22ef9..53ba16167b 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -48,5 +48,7 @@ #000000 #1668d0 + + #ff4147 \ No newline at end of file