From 8d6b2adc5ce2c5ab793ba07148fbc582ae9554cb Mon Sep 17 00:00:00 2001 From: fengyuecanzhu <1021300691@qq.com> Date: Tue, 3 Nov 2020 12:45:07 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/assetWizardSettings.xml | 4 +- .idea/caches/build_file_checksums.ser | Bin 537 -> 537 bytes .idea/sqldialects.xml | 1 - README.md | 202 ++- app/build.gradle | 3 + app/src/main/AndroidManifest.xml | 4 - app/src/main/assets/updatelog.fy | 13 + app/src/main/assets/webdavhelp.fy | 3 + .../myreader/application/MyApplication.java | 71 +- .../fycz/myreader/application/SysManager.java | 11 +- .../xyz/fycz/myreader/base/BaseActivity.java | 255 ++- .../xyz/fycz/myreader/base/BaseActivity2.java | 244 --- .../fycz/myreader/base/BaseTabActivity.java | 2 +- .../xyz/fycz/myreader/common/APPCONST.java | 4 +- .../model/backup/BackupAndRestore.java | 129 -- .../myreader/model/backup/UserService.java | 333 ---- .../fycz/myreader/model/storage/WebDavHelp.kt | 5 +- .../myreader/ui/activity/AboutActivity.java | 16 +- .../ui/activity/BookDetailedActivity.java | 7 +- .../ui/activity/BookstoreActivity.java | 4 +- .../myreader/ui/activity/CatalogActivity.java | 4 +- .../myreader/ui/activity/FontsActivity.java | 6 +- .../myreader/ui/activity/LoginActivity.java | 231 --- .../myreader/ui/activity/MainActivity.java | 4 +- .../ui/activity/MoreSettingActivity.java | 15 +- .../myreader/ui/activity/ReadActivity.java | 1507 ++++++++++++++++- .../ui/activity/RegisterActivity.java | 271 --- .../ui/activity/SearchBookActivity.java | 5 +- .../ui/activity/WebDavSettingActivity.java | 24 +- .../ui/adapter/BookcaseDetailedAdapter.java | 6 +- .../ui/adapter/BookcaseDragAdapter.java | 6 +- .../myreader/ui/dialog/CopyContentDialog.java | 62 + .../myreader/ui/dialog/DialogCreator.java | 169 +- .../myreader/ui/fragment/MineFragment.java | 209 +-- .../ui/presenter/BookcasePresenter.java | 39 - .../myreader/ui/presenter/ReadPresenter.java | 1314 -------------- .../xyz/fycz/myreader/util/AlarmHelper.java | 72 - .../myreader/util/Anti_hijackingUtils.java | 125 -- .../myreader/util/BeanPropertiesUtil.java | 125 -- .../myreader/util/DownloadMangerUtils.java | 431 ----- .../java/xyz/fycz/myreader/util/IdHelper.java | 14 - .../java/xyz/fycz/myreader/util/Lunar.java | 266 --- .../xyz/fycz/myreader/util/LunarCalendar.java | 326 ---- .../xyz/fycz/myreader/util/ToastUtils.java | 80 +- .../myreader/util/utils/SnackbarUtils.java | 68 + .../myreader/util/utils/SystemBarUtils.java | 161 ++ .../webapi/crawler/base/ReadCrawler.java | 16 +- .../fycz/myreader/widget/page/PageLoader.java | 21 +- .../fycz/myreader/widget/page/PageView.java | 20 +- app/src/main/res/anim/slide_bottom_in.xml | 7 + app/src/main/res/anim/slide_bottom_out.xml | 7 + app/src/main/res/anim/slide_top_in.xml | 8 + app/src/main/res/anim/slide_top_out.xml | 6 + .../ic_keyboard_arrow_left_black_24dp.png | Bin 169 -> 0 bytes .../drawable-hdpi/ic_refresh_black_24dp.png | Bin 463 -> 0 bytes .../drawable-hdpi/ic_search_black_24dp.png | Bin 460 -> 0 bytes .../ic_keyboard_arrow_left_black_24dp.png | Bin 137 -> 0 bytes .../drawable-mdpi/ic_refresh_black_24dp.png | Bin 308 -> 0 bytes .../drawable-mdpi/ic_search_black_24dp.png | Bin 290 -> 0 bytes app/src/main/res/drawable-xhdpi/arm_left.png | Bin 8098 -> 0 bytes app/src/main/res/drawable-xhdpi/arm_right.png | Bin 7340 -> 0 bytes app/src/main/res/drawable-xhdpi/bg.jpeg | Bin 438130 -> 0 bytes .../ic_keyboard_arrow_left_black_24dp.png | Bin 182 -> 0 bytes .../drawable-xhdpi/ic_refresh_black_24dp.png | Bin 604 -> 0 bytes .../drawable-xhdpi/ic_search_black_24dp.png | Bin 550 -> 0 bytes app/src/main/res/drawable-xhdpi/icon_hand.png | Bin 3366 -> 0 bytes .../res/drawable-xhdpi/iconfont_password.png | Bin 1576 -> 0 bytes .../main/res/drawable-xhdpi/iconfont_user.png | Bin 1966 -> 0 bytes app/src/main/res/drawable-xhdpi/owl_head.png | Bin 16192 -> 0 bytes .../ic_keyboard_arrow_left_black_24dp.png | Bin 247 -> 0 bytes .../res/drawable-xxhdpi/ic_menu_overflow.png | Bin 205 -> 0 bytes .../res/drawable-xxhdpi/ic_menu_setting.png | Bin 1099 -> 0 bytes .../drawable-xxhdpi/ic_refresh_black_24dp.png | Bin 898 -> 0 bytes .../drawable-xxhdpi/ic_search_black_24dp.png | Bin 834 -> 0 bytes .../ic_keyboard_arrow_left_black_24dp.png | Bin 244 -> 0 bytes .../ic_refresh_black_24dp.png | Bin 1204 -> 0 bytes .../drawable-xxxhdpi/ic_search_black_24dp.png | Bin 1085 -> 0 bytes app/src/main/res/drawable/ic_bookmark.xml | 17 +- app/src/main/res/drawable/ic_copy.xml | 9 + app/src/main/res/drawable/ic_link.xml | 20 +- app/src/main/res/drawable/ic_search2.xml | 9 + app/src/main/res/layout/activity_catalog.xml | 2 +- app/src/main/res/layout/activity_login.xml | 241 --- app/src/main/res/layout/activity_read.xml | 199 +++ app/src/main/res/layout/activity_read_new.xml | 59 - app/src/main/res/layout/activity_register.xml | 205 --- .../main/res/layout/dialog_copy_content.xml | 16 + .../main/res/layout/dialog_read_setting.xml | 297 ---- app/src/main/res/layout/fragment_mine.xml | 102 -- .../main/res/layout/layout_about_content.xml | 36 - .../res/layout/scroll_title_indicator.xml | 2 +- app/src/main/res/menu/menu_read.xml | 34 + app/src/main/res/menu/webdav_help.xml | 10 + .../res/mipmap-hdpi/ic_launcher_round.png | Bin 4208 -> 0 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 2555 -> 0 bytes app/src/main/res/mipmap-xhdpi/add.png | Bin 110 -> 0 bytes app/src/main/res/mipmap-xhdpi/b9.png | Bin 638 -> 0 bytes app/src/main/res/mipmap-xhdpi/bd.png | Bin 373 -> 0 bytes .../main/res/mipmap-xhdpi/default_cover.jpg | Bin 64772 -> 0 bytes .../main/res/mipmap-xhdpi/default_cover.png | Bin 0 -> 498492 bytes app/src/main/res/mipmap-xhdpi/f2.png | Bin 379 -> 0 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 6114 -> 0 bytes .../main/res/mipmap-xhdpi/ic_menu_refresh.png | Bin 901 -> 0 bytes app/src/main/res/mipmap-xhdpi/larrow.png | Bin 1590 -> 0 bytes app/src/main/res/mipmap-xhdpi/larrow3.png | Bin 4122 -> 0 bytes .../main/res/mipmap-xhdpi/larrow_black.png | Bin 244 -> 0 bytes .../main/res/mipmap-xhdpi/larrow_white.png | Bin 364 -> 0 bytes app/src/main/res/mipmap-xhdpi/n8.png | Bin 775 -> 0 bytes app/src/main/res/mipmap-xhdpi/no_image.jpg | Bin 36277 -> 0 bytes app/src/main/res/mipmap-xhdpi/s.png | Bin 647 -> 0 bytes app/src/main/res/mipmap-xhdpi/s1.png | Bin 614 -> 0 bytes app/src/main/res/mipmap-xhdpi/search.png | Bin 3887 -> 0 bytes app/src/main/res/mipmap-xhdpi/t8.png | Bin 339 -> 0 bytes .../res/mipmap-xhdpi/theme_leather_bg.jpg | Bin 42402 -> 0 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 10056 -> 0 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 14696 -> 0 bytes app/src/main/res/values/strings.xml | 2 + app/src/main/res/values/styles.xml | 79 +- app/src/main/res/xml/shortcuts.xml | 19 + app/version_code.properties | 4 +- img/1.png | Bin 105576 -> 156267 bytes img/10.png | Bin 48979 -> 0 bytes img/2.png | Bin 21682 -> 20989 bytes img/3.png | Bin 192062 -> 22641 bytes img/4.png | Bin 30851 -> 127706 bytes img/5.png | Bin 200869 -> 166505 bytes img/6.png | Bin 99524 -> 46604 bytes img/7.png | Bin 52118 -> 177778 bytes img/8.png | Bin 125043 -> 87125 bytes img/9.png | Bin 45212 -> 45719 bytes 130 files changed, 2664 insertions(+), 5634 deletions(-) create mode 100644 app/src/main/assets/webdavhelp.fy delete mode 100644 app/src/main/java/xyz/fycz/myreader/base/BaseActivity2.java delete mode 100644 app/src/main/java/xyz/fycz/myreader/model/backup/BackupAndRestore.java delete mode 100644 app/src/main/java/xyz/fycz/myreader/model/backup/UserService.java delete mode 100644 app/src/main/java/xyz/fycz/myreader/ui/activity/LoginActivity.java delete mode 100644 app/src/main/java/xyz/fycz/myreader/ui/activity/RegisterActivity.java create mode 100644 app/src/main/java/xyz/fycz/myreader/ui/dialog/CopyContentDialog.java delete mode 100644 app/src/main/java/xyz/fycz/myreader/ui/presenter/ReadPresenter.java delete mode 100644 app/src/main/java/xyz/fycz/myreader/util/AlarmHelper.java delete mode 100644 app/src/main/java/xyz/fycz/myreader/util/Anti_hijackingUtils.java delete mode 100644 app/src/main/java/xyz/fycz/myreader/util/BeanPropertiesUtil.java delete mode 100644 app/src/main/java/xyz/fycz/myreader/util/DownloadMangerUtils.java delete mode 100644 app/src/main/java/xyz/fycz/myreader/util/IdHelper.java delete mode 100644 app/src/main/java/xyz/fycz/myreader/util/Lunar.java delete mode 100644 app/src/main/java/xyz/fycz/myreader/util/LunarCalendar.java create mode 100644 app/src/main/java/xyz/fycz/myreader/util/utils/SnackbarUtils.java create mode 100644 app/src/main/java/xyz/fycz/myreader/util/utils/SystemBarUtils.java create mode 100644 app/src/main/res/anim/slide_bottom_in.xml create mode 100644 app/src/main/res/anim/slide_bottom_out.xml create mode 100644 app/src/main/res/anim/slide_top_in.xml create mode 100644 app/src/main/res/anim/slide_top_out.xml delete mode 100644 app/src/main/res/drawable-hdpi/ic_keyboard_arrow_left_black_24dp.png delete mode 100644 app/src/main/res/drawable-hdpi/ic_refresh_black_24dp.png delete mode 100644 app/src/main/res/drawable-hdpi/ic_search_black_24dp.png delete mode 100644 app/src/main/res/drawable-mdpi/ic_keyboard_arrow_left_black_24dp.png delete mode 100644 app/src/main/res/drawable-mdpi/ic_refresh_black_24dp.png delete mode 100644 app/src/main/res/drawable-mdpi/ic_search_black_24dp.png delete mode 100644 app/src/main/res/drawable-xhdpi/arm_left.png delete mode 100644 app/src/main/res/drawable-xhdpi/arm_right.png delete mode 100644 app/src/main/res/drawable-xhdpi/bg.jpeg delete mode 100644 app/src/main/res/drawable-xhdpi/ic_keyboard_arrow_left_black_24dp.png delete mode 100644 app/src/main/res/drawable-xhdpi/ic_refresh_black_24dp.png delete mode 100644 app/src/main/res/drawable-xhdpi/ic_search_black_24dp.png delete mode 100644 app/src/main/res/drawable-xhdpi/icon_hand.png delete mode 100644 app/src/main/res/drawable-xhdpi/iconfont_password.png delete mode 100644 app/src/main/res/drawable-xhdpi/iconfont_user.png delete mode 100644 app/src/main/res/drawable-xhdpi/owl_head.png delete mode 100644 app/src/main/res/drawable-xxhdpi/ic_keyboard_arrow_left_black_24dp.png delete mode 100644 app/src/main/res/drawable-xxhdpi/ic_menu_overflow.png delete mode 100644 app/src/main/res/drawable-xxhdpi/ic_menu_setting.png delete mode 100644 app/src/main/res/drawable-xxhdpi/ic_refresh_black_24dp.png delete mode 100644 app/src/main/res/drawable-xxhdpi/ic_search_black_24dp.png delete mode 100644 app/src/main/res/drawable-xxxhdpi/ic_keyboard_arrow_left_black_24dp.png delete mode 100644 app/src/main/res/drawable-xxxhdpi/ic_refresh_black_24dp.png delete mode 100644 app/src/main/res/drawable-xxxhdpi/ic_search_black_24dp.png create mode 100644 app/src/main/res/drawable/ic_copy.xml create mode 100644 app/src/main/res/drawable/ic_search2.xml delete mode 100644 app/src/main/res/layout/activity_login.xml create mode 100644 app/src/main/res/layout/activity_read.xml delete mode 100644 app/src/main/res/layout/activity_read_new.xml delete mode 100644 app/src/main/res/layout/activity_register.xml create mode 100644 app/src/main/res/layout/dialog_copy_content.xml delete mode 100644 app/src/main/res/layout/dialog_read_setting.xml create mode 100644 app/src/main/res/menu/menu_read.xml create mode 100644 app/src/main/res/menu/webdav_help.xml delete mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_round.png delete mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_round.png delete mode 100644 app/src/main/res/mipmap-xhdpi/add.png delete mode 100644 app/src/main/res/mipmap-xhdpi/b9.png delete mode 100644 app/src/main/res/mipmap-xhdpi/bd.png delete mode 100644 app/src/main/res/mipmap-xhdpi/default_cover.jpg create mode 100644 app/src/main/res/mipmap-xhdpi/default_cover.png delete mode 100644 app/src/main/res/mipmap-xhdpi/f2.png delete mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_round.png delete mode 100644 app/src/main/res/mipmap-xhdpi/ic_menu_refresh.png delete mode 100644 app/src/main/res/mipmap-xhdpi/larrow.png delete mode 100644 app/src/main/res/mipmap-xhdpi/larrow3.png delete mode 100644 app/src/main/res/mipmap-xhdpi/larrow_black.png delete mode 100644 app/src/main/res/mipmap-xhdpi/larrow_white.png delete mode 100644 app/src/main/res/mipmap-xhdpi/n8.png delete mode 100644 app/src/main/res/mipmap-xhdpi/no_image.jpg delete mode 100644 app/src/main/res/mipmap-xhdpi/s.png delete mode 100644 app/src/main/res/mipmap-xhdpi/s1.png delete mode 100644 app/src/main/res/mipmap-xhdpi/search.png delete mode 100644 app/src/main/res/mipmap-xhdpi/t8.png delete mode 100644 app/src/main/res/mipmap-xhdpi/theme_leather_bg.jpg delete mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png delete mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png delete mode 100644 img/10.png diff --git a/.idea/assetWizardSettings.xml b/.idea/assetWizardSettings.xml index c6c5118..4a25623 100644 --- a/.idea/assetWizardSettings.xml +++ b/.idea/assetWizardSettings.xml @@ -19,8 +19,8 @@ diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index f4879e1ffd628365a746394a72e69805107266b8..ba535aabad25305e0f854f2b8781646266afa95a 100644 GIT binary patch delta 36 ucmV+<0NekW1epYomj!iB2a1%DoOcko?Q_Kauet{^`UQw&`bC42BLVg&r4ZNv delta 36 scmbQqGLvP(bk>rO^LqUz&M6m2sb1xkUi>w`(=Kufz diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index 8bc84c2..56782ca 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -1,7 +1,6 @@ - \ No newline at end of file diff --git a/README.md b/README.md index 9120666..3d1c36c 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,199 @@ # FYReader-master 风月读书,一款开源、无广告的小说阅读软件。 - 11个网络小说书源:天籁小说、笔趣阁44、品书网、笔趣阁、 +demo下载:https://fycz.lanzoui.com/iBofFh42pxg + +#### 一、关于书源 + +* 软件内置了15个书源如下: + * 11个网络小说书源:天籁小说、笔趣阁44、品书网、笔趣阁、 全本小说、米趣小说、九桃小说、云中书库、 搜小说网、全小说网、奇奇小说 - 4个实体书书源:超星图书·实体、作品集·实体、99藏书·实体、100本·实体 - - 发现界面:排行榜、分类、书城 - - 详细功能可查看图片或下载自行体验或自行编译 - -demo下载:https://fycz.lanzoui.com/iBofFh42pxg + * 4个实体书书源:超星图书·实体、作品集·实体、99藏书·实体、100本·实体 + +* 如何自行制作并添加书源. + + * 基于面向接口开发的思想,对于书源我设计了如下接口: + + * ```java + // 这个接口位于xyz.fycz.myreader.webapi.crawler.base包下 + public interface ReadCrawler { + String getSearchLink(); // 书源的搜索url + String getCharset(); // 书源的字符编码 + String getSearchCharset(); // 书源搜索关键字的字符编码,和书源的字符编码就行 + String getNameSpace(); // 书源主页地址 + Boolean isPost(); // 是否以post请求搜索 + String getContentFormHtml(String html); // 获取书籍内容规则 + ArrayList getChaptersFromHtml(String html); // 获取书籍章节列表规则 + ConcurrentMultiValueMap getBooksFromSearchHtml(String html); // 搜索书籍规则 + } + ``` + + * 了解上述接口的方法,我们就可以开始创建书源了 + + * 第一步:创建一个书源类实现上述接口,下面以笔趣阁44为例进行说明 + + * ```java + // 注意:如果搜索书籍页没有图片、最新章节、书籍简介等信息,可以通过实现BookInfoCrawler接口,从书籍详情页获取 + public class BiQuGe44ReadCrawler implements ReadCrawler, BookInfoCrawler { + //网站主页地址 + public static final String NAME_SPACE = "https://www.wqge.cc"; + /* + 搜索url,搜索关键词以{key}进行占位 + 如果是post请求,以“,”分隔url,“,”前是搜索地址,“,”后是请求体,搜索关键词同样以{key}占位 + 例如:"https://www.9txs.com/search.html,searchkey={key}" + */ + public static final String NOVEL_SEARCH = "https://www.wqge.cc/modules/article/search.php?searchkey={key}"; + // 书源字符编码 + public static final String CHARSET = "GBK"; + // 书源搜索关键词编码 + public static final String SEARCH_CHARSET = "utf-8"; + @Override + public String getSearchLink() { + return NOVEL_SEARCH; + } + + @Override + public String getCharset() { + return CHARSET; + } + + @Override + public String getNameSpace() { + return NAME_SPACE; + } + @Override + public Boolean isPost() { + return false; + } + @Override + public String getSearchCharset() { + return SEARCH_CHARSET; + } + + /** + * 从html中获取章节正文 + * @param html + * @return + */ + public String getContentFormHtml(String html) { + Document doc = Jsoup.parse(html); + Element divContent = doc.getElementById("content"); + if (divContent != null) { + String content = Html.fromHtml(divContent.html()).toString(); + char c = 160; + String spaec = "" + c; + content = content.replace(spaec, " "); + return content; + } else { + return ""; + } + } + + /** + * 从html中获取章节列表 + * + * @param html + * @return + */ + public ArrayList getChaptersFromHtml(String html) { + ArrayList chapters = new ArrayList<>(); + Document doc = Jsoup.parse(html); + String readUrl = doc.select("meta[property=og:novel:read_url]").attr("content"); + Element divList = doc.getElementById("list"); + String lastTile = null; + int i = 0; + Elements elementsByTag = divList.getElementsByTag("dd"); + for (int j = 9; j < elementsByTag.size(); j++) { + Element dd = elementsByTag.get(j); + Elements as = dd.getElementsByTag("a"); + if (as.size() > 0) { + Element a = as.get(0); + String title = a.text() ; + if (!StringHelper.isEmpty(lastTile) && title.equals(lastTile)) { + continue; + } + Chapter chapter = new Chapter(); + chapter.setNumber(i++); + chapter.setTitle(title); + String url = readUrl + a.attr("href"); + chapter.setUrl(url); + chapters.add(chapter); + lastTile = title; + } + } + return chapters; + } + + /** + * 从搜索html中得到书列表 + * @param html + * @return + */ + public ConcurrentMultiValueMap getBooksFromSearchHtml(String html) { + ConcurrentMultiValueMap books = new ConcurrentMultiValueMap<>(); + Document doc = Jsoup.parse(html); + Elements divs = doc.getElementsByTag("table"); + Element div = divs.get(0); + Elements elementsByTag = div.getElementsByTag("tr"); + for (int i = 1; i < elementsByTag.size(); i++) { + Element element = elementsByTag.get(i); + Book book = new Book(); + Elements info = element.getElementsByTag("td"); + book.setName(info.get(0).text()); + book.setChapterUrl(NAME_SPACE + info.get(0).getElementsByTag("a").attr("href")); + book.setAuthor(info.get(2).text()); + book.setNewestChapterTitle(info.get(1).text()); + book.setSource(BookSource.biquge44.toString()); + // SearchBookBean用于合并相同书籍 + SearchBookBean sbb = new SearchBookBean(book.getName(), book.getAuthor()); + books.add(sbb, book); + } + return books; + } + + /** + * 获取书籍详细信息 + * @param book + */ + public Book getBookInfo(String html, Book book){ + Document doc = Jsoup.parse(html); + Element img = doc.getElementById("fmimg"); + book.setImgUrl(img.getElementsByTag("img").get(0).attr("src")); + Element desc = doc.getElementById("intro"); + book.setDesc(desc.getElementsByTag("p").get(0).text()); + Element type = doc.getElementsByClass("con_top").get(0); + book.setType(type.getElementsByTag("a").get(2).text()); + return book; + } + + } + ``` + + * 第二步:注册书源信息。有两个地方需要注册: + + * 1)在xyz.fycz.myreader.enums.BookSource类(这是个枚举类型)中添加你的书源的命名以及书源名称,例如: + + * ```java + biquge44("笔趣阁44") // biquge44是书源的命名,笔趣阁44是书源名称 + ``` + + * 2)在app/src/main/resources/crawler.properties配置文件中添加书源类信息,例如: + + * ```java + // biquge44书源的命名,与BookSource中的命名一致,xyz.fycz.myreader.webapi.crawler.read.BiQuGe44ReadCrawler是书源类的完整路径 + biquge44=xyz.fycz.myreader.webapi.crawler.read.BiQuGe44ReadCrawler + ``` + + * 第三步:启用书源(新增的书源默认禁用)。只需在软件内-我的-设置-禁用书源中取消该书源的禁用即可。 + +#### 二、关于发现界面 + +* 软件内置的两个发现源: + * 某点的排行榜、分类,全本小说网 + * 制作发现源方法与书源类似,在此不再赘述 + -如有问题请加QQ群:1085028304 ![Image](https://github.com/fengyuecanzhu/FYReader/tree/master/img/1.png) ![Image](https://github.com/fengyuecanzhu/FYReader/tree/master/img/2.png) @@ -22,5 +203,4 @@ demo下载:https://fycz.lanzoui.com/iBofFh42pxg ![Image](https://github.com/fengyuecanzhu/FYReader/tree/master/img/6.png) ![Image](https://github.com/fengyuecanzhu/FYReader/tree/master/img/7.png) ![Image](https://github.com/fengyuecanzhu/FYReader/tree/master/img/8.png) -![Image](https://github.com/fengyuecanzhu/FYReader/tree/master/img/9.png) -![Image](https://github.com/fengyuecanzhu/FYReader/tree/master/img/10.png) \ No newline at end of file +![Image](https://github.com/fengyuecanzhu/FYReader/tree/master/img/9.png) \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 2c03329..81ffd48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -138,6 +138,9 @@ dependencies { //RxAndroid implementation 'io.reactivex.rxjava2:rxjava:2.2.19' implementation 'io.reactivex.rxjava2:rxandroid:2.1.1' + + //ImmersionBar + implementation 'com.gyf.immersionbar:immersionbar:3.0.0' } greendao { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e66becc..1f4a8a7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -110,10 +110,6 @@ - - - - diff --git a/app/src/main/assets/updatelog.fy b/app/src/main/assets/updatelog.fy index e998b38..63a8cae 100644 --- a/app/src/main/assets/updatelog.fy +++ b/app/src/main/assets/updatelog.fy @@ -1,3 +1,16 @@ +2020.11.03 +风月读书v1.20.1110311 +1、修复已知bug +2、新增WebDav备份教程 + +2020.10.22 +风月读书v1.20.102217 +1、优化阅读界面菜单 +2、新增阅读内容拷贝对话框 +3、优化备份与恢复(支持备份书签、搜索历史) +4、新增WebDav服务(可将书籍备份至WebDav服务器) +5、修复已知问题 + 2020.10.03 风月读书v1.20.100315 1、优化搜索书籍高频刷新的问题 diff --git a/app/src/main/assets/webdavhelp.fy b/app/src/main/assets/webdavhelp.fy new file mode 100644 index 0000000..0013f79 --- /dev/null +++ b/app/src/main/assets/webdavhelp.fy @@ -0,0 +1,3 @@ +1、 正确填写WebDAV 服务器地址、WebDAV 账号、WebDAV 密码;(要获得这三项的信息,需要注册一个坚果云账号,如果直接在手机上注册,坚果云会让你下载app,过程比较麻烦,为了一步到位,最好是在电脑上打开这个注册链接:https://www.jianguoyun.com/d/signup;注册后,进入坚果云;点击右上角账户名处选择 “账户信息”,然后选择“安全选项”;在“安全选项” 中找到“第三方应用管理”,并选择“添加应用”,输入名称如“阅读”后,会生成密码,选择完成;其中https://dav.jianguoyun.com/dav/就是填入“WebDAV 服务器地址”的内容,“使用情况”后面的邮箱地址就是你的“WebDAV 账号”,点击显示密码后得到的密码就是你的“WebDAV 密码”。) + +2、 无需操作,APP默认每天自动云备份一次。 \ No newline at end of file diff --git a/app/src/main/java/xyz/fycz/myreader/application/MyApplication.java b/app/src/main/java/xyz/fycz/myreader/application/MyApplication.java index 24976bb..ead050f 100644 --- a/app/src/main/java/xyz/fycz/myreader/application/MyApplication.java +++ b/app/src/main/java/xyz/fycz/myreader/application/MyApplication.java @@ -41,7 +41,6 @@ import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import xyz.fycz.myreader.R; -import xyz.fycz.myreader.base.BaseActivity; import xyz.fycz.myreader.common.APPCONST; import xyz.fycz.myreader.common.URLCONST; import xyz.fycz.myreader.ui.dialog.APPDownloadTip; @@ -72,13 +71,9 @@ public class MyApplication extends Application { createNotificationChannel(); } mFixedThreadPool = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());//初始化线程池 - BaseActivity.setCloseAntiHijacking(true); initNightTheme(); - } - - public void initNightTheme() { if (isNightFS()){ AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM); @@ -247,49 +242,6 @@ public class MyApplication extends Application { /** * 检查更新 */ - /*public static void checkVersionByServer(final Activity activity, final boolean isManualCheck) { - MyApplication.getApplication().newThread(new Runnable() { - @Override - public void run() { - Document doc = null; - try { - doc = Jsoup.connect("https://novel.fycz.xyz/app/update.html").get(); - int newestVersion = 0; - String updateContent = ""; - String downloadLink = null; - boolean isForceUpdate = false; - StringBuilder s = new StringBuilder(); - assert doc != null; - Elements nodes = doc.getElementsByClass("secd-rank-list"); - newestVersion = Integer.valueOf(nodes.get(0).getElementsByTag("a").get(1).text()); - downloadLink = nodes.get(0).getElementsByTag("a").get(1).attr("href"); - updateContent = nodes.get(0).getElementsByTag("a").get(2).text(); - isForceUpdate = Boolean.parseBoolean(nodes.get(0).getElementsByTag("a").get(3).text()); - String[] updateContents = updateContent.split("/"); - for (String string : updateContents) { - s.append(string); - s.append("\n"); - } - int versionCode = getVersionCode(); - if (newestVersion > versionCode) { - MyApplication m = new MyApplication(); - Setting setting = SysManager.getSetting(); - if (isManualCheck || setting.getNewestVersionCode() < newestVersion || isForceUpdate) { - setting.setNewestVersionCode(newestVersion); - SysManager.saveSetting(setting); - int i = setting.getNewestVersionCode(); - m.updateApp(activity, downloadLink, newestVersion, s.toString(), isForceUpdate); - } - } else if (isManualCheck) { - TextHelper.showText("已经是最新版本!"); - } - } catch (IOException e) { - e.printStackTrace(); - TextHelper.showText("无网络连接!"); - } - } - }); - }*/ public static void checkVersionByServer(final AppCompatActivity activity, final boolean isManualCheck, final BookcaseFragment mBookcaseFragment) { MyApplication.getApplication().newThread(() -> { @@ -436,26 +388,5 @@ public class MyApplication extends Application { public static boolean isDestroy(Activity mActivity) { return mActivity == null || mActivity.isFinishing() || mActivity.isDestroyed(); } - - - /**************** - * - * 发起添加群流程。群号:风月读书交流群(1085028304) 的 key 为: 8PIOnHFuH6A38hgxvD_Rp2Bu-Ke1ToBn - * 调用 joinQQGroup(8PIOnHFuH6A38hgxvD_Rp2Bu-Ke1ToBn) 即可发起手Q客户端申请加群 风月读书交流群(1085028304) - * - * @param key 由官网生成的key - * @return 返回true表示呼起手Q成功,返回false表示呼起失败 - ******************/ - public static boolean joinQQGroup(Context context, String key) { - Intent intent = new Intent(); - intent.setData(Uri.parse("mqqopensdkapi://bizAgent/qm/qr?url=http%3A%2F%2Fqm.qq.com%2Fcgi-bin%2Fqm%2Fqr%3Ffrom%3Dapp%26p%3Dandroid%26jump_from%3Dwebapi%26k%3D" + key)); - // 此Flag可根据具体产品需要自定义,如设置,则在加群界面按返回,返回手Q主界面,不设置,按返回会返回到呼起产品界面 //intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) - try { - context.startActivity(intent); - return true; - } catch (Exception e) { - // 未安装手Q或安装的版本不支持 - return false; - } - } + } diff --git a/app/src/main/java/xyz/fycz/myreader/application/SysManager.java b/app/src/main/java/xyz/fycz/myreader/application/SysManager.java index 097a025..7e3bd53 100644 --- a/app/src/main/java/xyz/fycz/myreader/application/SysManager.java +++ b/app/src/main/java/xyz/fycz/myreader/application/SysManager.java @@ -5,10 +5,9 @@ import xyz.fycz.myreader.enums.BookcaseStyle; import xyz.fycz.myreader.enums.Font; import xyz.fycz.myreader.enums.Language; import xyz.fycz.myreader.enums.ReadStyle; +import xyz.fycz.myreader.model.storage.Backup; import xyz.fycz.myreader.util.CacheHelper; -import xyz.fycz.myreader.R; import xyz.fycz.myreader.entity.Setting; -import xyz.fycz.myreader.webapi.crawler.ReadCrawlerUtil; import xyz.fycz.myreader.widget.page.PageMode; import static xyz.fycz.myreader.application.MyApplication.getVersionCode; @@ -79,13 +78,7 @@ public class SysManager { public static void resetSetting(){ Setting setting = getSetting(); - /*setting.setVolumeTurnPage(true); - setting.setMatchChapter(true); - setting.setRefreshWhenStart(true); - setting.setOpenBookStore(true); - setting.setResetScreen(3);*/ - ReadCrawlerUtil.resetReaderCrawlers(); + Backup.INSTANCE.backup(MyApplication.getmContext(), APPCONST.BACKUP_FILE_DIR,null, false); setting.setSettingVersion(APPCONST.SETTING_VERSION); - saveSetting(setting); } } diff --git a/app/src/main/java/xyz/fycz/myreader/base/BaseActivity.java b/app/src/main/java/xyz/fycz/myreader/base/BaseActivity.java index 4d04562..a2f26bd 100644 --- a/app/src/main/java/xyz/fycz/myreader/base/BaseActivity.java +++ b/app/src/main/java/xyz/fycz/myreader/base/BaseActivity.java @@ -1,115 +1,192 @@ package xyz.fycz.myreader.base; -import android.annotation.TargetApi; -import android.content.Context; -import android.os.Build; +import android.annotation.SuppressLint; +import android.content.Intent; +import android.graphics.PorterDuff; +import android.graphics.drawable.Drawable; import android.os.Bundle; -import android.util.DisplayMetrics; -import android.util.Log; -import android.view.KeyEvent; -import android.view.Window; -import android.view.WindowManager; -import android.view.inputmethod.InputMethodManager; +import android.view.Menu; +import android.view.MenuItem; +import androidx.annotation.LayoutRes; +import androidx.annotation.Nullable; +import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.app.AppCompatDelegate; +import androidx.appcompat.widget.Toolbar; +import butterknife.ButterKnife; +import butterknife.Unbinder; + +import io.reactivex.disposables.CompositeDisposable; +import io.reactivex.disposables.Disposable; import xyz.fycz.myreader.ActivityManage; -import xyz.fycz.myreader.util.Anti_hijackingUtils; +import xyz.fycz.myreader.R; +import xyz.fycz.myreader.application.MyApplication; +import xyz.fycz.myreader.application.SysManager; +import xyz.fycz.myreader.entity.Setting; import xyz.fycz.myreader.util.StatusBarUtil; +import java.lang.reflect.Method; +import java.util.ArrayList; +/** + * @author fengyue + * @date 2020/8/12 20:02 + */ +public abstract class BaseActivity extends AppCompatActivity { + private static final int INVALID_VAL = -1; -public class BaseActivity extends AppCompatActivity { - - public static int width = 0; - public static int height = 0; - public static boolean home; - public static boolean back; - private boolean catchHomeKey = false; - private boolean disallowAntiHijacking;//暂停防界面劫持 + protected CompositeDisposable mDisposable; + //ButterKnife + private Toolbar mToolbar; - private static boolean closeAntiHijacking;//关闭防界面劫持 + private Unbinder unbinder; + private int curNightMode; + /****************************abstract area*************************************/ - private InputMethodManager mInputMethodManager; //输入管理器 - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); + @LayoutRes + protected abstract int getContentId(); - //将每一个Activity都加入activity管理器 - ActivityManage.addActivity(this); - Log.d("ActivityName: ",getLocalClassName()); - DisplayMetrics dm = new DisplayMetrics(); - //获取屏幕宽高 - if(height == 0 || width == 0){ - getWindowManager().getDefaultDisplay().getMetrics(dm); - width = dm.widthPixels; - height = dm.heightPixels; + /************************init area************************************/ + protected void addDisposable(Disposable d){ + if (mDisposable == null){ + mDisposable = new CompositeDisposable(); } + mDisposable.add(d); + } - mInputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); + /** + * 配置Toolbar + * @param toolbar + */ + protected void setUpToolbar(Toolbar toolbar){ } - public static void setCloseAntiHijacking(boolean closeAntiHijacking) { - BaseActivity.closeAntiHijacking = closeAntiHijacking; + protected void initData(Bundle savedInstanceState){ } + /** + * 初始化零件 + */ + protected void initWidget() { - @Override - protected void onDestroy() { - ActivityManage.removeActivity(this); - super.onDestroy(); } + /** + * 初始化点击事件 + */ + protected void initClick(){ + } + /** + * 逻辑使用区 + */ + protected void processLogic(){ + } + /** + * @return 是否夜间模式 + */ + protected boolean isNightTheme() { + return !SysManager.getSetting().isDayStyle(); + } + + /** + * 设置夜间模式 + * @param isNightMode + */ + protected void setNightTheme(boolean isNightMode) { + Setting setting = SysManager.getSetting(); + setting.setDayStyle(!isNightMode); + MyApplication.getApplication().initNightTheme(); + } + + + + /*************************lifecycle area*****************************************************/ @Override - protected void onPause() { - if (!disallowAntiHijacking && !closeAntiHijacking) { - Anti_hijackingUtils.getinstance().onPause(this);//防界面劫持提示任务 + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + initTheme(); + ActivityManage.addActivity(this); + setContentView(getContentId()); + unbinder = ButterKnife.bind(this); + initData(savedInstanceState); + initToolbar(); + initWidget(); + initClick(); + processLogic(); + } + + private void initToolbar(){ + //更严谨是通过反射判断是否存在Toolbar + mToolbar = findViewById(R.id.toolbar); + if (mToolbar != null){ + supportActionBar(mToolbar); + setUpToolbar(mToolbar); } - super.onPause(); } @Override protected void onResume() { - if (!closeAntiHijacking) { - Anti_hijackingUtils.getinstance().onResume(this);//注销防界面劫持提示任务 - } - BaseActivity.home = false; - BaseActivity.back = false; - disallowAntiHijacking = false; super.onResume(); + if (isThemeChange()){ + recreate(); + } } - - @Override - public boolean onKeyDown(int keyCode, KeyEvent event) { - if (keyCode == KeyEvent.KEYCODE_BACK){ - back = true;//以便于判断是否按返回键触发界面劫持提示 + protected void onDestroy() { + super.onDestroy(); + ActivityManage.removeActivity(this); + unbinder.unbind(); + if (mDisposable != null){ + mDisposable.dispose(); } - return super.onKeyDown(keyCode, event); + } + /** + * 初始化主题 + */ + public void initTheme() { + //if (isNightTheme()) { + //setTheme(R.style.AppNightTheme); + curNightMode = AppCompatDelegate.getDefaultNightMode(); + /*} else { + //curNightMode = false; + //setTheme(R.style.AppDayTheme); + }*/ } - - public void setDisallowAntiHijacking(boolean disallowAntiHijacking) { - this.disallowAntiHijacking = disallowAntiHijacking; + protected boolean isThemeChange(){ + return curNightMode != AppCompatDelegate.getDefaultNightMode(); } + /**************************used method area*******************************************/ + protected void startActivity(Class activity){ + Intent intent = new Intent(this, activity); + startActivity(intent); + } + protected ActionBar supportActionBar(Toolbar toolbar){ + setSupportActionBar(toolbar); + ActionBar actionBar = getSupportActionBar(); + if (actionBar != null){ + actionBar.setDisplayHomeAsUpEnabled(true); + actionBar.setDisplayShowHomeEnabled(true); + } + mToolbar.setNavigationOnClickListener( + (v) -> finish() + ); + return actionBar; + } - /** - * 设置状态栏颜色 - * @param colorId - */ - public void setStatusBar(int colorId, boolean dark){ + protected void setStatusBarColor(int statusColor, boolean dark){ //沉浸式代码配置 //当FitsSystemWindows设置 true 时,会在屏幕最上方预留出状态栏高度的 padding StatusBarUtil.setRootViewFitsSystemWindows(this, true); //设置状态栏透明 StatusBarUtil.setTranslucentStatus(this); - if (colorId != 0) { - StatusBarUtil.setStatusBarColor(this, getResources().getColor(colorId)); - } + StatusBarUtil.setStatusBarColor(this, getResources().getColor(statusColor)); + //一般的手机的状态栏文字和图标都是白色的, 可如果你的应用也是纯白色的, 或导致状态栏文字看不清 //所以如果你是这种情况,请使用以下代码, 设置状态使用深色文字图标风格, 否则你可以选择性注释掉这个if内容 if (!dark) { @@ -119,11 +196,49 @@ public class BaseActivity extends AppCompatActivity { StatusBarUtil.setStatusBarColor(this, 0x55000000); } } - + } /** + * 设置MENU图标颜色 + */ + @Override + public boolean onCreateOptionsMenu(Menu menu) { + for (int i = 0; i < menu.size(); i++) { + Drawable drawable = menu.getItem(i).getIcon(); + if (drawable != null) { + drawable.mutate(); + drawable.setColorFilter(getColor(R.color.textPrimary), PorterDuff.Mode.SRC_ATOP); + } + } + return super.onCreateOptionsMenu(menu); } - public InputMethodManager getmInputMethodManager() { - return mInputMethodManager; + @SuppressLint("PrivateApi") + @SuppressWarnings("unchecked") + @Override + public boolean onMenuOpened(int featureId, Menu menu) { + if (menu != null) { + //展开菜单显示图标 + if (menu.getClass().getSimpleName().equalsIgnoreCase("MenuBuilder")) { + try { + Method method = menu.getClass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE); + method.setAccessible(true); + method.invoke(menu, true); + method = menu.getClass().getDeclaredMethod("getNonActionItems"); + ArrayList menuItems = (ArrayList) method.invoke(menu); + if (!menuItems.isEmpty()) { + for (MenuItem menuItem : menuItems) { + Drawable drawable = menuItem.getIcon(); + if (drawable != null) { + drawable.mutate(); + drawable.setColorFilter(getResources().getColor(R.color.textPrimary), PorterDuff.Mode.SRC_ATOP); + } + } + } + } catch (Exception ignored) { + } + } + + } + return super.onMenuOpened(featureId, menu); } } diff --git a/app/src/main/java/xyz/fycz/myreader/base/BaseActivity2.java b/app/src/main/java/xyz/fycz/myreader/base/BaseActivity2.java deleted file mode 100644 index cdfe6b1..0000000 --- a/app/src/main/java/xyz/fycz/myreader/base/BaseActivity2.java +++ /dev/null @@ -1,244 +0,0 @@ -package xyz.fycz.myreader.base; - -import android.annotation.SuppressLint; -import android.content.Intent; -import android.graphics.PorterDuff; -import android.graphics.drawable.Drawable; -import android.os.Bundle; - -import android.view.Menu; -import android.view.MenuItem; -import androidx.annotation.LayoutRes; -import androidx.annotation.Nullable; -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.app.AppCompatActivity; -import androidx.appcompat.app.AppCompatDelegate; -import androidx.appcompat.widget.Toolbar; -import butterknife.ButterKnife; -import butterknife.Unbinder; - -import io.reactivex.disposables.CompositeDisposable; -import io.reactivex.disposables.Disposable; -import xyz.fycz.myreader.ActivityManage; -import xyz.fycz.myreader.R; -import xyz.fycz.myreader.application.MyApplication; -import xyz.fycz.myreader.application.SysManager; -import xyz.fycz.myreader.entity.Setting; -import xyz.fycz.myreader.util.StatusBarUtil; - -import java.lang.reflect.Method; -import java.util.ArrayList; - -/** - * @author fengyue - * @date 2020/8/12 20:02 - */ -public abstract class BaseActivity2 extends AppCompatActivity { - private static final int INVALID_VAL = -1; - - protected CompositeDisposable mDisposable; - //ButterKnife - private Toolbar mToolbar; - - private Unbinder unbinder; - - private int curNightMode; - /****************************abstract area*************************************/ - - @LayoutRes - protected abstract int getContentId(); - - /************************init area************************************/ - protected void addDisposable(Disposable d){ - if (mDisposable == null){ - mDisposable = new CompositeDisposable(); - } - mDisposable.add(d); - } - - /** - * 配置Toolbar - * @param toolbar - */ - protected void setUpToolbar(Toolbar toolbar){ - } - - protected void initData(Bundle savedInstanceState){ - } - /** - * 初始化零件 - */ - protected void initWidget() { - - } - /** - * 初始化点击事件 - */ - protected void initClick(){ - } - /** - * 逻辑使用区 - */ - protected void processLogic(){ - } - /** - * @return 是否夜间模式 - */ - protected boolean isNightTheme() { - return !SysManager.getSetting().isDayStyle(); - } - - /** - * 设置夜间模式 - * @param isNightMode - */ - protected void setNightTheme(boolean isNightMode) { - Setting setting = SysManager.getSetting(); - setting.setDayStyle(!isNightMode); - MyApplication.getApplication().initNightTheme(); - } - - - - - /*************************lifecycle area*****************************************************/ - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - initTheme(); - ActivityManage.addActivity(this); - setContentView(getContentId()); - initData(savedInstanceState); - unbinder = ButterKnife.bind(this); - initToolbar(); - initWidget(); - initClick(); - processLogic(); - } - - private void initToolbar(){ - //更严谨是通过反射判断是否存在Toolbar - mToolbar = findViewById(R.id.toolbar); - if (mToolbar != null){ - supportActionBar(mToolbar); - setUpToolbar(mToolbar); - } - } - - @Override - protected void onResume() { - super.onResume(); - if (isThemeChange()){ - recreate(); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - ActivityManage.removeActivity(this); - unbinder.unbind(); - if (mDisposable != null){ - mDisposable.dispose(); - } - } - /** - * 初始化主题 - */ - public void initTheme() { - //if (isNightTheme()) { - //setTheme(R.style.AppNightTheme); - curNightMode = AppCompatDelegate.getDefaultNightMode(); - /*} else { - //curNightMode = false; - //setTheme(R.style.AppDayTheme); - }*/ - } - - protected boolean isThemeChange(){ - return curNightMode != AppCompatDelegate.getDefaultNightMode(); - } - /**************************used method area*******************************************/ - - protected void startActivity(Class activity){ - Intent intent = new Intent(this, activity); - startActivity(intent); - } - - protected ActionBar supportActionBar(Toolbar toolbar){ - setSupportActionBar(toolbar); - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null){ - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - mToolbar.setNavigationOnClickListener( - (v) -> finish() - ); - return actionBar; - } - - protected void setStatusBarColor(int statusColor, boolean dark){ - //沉浸式代码配置 - //当FitsSystemWindows设置 true 时,会在屏幕最上方预留出状态栏高度的 padding - StatusBarUtil.setRootViewFitsSystemWindows(this, true); - //设置状态栏透明 - StatusBarUtil.setTranslucentStatus(this); - StatusBarUtil.setStatusBarColor(this, getResources().getColor(statusColor)); - - //一般的手机的状态栏文字和图标都是白色的, 可如果你的应用也是纯白色的, 或导致状态栏文字看不清 - //所以如果你是这种情况,请使用以下代码, 设置状态使用深色文字图标风格, 否则你可以选择性注释掉这个if内容 - if (!dark) { - if (!StatusBarUtil.setStatusBarDarkTheme(this, true)) { - //如果不支持设置深色风格 为了兼容总不能让状态栏白白的看不清, 于是设置一个状态栏颜色为半透明, - //这样半透明+白=灰, 状态栏的文字能看得清 - StatusBarUtil.setStatusBarColor(this, 0x55000000); - } - } - } /** - * 设置MENU图标颜色 - */ - @Override - public boolean onCreateOptionsMenu(Menu menu) { - for (int i = 0; i < menu.size(); i++) { - Drawable drawable = menu.getItem(i).getIcon(); - if (drawable != null) { - drawable.mutate(); - drawable.setColorFilter(getColor(R.color.textPrimary), PorterDuff.Mode.SRC_ATOP); - } - } - return super.onCreateOptionsMenu(menu); - } - - @SuppressLint("PrivateApi") - @SuppressWarnings("unchecked") - @Override - public boolean onMenuOpened(int featureId, Menu menu) { - if (menu != null) { - //展开菜单显示图标 - if (menu.getClass().getSimpleName().equalsIgnoreCase("MenuBuilder")) { - try { - Method method = menu.getClass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE); - method.setAccessible(true); - method.invoke(menu, true); - method = menu.getClass().getDeclaredMethod("getNonActionItems"); - ArrayList menuItems = (ArrayList) method.invoke(menu); - if (!menuItems.isEmpty()) { - for (MenuItem menuItem : menuItems) { - Drawable drawable = menuItem.getIcon(); - if (drawable != null) { - drawable.mutate(); - drawable.setColorFilter(getResources().getColor(R.color.textPrimary), PorterDuff.Mode.SRC_ATOP); - } - } - } - } catch (Exception ignored) { - } - } - - } - return super.onMenuOpened(featureId, menu); - } - -} diff --git a/app/src/main/java/xyz/fycz/myreader/base/BaseTabActivity.java b/app/src/main/java/xyz/fycz/myreader/base/BaseTabActivity.java index 2d65410..585a8a1 100644 --- a/app/src/main/java/xyz/fycz/myreader/base/BaseTabActivity.java +++ b/app/src/main/java/xyz/fycz/myreader/base/BaseTabActivity.java @@ -16,7 +16,7 @@ import java.util.List; * @date 2020/8/12 20:02 */ -public abstract class BaseTabActivity extends BaseActivity2 { +public abstract class BaseTabActivity extends BaseActivity { /**************View***************/ @BindView(R.id.tab_tl_indicator) protected TabLayout mTlIndicator; diff --git a/app/src/main/java/xyz/fycz/myreader/common/APPCONST.java b/app/src/main/java/xyz/fycz/myreader/common/APPCONST.java index e0843dd..e864af9 100644 --- a/app/src/main/java/xyz/fycz/myreader/common/APPCONST.java +++ b/app/src/main/java/xyz/fycz/myreader/common/APPCONST.java @@ -13,7 +13,7 @@ public class APPCONST { public static String publicKey = "";//服务端公钥 public static String privateKey;//app私钥 public final static String s = "11940364935628058505"; - public static final String KEY = ""; + public static final String KEY = "readerByFengyue"; public static final String ALARM_SCHEDULE_MSG = "alarm_schedule_msg"; @@ -79,7 +79,7 @@ public class APPCONST { public static final int PERMISSIONS_REQUEST_STORAGE = 10001; //设置版本号 - public static final int SETTING_VERSION = 5; + public static final int SETTING_VERSION = 6; public static final String FORMAT_FILE_DATE = "yyyy-MM-dd"; diff --git a/app/src/main/java/xyz/fycz/myreader/model/backup/BackupAndRestore.java b/app/src/main/java/xyz/fycz/myreader/model/backup/BackupAndRestore.java deleted file mode 100644 index 4e4ecb9..0000000 --- a/app/src/main/java/xyz/fycz/myreader/model/backup/BackupAndRestore.java +++ /dev/null @@ -1,129 +0,0 @@ -package xyz.fycz.myreader.model.backup; - -import xyz.fycz.myreader.application.SysManager; -import xyz.fycz.myreader.common.APPCONST; -import xyz.fycz.myreader.entity.Setting; -import xyz.fycz.myreader.greendao.entity.Book; -import xyz.fycz.myreader.greendao.service.BookService; -import xyz.fycz.myreader.util.IOUtils; -import xyz.fycz.myreader.util.utils.FileUtils; -import java.io.*; -import java.util.ArrayList; -import java.util.List; - -/** - * @author fengyue - * @date 2020/4/25 9:07 - */ - -public class BackupAndRestore { - - BookService mBookService = BookService.getInstance(); - - /** - * 备份书架 - * @return 是否备份成功 - */ - public boolean backup(String backupName){ - List books = mBookService.getAllBooks(); - StringBuilder s = new StringBuilder(); - for (Book book : books) { - s.append(book); - s.append(",\n"); - } - s.deleteCharAt(s.lastIndexOf(",")); - File booksFile = FileUtils.getFile(APPCONST.FILE_DIR + backupName + "/books" + FileUtils.SUFFIX_FY); - File settingFile = FileUtils.getFile(APPCONST.FILE_DIR + backupName + "/setting" + FileUtils.SUFFIX_FY); - BufferedWriter bw = null; - ObjectOutputStream oos = null; - try { - bw = new BufferedWriter(new FileWriter(booksFile)); - bw.write(s.toString()); - bw.flush(); - oos = new ObjectOutputStream(new FileOutputStream(settingFile)); - oos.writeObject(SysManager.getSetting()); - oos.flush(); - return true; - } catch (IOException e) { - e.printStackTrace(); - return false; - } finally { - IOUtils.close(bw, oos); - } - } - - /** - * 恢复书架 - * @return 是否恢复成功 - */ - public boolean restore(String backupName) { - File booksFile = FileUtils.getFile(APPCONST.FILE_DIR + backupName + "/books" + FileUtils.SUFFIX_FY); - File settingFile = FileUtils.getFile(APPCONST.FILE_DIR + backupName + "/setting" + FileUtils.SUFFIX_FY); - if (!booksFile.exists() || !settingFile.exists()){ - return false; - } - BufferedReader br = null; - ObjectInputStream ois = null; - try { - br = new BufferedReader(new FileReader(booksFile)); - String tem = ""; - StringBuilder s = new StringBuilder(); - while ((tem = br.readLine()) != null){ - s.append(tem).append("\n"); - } - String[] sBooks = s.toString().split("\\},"); - List books = new ArrayList<>(); - for (String sBook : sBooks){ - sBook.replace("{", ""); - sBook.replace("}", ""); - String[] sBookFields = sBook.split(",\n"); - for (int i = 0; i < sBookFields.length; i++) { - sBookFields[i] = sBookFields[i].substring(sBookFields[i].indexOf("'") + 1, sBookFields[i].lastIndexOf("'")); - } - String source = "null"; - boolean isCloseUpdate = false; - boolean isDownloadAll = true; - String group = "allBook"; - String infoUrl = ""; - if(!sBookFields[2].contains("novel.fycz.xyz")){ - source = sBookFields[17]; - } - if ("本地书籍".equals(sBookFields[4])){ - sBookFields[15] = "0"; - } - if (sBookFields.length >= 19){ - isCloseUpdate = Boolean.parseBoolean(sBookFields[18]); - } - if (sBookFields.length >= 20){ - isDownloadAll = Boolean.parseBoolean(sBookFields[19]); - } - if (sBookFields.length >= 21){ - group = sBookFields[20]; - } - if (sBookFields.length >= 22){ - infoUrl = sBookFields[21]; - } - Book book = new Book(sBookFields[0], sBookFields[1], sBookFields[2], infoUrl, sBookFields[3], sBookFields[4], - sBookFields[5], sBookFields[6], sBookFields[7], sBookFields[8], sBookFields[9], sBookFields[10], - sBookFields[11], Integer.parseInt(sBookFields[12]), Integer.parseInt(sBookFields[13]), - Integer.parseInt(sBookFields[14]), Integer.parseInt(sBookFields[15]), Integer.parseInt(sBookFields[16]) - , source, isCloseUpdate, isDownloadAll, group, 0); - books.add(book); - } - mBookService.deleteAllBooks(); - mBookService.addBooks(books); - ois = new ObjectInputStream(new FileInputStream(settingFile)); - Object obj = ois.readObject(); - if (obj instanceof Setting){ - Setting setting = (Setting) obj; - SysManager.saveSetting(setting); - } - return true; - } catch (IOException | ClassNotFoundException e) { - e.printStackTrace(); - return false; - } finally { - IOUtils.close(br, ois); - } - } -} \ No newline at end of file diff --git a/app/src/main/java/xyz/fycz/myreader/model/backup/UserService.java b/app/src/main/java/xyz/fycz/myreader/model/backup/UserService.java deleted file mode 100644 index be9c073..0000000 --- a/app/src/main/java/xyz/fycz/myreader/model/backup/UserService.java +++ /dev/null @@ -1,333 +0,0 @@ -package xyz.fycz.myreader.model.backup; - -import io.reactivex.annotations.NonNull; -import xyz.fycz.myreader.application.MyApplication; -import xyz.fycz.myreader.model.storage.Backup; -import xyz.fycz.myreader.model.storage.Restore; -import xyz.fycz.myreader.webapi.callback.ResultCallback; -import xyz.fycz.myreader.common.APPCONST; -import xyz.fycz.myreader.common.URLCONST; -import xyz.fycz.myreader.util.*; -import xyz.fycz.myreader.util.utils.FileUtils; - -import java.io.*; -import java.net.HttpURLConnection; -import java.net.URL; -import java.util.HashMap; -import java.util.Map; - -/** - * @author fengyue - * @date 2020/4/26 11:03 - */ -public class UserService { - /** - * 登录 - * @param userLoginInfo 用户名输入的用户名和密码等登录信息 - * @return 是否成功登录 - */ - public static void login(final Map userLoginInfo, final ResultCallback resultCallback) { - MyApplication.getApplication().newThread(() -> { - HttpURLConnection conn = null; - try { - URL url = new URL(URLCONST.APP_WEB_URL + "login"); - conn = (HttpURLConnection) url.openConnection(); - conn.setRequestMethod("POST"); - conn.setConnectTimeout(60 * 1000); - conn.setReadTimeout(60 * 1000); - conn.setDoInput(true); - conn.setDoOutput(true); - String params = "username=" + userLoginInfo.get("loginName") + - "&password=" + userLoginInfo.get("loginPwd") + makeSignalParam(); - // 获取URLConnection对象对应的输出流 - PrintWriter out = new PrintWriter(conn.getOutputStream()); - // 发送请求参数 - out.print(params); - // flush输出流的缓冲 - out.flush(); - InputStream in = conn.getInputStream(); - BufferedReader bw = new BufferedReader(new InputStreamReader(in, "utf-8")); - StringBuilder sb = new StringBuilder(); - String line = bw.readLine(); - while (line != null) { - sb.append(line); - line = bw.readLine(); - } - resultCallback.onFinish(sb.toString(), 1); - } catch (IOException e) { - e.printStackTrace(); - resultCallback.onError(e); - }finally { - if (conn != null) { - conn.disconnect(); - } - } - }); - } - - public static void register(final Map userRegisterInfo, final ResultCallback resultCallback) { - MyApplication.getApplication().newThread(() -> { - HttpURLConnection conn = null; - try { - URL url = new URL(URLCONST.APP_WEB_URL + "reg"); - conn = (HttpURLConnection) url.openConnection(); - conn.setRequestMethod("POST"); - conn.setDoInput(true); - conn.setDoOutput(true); - String params = "username=" + userRegisterInfo.get("username") + "&password=" + - CyptoUtils.encode(APPCONST.KEY, userRegisterInfo.get("password")) + "&key=" + - CyptoUtils.encode(APPCONST.KEY, APPCONST.publicKey) + makeSignalParam(); - // 获取URLConnection对象对应的输出流 - PrintWriter out = new PrintWriter(conn.getOutputStream()); - // 发送请求参数 - out.print(params); - // flush输出流的缓冲 - out.flush(); - BufferedReader bw = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8")); - StringBuilder sb = new StringBuilder(); - String line = bw.readLine(); - while (line != null) { - sb.append(line); - line = bw.readLine(); - } - resultCallback.onFinish(sb.toString(), 1); - } catch (IOException e) { - e.printStackTrace(); - resultCallback.onError(e); - } finally { - if (conn != null) { - conn.disconnect(); - } - } - - }); - } - - /** - * 写配置 - * @param userLoginInfo - * @return - */ - public static boolean writeConfig(Map userLoginInfo){ - FileOutputStream fos = null; - try { - fos = MyApplication.getApplication().openFileOutput("userConfig.fy", MyApplication.getApplication().MODE_PRIVATE); - String userInfo = "username='" + userLoginInfo.get("loginName") + "',\npassword='" + userLoginInfo.get("loginPwd") + "'"; - byte[] bs = userInfo.getBytes(); - fos.write(bs); - //写完后一定要刷新 - fos.flush(); - return true; - } catch (IOException e) { - e.printStackTrace(); - return false; - } finally { - IOUtils.close(fos); - } - } - - /** - * 读配置 - * @return - */ - public static Map readConfig(){ - File file = MyApplication.getApplication().getFileStreamPath("userConfig.fy"); - if (!file.exists()){ - return null; - } - BufferedReader br = null; - try { - br = new BufferedReader(new FileReader(file)); - String tem; - StringBuilder config = new StringBuilder(); - while ((tem = br.readLine()) != null){ - config.append(tem); - } - String[] user = config.toString().split(","); - String userName = user[0].substring(user[0].indexOf("'") + 1, user[0].lastIndexOf("'")); - String password = user[1].substring(user[1].indexOf("'") + 1, user[1].lastIndexOf("'")); - Map userInfo = new HashMap<>(); - userInfo.put("userName", userName); - userInfo.put("password", password); - return userInfo; - } catch (IOException e) { - e.printStackTrace(); - }finally { - IOUtils.close(br); - } - return null; - } - - public static void writeUsername(String username){ - File file = FileUtils.getFile(APPCONST.QQ_DATA_DIR + "user"); - BufferedWriter bw = null; - try { - bw = new BufferedWriter(new FileWriter(file)); - bw.write(username); - bw.flush(); - } catch (IOException e) { - e.printStackTrace(); - }finally { - IOUtils.close(bw); - } - } - - public static String readUsername(){ - File file = new File(APPCONST.QQ_DATA_DIR + "user"); - if (!file.exists()){ - return ""; - } - BufferedReader br = null; - try { - br = new BufferedReader(new FileReader(file)); - return br.readLine(); - } catch (IOException e) { - e.printStackTrace(); - return ""; - } finally { - IOUtils.close(br); - } - } - - /** - * 网络备份 - * @return - */ - public static void webBackup(ResultCallback rc){ - Map userInfo = readConfig(); - if (userInfo == null){ - rc.onFinish(false, 0); - } - Backup.INSTANCE.backup(MyApplication.getmContext(), APPCONST.FILE_DIR + "webBackup/", new Backup.CallBack() { - @Override - public void backupSuccess() { - MyApplication.getApplication().newThread(() ->{ - File inputFile = FileUtils.getFile(APPCONST.FILE_DIR + "webBackup"); - if (!inputFile.exists()) { - rc.onFinish(false, 0); - } - File zipFile = FileUtils.getFile(APPCONST.FILE_DIR + "webBackup.zip"); - FileInputStream fis = null; - HttpURLConnection conn = null; - try { - //压缩文件 - ZipUtils.zipFile(inputFile, zipFile); - fis = new FileInputStream(zipFile); - URL url = new URL(URLCONST.APP_WEB_URL + "bak?username=" + userInfo.get("userName") + - makeSignalParam()); - conn = (HttpURLConnection) url.openConnection(); - conn.setRequestMethod("POST"); - conn.setRequestProperty("Content-type", "multipart/form-data"); - conn.setDoInput(true); - conn.setDoOutput(true); - OutputStream out = conn.getOutputStream(); - byte[] bytes = new byte[1024]; - int len = -1; - while ((len = fis.read(bytes)) != -1){ - out.write(bytes, 0, len); - } - out.flush(); - zipFile.delete(); - BufferedReader bw = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8")); - StringBuilder sb = new StringBuilder(); - String line = bw.readLine(); - while (line != null) { - sb.append(line); - line = bw.readLine(); - } - String[] info = sb.toString().split(":"); - int code = Integer.parseInt(info[0].trim()); - rc.onFinish(code == 104, 0); - } catch (Exception e) { - e.printStackTrace(); - rc.onError(e); - } finally { - IOUtils.close(fis); - if (conn != null) { - conn.disconnect(); - } - } - }); - } - - @Override - public void backupError(@NonNull String msg) { - ToastUtils.showError(msg); - rc.onFinish(false, 0); - } - }, false); - - } - - /** - * 网络恢复 - * @return - */ - public static void webRestore(ResultCallback rc){ - Map userInfo = readConfig(); - if (userInfo == null){ - rc.onFinish(false, 0); - } - FileOutputStream fos = null; - File zipFile = FileUtils.getFile(APPCONST.FILE_DIR + "webBackup.zip"); - HttpURLConnection conn = null; - try { - URL url = new URL(URLCONST.APP_WEB_URL + "ret?username=" + userInfo.get("userName") + - makeSignalParam()); - conn = (HttpURLConnection) url.openConnection(); - conn.setRequestMethod("POST"); - conn.setDoInput(true); - InputStream is = conn.getInputStream(); - fos = new FileOutputStream(zipFile); - //一边读,一边写 - byte[] bytes = new byte[512]; - int readCount = 0; - while ((readCount = is.read(bytes)) != -1) { - fos.write(bytes,0, readCount); - } - //刷新,输出流一定要刷新 - fos.flush(); - if (zipFile.length() == 0){ - zipFile.delete(); - rc.onFinish(false, 0); - } - ZipUtils.unzipFile(zipFile.getAbsolutePath(), APPCONST.FILE_DIR); - Restore.INSTANCE.restore(APPCONST.FILE_DIR + "webBackup/", new Restore.CallBack() { - @Override - public void restoreSuccess() { - zipFile.delete(); - rc.onFinish(true, 0); - } - - @Override - public void restoreError(@NonNull String msg) { - ToastUtils.showError(msg); - rc.onFinish(false, 0); - } - }); - } catch (Exception e) { - e.printStackTrace(); - rc.onError(e); - }finally { - IOUtils.close(fos); - if (conn != null) { - conn.disconnect(); - } - } - } - - - private static String makeSignalParam(){ - return "&signal=" + AppInfoUtils.getSingInfo(MyApplication.getmContext(), - MyApplication.getApplication().getPackageName(), AppInfoUtils.SHA1); - } - - /** - * 判断是否登录 - * @return - */ - public static boolean isLogin(){ - File file = MyApplication.getApplication().getFileStreamPath("userConfig.fy"); - return file.exists(); - } -} diff --git a/app/src/main/java/xyz/fycz/myreader/model/storage/WebDavHelp.kt b/app/src/main/java/xyz/fycz/myreader/model/storage/WebDavHelp.kt index ba2e8d0..f8ac305 100644 --- a/app/src/main/java/xyz/fycz/myreader/model/storage/WebDavHelp.kt +++ b/app/src/main/java/xyz/fycz/myreader/model/storage/WebDavHelp.kt @@ -53,8 +53,9 @@ object WebDavHelp { if (initWebDav()) { var files = WebDav(url + "FYReader/").listFiles() files = files.reversed() - for (index: Int in 0 until min(10, files.size)) { - files[index].displayName?.let { + //for (index: Int in 0 until min(10, files.size)) { + for (element in files) { + element.displayName?.let { names.add(it) } } diff --git a/app/src/main/java/xyz/fycz/myreader/ui/activity/AboutActivity.java b/app/src/main/java/xyz/fycz/myreader/ui/activity/AboutActivity.java index b1fdec1..f1551c1 100644 --- a/app/src/main/java/xyz/fycz/myreader/ui/activity/AboutActivity.java +++ b/app/src/main/java/xyz/fycz/myreader/ui/activity/AboutActivity.java @@ -11,7 +11,7 @@ import androidx.cardview.widget.CardView; import butterknife.BindView; import xyz.fycz.myreader.R; import xyz.fycz.myreader.application.MyApplication; -import xyz.fycz.myreader.base.BaseActivity2; +import xyz.fycz.myreader.base.BaseActivity; import xyz.fycz.myreader.common.URLCONST; import xyz.fycz.myreader.ui.dialog.DialogCreator; import xyz.fycz.myreader.util.ShareUtils; @@ -22,7 +22,7 @@ import xyz.fycz.myreader.util.ToastUtils; * @author fengyue * @date 2020/9/18 22:21 */ -public class AboutActivity extends BaseActivity2 { +public class AboutActivity extends BaseActivity { @BindView(R.id.tv_version_name) TextView tvVersionName; @BindView(R.id.vm_author) @@ -33,8 +33,6 @@ public class AboutActivity extends BaseActivity2 { CardView vmUpdate; @BindView(R.id.vw_update_log) CardView vmUpdateLog; - @BindView(R.id.vw_qq) - CardView vmQQ; @BindView(R.id.vw_git) CardView vmGit; @BindView(R.id.vw_disclaimer) @@ -75,16 +73,6 @@ public class AboutActivity extends BaseActivity2 { SharedPreUtils.getInstance().getString(getString(R.string.downloadLink, URLCONST.LAN_ZOUS_URL)))); vmUpdate.setOnClickListener(v -> MyApplication.checkVersionByServer(this, true, null)); vmUpdateLog.setOnClickListener(v -> DialogCreator.createAssetTipDialog(this, "更新日志", "updatelog.fy")); - vmQQ.setOnClickListener(v -> { - if (!MyApplication.joinQQGroup(this,"8PIOnHFuH6A38hgxvD_Rp2Bu-Ke1ToBn")){ - //数据 - ClipData mClipData = ClipData.newPlainText("Label", "1085028304"); - //把数据设置到剪切板上 - assert mClipboardManager != null; - mClipboardManager.setPrimaryClip(mClipData); - ToastUtils.showError("未安装手Q或安装的版本不支持!\n已复制QQ群号,您可自行前往QQ添加!"); - } - }); vmGit.setOnClickListener(v -> openIntent(Intent.ACTION_VIEW, getString(R.string.this_github_url))); vmDisclaimer.setOnClickListener(v -> DialogCreator.createAssetTipDialog(this, "免责声明", "disclaimer.fy")); diff --git a/app/src/main/java/xyz/fycz/myreader/ui/activity/BookDetailedActivity.java b/app/src/main/java/xyz/fycz/myreader/ui/activity/BookDetailedActivity.java index 326baa1..a51b963 100644 --- a/app/src/main/java/xyz/fycz/myreader/ui/activity/BookDetailedActivity.java +++ b/app/src/main/java/xyz/fycz/myreader/ui/activity/BookDetailedActivity.java @@ -18,12 +18,11 @@ import butterknife.BindView; import butterknife.OnClick; import com.bumptech.glide.Glide; import com.bumptech.glide.RequestBuilder; -import com.bumptech.glide.load.resource.bitmap.RoundedCorners; import com.bumptech.glide.request.RequestOptions; import xyz.fycz.myreader.R; import xyz.fycz.myreader.application.MyApplication; import xyz.fycz.myreader.application.SysManager; -import xyz.fycz.myreader.base.BaseActivity2; +import xyz.fycz.myreader.base.BaseActivity; import xyz.fycz.myreader.webapi.callback.ResultCallback; import xyz.fycz.myreader.common.APPCONST; import xyz.fycz.myreader.ui.dialog.SourceExchangeDialog; @@ -50,7 +49,7 @@ import java.util.ArrayList; * @author fengyue * @date 2020/8/17 11:39 */ -public class BookDetailedActivity extends BaseActivity2 { +public class BookDetailedActivity extends BaseActivity { @BindView(R.id.book_detail_iv_cover) CoverImageView mIvCover; /* @BindView(R.id.book_detail_iv_blur_cover) @@ -337,7 +336,7 @@ public class BookDetailedActivity extends BaseActivity2 { private RequestBuilder defaultCover() { return Glide.with(this) - .load(R.mipmap.no_image) + .load(R.mipmap.default_cover) .apply(RequestOptions.bitmapTransform(new BlurTransformation(this, 25))); } diff --git a/app/src/main/java/xyz/fycz/myreader/ui/activity/BookstoreActivity.java b/app/src/main/java/xyz/fycz/myreader/ui/activity/BookstoreActivity.java index 4ebbc5e..98adbf8 100644 --- a/app/src/main/java/xyz/fycz/myreader/ui/activity/BookstoreActivity.java +++ b/app/src/main/java/xyz/fycz/myreader/ui/activity/BookstoreActivity.java @@ -16,7 +16,7 @@ import butterknife.BindView; import com.scwang.smartrefresh.layout.SmartRefreshLayout; import xyz.fycz.myreader.R; import xyz.fycz.myreader.application.MyApplication; -import xyz.fycz.myreader.base.BaseActivity2; +import xyz.fycz.myreader.base.BaseActivity; import xyz.fycz.myreader.webapi.callback.ResultCallback; import xyz.fycz.myreader.common.APPCONST; import xyz.fycz.myreader.ui.dialog.DialogCreator; @@ -43,7 +43,7 @@ import java.util.List; * @author fengyue * @date 2020/9/13 21:11 */ -public class BookstoreActivity extends BaseActivity2 { +public class BookstoreActivity extends BaseActivity { @BindView(R.id.refresh_layout) RefreshLayout mRlRefresh; @BindView(R.id.rv_type_list) diff --git a/app/src/main/java/xyz/fycz/myreader/ui/activity/CatalogActivity.java b/app/src/main/java/xyz/fycz/myreader/ui/activity/CatalogActivity.java index 06c6efb..ebe0428 100644 --- a/app/src/main/java/xyz/fycz/myreader/ui/activity/CatalogActivity.java +++ b/app/src/main/java/xyz/fycz/myreader/ui/activity/CatalogActivity.java @@ -10,7 +10,7 @@ import androidx.viewpager.widget.ViewPager; import butterknife.BindView; import com.google.android.material.tabs.TabLayout; import xyz.fycz.myreader.R; -import xyz.fycz.myreader.base.BaseActivity2; +import xyz.fycz.myreader.base.BaseActivity; import xyz.fycz.myreader.common.APPCONST; import xyz.fycz.myreader.greendao.entity.Book; import xyz.fycz.myreader.ui.adapter.TabFragmentPageAdapter; @@ -20,7 +20,7 @@ import xyz.fycz.myreader.ui.fragment.CatalogFragment; /** * 书籍目录activity */ -public class CatalogActivity extends BaseActivity2 { +public class CatalogActivity extends BaseActivity { @BindView(R.id.catalog_tab) diff --git a/app/src/main/java/xyz/fycz/myreader/ui/activity/FontsActivity.java b/app/src/main/java/xyz/fycz/myreader/ui/activity/FontsActivity.java index 91c6353..d866887 100644 --- a/app/src/main/java/xyz/fycz/myreader/ui/activity/FontsActivity.java +++ b/app/src/main/java/xyz/fycz/myreader/ui/activity/FontsActivity.java @@ -8,14 +8,12 @@ import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; -import android.widget.LinearLayout; import android.widget.ListView; import android.widget.ProgressBar; -import android.widget.TextView; import androidx.appcompat.widget.Toolbar; import butterknife.BindView; import xyz.fycz.myreader.R; -import xyz.fycz.myreader.base.BaseActivity2; +import xyz.fycz.myreader.base.BaseActivity; import xyz.fycz.myreader.common.APPCONST; import xyz.fycz.myreader.enums.Font; import xyz.fycz.myreader.ui.adapter.FontsAdapter; @@ -35,7 +33,7 @@ import static xyz.fycz.myreader.util.UriFileUtil.getPath; * @author fengyue * @date 2020/9/19 12:04 */ -public class FontsActivity extends BaseActivity2 { +public class FontsActivity extends BaseActivity { @BindView(R.id.lv_fonts) ListView lvFonts; @BindView(R.id.pb_loading) diff --git a/app/src/main/java/xyz/fycz/myreader/ui/activity/LoginActivity.java b/app/src/main/java/xyz/fycz/myreader/ui/activity/LoginActivity.java deleted file mode 100644 index a01af55..0000000 --- a/app/src/main/java/xyz/fycz/myreader/ui/activity/LoginActivity.java +++ /dev/null @@ -1,231 +0,0 @@ -package xyz.fycz.myreader.ui.activity; - -import android.annotation.SuppressLint; -import android.app.Activity; -import android.app.ProgressDialog; -import android.content.Intent; -import android.graphics.Bitmap; -import android.os.Bundle; -import android.os.Handler; -import android.os.Message; -import android.text.Editable; -import android.text.TextWatcher; -import android.view.MotionEvent; -import android.view.View; -import android.view.inputmethod.InputMethodManager; -import android.widget.Button; -import android.widget.ImageView; -import android.widget.TextView; -import androidx.appcompat.widget.Toolbar; -import butterknife.BindView; -import com.google.android.material.textfield.TextInputLayout; -import xyz.fycz.myreader.R; -import xyz.fycz.myreader.model.backup.UserService; -import xyz.fycz.myreader.base.BaseActivity2; -import xyz.fycz.myreader.webapi.callback.ResultCallback; -import xyz.fycz.myreader.common.APPCONST; -import xyz.fycz.myreader.ui.dialog.DialogCreator; -import xyz.fycz.myreader.util.CodeUtil; -import xyz.fycz.myreader.util.CyptoUtils; -import xyz.fycz.myreader.util.ToastUtils; -import xyz.fycz.myreader.util.utils.NetworkUtils; -import xyz.fycz.myreader.util.utils.StringUtils; - -import java.util.HashMap; -import java.util.Map; - -/** - * @author fengyue - * @date 2020/9/18 22:27 - */ -public class LoginActivity extends BaseActivity2 implements TextWatcher { - @BindView(R.id.et_user) - TextInputLayout user; - @BindView(R.id.et_password) - TextInputLayout password; - @BindView(R.id.bt_login) - Button loginBtn; - @BindView(R.id.tv_register) - TextView tvRegister; - @BindView(R.id.et_captcha) - TextInputLayout etCaptcha; - @BindView(R.id.iv_captcha) - ImageView ivCaptcha; - - private String code; - - @SuppressLint("HandlerLeak") - private Handler mHandler = new Handler() { - @SuppressLint("HandlerLeak") - @Override - public void handleMessage(Message msg) { - switch (msg.what) { - case 1: - loginBtn.setEnabled(true); - break; - case 2: - createCaptcha(); - break; - } - } - }; - - @Override - protected int getContentId() { - return R.layout.activity_login; - } - - @Override - protected void setUpToolbar(Toolbar toolbar) { - super.setUpToolbar(toolbar); - setStatusBarColor(R.color.colorPrimary, true); - getSupportActionBar().setTitle("登录"); - } - - @Override - protected void initData(Bundle savedInstanceState) { - super.initData(savedInstanceState); - } - - @Override - protected void initWidget() { - super.initWidget(); - mHandler.sendMessage(mHandler.obtainMessage(2)); - String username = UserService.readUsername(); - user.getEditText().setText(username); - user.getEditText().requestFocus(username.length()); - //监听内容改变 -> 控制按钮的点击状态 - user.getEditText().addTextChangedListener(this); - password.getEditText().addTextChangedListener(this); - etCaptcha.getEditText().addTextChangedListener(this); - } - - @Override - protected void initClick() { - super.initClick(); - ivCaptcha.setOnClickListener(v -> mHandler.sendMessage(mHandler.obtainMessage(2))); - - loginBtn.setOnClickListener(v -> { - mHandler.sendMessage(mHandler.obtainMessage(2)); - if (!code.toLowerCase().equals(etCaptcha.getEditText().getText().toString().toLowerCase())){ - DialogCreator.createTipDialog(this, "验证码错误!"); - return; - } - if (!NetworkUtils.isNetWorkAvailable()) { - ToastUtils.showError("无网络连接!"); - return; - } - ProgressDialog dialog = DialogCreator.createProgressDialog(this, null, "正在登陆..."); - loginBtn.setEnabled(false); - final String loginName = user.getEditText().getText().toString().trim(); - String loginPwd = password.getEditText().getText().toString(); - final Map userLoginInfo = new HashMap<>(); - userLoginInfo.put("loginName", loginName); - userLoginInfo.put("loginPwd", CyptoUtils.encode(APPCONST.KEY, loginPwd)); - //验证用户名和密码 - UserService.login(userLoginInfo, new ResultCallback() { - @Override - public void onFinish(Object o, int code) { - String result = (String) o; - String[] info = result.split(":"); - int resultCode = Integer.parseInt(info[0].trim()); - String resultName = info[1].trim(); - //最后输出结果 - if (resultCode == 102) { - UserService.writeConfig(userLoginInfo); - UserService.writeUsername(loginName); - Intent intent = new Intent(); - intent.putExtra("isLogin", true); - setResult(Activity.RESULT_OK, intent); - finish(); - ToastUtils.showSuccess(resultName); - } else { - mHandler.sendMessage(mHandler.obtainMessage(1)); - dialog.dismiss(); - ToastUtils.showWarring(resultName); - } - - } - - @Override - public void onError(Exception e) { - ToastUtils.showError("登录失败\n" + e.getLocalizedMessage()); - mHandler.sendMessage(mHandler.obtainMessage(1)); - dialog.dismiss(); - } - }); - - }); - - tvRegister.setOnClickListener(v -> { - Intent intent = new Intent(LoginActivity.this, RegisterActivity.class); - startActivity(intent); - }); - } - - public void createCaptcha() { - code = CodeUtil.getInstance().createCode(); - Bitmap codeBitmap = CodeUtil.getInstance().createBitmap(code); - ivCaptcha.setImageBitmap(codeBitmap); - } - - - /** - * 当有控件获得焦点focus 自动弹出键盘 - * 1. 点击软键盘的enter键 自动收回键盘 - * 2. 代码控制 InputMethodManager - * requestFocus - * showSoftInput:显示键盘 必须先让这个view成为焦点requestFocus - * - * hideSoftInputFromWindow 隐藏键盘 - */ - @Override - public boolean onTouchEvent(MotionEvent event) { - if (event.getAction() == MotionEvent.ACTION_DOWN){ - //隐藏键盘 - //1.获取系统输入的管理器 - InputMethodManager inputManager = - (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); - - //2.隐藏键盘 - inputManager.hideSoftInputFromWindow(user.getWindowToken(),0); - - //3.取消焦点 - View focusView = getCurrentFocus(); - if (focusView != null) { - focusView.clearFocus(); //取消焦点 - } - - //getCurrentFocus().clearFocus(); - - //focusView.requestFocus();//请求焦点 - } - return true; - } - - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - //禁止输入中文 - StringUtils.isNotChinese(s); - //判断两个输入框是否有内容 - if (user.getEditText().getText().toString().length() > 0 && - password.getEditText().getText().toString().length() > 0 && - etCaptcha.getEditText().getText().toString().length() > 0){ - //按钮可以点击 - loginBtn.setEnabled(true); - }else{ - //按钮不能点击 - loginBtn.setEnabled(false); - } - } -} diff --git a/app/src/main/java/xyz/fycz/myreader/ui/activity/MainActivity.java b/app/src/main/java/xyz/fycz/myreader/ui/activity/MainActivity.java index 436afb7..d07ae88 100644 --- a/app/src/main/java/xyz/fycz/myreader/ui/activity/MainActivity.java +++ b/app/src/main/java/xyz/fycz/myreader/ui/activity/MainActivity.java @@ -21,7 +21,7 @@ import com.google.android.material.bottomnavigation.BottomNavigationView; import xyz.fycz.myreader.R; import xyz.fycz.myreader.application.MyApplication; import xyz.fycz.myreader.application.SysManager; -import xyz.fycz.myreader.base.BaseActivity2; +import xyz.fycz.myreader.base.BaseActivity; import xyz.fycz.myreader.common.APPCONST; import xyz.fycz.myreader.ui.dialog.DialogCreator; import xyz.fycz.myreader.ui.fragment.BookcaseFragment; @@ -40,7 +40,7 @@ import static androidx.fragment.app.FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CU * @author fengyue * @date 2020/9/13 13:03 */ -public class MainActivity extends BaseActivity2 { +public class MainActivity extends BaseActivity { @BindView(R.id.bottom_navigation_view) BottomNavigationView bottomNavigation; @BindView(R.id.view_pager_main) diff --git a/app/src/main/java/xyz/fycz/myreader/ui/activity/MoreSettingActivity.java b/app/src/main/java/xyz/fycz/myreader/ui/activity/MoreSettingActivity.java index 319e56b..860520e 100644 --- a/app/src/main/java/xyz/fycz/myreader/ui/activity/MoreSettingActivity.java +++ b/app/src/main/java/xyz/fycz/myreader/ui/activity/MoreSettingActivity.java @@ -3,8 +3,6 @@ package xyz.fycz.myreader.ui.activity; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; -import android.text.InputType; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.widget.*; @@ -13,19 +11,11 @@ import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.SwitchCompat; import androidx.appcompat.widget.Toolbar; import butterknife.BindView; -import com.google.android.material.textfield.TextInputLayout; -import io.reactivex.Single; -import io.reactivex.SingleOnSubscribe; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.schedulers.Schedulers; import xyz.fycz.myreader.R; import xyz.fycz.myreader.application.MyApplication; import xyz.fycz.myreader.application.SysManager; -import xyz.fycz.myreader.base.BaseActivity2; -import xyz.fycz.myreader.base.observer.MySingleObserver; +import xyz.fycz.myreader.base.BaseActivity; import xyz.fycz.myreader.common.APPCONST; -import xyz.fycz.myreader.model.storage.BackupRestoreUi; -import xyz.fycz.myreader.model.storage.WebDavHelp; import xyz.fycz.myreader.ui.dialog.DialogCreator; import xyz.fycz.myreader.ui.dialog.MultiChoiceDialog; import xyz.fycz.myreader.ui.dialog.MyAlertDialog; @@ -33,7 +23,6 @@ import xyz.fycz.myreader.entity.Setting; import xyz.fycz.myreader.enums.BookSource; import xyz.fycz.myreader.greendao.entity.Book; import xyz.fycz.myreader.greendao.service.BookService; -import xyz.fycz.myreader.util.StringHelper; import xyz.fycz.myreader.util.utils.FileUtils; import xyz.fycz.myreader.util.SharedPreUtils; import xyz.fycz.myreader.util.ToastUtils; @@ -51,7 +40,7 @@ import static xyz.fycz.myreader.common.APPCONST.BOOK_CACHE_PATH; * 阅读界面的更多设置 */ -public class MoreSettingActivity extends BaseActivity2 { +public class MoreSettingActivity extends BaseActivity { @BindView(R.id.more_setting_ll_webdav) LinearLayout mLlWebdav; @BindView(R.id.more_setting_rl_volume) diff --git a/app/src/main/java/xyz/fycz/myreader/ui/activity/ReadActivity.java b/app/src/main/java/xyz/fycz/myreader/ui/activity/ReadActivity.java index efb5cbb..28d7c98 100644 --- a/app/src/main/java/xyz/fycz/myreader/ui/activity/ReadActivity.java +++ b/app/src/main/java/xyz/fycz/myreader/ui/activity/ReadActivity.java @@ -1,121 +1,535 @@ package xyz.fycz.myreader.ui.activity; - -import android.content.DialogInterface; -import android.content.Intent; +import android.annotation.SuppressLint; +import android.app.Dialog; +import android.app.Notification; +import android.content.*; +import android.graphics.BitmapFactory; +import android.graphics.drawable.Drawable; +import android.net.Uri; +import android.os.Build; import android.os.Bundle; -import android.view.KeyEvent; -import android.view.Window; -import android.view.WindowManager; +import android.os.Handler; +import android.os.Message; +import android.view.*; +import android.view.animation.Animation; +import android.view.animation.AnimationUtils; +import android.widget.LinearLayout; import android.widget.ProgressBar; +import android.widget.SeekBar; import android.widget.TextView; - import androidx.appcompat.app.AppCompatActivity; - +import androidx.appcompat.widget.Toolbar; +import androidx.core.content.ContextCompat; import butterknife.BindView; -import butterknife.ButterKnife; +import butterknife.OnClick; +import com.google.android.material.appbar.AppBarLayout; +import com.gyf.immersionbar.ImmersionBar; import com.h6ah4i.android.widget.verticalseekbar.VerticalSeekBar; import xyz.fycz.myreader.ActivityManage; import xyz.fycz.myreader.R; +import xyz.fycz.myreader.application.MyApplication; import xyz.fycz.myreader.application.SysManager; import xyz.fycz.myreader.base.BaseActivity; import xyz.fycz.myreader.common.APPCONST; +import xyz.fycz.myreader.entity.Setting; +import xyz.fycz.myreader.enums.BookSource; +import xyz.fycz.myreader.enums.Font; +import xyz.fycz.myreader.enums.ReadStyle; +import xyz.fycz.myreader.greendao.entity.Book; +import xyz.fycz.myreader.greendao.entity.BookMark; +import xyz.fycz.myreader.greendao.entity.Chapter; +import xyz.fycz.myreader.greendao.service.BookMarkService; +import xyz.fycz.myreader.greendao.service.BookService; +import xyz.fycz.myreader.greendao.service.ChapterService; import xyz.fycz.myreader.model.storage.Backup; +import xyz.fycz.myreader.ui.dialog.CopyContentDialog; import xyz.fycz.myreader.ui.dialog.DialogCreator; -import xyz.fycz.myreader.ui.presenter.ReadPresenter; +import xyz.fycz.myreader.ui.dialog.MyAlertDialog; +import xyz.fycz.myreader.ui.dialog.SourceExchangeDialog; +import xyz.fycz.myreader.util.*; +import xyz.fycz.myreader.util.notification.NotificationClickReceiver; +import xyz.fycz.myreader.util.notification.NotificationUtil; +import xyz.fycz.myreader.util.utils.ColorUtil; +import xyz.fycz.myreader.util.utils.NetworkUtils; +import xyz.fycz.myreader.util.utils.SystemBarUtils; +import xyz.fycz.myreader.webapi.CommonApi; +import xyz.fycz.myreader.webapi.callback.ResultCallback; +import xyz.fycz.myreader.webapi.crawler.ReadCrawlerUtil; +import xyz.fycz.myreader.webapi.crawler.base.ReadCrawler; +import xyz.fycz.myreader.widget.page.LocalPageLoader; +import xyz.fycz.myreader.widget.page.PageLoader; +import xyz.fycz.myreader.widget.page.PageMode; import xyz.fycz.myreader.widget.page.PageView; +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import static android.view.View.GONE; +import static android.view.View.VISIBLE; +import static xyz.fycz.myreader.util.UriFileUtil.getPath; + +/** + * @author fengyue + * @date 2020/10/21 16:46 + */ public class ReadActivity extends BaseActivity { + /*****************************View***********************************/ + @BindView(R.id.toolbar) + Toolbar toolbar; + @BindView(R.id.read_abl_top_menu) + AppBarLayout readAblTopMenu; + @BindView(R.id.ll_chapter_view) + LinearLayout chapterView; + @BindView(R.id.tv_chapter_title_top) + TextView chapterTitle; + @BindView(R.id.tv_chapter_url) + TextView chapterUrl; + @BindView(R.id.read_pv_content) + PageView pageView; @BindView(R.id.pb_loading) ProgressBar pbLoading; - @BindView(R.id.read_pv_page) - PageView srlContent; @BindView(R.id.pb_nextPage) VerticalSeekBar pbNextPage; + @BindView(R.id.read_tv_page_tip) + TextView readTvPageTip; + @BindView(R.id.read_tv_pre_chapter) + TextView readTvPreChapter; + @BindView(R.id.read_sb_chapter_progress) + SeekBar readSbChapterProgress; + @BindView(R.id.read_tv_next_chapter) + TextView readTvNextChapter; + @BindView(R.id.read_tv_category) + TextView readTvCategory; + @BindView(R.id.read_tv_night_mode) + TextView readTvNightMode; + @BindView(R.id.read_tv_download) + TextView readTvDownload; + @BindView(R.id.read_tv_setting) + TextView readTvSetting; + @BindView(R.id.read_ll_bottom_menu) + LinearLayout readLlBottomMenu; + + /***************************variable*****************************/ + private ImmersionBar immersionBar; + private Book mBook; + private ArrayList mChapters = new ArrayList<>(); + private ChapterService mChapterService; + private BookService mBookService; + private BookMarkService mBookMarkService; + private NotificationUtil notificationUtil; + private Setting mSetting; + + private boolean isCollected = true;//是否在书架中 + + private boolean isPrev;//是否向前翻页 + + private boolean autoPage = false;//是否自动翻页 + + private boolean loadFinish = false; + + private Dialog mPageModeDialog;//翻页模式视图 + + private int curCacheChapterNum = 0;//缓存章节数 + + private int needCacheChapterNum;//需要缓存的章节 + + private PageLoader mPageLoader;//页面加载器 + + private int screenTimeOut;//息屏时间(单位:秒),dengy零表示常亮 + + private Runnable keepScreenRunnable;//息屏线程 + private Runnable autoPageRunnable;//自动翻页 + private Runnable upHpbNextPage;//更新自动翻页进度条 + private Runnable sendDownloadNotification; + private static boolean isStopDownload = true; + + private int tempCacheChapterNum; + private int tempCount; + private String downloadingChapter; + + private ReadCrawler mReadCrawler; - @BindView(R.id.tv_end_page_tip) - TextView tvEndPageTip; + private int nextPageTime;//下次翻页时间 - private ReadPresenter mReadPresenter; + private int upHpbInterval = 30;//更新翻页进度速度 + private int downloadInterval = 150; + + private final CharSequence[] pageMode = { + "覆盖", "仿真", "滑动", "滚动", "无动画" + }; + + private SourceExchangeDialog mSourceDialog; + private Dialog mSettingDialog; + + private boolean hasChangeSource; + + private Animation mTopInAnim; + private Animation mTopOutAnim; + private Animation mBottomInAnim; + private Animation mBottomOutAnim; + + // 接收电池信息和时间更新的广播 + private BroadcastReceiver mReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + if (Intent.ACTION_BATTERY_CHANGED.equals(intent.getAction())) { + int level = intent.getIntExtra("level", 0); + try { + mPageLoader.updateBattery(level); + } catch (Exception e) { + e.printStackTrace(); + } + } + // 监听分钟的变化 + else if (Intent.ACTION_TIME_TICK.equals(intent.getAction())) { + try { + mPageLoader.updateTime(); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + }; + + @SuppressLint("HandlerLeak") + private Handler mHandler = new Handler() { + @Override + public void handleMessage(Message msg) { + switch (msg.what) { + case 1: + init(); + break; + case 2: + int chapterPos = msg.arg1; + int pagePos = msg.arg2; + mPageLoader.skipToChapter(chapterPos); + mPageLoader.skipToPage(pagePos); + pbLoading.setVisibility(View.GONE); + break; + case 3: + updateDownloadProgress((TextView) msg.obj); + break; + case 4: + saveLastChapterReadPosition(); + screenOffTimerStart(); + initMenu(); + break; + case 5: + + break; + case 6: + mPageLoader.openChapter(); + if (isPrev) {//判断是否向前翻页打开章节,如果是则打开自己后跳转到最后一页,否则不跳转 + try {//概率性异常(空指针异常) + mPageLoader.skipToPage(mPageLoader.getAllPagePos() - 1); + } catch (Exception e) { + e.printStackTrace(); + } + } + break; + case 7: + ToastUtils.showWarring("无网络连接!"); + mPageLoader.chapterError(); + break; + case 8: + pbLoading.setVisibility(View.GONE); + break; + case 9: + ToastUtils.showInfo("正在后台缓存书籍,具体进度可查看通知栏!"); + notificationUtil.requestNotificationPermissionDialog(ReadActivity.this); + break; + case 10: + if (mPageLoader != null) { + mPageLoader.chapterError(); + } + } + } + }; + + + /**************************override***********************************/ @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - requestWindowFeature(Window.FEATURE_NO_TITLE); // 隐藏应用程序的标题栏,即当前activity的label - getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); // 隐藏android系统的状态栏 - setContentView(R.layout.activity_read_new); - ButterKnife.bind(this); - mReadPresenter = new ReadPresenter(this); - mReadPresenter.start(); + protected int getContentId() { + return R.layout.activity_read; } @Override - protected void onActivityResult(int requestCode, int resultCode, Intent data) { - mReadPresenter.onActivityResult(requestCode, resultCode, data); + protected void setUpToolbar(Toolbar toolbar) { + super.setUpToolbar(toolbar); + getSupportActionBar().setTitle(mBook.getName()); } + @Override + protected void initData(Bundle savedInstanceState) { + super.initData(savedInstanceState); + mBookService = BookService.getInstance(); + mChapterService = ChapterService.getInstance(); + mBookMarkService = BookMarkService.getInstance(); + mSetting = SysManager.getSetting(); + if (!loadBook()) { + finish(); + return; + } + if (SharedPreUtils.getInstance().getBoolean(getString(R.string.isNightFS), false)) { + mSetting.setDayStyle(!ColorUtil.isColorLight(getColor(R.color.textPrimary))); + } + //息屏时间 + screenTimeOut = mSetting.getResetScreen() * 60; + //保持屏幕常亮 + keepScreenRunnable = this::unKeepScreenOn; + autoPageRunnable = this::nextPage; + upHpbNextPage = this::upHpbNextPage; + sendDownloadNotification = this::sendNotification; + + notificationUtil = NotificationUtil.getInstance(); + isCollected = getIntent().getBooleanExtra("isCollected", true); + hasChangeSource = getIntent().getBooleanExtra("hasChangeSource", false); - public ReadPresenter getmReadPresenter() { - return mReadPresenter; + mReadCrawler = ReadCrawlerUtil.getReadCrawler(mBook.getSource()); + mPageLoader = pageView.getPageLoader(mBook, mReadCrawler, mSetting); + //Dialog + mSourceDialog = new SourceExchangeDialog(this, mBook); } - public PageView getSrlContent() { - return srlContent; + @Override + protected void initWidget() { + super.initWidget(); + ImmersionBar.with(this).fullScreen(true).init(); + //隐藏StatusBar + pageView.post( + this::hideSystemBar + ); + if (!mSetting.isBrightFollowSystem()) { + BrightUtil.setBrightness(this, BrightUtil.progressToBright(mSetting.getBrightProgress())); + } + pbLoading.setVisibility(View.VISIBLE); + createSettingDetailView(); + initTopMenu(); + initBottomMenu(); } + @Override + protected void initClick() { + super.initClick(); + pageView.setTouchListener(new PageView.TouchListener() { + @Override + public boolean onTouch() { + return !hideReadMenu(); + } - public ProgressBar getPbLoading() { - return pbLoading; - } + @Override + public void center() { + toggleMenu(true); + if (autoPage) { + autoPageStop(); + } + } + + @Override + public void prePage() { + isPrev = true; + } + + @Override + public void nextPage(boolean hasNextPage) { + isPrev = false; + if (!hasNextPage) { + if (autoPage) { + autoPageStop(); + } + } + } + @Override + public void cancel() { + } + }); + mPageLoader.setOnPageChangeListener( + new PageLoader.OnPageChangeListener() { + @Override + public void onChapterChange(int pos) { + lastLoad(pos); + for (int i = 0; i < 5; i++) { + preLoad(pos - 1 + i); + } + mBook.setHistoryChapterId(mChapters.get(pos).getTitle()); + mHandler.sendMessage(mHandler.obtainMessage(4)); + MyApplication.getApplication().newThread(() -> { + if (mPageLoader.getPageStatus() == PageLoader.STATUS_LOADING) { + if (!NetworkUtils.isNetWorkAvailable()) { + mHandler.sendMessage(mHandler.obtainMessage(7)); + } else { + mHandler.sendMessage(mHandler.obtainMessage(6)); + } + } + }); + + } + + @Override + public void requestChapters(List requestChapters) { + /*for (final Chapter chapter : requestChapters){ + getChapterContent(chapter, null); + }*/ + } + + @Override + public void onCategoryFinish(List chapters) { + } - public TextView getTvEndPageTip() { - return tvEndPageTip; + @Override + public void onPageCountChange(int count) { + + } + + @Override + public void onPageChange(int pos) { + mHandler.sendMessage(mHandler.obtainMessage(4)); + } + } + ); + + readSbChapterProgress.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { + @Override + public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { + if (fromUser) { + readTvPageTip.setText((progress + 1) + "/" + (seekBar.getMax() + 1)); + } + } + + @Override + public void onStartTrackingTouch(SeekBar seekBar) { + } + + @Override + public void onStopTrackingTouch(SeekBar seekBar) { + //进行切换 + int pagePos = seekBar.getProgress(); + if (pagePos != mPageLoader.getPagePos() && pagePos < mPageLoader.getAllPagePos()) { + mPageLoader.skipToPage(pagePos); + } + } + }); + + mSourceDialog.setOnSourceChangeListener((bean, pos) -> { + Book bookTem = new Book(mBook); + bookTem.setChapterUrl(bean.getChapterUrl()); + bookTem.setSource(bean.getSource()); + if (!StringHelper.isEmpty(bean.getImgUrl())) { + bookTem.setImgUrl(bean.getImgUrl()); + } + if (!StringHelper.isEmpty(bean.getType())) { + bookTem.setType(bean.getType()); + } + if (!StringHelper.isEmpty(bean.getDesc())) { + bookTem.setDesc(bean.getDesc()); + } + if (isCollected) { + mBookService.updateBook(mBook, bookTem); + } + mBook = bookTem; + toggleMenu(true); + Intent intent = new Intent(this, ReadActivity.class) + .putExtra(APPCONST.BOOK, mBook) + .putExtra("hasChangeSource", true); + if (!isCollected) { + intent.putExtra("isCollected", false); + } + finish(); + startActivity(intent); + }); } + @Override + protected void processLogic() { + super.processLogic(); + //注册广播 + IntentFilter intentFilter = new IntentFilter(); + intentFilter.addAction(Intent.ACTION_BATTERY_CHANGED); + intentFilter.addAction(Intent.ACTION_TIME_TICK); + registerReceiver(mReceiver, intentFilter); + + //当书籍Collected且书籍id不为空的时候保存上次阅读信息 + if (isCollected && !StringHelper.isEmpty(mBook.getId())) { + //保存上次阅读信息 + SharedPreUtils.getInstance().putString(getString(R.string.lastRead), mBook.getId()); + } + getData(); + } @Override - protected void onDestroy() { - mReadPresenter.onDestroy(); - super.onDestroy(); + protected void onResume() { + super.onResume(); + hideSystemBar(); + } + + @Override + public boolean onKeyDown(int keyCode, KeyEvent event) { + boolean isVolumeTurnPage = SysManager.getSetting().isVolumeTurnPage(); + switch (keyCode) { + case KeyEvent.KEYCODE_VOLUME_UP: + if (isVolumeTurnPage) { + return mPageLoader.skipToPrePage(); + } + case KeyEvent.KEYCODE_VOLUME_DOWN: + if (isVolumeTurnPage) { + return mPageLoader.skipToNextPage(); + } + } + return super.onKeyDown(keyCode, event); } - /*@Override - protected void onPause() { - super.onPause(); - }*/ @Override public void onBackPressed() { - if (!mReadPresenter.isCollected()){ - DialogCreator.createCommonDialog(ReadActivity.this, "加入书架", "喜欢本书就加入书架吧", true, new DialogInterface.OnClickListener() { + if (readAblTopMenu.getVisibility() == View.VISIBLE) { + // 非全屏下才收缩,全屏下直接退出 + //if (!ReadSettingManager.getInstance().isFullScreen()) { + if (true) { + toggleMenu(true); + return; + } + } else if (mSettingDialog.isShowing()) { + mSettingDialog.dismiss(); + return; + } + finish(); + } + + @Override + public void finish() { + if (!isCollected) { + DialogCreator.createCommonDialog(this, "加入书架", "喜欢本书就加入书架吧", true, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - mReadPresenter.saveLastChapterReadPosition(); - mReadPresenter.setCollected(true); + saveLastChapterReadPosition(); + isCollected = true; exit(); } } , (dialog, which) -> { - mReadPresenter.deleteBook(); + mBookService.deleteBookById(mBook.getId()); exit(); }); } else { - mReadPresenter.saveLastChapterReadPosition(); + saveLastChapterReadPosition(); exit(); } } - private void exit(){ + private void exit() { // 返回给BookDetail Intent result = new Intent(); - result.putExtra(APPCONST.RESULT_IS_COLLECTED, mReadPresenter.isCollected()); - if (mReadPresenter.getmPageLoader() != null) { - result.putExtra(APPCONST.RESULT_LAST_READ_POSITION, mReadPresenter.getmPageLoader().getPagePos()); - result.putExtra(APPCONST.RESULT_HISTORY_CHAPTER, mReadPresenter.getmPageLoader().getChapterPos()); + result.putExtra(APPCONST.RESULT_IS_COLLECTED, isCollected); + if (mPageLoader != null) { + result.putExtra(APPCONST.RESULT_LAST_READ_POSITION, mPageLoader.getPagePos()); + result.putExtra(APPCONST.RESULT_HISTORY_CHAPTER, mPageLoader.getChapterPos()); } setResult(AppCompatActivity.RESULT_OK, result); if (!ActivityManage.isExist(MainActivity.class)) { @@ -123,27 +537,990 @@ public class ReadActivity extends BaseActivity { startActivity(intent); } Backup.INSTANCE.autoBack(); - super.onBackPressed(); + super.finish(); } + @Override + protected void onDestroy() { + super.onDestroy(); + unregisterReceiver(mReceiver); + mHandler.removeCallbacks(keepScreenRunnable); + mHandler.removeCallbacks(upHpbNextPage); + mHandler.removeCallbacks(autoPageRunnable); + /*mHandler.removeCallbacks(sendDownloadNotification); + notificationUtil.cancelAll(); + MyApplication.getApplication().shutdownThreadPool();*/ + if (autoPage) { + autoPageStop(); + } + for (int i = 0; i < 9; i++) { + mHandler.removeMessages(i + 1); + } + if (mPageLoader != null) { + mPageLoader.closeBook(); + mPageLoader = null; + } + } @Override - public boolean onKeyDown(int keyCode, KeyEvent event) { - boolean isVolumeTurnPage = SysManager.getSetting().isVolumeTurnPage(); - switch (keyCode) { - case KeyEvent.KEYCODE_VOLUME_UP : - if (isVolumeTurnPage) { - return mReadPresenter.getmPageLoader().skipToPrePage(); + public boolean onCreateOptionsMenu(Menu menu) { + getMenuInflater().inflate(R.menu.menu_read, menu); + return true; + } + + @Override + public boolean onPrepareOptionsMenu(Menu menu) { + if ("本地书籍".equals(mBook.getType())) { + menu.findItem(R.id.action_change_source).setVisible(false); + menu.findItem(R.id.action_open_link).setVisible(false); + } + menu.setGroupVisible(R.id.action_load_finish, loadFinish); + + return super.onPrepareOptionsMenu(menu); + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case R.id.action_change_source: + mSourceDialog.show(); + break; + case R.id.action_reload: + isPrev = false; + if (!"本地书籍".equals(mBook.getType())) { + mChapterService.deleteChapterCacheFile(mChapters.get(mPageLoader.getChapterPos())); } - case KeyEvent.KEYCODE_VOLUME_DOWN : - if (isVolumeTurnPage) { - return mReadPresenter.getmPageLoader().skipToNextPage(); + mPageLoader.refreshChapter(mChapters.get(mPageLoader.getChapterPos())); + break; + case R.id.action_add_bookmark: + if (mChapters == null || mChapters.size() == 0) { + if ("本地书籍".equals(mBook.getType())) { + ToastUtils.showWarring("请等待章节拆分完成后再添加书签"); + } else { + ToastUtils.showError("章节目录为空,添加书签失败!"); + } + return true; } + Chapter curChapter = mChapters.get(mPageLoader.getChapterPos()); + BookMark bookMark = new BookMark(); + bookMark.setBookId(mBook.getId()); + bookMark.setTitle(curChapter.getTitle()); + bookMark.setBookMarkChapterNum(mPageLoader.getChapterPos()); + bookMark.setBookMarkReadPosition(mPageLoader.getPagePos()); + mBookMarkService.addOrUpdateBookMark(bookMark); + DialogCreator.createTipDialog(this, "《" + mBook.getName() + + "》:" + bookMark.getTitle() + "[" + (bookMark.getBookMarkReadPosition() + 1) + + "]\n书签添加成功,书签列表可在目录界面查看!"); + return true; + case R.id.action_copy_content: + new CopyContentDialog(this, mPageLoader.getContent()).show(); + break; + case R.id.action_open_link: + Uri uri = Uri.parse(mBook.getChapterUrl()); + Intent intent = new Intent(Intent.ACTION_VIEW, uri); + startActivity(intent); + break; } - return super.onKeyDown(keyCode, event); + return super.onOptionsItemSelected(item); + } + + /** + * 结果回调 + * + * @param requestCode + * @param resultCode + * @param data + */ + @Override + public void onActivityResult(int requestCode, int resultCode, Intent data) { + if (resultCode == RESULT_OK) { + switch (requestCode) { + case APPCONST.REQUEST_FONT: + Font font = (Font) data.getSerializableExtra(APPCONST.FONT); + mSetting.setFont(font); +// init(); + MyApplication.runOnUiThread(() -> mPageLoader.setFont(font)); + break; + case APPCONST.REQUEST_CHAPTER_PAGE: + int[] chapterAndPage = data.getIntArrayExtra(APPCONST.CHAPTER_PAGE); + assert chapterAndPage != null; + skipToChapterAndPage(chapterAndPage[0], chapterAndPage[1]); + break; + case APPCONST.REQUEST_RESET_SCREEN_TIME: + int resetScreen = data.getIntExtra(APPCONST.RESULT_RESET_SCREEN, 0); + screenTimeOut = resetScreen * 60; + screenOffTimerStart(); + break; + } + } + } + /**************************method*********************************/ + /** + * 初始化 + */ + private void init() { + screenOffTimerStart(); + mPageLoader.init(); + mPageLoader.refreshChapterList(); + loadFinish = true; + invalidateOptionsMenu(); + mHandler.sendMessage(mHandler.obtainMessage(8)); + } + + private void initMenu() { + if (mChapters != null && mChapters.size() != 0) { + Chapter curChapter = mChapters.get(mPageLoader.getChapterPos()); + String url = curChapter.getUrl(); + chapterTitle.setText(curChapter.getTitle()); + chapterUrl.setText(StringHelper.isEmpty(url) ? curChapter.getId() : url); + readSbChapterProgress.setProgress(mPageLoader.getPagePos()); + readSbChapterProgress.setMax(mPageLoader.getAllPagePos() - 1); + readTvPageTip.setText((readSbChapterProgress.getProgress() + 1) + "/" + (readSbChapterProgress.getMax() + 1)); + } + } + /************************书籍相关******************************/ + /** + * 进入阅读书籍有三种方式: + * 1、直接从书架进入,这种方式书籍一定Collected + * 2、从外部打开txt文件,这种方式会添加进书架 + * 3、从快捷图标打开上次阅读书籍 + * + * @return 是否加载成功 + */ + private boolean loadBook() { + //是否直接打开本地txt文件 + String path = null; + if (Intent.ACTION_VIEW.equals(getIntent().getAction())) { + Uri uri = getIntent().getData(); + if (uri != null) { + path = getPath(this, uri); + } + } + if (!StringHelper.isEmpty(path)) { + //本地txt文件路径不为空,添加书籍 + addLocalBook(path); + } else { + //路径为空,说明不是直接打开txt文件 + mBook = (Book) getIntent().getSerializableExtra(APPCONST.BOOK); + //mBook为空,说明是从快捷方式启动 + if (mBook == null) { + String bookId = SharedPreUtils.getInstance().getString(getString(R.string.lastRead), ""); + if ("".equals(bookId)) {//没有上次阅读信息 + ToastUtils.showWarring("当前没有阅读任何书籍,无法加载上次阅读书籍!"); + finish(); + return false; + } else {//有信息 + mBook = mBookService.getBookById(bookId); + if (mBook == null) {//上次阅读的书籍不存在 + ToastUtils.showWarring("上次阅读书籍已不存在/移除书架,无法加载!"); + finish(); + return false; + }//存在就继续执行 + } + } + } + return true; + } + + /** + * 添加本地书籍 + * + * @param path + */ + private void addLocalBook(String path) { + File file = new File(path); + if (!file.exists()) { + return; + } + Book book = new Book(); + book.setName(file.getName().replace(".txt", "")); + book.setChapterUrl(path); + book.setType("本地书籍"); + book.setHistoryChapterId("未开始阅读"); + book.setNewestChapterTitle("未拆分章节"); + book.setAuthor("本地书籍"); + book.setSource(BookSource.local.toString()); + book.setDesc("无"); + book.setIsCloseUpdate(true); + //判断书籍是否已经添加 + Book existsBook = mBookService.findBookByAuthorAndName(book.getName(), book.getAuthor()); + if (book.equals(existsBook)) { + mBook = existsBook; + return; + } + + mBookService.addBook(book); + mBook = book; + } + + /** + * 添加到书架并缓存书籍 + * + * @param tvDownloadProgress + */ + private void addBookToCaseAndDownload(final TextView tvDownloadProgress) { + DialogCreator.createCommonDialog(this, this.getString(R.string.tip), this.getString(R.string.download_no_add_tips), true, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + downloadBook(tvDownloadProgress); + isCollected = true; + } + }, (dialog, which) -> dialog.dismiss()); + } + /************************章节相关*************************/ + /** + * 章节数据网络同步 + */ + private void getData() { + mChapters = (ArrayList) mChapterService.findBookAllChapterByBookId(mBook.getId()); + if (!isCollected || mChapters.size() == 0 || ("本地书籍".equals(mBook.getType()) && + !ChapterService.isChapterCached(mBook.getId(), mChapters.get(0).getTitle()))) { + if ("本地书籍".equals(mBook.getType())) { + if (!new File(mBook.getChapterUrl()).exists()) { + ToastUtils.showWarring("书籍缓存为空且源文件不存在,书籍加载失败!"); + finish(); + return; + } + ((LocalPageLoader) mPageLoader).loadChapters(new ResultCallback() { + @Override + public void onFinish(Object o, int code) { + ArrayList chapters = (ArrayList) o; + mBook.setChapterTotalNum(chapters.size()); + mBook.setNewestChapterTitle(chapters.get(chapters.size() - 1).getTitle()); + mBookService.updateEntity(mBook); + if (mChapters.size() == 0) { + updateAllOldChapterData(chapters); + } + initChapters(); + mHandler.sendMessage(mHandler.obtainMessage(1)); + } + + @Override + public void onError(Exception e) { + mChapters.clear(); + initChapters(); + mHandler.sendMessage(mHandler.obtainMessage(1)); + } + }); + } else { + CommonApi.getBookChapters(mBook.getChapterUrl(), mReadCrawler, false, new ResultCallback() { + @Override + public void onFinish(Object o, int code) { + ArrayList chapters = (ArrayList) o; + updateAllOldChapterData(chapters); + initChapters(); + } + + @Override + public void onError(Exception e) { +// settingChange = true; + initChapters(); + mHandler.sendMessage(mHandler.obtainMessage(1)); + } + }); + } + } else { + initChapters(); + } + } + + /** + * 更新所有章节 + * + * @param newChapters + */ + private void updateAllOldChapterData(ArrayList newChapters) { + for (Chapter newChapter : newChapters) { + newChapter.setId(StringHelper.getStringRandom(25)); + newChapter.setBookId(mBook.getId()); + mChapters.add(newChapter); +// mChapterService.addChapter(newChapters.get(j)); + } + mChapterService.addChapters(mChapters); + } + + /** + * 初始化章节 + */ + private void initChapters() { + mBook.setNoReadNum(0); + mBook.setChapterTotalNum(mChapters.size()); + if (!StringHelper.isEmpty(mBook.getId())) { + mBookService.updateEntity(mBook); + } + if (mChapters.size() == 0) { + ToastUtils.showWarring("该书查询不到任何章节"); + mHandler.sendMessage(mHandler.obtainMessage(8)); + } else { + if (mBook.getHisttoryChapterNum() < 0) { + mBook.setHisttoryChapterNum(0); + } else if (mBook.getHisttoryChapterNum() >= mChapters.size()) { + mBook.setHisttoryChapterNum(mChapters.size() - 1); + } + if ("本地书籍".equals(mBook.getType())) { + mHandler.sendMessage(mHandler.obtainMessage(1)); + return; + } + if (hasChangeSource) { + mBookService.matchHistoryChapterPos(mBook, mChapters); + } + getChapterContent(mChapters.get(mBook.getHisttoryChapterNum()), new ResultCallback() { + @Override + public void onFinish(Object o, int code) { +// mChapters.get(mBook.getHisttoryChapterNum()).setContent((String) o); + mChapterService.saveOrUpdateChapter(mChapters.get(mBook.getHisttoryChapterNum()), (String) o); + mHandler.sendMessage(mHandler.obtainMessage(1)); +// getAllChapterData(); + } + + @Override + public void onError(Exception e) { + mHandler.sendMessage(mHandler.obtainMessage(1)); + } + }); + initMenu(); + } + } + + + /** + * 跳转到指定章节的指定页面 + * + * @param chapterPos + * @param pagePos + */ + private void skipToChapterAndPage(final int chapterPos, final int pagePos) { + isPrev = false; + if (StringHelper.isEmpty(mChapters.get(chapterPos).getContent())) { + if ("本地书籍".equals(mBook.getType())) { + ToastUtils.showWarring("该章节无内容!"); + return; + } + pbLoading.setVisibility(View.VISIBLE); + getChapterContent(mChapters.get(chapterPos), new ResultCallback() { + @Override + public void onFinish(Object o, int code) { + mChapterService.saveOrUpdateChapter(mChapters.get(chapterPos), (String) o); + mHandler.sendMessage(mHandler.obtainMessage(2, chapterPos, pagePos)); + } + + @Override + public void onError(Exception e) { + mHandler.sendMessage(mHandler.obtainMessage(2, chapterPos, pagePos)); + mHandler.sendEmptyMessage(10); + } + }); + } else { + mHandler.sendMessage(mHandler.obtainMessage(2, chapterPos, pagePos)); + } + } + + /** + * 获取章节内容 + * + * @param chapter + * @param resultCallback + */ + private void getChapterContent(final Chapter chapter, ResultCallback resultCallback) { + if (StringHelper.isEmpty(chapter.getBookId())) { + chapter.setId(mBook.getId()); + } + if (!StringHelper.isEmpty(chapter.getContent())) { + if (resultCallback != null) { + resultCallback.onFinish(mChapterService.getChapterCatheContent(chapter), 0); + } + } else { + if ("本地书籍".equals(mBook.getType())) { + return; + } + if (resultCallback != null) { + CommonApi.getChapterContent(chapter.getUrl(), mReadCrawler, resultCallback); + } else { + CommonApi.getChapterContent(chapter.getUrl(), mReadCrawler, new ResultCallback() { + @Override + public void onFinish(final Object o, int code) { +// chapter.setContent((String) o); + mChapterService.saveOrUpdateChapter(chapter, (String) o); + } + + @Override + public void onError(Exception e) { + + } + + }); + } + } + } + + /** + * 预加载下一章 + */ + private void preLoad(int position) { + if (position + 1 < mChapters.size()) { + Chapter chapter = mChapters.get(position + 1); + if (StringHelper.isEmpty(chapter.getContent())) { + mPageLoader.getChapterContent(chapter); + } + } + } + + /** + * 预加载上一章 + * + * @param position + */ + private void lastLoad(int position) { + if (position > 0) { + Chapter chapter = mChapters.get(position - 1); + if (StringHelper.isEmpty(chapter.getContent())) { + mPageLoader.getChapterContent(chapter); + } + } + } + + /** + * 保存最后阅读章节的进度 + */ + public void saveLastChapterReadPosition() { + if (!StringHelper.isEmpty(mBook.getId()) && mPageLoader.getPageStatus() == PageLoader.STATUS_FINISH) { + mBook.setLastReadPosition(mPageLoader.getPagePos()); + mBook.setHisttoryChapterNum(mPageLoader.getChapterPos()); + mBookService.updateEntity(mBook); + } + } + /********************菜单相关*************************/ + /** + * 初始化顶部菜单 + */ + private void initTopMenu() { + if (Build.VERSION.SDK_INT >= 19) { + readAblTopMenu.setPadding(0, ImmersionBar.getStatusBarHeight(this), 0, 0); + } + } + + /** + * 初始化底部菜单 + */ + private void initBottomMenu() { + //判断是否全屏 + //if (mSetting.getHideStatusBar()) { + if (!mSetting.isDayStyle()) { + readTvNightMode.setText("白天"); + Drawable drawable = ContextCompat.getDrawable(this, R.mipmap.z4); + readTvNightMode.setCompoundDrawablesWithIntrinsicBounds(null, drawable, null, null); + } + if (true) { + //还需要设置mBottomMenu的底部高度 + ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) readLlBottomMenu.getLayoutParams(); + params.bottomMargin = ImmersionBar.getNavigationBarHeight(this); + readLlBottomMenu.setLayoutParams(params); + } else { + //设置mBottomMenu的底部距离 + ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) readLlBottomMenu.getLayoutParams(); + params.bottomMargin = 0; + readLlBottomMenu.setLayoutParams(params); + } + } + + /** + * 隐藏阅读界面的菜单显示 + * + * @return 是否隐藏成功 + */ + private boolean hideReadMenu() { + hideSystemBar(); + if (readAblTopMenu.getVisibility() == VISIBLE) { + toggleMenu(true); + return true; + } else if (mSettingDialog.isShowing()) { + mSettingDialog.dismiss(); + return true; + } + return false; + } + + /** + * 切换菜单栏的可视状态 + * 默认是隐藏的 + */ + private void toggleMenu(boolean hideStatusBar) { + initMenuAnim(); + if (readAblTopMenu.getVisibility() == View.VISIBLE) { + //关闭 + readAblTopMenu.startAnimation(mTopOutAnim); + readLlBottomMenu.startAnimation(mBottomOutAnim); + readAblTopMenu.setVisibility(GONE); + readLlBottomMenu.setVisibility(GONE); + readTvPageTip.setVisibility(GONE); + if (hideStatusBar) { + hideSystemBar(); + } + } else { + readTvPageTip.setVisibility(VISIBLE); + readAblTopMenu.setVisibility(View.VISIBLE); + readLlBottomMenu.setVisibility(View.VISIBLE); + readAblTopMenu.startAnimation(mTopInAnim); + readLlBottomMenu.startAnimation(mBottomInAnim); + showSystemBar(); + } + } + + //初始化菜单动画 + private void initMenuAnim() { + if (mTopInAnim != null) return; + mTopInAnim = AnimationUtils.loadAnimation(this, R.anim.slide_top_in); + mTopOutAnim = AnimationUtils.loadAnimation(this, R.anim.slide_top_out); + mBottomInAnim = AnimationUtils.loadAnimation(this, R.anim.slide_bottom_in); + mBottomOutAnim = AnimationUtils.loadAnimation(this, R.anim.slide_bottom_out); + } + + private void showSystemBar() { + //显示 + SystemBarUtils.showUnStableStatusBar(this); + SystemBarUtils.showUnStableNavBar(this); + } + + private void hideSystemBar() { + //隐藏 + SystemBarUtils.hideStableStatusBar(this); + SystemBarUtils.hideStableNavBar(this); + } + + /******************设置相关*****************/ + + + /** + * 创建详细设置视图 + */ + private void createSettingDetailView() { + mSettingDialog = DialogCreator.createReadDetailSetting(this, mSetting, + this::changeStyle, v -> reduceTextSize(), v -> increaseTextSize(), v -> { + if (mSetting.isVolumeTurnPage()) { + mSetting.setVolumeTurnPage(false); + ToastUtils.showSuccess("音量键翻页已关闭!"); + } else { + mSetting.setVolumeTurnPage(true); + ToastUtils.showSuccess("音量键翻页已开启!"); + } + SysManager.saveSetting(mSetting); + }, v -> { + Intent intent = new Intent(this, FontsActivity.class); + startActivityForResult(intent, APPCONST.REQUEST_FONT); + mSettingDialog.dismiss(); + }, this::showPageModeDialog, v -> { + if (mSetting.getPageMode() == PageMode.SCROLL) { + ToastUtils.showWarring("滚动暂时不支持自动翻页"); + return; + } + mSettingDialog.dismiss(); + autoPage = !autoPage; + autoPage(); + }, v -> { + Intent intent = new Intent(this, MoreSettingActivity.class); + startActivityForResult(intent, APPCONST.REQUEST_RESET_SCREEN_TIME); + mSettingDialog.dismiss(); + }); + } + + private void showPageModeDialog(final TextView tvPageMode) { + if (mPageModeDialog != null) { + mPageModeDialog.show(); + } else { + //显示翻页模式视图 + int checkedItem; + switch (mSetting.getPageMode()) { + case COVER: + checkedItem = 0; + break; + case SIMULATION: + checkedItem = 1; + break; + case SLIDE: + checkedItem = 2; + break; + case SCROLL: + checkedItem = 3; + break; + case NONE: + checkedItem = 4; + break; + default: + checkedItem = 0; + } + mPageModeDialog = MyAlertDialog.build(this) + .setTitle("翻页模式") + .setSingleChoiceItems(pageMode, checkedItem, (dialog, which) -> { + switch (which) { + case 0: + mSetting.setPageMode(PageMode.COVER); + break; + case 1: + mSetting.setPageMode(PageMode.SIMULATION); + break; + case 2: + mSetting.setPageMode(PageMode.SLIDE); + break; + case 3: + mSetting.setPageMode(PageMode.SCROLL); + break; + case 4: + mSetting.setPageMode(PageMode.NONE); + break; + } + mPageModeDialog.dismiss(); + SysManager.saveSetting(mSetting); + MyApplication.runOnUiThread(() -> mPageLoader.setPageMode(mSetting.getPageMode())); + tvPageMode.setText(pageMode[which]); + }).show(); + } + } + + /** + * 白天夜间改变 + */ + private void changeNightAndDaySetting(boolean isNight) { + mSetting.setDayStyle(!isNight); + SysManager.saveSetting(mSetting); + MyApplication.getApplication().setNightTheme(isNight); + //mPageLoader.setPageStyle(!isCurDayStyle); + } + + /** + * 缩小字体 + */ + private void reduceTextSize() { + if (mSetting.getReadWordSize() > 1) { + mSetting.setReadWordSize(mSetting.getReadWordSize() - 1); + SysManager.saveSetting(mSetting); + mPageLoader.setTextSize((int) mSetting.getReadWordSize()); + } + } + + /** + * 增大字体 + */ + private void increaseTextSize() { + if (mSetting.getReadWordSize() < 41) { + mSetting.setReadWordSize(mSetting.getReadWordSize() + 1); + SysManager.saveSetting(mSetting); + mPageLoader.setTextSize((int) mSetting.getReadWordSize()); + } + } + + /** + * 改变阅读风格 + * + * @param readStyle + */ + private void changeStyle(ReadStyle readStyle) { + mSetting.setReadStyle(readStyle); + SysManager.saveSetting(mSetting); + if (!mSetting.isDayStyle()) { + DialogCreator.createCommonDialog(this, "提示", "是否希望切换为日间模式?", + false, "确定", "取消", (dialog, which) -> { + changeNightAndDaySetting(false); + }, null); + } + MyApplication.runOnUiThread(() -> mPageLoader.setPageStyle(true)); + } + + @OnClick({R.id.read_tv_setting, R.id.read_tv_pre_chapter + , R.id.read_tv_next_chapter, R.id.read_tv_night_mode}) + protected void onClick(View view) { + switch (view.getId()) { + case R.id.read_tv_setting: //设置 + toggleMenu(true); + mSettingDialog.show(); + break; + case R.id.read_tv_pre_chapter: //前一章 + mPageLoader.skipPreChapter(); + break; + case R.id.read_tv_next_chapter: //后一章 + mPageLoader.skipNextChapter(); + break; + case R.id.read_tv_night_mode: //夜间模式 + changeNightAndDaySetting(mSetting.isDayStyle()); + break; + } + } + + /** + * 跳转到目录 + */ + @OnClick(R.id.read_tv_category) + protected void goToCatalog() { + //切换菜单 + toggleMenu(true); + //跳转 + Intent intent = new Intent(this, CatalogActivity.class); + intent.putExtra(APPCONST.BOOK, mBook); + this.startActivityForResult(intent, APPCONST.REQUEST_CHAPTER_PAGE); + } + + @OnClick(R.id.ll_chapter_view) + protected void gotoUrl() { + if (mChapters != null && mChapters.size() != 0) { + Chapter curChapter = mChapters.get(mPageLoader.getChapterPos()); + String url = curChapter.getUrl(); + if (!"本地书籍".equals(mBook.getType()) && !StringHelper.isEmpty(url)) { + Intent intent = new Intent(Intent.ACTION_VIEW); + Uri uri = Uri.parse(url); + intent.setData(uri); + startActivity(intent); + } + } + } + + @OnClick(R.id.read_tv_download) + protected void download() { + if (!isCollected) { + addBookToCaseAndDownload(readTvDownload); + } else { + downloadBook(readTvDownload); + } + } + /****************息屏相关*****************/ + /** + * 取消亮屏保持 + */ + private void unKeepScreenOn() { + keepScreenOn(false); + } + + /** + * @param keepScreenOn 是否保持亮屏 + */ + public void keepScreenOn(boolean keepScreenOn) { + if (keepScreenOn) { + getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + } else { + getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + } + } + + /** + * 重置黑屏时间 + */ + private void screenOffTimerStart() { + if (screenTimeOut <= 0) { + keepScreenOn(true); + return; + } + int screenOffTime = screenTimeOut * 1000 - ScreenHelper.getScreenOffTime(this); + if (screenOffTime > 0) { + mHandler.removeCallbacks(keepScreenRunnable); + keepScreenOn(true); + mHandler.postDelayed(keepScreenRunnable, screenOffTime); + } else { + keepScreenOn(false); + } + } + + /***************************缓存相关***************************/ + private int selectedIndex;//对话框选择下标 + + protected void downloadBook(final TextView tvDownloadProgress) { + if ("本地书籍".equals(mBook.getType())) { + ToastUtils.showWarring("《" + mBook.getName() + "》是本地书籍,不能缓存"); + return; + } + if (!NetworkUtils.isNetWorkAvailable()) { + ToastUtils.showWarring("无网络连接!"); + return; + } + MyApplication.runOnUiThread(() -> { + MyAlertDialog.build(this) + .setTitle("缓存书籍") + .setSingleChoiceItems(APPCONST.DIALOG_DOWNLOAD, selectedIndex, (dialog, which) -> selectedIndex = which).setNegativeButton("取消", ((dialog, which) -> dialog.dismiss())).setPositiveButton("确定", + (dialog, which) -> { + switch (selectedIndex) { + case 0: + addDownload(tvDownloadProgress, mPageLoader.getChapterPos(), mPageLoader.getChapterPos() + 50); + break; + case 1: + addDownload(tvDownloadProgress, mPageLoader.getChapterPos() - 50, mPageLoader.getChapterPos() + 50); + break; + case 2: + addDownload(tvDownloadProgress, mPageLoader.getChapterPos(), mChapters.size()); + break; + case 3: + addDownload(tvDownloadProgress, 0, mChapters.size()); + break; + } + }).show(); + }); + } + + private void addDownload(final TextView tvDownloadProgress, int begin, int end) { + /*//取消之前下载 + if (!isStopDownload) { + isStopDownload = true; + try { + Thread.sleep(200); + } catch (InterruptedException e) { + e.printStackTrace(); + } + }*/ + if (SysManager.getSetting().getCatheGap() != 0) { + downloadInterval = SysManager.getSetting().getCatheGap(); + } + //计算断点章节 + final int finalBegin = Math.max(0, begin); + final int finalEnd = Math.min(end, mChapters.size()); + needCacheChapterNum = finalEnd - finalBegin; + curCacheChapterNum = 0; + isStopDownload = false; + ArrayList needDownloadChapters = new ArrayList<>(); + for (int i = finalBegin; i < finalEnd; i++) { + final Chapter chapter = mChapters.get(i); + if (StringHelper.isEmpty(chapter.getContent())) { + needDownloadChapters.add(chapter); + } + } + needCacheChapterNum = needDownloadChapters.size(); + if (needCacheChapterNum > 0) { + mHandler.sendEmptyMessage(9); + mHandler.postDelayed(sendDownloadNotification, 2 * downloadInterval); + } + MyApplication.getApplication().newThread(() -> { + for (Chapter chapter : needDownloadChapters) { + getChapterContent(chapter, new ResultCallback() { + @Override + public void onFinish(Object o, int code) { + downloadingChapter = chapter.getTitle(); + mChapterService.saveOrUpdateChapter(chapter, (String) o); + curCacheChapterNum++; + mHandler.sendMessage(mHandler.obtainMessage(3, tvDownloadProgress)); + } + + @Override + public void onError(Exception e) { + curCacheChapterNum++; + mHandler.sendMessage(mHandler.obtainMessage(3, tvDownloadProgress)); + } + }); + try { + Thread.sleep(downloadInterval); + } catch (InterruptedException e) { + e.printStackTrace(); + } + if (isStopDownload) { + break; + } + } + if (curCacheChapterNum == needCacheChapterNum) { + ToastUtils.showInfo("《" + mBook.getName() + "》" + getString(R.string.download_already_all_tips)); + } + }); + } + + + private void updateDownloadProgress(TextView tvDownloadProgress) { + try { + tvDownloadProgress.setText(curCacheChapterNum * 100 / needCacheChapterNum + " %"); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * 发送通知 + */ + private void sendNotification() { + if (curCacheChapterNum == needCacheChapterNum) { + notificationUtil.cancel(1001); + return; + } else { + Notification notification = notificationUtil.build(APPCONST.channelIdDownload) + .setSmallIcon(R.drawable.ic_download) + //通知栏大图标 + .setLargeIcon(BitmapFactory.decodeResource(MyApplication.getApplication().getResources(), R.mipmap.ic_launcher)) + .setOngoing(true) + //点击通知后自动清除 + .setAutoCancel(true) + .setContentTitle("正在下载:" + mBook.getName() + + "[" + curCacheChapterNum + "/" + needCacheChapterNum + "]") + .setContentText(downloadingChapter == null ? " " : downloadingChapter) + .addAction(R.drawable.ic_stop_black_24dp, "停止", + notificationUtil.getChancelPendingIntent(cancelDownloadReceiver.class)) + .build(); + notificationUtil.notify(1001, notification); + } + if (tempCacheChapterNum < curCacheChapterNum) { + tempCount = 1500 / downloadInterval; + tempCacheChapterNum = curCacheChapterNum; + } else if (tempCacheChapterNum == curCacheChapterNum) { + tempCount--; + if (tempCount == 0) { + notificationUtil.cancel(1001); + return; + } + } + mHandler.postDelayed(sendDownloadNotification, 2 * downloadInterval); + } + + public static class cancelDownloadReceiver extends BroadcastReceiver { + @Override + public void onReceive(Context context, Intent intent) { + //todo 跳转之前要处理的逻辑 + if (NotificationClickReceiver.CANCEL_ACTION.equals(intent.getAction())) { + isStopDownload = true; + } + } + } + + + /*******************************自动翻页相关************************************/ + /** + * 自动翻页 + */ + private void autoPage() { + mHandler.removeCallbacks(upHpbNextPage); + mHandler.removeCallbacks(autoPageRunnable); + if (autoPage) { + pbNextPage.setVisibility(View.VISIBLE); + //每页按字数计算一次时间 + nextPageTime = mPageLoader.curPageLength() * 60 * 1000 / mSetting.getAutoScrollSpeed(); + if (0 == nextPageTime) nextPageTime = 1000; + pbNextPage.setMax(nextPageTime); + mHandler.postDelayed(autoPageRunnable, nextPageTime); + nextPageTime = nextPageTime - upHpbInterval * 10; + mHandler.postDelayed(upHpbNextPage, upHpbInterval); + } else { + pbNextPage.setVisibility(View.INVISIBLE); + } + } + + /** + * 更新自动翻页进度条 + */ + private void upHpbNextPage() { + nextPageTime = nextPageTime - upHpbInterval; + if (nextPageTime >= 0) { + pbNextPage.setProgress(nextPageTime); + } + mHandler.postDelayed(upHpbNextPage, upHpbInterval); + } + + /** + * 停止自动翻页 + */ + private void autoPageStop() { + autoPage = false; + autoPage(); } - public VerticalSeekBar getPbNextPage() { - return pbNextPage; + /** + * 下一页 + */ + private void nextPage() { + MyApplication.runOnUiThread(() -> { + screenOffTimerStart(); + if (mPageLoader != null) { + mPageLoader.skipToNextPage(); + } + autoPage(); + }); } } diff --git a/app/src/main/java/xyz/fycz/myreader/ui/activity/RegisterActivity.java b/app/src/main/java/xyz/fycz/myreader/ui/activity/RegisterActivity.java deleted file mode 100644 index 9d2965b..0000000 --- a/app/src/main/java/xyz/fycz/myreader/ui/activity/RegisterActivity.java +++ /dev/null @@ -1,271 +0,0 @@ -package xyz.fycz.myreader.ui.activity; - -import android.annotation.SuppressLint; -import android.app.ProgressDialog; -import android.graphics.Bitmap; -import android.os.Handler; -import android.os.Message; -import android.text.Editable; -import android.text.TextWatcher; -import android.text.method.LinkMovementMethod; -import android.view.View; -import android.widget.Button; -import android.widget.CheckBox; -import android.widget.ImageView; -import android.widget.TextView; -import androidx.appcompat.widget.Toolbar; -import butterknife.BindView; -import com.google.android.material.textfield.TextInputLayout; -import xyz.fycz.myreader.R; -import xyz.fycz.myreader.model.backup.UserService; -import xyz.fycz.myreader.base.BaseActivity2; -import xyz.fycz.myreader.webapi.callback.ResultCallback; -import xyz.fycz.myreader.ui.dialog.DialogCreator; -import xyz.fycz.myreader.util.CodeUtil; -import xyz.fycz.myreader.util.ToastUtils; -import xyz.fycz.myreader.util.utils.StringUtils; - -import java.util.HashMap; -import java.util.Map; - -/** - * @author fengyue - * @date 2020/9/18 22:37 - */ -public class RegisterActivity extends BaseActivity2 { - @BindView(R.id.et_username) - TextInputLayout etUsername; - @BindView(R.id.et_password) - TextInputLayout etPassword; - @BindView(R.id.et_rp_password) - TextInputLayout etRpPassword; - @BindView(R.id.et_captcha) - TextInputLayout etCaptcha; - @BindView(R.id.iv_captcha) - ImageView ivCaptcha; - @BindView(R.id.bt_register) - Button btRegister; - @BindView(R.id.tv_register_tip) - TextView tvRegisterTip; - @BindView(R.id.cb_agreement) - CheckBox cbAgreement; - @BindView(R.id.tv_agreement) - TextView tvAgreement; - private String code; - private String username = ""; - private String password = ""; - private String rpPassword = ""; - private String inputCode = ""; - - @SuppressLint("HandlerLeak") - private Handler mHandler = new Handler() { - @SuppressLint("HandlerLeak") - @Override - public void handleMessage(Message msg) { - switch (msg.what) { - case 1: - createCaptcha(); - break; - case 2: - showTip((String) msg.obj); - break; - case 3: - tvRegisterTip.setVisibility(View.GONE); - break; - } - } - }; - - - @Override - protected int getContentId() { - return R.layout.activity_register; - } - - @Override - protected void setUpToolbar(Toolbar toolbar) { - super.setUpToolbar(toolbar); - setStatusBarColor(R.color.colorPrimary, true); - getSupportActionBar().setTitle("注册"); - } - - @Override - protected void initWidget() { - super.initWidget(); - mHandler.sendMessage(mHandler.obtainMessage(1)); - etUsername.requestFocus(); - etUsername.getEditText().addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - StringUtils.isNotChinese(s); - username = s.toString(); - if (username.length() < 6 || username.length() >14){ - mHandler.sendMessage(mHandler.obtainMessage(2, "用户名必须在6-14位之间")); - } else if(!username.substring(0, 1).matches("^[A-Za-z]$")){ - mHandler.sendMessage(mHandler.obtainMessage(2, - "用户名只能以字母开头")); - }else if(!username.matches("^[A-Za-z0-9-_]+$")){ - mHandler.sendMessage(mHandler.obtainMessage(2, - "用户名只能由数字、字母、下划线、减号组成")); - }else { - mHandler.sendMessage(mHandler.obtainMessage(3)); - } - checkNotNone(); - } - }); - - etPassword.getEditText().addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - password = s.toString(); - if (password.length() < 8 || password.length() > 16){ - mHandler.sendMessage(mHandler.obtainMessage(2, "密码必须在8-16位之间")); - } else if(password.matches("^\\d+$")){ - mHandler.sendMessage(mHandler.obtainMessage(2, "密码不能是纯数字")); - } else { - mHandler.sendMessage(mHandler.obtainMessage(3)); - } - checkNotNone(); - } - }); - - etRpPassword.getEditText().addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - rpPassword = s.toString(); - if (!rpPassword.equals(password)){ - mHandler.sendMessage(mHandler.obtainMessage(2, "两次输入的密码不一致")); - } else { - mHandler.sendMessage(mHandler.obtainMessage(3)); - } - checkNotNone(); - } - }); - - etCaptcha.getEditText().addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - inputCode = s.toString().trim().toLowerCase(); - if (!inputCode.equals(code.toLowerCase())){ - mHandler.sendMessage(mHandler.obtainMessage(2, "验证码错误")); - } else { - mHandler.sendMessage(mHandler.obtainMessage(3)); - } - checkNotNone(); - } - }); - - tvAgreement.setMovementMethod(LinkMovementMethod.getInstance()); - - } - - @Override - protected void initClick() { - super.initClick(); - ivCaptcha.setOnClickListener(v -> mHandler.sendMessage(mHandler.obtainMessage(1))); - - btRegister.setOnClickListener(v -> { - if (!username.matches("^[A-Za-z][A-Za-z0-9]{5,13}$")){ - DialogCreator.createTipDialog(this, "用户名格式错误", - "用户名必须在6-14位之间\n用户名只能以字母开头\n用户名只能由数字、字母、下划线、减号组成"); - }else if(password.matches("^\\d+$") || !password.matches("^.{8,16}$")){ - DialogCreator.createTipDialog(this, "密码格式错误", - "密码必须在8-16位之间\n密码不能是纯数字"); - }else if(!password.equals(rpPassword)){ - DialogCreator.createTipDialog(this, "重复密码错误", - "两次输入的密码不一致"); - }else if(!inputCode.trim().toLowerCase().equals(code.toLowerCase())){ - DialogCreator.createTipDialog(this, "验证码错误"); - }else if(!cbAgreement.isChecked()){ - DialogCreator.createTipDialog(this, "请勾选同意《用户服务协议》"); - }else { - ProgressDialog dialog = DialogCreator.createProgressDialog(this, null, "正在注册..."); - Map userRegisterInfo = new HashMap<>(); - userRegisterInfo.put("username", username); - userRegisterInfo.put("password", password); - UserService.register(userRegisterInfo, new ResultCallback() { - @Override - public void onFinish(Object o, int code) { - String[] info = ((String) o).split(":"); - int result = Integer.parseInt(info[0].trim()); - if (result == 101){ - UserService.writeUsername(username); - ToastUtils.showSuccess(info[1]); - finish(); - }else { - ToastUtils.showWarring(info[1]); - } - dialog.dismiss(); - } - @Override - public void onError(Exception e) { - ToastUtils.showError("注册失败:\n" + e.getLocalizedMessage()); - dialog.dismiss(); - } - }); - } - mHandler.sendMessage(mHandler.obtainMessage(1)); - }); - - } - - public void createCaptcha() { - code = CodeUtil.getInstance().createCode(); - Bitmap codeBitmap = CodeUtil.getInstance().createBitmap(code); - ivCaptcha.setImageBitmap(codeBitmap); - } - - public void showTip(String tip) { - tvRegisterTip.setVisibility(View.VISIBLE); - tvRegisterTip.setText(tip); - } - - public void checkNotNone(){ - if ("".equals(username) || "".equals(password) || "".equals(rpPassword) || "".equals(inputCode)){ - btRegister.setEnabled(false); - }else { - btRegister.setEnabled(true); - } - } - -} diff --git a/app/src/main/java/xyz/fycz/myreader/ui/activity/SearchBookActivity.java b/app/src/main/java/xyz/fycz/myreader/ui/activity/SearchBookActivity.java index f0de8e5..603a760 100644 --- a/app/src/main/java/xyz/fycz/myreader/ui/activity/SearchBookActivity.java +++ b/app/src/main/java/xyz/fycz/myreader/ui/activity/SearchBookActivity.java @@ -22,7 +22,7 @@ import com.scwang.smartrefresh.layout.SmartRefreshLayout; import me.gujun.android.taggroup.TagGroup; import xyz.fycz.myreader.R; import xyz.fycz.myreader.application.MyApplication; -import xyz.fycz.myreader.base.BaseActivity2; +import xyz.fycz.myreader.base.BaseActivity; import xyz.fycz.myreader.webapi.callback.ResultCallback; import xyz.fycz.myreader.common.APPCONST; import xyz.fycz.myreader.model.SearchEngine; @@ -44,14 +44,13 @@ import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; import java.util.List; /** * @author fengyue * @date 2020/9/18 21:58 */ -public class SearchBookActivity extends BaseActivity2 { +public class SearchBookActivity extends BaseActivity { @BindView(R.id.et_search_key) EditText etSearchKey; @BindView(R.id.tv_search_conform) diff --git a/app/src/main/java/xyz/fycz/myreader/ui/activity/WebDavSettingActivity.java b/app/src/main/java/xyz/fycz/myreader/ui/activity/WebDavSettingActivity.java index fa4ebb8..ec0e659 100644 --- a/app/src/main/java/xyz/fycz/myreader/ui/activity/WebDavSettingActivity.java +++ b/app/src/main/java/xyz/fycz/myreader/ui/activity/WebDavSettingActivity.java @@ -2,8 +2,11 @@ package xyz.fycz.myreader.ui.activity; import android.os.Bundle; import android.text.InputType; +import android.view.Menu; +import android.view.MenuItem; import android.widget.LinearLayout; import android.widget.TextView; +import androidx.annotation.NonNull; import androidx.appcompat.widget.Toolbar; import butterknife.BindView; import io.reactivex.Single; @@ -11,11 +14,12 @@ import io.reactivex.SingleOnSubscribe; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.schedulers.Schedulers; import xyz.fycz.myreader.R; -import xyz.fycz.myreader.base.BaseActivity2; +import xyz.fycz.myreader.base.BaseActivity; import xyz.fycz.myreader.base.observer.MySingleObserver; import xyz.fycz.myreader.common.APPCONST; import xyz.fycz.myreader.model.storage.BackupRestoreUi; import xyz.fycz.myreader.model.storage.WebDavHelp; +import xyz.fycz.myreader.ui.dialog.DialogCreator; import xyz.fycz.myreader.ui.dialog.MyAlertDialog; import xyz.fycz.myreader.util.SharedPreUtils; import xyz.fycz.myreader.util.StringHelper; @@ -27,7 +31,7 @@ import java.util.ArrayList; * @author fengyue * @date 2020/10/4 20:44 */ -public class WebDavSettingActivity extends BaseActivity2 { +public class WebDavSettingActivity extends BaseActivity { @BindView(R.id.webdav_setting_webdav_url) LinearLayout llWebdavUrl; @BindView(R.id.tv_webdav_url) @@ -128,4 +132,20 @@ public class WebDavSettingActivity extends BaseActivity2 { }); }); } + + + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + getMenuInflater().inflate(R.menu.webdav_help, menu); + return true; + } + + @Override + public boolean onOptionsItemSelected(@NonNull MenuItem item) { + if (item.getItemId() == R.id.action_tip){ + DialogCreator.createAssetTipDialog(this, "如何使用WebDav进行云备份?", "webdavhelp.fy"); + } + return super.onOptionsItemSelected(item); + } } diff --git a/app/src/main/java/xyz/fycz/myreader/ui/adapter/BookcaseDetailedAdapter.java b/app/src/main/java/xyz/fycz/myreader/ui/adapter/BookcaseDetailedAdapter.java index eaeece1..0e47e0a 100644 --- a/app/src/main/java/xyz/fycz/myreader/ui/adapter/BookcaseDetailedAdapter.java +++ b/app/src/main/java/xyz/fycz/myreader/ui/adapter/BookcaseDetailedAdapter.java @@ -10,21 +10,17 @@ import android.widget.TextView; import androidx.appcompat.app.AlertDialog; -import com.bumptech.glide.Glide; -import com.bumptech.glide.load.resource.bitmap.RoundedCorners; -import com.bumptech.glide.request.RequestOptions; - import java.io.IOException; import java.util.ArrayList; import xyz.fycz.myreader.R; import xyz.fycz.myreader.application.MyApplication; import xyz.fycz.myreader.common.APPCONST; +import xyz.fycz.myreader.ui.activity.ReadActivity; import xyz.fycz.myreader.ui.dialog.DialogCreator; import xyz.fycz.myreader.ui.dialog.MyAlertDialog; import xyz.fycz.myreader.greendao.entity.Book; import xyz.fycz.myreader.ui.activity.BookDetailedActivity; -import xyz.fycz.myreader.ui.activity.ReadActivity; import xyz.fycz.myreader.ui.presenter.BookcasePresenter; import xyz.fycz.myreader.util.StringHelper; import xyz.fycz.myreader.util.ToastUtils; diff --git a/app/src/main/java/xyz/fycz/myreader/ui/adapter/BookcaseDragAdapter.java b/app/src/main/java/xyz/fycz/myreader/ui/adapter/BookcaseDragAdapter.java index 85051d9..225cbb6 100644 --- a/app/src/main/java/xyz/fycz/myreader/ui/adapter/BookcaseDragAdapter.java +++ b/app/src/main/java/xyz/fycz/myreader/ui/adapter/BookcaseDragAdapter.java @@ -8,21 +8,17 @@ import android.view.ViewGroup; import androidx.appcompat.app.AlertDialog; -import com.bumptech.glide.Glide; -import com.bumptech.glide.load.resource.bitmap.RoundedCorners; -import com.bumptech.glide.request.RequestOptions; - import java.io.IOException; import java.util.ArrayList; import xyz.fycz.myreader.R; import xyz.fycz.myreader.application.MyApplication; import xyz.fycz.myreader.common.APPCONST; +import xyz.fycz.myreader.ui.activity.ReadActivity; import xyz.fycz.myreader.ui.dialog.DialogCreator; import xyz.fycz.myreader.ui.dialog.MyAlertDialog; import xyz.fycz.myreader.greendao.entity.Book; import xyz.fycz.myreader.ui.activity.BookDetailedActivity; -import xyz.fycz.myreader.ui.activity.ReadActivity; import xyz.fycz.myreader.ui.presenter.BookcasePresenter; import xyz.fycz.myreader.util.StringHelper; import xyz.fycz.myreader.util.ToastUtils; diff --git a/app/src/main/java/xyz/fycz/myreader/ui/dialog/CopyContentDialog.java b/app/src/main/java/xyz/fycz/myreader/ui/dialog/CopyContentDialog.java new file mode 100644 index 0000000..d1f0299 --- /dev/null +++ b/app/src/main/java/xyz/fycz/myreader/ui/dialog/CopyContentDialog.java @@ -0,0 +1,62 @@ +package xyz.fycz.myreader.ui.dialog; + +import android.app.Dialog; +import android.content.Context; +import android.os.Bundle; +import android.view.Gravity; +import android.view.Window; +import android.view.WindowManager; +import android.widget.TextView; +import androidx.annotation.NonNull; +import butterknife.BindView; +import butterknife.ButterKnife; +import xyz.fycz.myreader.R; + +/** + * Created by Zhouas666 on 2019-04-14 + * Github: https://github.com/zas023 + *

+ * 自由复制dialog + */ + +public class CopyContentDialog extends Dialog { + + private static final String TAG = "CopyContentDialog"; + + @BindView(R.id.dialog_tv_content) + TextView dialogTvContent; + + private String content; + + /***************************************************************************/ + + public CopyContentDialog(@NonNull Context context, String content) { + super(context); + this.content = content; + } + + /*****************************Initialization********************************/ + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.dialog_copy_content); + ButterKnife.bind(this); + + setUpWindow(); + + dialogTvContent.setText(content); + } + + /** + * 设置Dialog显示的位置 + */ + private void setUpWindow() { + Window window = getWindow(); + WindowManager.LayoutParams lp = window.getAttributes(); + lp.width = WindowManager.LayoutParams.MATCH_PARENT; + lp.height = WindowManager.LayoutParams.WRAP_CONTENT; + lp.gravity = Gravity.CENTER; + window.setAttributes(lp); + } + +} diff --git a/app/src/main/java/xyz/fycz/myreader/ui/dialog/DialogCreator.java b/app/src/main/java/xyz/fycz/myreader/ui/dialog/DialogCreator.java index efab472..5b00cc6 100644 --- a/app/src/main/java/xyz/fycz/myreader/ui/dialog/DialogCreator.java +++ b/app/src/main/java/xyz/fycz/myreader/ui/dialog/DialogCreator.java @@ -1,5 +1,6 @@ package xyz.fycz.myreader.ui.dialog; +import android.annotation.SuppressLint; import android.app.Dialog; import android.app.ProgressDialog; import android.content.Context; @@ -72,9 +73,11 @@ public class DialogCreator { dialog.setContentView(view); dialog.setCancelable(true); dialog.setCanceledOnTouchOutside(true); + //触摸外部关闭 view.findViewById(R.id.ll_bottom_view).setOnClickListener(null); view.setOnTouchListener(new View.OnTouchListener() { + @SuppressLint("ClickableViewAccessibility") @Override public boolean onTouch(View view, MotionEvent motionEvent) { dialog.dismiss(); @@ -84,7 +87,7 @@ public class DialogCreator { //设置全屏 Window window = dialog.getWindow(); window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); - + window.setWindowAnimations(R.style.dialogWindowAnim); //阅读背景风格 final ImageView ivCommonStyle = (ImageView) view.findViewById(R.id.iv_common_style); final ImageView ivLeatherStyle = (ImageView) view.findViewById(R.id.iv_leather_style); @@ -306,168 +309,6 @@ public class DialogCreator { } } - - /** - * 阅读设置对话框 - * - * @param context - * @param isDayStyle - * @param chapterProgress - * @param backListener - * @param lastChapterListener - * @param nextChapterListener - * @param chapterListListener - * @param onClickNightAndDayListener - * @param settingListener - * @return - */ - public static Dialog createReadSetting(final Context context, final boolean isDayStyle, int chapterProgress, int maxProcess, final Book mBook, Chapter mChapter, - View.OnClickListener backListener, - View.OnClickListener changeSourceListener, - View.OnClickListener refreshListener, - View.OnClickListener bookMarkListener, - final OnSkipChapterListener lastChapterListener, - final OnSkipChapterListener nextChapterListener, - View.OnClickListener chapterListListener, - final OnClickNightAndDayListener onClickNightAndDayListener, - View.OnClickListener settingListener, - SeekBar.OnSeekBarChangeListener onSeekBarChangeListener, - View.OnClickListener voiceOnClickListener, - final OnClickDownloadAllChapterListener onClickDownloadAllChapterListener) { - final Dialog dialog = new Dialog(context, R.style.jmui_default_dialog_style); - final View view = LayoutInflater.from(context).inflate(R.layout.dialog_read_setting, null); - dialog.setContentView(view); - - LinearLayout llBack = (LinearLayout) view.findViewById(R.id.ll_title_back); - LinearLayout llBook = view.findViewById(R.id.ll_book_name); - TextView tvBookName = view.findViewById(R.id.tv_book_name_top); - ImageView ivChangeSource = view.findViewById(R.id.iv_change_source); - ImageView ivRefresh = view.findViewById(R.id.iv_refresh); - ImageView ivBookMark = view.findViewById(R.id.iv_book_mark); - ImageView ivMore = view.findViewById(R.id.iv_more); - LinearLayout llChapter = view.findViewById(R.id.ll_chapter_view); - final TextView tvChapterTitle = view.findViewById(R.id.tv_chapter_title_top); - final TextView tvChapterUrl = view.findViewById(R.id.tv_chapter_url); - TextView tvLastChapter = (TextView) view.findViewById(R.id.tv_last_chapter); - TextView tvNextChapter = (TextView) view.findViewById(R.id.tv_next_chapter); - final SeekBar sbChapterProgress = (SeekBar) view.findViewById(R.id.sb_read_chapter_progress); - LinearLayout llChapterList = (LinearLayout) view.findViewById(R.id.ll_chapter_list); - LinearLayout llNightAndDay = (LinearLayout) view.findViewById(R.id.ll_night_and_day); - LinearLayout llSetting = (LinearLayout) view.findViewById(R.id.ll_setting); - final ImageView ivNightAndDay = (ImageView) view.findViewById(R.id.iv_night_and_day); - final TextView tvNightAndDay = (TextView) view.findViewById(R.id.tv_night_and_day); - ImageView ivVoice = (ImageView)view.findViewById(R.id.iv_voice_read); - - view.findViewById(R.id.rl_title_view).setOnClickListener(null); - view.findViewById(R.id.ll_bottom_view).setOnClickListener(null); - - Window window = dialog.getWindow(); - window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); - if (Build.VERSION.SDK_INT >= 21) { - window.setStatusBarColor(dialog.getContext().getColor(R.color.sys_dialog_setting_bg)); - } - - view.setOnTouchListener(new View.OnTouchListener() { - @Override - public boolean onTouch(View view, MotionEvent motionEvent) { - dialog.dismiss(); - return false; - } - }); - - tvBookName.setText(mBook.getName()); - llBook.setOnClickListener(v -> { - /*Intent intent = new Intent(context, BookDetailedActivity.class); - intent.putExtra(APPCONST.BOOK, mBook); - context.startActivity(intent);*/ - }); - if ("本地书籍".equals(mBook.getType())){ - ivChangeSource.setVisibility(View.GONE); - } - //换源 - ivChangeSource.setOnClickListener(changeSourceListener); - - //刷新 - ivRefresh.setOnClickListener(refreshListener); - String url = mChapter.getUrl(); - if ("null".equals(mBook.getSource()) || BookSource.fynovel.equals(mBook.getSource())) { - if (!url.contains("novel.fycz.xyz")) { - url = URLCONST.nameSpace_FY + url; - } - } - - //书签 - ivBookMark.setOnClickListener(bookMarkListener); - - tvChapterTitle.setText(mChapter.getTitle()); - tvChapterUrl.setText(StringHelper.isEmpty(url) ? mChapter.getId() : url); - //跳转对应章节 - llChapter.setOnClickListener(v -> { - String url1 = tvChapterUrl.getText().toString(); - if (!"本地书籍".equals(mBook.getType()) && !StringHelper.isEmpty(url1)) { - Intent intent = new Intent(Intent.ACTION_VIEW); - Uri uri = Uri.parse(url1); - intent.setData(uri); - context.startActivity(intent); - } - }); - - - if (!isDayStyle) { - ivNightAndDay.setImageResource(R.mipmap.z4); - tvNightAndDay.setText(context.getString(R.string.day)); - } - - llBack.setOnClickListener(backListener); - tvLastChapter.setOnClickListener(v -> { - if (lastChapterListener != null){ - lastChapterListener.onClick(tvChapterTitle, tvChapterUrl, sbChapterProgress); - } - }); - tvNextChapter.setOnClickListener(v -> { - if (nextChapterListener != null){ - nextChapterListener.onClick(tvChapterTitle, tvChapterUrl, sbChapterProgress); - } - }); - sbChapterProgress.setProgress(chapterProgress); - sbChapterProgress.setMax(maxProcess); - llChapterList.setOnClickListener(chapterListListener); - llSetting.setOnClickListener(settingListener); - sbChapterProgress.setOnSeekBarChangeListener(onSeekBarChangeListener); - ivVoice.setOnClickListener(voiceOnClickListener); - //日夜切换 - llNightAndDay.setOnClickListener(view1 -> { - boolean isDay; - if (tvNightAndDay.getText().toString().equals(context.getString(R.string.day))) { - isDay = false; - ivNightAndDay.setImageResource(R.mipmap.ao); - tvNightAndDay.setText(context.getString(R.string.night)); - } else { - isDay = true; - ivNightAndDay.setImageResource(R.mipmap.z4); - tvNightAndDay.setText(context.getString(R.string.day)); - } - if (onClickNightAndDayListener != null) { - onClickNightAndDayListener.onClick(dialog, view, isDay); - } - }); - - //缓存章节 - final TextView tvDownloadProgress = view.findViewById(R.id.tv_download_progress); - LinearLayout llDonwloadCache = view.findViewById(R.id.ll_download_cache); - llDonwloadCache.setOnClickListener(v -> { - if (onClickDownloadAllChapterListener != null){ - onClickDownloadAllChapterListener.onClick(dialog,v,tvDownloadProgress); - } - }); - - dialog.setCancelable(true); - dialog.setCanceledOnTouchOutside(true); - return dialog; - } - - - /** * 创建一个普通对话框(包含确定、取消按键) * @@ -702,7 +543,7 @@ public class DialogCreator { * 从assets文件夹之中读取文件并显示提示框 * @param mContext * @param title - * @param assetName + * @param assetName 需要后缀名 */ public static void createAssetTipDialog(Context mContext, String title, String assetName){ BufferedReader br = null; diff --git a/app/src/main/java/xyz/fycz/myreader/ui/fragment/MineFragment.java b/app/src/main/java/xyz/fycz/myreader/ui/fragment/MineFragment.java index 4404df8..a6ed8aa 100644 --- a/app/src/main/java/xyz/fycz/myreader/ui/fragment/MineFragment.java +++ b/app/src/main/java/xyz/fycz/myreader/ui/fragment/MineFragment.java @@ -8,65 +8,43 @@ import android.os.Message; import android.widget.RelativeLayout; import android.widget.TextView; import androidx.annotation.NonNull; -import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; import butterknife.BindView; import xyz.fycz.myreader.R; import xyz.fycz.myreader.application.MyApplication; import xyz.fycz.myreader.application.SysManager; -import xyz.fycz.myreader.model.backup.BackupAndRestore; -import xyz.fycz.myreader.model.backup.UserService; import xyz.fycz.myreader.base.BaseFragment; import xyz.fycz.myreader.common.APPCONST; import xyz.fycz.myreader.model.storage.Backup; import xyz.fycz.myreader.model.storage.Restore; -import xyz.fycz.myreader.ui.activity.MainActivity; import xyz.fycz.myreader.ui.dialog.DialogCreator; import xyz.fycz.myreader.ui.dialog.MyAlertDialog; import xyz.fycz.myreader.entity.Setting; import xyz.fycz.myreader.greendao.entity.Book; import xyz.fycz.myreader.greendao.service.BookService; import xyz.fycz.myreader.ui.activity.AboutActivity; -import xyz.fycz.myreader.ui.activity.LoginActivity; import xyz.fycz.myreader.ui.activity.MoreSettingActivity; import xyz.fycz.myreader.util.SharedPreUtils; import xyz.fycz.myreader.util.ToastUtils; -import xyz.fycz.myreader.util.utils.NetworkUtils; -import xyz.fycz.myreader.webapi.callback.ResultCallback; -import java.io.File; -import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Date; - -import static android.app.Activity.RESULT_OK; /** * @author fengyue * @date 2020/9/13 13:20 */ public class MineFragment extends BaseFragment { - @BindView(R.id.mine_rl_user) - RelativeLayout mRlUser; - @BindView(R.id.tv_user) - TextView mTvUser; @BindView(R.id.mine_rl_backup) RelativeLayout mRlBackup; - @BindView(R.id.mine_rl_syn) - RelativeLayout mRlSyn; @BindView(R.id.mine_rl_setting) RelativeLayout mRlSetting; @BindView(R.id.mine_rl_theme_mode) RelativeLayout mRlThemeMode; @BindView(R.id.tv_theme_mode_select) TextView tvThemeModeSelect; - @BindView(R.id.mine_rl_feedback) - RelativeLayout mRlFeedback; @BindView(R.id.mine_rl_about) RelativeLayout mRlAbout; - private boolean isLogin; - private BackupAndRestore mBackupAndRestore; private Setting mSetting; private String[] webSynMenu; private String[] backupMenu; @@ -79,7 +57,7 @@ public class MineFragment extends BaseFragment { public void handleMessage(@NonNull Message msg) { switch (msg.what) { case 1: - mTvUser.setText("登录/注册"); + break; case 2: backup(); @@ -102,8 +80,6 @@ public class MineFragment extends BaseFragment { @Override protected void initData(Bundle savedInstanceState) { super.initData(savedInstanceState); - isLogin = UserService.isLogin(); - mBackupAndRestore = new BackupAndRestore(); mSetting = SysManager.getSetting(); webSynMenu = new String[]{ MyApplication.getmContext().getString(R.string.menu_backup_webBackup), @@ -121,35 +97,12 @@ public class MineFragment extends BaseFragment { @Override protected void initWidget(Bundle savedInstanceState) { super.initWidget(savedInstanceState); - if (isLogin) { - mTvUser.setText(UserService.readUsername()); - } tvThemeModeSelect.setText(themeModeArr[themeMode]); } @Override protected void initClick() { super.initClick(); - mRlUser.setOnClickListener(v -> { - if (isLogin) { - DialogCreator.createCommonDialog(getActivity(), "退出登录", "确定要退出登录吗?" - , true, (dialog, which) -> { - File file = MyApplication.getApplication().getFileStreamPath("userConfig.fy"); - if (file.delete()) { - ToastUtils.showSuccess("退出成功"); - isLogin = false; - mHandler.sendEmptyMessage(1); - Intent intent = new Intent(getActivity(), LoginActivity.class); - getActivity().startActivityForResult(intent, APPCONST.REQUEST_LOGIN); - } else { - ToastUtils.showError("退出失败(Error:file.delete())"); - } - }, (dialog, which) -> dialog.dismiss()); - } else { - Intent intent = new Intent(getActivity(), LoginActivity.class); - getActivity().startActivityForResult(intent, APPCONST.REQUEST_LOGIN); - } - }); mRlBackup.setOnClickListener(v -> { AlertDialog bookDialog = MyAlertDialog.build(getContext()) .setTitle(getContext().getResources().getString(R.string.menu_bookcase_backup)) @@ -168,46 +121,6 @@ public class MineFragment extends BaseFragment { .create(); bookDialog.show(); }); - mRlSyn.setOnClickListener(v -> { - if (!UserService.isLogin()) { - ToastUtils.showWarring("请先登录!"); - Intent loginIntent = new Intent(getActivity(), LoginActivity.class); - getActivity().startActivityForResult(loginIntent, APPCONST.REQUEST_LOGIN); - return; - } - if (mSetting.isAutoSyn()) { - webSynMenu[2] = MyApplication.getmContext().getString(R.string.menu_backup_autoSyn) + "已开启"; - } else { - webSynMenu[2] = MyApplication.getmContext().getString(R.string.menu_backup_autoSyn) + "已关闭"; - } - MyAlertDialog.build(getContext()) - .setTitle(getActivity().getString(R.string.menu_bookcase_syn)) - .setItems(webSynMenu, (dialog, which) -> { - switch (which) { - case 0: - synBookcaseToWeb(false); - break; - case 1: - webRestore(); - break; - case 2: - String tip = ""; - if (mSetting.isAutoSyn()) { - mSetting.setAutoSyn(false); - tip = "每日自动同步已关闭!"; - } else { - mSetting.setAutoSyn(true); - tip = "每日自动同步已开启!"; - } - SysManager.saveSetting(mSetting); - ToastUtils.showSuccess(tip); - break; - } - }) - .setNegativeButton(null, null) - .setPositiveButton(null, null) - .show(); - }); mRlSetting.setOnClickListener(v -> { Intent settingIntent = new Intent(getActivity(), MoreSettingActivity.class); startActivity(settingIntent); @@ -256,20 +169,6 @@ public class MineFragment extends BaseFragment { startActivity(aboutIntent); }); - mRlFeedback.setOnClickListener(v -> { - DialogCreator.createCommonDialog(getContext(), "问题反馈", "请加入QQ群(1085028304)反馈问题!", true, - "加入QQ群", "取消", (dialog, which) -> { - if (!MyApplication.joinQQGroup(getContext(), "8PIOnHFuH6A38hgxvD_Rp2Bu-Ke1ToBn")) { - ClipboardManager mClipboardManager = (ClipboardManager) getActivity().getSystemService(Context.CLIPBOARD_SERVICE); - //数据 - ClipData mClipData = ClipData.newPlainText("Label", "1085028304"); - //把数据设置到剪切板上 - assert mClipboardManager != null; - mClipboardManager.setPrimaryClip(mClipData); - ToastUtils.showError("未安装手Q或安装的版本不支持!\n已复制QQ群号,您可自行前往QQ添加!"); - } - }, null); - }); } @Override @@ -342,112 +241,6 @@ public class MineFragment extends BaseFragment { }, (dialogInterface, i) -> dialogInterface.dismiss()); } - /** - * 同步书架 - */ - private void synBookcaseToWeb(boolean isAutoSyn) { - if (!NetworkUtils.isNetWorkAvailable()) { - if (!isAutoSyn) { - ToastUtils.showWarring("无网络连接!"); - } - return; - } - ArrayList mBooks = (ArrayList) BookService.getInstance().getAllBooks(); - if (mBooks.size() == 0) { - if (!isAutoSyn) { - ToastUtils.showWarring("当前书架无任何书籍,无法同步!"); - } - return; - } - Date nowTime = new Date(); - SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd"); - String nowTimeStr = sdf.format(nowTime); - SharedPreUtils spb = SharedPreUtils.getInstance(); - String synTime = spb.getString(getString(R.string.synTime)); - if (!nowTimeStr.equals(synTime) || !isAutoSyn) { - UserService.webBackup(new ResultCallback() { - @Override - public void onFinish(Object o, int code) { - if ((boolean) o) { - spb.putString(getString(R.string.synTime), nowTimeStr); - if (!isAutoSyn) { - DialogCreator.createTipDialog(getContext(), "成功将书架同步至网络!"); - } - } else { - if (!isAutoSyn) { - DialogCreator.createTipDialog(getContext(), "同步失败,请重试!"); - } - } - } - - @Override - public void onError(Exception e) { - if (!isAutoSyn) { - DialogCreator.createTipDialog(getContext(), "同步失败,请重试!\n" + e.getLocalizedMessage()); - } - } - }); - } - } - - /** - * 恢复 - */ - private void webRestore() { - if (!NetworkUtils.isNetWorkAvailable()) { - ToastUtils.showWarring("无网络连接!"); - return; - } - DialogCreator.createCommonDialog(getContext(), "确认同步吗?", "将书架从网络同步至本地会覆盖原有书架!", true, - (dialogInterface, i) -> { - dialogInterface.dismiss(); - MyApplication.getApplication().newThread(() -> { - /*if (UserService.webRestore()) { - mHandler.sendMessage(mHandler.obtainMessage(7)); -// DialogCreator.createTipDialog(mMainActivity, -// "恢复成功!\n注意:本功能属于实验功能,书架恢复后,书籍初次加载时可能加载失败,返回重新加载即可!");、 - mSetting = SysManager.getSetting(); - ToastUtils.showSuccess("成功将书架从网络同步至本地!"); - } else { - DialogCreator.createTipDialog(getContext(), "未找到同步文件,同步失败!"); - }*/ - UserService.webRestore(new ResultCallback() { - @Override - public void onFinish(Object o, int code) { - if ((boolean) o) { - mHandler.sendMessage(mHandler.obtainMessage(7)); -// DialogCreator.createTipDialog(mMainActivity, -// "恢复成功!\n注意:本功能属于实验功能,书架恢复后,书籍初次加载时可能加载失败,返回重新加载即可!");、 - mSetting = SysManager.getSetting(); - ToastUtils.showSuccess("成功将书架从网络同步至本地!"); - } else { - DialogCreator.createTipDialog(getContext(), "未找到同步文件,同步失败!"); - } - } - - @Override - public void onError(Exception e) { - DialogCreator.createTipDialog(getContext(), "未找到同步文件,同步失败!\n" + e.getLocalizedMessage()); - } - }); - }); - }, (dialogInterface, i) -> dialogInterface.dismiss()); - } - - @Override - public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - if (resultCode == RESULT_OK) { - switch (requestCode) { - case APPCONST.REQUEST_LOGIN: - assert data != null; - isLogin = data.getBooleanExtra("isLogin", false); - if (isLogin) { - mTvUser.setText(UserService.readUsername()); - } - break; - } - } - } public boolean isRecreate() { return unbinder == null; diff --git a/app/src/main/java/xyz/fycz/myreader/ui/presenter/BookcasePresenter.java b/app/src/main/java/xyz/fycz/myreader/ui/presenter/BookcasePresenter.java index fb3ae2e..d7402b3 100644 --- a/app/src/main/java/xyz/fycz/myreader/ui/presenter/BookcasePresenter.java +++ b/app/src/main/java/xyz/fycz/myreader/ui/presenter/BookcasePresenter.java @@ -23,9 +23,7 @@ import android.widget.PopupMenu; import androidx.appcompat.app.AlertDialog; import androidx.core.app.ActivityCompat; -import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Date; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -41,8 +39,6 @@ import xyz.fycz.myreader.ui.dialog.MultiChoiceDialog; import xyz.fycz.myreader.ui.dialog.MyAlertDialog; import xyz.fycz.myreader.greendao.entity.BookGroup; import xyz.fycz.myreader.greendao.service.BookGroupService; -import xyz.fycz.myreader.model.backup.BackupAndRestore; -import xyz.fycz.myreader.model.backup.UserService; import xyz.fycz.myreader.ui.activity.*; import xyz.fycz.myreader.webapi.crawler.base.ReadCrawler; import xyz.fycz.myreader.webapi.crawler.ReadCrawlerUtil; @@ -83,7 +79,6 @@ public class BookcasePresenter implements BasePresenter { private Setting mSetting; private final List errorLoadingBooks = new ArrayList<>(); private int finishLoadBookCount = 0; - private final BackupAndRestore mBackupAndRestore; // private int notifyId = 11; private ExecutorService es = Executors.newFixedThreadPool(1);//更新/下载线程池 @@ -179,7 +174,6 @@ public class BookcasePresenter implements BasePresenter { mMainActivity = (MainActivity) (mBookcaseFragment.getActivity()); // mChapterService = new ChapterService(); mSetting = SysManager.getSetting(); - mBackupAndRestore = new BackupAndRestore(); } //启动 @@ -195,10 +189,6 @@ public class BookcasePresenter implements BasePresenter { getData(); - if (mSetting.isAutoSyn() && UserService.isLogin()) { - synBookcaseToWeb(true); - } - //是否启用下拉刷新(默认启用) if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { mBookcaseFragment.getSrlContent().setEnableRefresh(false); @@ -956,35 +946,6 @@ public class BookcasePresenter implements BasePresenter { } return; } - Date nowTime = new Date(); - SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd"); - String nowTimeStr = sdf.format(nowTime); - SharedPreUtils spb = SharedPreUtils.getInstance(); - String synTime = spb.getString(mMainActivity.getString(R.string.synTime)); - if (!nowTimeStr.equals(synTime) || !isAutoSyn) { - UserService.webBackup(new ResultCallback() { - @Override - public void onFinish(Object o, int code) { - if ((boolean) o){ - spb.putString(mMainActivity.getString(R.string.synTime), nowTimeStr); - if (!isAutoSyn) { - DialogCreator.createTipDialog(mMainActivity, "成功将书架同步至网络!"); - } - }else { - if (!isAutoSyn) { - DialogCreator.createTipDialog(mMainActivity, "同步失败,请重试!"); - } - } - } - - @Override - public void onError(Exception e) { - if (!isAutoSyn) { - DialogCreator.createTipDialog(mMainActivity, "同步失败,请重试!\n" + e.getLocalizedMessage()); - } - } - }); - } } /*****************************************用于返回按钮判断*************************************/ diff --git a/app/src/main/java/xyz/fycz/myreader/ui/presenter/ReadPresenter.java b/app/src/main/java/xyz/fycz/myreader/ui/presenter/ReadPresenter.java deleted file mode 100644 index 10873dc..0000000 --- a/app/src/main/java/xyz/fycz/myreader/ui/presenter/ReadPresenter.java +++ /dev/null @@ -1,1314 +0,0 @@ -package xyz.fycz.myreader.ui.presenter; - -import android.annotation.SuppressLint; -import android.app.Dialog; -import android.app.Notification; -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.content.IntentFilter; -import android.graphics.BitmapFactory; -import android.net.Uri; -import android.os.Handler; -import android.os.Message; -import android.view.View; -import android.view.WindowManager; -import android.widget.SeekBar; -import android.widget.TextView; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import xyz.fycz.myreader.R; -import xyz.fycz.myreader.application.MyApplication; -import xyz.fycz.myreader.application.SysManager; -import xyz.fycz.myreader.base.BasePresenter; -import xyz.fycz.myreader.webapi.callback.ResultCallback; -import xyz.fycz.myreader.common.APPCONST; -import xyz.fycz.myreader.common.URLCONST; -import xyz.fycz.myreader.ui.dialog.MyAlertDialog; -import xyz.fycz.myreader.ui.dialog.SourceExchangeDialog; -import xyz.fycz.myreader.ui.activity.*; -import xyz.fycz.myreader.util.*; -import xyz.fycz.myreader.util.utils.ColorUtil; -import xyz.fycz.myreader.webapi.crawler.base.ReadCrawler; -import xyz.fycz.myreader.webapi.crawler.ReadCrawlerUtil; -import xyz.fycz.myreader.ui.dialog.DialogCreator; -import xyz.fycz.myreader.entity.Setting; -import xyz.fycz.myreader.enums.BookSource; -import xyz.fycz.myreader.enums.Font; -import xyz.fycz.myreader.enums.ReadStyle; -import xyz.fycz.myreader.greendao.entity.Book; -import xyz.fycz.myreader.greendao.entity.BookMark; -import xyz.fycz.myreader.greendao.entity.Chapter; -import xyz.fycz.myreader.greendao.service.BookMarkService; -import xyz.fycz.myreader.greendao.service.BookService; -import xyz.fycz.myreader.greendao.service.ChapterService; -import xyz.fycz.myreader.util.notification.NotificationClickReceiver; -import xyz.fycz.myreader.util.notification.NotificationUtil; -import xyz.fycz.myreader.util.utils.NetworkUtils; -import xyz.fycz.myreader.webapi.CommonApi; -import xyz.fycz.myreader.widget.page.LocalPageLoader; -import xyz.fycz.myreader.widget.page.PageLoader; -import xyz.fycz.myreader.widget.page.PageMode; -import xyz.fycz.myreader.widget.page.PageView; - -import static androidx.appcompat.app.AppCompatActivity.RESULT_OK; -import static xyz.fycz.myreader.util.UriFileUtil.getPath; - - -public class ReadPresenter implements BasePresenter { - - - private ReadActivity mReadActivity; - private Book mBook; - private ArrayList mChapters = new ArrayList<>(); - private ChapterService mChapterService; - private BookService mBookService; - private BookMarkService mBookMarkService; - private NotificationUtil notificationUtil; - private Setting mSetting; - - private boolean settingChange;//是否是设置改变 - - private boolean chapterChange;//章节是否改变 - - private boolean isCollected = true;//是否在书架中 - - private boolean isPrev;//是否向前翻页 - - private boolean autoPage = false;//是否自动翻页 - - private Dialog mSettingDialog;//设置视图 - private Dialog mSettingDetailDialog;//详细设置视图 - private Dialog mPageModeDialog;//翻页模式实体 - - private int curCacheChapterNum = 0;//缓存章节数 - - private int needCacheChapterNum;//需要缓存的章节 - - private PageLoader mPageLoader;//页面加载器 - - private int screenTimeOut;//息屏时间(单位:秒),dengy零表示常亮 - - private Runnable keepScreenRunnable;//息屏线程 - private Runnable autoPageRunnable;//自动翻页 - private Runnable upHpbNextPage;//更新自动翻页进度条 - private Runnable sendDownloadNotification; - private static boolean isStopDownload = true; - - private int tempCacheChapterNum; - private int tempCount; - private String downloadingChapter; - - private ReadCrawler mReadCrawler; - - private int endPageTipCount = 3; - - private int nextPageTime;//下次翻页时间 - - private int upHpbInterval = 30;//更新翻页进度速度 - - private int downloadInterval = 150; - - private final CharSequence[] pageMode = { - "覆盖", "仿真", "滑动", "滚动", "无动画" - }; - - private SourceExchangeDialog mSourceDialog; - - private boolean hasChangeSource; - - @SuppressLint("HandlerLeak") - private Handler mHandler = new Handler() { - @Override - public void handleMessage(Message msg) { - switch (msg.what) { - case 1: - init(); - break; - case 2: - int chapterPos = msg.arg1; - int pagePos = msg.arg2; - mPageLoader.skipToChapter(chapterPos); - mPageLoader.skipToPage(pagePos); - mReadActivity.getPbLoading().setVisibility(View.GONE); - break; - case 3: - updateDownloadProgress((TextView) msg.obj); - break; - case 4: - saveLastChapterReadPosition(); - screenOffTimerStart(); - break; - case 5: - if (endPageTipCount > 0) { - endPageTipCount--; - mHandler.sendEmptyMessageDelayed(5, 1000); - } else { - mReadActivity.getTvEndPageTip().setVisibility(View.GONE); - endPageTipCount = 3; - } - break; - case 6: - mPageLoader.openChapter(); - if (isPrev) {//判断是否向前翻页打开章节,如果是则打开自己后跳转到最后一页,否则不跳转 - try {//概率性异常(空指针异常) - mPageLoader.skipToPage(mPageLoader.getAllPagePos() - 1); - } catch (Exception e) { - e.printStackTrace(); - } - } - break; - case 7: - ToastUtils.showWarring("无网络连接!"); - mPageLoader.chapterError(); - break; - case 8: - mReadActivity.getPbLoading().setVisibility(View.GONE); - break; - case 9: - ToastUtils.showInfo("正在后台缓存书籍,具体进度可查看通知栏!"); - notificationUtil.requestNotificationPermissionDialog(mReadActivity); - break; - case 10: - if (mPageLoader != null) { - mPageLoader.chapterError(); - } - } - } - }; - - // 接收电池信息和时间更新的广播 - private BroadcastReceiver mReceiver = new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - if (Intent.ACTION_BATTERY_CHANGED.equals(intent.getAction())) { - int level = intent.getIntExtra("level", 0); - try { - mPageLoader.updateBattery(level); - } catch (Exception e) { - e.printStackTrace(); - } - } - // 监听分钟的变化 - else if (Intent.ACTION_TIME_TICK.equals(intent.getAction())) { - try { - mPageLoader.updateTime(); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - }; - - - public ReadPresenter(ReadActivity readActivity) { - mReadActivity = readActivity; - mBookService = BookService.getInstance(); - mChapterService = ChapterService.getInstance(); - mBookMarkService = BookMarkService.getInstance(); - mSetting = SysManager.getSetting(); - } - - - @Override - public void start() { - if (SharedPreUtils.getInstance().getBoolean(mReadActivity.getString(R.string.isNightFS), false)) { - mSetting.setDayStyle(!ColorUtil.isColorLight(mReadActivity.getColor(R.color.textPrimary))); - } - - //息屏时间 - screenTimeOut = mSetting.getResetScreen() * 60; - - //保持屏幕常亮 - keepScreenRunnable = this::unKeepScreenOn; - - autoPageRunnable = this::nextPage; - - upHpbNextPage = this::upHpbNextPage; - - sendDownloadNotification = this::sendNotification; - - notificationUtil = NotificationUtil.getInstance(); - - //注册广播 - IntentFilter intentFilter = new IntentFilter(); - intentFilter.addAction(Intent.ACTION_BATTERY_CHANGED); - intentFilter.addAction(Intent.ACTION_TIME_TICK); - mReadActivity.registerReceiver(mReceiver, intentFilter); - - if (!mSetting.isBrightFollowSystem()) { - BrightUtil.setBrightness(mReadActivity, BrightUtil.progressToBright(mSetting.getBrightProgress())); - } - - if (!loadBook()) { - mReadActivity.finish(); - return; - } - - isCollected = mReadActivity.getIntent().getBooleanExtra("isCollected", true); - - hasChangeSource = mReadActivity.getIntent().getBooleanExtra("hasChangeSource", false); - - //当书籍Collected且书籍id不为空的时候保存上次阅读信息 - if (isCollected && !StringHelper.isEmpty(mBook.getId())) { - //保存上次阅读信息 - SharedPreUtils.getInstance().putString(mReadActivity.getString(R.string.lastRead), mBook.getId()); - } - - - mReadCrawler = ReadCrawlerUtil.getReadCrawler(mBook.getSource()); - - mPageLoader = mReadActivity.getSrlContent().getPageLoader(mBook, mReadCrawler, mSetting); - - mReadActivity.getPbLoading().setVisibility(View.VISIBLE); - - initListener(); - //Dialog - mSourceDialog = new SourceExchangeDialog(mReadActivity, mBook); - - mSourceDialog.setOnSourceChangeListener((bean, pos) -> { - Book bookTem = new Book(mBook); - bookTem.setChapterUrl(bean.getChapterUrl()); - bookTem.setSource(bean.getSource()); - if (!StringHelper.isEmpty(bean.getImgUrl())) { - bookTem.setImgUrl(bean.getImgUrl()); - } - if (!StringHelper.isEmpty(bean.getType())) { - bookTem.setType(bean.getType()); - } - if (!StringHelper.isEmpty(bean.getDesc())){ - bookTem.setDesc(bean.getDesc()); - } - if (isCollected) { - mBookService.updateBook(mBook, bookTem); - } - mBook = bookTem; - mSettingDialog.dismiss(); - Intent intent = new Intent(mReadActivity, ReadActivity.class) - .putExtra(APPCONST.BOOK, mBook) - .putExtra("hasChangeSource", true); - if (!isCollected){ - intent.putExtra("isCollected", false); - } - mReadActivity.finish(); - mReadActivity.startActivity(intent); - }); - getData(); - } - - /** - * 进入阅读书籍有三种方式: - * 1、直接从书架进入,这种方式书籍一定Collected - * 2、从外部打开txt文件,这种方式会添加进书架 - * 3、从快捷图标打开上次阅读书籍 - * - * @return 是否加载成功 - */ - private boolean loadBook() { - //是否直接打开本地txt文件 - String path = null; - if (Intent.ACTION_VIEW.equals(mReadActivity.getIntent().getAction())) { - Uri uri = mReadActivity.getIntent().getData(); - if (uri != null) { - path = getPath(mReadActivity, uri); - } - } - if (!StringHelper.isEmpty(path)) { - //本地txt文件路径不为空,添加书籍 - addLocalBook(path); - } else { - //路径为空,说明不是直接打开txt文件 - mBook = (Book) mReadActivity.getIntent().getSerializableExtra(APPCONST.BOOK); - //mBook为空,说明是从快捷方式启动 - if (mBook == null) { - String bookId = SharedPreUtils.getInstance().getString(mReadActivity.getString(R.string.lastRead), ""); - if ("".equals(bookId)) {//没有上次阅读信息 - ToastUtils.showWarring("当前没有阅读任何书籍,无法加载上次阅读书籍!"); - mReadActivity.finish(); - return false; - } else {//有信息 - mBook = mBookService.getBookById(bookId); - if (mBook == null) {//上次阅读的书籍不存在 - ToastUtils.showWarring("上次阅读书籍已不存在/移除书架,无法加载!"); - mReadActivity.finish(); - return false; - }//存在就继续执行 - } - } - } - return true; - } - - /** - * 保存最后阅读章节的进度 - */ - public void saveLastChapterReadPosition() { - if (!StringHelper.isEmpty(mBook.getId()) && mPageLoader.getPageStatus() == PageLoader.STATUS_FINISH) { - mBook.setLastReadPosition(mPageLoader.getPagePos()); - mBook.setHisttoryChapterNum(mPageLoader.getChapterPos()); - mBookService.updateEntity(mBook); - } - } - - /** - * 创建设置视图 - */ - private void createSettingView() { - mSettingDialog = DialogCreator.createReadSetting(mReadActivity, mSetting.isDayStyle(), - mPageLoader.getPagePos(), Math.max(0, mPageLoader.getAllPagePos() - 1), - mBook, mChapters.get(mPageLoader.getChapterPos()), - view -> {//返回 - mSettingDialog.dismiss(); - mReadActivity.onBackPressed(); - }, v -> {//换源 - mSourceDialog.show(); - }, v -> {//刷新 - isPrev = false; - if (!"本地书籍".equals(mBook.getType())) { - mChapterService.deleteChapterCacheFile(mChapters.get(mPageLoader.getChapterPos())); - } - mPageLoader.refreshChapter(mChapters.get(mPageLoader.getChapterPos())); - }, v -> {//添加书签 - Chapter curChapter = mChapters.get(mPageLoader.getChapterPos()); - BookMark bookMark = new BookMark(); - bookMark.setBookId(mBook.getId()); - bookMark.setTitle(curChapter.getTitle()); - bookMark.setBookMarkChapterNum(mPageLoader.getChapterPos()); - bookMark.setBookMarkReadPosition(mPageLoader.getPagePos()); - mBookMarkService.addOrUpdateBookMark(bookMark); - DialogCreator.createTipDialog(mReadActivity, "《" + mBook.getName() + - "》:" + bookMark.getTitle() + "[" + (bookMark.getBookMarkReadPosition() + 1) + - "]\n书签添加成功,书签列表可在目录界面查看!"); - }, (chapterTitle, chapterUrl, sbReadChapterProgress) -> {//上一章 - isPrev = false; - mPageLoader.skipPreChapter(); - String url = mChapters.get(mPageLoader.getChapterPos()).getUrl(); - if ("null".equals(mBook.getSource()) || BookSource.fynovel.equals(mBook.getSource())) { - if (!url.contains("novel.fycz.xyz")) { - url = URLCONST.nameSpace_FY + url; - } - } - chapterTitle.setText(mChapters.get(mPageLoader.getChapterPos()).getTitle()); - chapterUrl.setText(StringHelper.isEmpty(url) ? mChapters. - get(mPageLoader.getChapterPos()).getId() : url); - sbReadChapterProgress.setProgress(0); - sbReadChapterProgress.setMax(Math.max(0, mPageLoader.getAllPagePos() - 1)); - chapterChange = false; - }, (chapterTitle, chapterUrl, sbReadChapterProgress) -> {//下一章 - isPrev = false; - mPageLoader.skipNextChapter(); - String url = mChapters.get(mPageLoader.getChapterPos()).getUrl(); - if ("null".equals(mBook.getSource()) || BookSource.fynovel.equals(mBook.getSource())) { - if (!url.contains("novel.fycz.xyz")) { - url = URLCONST.nameSpace_FY + url; - } - } - chapterTitle.setText(mChapters.get(mPageLoader.getChapterPos()).getTitle()); - chapterUrl.setText(StringHelper.isEmpty(url) ? mChapters. - get(mPageLoader.getChapterPos()).getId() : url); - sbReadChapterProgress.setProgress(0); - sbReadChapterProgress.setMax(Math.max(0, mPageLoader.getAllPagePos() - 1)); - chapterChange = false; - }, view -> {//目录 - /*initChapterTitleList(); - mReadActivity.getDlReadActivity().openDrawer(GravityCompat.START);*/ - mSettingDialog.dismiss(); - Intent intent = new Intent(mReadActivity, CatalogActivity.class); - intent.putExtra(APPCONST.BOOK, mBook); - mReadActivity.startActivityForResult(intent, APPCONST.REQUEST_CHAPTER_PAGE); - }, (dialog, view, isDayStyle) -> {//日夜切换 - dialog.dismiss(); - changeNightAndDaySetting(isDayStyle); - }, view -> {//设置 - showSettingDetailView(); - }, new SeekBar.OnSeekBarChangeListener() {//阅读进度 - @Override - public void onProgressChanged(SeekBar seekBar, int i, boolean b) { - - } - - @Override - public void onStartTrackingTouch(SeekBar seekBar) { - - } - - @Override - public void onStopTrackingTouch(SeekBar seekBar) { - //进行切换 - int pagePos = seekBar.getProgress(); - if (pagePos != mPageLoader.getPagePos() && pagePos < mPageLoader.getAllPagePos()) { - mPageLoader.skipToPage(pagePos); - } - } - } - , null, (dialog, view, tvDownloadProgress) -> { - if (!isCollected) { - addBookToCaseAndDownload(tvDownloadProgress); - } else { - downloadBook(tvDownloadProgress); - } - - }); - } - - /** - * 显示设置视图 - */ - private void showSettingView() { - if (mSettingDialog != null && !chapterChange) { - mSettingDialog.show(); - } else { - if (mPageLoader.getPageStatus() == PageLoader.STATUS_FINISH) { - createSettingView(); - chapterChange = false; - } - mSettingDialog.show(); - } - - } - - /** - * 添加到书架并缓存书籍 - * - * @param tvDownloadProgress - */ - private void addBookToCaseAndDownload(final TextView tvDownloadProgress) { - DialogCreator.createCommonDialog(mReadActivity, mReadActivity.getString(R.string.tip), mReadActivity.getString(R.string.download_no_add_tips), true, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - downloadBook(tvDownloadProgress); - isCollected = true; - } - }, (dialog, which) -> dialog.dismiss()); - } - - /** - * 创建详细设置视图 - */ - private void createSettingDetailView() { - mSettingDetailDialog = DialogCreator.createReadDetailSetting(mReadActivity, mSetting, - this::changeStyle, v -> reduceTextSize(), v -> increaseTextSize(), v -> { - if (mSetting.isVolumeTurnPage()) { - mSetting.setVolumeTurnPage(false); - ToastUtils.showSuccess("音量键翻页已关闭!"); - } else { - mSetting.setVolumeTurnPage(true); - ToastUtils.showSuccess("音量键翻页已开启!"); - } - SysManager.saveSetting(mSetting); - }, v -> { - Intent intent = new Intent(mReadActivity, FontsActivity.class); - mReadActivity.startActivityForResult(intent, APPCONST.REQUEST_FONT); - mSettingDetailDialog.dismiss(); - }, this::showPageModeDialog, v -> { - if (mSetting.getPageMode() == PageMode.SCROLL) { - ToastUtils.showWarring("滚动暂时不支持自动翻页"); - return; - } - mSettingDetailDialog.dismiss(); - autoPage = !autoPage; - autoPage(); - }, v -> { - Intent intent = new Intent(mReadActivity, MoreSettingActivity.class); - mReadActivity.startActivityForResult(intent, APPCONST.REQUEST_RESET_SCREEN_TIME); - mSettingDetailDialog.dismiss(); - }); - } - - /** - * 显示详细设置视图 - */ - private void showSettingDetailView() { - mSettingDialog.dismiss(); - if (mSettingDetailDialog != null) { - mSettingDetailDialog.show(); - } else { - createSettingDetailView(); - mSettingDetailDialog.show(); - } - } - - private void showPageModeDialog(final TextView tvPageMode) { - if (mPageModeDialog != null) { - mPageModeDialog.show(); - } else { - //显示翻页模式视图 - int checkedItem; - switch (mSetting.getPageMode()) { - case COVER: - checkedItem = 0; - break; - case SIMULATION: - checkedItem = 1; - break; - case SLIDE: - checkedItem = 2; - break; - case SCROLL: - checkedItem = 3; - break; - case NONE: - checkedItem = 4; - break; - default: - checkedItem = 0; - } - mPageModeDialog = MyAlertDialog.build(mReadActivity) - .setTitle("翻页模式") - .setSingleChoiceItems(pageMode, checkedItem, (dialog, which) -> { - switch (which) { - case 0: - mSetting.setPageMode(PageMode.COVER); - break; - case 1: - mSetting.setPageMode(PageMode.SIMULATION); - break; - case 2: - mSetting.setPageMode(PageMode.SLIDE); - break; - case 3: - mSetting.setPageMode(PageMode.SCROLL); - break; - case 4: - mSetting.setPageMode(PageMode.NONE); - break; - } - mPageModeDialog.dismiss(); - SysManager.saveSetting(mSetting); - MyApplication.runOnUiThread(() -> mPageLoader.setPageMode(mSetting.getPageMode())); - tvPageMode.setText(pageMode[which]); - }).show(); - } - } - - /** - * 字体结果回调 - * - * @param requestCode - * @param resultCode - * @param data - */ - public void onActivityResult(int requestCode, int resultCode, Intent data) { - if (resultCode == RESULT_OK) { - switch (requestCode) { - case APPCONST.REQUEST_FONT: - Font font = (Font) data.getSerializableExtra(APPCONST.FONT); - mSetting.setFont(font); - settingChange = true; -// init(); - MyApplication.runOnUiThread(() -> mPageLoader.setFont(font)); - break; - case APPCONST.REQUEST_CHAPTER_PAGE: - int[] chapterAndPage = data.getIntArrayExtra(APPCONST.CHAPTER_PAGE); - assert chapterAndPage != null; - skipToChapterAndPage(chapterAndPage[0], chapterAndPage[1]); - break; - case APPCONST.REQUEST_RESET_SCREEN_TIME: - int resetScreen = data.getIntExtra(APPCONST.RESULT_RESET_SCREEN, 0); - screenTimeOut = resetScreen * 60; - screenOffTimerStart(); - break; - } - } - } - - - /** - * 初始化 - */ - private void init() { - screenOffTimerStart(); - mPageLoader.init(); - mPageLoader.refreshChapterList(); - mHandler.sendMessage(mHandler.obtainMessage(8)); - } - - /** - * 初始化监听器 - */ - private void initListener() { - - mReadActivity.getSrlContent().setTouchListener(new PageView.TouchListener() { - @Override - public boolean onTouch() { - screenOffTimerStart(); - return true; - } - - @Override - public void center() { - if (mPageLoader.getPageStatus() == PageLoader.STATUS_FINISH) { - showSettingView(); - } - if (autoPage) { - autoPageStop(); - } - } - - @Override - public void prePage() { - isPrev = true; - } - - @Override - public void nextPage(boolean hasNextPage) { - isPrev = false; - if (!hasNextPage && endPageTipCount == 3) { - mReadActivity.getTvEndPageTip().setVisibility(View.VISIBLE); - mHandler.sendMessage(mHandler.obtainMessage(5)); - if (autoPage) { - autoPageStop(); - } - } - } - - @Override - public void cancel() { - } - }); - - mPageLoader.setOnPageChangeListener( - new PageLoader.OnPageChangeListener() { - @Override - public void onChapterChange(int pos) { - chapterChange = true; - lastLoad(pos); - for (int i = 0; i < 5; i++) { - preLoad(pos - 1 + i); - } - mBook.setHistoryChapterId(mChapters.get(pos).getTitle()); - mHandler.sendMessage(mHandler.obtainMessage(4)); - MyApplication.getApplication().newThread(() -> { - if (mPageLoader.getPageStatus() == PageLoader.STATUS_LOADING) { - if (!NetworkUtils.isNetWorkAvailable()) { - mHandler.sendMessage(mHandler.obtainMessage(7)); - } else { - mHandler.sendMessage(mHandler.obtainMessage(6)); - } - } - }); - - } - - @Override - public void requestChapters(List requestChapters) { - /*for (final Chapter chapter : requestChapters){ - getChapterContent(chapter, null); - }*/ - } - - @Override - public void onCategoryFinish(List chapters) { - } - - @Override - public void onPageCountChange(int count) { - - } - - @Override - public void onPageChange(int pos) { - mHandler.sendMessage(mHandler.obtainMessage(4)); - } - - @Override - public void preLoading() { - - } - } - ); - - } - - - /** - * 章节数据网络同步 - */ - private void getData() { - mChapters = (ArrayList) mChapterService.findBookAllChapterByBookId(mBook.getId()); - if (!isCollected || mChapters.size() == 0 || ("本地书籍".equals(mBook.getType()) && - !ChapterService.isChapterCached(mBook.getId(), mChapters.get(0).getTitle()))) { - if ("本地书籍".equals(mBook.getType())) { - if (!new File(mBook.getChapterUrl()).exists()) { - ToastUtils.showWarring("书籍缓存为空且源文件不存在,书籍加载失败!"); - mReadActivity.finish(); - return; - } - ((LocalPageLoader) mPageLoader).loadChapters(new ResultCallback() { - @Override - public void onFinish(Object o, int code) { - ArrayList chapters = (ArrayList) o; - mBook.setChapterTotalNum(chapters.size()); - mBook.setNewestChapterTitle(chapters.get(chapters.size() - 1).getTitle()); - mBookService.updateEntity(mBook); - if (mChapters.size() == 0) { - updateAllOldChapterData(chapters); - } - initChapters(); - mHandler.sendMessage(mHandler.obtainMessage(1)); - } - - @Override - public void onError(Exception e) { - mChapters.clear(); - initChapters(); - mHandler.sendMessage(mHandler.obtainMessage(1)); - } - }); - } else { - CommonApi.getBookChapters(mBook.getChapterUrl(), mReadCrawler,false, new ResultCallback() { - @Override - public void onFinish(Object o, int code) { - ArrayList chapters = (ArrayList) o; - updateAllOldChapterData(chapters); - initChapters(); - } - - @Override - public void onError(Exception e) { -// settingChange = true; - initChapters(); - mHandler.sendMessage(mHandler.obtainMessage(1)); - } - }); - } - } else { - initChapters(); - } - } - - /** - * 初始化章节 - */ - private void initChapters() { - mBook.setNoReadNum(0); - mBook.setChapterTotalNum(mChapters.size()); - if (!StringHelper.isEmpty(mBook.getId())) { - mBookService.updateEntity(mBook); - } - if (mChapters.size() == 0) { - ToastUtils.showWarring("该书查询不到任何章节"); - mHandler.sendMessage(mHandler.obtainMessage(8)); - settingChange = false; - } else { - if (mBook.getHisttoryChapterNum() < 0) { - mBook.setHisttoryChapterNum(0); - } else if (mBook.getHisttoryChapterNum() >= mChapters.size()) { - mBook.setHisttoryChapterNum(mChapters.size() - 1); - } - if ("本地书籍".equals(mBook.getType())) { - mHandler.sendMessage(mHandler.obtainMessage(1)); - return; - } - if (hasChangeSource){ - mBookService.matchHistoryChapterPos(mBook, mChapters); - } - getChapterContent(mChapters.get(mBook.getHisttoryChapterNum()), new ResultCallback() { - @Override - public void onFinish(Object o, int code) { -// mChapters.get(mBook.getHisttoryChapterNum()).setContent((String) o); - mChapterService.saveOrUpdateChapter(mChapters.get(mBook.getHisttoryChapterNum()), (String) o); - mHandler.sendMessage(mHandler.obtainMessage(1)); -// getAllChapterData(); - } - - @Override - public void onError(Exception e) { - mHandler.sendMessage(mHandler.obtainMessage(1)); - } - }); - } - } - - /** - * 更新所有章节 - * - * @param newChapters - */ - private void updateAllOldChapterData(ArrayList newChapters) { - for (Chapter newChapter : newChapters) { - newChapter.setId(StringHelper.getStringRandom(25)); - newChapter.setBookId(mBook.getId()); - mChapters.add(newChapter); -// mChapterService.addChapter(newChapters.get(j)); - } - mChapterService.addChapters(mChapters); - } - - - /****************************************** 缓存章节***************************************************************/ - private int selectedIndex;//对话框选择下标 - - protected void downloadBook(final TextView tvDownloadProgress) { - if ("本地书籍".equals(mBook.getType())) { - ToastUtils.showWarring("《" + mBook.getName() + "》是本地书籍,不能缓存"); - return; - } - if (!NetworkUtils.isNetWorkAvailable()) { - ToastUtils.showWarring("无网络连接!"); - return; - } - MyApplication.runOnUiThread(() -> { - MyAlertDialog.build(mReadActivity) - .setTitle("缓存书籍") - .setSingleChoiceItems(APPCONST.DIALOG_DOWNLOAD, selectedIndex, (dialog, which) -> selectedIndex = which).setNegativeButton("取消", ((dialog, which) -> dialog.dismiss())).setPositiveButton("确定", - (dialog, which) -> { - switch (selectedIndex) { - case 0: - addDownload(tvDownloadProgress, mPageLoader.getChapterPos(), mPageLoader.getChapterPos() + 50); - break; - case 1: - addDownload(tvDownloadProgress, mPageLoader.getChapterPos() - 50, mPageLoader.getChapterPos() + 50); - break; - case 2: - addDownload(tvDownloadProgress, mPageLoader.getChapterPos(), mChapters.size()); - break; - case 3: - addDownload(tvDownloadProgress, 0, mChapters.size()); - break; - } - }).show(); - }); - } - - private void addDownload(final TextView tvDownloadProgress, int begin, int end) { - /*//取消之前下载 - if (!isStopDownload) { - isStopDownload = true; - try { - Thread.sleep(200); - } catch (InterruptedException e) { - e.printStackTrace(); - } - }*/ - if (SysManager.getSetting().getCatheGap() != 0) { - downloadInterval = SysManager.getSetting().getCatheGap(); - } - //计算断点章节 - final int finalBegin = Math.max(0, begin); - final int finalEnd = Math.min(end, mChapters.size()); - needCacheChapterNum = finalEnd - finalBegin; - curCacheChapterNum = 0; - isStopDownload = false; - ArrayList needDownloadChapters = new ArrayList<>(); - for (int i = finalBegin; i < finalEnd; i++) { - final Chapter chapter = mChapters.get(i); - if (StringHelper.isEmpty(chapter.getContent())) { - needDownloadChapters.add(chapter); - } - } - needCacheChapterNum = needDownloadChapters.size(); - if (needCacheChapterNum > 0) { - mHandler.sendEmptyMessage(9); - mHandler.postDelayed(sendDownloadNotification, 2 * downloadInterval); - } - MyApplication.getApplication().newThread(() -> { - for (Chapter chapter : needDownloadChapters) { - getChapterContent(chapter, new ResultCallback() { - @Override - public void onFinish(Object o, int code) { - downloadingChapter = chapter.getTitle(); - mChapterService.saveOrUpdateChapter(chapter, (String) o); - curCacheChapterNum++; - mHandler.sendMessage(mHandler.obtainMessage(3, tvDownloadProgress)); - } - - @Override - public void onError(Exception e) { - curCacheChapterNum++; - mHandler.sendMessage(mHandler.obtainMessage(3, tvDownloadProgress)); - } - }); - try { - Thread.sleep(downloadInterval); - } catch (InterruptedException e) { - e.printStackTrace(); - } - if (isStopDownload) { - break; - } - } - if (curCacheChapterNum == needCacheChapterNum) { - ToastUtils.showInfo("《" + mBook.getName() + "》" + mReadActivity.getString(R.string.download_already_all_tips)); - } - }); - } - - - private void updateDownloadProgress(TextView tvDownloadProgress) { - try { - tvDownloadProgress.setText(curCacheChapterNum * 100 / needCacheChapterNum + " %"); - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * 发送通知 - */ - private void sendNotification() { - if (curCacheChapterNum == needCacheChapterNum) { - notificationUtil.cancel(1001); - return; - } else { - Notification notification = notificationUtil.build(APPCONST.channelIdDownload) - .setSmallIcon(R.drawable.ic_download) - //通知栏大图标 - .setLargeIcon(BitmapFactory.decodeResource(MyApplication.getApplication().getResources(), R.mipmap.ic_launcher)) - .setOngoing(true) - //点击通知后自动清除 - .setAutoCancel(true) - .setContentTitle("正在下载:" + mBook.getName() + - "[" + curCacheChapterNum + "/" + needCacheChapterNum + "]") - .setContentText(downloadingChapter == null ? " " : downloadingChapter) - .addAction(R.drawable.ic_stop_black_24dp, "停止", - notificationUtil.getChancelPendingIntent(cancelDownloadReceiver.class)) - .build(); - notificationUtil.notify(1001, notification); - } - if (tempCacheChapterNum < curCacheChapterNum) { - tempCount = 1500 / downloadInterval; - tempCacheChapterNum = curCacheChapterNum; - } else if (tempCacheChapterNum == curCacheChapterNum) { - tempCount--; - if (tempCount == 0) { - notificationUtil.cancel(1001); - return; - } - } - mHandler.postDelayed(sendDownloadNotification, 2 * downloadInterval); - } - - public static class cancelDownloadReceiver extends BroadcastReceiver { - @Override - public void onReceive(Context context, Intent intent) { - //todo 跳转之前要处理的逻辑 - if (NotificationClickReceiver.CANCEL_ACTION.equals(intent.getAction())) { - isStopDownload = true; - } - } - } - - /** - * 获取章节内容 - * - * @param chapter - * @param resultCallback - */ - private void getChapterContent(final Chapter chapter, ResultCallback resultCallback) { - if (StringHelper.isEmpty(chapter.getBookId())) { - chapter.setId(mBook.getId()); - } - if (!StringHelper.isEmpty(chapter.getContent())) { - if (resultCallback != null) { - resultCallback.onFinish(mChapterService.getChapterCatheContent(chapter), 0); - } - } else { - if ("本地书籍".equals(mBook.getType())) { - return; - } - if (resultCallback != null) { - CommonApi.getChapterContent(chapter.getUrl(), mReadCrawler, resultCallback); - } else { - CommonApi.getChapterContent(chapter.getUrl(), mReadCrawler, new ResultCallback() { - @Override - public void onFinish(final Object o, int code) { -// chapter.setContent((String) o); - mChapterService.saveOrUpdateChapter(chapter, (String) o); - } - - @Override - public void onError(Exception e) { - - } - - }); - } - } - } - - - /** - * 白天夜间改变 - * - * @param isCurDayStyle - */ - private void changeNightAndDaySetting(boolean isCurDayStyle) { - mSetting.setDayStyle(!isCurDayStyle); - SysManager.saveSetting(mSetting); - MyApplication.getApplication().setNightTheme(isCurDayStyle); - settingChange = true; - //mPageLoader.setPageStyle(!isCurDayStyle); - } - - /** - * 缩小字体 - */ - private void reduceTextSize() { - if (mSetting.getReadWordSize() > 1) { - mSetting.setReadWordSize(mSetting.getReadWordSize() - 1); - SysManager.saveSetting(mSetting); - settingChange = true; - mPageLoader.setTextSize((int) mSetting.getReadWordSize()); - } - } - - /** - * 增大字体 - */ - private void increaseTextSize() { - if (mSetting.getReadWordSize() < 41) { - mSetting.setReadWordSize(mSetting.getReadWordSize() + 1); - SysManager.saveSetting(mSetting); - settingChange = true; - mPageLoader.setTextSize((int) mSetting.getReadWordSize()); - } - } - - /** - * 改变阅读风格 - * - * @param readStyle - */ - private void changeStyle(ReadStyle readStyle) { - settingChange = true; - mSetting.setReadStyle(readStyle); - SysManager.saveSetting(mSetting); - if (!mSetting.isDayStyle()) { - DialogCreator.createCommonDialog(mReadActivity, "提示", "是否希望切换为日间模式?", - false, "确定", "取消", (dialog, which) -> { - changeNightAndDaySetting(false); - }, null); - } - MyApplication.runOnUiThread(() -> mPageLoader.setPageStyle(true)); - } - - - /** - * 取消亮屏保持 - */ - private void unKeepScreenOn() { - keepScreenOn(false); - } - - /** - * @param keepScreenOn 是否保持亮屏 - */ - public void keepScreenOn(boolean keepScreenOn) { - if (keepScreenOn) { - mReadActivity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); - } else { - mReadActivity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); - } - } - - /** - * 重置黑屏时间 - */ - private void screenOffTimerStart() { - if (screenTimeOut <= 0) { - keepScreenOn(true); - return; - } - int screenOffTime = screenTimeOut * 1000 - ScreenHelper.getScreenOffTime(mReadActivity); - if (screenOffTime > 0) { - mHandler.removeCallbacks(keepScreenRunnable); - keepScreenOn(true); - mHandler.postDelayed(keepScreenRunnable, screenOffTime); - } else { - keepScreenOn(false); - } - } - - /** - * 预加载下一章 - */ - private void preLoad(int position) { - if (position + 1 < mChapters.size()) { - Chapter chapter = mChapters.get(position + 1); - if (StringHelper.isEmpty(chapter.getContent())) { - mPageLoader.getChapterContent(chapter); - } - } - } - - /** - * 预加载上一章 - * - * @param position - */ - private void lastLoad(int position) { - if (position > 0) { - Chapter chapter = mChapters.get(position - 1); - if (StringHelper.isEmpty(chapter.getContent())) { - mPageLoader.getChapterContent(chapter); - } - } - } - - /** - * 添加本地书籍 - * - * @param path - */ - private void addLocalBook(String path) { - File file = new File(path); - if (!file.exists()) { - return; - } - Book book = new Book(); - book.setName(file.getName().replace(".txt", "")); - book.setChapterUrl(path); - book.setType("本地书籍"); - book.setHistoryChapterId("未开始阅读"); - book.setNewestChapterTitle("未拆分章节"); - book.setAuthor("本地书籍"); - book.setSource(BookSource.local.toString()); - book.setDesc("无"); - book.setIsCloseUpdate(true); - //判断书籍是否已经添加 - Book existsBook = mBookService.findBookByAuthorAndName(book.getName(), book.getAuthor()); - if (book.equals(existsBook)) { - mBook = existsBook; - return; - } - - mBookService.addBook(book); - mBook = book; - } - - /** - * 跳转到指定章节的指定页面 - * - * @param chapterPos - * @param pagePos - */ - private void skipToChapterAndPage(final int chapterPos, final int pagePos) { - isPrev = false; - if (StringHelper.isEmpty(mChapters.get(chapterPos).getContent())) { - if ("本地书籍".equals(mBook.getType())) { - ToastUtils.showWarring("该章节无内容!"); - return; - } - mReadActivity.getPbLoading().setVisibility(View.VISIBLE); - CommonApi.getChapterContent(mChapters.get(chapterPos).getUrl(), mReadCrawler, new ResultCallback() { - @Override - public void onFinish(Object o, int code) { -// mChapters.get(position).setContent((String) o); - mChapterService.saveOrUpdateChapter(mChapters.get(chapterPos), (String) o); - mHandler.sendMessage(mHandler.obtainMessage(2, chapterPos, pagePos)); - } - - @Override - public void onError(Exception e) { - mHandler.sendMessage(mHandler.obtainMessage(2, chapterPos, pagePos)); - mHandler.sendEmptyMessage(10); - } - }); - } else { - mHandler.sendMessage(mHandler.obtainMessage(2, chapterPos, pagePos)); - } - } - - /** - * 自动翻页 - */ - private void autoPage() { - mHandler.removeCallbacks(upHpbNextPage); - mHandler.removeCallbacks(autoPageRunnable); - if (autoPage) { - mReadActivity.getPbNextPage().setVisibility(View.VISIBLE); - //每页按字数计算一次时间 - nextPageTime = mPageLoader.curPageLength() * 60 * 1000 / mSetting.getAutoScrollSpeed(); - if (0 == nextPageTime) nextPageTime = 1000; - mReadActivity.getPbNextPage().setMax(nextPageTime); - mHandler.postDelayed(autoPageRunnable, nextPageTime); - nextPageTime = nextPageTime - upHpbInterval * 10; - mHandler.postDelayed(upHpbNextPage, upHpbInterval); - } else { - mReadActivity.getPbNextPage().setVisibility(View.INVISIBLE); - } - } - - /** - * 更新自动翻页进度条 - */ - private void upHpbNextPage() { - nextPageTime = nextPageTime - upHpbInterval; - if (nextPageTime >= 0) { - mReadActivity.getPbNextPage().setProgress(nextPageTime); - } - mHandler.postDelayed(upHpbNextPage, upHpbInterval); - } - - /** - * 停止自动翻页 - */ - private void autoPageStop() { - autoPage = false; - autoPage(); - } - - /** - * 下一页 - */ - private void nextPage() { - MyApplication.runOnUiThread(() -> { - screenOffTimerStart(); - if (mPageLoader != null) { - mPageLoader.skipToNextPage(); - } - autoPage(); - }); - } - - - /** - * setter和getter方法 - */ - public boolean isCollected() { - return isCollected; - } - - public PageLoader getmPageLoader() { - return mPageLoader; - } - - public void setCollected(boolean collected) { - isCollected = collected; - } - - /** - * ReadActivity调用 - */ - public void deleteBook() { - mBookService.deleteBookById(mBook.getId()); - } - - /** - * ReadActivity调用 - */ - public void onDestroy() { - mReadActivity.unregisterReceiver(mReceiver); - mHandler.removeCallbacks(keepScreenRunnable); - mHandler.removeCallbacks(upHpbNextPage); - mHandler.removeCallbacks(autoPageRunnable); - /*mHandler.removeCallbacks(sendDownloadNotification); - notificationUtil.cancelAll(); - MyApplication.getApplication().shutdownThreadPool();*/ - if (autoPage) { - autoPageStop(); - } - for (int i = 0; i < 9; i++) { - mHandler.removeMessages(i + 1); - } - if (mPageLoader != null) { - mPageLoader.closeBook(); - mPageLoader = null; - } - } -} diff --git a/app/src/main/java/xyz/fycz/myreader/util/AlarmHelper.java b/app/src/main/java/xyz/fycz/myreader/util/AlarmHelper.java deleted file mode 100644 index 7dfb5f5..0000000 --- a/app/src/main/java/xyz/fycz/myreader/util/AlarmHelper.java +++ /dev/null @@ -1,72 +0,0 @@ -package xyz.fycz.myreader.util; - -import android.app.AlarmManager; -import android.app.PendingIntent; -import android.content.Context; -import android.content.Intent; -import android.os.Build; - -import xyz.fycz.myreader.common.APPCONST; - -import java.util.Date; - -import static android.content.Context.ALARM_SERVICE; -import static android.content.Intent.FLAG_INCLUDE_STOPPED_PACKAGES; - - - -public class AlarmHelper { - - private static String alarmActicon = "xyz.fycz.kl.gxdw"; - private static String AntiHijackingActicon = "xyz.fycz.kl.gxdw.AntiHijacking"; - - public static void addOneShotAlarm(Context context, long time, String msg, int id){ - Date date = new Date(); - if(time <= date.getTime()){ - return; - } - Intent intent = new Intent(alarmActicon); - intent.putExtra(APPCONST.ALARM_SCHEDULE_MSG,msg); - intent.setFlags(FLAG_INCLUDE_STOPPED_PACKAGES); - PendingIntent pi = PendingIntent.getBroadcast(context, id, intent, PendingIntent.FLAG_CANCEL_CURRENT); - AlarmManager alarmManager = (AlarmManager)context.getSystemService(ALARM_SERVICE); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - alarmManager.setExact(AlarmManager.RTC_WAKEUP,time,pi); - }else { - alarmManager.set(AlarmManager.RTC_WAKEUP,time,pi); - } - } - - public static void removeOneShotAlarm(Context context, int id){ - Intent intent = new Intent(alarmActicon); - intent.setFlags(FLAG_INCLUDE_STOPPED_PACKAGES); - PendingIntent pi = PendingIntent.getBroadcast(context, id, intent, PendingIntent.FLAG_CANCEL_CURRENT); - AlarmManager alarmManager = (AlarmManager)context.getSystemService(ALARM_SERVICE); - alarmManager.cancel(pi); - } - - public static void addAlarm(Context context, long time, int id){ -// Date date = new Date(); - /* if(time <= date.getTime()){ - return; - }*/ - Intent intent = new Intent(AntiHijackingActicon); - - intent.setFlags(FLAG_INCLUDE_STOPPED_PACKAGES); - PendingIntent pi = PendingIntent.getBroadcast(context, id, intent, PendingIntent.FLAG_CANCEL_CURRENT); - AlarmManager alarmManager = (AlarmManager)context.getSystemService(ALARM_SERVICE); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - alarmManager.setExact(AlarmManager.RTC_WAKEUP,new Date().getTime() + time,pi); - }else { - alarmManager.set(AlarmManager.RTC_WAKEUP,new Date().getTime() + time,pi); - } - } - - public static void removeAlarm(Context context, int id){ - Intent intent = new Intent(AntiHijackingActicon); - intent.setFlags(FLAG_INCLUDE_STOPPED_PACKAGES); - PendingIntent pi = PendingIntent.getBroadcast(context, id, intent, PendingIntent.FLAG_CANCEL_CURRENT); - AlarmManager alarmManager = (AlarmManager)context.getSystemService(ALARM_SERVICE); - alarmManager.cancel(pi); - } -} diff --git a/app/src/main/java/xyz/fycz/myreader/util/Anti_hijackingUtils.java b/app/src/main/java/xyz/fycz/myreader/util/Anti_hijackingUtils.java deleted file mode 100644 index 06ebdc3..0000000 --- a/app/src/main/java/xyz/fycz/myreader/util/Anti_hijackingUtils.java +++ /dev/null @@ -1,125 +0,0 @@ -package xyz.fycz.myreader.util; - -import android.widget.Toast; - -import androidx.appcompat.app.AppCompatActivity; - -import java.util.ArrayList; -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import xyz.fycz.myreader.R; - -/** - * 防界面劫持提示 - */ -public class Anti_hijackingUtils { - -// private int id = 12345678;//记录定时ID - - private static boolean home; - private static boolean back; - - - /** - * 用于执行定时任务 - */ - private Timer timer = null; - - /** - * 用于保存当前任务 - */ - private List tasks = null; - - /** - * 唯一实例 - */ - private static Anti_hijackingUtils anti_hijackingUtils; - - private Anti_hijackingUtils() { - // 初始化 - tasks = new ArrayList(); - timer = new Timer(); - } - - /** - * 获取唯一实例 - * - * @return 唯一实例 - */ - public static Anti_hijackingUtils getinstance() { - if (anti_hijackingUtils == null) { - anti_hijackingUtils = new Anti_hijackingUtils(); - } - return anti_hijackingUtils; - } - - /** - * 在activity的onPause()方法中调用 - * - * @param activity - */ - public void onPause(final AppCompatActivity activity) { - MyTimerTask task = new MyTimerTask(activity); - tasks.add(task); - timer.schedule(task, 2000); -// AlarmHelper.addAlarm(activity,2000,id); - } - - /** - * 在activity的onResume()方法中调用 - */ - public void onResume(final AppCompatActivity activity) { - if (tasks.size() > 0) { - tasks.get(tasks.size() - 1).setCanRun(false); - tasks.remove(tasks.size() - 1); - } -// AlarmHelper.removeAlarm(activity,id); - } - - /** - * 自定义TimerTask类 - */ - class MyTimerTask extends TimerTask { - /** - * 任务是否有效 - */ - private boolean canRun = true; - private AppCompatActivity activity; - - private void setCanRun(boolean canRun) { - this.canRun = canRun; - } - - public MyTimerTask(AppCompatActivity activity) { - this.activity = activity; - } - - @Override - public void run() { - activity.runOnUiThread(new Runnable() { - @Override - public void run() { - if (canRun) { - // 程序退到后台,进行风险警告 - if (home || back){ - Toast.makeText(activity, activity.getString(R.string.anti_hijacking_tips_home), Toast.LENGTH_LONG).show(); - - tasks.remove(MyTimerTask.this); - home = false; - }else { - Toast.makeText(activity, activity.getString(R.string.anti_hijacking_tips), Toast.LENGTH_LONG).show(); -// TextHelper.showLongText(MyApplication.getApplication().getString(R.string.anti_hijacking_tips)); - tasks.remove(MyTimerTask.this); - } - } - } - }); - } - - } - - -} - diff --git a/app/src/main/java/xyz/fycz/myreader/util/BeanPropertiesUtil.java b/app/src/main/java/xyz/fycz/myreader/util/BeanPropertiesUtil.java deleted file mode 100644 index 7fc2bae..0000000 --- a/app/src/main/java/xyz/fycz/myreader/util/BeanPropertiesUtil.java +++ /dev/null @@ -1,125 +0,0 @@ -package xyz.fycz.myreader.util; -import java.lang.reflect.Method; -import java.util.Arrays; -import java.util.Collection; -import java.util.List; - -/** - * Created by Kodulf - */ -public class BeanPropertiesUtil { - /** - * 利用反射实现对象之间属性复制 - * @param from - * @param to - */ - public static void copyProperties(Object from, Object to) throws Exception { - copyPropertiesExclude(from, to, null); - } - - /** - * 复制对象属性 - * @param from - * @param to - * @param excludsArray 排除属性列表 - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static void copyPropertiesExclude(Object from, Object to, String[] excludsArray) throws Exception { - List excludesList = null; - if(excludsArray != null && excludsArray.length > 0) { - excludesList = Arrays.asList(excludsArray); //构造列表对象 - } - Method[] fromMethods = from.getClass().getDeclaredMethods(); - Method[] toMethods = to.getClass().getDeclaredMethods(); - Method fromMethod = null, toMethod = null; - String fromMethodName = null, toMethodName = null; - for (int i = 0; i < fromMethods.length; i++) { - fromMethod = fromMethods[i]; - fromMethodName = fromMethod.getName(); - if (!fromMethodName.contains("get") || fromMethodName.contains("getId")) - continue; - //排除列表检测 - if(excludesList != null && excludesList.contains(fromMethodName.substring(3).toLowerCase())) { - continue; - } - toMethodName = "set" + fromMethodName.substring(3); - toMethod = findMethodByName(toMethods, toMethodName); - if (toMethod == null) - continue; - Object value = fromMethod.invoke(from); - if(value == null) - continue; - //集合类判空处理 - if(value instanceof Collection) { - Collection newValue = (Collection)value; - if(newValue.size() <= 0) - continue; - } - toMethod.invoke(to, value); - } - } - - /** - * 对象属性值复制,仅复制指定名称的属性值 - * @param from - * @param to - * @param includsArray - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static void copyPropertiesInclude(Object from, Object to, String[] includsArray) throws Exception { - List includesList = null; - if(includsArray != null && includsArray.length > 0) { - includesList = Arrays.asList(includsArray); //构造列表对象 - } else { - return; - } - Method[] fromMethods = from.getClass().getDeclaredMethods(); - Method[] toMethods = to.getClass().getDeclaredMethods(); - Method fromMethod = null, toMethod = null; - String fromMethodName = null, toMethodName = null; - for (int i = 0; i < fromMethods.length; i++) { - fromMethod = fromMethods[i]; - fromMethodName = fromMethod.getName(); - if (!fromMethodName.contains("get")) - continue; - //排除列表检测 - String str = fromMethodName.substring(3); - if(!includesList.contains(str.substring(0,1).toLowerCase() + str.substring(1))) { - continue; - } - toMethodName = "set" + fromMethodName.substring(3); - toMethod = findMethodByName(toMethods, toMethodName); - if (toMethod == null) - continue; - Object value = fromMethod.invoke(from); - if(value == null) - continue; - //集合类判空处理 - if(value instanceof Collection) { - Collection newValue = (Collection)value; - if(newValue.size() <= 0) - continue; - } - toMethod.invoke(to, value); - } - } - - - - /** - * 从方法数组中获取指定名称的方法 - * - * @param methods - * @param name - * @return - */ - public static Method findMethodByName(Method[] methods, String name) { - for (int j = 0; j < methods.length; j++) { - if (methods[j].getName().equals(name)) - return methods[j]; - } - return null; - } -} diff --git a/app/src/main/java/xyz/fycz/myreader/util/DownloadMangerUtils.java b/app/src/main/java/xyz/fycz/myreader/util/DownloadMangerUtils.java deleted file mode 100644 index f8f65f1..0000000 --- a/app/src/main/java/xyz/fycz/myreader/util/DownloadMangerUtils.java +++ /dev/null @@ -1,431 +0,0 @@ -package xyz.fycz.myreader.util; - -import android.Manifest; -import android.app.DownloadManager; -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.content.IntentFilter; -import android.content.pm.PackageManager; -import android.net.Uri; -import android.os.Build; -import android.os.Environment; -import android.util.Log; - -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.app.ActivityCompat; -import androidx.core.content.ContextCompat; - -import java.util.HashMap; -import java.util.Map; - -import xyz.fycz.myreader.common.APPCONST; -import xyz.fycz.myreader.ui.dialog.DialogCreator; - -import static android.app.DownloadManager.Request.VISIBILITY_HIDDEN; - - - -public class DownloadMangerUtils { - - public static final String FILE_DIR = "gxdw"; - private static Map mBroadcastReceiverMap = new HashMap<>(); - - /** - * 文件下载 - * - * @param context - * @param fileDir - * @param url - * @param fileName - */ - public static void downloadFile(Context context, String fileDir, String url, String fileName) { - - try { - Log.d("http download:", url); - //String Url = "10.10.123.16:8080/gxqdw_ubap/mEmailController.thumb?getAttachmentStream&fileId=1&fileName=自我探索——我是谁.ppt&emailId=36&token=d1828248-cc71-4719-8218-adc31ffc9cca&type=inbox&fileSize=14696446"; - - DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url)); - // DownloadManager.Request.setDestinationInExternalPublicDir(); - - request.setDescription(fileName); - request.setTitle("附件"); - // in order for this if to run, you must use the android 3.2 to compile your app - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { - request.allowScanningByMediaScanner(); - request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); - // request.setNotificationVisibility(VISIBILITY_HIDDEN); - } - // int i = Build.VERSION.SDK_INT; - if (Build.VERSION.SDK_INT > 17) { - request.setDestinationInExternalPublicDir(fileDir, fileName); - } else { - if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { - request.setDestinationInExternalPublicDir(fileDir, fileName); - } else { - Log.d("download", "android版本过低,不存在外部存储,下载路径无法指定,默认路径:/data/data/com.android.providers.downloads/cache/"); - DialogCreator.createCommonDialog(context, "文件下载", "android版本过低或系统兼容性问题,不存在外部存储,无法指定下载路径,文件下载到系统默认路径,请到文件管理搜索文件名", true, - "关闭", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - } - }); - - } - } - // get download service and enqueue file - DownloadManager manager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE); - manager.enqueue(request); - } catch (Exception e) { - e.printStackTrace(); - lowVersionNoSDDownload(context, url, fileName); - } - } - - /** - * 低版本无外置存储下载 - * - * @param context - * @param url - * @param fileName - */ - private static void lowVersionNoSDDownload(Context context, String url, String fileName) { - try { - Log.d("http download:", url); - //String Url = "10.10.123.16:8080/gxqdw_ubap/mEmailController.thumb?getAttachmentStream&fileId=1&fileName=自我探索——我是谁.ppt&emailId=36&token=d1828248-cc71-4719-8218-adc31ffc9cca&type=inbox&fileSize=14696446"; - - DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url)); - // DownloadManager.Request.setDestinationInExternalPublicDir(); - - request.setDescription(fileName); - request.setTitle("附件"); - // in order for this if to run, you must use the android 3.2 to compile your app - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { - request.allowScanningByMediaScanner(); - request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); - // request.setNotificationVisibility(VISIBILITY_HIDDEN); - } - // int i = Build.VERSION.SDK_INT; - - if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { - request.setDestinationInExternalPublicDir(APPCONST.FILE_DIR, fileName); - } else { - Log.d("download", "android版本过低,不存在外部存储,下载路径无法指定,默认路径:/data/data/com.android.providers.downloads/cache/"); - DialogCreator.createCommonDialog(context, "文件下载", "android版本过低或系统兼容性问题,不存在外部存储,无法指定下载路径,文件下载到系统默认路径,请到文件管理搜索文件名", true, - "关闭", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - } - }); - } - // get download service and enqueue file - DownloadManager manager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE); - manager.enqueue(request); - } catch (Exception e) { - e.printStackTrace(); - ToastUtils.showError("下载错误:" + e.getLocalizedMessage()); - } - - } - - - /** - * 文件下载(有回调,无通知) - * - * @param context - * @param fileDir - * @param fileName - * @param url - * @param listener - */ - public static void downloadFileByFinishListener(Context context, String fileDir, String fileName, String url, - final DownloadCompleteListener listener) { - try { - if (isPermission(context)) { - Log.d("http download:", url); -// String Url = "10.10.123.16:8080/gxqdw_ubap/mEmailController.thumb?getAttachmentStream&fileId=1&fileName=自我探索——我是谁.ppt&emailId=36&token=d1828248-cc71-4719-8218-adc31ffc9cca&type=inbox&fileSize=14696446"; - - DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url)); -// DownloadManager.Request.setDestinationInExternalPublicDir(); - - /* request.setDescription(fileName); - request.setTitle("附件");*/ -// in order for this if to run, you must use the android 3.2 to compile your app - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { - request.allowScanningByMediaScanner(); -// request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); - request.setNotificationVisibility(VISIBILITY_HIDDEN); - } -// int i = Build.VERSION.SDK_INT; - if (Build.VERSION.SDK_INT > 17) { - request.setDestinationInExternalPublicDir(fileDir, fileName); - } else { - if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { - request.setDestinationInExternalPublicDir(fileDir, fileName); - } else { - Log.i("download", "android版本过低,不存在外部存储,下载路径无法指定,默认路径:/data/data/com.android.providers.downloads/cache/"); - } - } -// get download service and enqueue file - final DownloadManager manager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE); - - final long id = manager.enqueue(request); - // 注册广播监听系统的下载完成事件。 - IntentFilter intentFilter = new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE); - - final BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - long ID = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1); - if (ID == id) { - listener.onFinish(manager.getUriForDownloadedFile(id)); - context.unregisterReceiver(mBroadcastReceiverMap.get(id)); - mBroadcastReceiverMap.remove(id); - /* Toast.makeText(getApplicationContext(), "任务:" + Id + " 下载完成!", Toast.LENGTH_LONG).show();*/ - } - } - }; - context.registerReceiver(broadcastReceiver, intentFilter); - mBroadcastReceiverMap.put(id, broadcastReceiver); - } - } catch (Exception e) { - lowVersionNoSDDownloadFileByFinishListener(context, fileDir, fileName, url, listener); -// listener.onError(e.toString()); - } - - } - - /** - * 低版本无外置存储文件下载(有回调,无通知) - * - * @param context - * @param fileDir - * @param fileName - * @param url - * @param listener - */ - private static void lowVersionNoSDDownloadFileByFinishListener(Context context, String fileDir, String fileName, String url, - final DownloadCompleteListener listener) { - try { - - Log.d("http download:", url); -// String Url = "10.10.123.16:8080/gxqdw_ubap/mEmailController.thumb?getAttachmentStream&fileId=1&fileName=自我探索——我是谁.ppt&emailId=36&token=d1828248-cc71-4719-8218-adc31ffc9cca&type=inbox&fileSize=14696446"; - - DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url)); -// DownloadManager.Request.setDestinationInExternalPublicDir(); - - /* request.setDescription(fileName); - request.setTitle("附件");*/ -// in order for this if to run, you must use the android 3.2 to compile your app - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { - request.allowScanningByMediaScanner(); -// request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); - request.setNotificationVisibility(VISIBILITY_HIDDEN); - } -// int i = Build.VERSION.SDK_INT; - - if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { - request.setDestinationInExternalPublicDir(APPCONST.FILE_DIR, fileName); - } else { - Log.d("download", "android版本过低,不存在外部存储,下载路径无法指定,默认路径:/data/data/com.android.providers.downloads/cache/"); - } - -// get download service and enqueue file - final DownloadManager manager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE); - - final long id = manager.enqueue(request); - // 注册广播监听系统的下载完成事件。 - IntentFilter intentFilter = new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE); - - final BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - long ID = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1); - if (ID == id) { - listener.onFinish(manager.getUriForDownloadedFile(id)); - context.unregisterReceiver(mBroadcastReceiverMap.get(id)); - mBroadcastReceiverMap.remove(id); - /* Toast.makeText(getApplicationContext(), "任务:" + Id + " 下载完成!", Toast.LENGTH_LONG).show();*/ - } - } - }; - context.registerReceiver(broadcastReceiver, intentFilter); - mBroadcastReceiverMap.put(id, broadcastReceiver); - - } catch (Exception e) { - listener.onError(e.toString()); - } - - } - - /** - * 文件下载(有回调,有通知) - * - * @param context - * @param fileDir - * @param fileName - * @param url - * @param title - * @param listener - */ - public static void downloadFileOnNotificationByFinishListener(final Context context, final String fileDir, final String fileName, final String url, - final String title, final DownloadCompleteListener listener) { - try { - if (isPermission(context)) { - Log.d("http download:", url); - - DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url)); - request.setTitle(title); - - // in order for this if to run, you must use the android 3.2 to compile your app - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { - request.allowScanningByMediaScanner(); - request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE); - } - - if (Build.VERSION.SDK_INT > 17) { - /* File file = new File(Environment.getExternalStorageDirectory() + "/gxdw/apk/app_gxdw_186.apk"); - if (!file.exists()){ - boolean flag = file.createNewFile(); - }*/ - request.setDestinationInExternalPublicDir(fileDir, fileName); - - } else { - if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { - request.setDestinationInExternalPublicDir(fileDir, fileName); - } else { - Log.d("download", "android版本过低,不存在外部存储,下载路径无法指定,默认路径:/data/data/com.android.providers.downloads/cache/"); - } - } - -// get download service and enqueue file - final DownloadManager manager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE); - - final long id = manager.enqueue(request); - // 注册广播监听系统的下载完成事件。 - IntentFilter intentFilter = new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE); - - final BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - long ID = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1); - if (ID == id) { - listener.onFinish(manager.getUriForDownloadedFile(id)); - context.unregisterReceiver(mBroadcastReceiverMap.get(id)); - mBroadcastReceiverMap.remove(id); - /* Toast.makeText(getApplicationContext(), "任务:" + Id + " 下载完成!", Toast.LENGTH_LONG).show();*/ - } - } - }; - context.registerReceiver(broadcastReceiver, intentFilter); - mBroadcastReceiverMap.put(id, broadcastReceiver); - } - } catch (Exception e) { - e.printStackTrace(); - lowVersionDownloadFileOnNotificationByFinishListener(context, fileDir, fileName, url, title, listener); - } - } - - /** - * 低版本文件下载(有回调,有通知) - * - * @param context - * @param fileDir - * @param fileName - * @param url - * @param title - * @param listener - */ - private static void lowVersionDownloadFileOnNotificationByFinishListener(final Context context, final String fileDir, final String fileName, final String url, - final String title, final DownloadCompleteListener listener) { - - - try { - - Log.d("http download:", url); - - DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url)); - request.setTitle(title); - -// in order for this if to run, you must use the android 3.2 to compile your app - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { - request.allowScanningByMediaScanner(); - request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE); - - } - - if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { - request.setDestinationInExternalPublicDir(APPCONST.FILE_DIR, fileName); - } else { - Log.d("download", "android版本过低,不存在外部存储,下载路径无法指定,默认路径:/data/data/com.android.providers.downloads/cache/"); - } - - - // get download service and enqueue file - final DownloadManager manager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE); - - final long id = manager.enqueue(request); - // 注册广播监听系统的下载完成事件。 - IntentFilter intentFilter = new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE); - - final BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - long ID = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1); - if (ID == id) { - listener.onFinish(manager.getUriForDownloadedFile(id)); - context.unregisterReceiver(mBroadcastReceiverMap.get(id)); - mBroadcastReceiverMap.remove(id); - } - } - }; - context.registerReceiver(broadcastReceiver, intentFilter); - mBroadcastReceiverMap.put(id, broadcastReceiver); - - } catch (Exception e) { - e.printStackTrace(); - listener.onError(e.toString()); - } - - - } - - - /** - * 读写权限判断 - * - * @param context - * @return - */ - public static boolean isPermission(Context context) { - boolean permission = false; - if (Build.VERSION.SDK_INT >= 23) { - int checkReadPhoneStatePermission = ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE); - if (checkReadPhoneStatePermission != PackageManager.PERMISSION_GRANTED) { - // 弹出对话框接收权限 - ActivityCompat.requestPermissions((AppCompatActivity) context, new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); - ToastUtils.showWarring("当前应用未拥有存储设备读写权限"); - } else if (ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { - // 弹出对话框接收权限 - ActivityCompat.requestPermissions((AppCompatActivity) context, new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); - ToastUtils.showWarring("当前应用未拥有存储设备读写权限"); - } else { - permission = true; - } - } else { - permission = true; - } - return permission; - } - - public interface DownloadCompleteListener { - void onFinish(Uri uri); - - void onError(String s); - } - - -} diff --git a/app/src/main/java/xyz/fycz/myreader/util/IdHelper.java b/app/src/main/java/xyz/fycz/myreader/util/IdHelper.java deleted file mode 100644 index 9999d19..0000000 --- a/app/src/main/java/xyz/fycz/myreader/util/IdHelper.java +++ /dev/null @@ -1,14 +0,0 @@ -package xyz.fycz.myreader.util; - - - -public class IdHelper { - - public static String getId(){ - java.util.Date date = new java.util.Date(); - int rand = (int)(1+ Math.random()*(25-0+1)); -// char c = (char) ('a' + rand); - return String.valueOf(date.getTime()%100000000); - - } -} diff --git a/app/src/main/java/xyz/fycz/myreader/util/Lunar.java b/app/src/main/java/xyz/fycz/myreader/util/Lunar.java deleted file mode 100644 index 138b6c8..0000000 --- a/app/src/main/java/xyz/fycz/myreader/util/Lunar.java +++ /dev/null @@ -1,266 +0,0 @@ -package xyz.fycz.myreader.util; - -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Date; - - - -public class Lunar -{ - private int year; - private int month; - private int day; - private boolean leap; - final static String chineseNumber[] = - { "一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二" }; - final static String Big_Or_Small[] = - { "大", "小", "大", "小", "大", "小", "大", "大", "小", "大", "小", "大" }; - private String[] LunarHolDayName = - { "小寒", "大寒", "立春", "雨水", "惊蛰", "春分", "清明", "谷雨", "立夏", "小满", "芒种", "夏至", - "小暑", "大暑", "立秋", "处暑", "白露", "秋分", "寒露", "霜降", "立冬", "小雪", "大雪", - "冬至" }; - - static SimpleDateFormat chineseDateFormat = new SimpleDateFormat(" yyyy年MM月dd日 "); - final static long[] lunarInfo = new long[] - { 0x04bd8, 0x04ae0, 0x0a570, 0x054d5, 0x0d260, 0x0d950, 0x16554, 0x056a0, - 0x09ad0, 0x055d2, 0x04ae0, 0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, - 0x0b540, 0x0d6a0, 0x0ada2, 0x095b0, 0x14977, 0x04970, 0x0a4b0, - 0x0b4b5, 0x06a50, 0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, - 0x04970, 0x06566, 0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, 0x02b60, - 0x186e3, 0x092e0, 0x1c8d7, 0x0c950, 0x0d4a0, 0x1d8a6, 0x0b550, - 0x056a0, 0x1a5b4, 0x025d0, 0x092d0, 0x0d2b2, 0x0a950, 0x0b557, - 0x06ca0, 0x0b550, 0x15355, 0x04da0, 0x0a5d0, 0x14573, 0x052d0, - 0x0a9a8, 0x0e950, 0x06aa0, 0x0aea6, 0x0ab50, 0x04b60, 0x0aae4, - 0x0a570, 0x05260, 0x0f263, 0x0d950, 0x05b57, 0x056a0, 0x096d0, - 0x04dd5, 0x04ad0, 0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, - 0x0b5a0, 0x195a6, 0x095b0, 0x049b0, 0x0a974, 0x0a4b0, 0x0b27a, - 0x06a50, 0x06d40, 0x0af46, 0x0ab60, 0x09570, 0x04af5, 0x04970, - 0x064b0, 0x074a3, 0x0ea50, 0x06b58, 0x055c0, 0x0ab60, 0x096d5, - 0x092e0, 0x0c960, 0x0d954, 0x0d4a0, 0x0da50, 0x07552, 0x056a0, - 0x0abb7, 0x025d0, 0x092d0, 0x0cab5, 0x0a950, 0x0b4a0, 0x0baa4, - 0x0ad50, 0x055d9, 0x04ba0, 0x0a5b0, 0x15176, 0x052b0, 0x0a930, - 0x07954, 0x06aa0, 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, 0x0a4e0, - 0x0d260, 0x0ea65, 0x0d530, 0x05aa0, 0x076a3, 0x096d0, 0x04bd7, - 0x04ad0, 0x0a4d0, 0x1d0b6, 0x0d250, 0x0d520, 0x0dd45, 0x0b5a0, - 0x056d0, 0x055b2, 0x049b0, 0x0a577, 0x0a4b0, 0x0aa50, 0x1b255, - 0x06d20, 0x0ada0 }; - - // ====== 传回农历 y年的总天数 - final private static int yearDays(int y) - { - int i, sum = 348; - for (i = 0x8000; i > 0x8; i >>= 1) - { - if ((lunarInfo[y - 1900] & i) != 0) - sum += 1; - } - return (sum + leapDays(y)); - } - - // ====== 传回农历 y年闰月的天数 - final private static int leapDays(int y) - { - if (leapMonth(y) != 0) - { - if ((lunarInfo[y - 1900] & 0x10000) != 0) - return 30; - else - return 29; - } - else - return 0; - } - - // ====== 传回农历 y年闰哪个月 1-12 , 没闰传回 0 - final private static int leapMonth(int y) - { - return (int) (lunarInfo[y - 1900] & 0xf); - } - - // ====== 传回农历 y年m月的总天数 - final private static int monthDays(int y, int m) - { - if ((lunarInfo[y - 1900] & (0x10000 >> m)) == 0) - return 29; - else - return 30; - } - - // ====== 传回农历 y年的生肖 - final public String animalsYear() - { - final String[] Animals = new String[] - { "鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊", "猴", "鸡", "狗", "猪" }; - return Animals[(year - 4) % 12]; - } - - // ====== 传入 月日的offset 传回干支, 0=甲子 - final private static String cyclicalm(int num) - { - final String[] Gan = new String[] - { "甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸" }; - final String[] Zhi = new String[] - { "子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥" }; - return (Gan[num % 10] + Zhi[num % 12]); - } - - // ====== 传入 offset 传回干支, 0=甲子 - final public String cyclical() - { - int num = year - 1900 + 36; - return (cyclicalm(num)); - } - - /** */ - /** - * 传出y年m月d日对应的农历. yearCyl3:农历年与1864的相差数 ? monCyl4:从1900年1月31日以来,闰月数 - * dayCyl5:与1900年1月31日相差的天数,再加40 ? - * - * @param cal - * @return - */ - public Lunar(Calendar cal) - { - // cal.add(cal.get(Calendar.DAY_OF_MONTH),1); - @SuppressWarnings(" unused ") - int yearCyl, monCyl, dayCyl; - int leapMonth = 0; - Date baseDate = null; - try - { - baseDate = chineseDateFormat.parse(" 1900年1月31日 "); - } - catch (ParseException e) - { - e.printStackTrace(); // To change body of catch statement use - // Options | File Templates. - } - - // 求出和1900年1月31日相差的天数 - int offset = (int) ((cal.getTime().getTime() - baseDate.getTime()) / 86400000L); - dayCyl = offset + 40; - monCyl = 14; - - // 用offset减去每农历年的天数 - // 计算当天是农历第几天 - // i最终结果是农历的年份 - // offset是当年的第几天 - int iYear, daysOfYear = 0; - for (iYear = 1900; iYear < 2050 && offset > 0; iYear++) - { - daysOfYear = yearDays(iYear); - offset -= daysOfYear; - monCyl += 12; - } - if (offset < 0) - { - offset += daysOfYear; - iYear--; - monCyl -= 12; - } - // 农历年份 - year = iYear; - - yearCyl = iYear - 1864; - leapMonth = leapMonth(iYear); // 闰哪个月,1-12 - leap = false; - - // 用当年的天数offset,逐个减去每月(农历)的天数,求出当天是本月的第几天 - int iMonth, daysOfMonth = 0; - for (iMonth = 1; iMonth < 13 && offset > 0; iMonth++) - { - // 闰月 - if (leapMonth > 0 && iMonth == (leapMonth + 1) && !leap) - { - --iMonth; - leap = true; - daysOfMonth = leapDays(year); - } - else - daysOfMonth = monthDays(year, iMonth); - - offset -= daysOfMonth; - // 解除闰月 - if (leap && iMonth == (leapMonth + 1)) - leap = false; - if (!leap) - monCyl++; - } - // offset为0时,并且刚才计算的月份是闰月,要校正 - if (offset == 0 && leapMonth > 0 && iMonth == leapMonth + 1) - { - if (leap) - { - leap = false; - } - else - { - leap = true; - --iMonth; - --monCyl; - } - } - // offset小于0时,也要校正 - if (offset < 0) - { - offset += daysOfMonth; - --iMonth; - --monCyl; - } - month = iMonth; - day = offset + 1; - } - - public static String getChinaDayString(int day) - { - String chineseTen[] = - { "初", "十", "廿", "卅" }; - int n = day % 10 == 0 ? 9 : day % 10 - 1; - if (day > 30) - return ""; - if (day == 10) - return "初十"; - else - return chineseTen[day / 10] + chineseNumber[n]; - } - - public String toString() - { - return /* cyclical() + "年" + */(leap ? "闰" : "") - + chineseNumber[month - 1] + "月" + getChinaDayString(day); - } - - public String numeric_md() - {// 返回阿拉伯数字的阴历日期 - String temp_day; - String temp_mon; - temp_mon = month < 10 ? "0" + month : "" + month; - temp_day = day < 10 ? "0" + day : "" + day; - - return temp_mon + temp_day; - } - - public String get_month() - {// 返回阴历的月份 - return chineseNumber[month - 1]; - } - - public String get_date(int year, int month, int date) - { - /* // 返回阴历的天 - LunarCalendar lunarCalendar = LunarCalendar.getInstance(); - String str = lunarCalendar.CalculateLunarCalendar(year,month,date); - if(StringHelper.isEmpty(str)){ - str = getChinaDayString(day); - }*/ - return getChinaDayString(day); - } - - public String get_Big_Or_Small() - {// 返回的月份的大或小 - return Big_Or_Small[month - 1]; - } - -} \ No newline at end of file diff --git a/app/src/main/java/xyz/fycz/myreader/util/LunarCalendar.java b/app/src/main/java/xyz/fycz/myreader/util/LunarCalendar.java deleted file mode 100644 index 995427d..0000000 --- a/app/src/main/java/xyz/fycz/myreader/util/LunarCalendar.java +++ /dev/null @@ -1,326 +0,0 @@ -package xyz.fycz.myreader.util; - - - -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Date; - -public class LunarCalendar { - - private int lyear; - - private int lmonth; - - private int lday; - - private boolean leap; - - private String solarTerms = ""; - - private int yearCyl, monCyl, dayCyl; - - private String solarFestival = ""; - - private String lunarFestival = ""; - - private Calendar baseDate = Calendar.getInstance(); - - private Calendar offDate = Calendar.getInstance(); - - private SimpleDateFormat chineseDateFormat = new SimpleDateFormat( - "yyyy年MM月dd日"); - - final static long[] lunarInfo = new long[]{0x04bd8, 0x04ae0, 0x0a570, - 0x054d5, 0x0d260, 0x0d950, 0x16554, 0x056a0, 0x09ad0, 0x055d2, - 0x04ae0, 0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, 0x0b540, 0x0d6a0, - 0x0ada2, 0x095b0, 0x14977, 0x04970, 0x0a4b0, 0x0b4b5, 0x06a50, - 0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, 0x04970, 0x06566, - 0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, 0x02b60, 0x186e3, 0x092e0, - 0x1c8d7, 0x0c950, 0x0d4a0, 0x1d8a6, 0x0b550, 0x056a0, 0x1a5b4, - 0x025d0, 0x092d0, 0x0d2b2, 0x0a950, 0x0b557, 0x06ca0, 0x0b550, - 0x15355, 0x04da0, 0x0a5d0, 0x14573, 0x052d0, 0x0a9a8, 0x0e950, - 0x06aa0, 0x0aea6, 0x0ab50, 0x04b60, 0x0aae4, 0x0a570, 0x05260, - 0x0f263, 0x0d950, 0x05b57, 0x056a0, 0x096d0, 0x04dd5, 0x04ad0, - 0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, 0x0b5a0, 0x195a6, - 0x095b0, 0x049b0, 0x0a974, 0x0a4b0, 0x0b27a, 0x06a50, 0x06d40, - 0x0af46, 0x0ab60, 0x09570, 0x04af5, 0x04970, 0x064b0, 0x074a3, - 0x0ea50, 0x06b58, 0x055c0, 0x0ab60, 0x096d5, 0x092e0, 0x0c960, - 0x0d954, 0x0d4a0, 0x0da50, 0x07552, 0x056a0, 0x0abb7, 0x025d0, - 0x092d0, 0x0cab5, 0x0a950, 0x0b4a0, 0x0baa4, 0x0ad50, 0x055d9, - 0x04ba0, 0x0a5b0, 0x15176, 0x052b0, 0x0a930, 0x07954, 0x06aa0, - 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, 0x0a4e0, 0x0d260, 0x0ea65, - 0x0d530, 0x05aa0, 0x076a3, 0x096d0, 0x04bd7, 0x04ad0, 0x0a4d0, - 0x1d0b6, 0x0d250, 0x0d520, 0x0dd45, 0x0b5a0, 0x056d0, 0x055b2, - 0x049b0, 0x0a577, 0x0a4b0, 0x0aa50, 0x1b255, 0x06d20, 0x0ada0}; - - final static String[] Gan = new String[]{"甲", "乙", "丙", "丁", "戊", "己", - "庚", "辛", "壬", "癸"}; - - final static String[] Zhi = new String[]{"子", "丑", "寅", "卯", "辰", "巳", - "午", "未", "申", "酉", "戌", "亥"}; - - final static String[] Animals = new String[]{"鼠", "牛", "虎", "兔", "龙", - "蛇", "马", "羊", "猴", "鸡", "狗", "猪"}; - - final static String[] SolarTerm = new String[]{"小寒", "大寒", "立春", "雨水", - "惊蛰", "春分", "清明", "谷雨", "立夏", "小满", "芒种", "夏至", "小暑", "大暑", "立秋", - "处暑", "白露", "秋分", "寒露", "霜降", "立冬", "小雪", "大雪", "冬至"}; - final static long[] STermInfo = new long[]{0, 21208, 42467, 63836, 85337, - 107014, 128867, 150921, 173149, 195551, 218072, 240693, 263343, - 285989, 308563, 331033, 353350, 375494, 397447, 419210, 440795, - 462224, 483532, 504758}; - - final static String chineseMonthNumber[] = {"正", "二", "三", "四", "五", "六", - "七", "八", "九", "十", "冬", "腊"}; - - final static String[] sFtv = new String[]{"0101*元旦", "0214 情人节", - "0308 妇女节", "0312 植树节", /*"0314 国际警察日", "0315 消费者权益日", "0323 世界气象日",*/ - "0401 愚人节", /*"0407 世界卫生日",*/ "0501*劳动节", "0504 青年节", /*"0508 红十字日",*/ - "0512 护士节", /*"0515 国际家庭日", "0517 世界电信日", "0519 全国助残日", "0531 世界无烟日",*/ - "0601 儿童节", /*"0605 世界环境日", "0606 全国爱眼日", "0623 奥林匹克日", "0625 全国土地日",*/ - /*"0626 反毒品日",*/ "0701 建党节", /*"0707 抗战纪念日", "0711 世界人口日",*/ "0801 建军节", - /* "0908 国际扫盲日", "0909 毛xx逝世纪念",*/ "0910 教师节", /*"0917 国际和平日",*/ - /* "0920 国际爱牙日", "0922 国际聋人节", "0927 世界旅游日", "0928 孔子诞辰",*/ "1001*国庆节", - /* "1004 世界动物日", "1006 老人节", "1007 国际住房日", "1009 世界邮政日", "1015 国际盲人节",*/ - /* "1016 世界粮食日", "1024 联合国日", */"1031 万圣节",/* "1108 中国记者日", "1109 消防宣传日",*/ - /* "1112 孙中山诞辰", "1114 世界糖尿病日", "1117 国际大学生节",*/ "1128 感恩节", - /* "1201 世界艾滋病日", "1203 世界残疾人日", "1209 世界足球日", "1220 澳门回归",*/ - "1225 圣诞节", /*"1226 毛xx诞辰"*/}; - - final static String[] lFtv = {"0101*春节", "0115 元宵", "0505 端午", - "0707 七夕", "0815 中秋", "0909 重阳", "1208 腊八", "1223 小年", - "0100*除夕"}; - - final static String[] wFtv = {"0521 母亲节", "0631 父亲节"};//每年6月第3个星期日是父亲节,5月的第2个星期日是母亲节 - - //星期日是一个周的第1天第3个星期日也就是第3个完整周的第一天 - - // - private LunarCalendar() { - baseDate.setMinimalDaysInFirstWeek(7);//设置一个月的第一个周是一个完整周 - - } - - final private static int lYearDays(int y)//====== 传回农历 y年的总天数 - { - int i, sum = 348; - for (i = 0x8000; i > 0x8; i >>= 1) { - if ((lunarInfo[y - 1900] & i) != 0) - sum += 1; - } - return (sum + leapDays(y)); - } - - final private static int leapDays(int y)//====== 传回农历 y年闰月的天数 - { - if (leapMonth(y) != 0) { - if ((lunarInfo[y - 1900] & 0x10000) != 0) - return 30; - else - return 29; - } else - return 0; - } - - final private static int leapMonth(int y)//====== 传回农历 y年闰哪个月 1-12 , 没闰传回 0 - { - return (int) (lunarInfo[y - 1900] & 0xf); - } - - final public static int monthDays(int y, int m)//====== 传回农历 y年m月的总天数 - { - if ((lunarInfo[y - 1900] & (0x10000 >> m)) == 0) - return 29; - else - return 30; - } - - final private static String AnimalsYear(int y)//====== 传回农历 y年的生肖 - { - - return Animals[(y - 4) % 12]; - } - - final private static String cyclical(int num)//====== 传入 的offset 传回干支, - // 0=甲子 - { - - return (Gan[num % 10] + Zhi[num % 12]); - } - - // ===== 某年的第n个节气为几日(从0小寒起算) - final private int sTerm(int y, int n) { - - offDate.set(1900, 0, 6, 2, 5, 0); - long temp = offDate.getTime().getTime(); - offDate - .setTime(new Date( - (long) ((31556925974.7 * (y - 1900) + STermInfo[n] * 60000L) + temp))); - - return offDate.get(Calendar.DAY_OF_MONTH); - } - - /** - * 传出y年m月d日对应的农历. - */ - public String CalculateLunarCalendar(int y, int m, int d) { - - int leapMonth = 0; - - try { - baseDate.setTime(chineseDateFormat.parse("1900年1月31日")); - - } catch (ParseException e) { - e.printStackTrace(); - } - long base = baseDate.getTimeInMillis(); - try { - baseDate.setTime(chineseDateFormat.parse(y + "年" + m + "月" + d - + "日")); - - } catch (ParseException e) { - e.printStackTrace(); - } - long obj = baseDate.getTimeInMillis(); - - - int offset = (int) ((obj - base) / 86400000L); - //System.out.println(offset); - //求出和1900年1月31日相差的天数 - - dayCyl = offset + 40;//干支天 - monCyl = 14;//干支月 - - //用offset减去每农历年的天数 - // 计算当天是农历第几天 - //i最终结果是农历的年份 - //offset是当年的第几天 - int iYear, daysOfYear = 0; - for (iYear = 1900; iYear < 2050 && offset > 0; iYear++) { - daysOfYear = lYearDays(iYear); - offset -= daysOfYear; - monCyl += 12; - } - if (offset < 0) { - offset += daysOfYear; - iYear--; - monCyl -= 12; - } - //农历年份 - lyear = iYear; - - yearCyl = iYear - 1864;//***********干支年**********// - - leapMonth = leapMonth(iYear); //闰哪个月,1-12 - leap = false; - - //用当年的天数offset,逐个减去每月(农历)的天数,求出当天是本月的第几天 - int iMonth, daysOfMonth = 0; - for (iMonth = 1; iMonth < 13 && offset > 0; iMonth++) { - //闰月 - if (leapMonth > 0 && iMonth == (leapMonth + 1) && !leap) { - --iMonth; - leap = true; - daysOfMonth = leapDays(iYear); - } else - daysOfMonth = monthDays(iYear, iMonth); - - offset -= daysOfMonth; - //解除闰月 - if (leap && iMonth == (leapMonth + 1)) - leap = false; - if (!leap) - monCyl++; - } - //offset为0时,并且刚才计算的月份是闰月,要校正 - if (offset == 0 && leapMonth > 0 && iMonth == leapMonth + 1) { - if (leap) { - leap = false; - } else { - leap = true; - --iMonth; - --monCyl; - } - } - //offset小于0时,也要校正 - if (offset < 0) { - offset += daysOfMonth; - --iMonth; - --monCyl; - } - lmonth = iMonth; - lday = offset + 1; - - //******************计算节气**********// - - if (d == sTerm(y, (m - 1) * 2)) - solarTerms = SolarTerm[(m - 1) * 2]; - else if (d == sTerm(y, (m - 1) * 2 + 1)) - solarTerms = SolarTerm[(m - 1) * 2 + 1]; - else - solarTerms = ""; - - //计算公历节日 - this.solarFestival = ""; - for (int i = 0; i < sFtv.length; i++) { - if (Integer.parseInt(sFtv[i].substring(0, 2)) == m - && Integer.parseInt(sFtv[i].substring(2, 4)) == d) { - solarFestival = sFtv[i].substring(5); - break; - } - } - //计算农历节日 - this.lunarFestival = ""; - for (int i = 0; i < lFtv.length; i++) { - if (Integer.parseInt(lFtv[i].substring(0, 2)) == lmonth - && Integer.parseInt(lFtv[i].substring(2, 4)) == lday) { - lunarFestival = lFtv[i].substring(5); - break; - } - } - //计算月周节日 - - // System.out.println(baseDate.get(Calendar.WEEK_OF_MONTH) + "" - // + baseDate.get(Calendar.DAY_OF_WEEK)); - - for (int i = 0; i < wFtv.length; i++) { - if (Integer.parseInt(wFtv[i].substring(0, 2)) == m - && Integer.parseInt(wFtv[i].substring(2, 3)) == baseDate - .get(Calendar.WEEK_OF_MONTH) - && Integer.parseInt(wFtv[i].substring(3, 4)) == baseDate - .get(Calendar.DAY_OF_WEEK)) { - solarFestival += wFtv[i].substring(5); - } - } - if(!StringHelper.isEmpty(lunarFestival)){ - return lunarFestival; - } - if(!StringHelper.isEmpty(solarFestival)){ - return solarFestival; - } - if(!StringHelper.isEmpty(solarTerms)){ - return solarTerms; - } - return ""; - - } - - //set方法 - public void set(int y, int m, int d) { - - CalculateLunarCalendar(y, m, d); - } - - public void set(Calendar cal) { - - CalculateLunarCalendar(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH) + 1, cal.get(Calendar.DAY_OF_MONTH)); - } - - // //get方法组 - public static LunarCalendar getInstance() { - - return new LunarCalendar(); - } -} \ No newline at end of file diff --git a/app/src/main/java/xyz/fycz/myreader/util/ToastUtils.java b/app/src/main/java/xyz/fycz/myreader/util/ToastUtils.java index 4458487..ac4d836 100644 --- a/app/src/main/java/xyz/fycz/myreader/util/ToastUtils.java +++ b/app/src/main/java/xyz/fycz/myreader/util/ToastUtils.java @@ -1,5 +1,7 @@ package xyz.fycz.myreader.util; +import android.os.Build; +import android.widget.Toast; import androidx.annotation.NonNull; import es.dmoral.toasty.Toasty; import xyz.fycz.myreader.R; @@ -16,50 +18,76 @@ public class ToastUtils { } public static void show(@NonNull String msg) { - MyApplication.runOnUiThread(() -> Toasty.custom(MyApplication.getmContext(), msg, - MyApplication.getmContext().getDrawable(R.drawable.ic_smile_face), - MyApplication.getmContext().getColor(R.color.toast_default), - MyApplication.getmContext().getColor(R.color.white), - Toasty.LENGTH_SHORT, true, true).show()); + MyApplication.runOnUiThread(() -> { + if (showOld(msg)) return; + Toasty.custom(MyApplication.getmContext(), msg, + MyApplication.getmContext().getDrawable(R.drawable.ic_smile_face), + MyApplication.getmContext().getColor(R.color.toast_default), + MyApplication.getmContext().getColor(R.color.white), + Toasty.LENGTH_SHORT, true, true).show(); + }); } //红色 public static void showError(@NonNull String msg) { - MyApplication.runOnUiThread(() -> Toasty.custom(MyApplication.getmContext(), msg, - MyApplication.getmContext().getDrawable(R.drawable.ic_error), - MyApplication.getmContext().getColor(R.color.toast_red), - MyApplication.getmContext().getColor(R.color.white), - Toasty.LENGTH_SHORT, true, true).show()); + MyApplication.runOnUiThread(() -> { + if (showOld(msg)) return; + Toasty.custom(MyApplication.getmContext(), msg, + MyApplication.getmContext().getDrawable(R.drawable.ic_error), + MyApplication.getmContext().getColor(R.color.toast_red), + MyApplication.getmContext().getColor(R.color.white), + Toasty.LENGTH_SHORT, true, true).show(); + }); } //绿色 public static void showSuccess(@NonNull String msg) { - MyApplication.runOnUiThread(() -> Toasty.custom(MyApplication.getmContext(), msg, - MyApplication.getmContext().getDrawable(R.drawable.ic_success), - MyApplication.getmContext().getColor(R.color.toast_green), - MyApplication.getmContext().getColor(R.color.white), - Toasty.LENGTH_SHORT, true, true).show()); + MyApplication.runOnUiThread(() -> { + if (showOld(msg)) return; + Toasty.custom(MyApplication.getmContext(), msg, + MyApplication.getmContext().getDrawable(R.drawable.ic_success), + MyApplication.getmContext().getColor(R.color.toast_green), + MyApplication.getmContext().getColor(R.color.white), + Toasty.LENGTH_SHORT, true, true).show(); + }); } //蓝色 public static void showInfo(@NonNull String msg) { - MyApplication.runOnUiThread(() -> Toasty.custom(MyApplication.getmContext(), msg, - MyApplication.getmContext().getDrawable(R.drawable.ic_smile_face), - MyApplication.getmContext().getColor(R.color.toast_blue), - MyApplication.getmContext().getColor(R.color.white), - Toasty.LENGTH_SHORT, true, true).show()); + MyApplication.runOnUiThread(() -> { + if (showOld(msg)) return; + Toasty.custom(MyApplication.getmContext(), msg, + MyApplication.getmContext().getDrawable(R.drawable.ic_smile_face), + MyApplication.getmContext().getColor(R.color.toast_blue), + MyApplication.getmContext().getColor(R.color.white), + Toasty.LENGTH_SHORT, true, true).show(); + }); } //黄色 public static void showWarring(@NonNull String msg) { - MyApplication.runOnUiThread(() -> Toasty.warning(MyApplication.getmContext(), msg, Toasty.LENGTH_SHORT, true).show()); + MyApplication.runOnUiThread(() -> { + if (showOld(msg)) return; + Toasty.warning(MyApplication.getmContext(), msg, Toasty.LENGTH_SHORT, true).show(); + }); } public static void showExit(@NonNull String msg) { - MyApplication.runOnUiThread(() -> Toasty.custom(MyApplication.getmContext(), msg, - MyApplication.getmContext().getDrawable(R.drawable.ic_cry_face), - MyApplication.getmContext().getColor(R.color.toast_blue), - MyApplication.getmContext().getColor(R.color.white), - Toasty.LENGTH_SHORT, true, true).show()); + MyApplication.runOnUiThread(() -> { + if (showOld(msg)) return; + Toasty.custom(MyApplication.getmContext(), msg, + MyApplication.getmContext().getDrawable(R.drawable.ic_cry_face), + MyApplication.getmContext().getColor(R.color.toast_blue), + MyApplication.getmContext().getColor(R.color.white), + Toasty.LENGTH_SHORT, true, true).show(); + }); + } + + private static boolean showOld(@NonNull String msg){ + if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { + Toast.makeText(MyApplication.getmContext(), msg, Toast.LENGTH_SHORT).show(); + return true; + } + return false; } } diff --git a/app/src/main/java/xyz/fycz/myreader/util/utils/SnackbarUtils.java b/app/src/main/java/xyz/fycz/myreader/util/utils/SnackbarUtils.java new file mode 100644 index 0000000..f0d883c --- /dev/null +++ b/app/src/main/java/xyz/fycz/myreader/util/utils/SnackbarUtils.java @@ -0,0 +1,68 @@ +package xyz.fycz.myreader.util.utils; + +import android.graphics.drawable.Drawable; +import android.view.View; +import android.widget.TextView; +import androidx.annotation.NonNull; +import com.google.android.material.snackbar.Snackbar; +import xyz.fycz.myreader.R; +import xyz.fycz.myreader.application.MyApplication; + + +/** + * Created by zhouas666 on 2017/12/28. + * Snackbar工具类 + */ +public class SnackbarUtils { + + + public static void show(@NonNull View view, @NonNull String msg) { + show(view, msg, true, null, null); + } + + /** + * 展示snackBar + * + * @param view view + * @param msg 消息 + * @param isDismiss 是否自动消失 + * @param action 事件名 + * @param iSnackBarClickEvent 事件处理接口 + */ + public static void show(@NonNull View view, @NonNull String msg, boolean isDismiss, String action, final ISnackBarClickEvent iSnackBarClickEvent) { + //snackBar默认显示时间为LENGTH_LONG + int duringTime = Snackbar.LENGTH_LONG; + if (!isDismiss) { + duringTime = Snackbar.LENGTH_INDEFINITE; + } + Snackbar snackbar; + snackbar = Snackbar.make(view, msg, duringTime); + if (action != null) + snackbar.setAction(action, view1 -> { + //以接口方式发送出去,便于使用者处理自己的业务逻辑 + iSnackBarClickEvent.clickEvent(); + }); + //设置snackBar和titleBar颜色一致 + snackbar.getView().setBackgroundColor(MyApplication.getmContext().getColor(R.color.textPrimary)); + //设置action文字的颜色 + snackbar.setActionTextColor(MyApplication.getmContext().getColor(R.color.md_white_1000)); + //设置snackBar图标 这里是获取到snackBar的textView 然后给textView增加左边图标的方式来实现的 + View snackBarView = snackbar.getView(); + TextView textView = snackBarView.findViewById(R.id.snackbar_text); + /*Drawable drawable = getResources().getDrawable(R.mipmap.ic_notification);//图片自己选择 + drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight()); + textView.setCompoundDrawables(drawable, null, null, null);*/ + //增加文字和图标的距离 + textView.setCompoundDrawablePadding(20); + //展示snackBar + snackbar.show(); + } + + /** + * snackBar的action事件 + */ + public interface ISnackBarClickEvent { + void clickEvent(); + } + +} diff --git a/app/src/main/java/xyz/fycz/myreader/util/utils/SystemBarUtils.java b/app/src/main/java/xyz/fycz/myreader/util/utils/SystemBarUtils.java new file mode 100644 index 0000000..4c0ed52 --- /dev/null +++ b/app/src/main/java/xyz/fycz/myreader/util/utils/SystemBarUtils.java @@ -0,0 +1,161 @@ +package xyz.fycz.myreader.util.utils; + +import android.app.Activity; +import android.os.Build; +import android.view.View; +import android.view.WindowManager; + +/** + * 基于 Android 4.4 + * + * 主要参数说明: + * + * SYSTEM_UI_FLAG_FULLSCREEN : 隐藏StatusBar + * SYSTEM_UI_FLAG_HIDE_NAVIGATION : 隐藏NavigationBar + * SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN: 视图扩展到StatusBar的位置,并且StatusBar不消失。 + * 这里需要一些处理,一般是将StatusBar设置为全透明或者半透明。之后还需要使用fitSystemWindows=防止视图扩展到Status + * Bar上面(会在StatusBar上加一层View,该View可被移动) + * SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION: 视图扩展到NavigationBar的位置 + * SYSTEM_UI_FLAG_LAYOUT_STABLE:稳定效果 + * SYSTEM_UI_FLAG_IMMERSIVE_STICKY:保证点击任意位置不会退出 + * + * 可设置特效说明: + * 1. 全屏特效 + * 2. 全屏点击不退出特效 + * 3. 注意在19 <=sdk <=21 时候,必须通过Window设置透明栏 + */ + +public class SystemBarUtils { + + private static final int UNSTABLE_STATUS = View.SYSTEM_UI_FLAG_FULLSCREEN; + private static final int UNSTABLE_NAV = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION; + private static final int STABLE_STATUS = View.SYSTEM_UI_FLAG_FULLSCREEN | + View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | + View.SYSTEM_UI_FLAG_LAYOUT_STABLE | + View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY; + private static final int STABLE_NAV = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | + View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | + View.SYSTEM_UI_FLAG_LAYOUT_STABLE | + View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY; + private static final int EXPAND_STATUS = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN + | View.SYSTEM_UI_FLAG_LAYOUT_STABLE; + private static final int EXPAND_NAV = View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION + | View.SYSTEM_UI_FLAG_LAYOUT_STABLE; + + + //设置隐藏StatusBar(点击任意地方会恢复) + public static void hideUnStableStatusBar(Activity activity){ + //App全屏,隐藏StatusBar + setFlag(activity, UNSTABLE_STATUS); + } + + public static void showUnStableStatusBar(Activity activity){ + clearFlag(activity, UNSTABLE_STATUS); + } + + //隐藏NavigationBar(点击任意地方会恢复) + public static void hideUnStableNavBar(Activity activity){ + setFlag(activity,UNSTABLE_NAV); + } + + public static void showUnStableNavBar(Activity activity){ + clearFlag(activity,UNSTABLE_NAV); + } + + public static void hideStableStatusBar(Activity activity){ + //App全屏,隐藏StatusBar + setFlag(activity,STABLE_STATUS); + } + + public static void showStableStatusBar(Activity activity){ + clearFlag(activity,STABLE_STATUS); + } + + public static void hideStableNavBar(Activity activity){ + //App全屏,隐藏StatusBar + setFlag(activity,STABLE_NAV); + } + + public static void showStableNavBar(Activity activity){ + clearFlag(activity,STABLE_NAV); + } + + /** + * 视图扩充到StatusBar + */ + public static void expandStatusBar(Activity activity){ + setFlag(activity, EXPAND_STATUS); + } + + /** + * 视图扩充到NavBar + * @param activity + */ + public static void expandNavBar(Activity activity){ + setFlag(activity, EXPAND_NAV); + } + + public static void transparentStatusBar(Activity activity){ + if (Build.VERSION.SDK_INT >= 21){ + expandStatusBar(activity); + activity.getWindow() + .setStatusBarColor(activity.getResources().getColor(android.R.color.transparent)); + } + else if (Build.VERSION.SDK_INT >= 19){ + WindowManager.LayoutParams attrs = activity.getWindow().getAttributes(); + attrs.flags = (WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | attrs.flags); + activity.getWindow().setAttributes(attrs); + } + } + + public static void transparentNavBar(Activity activity){ + if (Build.VERSION.SDK_INT >= 21){ + expandNavBar(activity); + //下面这个方法在sdk:21以上才有 + activity.getWindow() + .setNavigationBarColor(activity.getResources().getColor(android.R.color.transparent)); + } + } + + public static void setFlag(Activity activity, int flag){ + if (Build.VERSION.SDK_INT >= 19){ + View decorView = activity.getWindow().getDecorView(); + int option = decorView.getSystemUiVisibility() | flag; + decorView.setSystemUiVisibility(option); + } + } + + //取消flag + public static void clearFlag(Activity activity, int flag){ + if (Build.VERSION.SDK_INT >= 19){ + View decorView = activity.getWindow().getDecorView(); + int option = decorView.getSystemUiVisibility() & (~flag); + decorView.setSystemUiVisibility(option); + } + } + + public static void setToggleFlag(Activity activity, int option){ + if (Build.VERSION.SDK_INT >= 19){ + if (isFlagUsed(activity,option)){ + clearFlag(activity,option); + } + else { + setFlag(activity,option); + } + } + } + + /** + * @param activity + * @return flag是否已被使用 + */ + public static boolean isFlagUsed(Activity activity, int flag) { + int currentFlag = activity.getWindow().getDecorView().getSystemUiVisibility(); + if((currentFlag & flag) + == flag) { + return true; + }else { + return false; + } + } +} diff --git a/app/src/main/java/xyz/fycz/myreader/webapi/crawler/base/ReadCrawler.java b/app/src/main/java/xyz/fycz/myreader/webapi/crawler/base/ReadCrawler.java index a857e1b..9f0de47 100644 --- a/app/src/main/java/xyz/fycz/myreader/webapi/crawler/base/ReadCrawler.java +++ b/app/src/main/java/xyz/fycz/myreader/webapi/crawler/base/ReadCrawler.java @@ -13,12 +13,12 @@ import java.util.ArrayList; */ public interface ReadCrawler { - String getSearchLink(); - String getCharset(); - String getSearchCharset(); - String getNameSpace(); - Boolean isPost(); - String getContentFormHtml(String html); - ArrayList getChaptersFromHtml(String html); - ConcurrentMultiValueMap getBooksFromSearchHtml(String html); + String getSearchLink(); // 书源的搜索url + String getCharset(); // 书源的字符编码 + String getSearchCharset(); // 书源搜索关键字的字符编码,和书源的字符编码就行 + String getNameSpace(); // 书源主页地址 + Boolean isPost(); // 是否以post请求搜索 + String getContentFormHtml(String html); // 获取书籍内容规则 + ArrayList getChaptersFromHtml(String html); // 获取书籍章节列表规则 + ConcurrentMultiValueMap getBooksFromSearchHtml(String html); // 搜索书籍规则 } diff --git a/app/src/main/java/xyz/fycz/myreader/widget/page/PageLoader.java b/app/src/main/java/xyz/fycz/myreader/widget/page/PageLoader.java index 7068be1..8f6436d 100644 --- a/app/src/main/java/xyz/fycz/myreader/widget/page/PageLoader.java +++ b/app/src/main/java/xyz/fycz/myreader/widget/page/PageLoader.java @@ -21,6 +21,7 @@ import xyz.fycz.myreader.util.ToastUtils; import xyz.fycz.myreader.util.utils.RxUtils; import xyz.fycz.myreader.util.utils.ScreenUtils; import xyz.fycz.myreader.util.utils.StringUtils; +import xyz.fycz.myreader.widget.animation.PageAnimation; import java.io.BufferedReader; import java.io.File; @@ -1036,7 +1037,6 @@ public abstract class PageLoader { //对内容进行绘制 for (int i = mCurPage.titleLines; i < mCurPage.lines.size(); ++i) { str = mCurPage.lines.get(i); - canvas.drawText(str, mMarginWidth, top, mTextPaint); if (str.endsWith("\n")) { top += para; @@ -1592,7 +1592,22 @@ public abstract class PageLoader { } return strLength; } - + /** + * @return 本页内容 + */ + public String getContent() { + if (mCurPageList == null) return null; + if (mCurPageList.size() == 0) return null; + TxtPage txtPage = mCurPage; + StringBuilder s = new StringBuilder(); + int size = txtPage.lines.size(); + //int start = mPageMode == PageMode.SCROLL ? Math.min(Math.max(0, linePos), size - 1) : 0; + int start = 0; + for (int i = start; i < size; i++) { + s.append(txtPage.lines.get(i)); + } + return s.toString(); + } /*****************************************interface*****************************************/ public interface OnPageChangeListener { @@ -1631,7 +1646,5 @@ public abstract class PageLoader { */ void onPageChange(int pos); - void preLoading(); - } } diff --git a/app/src/main/java/xyz/fycz/myreader/widget/page/PageView.java b/app/src/main/java/xyz/fycz/myreader/widget/page/PageView.java index 24f26be..f9142c8 100644 --- a/app/src/main/java/xyz/fycz/myreader/widget/page/PageView.java +++ b/app/src/main/java/xyz/fycz/myreader/widget/page/PageView.java @@ -11,6 +11,7 @@ import android.view.ViewConfiguration; import xyz.fycz.myreader.entity.Setting; import xyz.fycz.myreader.greendao.entity.Book; import xyz.fycz.myreader.greendao.service.ChapterService; +import xyz.fycz.myreader.util.utils.SnackbarUtils; import xyz.fycz.myreader.webapi.crawler.base.ReadCrawler; import xyz.fycz.myreader.widget.animation.*; @@ -251,7 +252,11 @@ public class PageView extends View { */ private boolean hasPrevPage() { mTouchListener.prePage(); - return mPageLoader.prev(); + boolean hasPrevPage = mPageLoader.prev(); + if (!hasPrevPage){ + showSnackBar("已经是第一页了"); + } + return hasPrevPage; } /** @@ -262,6 +267,9 @@ public class PageView extends View { private boolean hasNextPage() { boolean hasNextPage = mPageLoader.next(); mTouchListener.nextPage(hasNextPage); + if (!hasNextPage){ + showSnackBar("已经是最后一页了"); + } return hasNextPage; } @@ -270,6 +278,16 @@ public class PageView extends View { mPageLoader.pageCancel(); } + /** + * 显示tips + * + * @param msg + */ + public void showSnackBar(String msg) { + SnackbarUtils.show(this, msg); + } + + @Override public void computeScroll() { //进行滑动 diff --git a/app/src/main/res/anim/slide_bottom_in.xml b/app/src/main/res/anim/slide_bottom_in.xml new file mode 100644 index 0000000..dc96ec4 --- /dev/null +++ b/app/src/main/res/anim/slide_bottom_in.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/slide_bottom_out.xml b/app/src/main/res/anim/slide_bottom_out.xml new file mode 100644 index 0000000..7b0d50e --- /dev/null +++ b/app/src/main/res/anim/slide_bottom_out.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/slide_top_in.xml b/app/src/main/res/anim/slide_top_in.xml new file mode 100644 index 0000000..3b70ebe --- /dev/null +++ b/app/src/main/res/anim/slide_top_in.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/slide_top_out.xml b/app/src/main/res/anim/slide_top_out.xml new file mode 100644 index 0000000..ec14f76 --- /dev/null +++ b/app/src/main/res/anim/slide_top_out.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable-hdpi/ic_keyboard_arrow_left_black_24dp.png b/app/src/main/res/drawable-hdpi/ic_keyboard_arrow_left_black_24dp.png deleted file mode 100644 index 4c91cfa18d39a26fea967e81afc0450239b1b2b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB3OrpLLn>~)y|$6JK|#bdP>5U7 z>3gDvd4Z&KZ*@dh^^KS23l&7R*__>b^0oihgO*B*{)=8pF-VUJI2e;Tdu`ysH{1MJ zg%9pYs1iNHsFr=o;QX;$-;dqC#$?*S#JY+pYu(RV(^nk5wyNgR9-+357oYDMS2+E> Tqq6t{&~64#S3j3^P6}&f diff --git a/app/src/main/res/drawable-hdpi/ic_refresh_black_24dp.png b/app/src/main/res/drawable-hdpi/ic_refresh_black_24dp.png deleted file mode 100644 index 6998e9f0328885bd3d653591a3f15d56121d8941..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 463 zcmV;=0WkiFP)w00r4*&{sY9%fp`y8P7#m(Mrt_(WXWnE{tLwa31E<#4~TCfnKOryUg-9CHv!|2rU-pfv8I(MniQNLdmYO*he6kp9%l zaV1!a{vALZ2gJ%i%nmK9l%Zlfu{7v1s9g+1L7StbHeo*iaWJjQCOK%sotQ>Gs28#b zh^6UKXv#y|*`TO-48%X7_%XE1Dg|QM(ca=H7zKk7005Ek*bEZTPH_ML002ovPDHLk FV1iMLw08gi diff --git a/app/src/main/res/drawable-hdpi/ic_search_black_24dp.png b/app/src/main/res/drawable-hdpi/ic_search_black_24dp.png deleted file mode 100644 index 5e28ca5e55d4a3bcaa596647bea035fd8a93875c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 460 zcmV;-0W{;Bbf~iRZ=?a^PDe|IO#k%{gjWWtEk0U4af50vGf_3)p#!+yNi#z&?gg;DMTH zk#jITAQ8t0a7@a)iW`1|B^c9={K~GxHD91@LP+k+6KKR-cLus3WY=y$Q~S(tnTG_K zItWtyg=;&P*d^{*ehyG=w^A!DWWL!}4z$LPNITI77ZB4)@XJ zvIV^id0VuJqpQyroMy;hvwWx_)M5*+sL!OS9?LH@glw8k(W2dy*>{#5X!RjaY=muMAdJetXHXY!ecudh3sF)bAZR#ca z6a?Z>SGA>@VzwP(O^>M}K7TPGWznFV&^Xvo(+g=A2I2rOgw))WRGJ@mg_Ek%mdKI;Vst0KtPU4gdfE diff --git a/app/src/main/res/drawable-mdpi/ic_refresh_black_24dp.png b/app/src/main/res/drawable-mdpi/ic_refresh_black_24dp.png deleted file mode 100644 index 8a8d85d12a4a0453be6b911a5e48ace851a40444..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 308 zcmV-40n7f0P)@exi7usEY1ODe5xlfkod&fnchW}GKsfk!@!im6Fwm( z#{t)bXARm_dtve>x#F=4`96IuQR4{gc;bxXNV7+ceyk_{zhL-NbbG@90000YI?OEeHd|8h}HrHUD9~04Z5i%;H7@h5!Hn07*qoM6N<$f=iEZ;{X5v diff --git a/app/src/main/res/drawable-xhdpi/arm_left.png b/app/src/main/res/drawable-xhdpi/arm_left.png deleted file mode 100644 index 24369fefd07ba47892b1ba8f00ca66f392710c5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8098 zcmai31yozx(#8oMC|)E$ahe3T;BJK?MT%=F9-ugsAjL|t0;NDH6!+rpR;)z}rMSCG zu|M?Q``&%)$)B~7lk79|eKWK7%PF-|vPYjG*5lZgygfdTJUV87H_Eh#$-chBAudf@ zb>uHG#%FGB&LR+qhldB)gBR=sw}EgA3kyS_JP;n9he(Nsu3nCAW}XinU77v>`3pzZ z%GCmH>+ELhrXo!oYmC+LFMTBr(Z}9A)aQ=5N{5e5`aPeP4!>m|0lAglZCs3 zm809A$d*WCAsIP-IYDVTB(l)|LjIfTKapXOe{=Qs0{dg$|BAzZBb9;vchWy`|Ec;n z(m(Dg{d<)D^hN&vgZ-Q8zru>hz^%;OoZ#9{PWIwbcS#4*c;@8hi@ z>92$r$0hn1sf~hiUrb3>O4}24$H*_n*vh@-%umpl(!9DlVBuV#u{Hw!kC)Fzpo z^(4-9=Tqe(qv@W0rB4&&77(%b&gz&otu#3y7f=(M<{M-ap)7WB*i2at`6PH=z)`NF z=1zLtvpaQqo;kL&Af?F3{c2LDKU&Os(p4cUn&z8{5T$C=X(+!yMfa*1lbyZ!xT)5w z??SVRvwHTk&oJ)`#0Z=Mz!bQ&@W*l)1>prtR&Qd%SA#`gz{-PSh(&0{t*g=2QY+W3 zj((lQ73jVue09=ZPq#=OLC_WYt=o+E_=z6mliKoNXEEGf=wCg zL?$`SXve{LTese`xs{xaX`jE*F%kxZ?01fS1br3};{HqwA_x)0Xy$<9koOUVZH=RR z_oc=VCnSf{jNvt>++;fa>-^wIRAV}svg73dC@-8~$<;^M?i zqIGhcuee|gF#Q*C_3agYemu{HaRNugN5Z+qxzQB$x-kdHQ9@%O8r{UO1tYKIJ}vay zW7W6U{9wz|q+^3ZZB*Y=tcCW9#FBM_!a12{LBbaViO1f(<5@-SCo|`s?%yJqmo%#9 z?U*(jYf9dq93?rnIQ^`Djbj}sueTm9((mMW!u)(#+Qs^GEVD8VHM8}KzC z;uo*#6V4|o=7hT}ItRJjxi#%)_2vHVqm#Q+H)Bze$ud2HsV}Y|19qDV--hsfr@wN( zeuYL%LDY?qN>;ldfDq@xo6e)+{poA2)%CtB z;Syn1V(!X4 zM!>HL?CR?pVS0@A_r?|LR)eONoXYP^+$`o~53NF*E9YLazbiKdGD~)1er*@(ZYIEJ z)Ezq4>Db*-*|6$y(Z*JbS51fqB@TyGyroG1UVYRaS24X(Y%$qs+&|9NO>bGm@b~IS zME9dUy(QEc&K3V;5v$j~Q&!dW)xV#gn=a(Db0&sjxY5lr+bv&cx9vqd73v5@$fvBy z1VUi2Kb zjfBXQx5WM$6tfK9Tr|$6<*YD;vKNQv@<3wbaDc4eV2KPkTJ!+IAjW5Gq3--gQj+Wq zl`M|p4`a*>-`k;@KTlT^V&*iu#$|yWIA80)@~^(|5<$GqugFxyucAjOM%9;Bw>_5* zyKJ&@)D4VSmgyR0LtIKbU0=DPd^}w6Q!(P`LoR`N@ zs1Lt(?b}$U1V9X0Ny@v=Sg=ms1{vR~)cmY@o8CAyeULb6d_f0;`C*~1WHaJAt33BA z0^hre5CYP<$S}*cLD#}WOQ>X_{5lvJA?1TQdjMcdxq8rk^kljl8KP0bDJQZ-j$5-; ze^4_zwm!DdB3K7sDDP{2KS6DS;pB()+by*@pFDRbGA8wsv=;lm5wn1O!P=#!%7G5! zl%gn8!+TeuLcr(>QJ{ACk7aGj$#)Ao-_|W({tTWMkp0Dxj{kG2khS?}+NY((-9c`TW?lTrf>%#tfxn$t(Zqa%2Srxc zekYRdF-kpiRckkY+u5?D=k}Yx3~6a{HYty{9L;_ou*@DBd(GTV-#aK?`qdfJOM;y+ z`UjoPE}w3FxEYxWcnj6uA8VL?o^FYo>*n4wnxxg_f{lf1pFxuEiS@le_ehzj-IPxg zh`hEhB0QWbvSO|12g~9FX#D#_lWFG-o}Qa&y1#x^smJSkJZyhm< zpfc~N&rG2`__N029Xh==wNw+wp_sqSzEyyBXr2tp43nSQl&AfN9qGXseD-P;~_?tbuJ~q{PVO^n+_wMgyi6=V}!` z_;?)mJd+ieFe*i+1q~wsJ?dOYUzDmnJ}LE<6MHs+ZZJ@04R};AFMTVxv@rkPGhk)# z`q$JC7ObAe!u(L(?DhwtZTp4ECw)#c=ZaCa9FP_`@y=8;jnKzgImBc^9ooGf^uim#_$C@ z5w=m>Ln>^n1|5~r5oI-A`KI+p%(02#{>SV%73E#5xT6N-`Gqel3P`}Tww;36R%i#= zG_i4yxd~YF*ibdsUVwKKe3+k#7&Na!t~yn8m)_6Yxr1m7MYq$7+^irEc^2>^H&~m@ zTAGDXE$#vFkVtM=D2)x_gU z_$WbFvukJRAFnObA>f&L+6o*D6Zse);Vt0`x~uZo^5~yBd5GFbr5sVXI2c{@l~}jgS#j9tFfly&{DhqX$zqKamWT2M#@=p;F2%iVdV4JaJT|hR z3)c0sJ9^FLHEJ31G>9vi1Q=zu^<{?H=U*BcyfCyd=cel{?hT@HqdU*u}R{@49?TBQ;8OcL1%FtWH zN-%hJwyn9dx{;8AbsVcHt&`|@(NukXj3NY z>=hBtn?9YBT~`x7USkC#Q^=dE$bx+mC7P%ngzc;f(~{Lw0ZtalmpVAfav4efWu)EG zRt=^PBWuZ#Rdy^kw9pyfj?J{W;;)?x-@T=fat-GDlGn32>)rw-IO0j@g_}JlbLZDf z?G4HAbIuq#r_$C~Rrs`5_};(89F4e$|MG=hRV$^bRg2kln$l>b3FC;=$puw0?Vqz# z8fT)sJT|Rym}w_Mse*-t++r-C)E~x}DW3t!WzJKT)f4+M^3${-X0To62l(wt%~dY< z#gooiEi;&UdNp+q`jpjNY_>P9g=s#xUGrqCcT|=Mlf#u6TKgTDY`IRrH7g(s=YDlC1Krehgx|Nkz z3+;=&Jg!ioe&%`nY06=JXsS)G45@JN<3pBy83N_f{c1`^k#T7cv2xYAS}gZP6|r-2 z;c8?fO&2=Fx;{f3fAV02R9KN5B%%Ju@)h+*G+93jQ$BUpQ}YF3dXP*| zW1zJ-uc5zLv;nr@#0H3nc$w>>u_jKi$%{m_A)eu6*@@T(l6Z}~RJ3sbmIKjm$pKALunS{7+L0GP(XxY4{=glYY1;k{$ z*FZ4~DFj3}_an~P`rMr37`2{M$aa=2zHUR<7B5aE4ZHvd`m|;!w??U3Uv05vc431m zpP4J!uCJ7#@L{a2k?g%*;5Ie};; zgm;O<+-c@Zl4v6UJny`4XCI@(M*U=MZd`?ByN?RsV5c`U%^MNi#RoP-2x8&obalzp zSNhk72Jh>hLi1Me@aP*=Y2|_`J260&iCvrX52SUzxeR_7o$lj?%P@pK&VIGtIzXbl z6(^>YG9kHr^(#lA`TfwpD|{jk& zhLO&JsuBVpUpFKS^m!$7P}!su z=&#Uqt)y1 zB}j64c&^#SuQY!)#PIOP*Gk;FJZV{)q6JyG@;E3@#M|uMc3LLP5fC`_T&psHl__|Y zYjeyP~BKrpOlIFdwxhQ3EfG((&mu~}~trFZqG041ec8mgs>q?D- z8YT+cIt^=O$m%fg;wfF6$t(D#h|H1cV4EgUIWe=}oRX^BcC`l~|L}?0nkyher*Bsh57VUO_Q>(*FAurtj&g$GhKO_ zR9TN7X_j$D>5PgIvCo%MP!7dn1KV*8bkVtJgxdz>^3=OxJw0;E05!%WVJkGGm5I z6Vs_Lm@ms0N1u`ep=a~p!0lET^`rWJ>3~yQjA@3=+cWyj^lK;UYp`CL$RF7ew3l31 z1Vna2;vUrgw5zU^T;5k3KvTyV@C3@FEx{ zo>=Uo_nk{px_ZX0_SiBSOhNWq883mnPtu*cq&p^(BYHp))rMb18(YFHvH274L)VIg zzHJpO(O|OL0*rz41o=y51Rb(#=T}&<_b&t9y=7)hY$BQBPLL!c^BggwBrNoZpR-h; z40c$1C_$~XQ7BaF@W^tiRWV%bVqbFEz1%7onuIQONqm-bV{=9RWnujGHAlaB zec%g{aJ-sFaX&r^0%2qDMV3W0C6gWFkUMIwhj=B8JT$$5QT;hkT$_)TSC*!+SL50yqH>A%D&_7n`p>DsSl-n<|wtdr-^AZr8OGID4;Uju0C>3w?GzdzA zFA?gtlrTcSBgeQkhK-m4z+17Uzf_OEP*EWlpKikCbk@Pq!+p7xfQ9e`v=Zf3R$MVl z=|#p^2%*bHGdR8=m-pKlJacH6ZWRL*OVv`-2X?50w0z1m6v6vu{D4O+01M&$NTEU3 z$QT%v8~G_|`T1l%AqHjw!RuHg$`1;gmwNb}LDyM6S85WR)>gu}uo2XisJd>J@jlq#B5o0D0F zv@!*503ZIt%ANHZ%E#`ThuLfuaH4Nx^okn)#>R#e_Rv^)~I__Z^%mv@C~cGDZan!wO+wK{w+`RMP0gVdihBJnmN~2X@PX4(fvNWkD_iO_;JH}R$z@54 z&sI_-a8xswAHaS{#yRY};pudB&l6V9XEve1kem`$oA_QT(h_!WWJFkjEcc8Ck!tvr zH0vcYWyES%7uI6GzWPV!%A#%|e5bn9LeCy@RU5tuwj zUpo7y#eF}wHtF1|z4)CplwbH>4SMAzz{WN6h~?H%MN%hLrOcU29=Em&Q$yo3MCoq2 zxYcSOYP>`#B!LoqB%=C2lO}PxP&l#I+R?sEQ^5l$NuXBe7!JL`2KeHX92Fr^$Avxi za-)M?oimSS=g_6{`FO!b{FL1Y+n+P`6LfbaoY2QStOj6woA&TH&i~1qDLM?!=ybiI zA5~j$Uz0;P*AKhjI51n8H1o`#3g5wQBdv2SXFzR@p&6Y*eSPSlm%bKl)7_y=WF7ec zW7zN9WOq)=i7fTRqJ;oadi+@@Hw_`dQ%4=3OwlsbBJ$Q@A|H?=(o-UrqXsR(@wbD& ztfK*Ne0e+i&Ai&WZ!*OyHaO&{$y56L=7oc-N%5QI=WE6yY}g+SL#sSJPNH@C6PGSGI9*0B$iC|?M(%Nk z`GgU42IZY$`DUEg+wFZHXlV)a7W&%5zzr~pth63Klw<1H#Ba?1FbgS1GqEuZeBV?uypQ*H$AYDI(j1f=QA^d~DfUia3gm}(e)h?+1(LSWR zC6^CeQ|k@F24_N8OD$T{+l<;Vu(oW!um7k&)^+m#t{v2KKz)0_RPgISceZ)sTNU=a g65aE6Z*-u2F&Xw4^zc-RlH0RX^LR+7_3o+FWq1^{tiQDoEE+VeTo*V)O% zL)2G-?yrU@vi(QQO$Ys};^`w{Z3Hl%S*gNxBeQz*GGG<2Pf~v z($lTFb40!@x*n|D?ala{XEpyGd+%RX>Sb)KdrMxgamzRxGXL9mXEG9oy_%wHB7qZ7 zTe_pXWpKIsvBjP#v&E*Z-)LrZGv@&e@$j74|IE$Z!Rcsoy%^)IkNDLVKWrc7w{`%> z>!uvWH~i#Lepi{yQB7$=;{}>ddnln+;w=?W>cAt_fJcm8(sg*slv&!ZsS7E!sTFc! zifpr~U7^WbY_>f7mUQc_R+;H*;fUSrx+EsXlls*hbF7~XjtGFgB})bWqJj&M#;*DC zB!@jkHI{}JUEsx*pY4=le5S-LyE8D^gZ$Ee->_Z{!sL?^P}4mj-Nx)PKq-%;b;ww@ zs=`>P&d7Qo@ND1raFV7V;Cgy)4~_?JR~_H?x)^f@Vleptv@CQ5Tv01~HQ?)Qa+sUE zNED{H`w%Fit7~!)Dk#ev_Zne_`Vy9YPF=SG68lZ)CjTbvNzj!_S{8mA_QdjT^b3ok zBuY?A1oTihk{8CvCc4_fKMWc5zt5DnV{8LKZA(T1q*`f`t*JHjolWW zzD?vMCD0sD?5LV83JVF?V1E;PA4LO7$NXZ+AvfB0U0QL7ia_5Fjf{nIly zi%{Rat4j^^jWTF#E_qlYc@~00OR88tSk*4>NSB!^Xud^#aF*}G4Aq47Yt z#AT;1Y&owYmcS|db5Kv?hvl~wN6=N?Ta{(!h4KB-pMl)L5pEJcN<%p!j7H@=K8+4*xMaK}`*cZq`U2dp=ky`NNaxJ|6podU=B*cITl%A- zn5qtKr=rL7Y+NYN@$X3V^t3t zfR*Cm#mUDOkzb##A6<4#bb@u4J$H^NxF6}b_T{hnnExJ^Pv>@T1+h394vhjmi#owC zHcT?_Ir8h??L2+QEdfsG>X=Ch@8;|UZIvSS^k1oNnFU&}uMvy|iJiv}lyw+m*vR|LO z^%whZi2$<8y}hvg3yHSxTZoHC*MNJ+BUy9CUZc8H#@yORQd(d+9Uz7p-Pt7!PHPZB z!*e*Us8kTc(bbLrcUpWQbBrDt3bp^px{=6p0;*Q0Z47?dGh|J$*mATcrabp>U_ry^ zJjr(F&cD&6vQkQMIACm%R@0fqT*Zb1B8Nrz0wh%q1AovvT@{uCoA~t@r*#*)$yLX2Wxhr znC91E=MqO#bg5&3wq=_SK7#InKQ5l{YHsb0Dwm}))_0OB7`f@`b|>-1X7LKzD5O#~ z0%(}kY@jK^n^Ob98>-)>-1lDtSDHm_X9Ksh-VVGwj|^KWzaI5>(<&UeS*t#E$-wha z>kpMq28d{+LS9fQd}z9RNYK9c>U~O-KA^)rR->KAM@`RZpo1afnL%a&!71|cs589% z>xEx%;;S2As@`y(l`_sYGB-{iag_ctLfBAB0NK6-nma zTb|?jW$~_#d~3r-*8=w{xBO1g{2_|*InJ#j;=`2o20}_w+B^spm7vMMmp{I2Qo?H_ zjoWB&$Snl|<1%h72P>ce7_nM%^Ks5g+K3+88kfE$o0p`4nC%;8SXDi_kIc6@B4}&4 zX4DepRqP(qm4_}QD)M>b0uM7HpIlwZvQO*yR!mb7EEPaJ=9eteme9$3Pfy@DyT+M@*C537)LYwJC zyX$l_?M9JQ>kx#gXMpP3WvGj#+V4&T@)$*3ba+LGn}-_J1YqN0T5`&&G9DZxI6u2N zU?|vF=Qlh1`tjq(sTcRwX#3q%vCS~B;7f+OlKsb$eOGRX)9JHM=dMlO78V$nh$^vt zw<}6k9|#sSIe~*{t6pyKpB!>BWzeB#vw?>9yZ3p>34t!`*j3J^Rj{4bd@D%C#)_3< z*nlUB7@CK|!UK(Kz~$6U0`;l}b3fd5y&cIBIn1&#Xrt6`tP6QG&NNDE^2!nN#9IKk?>)}xQ<*7lJaX6NcKjhoCsZBklAiJQ{gRTQ4hdCR*o zJW1}}L_j#wrYA|0Z27@aUqN11+WlrtAgPnw;Du=sJh&fomqq64i8W6)#hFX#$=2Aq z4z@yy4TUU!fB(o}lG`vtH>S8QIQ1zl1qXFMn9r!bnw*wmj1nq3%7&Td$g(>02RQ6y zrG3&Nu9VM8t3f+WX+FepuAv9)VU;PH8P^B8?<@&RnL|Evv_iN^=F%t)iCxm=AR)yn zo$hS*^*shs0BS7xG+pwp4{CUPu3kL23ZQONk?n&ix1R6=er9#O)^aJTQG^0$ zhgRP#Pep~3~j8VGrWv2gaieW9MOr?)QLc(kOlHX zz;5rt|C<;u<|v7;{X40BT%X6^M_9u@m9lZNCWn0%&SwWKl+tRk|3Fxs94O0%5q0D- z>ESm8Kpu-w9!=9c%b5TluKK2r;{~M_0^4`;Az|`V5&rd=x@BAG?+pPAs)_3<8QF zkX0gO?WRDKH{RV9v;5Q)81t9zp%gupKF04Q-gUbZ$J0nKGID_%gMNI9R_u?^J%N%< zDYGG8^m3I>hDfH!LTjgwmDAmHm7Kz5hIDyT<)LuSLv}dAA@tx&$ktfH*QK(BH(RWp z{aZzqckyp(f~Ky$UykN!wj?Q)5Nf8t3ju@HN&t-lZvIOC@DE)fnzYxG?)01i7yS#Z z6i8^ry=8Jhrq^l%QrJgG62OI_{U<7h&#GTTG7)H1%<-+acMk{o1Q9eaC2r$_e6>8` zXJ-mH+a-}$Cfsn&CIFS4Bed}kbNLp{8{yc`GlTIDC=ldy7EGCZEB!JXtP?(>_2qjE ztn$5_mvN{t(L!GFG>w#Q#xlmt7IzuMuLnyJ7LSSHK}u0NEM&ejakivU6pABN-A(6< zGv<(L+>v2IZrMc5Kf+6igM>}F006E3g^e$o`MnlVJ=Av0BDE>5!~t#RgTVLtkL4Je zqkEr|(Ae4qIsLo6@(eiP z!OFSUlM4b5&*%nL!AvAF+TW(Nq!idW)|W%;b_zI*J^@GR zL{I-Ovc%^Wf1`X~VweaP`nR&z7&~+>#-kZ;$DxI>fatj3V9O=}&!gUs zsiX~25AwgSXwENgWg|!#CC(iZ($fG^e`4xhrS2Rke7fo6#*8Ok+| zB>yNwKuqq7+B8OsR_|F6!#=!5Bh~Ko0-=8g2Fws=3pp*fosYdvxH3?l{(!Nmxsuj- z34!ZaK~fFuRL1?40$_{rg^(|D?0;u&@|K{yYyoIODni9r*IK&svWb9jcatGYd|eOx zVOGFuK5&sc?+4GilBUV+CF0>D$Yqkx!|<-0yMs$AxQ>ASv=+-+?xlnPz>3>9Ho!d& zD2<<;>92U-M|#{BT7|jo_WE>0^B+YOhm**n1IH%12B)sRxan9ouSPOmyvMYl7;vAWXPo8x0Fb_ z;|{6)G5Q8v;&#_9+1soz)ZXB#C8t7$?B+_M5K1h0h(x@z`8EX}3H45OSL8*#2qzI$l5t zXSH)9;4N@;c+7l!hi%iLjB!>Ywi1&n-zn^d*dzy@cz}d zX*?fFhU+MCPxtd#pr9Zb$8dXCwLDQB*J;ljGsJhtSq`z$j?M1&MJUkEc3Wr19iI@x zmmR)xaq65ojdsOFimgTUGpi{8jDAIrwcW{EE1O#KpqNt3++_fqt&OUg3~1>fA#2Xc zbD{qU*8mG=MB1u{$eW?4QoYXDWq3{&erXz#>k5*3;#9RI?PIdx9}Tn|w7=}Rt-A}G zU5}AE8pv4l-zZRdqO8!EL5`!rF4Ek?n+&~yhmF7dQ4CTm8|hjhXCB786iD z;#P#Iznro#$R(oSv+T+_d-{u%w7b5Ic)ZVzu5Enz`X?VMs});U)tMhNXR(+KzqcuA9e}V(cO= zT^jW%364~Vy;F}mOEb?BToJ1=cSgTwk3}3Dfb~e|Gr)KEp!6kp<>)tF>9Xxi<;sOM z{zA)(-2Cr1Zxcl793mPclg)iZP@O_>fhEu{QQXH}zc;0XeO}q|j)<%$rStMfnLDuI zONG>ozOJGd=9MS()~~6Cn4xi)%?2+7QJDG7m`MHxi3ST0uKn;ATnXVJQHv1zK56hn zL)6lVA(V9G3qN0TEHU&|>oMVn`vxi_w#e^_0BM02WF}na6;tYyS@wnvSz)2hiTa5s zN43YQO3&;4xWYAhY6_nzza3(`L6nuP^cJSv(qi^Ey88X-qz=yC{}e}sYJnSxVB902 z2QgMVq0_Pw#d`NFZg!R+!H`NyECDtBJ5XRkV%y$e%yeNytz>OSJtnc2FQbz4>LPyd zZ_$5o>F!~} zJPv=cCD)h}GD;caz3(K-1f$FecSVU?W!{5U8I0}pD~$8Xo?;ihbtrsVT<&@KR{9Pr zk~&{$IiTRJMwz4xm#!5S`RkB4)K-+8pIJleTo@q+LQ8eu-?H3g=!x6IHj!bG0#ePa zEwnrrGB{=@jeGRH_#2s>+n&MHm;{v}P#-IF22MW9^ud2A`~=TjI^&+ch!K>Vw1>tX z5La*?Ed29P?J{*L`j`q=az0)nUm99`m$ZCcBQC{PjMuD~jMB82EC4)+0G5p{gr7-DEQD7h`BOJP<-Br%_l1T?>LOB~XJqd{%Wnydcq$`a5_SUdDviVGfx898C zlBz(w{>n1D3Q#Ic-`y!&Fy*~_2lGi=267%ktiO9G6FwGBl|PkqIhG~Q zY(2U2hji0%dHypOQPBDWS$E=|)Mp6G&CG2;;>o*H5?f?2*@cTz56aPRabPuf+04cf zQ1A8t2_Dg8jNpqY^$k_Cb6L{5mV7ye0ZBe#OVyMTz&4l$Dxb8PT-?SQy_V$0NhIW0 zruUr87|2pxJWUn*9@MPw-mP_k&C&KL*7*csh>W6jrT2}im>o96bY{k7DQI& zOc^EQhj=uHnzw@aM*2h_$-B!7qBm2eq!cQj@g&<sfhE5}JG#&;s z@5cmTi}f6wyqkR=0&3w@(=mNr6}s&={OTRv51PLT*!s&pzzvQQGG}95(Rw6U$pM-x8XktV1nW0%P3nN^W zZpB_|a@@T7+?-f;7n8I2RXNL~>Q)qp)zrMy}kbZrNOPxr?Fw*tZ^$l6T+V8{6{+_FnWl_9}{Zcb$oL6(KJ68@X-Vx;oTv91fB{Ygb*YT>Z)K0{86aspWEb-^%=_|bL|4ff6su!%7Pynd<~RO+<{BFV6F^mY z7jvhc#zyW#)A~vAc!C;VD*c=ft0@bT`}(m#0!y(X*%X-qJ#_apCx>d?PlGM#|NItI MmVY8wDPtb`KZpl(ZU6uP diff --git a/app/src/main/res/drawable-xhdpi/bg.jpeg b/app/src/main/res/drawable-xhdpi/bg.jpeg deleted file mode 100644 index e3461f163381e5ff8caee1f88490045c7a88f581..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 438130 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�QBru6_UG^qGI8Hh5rDEdLK&k zKZo8exA2rVcCT)?A87;)!=`J2xyRcsCXazEg@@xs!8Sa`I0SX3?DED#XP)(X{{TtU z^vhUo?~unF<0wyY>s4OXc;iWcEUq(7Mv067V{zj(56I211J6Q7ADwAiTiefXFP_^@ z2?N|w9;+K^%cniM?j0VY;<1&mjt4ob5Zg1$6cOj`b2ijWbu}BvmZ&Z!JRs@o^{eS; z<78WZ8^NMZENu?ulty+Od*YDEH61@#(Pm3ce%#v4C?yp492TV)~R9gn6ezl-dn@z%QcUJ$q05&r;|JuqtzPStH@@k8pm=gkDtfE%}8@u@Q{YT82mt**2LYpYcL z6d5?~aamB_#LPlv89wkMk@c>>;dhPK;qQ&pU%G)WEGKQR3yi9%_N4fq_6>W*@_3)a z(S4rE`NOg(!hzATPWBTqw7BlI{n0}icvt3Q(~qrv2QS9y?Ysbf7io6BR68~_qq+6S ztc#sfLDD<|x_5!#7nhTP=RPu2e-ZjuhuBzZSNLlmnV8^=_o3152p>JV3v_EZ^Z#-=t^(?r2 zCqd!M3q5mQx6tLA?4Ec(IX`z5f5!R@9uL)*OBXA4tTG&P`sTaMTi|Ae;mZ}&Vb^nV z;F$Kv2^h_J{{V%rv^j0Btvp{Y`-t}lUAmlo+6NuZK1C#e$K}Y)dfvCK-gq0s7TSM? zb#Fc!k*NKaXH!zd?#~+P_ zF~%#f@Ry3mg0+~n+h|tecu6X)$OO<5g^|+QbWMxNVSh5-PcgHzC9qT%!mDj@LRI&20 zFkYL+I)1g_mr$sSVIMH>OovssveU6{LdeJN)^r-5+a%d3!88>LcPmQi2q2xb)x2Gy zN*s?-Pt+|;>kw)nr>OzwL0IT#B>0TZ9-{T(#Lj{0w zaiqYzMY&$Tjc`y$fsxv^bd}L0nnAC~BZXA$!0OZ*#)+5Wj}WJeyhA668b7o7>9@=D z;<<^WLI&RS=!AdTCU5z1N8tA>pGvplJIyBg^&dwehPpv^6UT))<&$VvGUwu4F#W zoQeQ}pC=tEROy3AK4!)#%D%LShyhL+OjCyxVuIM9cc;a^Pu+o%cofl`W2HC}Ia7n{ zOq7e)b~ie2mM%c~hDJH39V<~=MAW5$mes~p^T8ECp*1cnkET1tX9ME1t29*Ns zo@NW?9>%(>wDAtJqn$57w|lrPh)H$~fETYy;NqE4iMDOB#!uBqJtza$E_?%_ct1dq z{9ke|uP#?~0XaXHy?L#UyRD_Hx<#|gC5B7+Zmsg;u;RKe59%hvQisJ_&-_f@)c)=# zJAub-wdp$V#$7X5fc=X=hRRtJX*&XtanuR`@J5s;6D!d=Tp=*F9~=zEvrKt`S34RLD!{u zot^flq}+?$GIq9{ak+oGdW!6PAMp#s9}oOgzBus9pSLd(f_ad427ozTTS(OOT|!+q zT(@g0sM`*XFmq68dThF;tp%WeEjMmvuIt8rJd@&+$Zlrl9r#`d=%$cr{X-aHc3_| zl78?av&zA9e!}16i$5so_*VCb<yLW9@H52L zzYRQa+P{k;I*LZE6T(h#-;bqv{+X|xKUZB>PEicEY!TRSK(9dYzlXF95$*L|2J`K+ zY5++v&UVPy%`iIsW8%H;kK;{e#a;)u7AdJl(G?vq#=Hr%_qe&a)NUJf#oHMqKCE+F z)7)i1ZUM$|Skvl?kL1Dgx#$4NG$Ad@sd)~UqfMnr2b%AkN!(_t=_kY1o*J6pRRQ$| zB*gvq9@RqZ-b*8WrY4AU!zl-kt!KO;&NlFr4K!(ZYgvm#Hv)J(<8XyWdlOoE7mB0O zEM?O#ZAA9-F>T$~HOVvmn`X`nHV6LzuDA8C4C;Digj&Vos#(jAn>{n_K+%zVQ|s24QG}jZ?M26O0sFiY#!nS_&@RjZo4rRBS-wf_=09>L z48zn8)$d;wHQg7){ul82cxzAcWU+_~hD71G?nk`ROGlCA(+Y6_fHV}flh&{1NQn5V8nMkCw6&XD%pwjFi zzOylT3T?ao)2c;F0QbYo_sztq#B97S!!O)kZe1cs$oI4nG>$sWE`EoB&V0IHd;| z$6D34yqea`>Gw9I2?q}AgZNf#Xu?Gu^NOfQly%+(&@DVqt|p(X-U};k@;?Hs_>vnR z4Qn?VKZoTPF+@-A$3i`iHO^XS`i8G_C61qv=rY(p)~2?$nWLJ|?=`t0$vwp*LO20g z8fS9s!>OyOF6x4w1iSF=pLu&XiW7Rxv_LVq0rF=C10E9zS zx4nzTcS{7Q7(t%?mDK1kL2j1-&%PI8A_VXgw-v_xHSiCHyn8mkt9XX!>B(f|+bev9 zvDgaH@Z@4!xgoXrp@Gb5bJbMiG>!_*pGbT%@Ehy8^|Hph*Kq1O*Xt+4FNTuNw(EUt z5;%f^k;fj@@E^eacTDj0{iKCd$;NZqzh=B4d24^7L3L<;NfZ%^&JsDW^p#24L}}p7 z9SE2}reHqy2l!Wj{7LvFX{keZssN?1T>QN8Ushmqkyv{9iFDhKJA~LlJ-MwecGtr~ zF}gnpym6#kX}%*iw?J%C!#%p!%-%K7sz?0nPw5@LsXv2{iE1>8EAfZM|e2LG4`p*JlJB(Usz_hu$psL#*3c>bHvb zm=3HCee2CN?R!`84zc~KtjXriKvH@P4wWXU;vH*PyKCRO165Htq#J4sMbgl`T2WS;w^f&J>AYUI?co)I*i~DI^0y6&q8SR?y{7CI0}3U8S67bc{(k z6^!R%Q#&6Y{8HAuRcRidaQk4gk7|H>EnxUt;oh&}e+u7t-L3*z*<&%W`^5SW!n4~+ zw36^yre!Ct27fx~Bhqhd;QI_$vO{M70D1)^DaWX&_QhQ1be$^darW2{ELG?l0{AAx z+{@#8CA_zInIm6G5Al9=PUAKjciHXE6R^c{`VFqN;%mvQbbE1kEwC~&o_=2c0F`MO zp~c+IvXM0Dr$|?Ql!Wm z)UFM^%IBOCdefBdCV5tyr%cn~@}tz%`!5bzYn~~#(JwBAjikrtoxbYgy`t;FP(%z6 z@s5P{uRPSeIUktHTa_M^Mt#WkgD$kYEh6$wF3NShw~ru7r-BEtt|!Fz)|U`NYi$96 z)9*KC{43IY3E{0TQq-rm@fE?fw@6)-`ndbGMF!02rc~8KR0^LmrU^m{iAA0XD8WHJERJBf$nKs)fpFJ6&T<7 zS3YNGn{pcMJU`$~cgC7-p{eM{F=>Fal6!Z>ayoIhmN{+icz7Ra&tfUD-2c-2m5`DF z915dxx>Ppme*XYd{xxk*PztC<2`8;~qsum9)pYw`4}W39ZMy4rOqk1k1z;?W%_HMV_UROm6f`EY5MlH7P+Xsv}Y%QTH{rSMg_gT*#~+6)bUl;s_@z9`l|_2B?2_uULBo1haXSdd zYOvBcVS<-)|JD=CAjYzH9eSSop8-9Dd2q2AsCBES9?#3@@4H z2*^J9&3+T4Ya|4>-94*4;(V-6JgsfoJ;!f7c%&n-@YjemTTL5VvzFT@P@8?ZBPCaw z=8zb-4xE!twzgSH#*2m@baeVxQ>0p1Y8Opo;#E3mMI{a}T#rf+8u}-XrE_bi_>c)L zZAkK&1{p}`b6I+(rKxzs#LK2?7p(TqaSP1bf~R4VT$Z5}QBLs3^Twy;Z&6g8<_?aH zhF(4B1a((dcAgv8?zFQYo=9U7MKC=Z@UGVH#8=)V@N-*ST8o+CARCNiuUvk0$LqRG zFzEKWot&+4G?)?-{3E~Cw0te&8T1_n_dM@&%I96U!c;khf;v_$LWn2#H} zRW*rHNgRI}&MTwPty2%G>M;+nD8O$+>sb3iT&XSnwAQO_9D7+tH)9#1@>PYQjxKP6 zKT}x(L~EH^GyA4*ll|J7NkBOR(wk$kWK0+Lg>#PH_39TIKCC<-z9GCIS*Z%CfG`;1 zxQiVRQIAVqep`LkZrJBPrE6<(_{UGuk+q5Zy$wH8{lXjfM<5kZQMzH4E);Qj=Yd)akYo z4Y9BrL1Ek)=H}ZoVl%)yjc#~{#&>$&hiT#FwOC=XKOtY@KBj|6LgzIaFjZ%~nnJw+ zbAg)lJ!0p;^LR!$wCKX_}}OUOy^% zqec#qIZ)l$4u+H*)lOG|QX_YyQ&%Q0P;SBZsSiw!wXdN^rC(pAwygeCE!F)fGLy0? z!6C*QoL1(Et=#y2;@Tn#o<%|~9_NqYu63nt z-#txldeP@-$fshJ0(sq0u>2odp2bT}BvZhx{UT2dzlW}**3bHW@**C9^fk}e$YYG4 zIp%{%LdE;ZaB>Y(M_#ABQ@N4Zv7RasDFcc{nzPO2$NRHc4=Sk4w4`g>3X70@*Z><*N`%t9w+Jc3)z%i&0rOd4~iV>;513gTdNcU9XO;R^m5b z+@EvOpa?uK9;-*zOvP|c*L>FH%IOW>-bhi zyR5#usWtr3ta$sOM%-6pgm zXWD(8WLr}q5=htzX}@T@fm~b2S9rl4b6$gCXW<=Z!_R9od0N7#XrH0nIqN`J=4Sr@ zgs;K(Ok+o~l2r_@-54I2uW9hN?HzUDUjtuw7g5sSyT8;F2Dy?w(sFu+HRzuSBk-@r zp9f#~SK?*TX+de8@w z$>2S9-Uu)6r&NOc?@kBG4^dcJ=869R2=(9D9)CFOFOlt3rtv3;HJf#{zPfKJBl0G2 z7LvlMvmV~hciezcrNoDMV6kTY*X)$Tk$Gv3>UX@7@s&MMc3n)}4QFIkp#x4yXK zN!Vh!#wErFdWsWu3kfYGF-nJq9YruZe;r!t(QBz;s9cNNl}ztnLEDP2;n+N1p~m4=xY6}iHnJGzw0tCs*N*w1M_=QQ2p{2Q&SenXktZ1 zR9&h_9YFWRYUtk&bnD-Tx1KVV{Ks(*NORZluPzsBa2gjMy@9qiM|JB{J@w$VTQ!jR z57j~A@~D(`iaMjMfP{cGwU0{l7f$HiaS`tw-5)D|scPK>%k zyaGV>HS+b}iuJ8aO^ZamxoI@`6e>h|06nWWN7l7n4}HFwa`yJ~e5|T?Ap2H&j!Ncd zhZZ^8%GN)2Vj^m2SZFtzQdxi%rlp%|hD##ct)jU9q_tF(2;_dgD+6 z?&pwBL8xpjSi6v1UdwQtM%@?EogKBwh381K5+1c(niymA9N>Cas9R_{{+r+lb)jsp zVKL70)KVf+v6rOyYf8NEW#5UWx)EK#`#ijika}@meHRiTKXn)%tys31n$@sKS3Nr) z!i4|;J!?SbJ6{)gt`8EyX&PII4X{g2?k*g>u6bkB(lUhZ%}FGGnSjo6NvGJ}{f|(#zI76PorwxY zbDn9IS88K>U7MZ810FF{#4m2eB3lb@ z$!EG7Mgj4RpIY*XMB?54&)2Pe6`**Rz$@^ELz{t_a66nOK( z*7_{)_>oxZjHFw>ar1lE>#yv`@jk;@@Vs^x*D7a=004V-uf!jOeirbLj8*MCOQ?N= zS8{&Lnc%U`F<$TD8xIqH&o?%(uCmifa;V`|vx0kZ=~(P@Q+%%H^amZpG9YDObLn1P zh|%O z`PxAsf$2%qH>p+4Soa^=Cs&g1#B=Gs0g3fnCQ{O}9l=QIE8yv^wXI82Hdj`L#L2?E zfQ+9?>AW}buAXym_WuXx2JJdTrISZu6tyllfM0 z+=x=LJiA_kdks>3I_38m4hwcQ-ux=~ZFTVm-%`4^yB3E{jL6%LH-YKzUQspNvq|S& z67x4M$M~zT@b0auX>hve*KKH%3^-HwhrM(lv7@AFqfOLq^xKTckhTFmep>oBPx#^D z4Nt-|cp7-pT{=(!UA*I`2Q~8gST)4WI*rc9EPZR(J_}k&dE?tVhJa6HX3EpX$AYSI zbNE(}-wi;qSu%tu zokL@|uaGZnO}*olDo`?=^bUZ3IZKIZD?Tg^t-&(om;%y4so>M9x=F`=B_TxWjd z$4bkxzVSbUwYStfDE?DU402>-Y<|A})$INt@c#gUqSF@h!V~$I5&+Dk^gfm4w{L%K zIWtCfjwnpVGqX4REvTWt#l$LRnTd1mYimjPf2erR#FJR~W?hpYE^*rx=lX5*w)ZV0 zBQm!Gj`j53pYVso{txiK{4D(^T{btjic2Q!U}HGJs){R|@`!vrd8O-DI!3WJ>x)iU z6P^ZnHRpPSaJHjAlgc5*YA&^?++AJY&v0hEx%nlLj!Em%xhv$<5oC@PCP(Dsy$@3| zMYz*spX^f%6UIlia$Y0w{BU`bWA|^-sMD>k(9F{z`$p4@^{%7BntrMA4k`3KFe}|# zgOJA<$9kx?ZB1D4x3{>r+qTu`+Sxl#rF&(^?HLgGa{mAetaONxollu4kLN4?^;-B@ z;@tz`Z;7>S8{!_Cm+Gv^^K-Smy4M%t{{R?xI__)vw4EwDa`G2eRRiTchqZ29&kfT2 zOX5!r$3CB-+?cJdnT*3Y+#9t)XMJaPX z4Qkoi_+ozuwbauD)|WpiKQ(q}c}*PjQ%|&}?4dl=VBtv|3X;GH)nktMG^+?vrQa;0J4bBSS*m!F$Nm-MJ|Bh^ zH)ZG;+s*hag!9wwZ9C|m?Ibh{{SL_?brdy`U;8d=TI6% zDV{LgF#Ib^PPt7tRI}9N4J2^L8PE^B2Wseb3!A?iYi~D)H1@e56XhWJfE{@Dtr>AC zS!>cmr$eFL+kW64WbOq=e40J8Mw%RrEN3P6_CD2nM$)eQRdo7#5p6w?*(x}}3_B5B z*TWx&mwq?#jD8Nai_Da^(no$k98zXgC1c7C2^ipyZsx6jZC#Be^fIc}$EYKoYxI}m z&+Id-d_3@1{3QrQ)N!C^MHnhE&*fj68l}8;m#rLG!W>p@5lUBfFk!?)%g9v&3Oy>x z!}HhHyN?EVS4#11%i7*vrG($X<{Spcy<&Kq!;^SxSbZ=`w+g(6LzTrNwAP2l8ldpv zcwi!!GmyjYel_TGY8r02qT6_T#5Y*AjvS#w%D-yx*xO;oDV}31U}lRMa^07#=N5XG z*<$&Oavvd&UD@FMYozf4_@+Y%@s-m~*d`@o(00Xf+ltK%(tY@jN40F~I*s>;b_?k; z@n9gDvf}T{KVP zBAX?Vuzqg%ubl6%CDbpayp!egPC)dliYgD3g?RU-?d}CWGyUUB0<^b~*#VC^!j|j@ zsi8!6(&Q~4Af81uE_+vJ;(rUr;aMSx?$Yg~0G}-IGhCCf=%S>ENwT>BQhU;#$JUVM zk*K+-++=O1jw!w90r0a0+1Jvn0kmeTWOW9Rx$Qu#T1Vu6DzLKc9M)`YQU@cYLsvF| zZ_FpHbXq34XQb)(Hn&g-q__kl5uKIFt8-H1bUiCTV~J*zxg_V-u0<>SsDmtfRX)6Q zt1&r(MU@ZCv;k$C_+&rp*-u0X(5NRu;7ZK?HZ?{ z&98^7?2Hcp0iTQ#JMlt5k39u)05!GYOWRKj_>R}aejv5`Mwt?oa7KA2f(3Gs?;Lt@ zTC(c*QrQ0hXG#M^I%H4=kBxPmBg7snn_bYNHuf^E1b=rNb;WYBL}pUEHzRd4ryLH# zr;YC29xFJSKu0A;af)azX2oR`P9%9*`eSwuKRWB}{57kcH0tebAhvQqkg3{#8ssDf zU7(M;z>)N?rY?Rl={ldn>t6xIW93|09nCqw3_Xn?K5&1OmG{LYLww5_@BTE~hYc|+ z(3*r2vIfse1bUp_2(kXfT}dVZi1n{BW!mhY-S1i_TGTv`vk4EE=~E4`XpE&GHoj4TI2U-F7bL&V>MG_F6)fgpuRGAds zy*koBU9@W*hC8h9ZiIT(IPjbwU(%V38hZ8}s2QQ9Y4@7F>9nx`xEVRBZh(%P3Bxd}Ec?Hl2xQJtz=BRx7A)SngsVgSZUSxX)NyzW`e3Qrc<{GhH@( zvR8wimE_V#Z8H$-xMz*urD$AC+JZ*1FYlOu2l6#xJTKxPGcA;u>IoUh^`r)`g7g?X zRjV(CrI1^@DP?oO1auw0on`ooLb&kuuQrt|t0b1khf|uTX+6!2!I~#%ZX-KM6*a}& zm%6pI_a`eeg_X}`?o9w$yzvI3tyn{CsoWcuw-`cBaK3`E<0C%bt#xTWReyes~}z;H3Izy#R`!ZvO!FR9;V)BFLOL@81=*d1Ys0 zV`!%n@9I~vszm@fqAXt1QVHd}blqunCA@>FQ;hv<+59KszX@GVyt{~H0pWC0(f0hO@vgtZ8i$1}F6JIDiOg~hvFsVfeXF9>ylJ3oUk_vO+*)~y zRg8kOb|8ED)4UIR@bWJUURn6G2Gt@~5Hoe-fk;W7Z6pWncNZF2a{!R+Dbxed8m#gc z!<>`fHFrzYCDLBw%EKhttihRN0Avl>{b)61sO8*w!N;XLc`LLWR+g&zN?Y4nX_zdd zGB7>*;<63`^GudV#1+Rsh zK_N{F)vikCa8aCMkq1}f%kK(mb3=XM2%095RNM#u0G^oSkH)}eetcEY|I`1FsU@5KT}Hmj&x-rii?=@EHWC6AYp&NIbs zTzF4OxA5ZY>3(LrAQKL9K|a;W5~!ji7)2Nq@o#i3jnB+u_3il6HXzBsC#k0>B+}rJ zqo5Tc3{Zt3tTuF{025CjwIZqez3VqKF^)PA12EtZU!`e5r(ZvlZY`ZICu}M(>=l=lJUd{18#2QtHhctf-_(I}ItW05NQggK8vVJ1G-Zine z@zvz11e0wZLE(nl^1}XkQ@fVv4|;LjBJ?RLY)y(z1xsd;Np}oW{IIiO*mT88*4Gg^ zOPGu-!zu{sDnGMbF3|BYjP+snN4-}uT!x;prs;N9N}5#OWNtYm=O0Rr&hi^;IW1+0 zWp)_f-m{{&2)`lEJxw_hRy$Ek9_O(9X>+kVi5y697;Y=yy-vR=z&uk*Z8%e(dR6^v zSeFSC1|V@spK6Z>8K48!orX&rlskbS=BM+Ftj_Jdj}=#AzX@8mHa0faaJ96d=YC{S z)oB6L_&33RAn~oO`wMI#cx<~RQUd3dd_26*Gdo(Eg2Z3g62=7P^ zpT<4{@t?!(df&s|F}5(R;ZYQz9hiPW-CCY4@U{2D+skb>Ynbmv)JrP7XCMacn%wb+ z#vc&;RnV-o4;2seoi#$N#9)xT4r|ROn^3t47NI$rpiqgP$|H|WiWZ5hsSVw*PU3(7XhoSv78dA7{|SBavABGZ;LfWlkD0WpKt2usZyIowuPn9MC^r=!z&6`(->I;JLlB3(d<6ep3ABuX`hoRhfS>YEJ z_uM<5y^l=dyoOCua~Kkx*sJz3Av?EiV_C31mhgs`4t)MXl208mS-vFJ>b`!&)#cbn&rM*e|Vl2DNd2r)%@t-nM5)Ad1Atl=m+O=OKV58%L4E!V(VQ$Ulu<`%RUllzNiFC6+OUsQg{y z=J5iHtw`d2g@-lgmfj<`cqO)#vKyflV?>vlq*{&pUil&u(5UpTCM%s=!y2Uer-bJ6 zXPA84<22cIArPT}d+qnh~{%$sldwN&U{vE&ge{Ppw@SEFtvq%Vl=ewUywcy%(vrT9N@s5?(TUp=1XDm^%iYDQQIAQ6E!(~{DMxz+d zN=AtP)cm3GewT0I-w?^CX|wszC^&w#%30d|uKYt1{`0vb6>{Y_MdoiNM;sP8HR+ID zSZJODdtFw@rS;lkDfacxy>+=*^J46AI%`Lz>K|^JKQ&;;#xg1^hiz)|Z9>Wdu^`KB z90mGR_O_St=wELO=2|mtW8XEcr+9`R59s$AewM28-l<0b&2yvAU-`sIlV1jFFaL@M}wIXU$x%;v4%l6RtYpnbrk4(}o*5gsV^43VkK2<+^ z^smNWiTa<0bqna`@Yz;Ub1nujd)J)gAi`&!-D{@s7l1YY0EqgP-ksr?_swe=k;hB` zIj3S{PTHK7*~1B~iB?`l4>Y3k@a-1`*p4#Y{{TAbbgu*J7v}mXrr9o%H`?irmVAX&t0d>S=@xw8-U@4=lII=}jz2=~6CB4SoQq z!N8{$-R+7^hZGJY(ZJyLs7n&tRB|fJBW$6MN|3Z^Igv*MP)rQuCvgX;sZn#up;wk{ zb?H(lK9!_dazV#oiUvu=E)H`~+Hp-JIH6TLgHHrwnu8{s6|s{_$fin<)}{y6s-p$Y zc{MVe{q88R4=qd>=s2c_+(=Ql4)o@N;os->tNdOGyqmfw~VI6730aHIau=}zxIHk$x4+flL zWjHjO4^v5@3WyCcmj@Lhe2u$2Q{U(Lg-8(XBifCool-*+%E1tBG=Pq_A<-@`ba&Q~ zltmZb8Oi*rD~%sew25vmAuAgk163{OmNaX0aw2}J4h1wchiSIL^64$lS2z{g>;3|} z(5(L3D({bIJbTv_ZE$R-SvOsa%ulP_ao*xXGz$1ap zNX!5^uFK*zhJ~m2vgQv7gZ-RNQ$2^ZabZaq??71TE<81N7lxwo6EG3T!~vdboQM`s z)w4DI#JX%cagg~)N!y+?SxAHo4%A!-NGE|>F80FNV?mjF;8jJ9iO*`DC1m@(O&74z zAPd0t0-Bs~YogM0-7e%wCa)&ar-cU@s&|6PXDepEAn8mDrot{oX~}667D;mv`QH^$ zmm>sJgK>;0=Ce_At z*c>$L>bW1Cd%wm10Et$fI%_Wp{69fs;rj#&FasNk@k}|72-9tsSk+*)goGgGGEM>X z$*zZ3)x1NcUcQ+mggXO5%%_r5Lu9|BzI zwmvqnlU{wAKH_I5ux>I(dXvYm;p>kW+{@uIKeDjfa4<8P<;K?eU*=q3{VB+yNZ2r= z(t|6VAA;o2q1H+97Z%L8=b){vS69p6O2=KQb+T+$#>%>$h%PbN>j-yN#RmRJVpcp{{Z?IMB1tGY+()DX;> z(1j=uCcAg>MXB&<@X@zZGm-nubNSa4GERF?mGPv$EN8M9kcSJ1WHM@rMK7{_c%tc%sxJRu(*FZ{hq z9Ei}Kyc}1GTFT}#BlRSY%kr%jxNozFBaxK{P!APMqNw>hQDCqvqdh9zE@Y8+)@qNN z9V*(&k!OEEC=tKq#<=p$SdQ*XY!GXgx4ROY#DBuH1lyNunl1-lXQ>I8`Npm-G`uCtr^nVQahWARB?RHlUZF3kPNT&w|vW=Fp;vHFMh&{;; z8RY{YFS)FHLFUJWJ4;un_&4H2-VE^N&xCBP5@B)(dD%g3e_DoQ&uP{*Z--aj4%4*l z5;RR-%~fY`FiUslyi(%*(o&(mgjXTw&utKn6R~+G1Cv#uz25sI`HeX4PqVq`g6_g= zHICu_YRZ>!Cv0x%+J=huM7EZq0ME1;&k6v^B=)al z_)q&j>;C{0qPx4)qHR1|0?X!noQ`=O{j10=bqj4HShUuz(Vjb57C^tk%sJ-0hvHA| zG2#ywLjrhOHPRL^6_ziTJ4d!U;*gIh*1SEX*=pDN1b|C6pD9A*b;qT7uC=n)APj{y z-DuY=@!aaVlbLQMKQl4OCa|w`^wm-1jAuDDQDAW2YWrM%Q(!3-m2;#*$K@k6sXm$Z ze2g59^_v`%M#q254{F#C|JD4GhQ?h&STy@Z-zNf3s>oh%x;=pDTgo>)n7fMx zp?waRbhu>2sU(&4tdxo+JPMU1`3jEx>J=m!gLca$6bymZoY9Z7?;UBW^KnY#`F>t_ zps%u1hy`HJ$UUn3lDx6)b=rgOf-1BF_whO9QyCt$(QEgoUVi!?jH4x*RD9HFp#&-<;m`8e516Uv>Rwmr@YA{T|*a}99%K<`c-?0nt7T= z7|%iJTDoSdE}f>$rNauz_Qu08?Nn|w`E1{8%p2)W!?B%?rlhr&)(;SA*LSh`wyQK@ z)3)4<=A|*@QyM-q=}s~x=ik4!p0DthPXzcr!@#z7>!=tZc_oMpjG*A+z6gb`JcNdJ z3>T$e)F+o2>sauW_t^kUMahaT>H2xP4LcpGp1tY^191v6pwwwAs`)7URgX0& zMNX~OnNd~<<1&M_c^uQ!qHB*;Wci0REgD87NCSewcGEn* z4;1@$Iodg?v6F%^^`x#0ri+8eG`n-_`Bjuqt&>woJj1y0OrC2Q-dgt@)8dT;iz{-g z+NRn&Q+%=4HJys)9d;s}gT)rW1~L6=vc-J-}%jGEp135KbRVg8W;Ga=ci7SYo zqK~`HF_%1ww6{$H7=rHgHC=!JKW66?BwR@F2N^Ww+t3WtRA!v3$f_AKfsA7mqyRcl z7b6s#NT+d;nAbd0k4#ZVPAOdohy_sY!=TM~{ss7Vb>ojV`|T@fV`Pma#k%btmBcE? z$Ya5)X{u`W@ta*T?X7L(;zVEL9)_A7i<-=OWwqp%dOL|ALR7fu)xY7bKtZBh=_?Yj zWhX7vR}U0X#5SiK)tH@;u&z`$98&_MK!qUsnzEn{O)bQ$Gj5Dv4k{1{=xQY^0yOmK zV7Z&imQxt@uSD_Rf^EDvq3Qayw4Z1FZueCPYrCPWBiZYt;0Ah;e_yA#>q9 zUf=B(4x3?-zVcLiL8N*8y^*`H7wE%i?cTGS?&BRP&>1bF`#$mzcJ-w!4+EZh)AoZ% zv!_7~$!O#|SPnhvr141vuM@7)I(yL(Xl7YsIA!ftt|pT9;Usa$z`*WkQ4>aZBRB)| ztJV@5Y1Ur2Ijw7}JBzzSiVG%!Xz`qmxa(NnTgJs0ZDsqyfg{s3za3iYdLn7fYN643 z``4C19$x@s+uEfNNjoeNkQzn+6WYB8Ther06GOMOjzcD=Co&PyMFDe))5Wiv?Q}C4 z7~_hd@ia}8j$K9=tl@=Vf;9?4^*;0hM?7O4k2KYc4yLApE%Gd6;ajQntM^vc zcC3kR{$V5LqQGZI7J75-PuLgbe2S9_ry{)r!2S=h@&2P8gl@%^)Z8l*#(x?ffpdZu zGF&S(N?lN9sm6*p0~OTkT2`~*UlU#UJ5&Zat=ynuIFSbdhpuZP?%8eR!k@e|%>pU; zWb;hg4dlvQ?|)Qrs_2u?*^x3>QPOBQ!OChj+OsOE+{Ti+oL;Jy1AEEX$9 ziyVr~nF@KWJNwwL-Y+Tv7RATbtIoXcQ}w9TeqagCXbX==c(`9+Ye_%hAfDD%va&Z8 zYIeMX_Tc)%W>^_rhA2dy|` zc3Zb15`{xoDs>ct3cB(JVkN+lcd`j?`0pmMFojIm=%jQopE7#Erz`t zTHZ!*VJ*r5?1}P2;QK+Ll)8}|d0v^5UBG~Cyrqbnx!YlH_WQPEE zrcy?J@qiC{P~3c!n>*&L2#UwN^!1=zq#j`)`&4NE0Nx#XQobEX9D3E~lHKj&Rb8x{ z6F~V&gl82bMPijDb>0-@k6OIePL`>5aj>4I5lfMsX*P@fvB#f0U7I>1bw>Iv-G1Q(t(wgImjIa7FQUuOv+jf!8Y2b01L2@s$vyic_SoWkg(!$$jU8l8M zf=7l?D)LsY&vv&>zEA^-#l+2-s+{8#+;fVyzbMJ?Q4kMKf{s>c0kT^UC(k{q7^6_T zhkBWbU=#Rhsq&0=sWKx29V#%m=cQQLO(z2wpb6~lZe-mRo3Y={6p>JicZr!~`@rDm ztyr?uZZzq<`+t~@)afTT4%12Z|nDVkTiD^x`_0Kf? zs2TlfLyU4k`c}rt5Qz5kQpTROAj5U10gjz3IV)@-RxI;V2)O2vU2&Y?)4b09wGFW} zG)2!f=>GrL<0-?{vf^&6KSXZp4n`>rF=~@|u%;krrdRd1U3VIVaTBm9=+8lLzMO#aJ@B z07xS>yP#NEUTbzX`kU;tmO6F>mE)gigiRDPMj2*xLVvoX^{604gr288bInPJ*yQp3DKj*g>s~kbU*Ycs z>3V02d@rnhw*AUKlbnS=O5r?1;_noA&TDIr5Vl&>1yBYC2c=?plBfhu&yJbxRodcq zZ099MdMq;irlV_NtXW^`5t$%@K+L_E4#vF`;&+d z9A~v?HPm*Iw5I^CQhJ|i&$`lepA6ss0A+ZA1Xo0E0CAsMAMCd&{*>5IatEzbC7z9^ zcpt~wo{Bt3G~K#3-Ns|s4_f6`+S*1BXmVnTJkz zuPM`ET{7HTADaiQLS}Yj=Z|hTHq%xn(sigUVY1~qU-pCECoVOLBsnmQL9uTYWqb+ohLNObdXAN?XkXiDByOT?Zu0*C+Rr$zDZJG+O-kzK z%HL9FvNDq#C+^3Cjkxxxv4xCFbZ3S(Jb9pHeL2N;myp|Ox34;G0v#LWvYC`cx~E5e$lv*H`c zEHwDpPy@ZlJ1{*>W9oX07I%}{fH%T+mL2P%1XDl%*8G&T`&G;Rit6v|sSxBbmeOSRQtyIG{VBpAWY4-{D& zMV$PxnAHur5*8eaiFc8QU9C{S@ zYFo12w+)<*^^Czf8m#fdjK+B#X+;5c9V#tG?qOq*v=TkVX9h@>;9>JG8OAE~BIeF9 ze{Uf~RvX8v_pal{O{D6&Ev5E>5K|J5JB%FDu~9t9Bi(>aK4K7T6%1~04H7ovn$E?I zRv?BQSCRFr(iNWA$uT?qD>xh;m0?&6XP~W0=w5pkI%?iyZfhBi-ks}0dz-0~%PM@4 z`Br-lc=V-WY-w6sz3<4aw`k64i>}$44^H&OHxY9S5PDRDjimb4aL9~D=|CZnjQq!?UPuZznRGCWK3}atX&M=jNN|AU){W)Bd#IZm zqKsn{4HqJbP8UtBZ^Eh|F{4uG)0*4E?J(PME0TG0QY|@vvr;?E~I}Ls)6z zVQ)5+Jk7W=f!KYfssD|h)?>*ha?dZ{hcuY)nk^)$?i-D!N) zjTx9^FZ8H{fYX1x7*wD~u=pq7&ZY4S!dJdA(sdZE(!p7t-Hz97y@0PD1IjN1nKC9p z@5rqUJH$HnimeutdiK!E_s|o94{G)Q0D)d2@K%ej>T>w<(Jq$mClQw!2v6NLL$Tp$ za^U7Z4Jx+tp5m`-t!(}$)UI^#i%BMP5bPH`V0|k*6O+Xu34qKA?_RO+Tfk8KRMqeN zFD>j^bg&_K}ezRId75;%Su$6{)#&E`gqdUYJM4lY+KBeKA z+)Dafo>`H3M>y&YXK~W3%`4pzadO5>h95hgOCM8J@k2CXQBDi%OSib7Ln(T76z~RU z11AN4I)%8wV!3r^NY9oJTDH;Ji(w&RvUe4!eW^w?_0#Q;DLCFmbEiE!RorNB0MWFb zGm2>9mvP6XN_v!u3|?5trtZN2Q&e0y#3)!$B60WlVb-y$y@_Uqm3bDMdTyqV&rD-& z7h~-=ruGymzm#80RcNA~M_Axp@-f1w?oC*DwM!XW`X@gs0zvz|RzciMIz8 zXHV25v$zw)ppj6bGRTbM3L7N*S6AX8qfc!U>0`^0KrB6JlVgy$GEF>^$hh+k;Y%Dp zC!EcUcCB-H6~(Gsv|=_v_m6+APo&ssmyt;(r7?w+9jXsfIvQmdV3CcydKy5T$>h|; zqGmD94^gI?M?o$Sn(H9& zI^XzU__p5U2||`=Mh*ojtBIn&kNjtK@dozCT)ROX<&0|+Fc{smbv2S?)1}h{*Daf_ zz}709s<%Hl%};M@9I`K)&>Ym+fh3wvvu6}nx{bNFwwLZR3e*Y)0cl;ZtM#k?G4S@4;U5*gjilct z{j4AbnGR97&s>_}=ZT#T!-n?$RLJ)QR3{{Q*5z53uO$*p3i3X+U4}7{%_0mi$g56) zjzt9)G|NQ1XGd_D90T5~ZBrbPxc%ZW0FO$H0*%4J6(9#Ew(j&G5(y-?aXO!wdSWTbZ=4t#5U@Z-d>c(YB6NpWroP~UW)rDXV1~3HFB?urW%Q3*mQ&XHU;Qs*ijSx-tJJ>ZKo@d$EHq+l7 zXh1ewTiY=hzPEd3ageS$k6Lo`*1a3zCcSmzTT34iy|A;2-4-CIF_5FuyySh{V}nBw z(gtdFxSmUOfsPP#6#>ZWQYseX8N~x2=OevL6z@!&r*TNJpSzA~V1zFekRn}0Z5OMhGOim12!|7ULChLE3ZDodkvl5=3^g^r{_)$Zzb|>~|}L9jc*hbJDby^=Fth z^W>A)xT^B4yppjEkUCNkT@M*G6MBl2Ef_MX`Y7v4+jCtDKJ*z_Y^ZQ2PKPn*r>4opwm{_2hQO8t>jpm1X2(6ictCyPiS$?Y-(Dl)~^22sIZk^ zx;PwC4Iji$Y}%-@XVVvhIQyW~%2p+qB{9nmDVtC0iq^Hew~1tDUobxdjN=suiW6?m z$83j{6^kUR8t#!IJQh7_#rB@oQu$3FmyGUSl~OX~Zj*+oH?y8k6o9M;rxf5g$69{M zdZs7=i;yu^<%T$d65n`piiu;*F2ckC&MKm{DKnwaygLT7c?G<)2yJ9=jP1rf>(M?b z{0VP{))pGhldQq4+G;80e(ADMlhD_aGt5@@26u&ERu z;-{>H00lAr?%~wZBIZSjY7!@k8Hd@ zJX$V1z?(T#`d680T8*}s;tdyAzKlz2VR;;~A?GT+Yxn*C0Ba9{5d0&1>pRKAe9{wCG+yJ*B#*Y^)3NINMstVi7+ z{<=(2DLS5=O+pN*{5(~{fbuDz9+ZUaQ*Fga998KhvNnnr<(Le8X`WsPEz+usTe(4! zD|UGM$N|9oYiJ52UuTZtRLPuza8Ivl_V0uq8Pz;hCZnn7_pw;t_-#a~=A0MY4^PUl zeieK${{V%XtK4Zb-hGBUWb=0x3%ePpbuBLQ!JaC<@cx^4L~(G^DbJWW>P20OBk@m) z^?wxWvfb;XHRX%>Wx&87)}Mg1dtViJstpfNx?4MWddlbJA6n%aGc1f4?k&{RsT)HW zR5);Y_o!^ao%X+FABOy0cj3J{WW2PsVYX!Zt?PqVF07{VgprNI9M>bJ4X&a80F8hr zu089y)a?zPt!d%?BJb@@a~PD8-*ld$v-W0oW=)=@C6lSo9rIcjUL=L!c9n^4K(23I zwVO@2YZ-Z!R58aQw)`b~qQ~KFQpZ?@WWKloVPZOakF8K1`S3k2d?E1LTk*VCu*+>a zydP$N^_YJ6uLsj^VYauLWKvA5&CgM|n&+)=^$ROMuv^|Zv}2ZwKPf*-mP@!qLN(*q zP)&=ut>wwVTuXKwbgYAr4vG6u}>bLmKiQMFK9q|1O* zc3}j0(#^6)E-+h z??o)0y{m4@{>$v2V7*m%vHt)9{Oc||-zF(7Ex<5tI34j!3VaNK$?fl2R`wS%TeOm4 z4^XG60<-PYb?hOB0fuXLRJ@W+K_rCZ?Bi}ew2Fr3OYq0xz30Wx6T{%$HsnD(uYhAjamRsq3=3W;kp!BAOB!KlZMI3T0tM@Vv z4Hx$-aD4dFX3z&=&*@0ah2oMCxQs{r?$p@ZDMCXL!Q?5Aj%XKVmSxv?_BMw zJcQfAjPf742YLWr2_x2)6x}it)OV&w9HS=Qim63Ufhb(Z_>;4B{0blrX=y<|bT|zk9$pGO? z4xK9j)56x5ix#UM_}U}1j?db-sVyQhISrKr?fO*(h+|oSWsqP4{xv)inXVELal6)( ze7#O+{{U$Y4J(=w%WouCCdx79On&HI=e06xd)rA89Y!N>BaDE<85FiRvgx{v8lAWv zYz?`0bCX(n{{V-5ZX2j3{wLQons?$$2`@mi!1vChT`@k6jSnq{{Rp@ zF;FxS&GM0&+thX4Q(m&Q(zRvudYr_cz;jyK zJ*JyDx&G2Sb|ESL_iBrRFp6X8>qxP?{lzT3$n>ib071y$6{^I;3bBj3G9`cQ{) z)?Og~$*`8rD_=TExZDPI=cQ!@nVWNc?xwqM3wWN#!dBO@UD&3e_uv&QKh>U}opG{U zH1o|U`9y~yeJHRcan`cWZ#cM!{PFU>#8vCvV^G!R`&Ob=p8#ZgRW!#Vr67&7%^?no zPb%$ZJt}M0Te-}^K*+{Em1aFIMzm|q;|hN5QH4oi=|zOu(rF$n)ig9{?3k!MKMKdx zb$h*H>F%!BvoSdKq@5K=Ip(2-7tGs?=BmV4gaUb`RU@TMv6Z$s!Stg7q%|PgN4-5& zfa$^LdQ_^JKEM5H(7L*c;?gTv%iTsv4isx)v zg{ilKQ1^%TV*u8*{{V;e_$|)1_GD>J0ZB-}tVv->6Jw3RtGm^{CHSXZ@ZG>0%JbVm(*A1(2@dMr%V(j^26x%QFGL-l_%> zjm?H%VOyS7k3N{MAIo@8ZlZx1{y?(3n%*}X7oqE#&z%Wue-SwR>#_K8q3QlA@mv}% zzj5|ES8b+VnD-{L{B5P_`VWhBEgwp_`(34^r6ZM2Ll0U37jN}V7EcJ<>9$bp)e>Ks z&vmX=D52RTjNiOpx;<&7l&Is7YR!p`IfSz(mTd=5-8E660pD^f00}UsRHS`&DM+9Dn_WTr{?cgJezm4 z5~2C~)jgx9uS&6R71NU)tb6v1kwHlnm*wNqof@$?U&e>s8Z*q8WKwZnkDz=o)%C9h z-+1;Z{Hq%gxS{V@STs4EJ5X&V6qZ;+NfY^qNblHGej@P>qvHKgYMR1TEbPytB$Nv9lwK7VGa0Rij9BygY&fz9X}Ev`rz>rhL1HRo&OqDjWmfKgD&Achd;L<^Lh$mL@2^Ny z9e!h3NUZO@`DQux6{(|Z7rq$OBiFPS*{Q&HBey$Pbj2t#QM2M-0qfrnwHsXn#br}e zzFq3Q0VKv>Zls;=%jI2F| zXeXH?o_ky9<5{K*(VmQYeiT9G9feepyFY-dS64cM%O;a>=N8!*#}yoZl?GQkPZUSt z8;uUpv<#-CNb`Z|?@(F%O7SkA;hB5_Ay4et`kZ{j=zse4#>WKxbYxgw%nD&Nl%GqWf6 z3Hg62zEW7FHkWW4Ymj+H;PF<3IO3WR<&9(cW8ivvQ&83TQ|A0ALth{+ek(kqiv@Zeh|UT(mP8dedlwMezg$NHEFD$TDE|;nui8Xz=}(E zNs(P!a<@ZUlwW}|cXq2Xq$oFoo@xlCja9OF+f`tgKIA`zbGAjSb(S%*z#2u{$5U4P zGBijH)z^q-Ww;x>qNfCb)0*dhv~T4^wwZvAG0=6a%ZX9(yk~7B&VHu5%5G?w&jiy&4Qykz+kr6iN!ZYPRiW?Ti#rH4ukjn_3s+G*}j?h|qk;;HtOIAfDY zsK(?sGQ0ewn%>dj{mGI+kShs*CnRz!qO@j9U88|OIM|;{wrQ_C*pDRFezrQytRuL! zb+U!6Od?^ox*HO}L(o6l=C=Gd#0e)F9jp^39;(4)^%?oe!O=Wc3qmz(&;MF3Y zQ!=MP(9~qjCqUic7c*OCbP87I^$A_2G26w@9!&0UfygdS@) zSJJb|80MCOxc&gboVhrz%#rKoCmo*|kByM3c<${f%Re zW0Tc!#Z`t`B0_<YrERIeMa|1ywYN|)1vaP6C2yO#bsMa z*3zuOcaFHFks_W`a*MIsu=Jz_IKwLg$Y6T=*06XDgt>3@jQ6Yl8_^e9HzMW5sJ2{> zFynXA*16VDC7L$st&IBOf}yz*B#zr*`J3t5obkMEwoVUmSFJ8ip8j-8y@q=8RHc!w zXKCB3brc&44sfl{H2EN8g-LDb=NRrOVnB=?xmuaoZsh_aw0as0%ir5_9X0f|v8v-axc7k(h=!{0&eWe$oNpvCb>9((n8=sQBvFP}LB@pp1Fz{6G%EpX15A zDL0N9PY4opUB4+kX#vP;3RXae7$dc10{H=c`*f|1RjnHT0DYcXEMl|B*nGtM%lB(H z5!~oB+s!p0ka&(g@`e4`@1E6-0!?&V?D3WZ?{U*V{;HKn+XyoZxanP|gLIukUA&i1 z)2D{rfaRrZ15DMUf^5d-HtkIvIIRsv)>~ax?@y70k8Jx{*Y1=4$?ht#kJ6BcLK9O* z5EurZ7+<;wr|styn+u4b=jHwrNV$1;6Z1VUL&YcEA%OXZN@7e|ZRfXOWnH_*N79f5 zInOm>d%3RmdH(>wFe)4Y(va>k0NaJ7BRy&1RQIWbGN#vbAy4sRgF!8kK34~hl{LMh zOJ^<9jLVOgjOLi(k1D%`eFfmJ1!=mEhGf(M-ylrjQk1MuIpEg9#A%N;*(-253bPJ{ ztI1&6#L(i&2QN@-Rx!hWHKFBDoK?}{U2@cQ%ZUU>|1UtD<>F*L27c;nxiWd3xBQb`%}(?8_bvG{w%ehtvR99-zL+L!SR z&V0FX&=KoF5^Wr2xuR*BUY%%k+mSuY#}cUj0G4FqHOjPRHuAyyy((=k!%?|1NPx`4 z=5F{NwHX94EP0@kGg8{c_L-6=;U9v1Dp=rGfus%wJ5pPXv=tdxONf5KbW#`H<@9Q- z>|Kk$%ujPx&^KMji9u42}ib!}+QF5>eQ`g#hg@gSJXA4Y8b1xsxdQcM!y{Jrr_k|7+7k^IUJ zA4&?cHKc7ZEpcdD%{^P*v0)Jy%yZR-Wt!`de zMID#gEl`-x-aRRrF1L50P9}jt>A~bsGMxHV<(NZqr3;LZdsMbJ^J$Vaw)o2eq@P3H zv~TsBzYtyom;^E&4`Er_rk6E@k=hpy^WZ5{nuu-&akw{E5=kTysu6~lZ_AIaE2+`^ zNv%Pp%i-m}cr=@g2@!tjU!`{Xr;Ic$KjGva13GryQOG9b4#zwbit;$%cwtzN%zB!! zq*}VRwYQhbvu)9ihN~bs!Kq-hxRY^-OKs%S-rnLi%+a)9@Ch7oT9mYhw)dY8BrYR>x8gdZJE2eBy!$F}wL!OW>aX zYX1Nc^)sO86RcO5$Pyd_jj;-_ATkVPr{*}q9Z#_9Z zsV`DX%Sd4UC>%Qf0K6(1Hjd}%Pr#4(CvAt1{u(!od`qfH7NK_w8)RR)gz^cm&wm~G zH&gg^`QrlTVmeW>%*TpBzzrfy=iWv)Z#l{xv_#)MJy1K!=b9 z>5#1P-Y(V$urB#aavktv8rhB%MF77ufbE;H(Jg+ni%1;)PIpq zL6gk^J@J!LLOB`rtzOHEbmKNr5jDp0e{{UyTSzZPQS^_K&QBQYCLX2Ro8%8;%3};|CW73)> zvAD+_Dl(a=el;Fk4{@e z4h)U7F&%|)`jv}my2b928_ZirDjXb!9f+w@2$`|2Pdx`((Y4Y%L#V>{8fAmrSx3Xl z7a?)$ReZdoqK}z|GwEKb;ZKU%kAl1*f8hHYNajoZ+vH*M4c>;S?n`GI4!^3}XfpU- z-v-2-zx&6nW<_q0z_6!4IH)0J4CIo0)-H4JQ#7D)Ly(+-PTj-QR1t=a)yHahanshA z8#x^+Npd=NbX z#N>59l~#nsld*vZt}5CEJw+lBwWqF|ErVQNJ}#FVP3FspxfH7x4{-k>LsSn}`J0bCZT6Cb*~`=G`6+L{7zu=hn3?EzyC` z1pzfyOdPFR6)nbno+&Vq9i;WBzR7VKm&Q{#2Arp9&T&#lHQezSmp)JjC$%{pQL#&7 zI|W`zspEo43qqqVImJLEDBz=WS|(9pc@4#}^BQ0Sdmi;S6D-H6dAeh1my4aBciN$` zxNSDsrni?8E=J!`=|-mv5nRUbHcaQ5tsb5Bi?L+w)be|AOlEuByUd^|dzqMRMHwZV zrvkl4RQN0Lze(_-c+*$#)x=suF7YNmgVf`i!1!CQ=)M#9y`<}&D1l|up_u~*8D0nn z^sngq;{O20AA=Eo&o?(l_SS1_>m89qrE|EaKq$B$%zQU8O>VN1cJ%yyl{|4QnJ1i7 zS1glich|P0Ev3wbqEA7eN|FLgtVH8^#UTuAApjb4T*)%*bCn$hX-lVDDSt7^*^|X% zq67Cv1pv((E5l^6U}wx29@S>qBfeQ4<@Wh_$G&r#%u9LP6A;ZcPQkJIgFwd@B#?t7 zV*q!pA*Ef#Z}y9%^3;wL^*@DGv(#;@FA{b{WC1_5D8z{Lj3*^0i%0MX+x(O-Ya7(?T&TH{KGQd<|ckIZQpg&&4ZaRTN@V*48OQ`e;=*SC_wvD#ccvyNTkI4nP? zsYD*1@cYIVzYP3Ks^~iXy6Z8;nB$jj?DZK3(!8$bHkVMj)S*(g&g820P-$XzE4D+u z{{ZKw@gJ$F1kwvREqbh-eX~f!jN3W3Hv%HjH%7-5nz1Bmb`Cv_dk_32(LciLZwWP= zXwYOCus65kUQrFU%T+w{(==YdSkr8S7m{I!5E2i)KkRZ&uRJ4kC^B2xqFc8}4WfO+ z*WA*iw<{OfmnjMTYB}x#T5dvQBO;j?l*-20nGdR*ezi5M7dnmf8a0>t%c2oU>CYW& z)qHi~n=glYU9W`ils>Q(434KicxSKUQjMBCmuUz0jkx!zZ5ltcqTC!rPd`eI<2KTH zMOmA!SKgXcoMn`ctpY{+$h730zQrcw_p7#=I^Ah=YSK&P`8)+3>j@%L+OI}s5cz8% z2!Dq>QF0|K6(bDF4^OQ~5Y*dnxCW*+>VZm}h8d(nmCAl!siy!Jnz0qUw-b4AuH#71 zJZ@4!hF-J^Qjr=WGiA7~+f7iquA6Zl_*dH|v7t@UC>{8%7{B6Qa3*Xq9-}l0GA6x} z&eBGXIEhz7j1HC7{66@FbKx(v+s_}`A-F=SzujUnSsoqnKlW|>`lQwd`WZg*?A!-j z5$WE!{Z8f^`}wc!qcJR`5SYLN=~+0ISJY=WdW82R@iP(!r9mD+!uF(KPbQ{`4(@tX zrKlmSp}9QPrJlK|TG}?99GSOnpw&l;NTc(-wvsd5deybEcZ6JR#AdotX>}?qsC~tE zdJ2);+_+VbVd+Acqas%AQ%`s<9ZC(jA5MK}8Y7a%TWmb*_lFdMFmU+AIhyUr5^j-w zdWwbHCvT-7Hgv1&`$u^6;ga|SdVyDA(%`={#Jpc)D-V44u6_Y~ZanyMGthxnEiZ1Z zuKwQ}f2DQad7xz>Z!8l@YjA}mkA_pn>(ZQnt#mi~v^tz=B$0%4{NYF z2YAmE0Z5WYPfBLlrd`LC9qM3!kPlAvW6Uu|VL|eBq=ZvM&&p{GY^P^&Qh-hwdmPsF z{5BF=!!?r{`Xmr`pmnjf7^U@ov2biabI6y=`nQAavLw1EC%33eppCdv9P{%UhQS$NQky zuKYvzIceaywD0&v@4nvm$s5V@=VtD|O3-NX$Fz^^zIy%R)~fB`Rr{!?w0SHg`{~ym zIjYM6WCd!Of~YFPZdI1L9S=b9H;DYp%@Ww%t*9*{ z_KXgvn(2IZbEN7sSzT#R3w$6FDvSa}WcYu@y8i%#tnMr{2H6$xB2(%QYD13ZLR<^U z9vjwH5fB0Iyk{bk-okka^3!o07u(jU#)}IRCs`P=`kLwDxt~i>b#6qgQvi48+MUe| zNp&ymwHD}cJ05uJ>}uuis`{0b7E>SsAbIF>UWxF}#a;-|bWK)28QU!SjnH!j^~nVE zBk5j4XC2c;J^ay=8Ihal3CN^JD>pnV;yrW0dZ^a)SqjLYt6=q3>ML$L8*dcf%i>Fm zkq9KThFG^M`T()O7@Tbl41$!}o~i6%sBox#SWL*S$fZ7T3p0(9^W0)FYZ^ltv-y4|=W? zo(D>BNe9S}w0}AQ6%2?0RsIr3*A(=%xp@5VETm_-9cuNchTde7R1$?dh&8XQc!l*8 zOL$=rM7(VStpgbm(Ji!=O`)$_oc9&XnF#rq=Rb{4vvX#wSP1PkD?8~|%v*O1Q?ql> z)xm0I)Xk1rW$0Z8p#)}~BFds6A60cP{^xq{d~xEqJY9EhJ%yBZDFOgeHO6{#?_6%& zgS(vfs%$KJXT&St0A2W3OMeBzk!w)66FQ7G0OvKy-RhqZykNG1?IhGKZ9qjTG7t*q zV2(IRF~$KsNbg?1;17$}e-HdWec}6C7_OH5u`eR!lXsz{R1QPD1}*8-)@2l> zh2p?r!wth7>(_o0_)AatkzuIm-XPV}NruiRmM!N6o<4E-;=G|=W^fsVby2TLEd6=ir?P=oDo;9^zBZ@L>iT|TX~~$0y>XcZO8gO+&9rF zcY&0Q4CR-tdI!W$h*SJdhe(?0#Vih&2!x2n-TQhLKDBHa&UjzJ$>S*Rh`1Kt*~#V{ z1tcGNNWll`O$*6Bl#>E9jL31?uUuJ2YZ|&Za@~EZxEnfCuu74R7-JQ2 z0;R!@Afj)&=OV7yOLeECrG%`4PQL!t>)#2ruZJ3TnX1`*NQ*ZT#6_XUNB$gseAkTK zB=OF|-{y$EQ2MX`0IHubtP3EJvB@(YqM&H=k?YpIGsRPQHs`{2U+|5b>yWtnM;HVi zqP*<%UzC%Ma5$xAONu15k)na3QIcw_$Is3)^sQY!##_s!wugsqx!@12UemOTd&{|O zbqRchjBW=w#K8GO9ER;qNVIShLRb+Lh9jTgILY^^pjV6qb|m*Fsj00MgS66) zq?%-hG7`K4P=;9z0(CuUJjmHd9MlOHtw@o9*QGYh4L<) zK_}Lx@qdT4Uk7V4_-n)pBGe%J%00W&Mu@@w)sIiYJ98=82VQ+^sj~2Xwi?>wUtjF~ zI`5U0jsq_r<6fiiO55R*=$gg<0K{?)>~Wv6EuIy?^+Y*pe-~ zWOk`J%?}t@ctb^=2z)PeE|`EM$2dLflJjG8fmI`j+1x@Rv~ZF*4=y+h+}Bg$tusy2 zOcH2v`H{*2Kkpv24JJjXE|!*7(rL%cEyREhLsns77S$sJ`qx?D4Hn~7@qMk;y{Wj< z?J(1*1gImfc>Vm3GTjlE(aBMf@iqR-k|X()_Sknb&F! z%sK(yr)@4zDSXVUw`LXef52T2!b#(n);xNF^q4?(j~z%oKT5**ymY;L;wGW1cxv11 zT1y;79xyOFfn6t>s@tLSv4VJ=l@osBwwZCKU0SaDh{`GFn(ZdEXqC2(dj3_3sNG!M zMq`>y`+8NxNt~m{kWe19+dG+I4P_q)-D<)X6q5?OJiHQ!qu~sbQk{f4O&eC&Pm2F1c$zowYXCzz`oSwp^ zism%5cxDIAal?;VP}*YHg%K9HCzh%%P6x@KQYbV?r94YLy2UTd!;JUmy>4oDh}tEb zU)onPtZYw{B$+{sToSEYB_3B(US_ROASj@Y+dw8ryNV&(1rMROj-9g<<(q zur(|jBXB^-r#wGsy7H}8BfUro99IhuofL&faa5aj319Vxp*5p7on-B5KIr$X@N=Fp zXc_c3!ruw}8Sw{zwOh{|O3`?dAWfhTv@sd#E5QEOFWKg{nHTp`60ACv915*9ly^-W ztVnbi7&UlASSe$Wai5@|X&0|FiD0ve_(&vI0F_>&*w)91Y;;>oD@%{HIw*LNB+wDI)#xz{{UJ3*XKoqd5+(Dn>oUs)b>>)rqk$p(*U6aQ6v{q*~lfg z``)xl##i$jnVXyr^u|!QY-iG~+uH55{?K+C(EZ-@4UGFSiUDwNUq5%fTGQ+r@^D-D z21q`g>Q%Ou;?=bUU5rgzA#Bjt6)u1HYSClsa?Tom$r^VB0Y-a z^GK>ez@QE93HWN)#X6VRZ|@Su1sUA<#(P#~qi3hsUQcIfAh<|eppbMRdQ~=z$m5a+ z)}#=kayrlkg@&qaA(G!p2Cx1rz#abv|I@q7~cg39CbbONo{kgTOHBd$s;x~<}n~*tipmu zSjonCsdXC(w3&sx-@GIS1%3K+ND4Wc;&JBYNhLh-llaz-p=g$jkft+^dE{2df^|(Z z!@7yp^=p5%<03eZLy^s4>Q_yvYZK~AACnBtl}}0lrpwTtY3gHc0p^vQkW6DW*4t@1 zMzg0wZ>35j)PViw?gnTBk!1M_lJ+$~oWqtNND^r&jd~)%QcGDj#JYL%V!%%lH zNVsFb1Ddn5W8@y3SM7(!&-f?D!u<>3JonxVjM{42d^^PC^(r&XelO@Yc9+my!K=&V zT-rOQ2Zm%n)|+<%le4mgVaKf^I>+~p2Xj^gttzZ;fiYXY4be1hYs69Mz9zdiT6>S0 zK~gwwVq3IV7jRp;sfuRW%s+)sdg{DY;f+7QnvI5`quws0mnaLWw&1^qYS*~%Hj#DW zOT8n*H-cRz-8Y+)#z^WbfVsD~u(^9^W-}^uV^bM)H9~4Pc6!F7nuONkEu0ktiuDZ- zUhr|A*>x*__?1P4nJ_mnuPsFqNUFmH&OWtsR?;ps(;Qce#GiC~dew~Yz9Q;h54Fqt zd!GQ?J&l#JY5= z&xdWUG~GL7Npt?Qc**C|vY@u}PRIsjk&7R4dYZK~%YQ3gApZbZd+}0f@lMw$mctUC zyPC`_S+u>2Nwkwpxr5A|vxg$GqVJw7q+JtR)Mb*^*5BcybZcrKq z!>@Hd^Z^svMI0h@ZN<8eda2|u_pzF?h|_-V6fzO~Bbbt%zF0xiIL<2gzMgw|bd`-lMA%tBz1YBy!6&0t`)j^Ld6nd2Qc@y%z)+MuFzW6_49dLU80QKua&m+39OI2AF)wlXpMC>W?CB@1#%Nb+? zEC*pvRV|EubuluI%@-gM*0i*}33X+WQe>E}?kW0i~yl?~k2DXYnAajah6X^Z9ATu53d@xp`JrqtRy>)9`M1oIAd zj)JHNz&kf_PnZ)gL20MUrTJEjj%~dt48*p47m(3fL{syQR&;I~gwk|LJ-KN82@dXf$ zzO>mJ8Je}^y6&@auFjz)yJF6&Frc4Gs1O5z+NVUu20se7bLBfEkf1@d55|_lMtMqA z0C0O$yIZMVm3q%jd$^utI0>B7xaDIeOCPnefT53WDoG)l-G#iP1qVu&8Dxl;i-r|F z%+GTtn;`l7nj^U;VYc$fAOXB)wlsUVbmk(SW-2*i%zkRNBy4RzDE6QVHnvk=->rl=-bV+h;-A@QpdJv11LaJFENHO+M6A$ z@}~F@xb^g@(8+SX>oa@NMnhVs{$wk0lMIS4+f+|>r+P$nRbx_gEM#MnzyKF z(`nQBGhwna2%s5XwkR7x0ls2-FRdcr0?fl`>sGDf-03p>#xs#rk(^D9M&)IS2;i~% zDUATmF`s(Ou@?54mA&=!e`r`(GbTFwS3#)UTx$05-ruOUSh$T>__193t^mpWYRWWq z{btiwzc&^zeV!r!3F%k>V*4ng&)K^ux^c019^Ykdaq6)x(8;*&CE z{{RkaTBn74K^KWMHdMW}JEL|P!wP4LHSJr*+Wej;@g#yv>50oIz~-odp7q=K58>QD z5HBulrqqU=_H`~C;AD=}2=nPwPqRNNj+J^ai5|eYJ*jW32A8VbX(=zBE!?PoTvLGA zflV4mW76(EC|KP5KW~TfX=xP2f%{(1m}C8_^3=CTqFAG2A`U?&wlu%7$*fyNs^KhK z0z;4IQh159b=PM8z<)DML4-Xs>sC?gpR@OkZu~i|UVJ>UNaKGHGdoraL#pNSs?)JW)C5gFP+$O5ig$q9wxf4+EHtr9GkNp1)m&d^Uv zzo=>NrpkjMy}{z79PDgslh3H>v0BY<99~WUWE_!>^~y$@7$5G|j8{|0rWQG>WOWC% zXqckzUba~7oQazRebZHvAtlGzT>QN9YA9qeI>>oZR=&wS&Te2Elh@LdMG;+FrK@a4 z+`gi;G~sz^1eX@5Bw{hNedF{M1lCeR3d&twPh1|AW5XeasrI*<%UCjT{{YsdbOdtS zBS9U*E5mgm<~QK}wVcp2AQ?LPS8Js;eH?-cCt5 zu9p7*SBFrERyek87(F`H9PrH(DV8FefFq8h*0Xg5&v65<@UG&2I$Y#shTmgOw{sNB zFzXq~9jbX{{?^qkpb8^dol)DMPML&7Ot;kZ zhq-%%hFCe;#|(az%&z5Ow~{MHZyNRx@3j5a^giN%xyT}AlD%i)ev{!_+4V_$XLM~6A(#j_4BX%v;PhK-DW;N3 z=Gd`Ek@c!~1#TR!a-Q4+NXfyM8s7fVZfA*iTX}>=eN>vsc%FFttl&3MT@IV7%Wna+ zxc%%HBLm;1WgnEBat43>R1%vyy;H`zwxQwsPYQW!6@{Yg1a)KYT%Mg%auCWU&|1 z$|H@tgI%A)ZyuilYtVR=;r`aPj1(wFagl+6?MN(C)I0~O$Kmwx#PdfS5}Y&zzjzP0 zt}$Z{fyW!GtnpT|+Sao^r)eQe3zj8e&kB3wS2VX)_T)t&`P-nR1R)PYPi1Td4f2lF zG>Ad@k3DISZrSjBUu!3=lh3ozxaW-Z5?SOh?U9=8bun%uyR1gYDq2;tybP73PI_4pL+Lj-nEt7 zzGI;|Ammhml&R}TKm$0=DtQzRX#{5*k3&Eb!vvDTWao;X~L?WdBl!qPhKe!{KeoRQX~P@s&C z1ukNuu6qu@@Tg`q#t17+84k!!5S@ z$@gHM7=0@hG6qdbIAK;Cr`=x>zu=+Y5IlL{bKvVeIW1(lkIR}+2+l?tz8cc)tRfT1 zd|1mjB#-YNO-57>f2BsaCjzo_6__fijL63uNylzGRheuqqqP?kukIY+8m*PiF`sJK z`)$p|n6h#VOUM+tgl5HYc@z(8Z7GH+IBmJ)Revk7>+4zz5Www6laq=f!sQTzV1x57 zO1p7$HSX5Db0e<<=}YB+agJ%?K0T?q1j=mp;rMW#*S3yJ(JOX+0hAl-5OD?Zj&vzS~)aU#{5VfJ{; zaRE$NxAJKj^BqrxJaw!1Kg2^=js>|ot|FWf_Y`rO=>9BtOH1&*{f~&eIeNE=;#Bi) zV@3o*>)Rc=*PJS4ewBMnv6AY}VH+`2>KNzw)^4ChnVMDHx>ley2p4%!Mi0F*{SK{s z+LYy>GJgv6r~Hwrk0c0_SzZ+=7aRgR(PQFmUryCy)%+nLvA&IP#B_Rs!txDgRlT_J zkVl^9?>l;$J)#kTDZV%Jc!Nf?cC-X}Z@1+@Y6}-%66;(1LvZUFt6*{mK9$-xjjr^~ zHsixObSm~TNC+TxRXN6MukqiBeja$I!1h{4hxG5TYnGctl8!fy^hTiWd6BvrJKX8I zbYgpHQ)qL~(z)2;BW~k@D@_K)5s*P&)}z=7rr6?ADJt-?6$jFmI5wWS&08r>RP?N` zsYF&=ZLZ_Em}WIUF!ctm>hf6KUj3s?8zI^O9`y#mgOh@IQR;muWz)4=IF{p3vU@n+ z?z=7nX07ZgM&(~Ca(ycHjUJr3oK33a+OBtFtuRH8y-F>lX!mU;4hq`o6GsS@lV^{sZEf`MY%lE`FwNQq&{aGMLkfr4c`@`dR$=zh27w3E#fa6 zV=lv>9`wr;l1rH2izNy9fbIuc-j7$F%F0U%JS1}rIU|xQGf)2jM37A%-dcq2OqIyB zNGxK#bkm9QM?&32Q&=)H+OAH%W3!I*7Cu*z8g6d2vK`3mYz5TfFhD1{qW0KY+{q5{ zAX;6m9?&>^bI(eNT4Lc67oEBtqd51da%7PrAyPS~#Iswlng+uqSSq05dsh91lM86i zsY=*o83VN(%p1AS-(Jmp6x^;^d(mfYZ*^eLJ8YQ=81)^g3bd*u10yvQYDQ}A%1oO@ z(xKJomfmT;&SMz_^lxfLvA2uNDJJ6?$JU~FgE29&Qhg37)>cn_sYRwnaML!>Pe3zA zFckKAgq0Z2GzIKCS8d}z3)^@y`YjsT3#JGz{OC$(~lgpAU1V&*9A9Vy{>#ZBd$ z@H1AU7V8Pze|zamm@a1k$Us^`jCpaNrC*0)?vh2|Qh9Qb=BW7%H88oH0a6`4`tlE@ zO)QenhnSXeQ{&cxphU;6J9^c|rGn`D2ybG#)NPE2-Kmqj&L@q;g$N3e=-d?rMidk*QKmc#0bRGlo z9=qVXn~iJ2_afTrL=nlj<0GDwbBUbpr5>%M>Q^2X*5uzck@?rCTE=tf$Q>(FQ@Xp= z^_#tJ{F8Zgk1(G>&-JYJOp#Ki4V6_gYGjFt>05JJ*~4a+D%qHv0n}A!*X0EDH2Kks zkxWKVeQD9BJes^AC4fv8CxPmHDp{>HD-}sKOE^(KP3>sm~s@u);HvD*R}T<{fox6n}7a}@S5`7kk1$7w3(j04SSEONm9UDQo) zFZUc_s?jBv6s}h~GK5$obzRb}ZS@UJH0zlJP&Zd69Q|poqrFy+72Hi%FqDq_z`qZm z@$ZZ;d@U8?+FDtH;^EjTwmSlAiPtSgm9E|BsN!X{a;m`OFbDqttx_zLT0}*(jSD%; zGMp3b#X}aItxlh8k4=_X*zqnh4t?s1KmXMI_X9P?c(=ovey^v<*HHuIp(EF)r+Vzp zDPjKM7ox@;k$KPdtLj(b;$Ow&$jq^ zZ{m$3UDV{d@+Hw@GBOi_NX|w-3jH1U-SK--(6voNMevh^w7A{plgP>Rugh;0UQUwg z62WrueWa5hM)_YoK^~Q{<6)LG3>x&$3Thfg zjpArEjcz|W#@wGWKksqHbG|;-G`|senr%}Qd!)X72((%KOEF18Guj*3!V?Rr5giU7A)Ojmotnh z=xR%Qc&{#|g`WxmBDFQYvn8Ass+(p29FFyc7-f-mo=yc%HHn78%f1-C#-K7D{Y_|E zyTzwGYavp53QOxRvKX1UG7O5UPSxA_)^4Fqmu;diXwjDWk37{yg6i1}g-Av?+$r8+ zLI~|!K77}@dAF3PjCAa47f?xX~;F%TeXaOG6>i+1IlBqano7LY|9%Qf-))a zu}%vgr)o-UcQobGZDN}*N&5q-sHz*p@FzacZuJu7xd zSXa50x_=2X66Kg+vG4fS#m()*TPB}*5Kk|FKkA=k52U^kw5EVl*9*N-lm>t=fjweTeux*mvZli zlGpdpUQA;7O0GYPHAOA;UkuzkPP-O-k)A^XR7`4F9ON>dIjw_ts%z}A-jK}#@P3p5 zmPjXYA9(ZWP(cumHd4fllh>!`Qk5#jPdjQkcPeE@>HtI3AXgayETeZ)4;?W;8@>|ombv3gi->d>)&9Zt6Z+)x#&(iSDh-npiME$w=_0V zm5ztOml{=FRicRShj7Rs8r4mI zQSmE7W#Y-j#jT2kwh#XREWjP9fx*6BTba77vKCBwfAy(Q9DCHVDEm~=ulluO6#G%P zpfs!lPFIo1re`PE)|HCc%{ry;5uW4Lw5~05Mzbqy%(n={bI^*$a@5VUo?lVTIBp+( zNK@YxENQguZil^TJ?!spEYjS{x#icjO~g9OPSs_xmj3`tlM$#P#&|2-kV#lbfj<2^A@+eWm4HaIO{+eZRQR_@lk<;xra5iZ6L6cdlx|?a-q8NIL&61ZQEL@ zObGMSiV$&A`CxKrP{iR7f$DlxfqzTCn@{Ahw*Juxh&pF9!5#?%rCS&G(Zlv7BgpipyBV7h zmLt9?HZbUFP_jE0mA5hP>rx(iuUd~AK4m=mRV82$fZs2Axd?#Um6xdLTTy%~h;I{Zo#!aWy>k(M^ahN4hmrKJqb|Ht;oVv-KfyYpw0bRu zH-C76*P7uqEg!;HJ|b&PA9Q+3aHl-`epTl~87ONrXR+ps1_;2-cDe_L;@1eak|7GH z!IQ0TpN87~v;$Fici2kbyK(96YqRj)gW^vQD~roh_B}*m88-djUQJ<$&ST2d9;R&b z$^IQXZjQoT*DH{!4=kgaZZN^?k^AcV^M=vwUTM|9N>a;ANkFB z-^BoR9~3^XYNzbdC?NLcv%q7gQQAO`Crp;!(Y(pxSu^WYif*1+N8NLfJt}2Yn1qbv zw`#cdFADB(K7zfMFx<@vgM(6_Q28}#7!}v|oF3H3;vtH<^IAct)Q(11W%>63K#zKq z>73Pr5zYtWQUHiDInQC%uEVk4_+!NSZh_#d?+i<(M|F39CiJ;+myCJ?+Pu~%nljtp ze&TVS)xW1+YH(V~5Yt(pkmSni{c7YE`g+?)*FcHChZKP2QAX@k(WffCGsS3JTU*9Z z#rKUtB%i}; zq%Vpz+m8^9`cR!s%KrecI@hNBXw`lf>N?H0{3^?JiqS&v3NSJ&%9aHAm4IMJdLp-i zAVg>sdr*Yf$fanm1o40f=qS6}e<#``Pb~BxdivDA2+6LVH!{JttMHJ@NOvC z$CSaxJxH%W@jt|EU&dM;o`I;^#}rm2cCrtdg8G`{%w@g3sa6x5F&~9owgL%M77SMd z`qz2z_rO}u#E9>Xmg^E}V6y^nFb6^EYmAy86kz8y=pP4VjQH-`N4~v%KS;bAW@K%k z@OqlT?q+#}g%usopKP0sYeUI;yE&Y2avU8>!UvG+AS z)y(>Z)85Jg%Q@W0I8aZeLlWV#+*KwabqL{Gmis?3js;OpdJdJQUu4mj8A8A}t~=KM z0Ele-I|5se4@loI%z?T2s=(uRX8_cSyHB92aoe+;0gx+SMz+!}uRN_)io&C}=}tS2 z+8pl1>_u6#Ng*w97!9}An)e-V;Rl2C?*T#Miw$LDyqx6QZ_5BXZLbx#X%g5Gl}R(f zt%*e)rdg$!j2Q+9uGhf6II{3oldNginrdFjs-ccIlw`(v!3Wm3=>ZM7dK%og)vYxP zTWeWul{~C(U^zbZ43m+ww7I;xD2=*lPXn;7n@ZABT}`xoc4oDSMo!aRbe3Key$XCg zDYd;-=W+Q-9V>;qxSIBI_s92u<0HO3>c`4QuG+_;zRP)h=pC_>*mka}=i#r3H2(ku z$K%_m)M=Lv6I;3qP5JG|2`q6I$7xyzR?T|Mso(QF3qbxyjbnPZu zVmT+SKN^qA+NDi&dRK^UbU!ywvw>#wa;2DO0_yJr>Ocw@vmR*B*LQ%lq>Mb*vnffR&f zp{^FzKP_xmTd74WBTP!jr{nX?ktuvwCdoRZAerEmZEJFx)-6 zefW+W9gS6tc}l~0mKo6D;Be#cuG_^vJk-2#VW;WZt-8bgnV&3xK5wo*mB}I=l_t;+ zJkb(X;>4M4r-BVxcyZGeQOHsXRIy4)+G^B}hV(1EV>rfYXrq{bVnW`&)o7qRj?`P~ zH=2AeZ*GCsOok+6iY{W?DKI(3UeWL5(Di#=aupLxYEIbOl{xkNsyLx$T%NSMRS!JV z<`vnk;!SFQ7;4L|-rFU#fpM`01!TM@90U2(=;~8wI5ixGWWy&Q9%-R!WwWRyNTMVR ze(>Ye;=At`*my<{57=M$cX_>dL7WqiAB^MmtN#EA{ufz%Ow(`m4Np-`HFWrzO|08X zk=vS~#N%|`2x|F`XE9s#X#nQ~(!KK2<8Gbd{{RBN!+R|vDUps=<&+o5_pb|+UY-c< zyghEC?D3L!AA+IOt*<1TR&(pniYySBqjetd(?dK}S5 z%W_no#Lratx$!H*+NXxoM$;{tElYSZ&zy%*Ul(|TQwG~$&f<9|y>xn}p>ocX%#4wt z&RBin?Oacbb^8riK@E&vSC#jV19d}ZRVsX^33nhd>@|wOMhcFE*2Id>%Ko*Ps$0ip zD2^$F+msSV@Sftc<~m?u+zr)GCQb!gb!OlxVe3*_+R9&aibPA!PkL}>>6Fz%^1`mP z&hV^VHvQU$a;+gKIPFe>UPH1mxz9oCRWxtVRx;c&EBx*_6>`~QwR85B`NwZVQAKkl zjKPdKb?j<8sh;LmoS?@rRc-TL?>s3T;b14z<8038oO(am8c!Xp3 zjlred&>f0KM;ufPB(?J7SdiqN4OS$pJb3%36*4<4qDJZ7tly=w$fn)51{ptEL~|ld zEmrqZw}$P%bWYRlM!9JPj;SrRsoxSF4O5TgVCrybVuoAGp%6ba_hZtF5b7cY=M^{r zoDo(gvwJE0i3nrdj+HH?thY|<5YLu5poOVS3>=P?yW#uW8yVeoC`8usfTVXG{{XFI zMutgD9nCxJ&XRd@cBU&E(%!{tvsr1Q{TaUQ?xL{?kbtZFL=VoR!9qadm1C9hv#92f zk=5%z548^q>G10soyPbsHsAxCZu(Xhj}?v9qLAOV+irKar8|DVtS8xZ8^@m39zrSzD(d~Bf{VP(-Ra<)rwD}_v3C9e2uUu9|tY&GJ5%TUh&!q;!xZFuRlTt6q1`71=PPw;h zS-hDDW9qeGc72q_dYX0tbTAf4r$sWAT#!!yeJZmMCo*loIjx8#w6L>Awm-dg+bH!z z-iu8w^=aSxJgSA{mp{sYB9~2bw=WPL8xx7tWK`W~QEN!Sco?rv|SSuP|ji}zIY6&O-@$6C<1 zvYr652>$?b+=lIgRVLkT11wJ>9;~2{KPr(Zms;N6>>Kxf{Pw5Asr7=Dc-8v!C6eF{l}D za4Ku5?yn(^8=2Z*I&M8G#1}Hz+dMIVM52H(!jq5zCp9rc!K?N!_GjNB`I+rWAP&sf z+s^`m9IQSDw-)aVk!9Z)Z|>r%7=rSqt=dN$UqZJZ>Ph*Jpsi04MWrR^T^3I=4WlRh zuJz8?mZv^|^y^&~f#L`=|Tf9b2Nmje_l`JQKd(?T&h#aL0#PAT{Uprv8jLt~9e9%mm)=rtWrO}ns$(@nN8 zykB|0y;usnyVTIDXRb3ujL2f!oHt)gW}TDtuA0tGIA~MbG8Vio_x-D#NR2yKaYJU{tFP1xk?Qb4pA^aoZP*e{gAn-CKex^g{y!nvoO^7*un08f7&>5&1ju zim?VbXjUs4>AI39YqvN~FJww9U zT(*d)P=z?^PrZ4qz*Z_7jMjuDrngIZ-1%z2fu8jJrL`9&*^K3)RU@f8N8?`Yqx>q@ zyf0xFi*=dS5pbi+Q`D<>uQ1c>^yzP-iusB}Naq=^XuQ@uL#sz`r)yF?np|qB06dTf zO7ZcvWaaL&vXm9II4v_t)Adgg%9^a6TngXh*Ilk@8a=Jt3E|j(w1SYViNWW&{Hm-z z9h&D?7S~a3%0vg2zxR8bl7`32x@3@t=t2(=^DmAGW3almN6i01&NSHRCHSS5Uu>O>XCW zpa)dwBhRL5%XK|&_TK5?GZ}&m59Lb-mPOj6h-ma}8^qoov6@ElEM=ARwFhs;xh-zO z<%`=|$g*M5(A;-5G7}S~%CJemL|M?9-)A zKM1)^tGF~hH7($_Il7E~@cnuU$co@gs%(|=j<^Hfv*59xQNEcW##5;$t}3;``z|D5 z^C8F5wsH#_!J&@i#NRVV&{b(A63STohrb`7t$6f%tBY85+k7ws=N<7~_ksKoCyRBv zODJvF`L4P7askgZ!HUf(;nn8A^41ZuDNg*+2)BY*rD2kXaTV>KAAB>U_)Eq%`WB3a zF&(mbykU2o=LWo8Q=#ZZdbkWytw~f{GZv3Z@khmZd`YBQ=(ZYQv4+_&5LH{uoD!o9Ab4%pWj81?+?lGAjx)o)_cScNkj1}7M;y>8>gR**M@HH}H`>@9!P zplqP}S6P}knE43DqmF&ER}GVSUTkTU?ng=@PKwbLPJxIxtyt%tD^qLolr;H3!1D3b zQmT7qv;|52@su($iMM zPu3#UZjC%rO~KAWhkE#dKP$+08ngA|vDh^EYkY^^}p2Mn@Ggk`W!omu+OLBr@+U>7FXG zM$E(xm3la&o>jMvcRz0Rr8SgxaQSZAZX2jHDclSjSW@EkZRR^-<1Oh{^(#wT3$X>8 z`O)pkW8D7$^{O>Zp!?J9?LN_Pi6;r%`cviuIDmO3r;@_r2n6mntMsj_KMsrSUR^T6 zK*lBAxsMq3%~iY;v6j|HE@32K^dCxG;A2J+I2rRhk~sY8ZJX1cx$0}GI=+P7A6+g; zF?>JerE{@Hs(>-hIHEJS(dix<_?M}8W8wCt@aopxWVO@|T4U57YUeyP;t}D04qxdo zz$R<(RLDTc&1YEYmpYWc+4hA@gmIIOp7l=V#_q~rvRq?)d>kB#E^5qcC`3zwJ?c%Z zl1S#Q?Aw3{9@LwCs=16xn^=*P(t!w()tKQy`Mt$hV~*6(kK)dKhG|@JI*n@k!_q@< z27?Ed%5fMMTv*;4s%> z9{$z2XJe#Kqg-9w%og=HSi2EbBZth9AYL8L05y3uXsq=_gI7CZbR|eU2JKSfNrw!# zT3q6NHcuwuh8ex82~@Q2J7m0vB%bwl>fO@gctT>%17iTv$WSKYF^Wxwg-F!);V+ZO9le zj%rrpIp~fF!K*0h%2AFDRE9T5vd1ht*3r;sT_kHhYWYX_cYNQKATpK_8WaSOd(>pz zD*1Nun9%S*C3E$~O$f|+UPt5D6yz`-hOGEs#Mgci*JAM% zj6!K4JR$E&;D7(t_?toT#Ck=H){YFVE^tT$4^PUuTa95`<_Ceu6~e9R_Tre=g~kD` z?%Cr;o~L!I_`2^^vW~`37C46l4uAbs!d=Xm;;B8u;{@WX`J2uOrE^HYNiJnSDmK-u z=_82-6^SRVYFWQji3@F8uv8Q1XC}R8hQ&Ir=4#yM$x06nd zyw~zq@8jjqbLmrHi_~CU&9#1F+*X~$@x>ZL2*YFMKD67lc;k*4V*5P9ka5dZ4aMZk zaf%8jj`HFH#vkJ9DwME2#4BqG?vh5w)~CmFR;=gy9opUFA}&YQ)`8sh+pmdw=ZAh8 zNARWy7C5d+catAKKK0_zN3t-E#J6&5(DeTR2zZyqS~cIq6j1gSWT7XqUbW}e(yhQU z4x5Pls5OhR8^(e1ocdI@;N+P3VlkSt9kF==C)_w4I3S;VS5xA9%^K+~S4d5pVjgZkz1&uAnF7w`Gn!ZExf< z-pYK`C!G4z0^XGsrL59Pt8yemh3}fnn$|-n%&f5-;g6+jYI8m1+Fdk4H4A_$>fNN) ze`C8{zypJhMP|gz9Zs3lCwNs!lJdZYoJKL*l=^+ zoX*>D4oZ$It?++>KjA9UZ#9#AY}(g3jPy9~+N{=0=IyK`jIOJAgjt8$4L4Krjmc|e zA`|y>-mT~}-0IHy4eOY!QbMHTsU7Imt!?bD=CHJ!&lD#CkMykRvQyN}hXC$0Ki(vF zr9=Qzf(Aagtr1LWLnNdmVMShrx1!@&o?(xK6G zgw`(F&F1n#u1k8>g!+GpED_?hy=1W`01x8FttB8iMuFocSdv9a8k8Sey7t#mw(FdY z+>Fxs0k)EMg*^MzxgnyOCjONw#(HA9eMaw2ys?7P!rVb5KYmW_SPLExsi<{q7a~}c zb595trD(%!o=)dH(-ts2=_%YqP%4P_mFxM^1lW3GHF_&YbTTIZRf}hZVPu&y#9$g% zW3ihWW9d%`R#qX%Q^h@F#SwQ46%{d@(}H&#)vqr-slh<$RKTjJ#EgIiU$wSE3rcb6 zN&wr>N^UYZ=Am7P?fgD`9cyCkt|^vg`=EBNKTu0aZzO90h#T&M*j1P`N4i+p4CLaw zi*FBTdK3*U^~ae!sy}u)$9m$#Rzdasf1^grBv}(L3!@e%?oElt>;s|%%LZxC%bv?6QQGI);U(V9V3{kuMilZ0?roDpN{{3Y{ z*`9ykS+7peyfbWVB|4jLW?$Wr{5^9|NbFZB<{En4*y^bQ^XD<GG@kZKk&xy$CALd*EUE(7XW9D)%n?@=+0+~?tF*?45wxl=$<(Ek*KDH7lfF38gz;Q zMJI1QweuOCS1eUTrLiU_#b1e5pAv6{)x3LTSLML!0rjshBZ`4cR=`IXIL{dLt4ORt zC)j>9_7oH;$C4T%QY)cw*w4yqQY$s`npNP|e$D6#(}eS&*_^MXRogmLRf(dG1sS+F z$K4*SUB15$jP7l1@BCF|_6QX~h?UvBJ!{VvF?B3{V}Gh(N4H_NI5IG;p zwkGh$h_so~4OSx`oI3l|EOa^f6FJdaRn^y7x6}MRVQ5xokRv*dgVg;iqw&wfi(iNK zmRBi$xAI^lY++|}e{{SrW+*cgt=HlV5E+uJ;F)A46 zW_>GvXayLfc4B*bR_>DTYjG{ZSvBGjf}m$_y>z|+@FuJA2VMUFgnLVI6y-~nK7zfD z%iw>Eyf2{Yo*>g_7f?V7$_ebfaYr!G^99Q##mtjN3~2ojjADy$u-(Bdz_cpBxa*Nu zzvJbM?6@pX9{Dtj8C-$Zg2_BeY}|zn$a;8V2q?lgyom|S5=|-YR^~GFEvZ+k#201utIUX zj+m_Ld11G;TX#V#{{VZx<5AhPDSK~oc7@=Hi!^!Rv+G&PV@O>yL%-BC>y2(Wz=qu6 ziSL?^!`e0PiS?jnQonq9hb^Y@{BL7Z_VKiVQeGS zU{gJ_4cnKHGhLYQl-f45`bUUhC>1y0j>qd+%i{0+P8)!FNj{xOPIS0 z5Tl-Jqiq%&7^1knm2oFQTOJ$HAk;&LB+C)QC>;pxPqenMxYRFf{6OAFfj@Pg>@!hM z6sI>7X3h@kHI&I3a*y7-T?67Li*!8#Zw2X>8#L>$^@Atw`d2Dr{{Tsn6bE7)0!BEi z3lqowsdqPEqnhhdu{SY3z%8X{;^Ul=^{&50@Ya#7Xg8PFS4#}`>~)Dzfz1mWAv$xkA13K&o75;UhdKi7jzj24?NX&L@Zsij>5Xn3VcEFFM@0} z4LifI?~79#X8Ci*F+u}`No2KR@i2RaDgu8i8)Bzgg&Y> zinrve5+oe@gHu8Tah>VCyH=5q6T_t0zLWO%xKTLhndkDV+H>1lTnn3p-T~xRxzIGI z{5qQB+%dkD&+dP^D=JGxSfZ5mmz+{;M%J^acw+X)Wt2@F$sm)CE0PxSoX8?&O#SjW zHGIUG&N;2^Lse_ErY+QlXOe{4e5gFD!C6uwg92CZ1$ zeU9F1QZka#<_=PxtsS!J5-yfWw(VJhK5#`}jRF!Afk;!HDO_bQDQTewa4O)84%E9n zs^cWUsI3V1woj8k?Q<+?reT28A4?bJe8B5ah$1XoMr z9~MjFEq2WKE+*5R)nFk>LdUV=8Ln<9{Oe(MqvURswzJ7+Ja@K=66OQCCqKg9O05de zy{!0STky@oTlk%sZl)brxPgRMCraYU(UfTe`PVT?q4ZB4?UG<`8yz(Hw-4fmSW9)5;dI50fDB_Ns z8aY6k-HdW9h<M1EhTXNegt{>q05)KlVLlbRI}NTd)#^%P&C zDlHWwNfhsNC`Thb>p^xh7nQkR*0&lBL&Q)m#grSC++l)_)z27_cy83MVKMSrUL*qU zSjda9tB`4NeTqG1IWsIS3ZdzrQYuLGiKW?PFbxP80;yc2&|E6~(X7V`r=}=Ci`u5S zd9KL|-bAs<4*;m@Dy_IrICP=C-ipt&$L-57C zW8uwD#y1x$95yQ1jfly|Tvv}R%C4z!r*_C>WnX+&PM}<%izHws2+wM6#{-T#dRD_N z*0-tKY1(8(?&tYd5!AP}JH#3mx8aRRG@lUJwT06F%N(6b)j+1q+j%99J%}@&xTJPg zIi5iuvwupIBg6BKGx=B7U$dXU?*RVLI&I#WtLlkiuiKO5#z)>k?OF`^^TH`-ccsr` zB%!1EvH|0q*C}^sY~?Vkhln4PdRN!qv`_4Rtp3kF5{tz?AHElmNhwQ(ApZcX$5CGz z+uTQaXt!u`AE?JlR0Wynb|Q5HwNV3#xodd#VV2+iT5xk&t;CtyL*R&D@bh@1QMg#*Ao*wy%v-iaacg%x zaXePjJYo8UI1N%sb9HkFf_a&tQ^Mzu%AiQ@<&C7Uv}=`2?kY2lwC-F)w#+>V+-aN= zTRA!OsQ@Q#?1C6>_V%rfMXWA7qhT40s^Rn8`qp4#5squP@Na>&9~f!6o~dIraL1-X zWpMpjMtTpzxYC&5ab23-{gX$G=#!YPTy33H@XOp+K~6^v1ktd4olxNC+r4zD;lB`E zXv^Xocnj&uapq%;iq3R~Lx|I6c|TtD*y+AC@hz{02Z8Msf3qFSaz1RHrn%V{ISn@U z#@${^pc~BTp5IDh?P(6qgmH@WuZ8~r54+9Pu8fr#FF=7mDYQ7`%iVGQYfj~tk%PsSE9<}Zt5k3#e&~w7EIaq$6|7?KJr>rh99Aw6Tn``c?ZM z4r{l*Z`duGMu)0_o@?s=02q86xA=Lc*yIqYYE2_w9u2>XQM1xo zST9fSNnC~fI@gzo;$BsFI~w~F<;2ppm@bmeReNirf>DMCHNC0X3wv_tzHR6V8GUQ$ zj~8hV;w@dZhE#=$k1jwlg*_De*OllV9w)}u(rVWqXSRjLUAb2L=$<}PrR`qgQL{As z7x0@@)O;@5yC_Sm)yRdquH5#k7K!2O>#yt!g*KPAib!L}&b)qA?Y=VcPM_gRm~|~W z`a6=S-daX@IT*$(=MN0|J}~hlm)f~D(_G87dt*KLt}H!zoQ|bUjbjszxzmlk=AhHb z=3E9MGTqHuwDAqS)_{@S#IJj6`@Wo#I{yGl_ibC@BoOKi3tb7fkH72nuNCnRfn@Oh zu_C16Li`+Kj8|q88&0FLEas=WhU(0{&-%{Giu2p)ZKIXf8zv-SYtyv*Z6i?C#*?Ys z3rSB1$GP;ZJ$J#-+G_?4N?#~9G0FYxbgy!SuWJb5a%5$SJ|&ZZj@9UzHHV2Ti(1aD zIr9GYbBtG>!}g0kT_L$$!X`Lj+zyrRe-3Z%JWH=izH(b423)^SujNyUmnymyk2e}O z+OAdgRQ=fd#;vvAhxBRu*Z{Z-f~ef!*Hh!mt35MTm&5vf!rv(6r9t@Dj>jAaQS#$r zao66egn6TJo4UV>FK=$r?jPLwXZ>36rD?0;wYc3TsTh%lNEohrP_(#;a^^B4QP zwU5qa82l@E!6Q2!-SE9UH)bw1{{R>#+7eL0BtOD?aa?|OqF7{jA6GQy_)7z!g{0ItSySUI^=XZu}bGl*1 z;yPf}&2l?UFGGDJ!?UWyKaIJ`6_y_}l}Bi^R};e z?sN8Rl|4R{SZoATl%D9rl-_HvwVcTN%J4FJ3Pp`aBZ{vEoi)6m%12Iuw9+=lF}wT%kv`$IyydrO>c-lv_XsI7=RYvZUPlF~g^b8m5>nksgt8a_g%(SXf|V*0V0IV2XE#PEGNtz|VTjcR0!5(-EE) z3_H~GT&PF6=(701wT}NKH~3U0sZJPTzkx!LCQ`49~ob z`d6~}5^o1zXftTuEKJT+`7Ao`KK}rfa$;_x>`{E#X}$`$lKV)FbrjrKZ^HqK_00?R zpwP7a1=GYD0zRV-MXRD`=nZ`Br)m0*o97FQzw}~qB5p|^TJ}!^czeUzhL3TnYgPp^ z50##!mcCOR>@K;{Y8N;^5&TQmJ}9L3li4g6s5a$S1gJa;!|?wAhGNt$=l;=lfT&gkXrniT~wQsWDYL@~Qb;)3UQhS5-tA;<3B^`v}W5+aa z5BQhF7WXh{Q6v_Y*(6FnW>xM!wNJrbA=bPrtz21IL>4>FB;GO4LyGnDY2pd|Q(BRgyu%ykocHT<^vBJUcgv4WES2#@2fb*gtvu?XOObAylU9OuiG=z8+~F81M$G zKC9y>6|D7i^Oeut1-ZwzYv#|17rJJ#;_I7_4M&Saa#Z%@^dE(KHLry}Bm7CyBa6fb z>>5p~VlvzxEqi9X%JRnFOquL$eqjmP8`yWP@~Ei3WbXT%OzpINXW_Q3pv9o;P_!DL zTr}!2k~(u-j+d%gcz?vJsawRimNB-_jx(Oz)?LPxa?qQXv}S;EWE}_NRY0- zu|q?!@m*hs^e5D`xwVV0-NK2KWBf+B;Sg|G9E{ZS50#X}Mff8XzoY7ppu>0mh$S~; z0I=Y8`D-;TE}aCvSya#7u8&jIV!P8Vw8-EH_TTc;x%H!%b}4B3Hi@Wd*SDIWcfIpJ zbcxUodiSn+I25;*4%3~WA74t}(X~mm1-ff!{L^#6C$Q(GWch5wNH~y5=6dr?(5rW* zYBn;eUs_23evHaMBiPlO4I=wgwwB_>11uoq{VURZMez{$<3iKCC8*m7CbM0uaHAQ= zLQQh^O?TkSfuioC5>wJwBiqS19<{2m1^QE75ho4OqQY92 zto%2uU1)M^Hg^h^sh!d1llWIHjJ5-F(zY6F*kb!7oP}U+tD4rn({$Ti3K>8teA(QG zuhz9jMNE7Fsi2JBYaeZSA+NLHyPA@cC)yNtW4390uxjJLVvxq? z4!n_1i5xOBDDuhqkD#G4)6mY?y@&Y}(ug}&-Tk$kawphj^A~P<_pHE$cq>+-PccjE z&2-;ph7&Wl@ULIOy1h@vJ}7MxF9_XTI_c0T0v04=KBBAmb5lAFs&!R}NL5OxKJ_iU z+I8-ycdKjJFF)M_oKv|*1WV=Gi*)}0R=;+s7`lqleXTr=Z=WkCZha}qX>o9NK^c+H zKsuUgObo?{05eQ=&sy4xO1+jzB52G~LNdzV3_NXYY$ zH{2(mr8bisV!F9m=V)r{Fjz*>Hk{khm*)09^_&LWVD+X)@~IuESEedj811<{RJO1+ z%$`7C2<~bX$)^Qq&R6C46hcFcIw-=76Ae=}#lLrlx+;0x-mG*kkA@5)c(k9y#>pl)9g~2+ems zJJGy7rC4bacy?bhS=5=ve(5#J&m>bqh>NtS#&JsMWgKU(6%wh>6>DY&C`1NTEyCnx zh6U|TJ6Mt-X8VCrxQ|}-N;FZ74wb8|TG>N(iDUk(pkvQ|^_-Dis(I4e$dUGDA1V4) zboFA3HFRBDQqbG%c0jVZiEHK<9Lf>N@&YSMd8$&@^8a!+qkog!)fOP>hdmC^bfQ zfv;;iZG`qZCFzFF;YeilC)T@((AFh)Js4t}U31w*G6I@!h_Lz9N4T zctmW{B$IcSj0In%dNuEZybY`PKTq+-k#iWoR@*9W0FQmO&u@5EJbS`gg~x|HQ*Gj< zUow3>l8Afr*19iulhN}@qrL!m9qnVuYAxI;WBaG6bvS9;Y z4w&mx%WN0-(Vvvm{!$xY$@l7cf;*XwZYSnk?i~oLQKr;I?x(M{N|BwTBbt~--2lx= zu@uOR;Knh=2&ODK;;$@N6#oD$RC5z@lEb&9JjQEdPttBRD4uu-2_AEk*B+Hv!WFQ6 zarn|x5@kh>Oz(_f)74+;>sF&voOG!cKKQC-ShJ&D+iAC}b$I}|jemsHH$cyEHlVTj zF-+eg_7v!$EOKglkn%(#9jhXvxsm3elgl9F920}I=g`%t;>h&$ub`muXT!AkIKCB{ z&0Ad#SkJU>IqA<{E5WQHbb>gfIbqb&y^S^zE%^DV>k!XMx+3ETlU6O^GDwJnabt{B zRH@2o%4O_w!W(#=XxGApXT1%mP`llV~#T2=h| zoObDPG$ewu4B(E~uY1)7r>)&ZtXk?Z+v$#j#t$3W zYJU*)`suIZ{hy{Rc1%sC;8Vc;~x<(nx=oD5`+ z*{&uBywsscHE9G_0AmE>@~Yl5b+Oh3^_qbt=?-zmS^L(OpQY$`9!%aMz7fj^^AvBv zIPG4vC^b)#DCXrL)x0!x7%lY&yKBki=@H~DZ}3%u#FA-To}KP_Q8Gj#o%MV^=9{{R(5qiO6*X7+!SduF^63(JJH zxjLlHb9p0W3FIpMYqYcQwyUlg#r(j{AI+9IAAzio5!**$V-}I86?Z}Nzws9O)#2zW zak53Tm+>Eit|IX4I{L2Zo=mKR_)U4W=C`R|+C^ikv3cOgRy}cFQTTD${1qmS6V4H_ zb}loIrfcWV5LsJXYw`Ihu;h$-*RhvYZZ7=7Es|wPm?~5x_|}!)bhFrk!KLE+sagi3V|kI@c4Y7{;)+ckBC!jwA!9 z9lxD>UZ>$*W5D_%-gr7^@@`0SkumwR>_1xb^9u5gkvFAI?5*IR3Vo|deQ6?Vi;HO* zIUxQ#ueYUrA91F9M7;1lmA##T)AW5n0XuYMO!pmYg0{BQJT$sjjkGo2b8uBIExT^x zJC?n}#a<%u_lWeU5aP-SR|Y@2xbJ~q4UeehRb1Uh$B6j9#2QYApxfwLMc11gNtu1z z^#;CbH}~45;f4(Tow(0o&2;|&5`N2W;wv!0n<2BtPpujjgM6ASmx~c-z$D|S9nF14 z7L;KKw1{ZH)mp+3vBQR(3=>#Z*APo~7JrpnsO?f-pgZM+9(wxL_lC3^7qpX5)Ez>F zI1OH^_-78bqL~+kFmcSy(_QKuB~**1 z?~33AQ(5_XhMw6Gwn5KPQyI2p?9TQL3sJhixl!}D4Iy62qpm8w!$S&TNZ{a_H4hMK z+S|t_gM@aCQdW$9b(;EJ&43pd59Y`GUH-fz$0NwkIO|zjyvY`z zi)7oa_T>F(x3{e#c~Q9#`U=QfX^MH{B?o$+X=YlcnEQvB7wrkhwK*=Po&x2*b?7Q+ zZKilU=O4Nrz3LU)9LOL|#fTJ2wwEbWH#Do8Ce!3MGJT%>gSXuFtQmCMs~FaM#tiav z$6v;^wT%_*qD#q`Zeg9h#%r9CQzDGHZ>gdZy1N~%p?V=13hdQR>OgVoi? zNFJAV`ATC(rJAG@?yg%T}&0odPS>Cy{60bbr2t9M!tY0sH z{59hn{T}M+e24}~L-LdDT{v}8QT9;XnZ1uU__gsKY2}Z@UKg0hZEU_jQdqH9uTn^Bc*-L4-FbnQAZ?=gx4-p!?Ngcs3|Dq z_Z3S>n!?t~NG_xEBrCx^t9`Tthr**<6E61|5$ERotC)r+@`E1r-4aT0$Bo;2l4%($ zKtu;lDDro9p$f)&Sx-8XZ4*nkmH>3C(Zg(Q*6BW3V&&JSG3{E~MzwjM`R36BeWiA` zMsO=SD3R~dNw^cAoQ{~PvmJ=7ActGk;eze{&unrSjw?@8@a3Euz|-^@zSkR&p}pyK z?K0m=y@uY=!zApXSRD1Pw%5aVe-199*8D_7u+4`>UVisVT*5s1^FX{^W%OS!eZ+l0 zJbraT;WhOwrd{92Z6hQY3Ce;x*F|xu&o;kxu3BLhTy5Rk6_ax$vdHsD3p|Wnh#4PK zR67-(>g{Y(NQHu1A;?ixW41xH0NSIib)F83WwSl}~yR%O4JY2rxC zpFNZ=Lyu9K$+4tCeX6bfvRLW%#S$@$fz;L_TT0Ej)a}MMcFC_v*Y#aC4Qb`@tV%58 zhytW^ZuN?{Qd#K_VX;`vmL!frH8)|QjiG2i+mg!*P2{91Tj~dD$#|4YEGjT!Vm~U` z(%{{B0?8{y7aPi)WLBSx4v7Y-3DM4Noqu}AsA|>{B;owOnCFHkIjhJTNDLPZ=CR~6 zb;qS@Ew#Mtf)BXeNvOnYZ6^abAPU=>=*^hM0~!SFOxw@Wy6sO!y|=cHQMf>mOm?Ta zu6^Ob9R(4a3l#Qx(@ODyT0TJ?MJb2cw785`jQNQtWFX_zirDc6s=DpmS0da&u>zcT zBfUb<7CkA3E#G)_qng`_#(vInMkxw&S^_oB-M^hX?EQG@L}W#b*H#Eva>KW+bb4=u zCDe3@wZ)i5AnJtje+tO*j(DVGnB`JeNYC(tfPV_Bp=woFkd4&cgQ2TpFsqMBYr!;N zG>SsE-9EK8Ln`bY`K7nHmd0;7--qc^g{Bz$nwEkvzNI$bJk2}u?bel)n7p8PtE#8c zowpPsu4JqVm;;ZcI7WIJ(kY6FuN)1=nI!<3TrlZPRNe3T*Fd^P-5>i^+y?{$AO8Sa zvr1$P3=>FkMtP3|1Fxl9w7Z*2nk(CU85Hmd&*myQhQN#zw&R12)%1^weiQghN%%iy z<9j>E&ZRR9$Ghgi_N`+gYsJhnZWm_4o5XF%jrp7{HK^kBlR@+;+94cM7eh8 z1xyDNmeWaTawm`P3KB>KXxiP(Za!hwlRLW8q?PU`X@KKD0T37Toux#(x@IoD2d{@J5ZM zs%kd;7ghP21KPaS2q9+7oa376{12{M_%FpVc(z+*y$}P4Tcc;%mBAxE@+fR{U+j6{ z^0g8H1dc)Pn&><$u4oz`g>?--R$+DQ~0WT1h(D?Sd?&~ zy{nT;f3{r!e)F;8u%~e4Bhj>ZugQsysiv{ z7WP*TSs?xtUrbXqxS9)F%d6SxI*SCby_I8`k3~{&O?4j-{1c-1W5tkY-wtk$r*Cqq zT@m*H-k7c(5;wxgI&`hC59)Uw6x7#VvI1*}*cC&_AXa4D&bzX?vz4sw$Co^344#In z+e`K~HxZ{R#sz9>x~-mOc^jWqzZzZg{)Ede4G%oj*|3;Ar5~qY}d=2nA30*7w4lPr^Djt3Ivq4L;YV$ltq# zx$^PpR{k;kU%&X7sKKLKK&j#FI|*trf~YzV@U2;)q!dEx2_w?5v7a@~`yD4kZAD|$ZUR7amh`KhBG7bA7B!bky7T}i)^PFGk{x+)`yWE)Q$nVc^hi4a%l3-&;Z6d z)UXzY<~zvvk^{Ltjb`LXw|ZUufLL`EF)`?-m;%Ou0Oz%A>N9G()2^ke@V&9?S>irH z12sIrh-9^zJ%z{K8Kgxx&0T3FlN8vFiqD2M$N<&(B$e|SVq@qAX-%4#rwJL5jt5VzdmsEN`<)BH zc7G7{H~Tfbj--tG*O{eKTy23)Fc+ppc{zn= z7~LHdRn9xc_E&xyvbXVPgD^k{yrKRe9NrEg3u$R|-TmV%4njz!ld7$>?hPR9Xzn$OX$Zq3Xx>W|ET z5V_7WYmmRQnQtJUPz1xfhV{j12ySK6W4MKjZz>T_V12&|<*SEEEJxHg`i7OEcu#$d z+ph1wb>)sq4&>L(zAm=6w7S!0)9y^SF8N>&Kx^7HOTP{1eiDw-WO=oVkG#YjAV1wT z^CqWpcDj~hQqnQPlg=wVx{i-fH({Fm-JMu*bpazk)~H@;T865!TgvCie#4Hmky~mp z#P(M*l`@>2y-2AdXju}~P8=K)>t2$k2VL;X!uDE#o(Zm2+HwdU^_#6)9}V6)z;;H! zZ&6n*w5crCIbpclDCF%tiq^5evD71y9dg{r5aDDasr0T%ROOY}&SOcvwz$@9q`e=# zyde>BoSOQVMerxY{{RTx!LDkSZ$6S2bYZz4H%yB0p8)9g+8>K;{7bFbo6S1aw?hya zWo+@qeN3Mgej|97SzFCkHG@I7AG)^#h9ANRubR#AQ=GqabkcS?{R6|EJ2x_FI*J$} zo_Ij8XX2@bGSB3uoKDCvve$bQM=~L*so|zqy#>mPH9lbMO zKh5!mcwmb{fy&1o;LbmbcfEO(^2*gec_N)&hXdoeF0VCG?uTu&oco&5(|l`prP@5! zst)w>-ZR-xQ;PHp%_Bh6bU8d%b8=aNFfpm>!}yJP2A81TTxoau;$f}i$^d;2ps%OG zQ}XQR7U?7k(VUUj zHR;9+mcuVy>NgE#7M7Cc(lNs4*R4Zjrbv9WIE-`^mWaiP3y?e2#CO^ieq2zgBu^>U zLvtU8ZPj$SH;E7LGw)JbYD4X89k*LQ9P}BkK|ybj8)b(| z?1?fxo5KG9Xz=v5z9PH;K#mkfd*|A^pNLmWcj5~zV%!sNa8+49gag#qgU7Ai$z-;oao{hi;p` zwc}zV%Xe{|Qr*9Y^duS_hD)0kJEH?R9V#1ti67dQ-(}U4W}wAGS_KoW*FGp~nuH@v^Ij>_ zDjg089-LR6v%TEDWz(}rPBKnO`kL!Ctv5~4Z2sLKX7wySVtuOLgnSWwrFV~vsg?Lemm5G!Na?aJJVv!-*2V8aat1?80T`TL4h?ZUmxA3iphWsTIVrXJj zn(K|k_c^Z^@aMyePZC^9VHMdQWsE-K{7qdrT-`OzC1Vd_c{@m4EP44CfHO+FM*_W) zq}K7n;%+nmH8g{t$T}dRJsKSUm}J4or?Y_pM893tPCs zx3(^)xTooMKiW4U+80$~dC9MG*L+w!Eu`6acS3GBwE$i+GB_SgU}9@bL`t& z1ZN#-h6T^fU9fMcxlHJ+WoUfFTp+D&7XB?fGF)5vw(^av_|6A94 zO^=7B)7Au;W|KRZatClLWg*z+HA_1fF3V}oOfAqUUc{iHPU5Ma-E^BDGsm;Qss4s7R&2XY10s8|^yAJ814~ zn{h{qMycnN$nYpO{vi=z_SI{b>qjrDiL`Zj~4 zEtmErk9PA%xW3fkXOjRA6pHOQ~ zB{7dJ2GA+50T}nIL1L}d<@MdPc2mCiV{OX5hNH97Z!d(uV~5TV{p=2ve&0>Jx|L(o zqs+^JQR*YvP5lAD!&MIdXBKE6&r|J>grJb;Z!}o|Eda#)W zaJ743sEUAj9Q#zOp_NQLZX%-*R*30?Q4~EzE@L)PFaym^Ec0AKmeK*XKf6-xJq-ds zTDz6V%=NY_o&_j_Z$Vlia&d|_4xiGCkCmBtEyE0AndF+)Xt)Gaeoi}6GcvrgDj1!h zkV}qNpsiCG2NfB&$pq5WXrnBqX#|{rdv>Vyf;wimtn6*4a~$Vk0FY{fzyZLf37Mud zj(MvxO?N$=>8vlTTHpsmSGsTT!cIptXR{0VSvVI3|kTr%P^+P8#9>@e6=E`K2UIL zUe4keY~;0gceC&hr7HoC8e{?mI7VY&*s0YGncXN9xOLxO227Z*fgZ-)F*)up%f*U+jZ)2WYnXfi^aLB-*Cj;=J zOHD!sN4tTcjmG699i)3229H(v6>+V_uId^;hhmOfoAkl+fFOM{T&IdOJzK**DAd;N zysL+kGKC*0IPF<}8P>HA3izW>*KB1mM+<)Nj_Y3S@x#Ra5cq)xnXY(Ugm)08F8~UcJhcW0;G$vx}>;uarsAI`I9c;&g4NEc*ma;w;TQ$rYzG5vU}>t!$5*6(lb zo4p3+t;{+-wu=;Sw*5wPj2^_*3G}PIC(0M6EjR^x@l3I>n(lUz)eMs$$Q7|~yHJ92 ztjV@m0THR{D>4pgqC447HG0P4TPS>p*Mr;Aw)Ec)Uuuy_J(e8AyNK`JvwVaFqm$($ zudy9yL1KbIaXPXkv(F!V45+E2fru!J%Jf`Ut>_*((Y!mNjS>woPc^_HRHT$L1d_Q8>I#r$;;y^xC$6V6hX`0rn zYyG^I2HQs~YxavhL~WWu&feLlVvj!Y9sRxa(%a}a za;1!84+&$npSiAf8%PQL;Q*6XlHNOc+TPpuj_g|l-1MntxALEC@swaIHZ(g_(XMnv zx03ZXM{+ktPdTcw3=qKJj+Ni|d8|B3aJD`!y;v=vLFJb89R*^)=`KmqS7j%o46LEDN>MvGKdSir_QRhZ!f{M-)pX&~pCpUDRViiX2Nz0`Jvm+Yee z51ZW8c;R8jD^A|krhg{g3pwa1^Vr?l%3!=x8-NbqV^Lx(Q1XXigIzcFPL~dV+M`_W zy9@w`b>^{_7wBnYw{71kHA&eTMG?lQ&0YThbp7hHG*;pN0CC8v(%-Xv-t{s;0pSkp zb;VKPGwQAnZ;&)i>(7S(ha%$?^^x864H2$YZ6gh_ zv%Gi3eD+~g$vDLAp&K5r;vWpBh5S8fedUX*+nD^xnmir9kEMLs;(r?WV^x5|q3Mhs zGqz_d&ir-HrF{|L-xBG1_MbMB;w$lNWKyt)JZ;AV^RJTpQ3QGih;OvZQ>z{gKgPPfD@U=^vjo=y+^NEr?t4;Tb(&II_>L$vyXi!269b=Gzb1)t znySo-Wsc3)mF}SQ{c2APd@sDXy#D}AzDs8QADi!bW9wd}XLY7{cUVsklDAV%a8FDg zJ!{XzN?RmnV^72v-VN4#7yYB>BH!EQKPMkPR=!fWxRIw@nAdK`@8~Pr{w91qgGqnw zs~hDFG2CHR9Zy>EYpnSU7;|2hS%gr9yMX|_n(qBv9zT^*61;kWRqL812+orP#= z=@Gs+a{TN4-+Jq*PRI_@!p2!+7aQ>>y?R}ax#3wfab<=Zw?z87=HJ$hJf#u#vDvc=pXlB3dGP zno?dQT5MWIpD87|Dfv^iolfgWv4=_$?DMcnb_CY9jkIB>&lbC-sEj^-QOF03S1^{7 zUisJhncwn|rx^g&Drs~zGw$^GMUvk~Hu+Cg9ckBAEv3O6szap9xPWttqq0kQ34Db; z{cEAI(5~duzqRhm8!^Bna4OX7Y;)jTz`J2gqbMN#Y9O*P+($l@=<#Vc4Wq-TtRz{> z#BOoP^u==*Rx?0+*NCkNfkxKd;wvQRRZn`+ywavI3%JNJdm7xb)%3`$8a+h=uTQ05 zYL@p_N@jvh_LF?dGte5y#>2#rExL%*vvemN>u19{P2RCQ`hARnCP9)L^sMOzk!ci` zSSZVu1DuqUor_ns3*AQoSq54)Hqyoz=zU<0`?jGX0 ztvkgA?(RKG)wWNZ%6qV`KT~Tn;G7Okb@w+~ zCF^ZP2uSPiT+9~HHRjO3s5PV@PpO}F!cC$z!2_jJ0IyyTaBF*4@-6O>?eKPvK&*vB zChM6x6VkdAOxVFD03(B2S}b<*%F@r)F}QtdoVsMf#9zsUjIaP_n%>g1+#uMX?mUyn z6^&P*k@RPQpwhK{1>08L1ONk*->z$<)VxFByBlb1JUmM@e|Y1m9+l$SgWYMGV1!*_ zGCt~_FW`I9`E}-vXOK_TSE#n(fniL%YPYO*}sbB)58(?cGAr0`f{jNIK+*fImLKwmE&o8kT?w>BLw?b(EbqdK8txf z+xVsgo9!e8>FHe9tSeEvR|uFIAB22gsU%vYQnKkVuGV)ydlk@Y8l2h`v0r#)nqRYE z&Qm;r*YK?i-xbTJiS!*JCwY*yCuC`N5u$yLYlpjc`-ym3O|Ss(yoRD%_%itI=epv-FfSD&-M^H?ylko@aCIw z7`?h#B?G8AuN?8$#H-&E+{E@OY~w&OqoMq(nORa&tn+Sm>T}Y&p@5F^F_aHY@dm$W zm+vKml3V2jcdOnR)GaKnujSS)yvgp@Y$Ol5eNA$@KA&d^`&_N(alq??>s!07@7v3> zjL6=KKf=8TMMYT|NUI!dc|4O%XtBd}?_QyI;3<4BpbcwYVzW##iJpHd^Tv&shW_x) zZ59Sski=k8`7W`T&)q!nT9L%VsHqA9I#W_1#K~cCBpyS^&Yp*$#ammOxh(#{CJY0j z)uoG$X#_atoyF|THMR1=Q%{cD0|UKlNT3YkH6&Vf?d0)k*72XTT=5w7%}BkOCx$Qd zO#sg>r3+ll{{VB0fmwQ`%WAiecN|_?zieW=En`5B!*(lYsem;$!xaZO70H0aXQ4Fi zLq;;&%Dk}e#aM>cOOfTmo@Ar=M_SQkVg^r7O0%Y1{{Uoakm|9==anOJdeP3w)XviH zuRJ-ao9i?Sa-@8Z+w-a#jMD1*g!+Zb?3QEm0nk@j;*({mUM{(1@;$~p$o~MkMPUfD z2?S)5){b^hF_IvRFC&pv9wD092mrwq50lR|x|x}g<{|5mB@uk4jwPa%KU8u%?&~rEh(lW2HiE&NGU* z%@YG9VaHl=kB$Xt2v`o3zDUO+ubgcd+d0N5b~R|U1FkARAdYB^kgia{qiL(&SRH%R zv)El)1bc+qvJ9#9rtBjXlL*Xu3e&dm{-txLKC~mnoI@gfqIx(a5>%Hxvfu5k53lHIfVXnVU7kceJbuj&6q$WQw%+-^C9a> zs8~`~1OLV#x&g*2<*AC^RGLNJtJP|I`69ZwY2b`Tga8MnWYElSp{K#s=mz&G|j7f%;SGCUF-1qUoY3ge@GD$G}!k`J?shkIetHa{pn!kB(yNf;)9 zu?7gH?d&Q*v~8fCVZAsMpd5;oQyiL~Z35!7os9PvKcJ$`GbH<+(EIf7LJu|}BmPw~grl?)$FwD#E-n_+B zq1->tE7$%P=za|G4Yk~!JGNl56CJ$6#bVeT}gH=g`poQJic?%k~T3kyV-m{sWru*$zWHWl~Pyp zuB5t`{bZ-+tvPhT1RrY;y>o&){c63`P`rrt-*AP<@1FIY$>uBB-Rc(d?y`4`agsaK z%a<7VsQHc9|5OVz3?lw9Ojv^vxdPD^?kua6#jxV5&24 zd)G^8X`~GX>TBGaurm-Ge8#Awl(XFx;@zUE{SRBJK4pY$eq9~hctccN({3K(F+p)8}Yl!ac z?ab_i0x_OWYqIfghCErPn_X|jHa}#yyFjr3xZPRGb_0NbYSyJLG^?k!nlqJTVhA;H zuQgF18sbUjoH2O@cW1s&THLqrt@M`9ekKqLd`JhbJ6ClV#0?w8x-a%Oi?pw^+}RH< z3Bv8pGm?F)Cs;?7N)g|3jw*3waIg!2n2Gu|C)u3~6(P{E!5sqjtC7ic@GX{e3iS5P zO56<9Ld}I496eKTbb7(h#{u3)KGrO5a<^-%B=rNLLy8{{RZmgPgXwlGafq zAL|#TTe+I@{(rRH<)0YI?OuoBJHH3%z7M&BUbpl0g2&2}(R)`57D|xa$s_TolPWQ} zQ_3{><07sI^T4U1gPvEu?TIZ$&*#cmDtow9f~4dg{i{!51HF zX`u}>bpelBM__%F$`g#Q3(PpeDZE(7pxyD$=y(8s?(2-Z}z~8}6Qe!oG7k z&i<_>1h+M(3!Xo3@QXn3cf~)$Ydoc#wu5cg{Lj&x_#gVYK(vWrzJ8NhA(V z2V7Uu%i(QH!dJI?!Iib0CL%&cPVIxYwS4`kd`Z=9^%+H`KF7JU5d)#^UM^W)bsLk_ zGj$stW2ovSu2t>Wq)`u()MM7Q&4!)gO)TGCN)u6x94>LWMPq7j71hIBLc0U=ipWJ+ z*goQM!3fYvzZLU$lMy;xd_0>+?v3hzy}rSP%X4$+&0(S)K+xT zB7l3d^{MTj7Yi}_smUKotv8mkD@V|dX^qcH>59i{(~myr~dl)xl73tC>Ys#)B{ zJKZ^0k3wrxUhxZRx3TJ0%*k;W1AckpvQ%3&zn3uifX;pEHDJKc*NRF4HP=+t^$CH# zyLps$Cbl8dF7EASk`&yL^2ht5)YfIB15Ra<=y2dLHR-+<)T4vWj!6Fi(C-&ykB**| z60GT>BzYx_MrmFjVnO;;ntCvlkVsX}UiIGir@_}g71yn{x0wa%f`or`)*ZHrvUq~x z!szUc2I{$DIii>v*1B>q`h3I2a)xtwf!RE(pc=;Q1UY5CY6OeeWWesjS9nPzHeEL(`tF(wuUrO$DuMv2AP55&*jpeM@)8$o=N8#qIS(!kB-#F&WpEnM{?iz2*tlF};)M%i)K>sv45O>SQej{?DF!ak;5 zykqNKtN1qYG*`FOVB3120REMmVdDtxw9}fHnvru zGwX`K4vBYk<{P=ZiB)ri>GZ5E1tvHD0NOjheE$F_&o~~!w>2BAm@9$i- zB$;+FZa&|=?L$0>hq$Qh;d%0k+$&)FS6gGNeY8jb5s2~`i0kyOY~9*gnNr=p`6QoO zm@AWGT`%o)y^%tE)7*-~yVNDQoJ@XJ9SEwH&&xjs*^C))N*RBXEF|jP=E9TWE4kAdUl)$G=a` zi+e_vL3DE*4Uz{+^iKy{$9H$-IQ_$8=Jc#vxh)p-j}1wtBx2#Wd4o6{$HM00jt{nlcVXER&eQ3`LP)P0DIpJ=~%`A<`z-%nv~2WY53p8x1KrF zBDuIykwmx=bQv8hh%lUhdsjlxalohrxhDiuRV+z}QZd6e4KvCZuKxf{gTq$(HQ3dc z%)cl1C)T;eh&kavAJ(ojxtWTwlfV>)0tIcYxfwK#0plXCm^qGp;UM(sTG|^i*X$nd zLlkhHTys=+s zhxJV!-aEZk2De**x;@-(6q;U%eXZQI7Ai|e^AI}LCf7ll1!%3`( zK)ENF$6N~MBeZ$r6Clny(=)M|vpoej%5LJcObj?8g^!XC;Z|2Em?IqHjD9sWrNs6! ziLFlJcr~MC4ZGhe-f?gIRX(bgQQol9RDGNP0X^s?#Ko07$7$Gn?bfP@xaPG&amd9) zA;(G#r5=WBMp)7qaoifyFsuF)!)b7eUE(VrX2mi+jFzTLM}ti%$4by>ao;q<7jZ{8 z-iC3HG|1xLGQ`{|>T60UyvEo#C#62(!sg0NvnIx2k)HKRW_Lzp_R+^S$j;>y=aOmT zRGj1|-Op;6DgGf!$(}J!+5%=lgPtlcv-+W2-WRE@2M8c;rSSmGj1MM|O2?j7h%49j~do&~psOFnae zIr`OEE#^{Vn>&=_2dEX&>9^NfUC6z(AWPE+oYeP)H3?eoQL;wl`_(B9$0Ox&igX%Y zp>-LS%023*1c97ZtdMNrb5?A1eP>94t#sE|)!TDqWah0gAOF<+x$=Cx^i4?6L zm{9CL#f~ZLq^{cBk60<9{{Ui`)F=G(?_COK1Yo}zSS*=$Y59I6>58*w3J}D+A&bV8Ke2fImJI<10d9Z#cwK6F#E~U ztlV8sc_*DV0X~&?OOC=jg_~0(LEH|tUhBw`@?Wv%?D_c#>yJuioeFyi?V6oq`Fio( z`c$f*4r)k->xive<&IVX&!D7CShDH2Fv7Pof#ngw9qN#eJoL?V8r{75aZ3b$v{|qO zI`S9T)(^-?5gp1n&#eTFSkw+hF2(FIQY!TZov@mBB!~bh!);0BHYw=><1JGrI}s;5 z3VzeP1Hh|^03-k_UqjPxHBCu$?Jfg%aC!38cQ@f#-r}*$%MoI`dsn_+>)#4T!lct| zY=d~PWA}sguPxPd%e_ANtZ!}F+I8T@;|D$XthKR%7V`oDAmExc3xTz0tfKRqGZFJ( zahmI`{6QU`gvW={EybM4xb`O<4RTzQw4M*;R-}l$ZyIzdfPE@?i6^twwTnx3u`q-c2$wLr$b(u;g20@J|6HcrQwUsJX~Ghf)ahasruKOS)(LDUz#p4ix)gq zh=Z!_M=A+Bfa5u<0x&r}DO5%d(0S}Cd9APr8JS8P;~gsIk#A=$>~{C;W49ybKmB@Y zBV_rCQ2Y0%`CxIJ)bo^?CZT0%ZG7os#o|+yHBC_G<>s#>V0XZ)&1n+EvmxfDQyH5b zzEg3h1jj*Emlpbj z{!f%Lr__$rMy1O{-VeRfG?ybL2z%W_nDQrp@{=&c%-kEvnE2hi8Hcx%R56kY<< z{4;rE8vfv7H^)zW*8$<(SZJC=+BvpcgC^o!^#s;VT8$$oM!OngOLB-BR>)K7R2}8G zo=dBP^U8UtqJv~W4Dx%`#D+gDm4`U$D$NrsM-U__6(hi^K2er>8+AkKAQRq0d57d#5liWHFp zFD9--Z^lh$Du}0cWr!PZ%4=HVK+~ay8_47@a>M2s;8c;r&H$?-&m;GrDD7Fwt1cv# zdVTbIm4c!;NgMAV;1k}yxA1Smxvn)>B-baN=F;s)mU4K;bDHumhrTFFG#W+ylFpoM zmAhl#t$k^2@mfz0=@xoklVu(J`P-El^1;S`&$WCv5Js(5mt($x;d=hFYw*)hzVMKg z-@|^y1Y!4AvHUCK9}?)+z8=>lUzX-8oR#m4*Vx|@{vW2V3;3GC@nqGf1>O>V;69b{ zF0l>b%2MTv%MSz|*sZc^e2T|Jsit#!m8@2>4=J)3XC9S@G&_N<+u|ftVb`Ior6DjM zkZb9wA}mny{?P$d`HE+ya_xy+#@{AAYp}MsTWhzDK2}f0xvf^sp_IysSzPi(dK9cf ziO$TVzmlIZ>5)}$H1@RG9k*_+bPS`)wU5q~k8Z-VXG@VGj%=14jc$lhGdzvobW)pX z00$jv=aD*m!E08*Q{J0AM&rw6FB*tvCU4hn_eT+gn+#@V3ZYkGue)H4_%2 zeAb!|CV!ZLfK7Ft5S^WuPrKsPPFaUjS<_fpeT7LZw^6nj9{8>OKKjg?GAImJzgoYo>Q{Q4Asq*nq#O>l zUfHcA3QBUI3WzkKq82P!+}i2EqqdCiAZ3qS)?TW@?h@`kU~5*_O`h`RZ?MK?A#=8x zx-Oxq+etl~Mc&+g@kb;PL}r%kEOIMsBm+H2rC1$)MdeLu3tNcB>0v0#*|;^YpxV!K zJ6k~yn=G9d8RDvSW6*XvgxssMwQtL3bEnxwbm^3kZeMz66Efzn!UFE-kUtQA0^_9joJ0HClf0v$>&sEz(%}sye9;2_f z*$td_++%VtC)T`i>}>^{@=Y)LM)RC=U8KpVUBbno7Pl6;-?(6$b*%pY4)|hCM%w34 zxKhaMLXbEo*145PC842{;SCc109=N7qEFr14p`O&)}F@Z;#XbXQ*GkCSHo$kXu3A3 zrhXveo0Q|W9wH6_SFjKJEz%+BWtBO36Lu?=}pADr5G6N*jISg zS`EUObeWvYrzL$)ddnIF_ig2u^2b6k&2&?&hH;UgQ`;HqU9X02Gz~XZdrev)aRtJz z#`Hbvt&Wdtx>#>AyABVnZdqwQ6r4hg(k;v{$v<};u~S~EunxXWI@a{Tpj$NWE=V}Y zTz1V8+Uq);0>e{~M4x+T{goMa9SbgQ6fkEkuY z0QrB#p0zHl_7?I;l0M0x;mGL3dRHwciXJ2_1Yu?952*L9pJyp8SRS!IgLJJf2=DA} zM405STITIEXnaekAV>0EH^iLrwzx|#6zX=(vPn0_-Bi@$SaxY7w?0Ej)T!%J^;g^t z-y2-mX_};3CXhEn7#?H)0C@MV4rtI^h-3aEnkQ#@{Ks zzRw!Qm7l!11l5_P5)KDSsH2c7jFKf!m4K<8NN^8vnt|I3fl8c_>?lPjlO}o^l}Rnr zfly}#uUp1hcb=4`v8j618MC|Y*6ppwnIMmDR1O7Gv9$YObW^v>T>WdQ@V%w2%#R$b z6oY_Ga8zMq(sVx!SZbPL&3Npm`=h0GdM=4;rSB0jD0&Y{&9l0+v9|j>QU+t*y4@TJ z;Z{F3Yc6Dw&pVPuXuHWybIGf*+x()gBn1duaoqI9SV*1D*dcjB47S0XR!+2EQh6De zEdl9Bw!j>KbevPphZ{_SZ_UQ@{FP#bSv z^}3dTbJ9T4Ig(SlM(Syc0qEVUpcaU6Ro>WUr`it2Jh8DtLB@M_{HoX3t>Ul}Te%W< zQ&!El8ShLn5HM-RcNL6N5N=GeKAfN>9&LDYek^XH5iIWrAv!*vUrYF zy(+ob5o`V(lf(Lynq|=5$=~bmSifc3yJ3Zx_Y2NF>we?yx3YQnk{M+^Se(~K;U5vl z;amHQx$PF|XF!2iWDk0-aW;AC+m&D?TnzW>D%8+hmBdG$^{uMhrlqS~YDk`3b03ue zz*?o{5ISa#YqKU|$!m~RI4m(+66@DDI!fr0Tc}uuH-X8;H_Pl+n$dC%II#AnM0T-& zyN?2rOH_6y9)h&YT+kv44%&A_N>?yNxsU6d)vKLC>h%I%5XA-;j@5Od+-e4ZW|;;! zgN`XgS?DU&!$)p2ApWrJz{it}gGV(^E{9_glu> zfcn;1kJh%92_-&UV7vbS3XZMqP&KUaHp_^bCLNe#`cnk1W-K9iqsh%^c^;JXgnCm% z@)hoFVYRal56^Mfe_HA^zYJ*luY_jTZm$|0MiNv)cnk-6!nWN7!d+u|PBBfK$u-+t ztC-QpC^}Y!7;3D_GCw*zkbdQ9n0oCzS4ZKW21nv+X>Me_j?>EO9OFHDP(wfe)%?j@ zTZe6kyNT&mZz5%ZY_4MRrH=>eQ$=|tyrIy2-jw^RnXjcY-2L;#XnEzk&0X$vNVKwm z2*^45RvcLa6+f58+D|CrfFfKYQr5}0s;DIAJl8ytoM2Y`+I74-WOu%InQpG`}*<;{UQRsFjytmG2!{nOkUe!F3%*=i3Cj{aq@ z@S5v9QR3LVS)p2J?PRu+S|Xs4Mhj!EeznDjcA!s6YJ9cBY>bw2Nvmu?B`#bE4X_xsned|~l_hkR?|NHs4B+NG_cAq=W8 z2`8`Cyrd>hNu|y^7c?6yN%c6R)MOD_^SO^|wXMZxZ>z~3p5g5y95Co>G^ZG18$E?s zv$Y2931&EgH_N6tHJM1Q9P!Gd!b;vE zf?Y--yX?V+EfUk45xpd&7WUNP1p{NB7?-&aKOY_EJ=*FcC7jBqP3Nv z4kR)E01)q0(k4@k?lopO^TFb?awn8!y`|OD`F7BmU(j{Ot!rH9l4*+7qRx zh%EIvKX%sGD`*52i=A~0k~ z2*9qlUAoq9+62`QDT#Kk7~-(uxRyB;t$}F)8*n>!ty`75Vvlz@mHOc4jMOGmTG(T0 zdaj!kdeFilKOyz0(_6h|mMe@fxF0rsYNOp=OAxk_LSY9XdkRq&;5f|=La`4!b}{*V zDp4268FDIU?TKaFI2EGmWQi3MZrs*#s;p8o?c({jo(bZmSoW4Z&0bqq{wkRu!Rc9Z zq1es)6u|_nGCeA2qshiAqP5cXT}2)2A~MGp-@xDsg)O)YR|IfHOs8?!&W;ZFsn!gf z0aua}+;L9`s&MBO7dDJag4=!vrEA#U>N<2UYh^E&1j7;`{vlDKZRB!lbdM(nk!mGK zt>cgVSm4yl7d3HU=YvwD2RQ9nnne`SEOT05q>%Xqa(!v539B(eLvc!b0^FL`cD0FO zUKMM+&^%`zhi^LA%mu~HK;6j))K{Nf!p7KzTDix$`1s`IMZH4{G6jSE|}-)16A)0y8ccd)Kzx_%6oZ!!07*8MPSz z4-0nnKZSU9i%H04QSD%Gy`W;O)wLIcjo!1~|o@$KHs;1}Q3fGk-S&T{u z2ilpaLaA)9zxux53Ab7!)t^usk zB#^UB0^pu2x{wyyJ3SsRHUbRq!BbSD&~9}w+KCuZ)YXkX!VN=Efo>bi5+9hF>^1d| zLTL2+83RHWsPA17VPng#qx&-mr5N=0q=k?kzbWflI=1VHBXwNhV48wGJyisf@U^!- zg0Q7hc@`*o9`)4dDSdBq4TZy$f_DfcJqBwNPq)PB7+;q>HFoo8SJITTw+|_km24fO zJvpvQwPUPX8ZUT*LYqz0g``;2qW=2y73b#V^i5sb+AueD1XoKnp1-2Z)>6B9iPygs znQ^B*+8L+jWmoy3M!tFs$Y0+OTA7w45@J=7LOd9_Z1GEeJ-D^CXuMak1@)&dvjgyjl4fTlx;5T zKY0w`4l4;&wAIUvJDy9d>&dQ5x;tZRJAx|DhHvh?HK|9e!x(*?1}U1AoY2V3RA;#E zDyrRFc|stZS7c=tM=MOv)~{sL_33p@zw1tM^)>3cCY3Vir%@}I&=TIndW!RnI??C5 z6G*?iQ_r<^7y8}!-Dze|*?k#@Ds5*kl(6)NkFN0@mc;oQ=5oH!lgn`cf_10VKy2bUhx6IgNT!hHr8uK3n zwxfNiNi-zjN=Z4!GJmCb5}|mw-*965NYfhE$1v&g$gtTRreY2<53MG@qF7wt!gR=r z=@2O0Fg!od)h~)|W2n&_GTR-&Mg!u^V)~I-sRMf7nJiB#xVuWoRWA&<*o-5St z87(f<$p`T_TvtUX+!{IQZY7rPOR1A)I)UE02=xsa;WNyETOBj$SXb8w_YyQ5qn?$F zwofCMxnQfcDgd#y4wo9jr_uu!}qa%X)J}de_@^Wtk2jLDclFX6DuWjm2V zGRY?IGpHk=s~1vgS15_9Ts+FZbTQ7_(jd{wY}q5mr-4GAaDT$LE^IAU6EsBcHHxU& z=e1DmNTG@Ls|bJ|l^W!Asnm9fl+KCrz&xQ%>hsO=7JJrYK;7LsTBy|&;ed) zP#pbfa~6f$?N@AzZ`gk4r9!Al=~m*8Vd+yT6m3NWun{&6)5UCBaM*}*Sr+rn<%nDE z*4CUDKH@9SuI#Qhk3;ac_H45)wx=hT-zT+tBI`CbHv-PZ)s%EOuNnCybJ4vF2(n#!_~99cQNH6`##=5sQi-WXyDgC)?QG;jo9G*X{O6)^v5;m z#;;Q+4yF{EZQMIdk?_Nct@dzwj1gThmf}2z%Yra7+Nyb39IrLJXVi{Uo;Js&Ms3bH zu7tz~Y}6(mc?OSYD;Qot9cr<+B-cRD3{_``9@OJ87|m`+7^qqdbq2c|9Y6a@86%N| zPYB39wTtAC?HL)`divEWpkoL<1w?K6=C?ePiigNPl>M++#_|ZHSlv$?ir6sYwMXS1 zm9%D_<}xz;to{DA50&~>&y~eR<$F_8UCA+wXVa}i_EVhXVz#`RiK1=m5~*f$z#NlQ zs$9jRC+wnnYoI|$dHtqJjQZXuE-EIJceh8?T44hL$X5ZIryUc-8WCKla~ zUux0Uby+p*kvx{-92^=n%|2a1`YQ-XStdU#9@TeU&~H3HefA5c5=gyqKpd~xm)@E! z>rGVm6w-&SYs|{#W=EBhR}{k@2TIiP@^}>2h_aOftt81Z8r_K86ySF~D!I0hWCvx> zU8e%OJIlnMPJ+QB2oQ4Krm)!nUOQFuf&bS0)`BsC#Y@(vi8k?1G5QSFhmfXL+us!B zQcYM`vOZJIbQ&I;r(QvL*Yo*CB+3qjk2E0mhc>YanG~ z>S}o5Vatvx%u#3N^zB_`uYtT@t7#H=ipJ13p9$FSo`?L3Wv0$dA~3}QAcG6iv~6rA zp7nJ7yCq^52cMo-=~Xh-i-EL>J?3!JJVJ*ieQ z4&m0WtbMUdj@YMRITVCvw`$(-rhw`LzUD2ErQ~y>VO|Rw~eW(y&JCD(&t5rKrjuQMqf6DMF!QPS846 zS>QhmXkI6|yN|^BiPK`XP4OO^*k_NWQf6r3Ev+qCC5~JKmm~4@uT0TCEb5*Z@MYhC zEFeiOuedT51cCLg4(`g@-tuT5kjorwLbs^(s~UEdd3zhnVu8G%OM42Uj7vLF2K+HQ z$vpFdYp2m}bgNkBk5q%tX+Gip>8!+r43NN{^)zsX=Av4Hkx^g@?#s}UMQhk;&|OB- z%yxwBnt(;Or%I4+z*PAG>sdF-K4N(xw~S)mwtOjJr0QC)k*qhD0F0gA?RFKD4ZNQ- zA~P!EB}PZ*_*TY&p+AT&UcwSll}v!=7%S>)F__npB5GFT5ymUMrcc1{_v%!7UhOrFG7z;)FATbkol3z zj;rWRao=Y7$o*@o)-`QMRk`~;^NAp~COC*3l^yFSM!f*wQ#OfJASy5_>=w$v1I0>; z6l0v!fH*kE=S!FxI$sZ;4cciMoO;AwW%hq?`Rr>6O}c6RTrSbfTaXR`9`u6QCC2fZ z(zDZUuNkAUwl^CF=Eq^!)JjN{%^w8n)>;hLli$ED4C%E28QNr%Efn*ZNF5f?%J?n?orqcBdGS&?~&|A)^7FP$CKD3Ha zF)aK)t>4*Ce_?9U+r#&y10YuKg&V`eOTLR;kA2?4VLgGbK=3ccANWJO8-L+X?BQ~5 z!vQM+#^J_)I`VrvJh6E?vlC3Bln`=oIc7C&ZMO4TklSrJsZ2RIBY{yilGLcHnJEv= z!0T5vk7BfLb9tyfEMgblpcqbkZ#Q$#3Pn3G!)yL(rp z{3W)v()Fg)Z>^2W#y&;I89D1*boP^w5Jtm$0i1f*u36k(_$$K^L1}CDyW8LSXa-q7 z3h?pRsPfq}u8bM2;++QDQMb79y#V7t9KWvHSGPFwM|}HN%Nor0(koA?9%Ou|ucLff z;ybx??LSJFPkU2xo1~W=O?>a;8!Pv|@}qAuAOT!-&2iu>#a`^`mZzRQ<(yXyfz5Jk zjV#YC$jBWrUBtQ*GVdsS#;#uSH-=xc0h8SIuWprSy_qT|CEP6}K57q?cC3VeNHBVu z^cXa#R>V&7ZY1*`r@cv~_)6PSx{YpU7Pj&qnZLVTj}yxV#mHjmJ_4Uq(;rq+V~KDB zb{VYAcfuE*AG3>5mSb@Q{TQ6%74fhwo zVWD_$Pu1>avDPk4jo=K?;Qiy)xMx|!qsn|m;V03r=Ol?xAKkj1sy%C-(lu4nFI3#I z@|fU(-!9iHz|ll~EnUBqa|Xjke9;-J&5q40l; zf3r2emJPrL{t`3PS5si2a}!ZZokzqgeR@H6ZgJYanEwETEhg~9Q(I0<$`(Qi$lK}l zuPgYA;d{*rXtg^;&7JvHh1Z-fy?V{8_QS%~T8*XAc@qgNOU_r<+Pth>tkXJa$3w*R zPYgvZtLo6phXn3Z!8rD=4S+l{;{v^ANaNHsyO?gA+F0x?gl7f44RYV`kN*H@UL8MA zAhTy{_N{Q(i|A)koz5!CX>B8(58!@9T8b@}B%bt(XDm9Lx<%I##&B{!THBXSm+Va{ z4a*V1AJ)AH)H1U%p^*7$3!jyG{x#hAZp!0QoJST?1mvIatltiJcIQ!*9%#sdMgTQ^ zStr9~@aKn;^4-YsT#8R!DqnEk58x?b&z0GpoKGQC~6Wpbv zN*?Cze9Smq9oj zWYIX8qs9VpQL1b;(_cWS4hPP9)R-&udA%)JTd4PfSw+BscAL)0{f5Z;20dJ4(%G0k-P=COOP z-kaO=$@{C=RzN@x6|`nYBQp#>gZ%zfEN`9#Yk7I?Px8R+Lz^G7Gg3Bg4O&Zc_*JBj zCnJiLQ0A9A4nmKR3G0e{cB|EmToD&It8v;B*0XZ%E>=+ps5t3XA&+qtbu6>gW9wR0 zwo#}V88wXRAdND;rL%6!cCFiZ`TNS zStG-~LGx9J?PZecD>z3oboQ@4q{@vu7Bsy_Q@4$+gonyrKqTii(%Rp6hW`NfQHdac==QKOXWFF2Y4G&)^5!D z)D10+JhA8wI{tO zOY0pEMJZ|F%Wt%}7;ZNViun9aXIah4Y|cp^FW%orbE~>r4>ni9BN;2~YqALrt7x&< zfe+b86EQd)@+;l+4}-QEL)>ffL=xisZ`gYi>FHQ{*TSo)tR{G65J7PJpB;@>3p;bD zp>r8iJWMQM{F`MnG48z7w%T(|D?@mu5J5O2rFyT2F1#<{J7@b;0`B1s!Sx;Mo$)rQ zYpmQP_IAS94!G)T?C_YHl9N(ebTMf2xgZG580AL*)qk@L*Fw;5>c5RwHn{6vv}d7{ ziO;pKJXB3-*vycRTDIhSz6*kEpg`sWoG`0CLb1w@l*1Xqq6MoSvtpS2+^B%y}(@GPE6W-m4pY z9E#m|fjNG)3r49KBv#Op3o{j<&T5pAk@9yH-QRd;RMYgBb^D0Gv$)5WMraIUI6eOWO4RVqf&49C{vTap#_+xS z5Up>XneSYqTC{UCbLC`SwWVje&i*|@HgAySmpl<$nuFMDx5DDxe$Gh4XT1P&Viy2z z;2xDUR`Rjji@8U7zjCgRDcjMr18cpr= zGdb6|x_Q3QBNdc#8@)!tS!DC)C7rsHU5A4FCnt@ytFH|i*2ZgP-MP;Mst3ov$deg$=r9_(?cOVcCU(Tcv0agTgW*_Z%9Vn<5xsF4)LX+@2^z1m%8U zI-2gj9e8(3@n4Gn0I;>o#M7+IPR3a{Qp2DJ)~WcPMu$Z4G};}b7qv|6n;$D<)9X=j zoWe)gccp7_F&o^kVru7=wDH=X8Vvnv8yQ_9#ud2>#cF9cvuTsJl-P!EmHz!|dsdb*&e;`&FcNf<2->cVn(9IN;-&&CJ&N5$XD6#q7%rKyDtViq*UD z{-tFYns~7ealCZRHr&YwA~Hes70``qQMl7nNV#y<>UbxuL!HKQF~JyLoc$}T@TR+W z;dZ&6!WEUSW7yljgnEiJJubrjNuj=wM3D3+y;F|eM2`^rs>B8z$7541MxsZjq(e|^ zy+wa_Hsa)S$@Z;1M@WXw;wkKZe*@r)2Do01uGo6{~3qJh8(k3nK+%{n6`P4!z;4O%d(aPrF;S zm;%Ll3!c>5u~9hqZGk^9sn*mSDvq_REgL&WYQJfwY8N?M7);EgBo4e(rf6nbMv}0y zX4=GYlhUSZG`En(K7{($q1$La8M^SkEuU-@S2ZZz7_lz&>E>nwKO6K?dW1 zI@QZN8Ey*%9Iq8_C=Y78ZRcAy_`1|{1FZUz!-;^B}swjj_njT#nW0 zGg_2|_lvYU8_0DPW{Ts5QV%Db06TTBo5acvT+(NCIHZbxEZ1~vuMeB8 zLfI1P6xxgR{Di zK0$So*#<;lb68Tv#YsjC98WvH(L6Mw8C8IZK?jb18uBee!Ma7(rzAF~c#!W5I(*#) zckb6(mbol;*3NAAka)*6?j95PbEQw=hSjAZuDrs6AUPH4(#+jHp~`$;t9T>qPGPfW zl0p0{$TZCt!FrCS8W`3@L?L7t=QZ};mEdc8d#kD5+jN0Oz(-S9HcE8Ce|2}Iv<&RS zZZX%RR+7%;C1lAw^Fr`+)(}OfX)!GB*xtkMXVSate+cOdbrq&|-J#?^@SgRb;lKDu z?3!z>BHWoAm(TZh_WXILXqOlFdeqvMz8P*e6O3c>uPM5YZQNEoYvRX;b$=Ono9x;= ziX^aKDY9{$zLn+Lzr$Y<=r(ZNYb?H8hiGIuBOm^{`i|ei+LivTb*tG1Q7ny&^{dC> zSBU&W<~7vbWxQWGO!LqG0II%&4V%gkQDU+_RT_1sjiyU+dmy`v0HGLmK9$4CrRnos zMQ{OId7A}K@cUQQTF1g&N?`VoK=Shs>}X^W^p+z;^z$nj^ueP6=!CyRa?UZB6UW9CAq=3qHBYr0cjTeWXVwn=r&E#ILaJUqgYdIY*X# z2LyU=h4tU~OLY5R4{Hn-+8|aUPBx5sn(cfoXCH=VlE&&Ev{+m*h{!oyA46Up;Eg#o zJIQp39hAQ*x32=dTf>_5=AC0MgM9&(2q)OB{oiv@jgE$>^_$;^mKISww-K$@nRlEz z^3jv@^sgM(d=Go!!zQDkxt`rQQhL|bnmoxjhhebNNV;jpTy@#+UVp7>P-%A4X*UQA zkJF0b%O?G*OlQWn_E*~PiBe`!=gPqtbnDW)?;m)2`@p6hK4On8*j>PL!+%s#1Gs7kb?tJICQxHt&VQx7TYd$Jn3&Xa0WwavV{!jv<^#JuGSD$I#5;s01w`=z@ zGq93G9Dp;Q(xEGEX2w{2DDmc}q^_}VYOQQRXOMLRwkg&=9JJGJ(&NMp_HQ6$2H>-= z`2PS(_9;Af;%^DuIMc2YO&TR6z&in6BXO!X#eWziwh-l0Bv3Y6~vzr zeWBb;epTsO#MZy1kpUJZ7dUX>h?Pjxu+Wysotsm^kL3ZbalT#{Z( za|8s8pG?)lw0e@@aY-C`BNZ}POxS2UR^0Y5LAByLgI30uq3U+=lt$hSr>N4I( z4X}kujBc(OV(!iTmWRxv~n3YBfK(vNCKvoWKw zBOR+kJ5ZP)b6SzwvBv7T6}o@`tS4AphCsFR58bP=SP_hlO>4sj8>L(job$zU&Y@9; zrZU+MnCV&;ma3fA&Y5IqyGVlW1lOnAcxOvSQ+0(M)OD^3_3U)Unmqc|z>QE2mA$2D zI*Z&J??5v~qpiWO~!~q;eeVLC4GZ)JtruEOP;uje{|Q@nyLc8o`5-4Og`?x-dnlBY{!1oTWfX3}-#7 zqcG=?F;$ukr_!laeGH^v3t1DA<@Y7S2-=Xjs}fK1RCiK zKzxIrr?pX*0^cbI6}K=;Q~%KTC1M29fUD3|go%{=->n`~5*c~L5|QDNc~izmn7c{j zA8N60Z!FvVzu@bdwQ+Mkp%iT(2x8;wii#l1ovn=Z#X>`l zBvfL10%~y?A9&|H)4aTZSLI>Qjw?nZ+P*S;CD48wSZLbbg{TYpuh26pob2h>^RFt= zyh*5OG96tP&XMCWs-CJl;;PGgeRFJ(U);$)&ViV)1KOJmL?}^N0n*9g%cj$t$69^i zwz+%;MQ%v?S1#GOZ?!qht-&X~ZA+)g6|&9ew?DueuS|2YI{j`|lxd@016Hib# z1sy8N$LKRj z9l+&)>z}P~*O#q*1Q4>Sh=vXaTBRIe2GB4M@~D=^(IF9n!#q`;GQlskNOb3KEoWf6 z`fbm8k|fe9Yl$_ zpA>u4Ir&NID%^2=pqkKv%zqV5kc1s8A8BAH#RnZRRuTs@MITj>!XIFJ)y0ft0o+x{ zqucZS(keNEG1TZhQQ@sO!%1p%%b&JMDuWAMKJ{rJR{Pa7aSnpAdzPY6OL6m)-mN4ACe|{4;-XrfLG!5lY|U z7tdvGr#-7%#eNmD@YbM^*<5|0CjpKQc9Yt%l&l?2GAQ%KYiYN)dR&byt8FYWeJRNZ zLRPhGBD4*gut@f(Qn{gw*6VX{Zsf<9dC2vvCIbAwHGWi2G?>@-eX7m1q_;ANZP3W) zqJhb*=OzYBP;KfeNZ=>hx(CxFwSO+@b~x&%sHeqm9&)Q$ds5>A9y?;p0j=#LPPF@U zV*CRE`~KB3#0MZ$q9$%DIchPmPW1o?rMTeTlAeAk3WZmPhr!5s}~c}2*U zQN4$A$*(?mC`wn72+f{?ekpjS=|!9o97sR_ax2z!8~AliHr~Tjw^zN0Wx?mKZ_>PP z!Zx?9=3PM#m;&%|(z-nhP)`nOzi7S8lid#I__6;0*RPw-D8f&YF|p~;Gqqn4YnIyl zvFQUEaw7=010lR(_ znjWB@AJebwVPMe`{{Va2JuAZY9?dA)#)qr;N5dWs@fM#o&Yr5WEBwojhX?sqakRDY zma@vH{T@-%wtZ@^f+N$dv_q{}T#IRB8I?)k<2@_UH5l|wddeB>)ou$e*Kh8%dG%!B zF616*uKxgQTIx31-jx$i5G1k=hoy7c-;8B9u$#Ljk=$p?+nn>>y{6yn_HF%xxOte| zKN`u@yfTrKHJk!lzg8I^m3kRwCAo4qZU>tm7+I`gEo|1^o2sbAXg&UssYmv!s|AfC z&&_}f6V|5IH2o%B(Zav!h`Awp5A)4)Q{P+3pnZUlv!`zS*U&5%w31Oov$Bs&({#gc zsQG~{ZUAg{!L2=WQMr=NdAvPrr^$?PqwjJ3Ys&P`5l4Aqnohs>As|LqvW}mPdJd2; zAk%JT@YI4riW$Rl2pPr&dSBUe)KajTD%opuUifD2^`P>u?8aSj_fIu}q0M)HV*V!9 zu^5D9H~#<^v84lomNI)?vAvp`^aard^Wrm zR9u<{)R~#cSxw?ybNBPG zD-dpW=cg5|;n$Yh88x!orktJ+WbP`DgX|BBZq2;>TU(5_Paf5$dV&iptC$AZqs&oy zGY&YcRK4+XoMyeNTl?O5l+^-#5_LapG$q?Vk%ZrTFC(?I-)gr8)E92 zYZ%=!qZ^)Y;*SsA_(sMFB|vApAV$6NYoW8X(EK~0MK#L@)g&1Sj(-~Fd{5#VzYzF_ zJDa{@gkm)9UZvqL1}3?4_U%t8WeVJ(J3AgxCK7+yiz^X#W6aroG~W2A%$gq{H$FPaE;Zb6u^Xd_4Gl=gD_!x0gf~ zjhp5Lz3UfIvqQrm@dCqeB!{{ZW(8>?%bc*kcX0yI(%^%xjF^e1gV;nz;nm+qf4A9ZW9v$wfjH6pQJ-eZtD zit04KhuUtNeFf$G%F&?&f_qinQWepBRTcfKD6xETo;m4RPQCOsrvnGWx(1nRrM>;o z-6>*DdmeHs9~a-iH2Yb!Z`^D@yk$LV&bO&qe`>T=tUky0m<|Tx)}3*u>3Y_d)>g-3 zr#J_aO<@ITa~%f`c9!XL_ao@o`_;_L1U_oQgM-)bu8!){Sh9(2CyM}NWOP4D z&4R*fi;p84U*5XoRy}ku7yn3f&Di zT`r^KXE`0aW2S1%cJ2;Hz{Payqur?aA}7?;(dZhB4>jT{pWZzy8RJsY;&l9udN_XW zMry~E&OogJZ6tDeY(E;Xk%b{oYD&GylnOD%`2-5L94vlPF<^b8k$ADwVVRszG**|A8Wa|zKxjY4Uza&?+f^IQ1J$_7MhMBhFoSwI0m)+ zN1)kwTU7qdw3N!{t7jk)*1X!4uG%dUS{-CgS|>5b=nq`=6|<#T+TKYkLcUz~=Q1;O z&#hs@e6vpvoc>fX<9EJ0SEYDg!&kmG@f0INh2XNrB$F6d{AL@J=U!m ziOZE-{{VNjdP{g)LGZ%0_3C-oXh}%G`F@!EtD-isU+KTvcK|^zWCIo5g2%Zut+~r2 zdFj*BZbejkU7f3`7WQuD9%Jys4;O-1=sG)2ArJ!u0a)Wq4l}zIu+TB6_BxDXHK#f=Fr=~Dz^bikz;HJaTjd|F z+|vw9MhfDl

yI5B~sd%_K6(X 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

dxiBbwsP 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 diff --git a/app/src/main/res/drawable-xhdpi/ic_keyboard_arrow_left_black_24dp.png b/app/src/main/res/drawable-xhdpi/ic_keyboard_arrow_left_black_24dp.png deleted file mode 100644 index 782eebfd6955dbf9e9bafb4d54214aefc55e9c9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpUtT2B|pkcwMxr|;%$a1dbSXFYvE zJEHr8a75cwnW)aZ4NV*6$FM;1XB0mmc0E{p#Nt4FW=b;J9Vyz(lL cK@96RFg7%mC*6DU)egk4-=mX_8 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 j^82=i;*6-LcaC@Ui~@0xyEq diff --git a/app/src/main/res/drawable-xhdpi/iconfont_password.png b/app/src/main/res/drawable-xhdpi/iconfont_password.png deleted file mode 100644 index 2cc8fd9a38825ac1c02a76ff17169563394dbf17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1576 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%Ea{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8X6a5n0T@z%2~Ij105p zNH8!kp3V%3D2ed(u}aR*)k{ptPfFFR$SnY>W?-j zfNYSkzLEl1NlCV?QiN}Sf^&XRs)DJWiJpOy9hZWFf=y9MnpKdC8&o@xXRDM^Qc_^0 zuU}qXu2*iXmtT~wZ)j<0sc&GUZ)BtkRH0j3nOBlnp_^B%3^4>|j!SBBa#3bMNoIbY z0?6FNr2NtnTO}osMQ{LdXGvxn!lt}psJDO~)CbAv8|oS8W77uoEZlu4x+)S2Aez9w zf>>q)GRn%oC^Hr4T#%#e3~j*1qlh6KX9G0d%DE^tu_V7JBtJjL4io~JdD+Fui3O>k zaIn!wR{_;*qYv^flJ_BD3l;?it{oRpCoH1uxLB^dIL*MoeB9H;F~oy+Z|He{VMmdB zGxZV#eXe|I=#;T22*^9qEv_P`kg+H!s+YZKqDRyJM)u1yeyBSHE$%cl^y2=fbZOC~ zTg~%c@Y*CK^{6EU2_`RH`u1JVd+BmBWnEFeTPeHq@BQBQe(y|keE>TX+22cD6CoeXq*n$B%W{ckjxZYG&p)Au7noj9+H* zCyvmMUozD`zq$PA5r^m(;W;b9XRKWMVYciu3$bp~fJsvXlFo0RI(4)2#1rnub>?#U z_pe_wJ8Svh@#HUecX#cyKkLg(q(Y5-mjs#1Ex-J}$e=fraZA@p6A}?mv%Ge#eXWRL$zi;0bmp*6yqM5!Pj_#eOmL9jCDWqkwB7@_(n5e1S4)xVP z|7<WjH`QF?*3BQ<-J83v86@2-uH#pi+azb1|xanU}U%Kp^${-d7^s`iE+34>P>^V*d5dPg$)OS|9zg zd^27wl9R3mFGP=`NTl($ivU?toU?l9%%6z+4^qHvYL2E zLuRebS0#?wC-ih@FW`On?DNn2xrsR)zYJR}YC0I1fog+}a;-jgZ~p$0Ws?I!9qjd< zmfv5O*znr?UdMHxlq0KsX8BTe!;$WmL>wW{k>MT(VnozHKdSgv1%m*b5E=kk_% zTz6KCSu~4djWhFA`;IRc?k(JL>Gy|f_T95q&p9^VPsMrR1feDVOl$eF*`Folzi(?S zO<-?6$bIX2w6fomGOHb{j?Y`RsZ>dO`f1Jfg1fhUeSL*5>&LH~=C$-Z<2mV#s}=gz z#_5P%PxM!tyxVubw#&>4_7}+&trf`!GJJ2;DdhymNIz$1d*^%p>{ONK%2!Hbem7}_ zY*tP5yt-m`qs+Q*kF%6?mOF8UyimO~qe;wU;*w|l46+J~ycQh)dQa`zl@-S~F8acH m)TnXK;r8a}@IUeF^^97k+(uhx+X9Px1_n=8KbLh*2~7Y7(t=n3 diff --git a/app/src/main/res/drawable-xhdpi/iconfont_user.png b/app/src/main/res/drawable-xhdpi/iconfont_user.png deleted file mode 100644 index 8dfb2ee2cd144a7ac112be0baf2f4c521e1a6c10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1966 zcmZuyX*iqd8vayJOVo^LQLQvo=^&xeRvMud+mH|pQ5ThvL@bdZsn}XIM(t~KT9YEw z)?v!fQu|itXpF5|8md%H6>SGq#?qdI&dix}o%g!l?RoF}exCdJetbzzcpI>sx*Pxi zU^`o^vuIZr&%M&3wc=}se$fV^oyDC6fSL^XEs~Vz4)wKl#sNU24gkc)1HgtT6gvk1 zYy<$z`v3syIshDC@)`+f(St10)*}o6VD5ueFuxY+K0+28H$PE^!fjGT!1=ZC_`fkx&803e04 z!=81u1>bZFcJQP?TI<(}TfYAp;tpB6>VrLj>^4}E2{N8gmrkTgHU?SGWXo;{`ZTGR zxn!1hzs2vq@N7Z_1g@vuqNGvp$C4ZK~oJR0>tySqQ>uh zSt|ld+pgy%!X~oMhlP*zk=~XEN( zlU=h{GaWBtKl+2kg{YEbD@ z^no<%=XdlBwr%B+xwUuAT+d1KG+2K`C)3D9z#mTnM^(3Uaz+;(&v@65Zcev%cWYi? zvCwhNUDJcpr}F1G)}D_PTyT%x6C(&i6K%NtCLUY$m6iI*%~>Qvi-_mF6Rk1k)zRO6 zYlQk5u#Tfe;nI$$#&=0gGuLgL+=N2mh(4($z3!5$FerT5A$I8XvQuyTQG5}|W>BLl zOCPIS(Kwdz$%5$=FBzccQgMunZ<3EpZ^G3s&Tyb`r9s}EGk5r@nukwXcJJT&R`K|+ zFrRGQBU)vTDoPaw55@{SF1FUL3}t73ndHvp&Pv9pXhSOz>S;CCb@4^pLg9JSUPoBU z7ccrNdaP5%-?hD3+8ofzxB+V>q?=<^pj;~t7Z>HxcWcjItEs&{ci2z%o6Z()yfgvG ztkU4+Ik&gJ<|bD^<$S1=dg&5VTzvWB>e^2wPvUTxTE#=1#e8lbnN-%hop;#K(zyv z#k%+dDF!LOXh4dFtn8F7nY(#JXm0ae7L8ykqf2#es4BQ_^WZZtZtl$(P<5L*MDC3? zyD>4JVyQ1kn08L7A*Oyesp^x-kYt;hnQd=Aw)JCDNc@%cq2jh8u!8!fz^4`I=RG~u zc-@H_{)?|7TRv86C)b}&U(q)-z$s_5?3Eroo>~sI&Ae5f^qu>|px=BB=Mh_4V^64h zC+_VOD0Ddub~)Y_3e{!HT+;XDk2tr?g{n|Jsu%>NYt!J!J3{Kh_w6Tna;j|f66ONx zsNk4HQdvB6{c5gL`TKRgrM5a z!DM`ObycY@2Rm4(Q4j<1{=mt<^=Md!U$=J2(?c(ElyTvk;Mv7-T7xkLa|(g^SVg52 zui503Z4?=O>;bdS*R8G2DmdUVb83gS71%ZLpwx_0)BKzPHhXre^rRYd`?7760vrs! z*QbG=x;MXE?KjqMl4tuj#CEW*RjmtW8~6RFvjMS>K3_S|NhDea9; boxd!31zeDFtLuZS_^)VZg~$GU&L{3a^!ruh diff --git a/app/src/main/res/drawable-xhdpi/owl_head.png b/app/src/main/res/drawable-xhdpi/owl_head.png deleted file mode 100644 index efacadd97a93bea3672d6aeeaf48a5969b0fab41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16192 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 WasDY}$AA9TE-kJgRxM%>`2PVMsYSH_ diff --git a/app/src/main/res/drawable-xxhdpi/ic_keyboard_arrow_left_black_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_keyboard_arrow_left_black_24dp.png deleted file mode 100644 index 63bfd2d118a6b7b0a2937208407a651856efcfae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!`#fD7Ln>~)y>*=Tkb{WpMa>4O z1|d$fjV5L$PA^z`Oy2yEGugoKQ|6^VGf%h|?2_D(`tW)I3&ZnJMgx!~z zKe8!*X(pt8&u30Wap94bU7H2e?*+}N=(YG5RrqM_ki67a3RgYKIoi2h`qSi} z8wH*}xa#_o<5u?*lj4P9C;v|Hn0L}e=;Z4DTOMmYlxkIjlqY$}yIU<~te>s#YE>?+ t9_J>sT>aAH>C-!93RMb$&R}5pcU#sxoBL07J!1%n>*?y}vd$@?2>@`sV$A>m diff --git a/app/src/main/res/drawable-xxhdpi/ic_menu_overflow.png b/app/src/main/res/drawable-xxhdpi/ic_menu_overflow.png deleted file mode 100644 index c382aa61e04325ad7a062ff73fad0d41ce3dad9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 205 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY0wn)GsXhawrg*wIhEy=Vy|$H+$x(#i;(Vo0 z1=&ZYixh7ii!)QPm_7e&_5*K|h1({pTueXO*wkdpT@|Qz?9Pvp#E^I8d4G0I`Jo#2 zU}vfZ;tPjR#wZ)8r-&ef2=O{elmFUY4bUQQ?C7%(L$ZPmxcBz ypG?{!q3hOt5lnfCEk2rI7}W!&%sNy&%S|HgZGLrS>0zMz7(8A5T-G@yGywpV&r;<8 diff --git a/app/src/main/res/drawable-xxhdpi/ic_menu_setting.png b/app/src/main/res/drawable-xxhdpi/ic_menu_setting.png deleted file mode 100644 index 4f9c0b4101bbb799baf8217cd2830bfc545be89c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1099 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+yeRz-ScU6XN>+|NoxWx=}=Y2r$XK zG6Du-T1k*!Fav|mnor(e|7&d5*KTgw!)Q@Z6ecC`DpX|uUn}x)V^uC0Fi{Xf^yj1zLqZ_?)5z1_oQZEQa;r7Z2gwb?iM874PsKK# z$-r>smz<(Q+6VHVf9I&{X9%q{y(+D+;LF=yb%zVAd%m)8>}(K_R*>n;3O0N`-R>>Z zveI*VNcVg3e&vQh4((aX<2QW*U)e#yP)je1u>CRVy4L_ zE6+JJq?&(gW|G>phle3dgfE(rVYN*|D8q(h%n{5CYWxRUR!vAgf4(vGOnT(!&6O4E zViAn3jL|!HoSU{kPKH54uu*#Uw8(!iwwsxAxO1|ph;3Zqwe`MZ)!M$DQqc+uovgXZ zo3Cu|wVbS=(A)Or&7IJ~^;*X(xp z-y8?l3(f!eqlImbjIiUYmCP2aCrr(A{Jh@PE%aPG17lTPO%sEdZKB=n2JWi$u}%%% zR__k6#a!$&V$rx<7;g4pR$0wMrW0EpYhTyqs5x@LTk<^XX${ZiP0}xS-fns;eI-(M z#F@S9-HEb&y$^rh&kKBC-q!dj`G&(zX2xhT#x7;nZ_W#DejLRqID(LPjz6ea;44$rj JF6*2UngAmR3s(RD diff --git a/app/src/main/res/drawable-xxhdpi/ic_refresh_black_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_refresh_black_24dp.png deleted file mode 100644 index 79aebbe907d1a8c30aef18a9bf00072802ed8c52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 898 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 DaU%gU diff --git a/app/src/main/res/drawable/ic_bookmark.xml b/app/src/main/res/drawable/ic_bookmark.xml index 22fe21c..79cec7d 100644 --- a/app/src/main/res/drawable/ic_bookmark.xml +++ b/app/src/main/res/drawable/ic_bookmark.xml @@ -1,11 +1,12 @@ - - - - \ No newline at end of file + android:viewportWidth="1024" + android:viewportHeight="1024"> + + + diff --git a/app/src/main/res/drawable/ic_copy.xml b/app/src/main/res/drawable/ic_copy.xml new file mode 100644 index 0000000..c19c966 --- /dev/null +++ b/app/src/main/res/drawable/ic_copy.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_link.xml b/app/src/main/res/drawable/ic_link.xml index 8d56ed1..5951a45 100644 --- a/app/src/main/res/drawable/ic_link.xml +++ b/app/src/main/res/drawable/ic_link.xml @@ -1,14 +1,12 @@ - - - - - \ No newline at end of file + android:viewportWidth="1024" + android:viewportHeight="1024"> + + + diff --git a/app/src/main/res/drawable/ic_search2.xml b/app/src/main/res/drawable/ic_search2.xml new file mode 100644 index 0000000..2572d53 --- /dev/null +++ b/app/src/main/res/drawable/ic_search2.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/activity_catalog.xml b/app/src/main/res/layout/activity_catalog.xml index 2119b2b..4755a24 100644 --- a/app/src/main/res/layout/activity_catalog.xml +++ b/app/src/main/res/layout/activity_catalog.xml @@ -18,7 +18,7 @@ android:fitsSystemWindows="true" app:titleTextAppearance="@style/toolbar_title_textStyle" app:subtitleTextAppearance="@style/toolbar_subtitle_textStyle" - android:theme="@style/Theme.ToolBar.Dark.Menu"> + android:theme="?attr/actionBarStyle"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -